Pengantar Sang Pengatur Program


Pengantar Sang Pengatur Program

“Make it work, make it right, make it fast.” - Kent Beck, penulis buku Extreme Programming.

Selain membuat program yang dapat berjalan, kita juga harus bisa membuat ia berjalan dengan cepat. Nah, untuk membuat program berjalan dengan cepat, pahamilah bagaimana suatu program mengeksekusi kode yang ditulis. Oleh karena itu, kita perlu untuk memahami cara program mengeksekusi kode.

Berikut adalah objektif pembelajaran yang akan dicapai pada modul ini.

  • Mendefinisikan istilah "Flow Controls" dan peran penting dalam pemrograman.
  • Mengidentifikasi jenis-jenis flow controls yang umum di pemrograman.
  • Menjelaskan kasus yang tepat untuk menggunakan switch alih-alih if.
  • Menjelaskan pentingnya penanganan error dan exception.
  • Menggunakan ifelse if, dan switch untuk melakukan kondisional di JavaScript.
  • Menggunakan for dan while untuk melakukan perulangan di JavaScript.
  • Menggunakan trycatch, dan finally untuk menangani exception.

Flow Controls

Sebuah program JavaScript akan memiliki lebih dari satu expression dan statement. Apa yang terjadi jika program memiliki lebih dari satu expression dan statement? Jawabannya adalah program akan menjalankan statement berurutan dari atas ke bawah (secara sekuensial).

Komputer akan menjalankan baris pertama yaitu menginisiasi variabel number. Kemudian, komputer akan menjalankan baris selanjutnya untuk mencetak nilai variabel number di console atau terminal. Jika kita gambarkan alurnya, akan menjadi seperti berikut ini.

dos-197134869313e6042bae83ca805b436d20240802174140.png

Jadi, flow control adalah urutan bagaimana expression dan statement dijalankan oleh komputer berdasarkan kondisi dan logika tertentu (yang akan kita bahas di modul ini). Flow control memungkinkan programmer untuk membuat program yang dinamis, mengeksekusi perintah yang berulang dan menangani berbagai macam kondisi berdasarkan input dari pengguna. Tak peduli Anda membangun aplikasi web sederhana, aplikasi mobile atau aplikasi kompleks, flow control penting untuk dipelajari karena ia merupakan fundamental dari bahasa pemrograman.

Mari kita lihat contoh di aplikasi nyata yang Anda gunakan. Misalnya, Anda ingin memesan makanan secara daring melalui aplikasi mobile. Anda akan mengunduhnya jika belum memiliki aplikasi tersebut dan membuka aplikasi jika sudah memilikinya. Ketika Anda pertama kali masuk ke aplikasi, Anda akan dihadapkan antara dua pilihan, daftar (jika belum punya akun) atau masuk (jika sudah punya akun) ke aplikasi tersebut. Anda akan memilih salah satu pilihan tersebut. Di balik layar, aplikasi akan mengeksekusi kode program berdasarkan pilihan Anda. Jika Anda memilih daftar, aplikasi akan mengeksekusi kode yang memproses daftar akun. Hal ini disebut dengan conditional flow yang akan kita bahas setelah ini, ya!

dos-a7bd82889559fe3da7761bd824df548f20240802093622.jpeg

Secara umum, bahasa pemrograman (khususnya JavaScript) memiliki flow control yang terdiri dari: conditional, looping, dan error handling. Kita akan bahas satu per satu mulai dari conditional hingga error handling secara tuntas di materi selanjutnya. Staylearning, ya!

Conditional

Sepintas mungkin akan terpikir oleh Anda, apakah komputer selalu mengeksekusi kode dari atas ke bawah? Jawabannya adalah tidak. Tidak semua program berjalan lurus seperti jalan tol. Seperti contoh di kasus sebelumnya (memesan makanan secara daring), kode program tidak akan dieksekusi semuanya ketika dijalankan. Kode program akan menjadi dua alur atau lebih. Kode akan dieksekusi tergantung dari kondisi yang ditetapkan dan ini disebut dengan conditional flow.

