Rangkuman Control Flow
Rangkuman Control Flow
Kita sudah berada di penghujung materi Control Flow. Sampai sejauh ini, Anda telah memiliki
pemahaman mengenai berbagai jenis kontrol dalam pemrograman, seperti percabangan,
perulangan, hingga penanganan kesalahan. Mari kita rangkum secara saksama.
Percabangan
Dalam pemrograman, sebuah kode program dapat berjalan berdasarkan kondisi tertentu. Maknanya,
Anda dapat memberikan instruksi berdasarkan "Jika-maka".
1. Jika Anda tidak menyelesaikan kelas Memulai Pemrograman dengan Python, maka Anda
tidak lulus dari kelas Memulai Pemrograman dengan Python.
2. Jika variabel nama kurang dari dua, maka variabel tersebut tidak memenuhi kriteria kondisi.
1. If
If adalah statement Python yang akan mengecek nilai variabel di dalamnya memenuhi
kriteria suatu kondisi atau tidak. Jika memenuhi kriteria, kondisi tersebut bernilai true. Jika
tidak memenuhi kriteria, kondisi akan bernilai false. Jika kondisi if bernilai true, kode yang
berada dalam blok kode if akan dieksekusi.
Sebagai informasi tambahan, kita juga dapat menambahkan 'and' atau 'or' operator dalam
kondisi percabangan.
2. Else
Else adalah statement yang menjadi jalan keluar saat kondisi atau hasil evaluasi if statement
bernilai false. Ini maksudnya, program akan menjalani blok kode if terlebih dahulu dan jika
hasilnya adalah false, program akan menjalankan else statement sebagai jalan keluar atau
kondisi terakhir.
Jika kita gabungkan if dan else, struktur berikut dihasilkan.
3. ELIF
Elif merupakan kependekan dari else if dan alternatif untuk if bertingkat atau switch case. Elif
statement berada di posisi setelah if. Anda dapat menambahkan elif statement lebih dari
satu karena tidak dibatasi dan opsional.
Struktur keseluruhan percabangan jika kita gabungkan antara if, elif, dan else sebagai berikut.
Ternary Operators
Ternary operators termasuk conditional expressions pada Python. Conditional expressions adalah
bentuk ekspresi yang bertujuan untuk mengevaluasi kondisi dan mengembalikan nilai berdasarkan
hasil evaluasinya. Anda bisa asumsikan bahwa ternary operators ini merupakan versi one-liner dari if
dan else.
1. Ternary Operators
Ternary jenis ini adalah jenis expression yang umum digunakan. Struktur dari ternary
operators sebagai berikut.
2. Ternary Tuples
Jenis ternary kedua adalah jenis ternary yang menggunakan tipe data tuples.
Perulangan
Perulangan adalah jenis kode program yang bertujuan untuk meningkatkan efektivitas program
dalam membuat kode program berulang. Ada beberapa jenis perulangan dalam Python, yakni for,
while, dan for bersarang.
For
For adalah sintaks dalam Python yang bersifat definite iteration. Definite iteration adalah sebuah
proses iterasi atau perulangan yang jumlah pengulangannya ditentukan secara eksplisit sebelumnya.
While
While adalah sintaks dalam Python yang bersifat indefinite iteration. Indefinite iteration adalah
sebuah proses iterasi yang akan berhenti ketika memenuhi kondisi tertentu.
Kondisi merupakan ekspresi yang akan dievaluasi dan menghasilkan nilai true atau false. Selama hasil
evaluasi bernilai true, program akan terus berjalan hingga menghasilkan nilai false.
Namun, ada kondisi yang akan menyebabkan perulangan terus berjalan tanpa henti. Kondisi ini
disebut dengan infinite loop, kebalikan dari indefinite loop. Kondisi infinite loop berarti kita
melakukan perulangan yang tidak pernah memenuhi kondisi yang diinginkan. Contohnya ketika kita
melakukan perulangan, tetapi tidak menambahkan increment di akhir kode.
1. counter = 1
3. print(counter)
For Bersarang
Ketika Anda membuat perulangan, sering kali menemukan perulangan dalam perulangan atau
disebut sebagai nested loop.
Anda dapat asumsikan bahwa terdapat dua perulangan, yakni "perulangan luar" dan "perulangan
dalam". Program akan melakukan "perulangan luar" terlebih dahulu, lalu akan melakukan
"perulangan dalam". "variabel_luar" akan mengambil nilai dari "iterable_luar" sedangkan
"variabel_dalam" akan mengambil nilai dari "iterable_dalam".
Kontrol Perulangan
1. Break
Break statement adalah pernyataan untuk menghentikan perulangan dan kemudian program
akan otomatis keluar dari perulangan tersebut, lalu dilanjutkan dengan mengeksekusi blok
perulangan selanjutnya.
Jika Anda memiliki perulangan yang bertingkat seperti for bersarang, break akan
menghentikan perulangan sesuai dengan tingkatan atau letak perulangannya berada.
2. Continue
Continue statement adalah pernyataan untuk membuat iterasi berhenti, kemudian
melanjutkan ke iterasi berikutnya. Continue seolah mengabaikan pernyataan (statement)
yang berada antara continue hingga akhir blok.
Perlu diperhatikan oleh Anda, if dan else berkaitan walaupun berbeda blok. Pada else
setelah for, statement else tidak akan dieksekusi saat if pernah sekali saja benar. Dengan
kata lain, break dalam if harus tidak terjadi untuk memicu else setelah for.
4. Else setelah While
Berbeda dengan else setelah for, pada statement else setelah while, blok statement else
akan selalu dieksekusi saat kondisi pada while menjadi salah.
5. Pass
Pass statement adalah pernyataan yang digunakan jika Anda menginginkan sebuah
pernyataan atau blok pernyataan (statement), tetapi tidak ada tindakan atau program tidak
melakukan apa pun.
6. List Comprehension
List comprehension adalah cara untuk menghasilkan list baru berdasarkan list
atau iterables yang telah ada sebelumnya. Sintaks dasarnya sebagai berikut.
Catatan:
Saat Anda membuat program, sering kali menemukan setidaknya dua jenis kesalahan berdasarkan
kejadiannya.
1. Kesalahan sintaks (syntax errors) atau sering disebut juga sebagai kesalahan penguraian
(parsing errors).
2. Pengecualian (exceptions) atau sering disebut juga sebagai kesalahan saat beroperasi
(runtime errors).
Kesalahan Sintaks (Syntax Errors)
Kesalahan sintaks (syntax errors) adalah jenis kesalahan yang terjadi ketika Python tidak mengerti
perintah Anda. Ini mengakibatkan pesan kesalahan muncul sebelum program tersebut berjalan.
Berikut adalah penjelasan detail satu per satu terkait poin di atas.
1. "<nama file>" merupakan file Python yang Anda eksekusi. Jika Anda menggunakan mode
script melalui lokal komputer dan program Anda menghasilkan Error, pesan ini akan
memunculkan nama script atau file Python Anda.
2. <nomor baris> merupakan nomor baris kode dalam file Anda yang mengalami kesalahan.
3. <baris kode> merupakan kode yang mengalami kesalahan dalam file Anda.
4. <tipe kesalahan> merupakan kelompok atau tipe kesalahan yang Anda alami, contohnya
SyntaxError dan IndentationError.
5. <pesan kesalahan> merupakan pesan detail kesalahan atau keterangan yang diberikan oleh
program. Contohnya “invalid syntax” dan “expected an indented block”.
Pengecualian (Exceptions)
Pengecualian adalah kesalahan yang terjadi ketika Python mengerti perintah Anda, tetapi
mendapatkan masalah saat mengikutinya. Umumnya, pengecualian bisa terjadi ketika aplikasi sudah
mulai beroperasi.
Jenis kesalahan ini adalah kesalahan yang paling sering ditemui ketika Anda membuat kode program
yang kompleks. Meskipun kode atau ekspresi dari Python yang Anda tulis sudah benar, ada
kemungkinan terjadi kesalahan ketika perintah tersebut dieksekusi.
Secara umum, struktur pengecualian sama seperti kesalahan sintaksis. Namun, hal yang menjadi
pembeda adalah pada struktur pengecualian memberikan pesan "traceback (most recent call last)".
Pesan ini mengacu pada informasi yang ditampilkan ketika terjadi kesalahan atau pengecualian
(exception). Pesan traceback ini menyediakan "jejak" dari kode yang dieksekusi sehingga Anda dapat
melacak kembali jalur eksekusi program sebelum mencapai titik error.
Penanganan Pengecualian
Untuk menyelesaikan setiap masalah pengecualian, kita dapat membangun kode program dalam
menangani hal tersebut.
Program Python yang Anda bangun dapat dilengkapi penanganan terhadap pengecualian dari tipe
kesalahan yang Anda tentukan. Konsep ini dikenal dengan exceptions handling yang menggunakan
pernyataan try-except untuk menangani pengecualian tersebut.
Pada try statement, program akan menjalankan blok kode yang mungkin terjadi pengecualian. Pada
except statement, program akan mengeksekusi statement ini jika terjadi pengecualian. Pada else
statement, program akan mengeksekusi statement ini jika tidak terjadi pengecualian. Pada finally
statement, program akan mengeksekusi statement ini setelah semua pernyataan di atas terjadi.
Raise Exception
Jika sebelumnya kita menangani kesalahan yang TIDAK DISENGAJA, kali ini kita akan mempelajari
cara menangani kesalahan yang DISENGAJA. Umumnya, ketika membuat kode program kita ingin
membatasi program tersebut dengan kondisi tertentu.
Perlu diingat bahwa umumnya, raise digunakan bersamaan dengan if-else statement.
Berikut adalah contoh penerapan raise statement untuk menangani kesalahan atau pengecualian
yang disengaja.
1. var = -1
2. if var < 0:
4. else:
5. for i in range(var):
6. print(i+1)
7.
8.
9. """
Kita sudah berada di penghujung materi Array dan Pemrosesannya. Sampai sini, Anda telah
mempelajari salah satu struktur data, yakni array. Mari kita rangkum secara saksama.
Fundamental Array
Array adalah salah satu jenis dari struktur data linear dan terdiri dari kumpulan elemen bertipe data
sama dengan indeks yang berurutan atau linear. Struktur array adalah berikut.
Berikut adalah penjelasan dari struktur tersebut.
1. Indeks-indeks (indices): Kumpulan indeks yang keseluruhan dari kumpulan indeks tersebut
disebut sebagai array.
3. Element: Nilai yang berada dalam suatu indeks, contohnya jika nilai dari indeks 8 adalah
string "Dicoding", kita bisa sebut sebagai "elemen ke-9 adalah string 'Dicoding'".
4. Array length: Panjang dari suatu array. Dalam gambar tersebut, panjang array adalah 10.
Dalam Python terdapat dua cara untuk menggunakan array, yakni berikut.
1. Menggunakan List
1. x = [1, 2, 3, 4, 5]
2. print(x)
3.
4. """
5. Output:
6. [1, 2, 3, 4, 5]
7. """
1. import array
2.
3. x = array.array("i",[1, 2, 3, 4, 5])
4. print(x)
5. print(type(x))
6.
7. """
8. Output:
11. """
Dalam kelas ini, kita telah mempelajari array menggunakan list Python. Secara detail, ada dua cara
untuk melakukan deklarasi array menggunakan list Python, yakni berikut.
Berikut adalah struktur mendeklarasikan variabel array dengan mendefinisikan isi array
secara langsung.
Dari struktur tersebut, <nama-var> merupakan nama variabel array yang dideklarasikan
sebanyak n dengan elemen-elemennya adalah <val0>, <val1>, <val2>, … , <valn-1>. Perlu
diingat bahwa elemen tersebut terurut berdasarkan indeks dari 0 hingga n-1.
Nilai default ditentukan oleh kesepakatan bersama sesuai kebutuhan yang nilainya di luar
dari rentang yang ditentukan. Misalnya tim Anda menentukan nilai dalam list harus berkisar
dari 1 hingga 10. Kita bisa menyepakati "0" sebagai nilai default karena di luar jangkauan
yang disepakati (1-10).
Berikut adalah struktur mendeklarasikan variabel array dengan mendefinisikan nilai default.
Berikut adalah penjelasan lebih detail terkait struktur tersebut.
Pemrosesan array merujuk pada operasi-operasi yang dilakukan pada elemen-elemen suatu array.
Operasi ini melibatkan manipulasi hingga pengolahan elemen yang ada pada array. Adapun
pemrosesan sekuensial adalah sebuah pemrosesan setiap elemen array yang dimulai dari elemen
pada indeks terkecil hingga terbesar. Pemrosesan sekuensial lebih sering menggunakan pengulangan
(loop/iterasi) dalam setiap prosesnya.
Sebab pemrosesan sekuensial melibatkan semua elemen di dalamnya, ada beberapa hal yang perlu
diperhatikan.
1. Setiap elemen array diakses secara langsung melalui indeksnya (metode indexing).
2. Elemen pertama (first element) adalah elemen array dengan indeks terkecil yang selalu
dimulai dari 0.
4. Kondisi berhenti dicapai jika indeks yang diproses adalah indeks terbesar yang sudah
terdefinisi.
5. Suatu array tidak boleh kosong, minimal memiliki satu elemen di dalamnya.
Banyak sekali contoh penerapan pemrosesan sekuensial pada array, beberapa di antaranya sebagai
berikut.
Kita sudah berada di penghujung materi style guide pada Python. Sampai sejauh ini, Anda
diharapkan paham untuk memahami cara membangun kode Python yang lebih baik dan benar sesuai
panduan yang telah diberikan oleh Python melalui PEP8. Mari kita rangkum secara saksama.
Saat membangun program pada Python, seringkali kode yang dibuat 'cukup berantakan' sehingga
kita perlu mengecek bahwa kode tersebut sudah rapi dan benar dengan mengacu pada panduan
yang telah diberikan oleh Python, yaitu PEP 8.
PEP atau Python Enhancement Proposals adalah panduan yang telah menjadi acuan untuk
perkembangan Python. Salah satu panduan tersebut membahas mengenai arahan gaya penulisan
(style guide) yang baik dan benar ketika Anda ingin membangun kode menggunakan Python.
Panduan tersebut adalah PEP8 yang berjudul "Style Guide for Python Code".
Tujuan dari panduan ini agar kode Anda lebih mudah dibaca dan dipahami oleh programmer lain
serta menghindari kemungkinan kesalahan yang akan muncul.
Lint
Lint atau linting adalah proses pengecekan kode atas kemungkinan terjadi kesalahan (error),
termasuk dalam proses ini adalah mengecek kesesuaian terhadap arahan gaya penulisan kode (style
guide) PEP8. Aplikasi yang digunakan untuk proses ini disebut linter. Integrasi linter dengan editor
kode Anda akan membuat efisien dalam menulis kode Python. Pertimbangan ini karena keluaran
atau output dari aplikasi linter hanya berupa teks singkat berupa keterangan dan kode Error atau
Warning atau Kesalahan Konvensi Penamaan (Naming Conventions).
Dengan lint atau linting akan meminimalkan kode Anda mengalami error, salah satunya karena
kesalahan indentasi di Python. Sebelum kode Anda diproses oleh interpreter Python dengan
IndentationError, lint akan memberitahukannya lebih dahulu ke Anda. Berikut adalah tiga jenis
aplikasi linter.
2. Pylint
Pylint adalah aplikasi open source (berlisensi GPL v2) untuk melakukan analisis kode Python,
mengecek untuk kesalahan (error) pemrograman, memaksakan standar penulisan kode
dengan mengecek penulisan kode yang tidak baik, serta memberikan saran untuk refactoring
sederhana.
3. Flake8
Flake8 adalah aplikasi open source (berlisensi MIT) yang membungkus sejumlah kemampuan
aplikasi lain, seperti pycodestyle, pyflakes, dan sejumlah (skrip/fitur) lainnya.
Memformat Kode
Jika proses lint atau linting hanya melakukan pengecekan, kali ini adalah arahan gaya penulisan kode
agar bisa sesuai dengan PEP8. Kita akan kembali menggunakan beberapa aplikasi yang nantinya akan
diinstal.
Proses memformat kode akan sama dengan cara melakukan proses linting, yaitu kita akan
mengeksekusi script. Perbedaannya adalah output yang dihasilkan. Jika proses linting menghasilkan
pesan dengan menunjukkan baris dan kode yang mengalami kesalahan, proses memformat kode
akan memberikan pesan berupa kode yang telah diperbaiki. Ini artinya Anda tidak perlu mengubah
kode secara manual. Berikut adalah tiga jenis aplikasi untuk memformat kode.
1. black
black adalah proyek open source yang dikembangkan di repository Python Software
Foundation (PSF) dengan lisensi MIT. Untuk mendapatkan gambaran, versi online (tidak
resmi) ada di https://black.now.sh.
3. autopep8
autopep8 adalah proyek open source (berlisensi MIT) yang termasuk paling awal untuk
memformat kode dengan bantuan lint pycodestyle.
Setelah mengetahui aplikasi untuk pengecekan dan memformat kode, kali ini kita akan belajar cara
membuat kode yang baik dan benar.
Statement Gabungan
Saat Anda membuat program dengan banyak statement, usahakan untuk tidak menggabungkan >1
statement pada baris yang sama.
1. if foo == 'blah':
2. do_blah_thing()
3. do_one()
4. do_two()
5. do_three()
Tidak disarankan seperti ini.
Anda diperbolehkan untuk membuat sebuah konten/isi dari if/for/while yang cukup pendek untuk
diletakkan dalam satu baris (program tetap berjalan). Namun, pastikan tidak melakukannya jika
if/for/while Anda bertingkat atau bersifat multi clause, misalnya if-else, try-finally, dan sebagainya.
2. else: do_non_blah_thing()
3. try: something()
4. finally: cleanup()
Koma di bagian akhir (trailing commas) umumnya bersifat opsional, satu statement ketika ia bersifat
wajib adalah saat kita membuat variabel menggunakan tipe tuple dengan satu elemen. Hal ini
umumnya diperjelas dengan kurung untuk menghindari penghapusan atau pembersihan.
1. FILES = ('setup.cfg',)
1. FILES = 'setup.cfg',
Tidak umum jika Anda meletakkan trailing comma pada baris tempat Anda menutup
kurung/kurawal/siku seperti di bawah ini, kecuali dalam tuple dengan satu elemen seperti yang
dijelaskan di atas.
1. FILES = [
2. 'setup.cfg',
3. 'tox.ini',
4. ]
5. initialize(FILES,
6. error=True,
7. )
2. initialize(FILES, error=True,)
Anotasi Fungsi
Anotasi fungsi adalah fitur yang memungkinkan kita untuk menambahkan informasi tambahan
tentang parameter dan return value dari sebuah fungsi. Jika sebelumnya kita belajar menambahkan
informasi terkait fungsi dengan menambahkan docstring, anotasi fungsi lebih spesifik untuk
menjelaskan parameter dan return value.
Penggunaan anotasi fungsi sebaiknya menggunakan aturan baku untuk titik dua (:) dan
menggunakan spasi untuk penggunaan arah panah atau arrow (->). Hal ini disebut sebagai type hints
yang merujuk pada PEP 484.
1. Yes:
3. pass
4. def munge() -> str: # Menambahkan informasi return value bertipe string
5. pass
6.
7. No:
9. pass
11. pass
Jika kita membuat fungsi yang menggabungkan anotasi dengan nilai parameter, sebaiknya tetap
menggunakan spasi sebelum dan sesudah tanda sama dengan (=). Namun, ketika membuat fungsi
biasa tanpa adanya anotasi, sebaiknya tidak menggunakan spasi sebelum dan sesudah tanda sama
dengan (=).
1. Yes:
4.
5. No:
7. pass
Penamaan pada Python mencakup banyak hal, seperti penamaan fungsi, kelas, dan sebagainya.
Berikut adalah beberapa rekomendasi untuk penamaan yang meliputi overriding, penamaan
deskriptif, fungsi, method, dan sebagainya. Namun, Anda juga dapat memilih mempertahankan
styling yang sudah digunakan sebelumnya untuk menjaga konsistensi internal tim atau perusahaan.
Ini karena konsistensi internal lebih diutamakan.
Prinsip Overriding
Nama yang dilihat oleh user publik sebaiknya merefleksikan penggunaan/fungsinya dan bukan
implementasinya.
Penamaan Deskriptif
Penamaan deskriptif adalah cara untuk memberikan nama yang informatif, jelas, dan sesuai dengan
tujuan dari elemen kode. Penamaan deskriptif ini meliputi variabel, fungsi, kelas, hingga konstanta.
Ada berbagai cara penamaan yang umum digunakan dalam Python. Pemilihan cara penamaan ini
penting untuk menjaga konsistensi dan kejelasan kode. Penamaan ini juga merujuk pada PEP8
mengenai Naming Conventions dan Naming Styles.
8. Huruf Campuran: hurufCampuran (mirip dengan CapWords, hanya berbeda di karakter paling
awal)
9. Huruf Besar di Awal Kata dengan Garis Bawah:
Huruf_Besar_Di_Awal_Kata_Dengan_Garis_Bawah
Python tidak menyarankan atau lebih tepatnya tidak dibutuhkan jika Anda membuat sebuah fungsi
yang diawali huruf atau frasa, seperti 'f' jika fungsinya 'f_mean()', 'r' jika fungsinya 'r_name()', dan
sebagainya.
Selain penggunaan huruf atau frasa yang tidak direkomendasikan, berikut adalah beberapa bentuk
penamaan khusus yang umum ditemukan dalam penamaan fungsi. Ini juga bisa Anda terapkan pada
penamaan variabel dan kelas.
3. __diawali_dua_garis bawah: menegaskan bahwa sebuah objek adalah bagian dari kelas
tertentu.
Berikut adalah hal-hal yang harus diperhatikan dalam penamaan fungsi, method, hingga penamaan
kelas.
2. ASCII Compatibility
Merujuk pada PEP 3131, suatu identifiers yang digunakan dalam Python Standard Library
harus kompatibel dengan kode ASCII.
4. Nama Kelas
Saat menamai kelas, gunakan CamelCase atau CapWords. Pastikan semua akronim (misal
HTTP) ditulis keseluruhan dengan huruf besar.
6. Nama Exception
Untuk pengecualian (exception), Anda juga menerapkan konvensi penamaan kelas pada
exception karena ia seharusnya bertipe kelas. Bedanya, tambahkan "Error" atau nama
deskriptif lain pada nama exception Anda.
a. Gunakan self sebagai argumen pertama jika Anda membuat instance method.
b. Gunakan cls sebagai argumen pertama ketika Anda membuat class method.
11. Konstanta
Dalam memberikan nama variabel bertipe konstanta, umumnya didefinisikan pada bagian
atas modul dengan huruf besar, misalnya 'PI = 3,14' atau 'TOTAL = 4.14213'.
Variabel atau method yang bersifat non-publik adalah suatu variabel atau method yang
hanya digunakan untuk lingkup tertentu dan tidak diakses secara langsung di luar.
Method/Variabel publik dipersiapkan untuk pihak eksternal menggunakan kelas Anda. Anda
juga otomatis berkomitmen untuk menghindari adanya incompatible backward changes atau
suatu kode yang tidak dapat berjalan kembali setelah adanya perubahan.
Sebaliknya, method/variabel dengan atribut non-publik hanya digunakan oleh Anda sebagai
developer. Itu juga tidak memberikan garansi kepada siapa pun bahwa Anda takkan
mengubah atau menghapusnya. Di sini kita tidak menggunakan atribut private karena dalam
Python tidak ada atribut yang benar-benar private.
c. Pada data publik bersifat simpel, hindari nama yang terlalu panjang. Cukup dengan
nama atribut sependek mungkin. Ingatlah bahwa pada masa depan Anda akan
mungkin mengembangkan skema atau data ini sehingga nama sependek apa pun
mungkin akan menguntungkan Anda.
d. Jika Anda berniat untuk mewariskan atau membuat subclass dari kelas dan
menginginkan sebuah variabel hanya digunakan di kelas utama saja, tambahkan
awalan dua garis bawah. Ini akan memudahkan Anda karena Python mengenalinya
sebagai konvensi kelas, untuk menghindari kemungkinan kesamaan nama atau
implementasi.