dos-4e8480b7e00125b1e3796e64fc56dde520240802174311.png

Conditional flow adalah cara untuk menentukan apakah kode dieksekusi atau dilewatkan. Jika suatu kondisi terpenuhi, kode akan dieksekusi dan kode yang lainnya akan diabaikan. Kondisi ini ditentukan dari inputan yang diberikan oleh pengguna. 

Perhatikan contoh di kehidupan sehari-hari berikut ini. Pada suatu sore, ketika berjalan-jalan di mal, Anda merasa lapar dan terpikirkan untuk mampir sejenak di sebuah resto untuk makan. Namun, sebelum makan Anda berpikir sebelum mengambil keputusan. Apakah makan di restoran mal yang harganya lebih mahal atau makan di warung kaki lima? Atau makan di rumah? Semua pilihan tersebut bergantung terhadap suatu kondisi, katakanlah kondisi keuangan Anda. Apakah Anda sudah gajian? Apakah saat ini akhir bulan? Apakah di rumah sudah ada makanan?

dos-d8fdb260968cc452c2e6a2a5c87157ca20240802104725.jpeg

Conditional Flow di JavaScript terdiri dari If Statement dan Switch Case. Yuk, kita simak pembahasannya.


If Statement

Adakalanya kita membuat program yang hanya dijalankan ketika suatu kondisi terpenuhi. Untuk melakukan hal itu, kita bisa menggunakan if statement. If statement merupakan fundamental statement yang memungkinkan JavaScript untuk membuat keputusan apakah mengeksekusi program atau tidak. Bentuk umumnya adalah seperti berikut ini.

  1. if (expression)    statement
  2.    penyataan

If statement akan mengeksekusi blok jika kondisi terpenuhi (true). Jika kondisi belum terpenuhi (false), kode tidak akan dieksekusi. Perhatikan contoh berikut ini.

Jika nilai gajian bernilai true, blok kode di dalam if akan dijalankan sehingga program tersebut akan mencetak di terminal hasil seperti berikut ini.

dos-67139bad530b8e0d3e57e3f22c300b5020240802104724.jpeg

Apakah if statement hanya bisa menangani satu cabang kondisi saja? Jawabannya adalah tidak. Kita bisa menggunakan keyword else untuk menambah pengecekan kondisi lainnya. Perhatikan contoh berikut ini.

Pada contoh tersebut, kita menggunakan operator perbandingan. Variabel score akan menentukan apakah masuk ke dalam blok if atau else. Karena variabel score bernilai 80, blok yang ada di dalam if akan dieksekusi. Lalu, jika memiliki cabang kondisi lebih dari dua, Anda dapat mengecek beberapa kondisi sekaligus dengan menggabungkan else dan if.

Ketika dijalankan, JavaScript pertama kali mengecek apakah score bernilai lebih dari 90 atau tidak? Jika tidak terpenuhi, JavaScript akan melanjutkan pengecekan ke kondisi yang kedua. Karena score bernilai lebih dari 80, akan tampil di terminal pesan “Selamat, Anda lulus ujian!” dan blok else tidak akan dijalankan.

dos-42e7e4a9f28485303f13ba58efe6a61320240802104725.jpeg

JavaScript menyediakan sintaksis yang lebih ringkas yaitu menggunakan ternary operator. Ternary operator atau nama lainnya conditional operator direpresentasikan menggunakan tanda tanya (?). 

Ternary operator membutuhkan tiga operan dengan urutan seperti berikut:

  1. Kondisi yang ingin diperiksa ditulis sebelum tanda tanya (?)
  2. Ekspresi yang dieksekusi jika kondisinya benar.
  3. Ekspresi yang dieksekusi jika kondisi salah.

Berikut adalah bentuk dasar dari ternary operator.

  1. let result = condition ? value1 : value2;

Kode di atas memiliki variabel isMember dengan nilai true sehingga ketika dieksekusi akan mendapatkan discount sebesar 0.1 atau 10%. Anda juga dapat mencoba untuk mengganti nilai variabel isMember menjadi false sehingga hasilnya tidak akan mendapatkan discount. So, menggunakan ternary operator membuat kode lebih ringkas dan readable, kan?


Switch Case

Anda sudah memahami percabangan dengan if statement. Tahukah Anda bahwa if statement bukanlah satu-satunya control flow yang ada di bahasa pemrograman. Selain if statement, ada juga yang namanya switch statement.

Switch statement adalah control flow statement yang mengevaluasi expression terhadap beberapa kasus. Switch dapat menggantikan beberapa pengecekan kondisi yang dilakukan oleh if. Selain itu, menggunakan switch membuat kode menjadi lebih readable dan ringkas. Inilah struktur dari switch case statement.

  1. switch (expression) {
  2.     statement
  3. }

Berikut adalah contoh penggunaan switch case di JavaScript.

Tanda kurung setelah keyword switch berisi variabel atau expression yang akan dievaluasi (sebuah kondisi). Keyword case diikuti dengan nilai (banana/apple/orange/strawberry) yang ingin kita bandingkan dengan variabel yang ada di dalam switch (fruit). Jika nilai yang ada di case sama dengan nilai yang ada di fruit, blok kode setelah titik dua (:) akan dieksekusi. Selain itu, ada blok kode default yang berfungsi jika tidak ada nilai case yang sama dengan nilai variabel pada switch. 

Kini, Anda akan mulai berpikir dan bertanya. Apa bedanya dengan if-else? Toh, sama-sama melakukan pengecekan kondisi. Sebenarnya, switch case memang melakukan hal yang sama dengan if/else, switch hanya menggantikan penggunaan if yang berulang untuk mengecek kondisi. Perbedaan switch case dan if/else terdapat pada penulisan sintaks yang lebih readable dan beberapa kasus penggunaan switch lebih efisien. Perhatikan contoh pengecekan kondisi dengan if/else berikut ini.

Nilai variabel day berisi angka sesuai dengan hari ini. Kita akan mengecek kondisi secara berulang dengan membandingkan nilai variabel day dengan yang ada di dalam if, dan ini merupakan hal yang sia-sia. Bandingkan jika kita menggunakan switch berikut ini.

Keyword break akan membuat pengecekan berhenti jika nilai variabel day sama dengan nilai yang ada case. Jika menggunakan switch terlihat lebih ringkas dan mudah dibaca, kan? Switch sangat bagus digunakan ketika banyak kondisi yang perlu dicek (misalnya pada contoh di atas), jika kondisi yang akan dicek masih sedikit misalnya hanya dua kondisi, gunakanlah if/else.

Sebelumnya kita sudah singgung sedikit tentang penggunaan keyword break yang ada di switch case. Keyword break berfungsi untuk menghentikan pengecekan kondisi sehingga blok kode yang ada di case lainnya tidak akan dijalankan. Seandainya break lupa atau tidak ditulis, apa yang terjadi? Coba perhatikan kode berikut ini.

Variabel number bernilai 2 sehingga kode yang ada di blok case 2 akan dieksekusi. Karena tidak ada keyword break di blok kode tersebut, blok case selanjutnya akan dijalankan sehingga hasilnya menjadi seperti di bawah ini.

  1. Ini 2
  2. Ini 3

Itulah yang terjadi jika switch case tanpa keyword break di dalamnya. Jangan sampai lupa untuk menulis break di dalam blok case, ya!

Looping

Ketika Anda memprogram, ada banyak sekali instruksi yang Anda tulis untuk dieksekusi oleh komputer. Misalnya, Anda ingin mencetak semua nama makanan yang ada di list pada terminal/console seperti berikut.

Hal tersebut memang memungkinkan, tetapi tidak praktis karena melakukan hal yang sama berulang. Lebih tidak praktis lagi ketika list makanan tersebut berisi data 10 makanan atau bahkan 100 makanan. Sudah terbayang, kan? Repot dan tidak praktisnya menulis kode secara berulang.

Untuk menghindari hal itu, perkenalkan inilah loopingLooping (perulangan) adalah statements yang memungkinkan kita untuk mengeksekusi kode yang sama secara berulang. Di JavaScript terdapat banyak jenis perulangan, seperti for loop, for in, for of, while, dan do-while.

dos-9c154de0aaaf77c5767a3d71bee20af620240802133651.jpeg


For 

For adalah cara looping yang paling umum dilakukan di JavaScript. Semenjak kehadiran ES6, for terbagi lagi menjadi beberapa jenis. Saat ini, for terdiri dari for loop, for in, for of. Simak penjelasan berikut ini.


For Loop

Pertama, kita akan bahas for loop. Struktur dari for loop tampak seperti berikut ini.

  1. for (variabel awal; test kondisi; increment) {
  2.   // do something
  3. }

Variabel awal adalah nilai variabel sebelum looping dilakukan. Test kondisi adalah evaluasi dari looping, jika bernilai false, looping akan berhenti. Increment adalah nilai variabel yang bertambah setiap looping dilakukan. Perhatikan contoh berikut ini.

Pada contoh di atas, nol merupakan nilai awal sebelum looping dijalankan. Pengecekan kondisi i < 5 sebelum looping, ketika bernilai false, looping akan terhenti. Terakhir, i++ artinya adalah nilai i akan bertambah setiap looping dilakukan. Jika dijalankan, kode tersebut akan mencetak tampilan di terminal/console seperti berikut ini.

dos-3ed27052857cf6d56e4f87e4861fa93920240802133651.jpeg


For In

For in banyak digunakan untuk pengulangan pada object karena ia dapat melakukan iterasi ke seluruh data di dalam objek. Bahkan, ia juga dapat melakukan iterasi ke properti inheritance dari object seperti length. Berikut contoh penggunaan for in.

Sintaks dari for in tidak berbeda jauh dengan for loop. Dengan menggunakan for in kita tidak perlu menuliskan nilai variabel awal, test kondisi dan incrementFor in akan melakukan perulangan item yang ada di dalam object (pada contoh object person). Pada contoh di atas, for akan melakukan looping semua item yang ada di dalam objek person


For Of

Kehadiran for of dimulai pada ECMAScript 2015 (ES6). For of berbeda dengan for in. For of lebih sederhana karena kita tidak perlu memikirkan property dan key. Perhatikan contoh berikut.

Dengan for of datanya bisa kita dapatkan langsung tanpa menambahkan indeks atau nama propertinya seperti contoh di atas. Sintaksnya lebih ringkas karena kita hanya perlu memanggil variabel item. Variabel item merupakan sebuah variabel yang digunakan untuk menampung element dari array. For of dapat digunakan pada object yang bisa diiterasi seperti arrays, strings, sets, dan maps.


While

Perulangan di JavaScript tak hanya menggunakan for, tetapi ada cara lainnya yaitu while statement. While statement akan mengeksekusi statement ketika kondisinya bernilai truthy. Berikut struktur dari while statement.

  1. while (condition) 
  2.      statement

Iterasi akan berjalan ketika kondisi bernilai true. Oleh karena itu, perlu untuk berhati-hati ketika mengecek kondisi tersebut. Akan terjadi infinite loop saat kondisinya bernilai true. 

Supaya Anda mendapatkan gambaran penggunaan while, perhatikan contoh berikut ini.

Sama seperti contoh kode di materi for. Kode di atas akan mencetak tampilan di terminal/console sebanyak 5 kali. Keunggulan dari while adalah ia tidak perlu tahu jumlah data yang akan di-looping. 

While hanya peduli dengan kondisi yang kita berikan. Oleh karena itu, jangan lupa untuk mengubah kondisi tersebut, misalnya pada contoh kita memberikan kondisi i < 5. Ketika while dieksekusi, jangan lupa untuk mengubah variabel i agar kondisinya berubah menjadi true atau false.

Contoh berikut adalah contoh ketika kondisi i < 5 selalu bernilai true sehingga menyebabkan infinite loop (perulangan tanpa henti).

Apa yang membuat infinite loop terjadi? Jawabannya adalah karena kita tidak mengubah nilai variabel i sehingga dia akan selalu bernilai 0 yang mana nol lebih kecil dari lima (kondisi akan selalu true). 


Do-While

Sebenarnya, while dan do-while tidak berbeda jauh. Perbedaan mereka terdapat pada urutan pengecekan kondisi. While melakukan evaluasi kondisi di awal, sedangkan do-while melakukannya di akhir. Berikut struktur dari do-while.

  1. do {
  2.   // Do something
  3. } while (condition)

Karena do-while melakukan evaluasi kondisi di akhir, blok yang ada di dalam do setidaknya akan dijalankan satu kali. Perhatikan contoh berikut ini.

Hasilnya masih sama seperti menggunakan while. 


Control Statement

Ketika melakukan perulangan, ada yang namanya control statement. Control statement berfungsi untuk menghentikan eksekusi kode. Beberapa statement yang masuk ke dalam kategori control statement adalah break dan continue. Pada contoh yang diberikan sebelumnya, mungkin Anda sudah ngeh bahwa kita menggunakan break statement. Untuk lebih detail, ikuti pembahasan berikut ini.

Break

Break statement adalah cara kita untuk memberitahukan interpreter yang sedang mengeksekusi kode untuk berhenti dan langsung berpindah ke akhir dari percabangan atau perulangan. Perhatikan contoh berikut.

Kode di atas akan mencetak angka 0 hingga sepuluh kali, tetapi akan terhenti ketika nilai variabel i sama dengan 5. Hal ini disebabkan oleh adanya statement break. Break akan menghentikan proses perulangan. 

Contoh lainnya adalah penggunaan break pada switch case statement.

Di saat kondisi case terpenuhi maka program akan berhenti dan tidak akan melakukan pengecekan pada case berikutnya.


Continue

Continue statement sama seperti break statement. Namun, alih-alih menghentikan eksekusi program, continue akan melanjutkan iterasi ke iterasi berikutnya. Continue statement hanya dapat digunakan di dalam body looping. Perhatikan contoh berikut ini.

Looping akan berjalan seperti biasa. Namun, ketika nilai variabel i sama dengan 5, iterasi akan dihentikan dan lanjut ke iterasi berikutnya sehingga di terminal/console tidak akan menampilkan angka 5. Untuk mencoba hal itu, Anda dapat menjalankan interactive kode di atas.

Error Handling

Sepandai-pandainya tupai melompat, akan jatuh juga. Sebaik apa pun kita menulis program, suatu saat akan terjadi error. Error yang terjadi bisa berasal dari expected error (error yang terduga) dan unexpected error (error yang tidak terduga). 

Error yang dibiarkan dan tidak ditangani akan menyebabkan crash pada program yang dibangun. JavaScript memiliki cara untuk menangani error tersebut yang disebut dengan error handling. Error handling dapat mencegah crash pada program ketika terjadi error yang disebabkan oleh kesalahan syntax atau error lainnya.


Throwing Error

Saat terjadi error, sinyal yang disebut dengan exception akan bangkit. Cara lain untuk membuat exception adalah menggunakan keyword throw untuk generate sebuah error. Sintaks dasarnya adalah seperti berikut.

  1. throw <objek error>

JavaScript memiliki built-in constructor untuk standar error meliputi Error, SyntaxError, dan sebagainya.  Perhatikan contoh berikut ini.

Pada contoh di atas, kita menggunakan built-in constructor milik JavaScript, Error. Kenapa kita perlu membangkitkan exception secara sengaja? Jawabannya adalah karena kita ingin program yang dibangun tidak mengalami crash ketika terjadi sesuatu di luar dugaan.

Misalnya, kita memiliki program yang menerima inputan pembayaran dari pembeli. Normalnya adalah jumlah yang dibayarkan harus lebih besar dari harga barang. Lalu, ada sebuah kasus dimana pembeli membayar lebih kecil dari harga barang. Hal ini akan menyebabkan error di program milik kita. Oleh karena itu, kita perlu throw error ketika pembayaran kurang dari harga barang seperti contoh berikut.

Contoh di atas akan membangkitkan error. Lalu, bagaimana caranya untuk menangani error yang telah dibangkitkan? Caranya adalah menggunakan konsep Catching Error.


Catching Error

Sebelumnya, Anda sudah tahu cara untuk membangkitkan error. Kini, saatnya Anda mengetahui cara untuk menangkap error yang dihasilkan oleh program JavaScript yang Anda tulis.

Try-Catch

Try-catch merupakan cara yang dimiliki JavaScript untuk menangani error. Try-catch memiliki dua blok utama yaitu try dan catch. Try merupakan blok kode yang akan menangani error, sedangkan catch merupakan blok kode yang dibangkitkan ketika terjadi error di dalam blok try. Perhatikan struktur dari try-catch berikut.

  1. try {
  2.   // code...
  3. } catch (err) {
  4.   // error handling
  5. }

Blok kode catch akan diabaikan ketika tidak ada error yang terjadi di dalam blok try. Oleh karena itu, tulislah kode yang berpotensi error di dalam blok try. Perhatikan contoh berikut ini.

Kode tersebut tidak akan mengeksekusi kode di dalam blok catch. Jika ingin blok kode catch dieksekusi, tambahkan error di dalam blok try. Perhatikan contoh berikut ini.

Catatan
Ketika error dibangkitkan, kode yang ada di bawahnya tidak akan tereksekusi. Pada kasus ini, program akan langsung lompat ke blok catch.

Supaya Anda lebih memahami terkait try-catch, cermati diagram berikut. 

dos-fae0a2008fb11576dd10eef9329beb7f20240802135024.jpeg


Finally

Finally adalah blok kode yang berada di akhir try-catch. Bilamana catch dieksekusi hanya ketika ada error di dalam blok try, blok yang ada di finally akan selalu dieksekusi. Simak contoh di bawah ini.

Ketika dijalankan, akan tampil di terminal/console yang mencetak tulisan “Ini try block“ dan “Ini finally block”. Dengan menggunakan finally, ia tidak peduli apakah blok try memiliki error atau tidak. 

Implementasi Flow Control

Rasanya ada yang kurang ketika sudah mengetahui teori flow control “sang pengendali program” tanpa mengimplementasikan flow control. Di materi kali ini, kita akan lihat seperti apa penerapan flow control di sebuah program JavaScript sederhana.  

Misalnya, Anda ingin membuat program untuk mengetahui predikat berdasarkan nilai yang dimasukkan. Perhatikan kode program berikut ini.

Pada contoh di atas, function checkGrades akan menerima input berupa array of number. Di dalamnya, perulangan akan dilakukan untuk mendapatkan masing-masing nilai di dalam array grades. Selanjutnya akan ada percabangan dengan if untuk menagani exceptions ketika grades bukanlah number.

Selanjutnya, akan ada pengecekan if bersarang untuk mengembalikan predikat dari nilai. Contohnya, ketika nilai lebih dari 90, predikat akan bernilai A. Setelah itu, nilai dan predikatnya akan ditampilkan di terminal/console.

Try-Catch digunakan untuk menangani exception ketika function checkGrades error. Di saat function checkGrades menerima argument berupa string, maka blok catch akan dibangkitkan dan menampilkan pesan error di terminal/console.

Tak terasa kita sudah di penghujung materi. Kini, Anda sudah mengetahui bagaimana alur program berjalan, bahkan Anda sudah menguasai cara menangani error. Selanjutnya kita akan bahas tentang modularisasi!

Program Rangkuman Sang Pengatur

Selamat! Anda sudah berada di penghujung modul Program Sang Pengatur. Mari kita uraikan materi yang sudah Anda pelajari untuk mengingat memori Anda tentang materi tersebut.


Kontrol Aliran

Sebuah program JavaScript akan memiliki lebih dari satu ekspresi dan pernyataan . Apa yang terjadi jika program memiliki lebih dari satu ekspresi dan pernyataan? Jawabannya adalah program akan menjalankan pernyataan berurutan dari atas ke bawah (secara sekuensial).

  1. konstanta angka = 100 ;
  2. konsol.log ( angka ) ;

Komputer akan menjalankan baris pertama yaitu menginisiasi variabel bilangan . Kemudian, komputer akan menjalankan baris selanjutnya untuk mencetak nilai variabel nomor di konsol atau terminal . Jika kita gambarkan alurnya, akan menjadi seperti berikut ini.

dos-4d5df93212d52b95d48458ebb6471e8620240802151931.jpeg

Jadi, flow control adalah urutan bagaimana ekspresi dan pernyataan dijalankan oleh komputer berdasarkan kondisi dan logika tertentu (yang akan kita bahas di modul ini). Kontrol aliran memungkinkan programmer untuk membuat program yang dinamis, menjalankan perintah yang berulang dan menangani berbagai macam kondisi berdasarkan input dari pengguna. Tak peduli Anda membangun aplikasi web sederhana, aplikasi mobile atau aplikasi kompleks, flow control penting untuk dipelajari karena ia merupakan dasar dari bahasa pemrograman.


Bersyarat

Sepintas mungkin akan terlintas di benak Anda, apakah komputer selalu mengeksekusi kode dari atas ke bawah? Jawabannya adalah tidak. Tidak semua program berjalan lurus seperti jalan tol. Seperti contoh kasus sebelumnya (memesan makanan secara berani), kode program tidak akan dieksekusi semuanya ketika dijalankan. Kode program akan menjadi dua alur atau lebih. Kode akan dieksekusi tergantung dari kondisi yang ditetapkan dan ini disebut dengan conditional flow.

dos-c57b01b923a7bb8dba2a8244f58691dd20240802151929.jpeg

Aliran bersyarat adalah cara untuk menentukan apakah kode dieksekusi atau dilewatkan. Jika suatu kondisi terpenuhi, kode akan dieksekusi dan kode lainnya akan diabaikan. Kondisi ini ditentukan dari inputan yang diberikan oleh pengguna.


Pengulangan

Ketika Anda memprogram, ada banyak sekali instruksi yang Anda tulis untuk dieksekusi oleh komputer. Misalnya, Anda ingin mencetak semua nama makanan yang ada di list pada terminal/console seperti berikut.

  1. const food = [ 'Nasi Goreng' , 'Pasta' , 'Sate' ];
  2. konsol . log ( makanan [ 0 ]);
  3. konsol . log ( makanan [ 1 ]);
  4. konsol . log ( makanan [ 2 ]);

Hal tersebut memang memungkinkan, tetapi tidak praktis karena melakukan hal yang sama berulang kali. Lebih tidak praktis lagi ketika list makanan tersebut berisi data 10 makanan atau bahkan 100 makanan. Sudah terbayang kan? Repot dan tidak praktisnya menulis kode secara berulang.

Untuk menghindari hal itu, perkenalkan inilah looping . Looping  (perulangan) adalah pernyataan yang memungkinkan kita mengeksekusi kode yang sama secara berulang. Di JavaScript terdapat banyak jenis perulangan, seperti  for loop, for in, for of, while,  dan  do- while .


Penanganan Kesalahan

Sepandai-pandainya tupai melompat, akan jatuh juga. Baik apa pun kita menulis program, suatu saat akan terjadi error. Kesalahan yang terjadi bisa berasal dari kesalahan yang diharapkan (error yang tidak terduga) dan kesalahan yang tidak terduga (error yang tidak terduga). 

Error yang dibiarkan dan tidak ditangani akan menyebabkan crash pada program yang dibangun. JavaScript memiliki cara untuk menangani error tersebut yang disebut dengan error handling. Error handling dapat mencegah crash pada program ketika terjadi error yang disebabkan oleh kesalahan sintaksis atau error lainnya.


Melempar Kesalahan

Saat terjadi kesalahan, sinyal yang disebut pengecualian akan bangkit. Cara lain untuk membuat pengecualian adalah menggunakan kata kunci throw untuk menghasilkan kesalahan. Sintaks dasarnya adalah seperti berikut.

  1. lempar < kesalahan objek >

JavaScript memiliki konstruktor bawaan untuk kesalahan standar meliputi Error, SyntaxError, dan sebagainya. Perhatikan contoh berikut ini.

  1. const error = new Error ( 'Terjadi error' );
  2. konsol.kesalahan ( kesalahan ) ;


Coba Tangkap

Try-catch merupakan cara yang dimiliki JavaScript untuk menangani error. Try-catch memiliki dua blok utama yaitu try dan catch. Try merupakan blok kode yang akan menangani error, sedangkan catch merupakan blok kode yang dibangkitkan ketika terjadi error di dalam blok try.

Akhirnya

Akhirnya adalah blok kode yang berada di akhir try-catch. Bilamana catch dieksekusi hanya ketika ada error di dalam blok try, blok yang ada di akhirnya akan selalu dieksekusi. Simak contoh di bawah ini.

  1. mencoba {
  2.   console.log ( 'Blok percobaan ini ' ) ;
  3. } tangkap ( kesalahan ) {  
  4.   console.log ( ' Blok tangkap ini' ) ;
  5. } Akhirnya {  
  6.   console.log ( 'Blok finally ini ' ) ;
  7. }


Implementasi Kontrol Aliran

Rasanya ada yang kurang ketika sudah mengetahui teori flow control “sang pengontrol program” tanpa mengimplementasikan flow control. Pada materi kali ini, kita akan melihat seperti apa penerapan flow control di sebuah program JavaScript sederhana.  

Misalnya, Anda ingin membuat program untuk mengetahui predikat berdasarkan nilai yang dimasukkan. Perhatikan kode program berikut ini.

  1. fungsi checkGrades ( nilai ) {
  2.   untuk ( biarkan  i = 0 ; i < nilai.panjang ; i ++ ) { 
  3.     jika ( tipe  nilai [ i ] !== 'angka' ) {   
  4.       throw new Error ( 'Input tidak valid. Harap berikan array angka.' );  
  5.     }
  6.     konstanta  nilai = nilai [ i ];
  7.     misalkan  predikat ;
  8.     jika ( nilai >= 90 ) { 
  9.       predikat = 'A' ; 
  10.     } jika ( nilai > = 80 ) {   
  11.       predikat = 'B' ; 
  12.     } jika ( nilai > = 70 ) {   
  13.       predikat = 'C' ;
  14.     } jika ( nilai >= 60 ) {
  15.       predikat = 'D' ;
  16.     } kalau tidak {
  17.       predikat = 'E' ;
  18.     }
  19.     console.log ( `Nilai ${i + 1}: ${grade} ( ${predicate})` ) ;
  20.   }
  21. }
  22. Cobalah {
  23.   konstanta nilai siswa = [ 95 , 85 , 65 , 80 , 70 ];
  24.   periksaNilai ( nilai siswa );
  25. } tangkap ( e ) {
  26.   konsol.error ( e ) ;
  27. }

Bersambung ke: 

Pengantar Modular


 Harmonis Modularisasi Harmonis



Comments