1.4 Struktur Kawalan
Struktur kawalan ialah mekanisme dalam pengaturcaraan yang menentukan aliran pelaksanaan arahan dalam sesuatu atur cara. Berbeza dengan arahan linear yang dilaksanakan satu demi satu mengikut urutan, struktur kawalan membolehkan komputer membuat keputusan bercabang atau mengulang sesuatu blok arahan berkali-kali berdasarkan syarat boolean tertentu.
Objektif Pembelajaran
- Menerangkan aliran struktur kawalan pilihan:
if-elsedanswitch-case. - Menulis atur cara menggunakan struktur kawalan pilihan dengan menggabungkan operator hubungan dan operator logik.
- Menerangkan aliran struktur kawalan ulangan:
for,whiledando-while. - Menulis atur cara menggunakan struktur kawalan ulangan yang melibatkan operator increment (
++) dan decrement (--), Class Math (methodrandom()), dan boolean (flag).
Perbandingan Carta Alir Kawalan Ulangan: while vs do-while
Kedudukan rombus ujian syarat boolean menentukan sama ada ujian dilakukan sebelum (pre-test) atau selepas (post-test) blok arahan dilaksanakan.
Gelung while — ujian sebelum blok
Syarat diuji dahulu; blok mungkin tidak dilaksanakan langsung.
Gelung do-while — ujian selepas blok
Blok dilaksanakan dahulu; jaminan sekurang-kurangnya 1 kali.
Penerangan Ringkas
Struktur kawalan pilihan, operator hubungan dan logikal, serta struktur kawalan ulangan dalam Java.
Pengenalan struktur kawalan
Kawalan urutan melaksanakan arahan satu demi satu secara linear. Kawalan pilihan membuat keputusan secara automatik berasaskan penilaian syarat. Kawalan ulangan mengulang blok penyataan beberapa kali sama ada berasaskan pembilang atau berasaskan syarat.
Jenis data boolean hanya mempunyai dua nilai yang mungkin: true (Benar / Ya) atau false (Palsu / Tidak). Nilai boolean dicipta berasaskan sistem binari oleh George Boole dan digunakan dalam penyataan bersyarat untuk menguji input atau nilai pemboleh ubah bagi menentukan cabang tindakan seterusnya.
Struktur kawalan pilihan
if
Melaksanakan blok arahan hanya sekiranya syarat boolean yang dinilai adalah true. Jika false, tiada tindakan susulan dalam blok diambil dan aliran terus ke penyataan berikutnya.
if-else
Menyediakan dua cabang tindakan: blok pertama dilaksanakan jika syarat true, dan blok else dilaksanakan jika syarat false.
if (<syarat Boolean>) {
<Arahan-arahan jika Benar>
}
if (<syarat Boolean>) {
<Arahan-arahan jika Benar>
} else {
<Arahan-arahan jika Palsu>
}
if-else-if
Digunakan untuk membuat keputusan yang lebih kompleks dengan menguji berbilang syarat secara berturutan. Komputer menguji syarat pertama; jika palsu, ia mencuba syarat kedua, dan seterusnya. Sebaik sahaja satu syarat benar ditemui, bloknya dilaksanakan dan baki syarat lain tidak diuji.
if (syarat_boolean1) {
penyataan01;
} else if (syarat_boolean2) {
penyataan02;
} else {
penyataan03;
}
switch-case
Digunakan untuk menggantikan struktur if-else-if yang panjang bagi mengelakkan kerumitan dan kekeliruan. Ia memadankan nilai ujian ungkapan (nombor, abjad, rentetan) dengan calon-calon case.
Pernyataan break berfungsi untuk memberhentikan pelaksanaan dan melompat keluar daripada blok switch. Jika tertinggal, pelaksanaan diteruskan ke case seterusnya. Bahagian default ialah pilihan tambahan yang dilaksanakan sekiranya tiada nilai case yang sepadan dengan nilai ujian.
switch (ujian) {
case nilai1: {
kumpulan penyataan 1;
break;
}
case nilai2: {
kumpulan penyataan 2;
break;
}
default: {
kumpulan penyataan lalai;
}
}
Operator hubungan dan operator logikal
| Operator | Makna |
|---|---|
== | Sama dengan |
!= | Tidak sama dengan |
> | Lebih besar daripada |
>= | Lebih besar daripada atau sama dengan |
< | Kurang daripada |
<= | Kurang daripada atau sama dengan |
AND (&&)
Menghasilkan true HANYA jika SEMUA syarat yang digabungkan adalah benar. Contoh: markah >= 0 && markah <= 100.
OR (||)
Menghasilkan true jika SEKURANG-KURANGNYA SATU syarat adalah benar. Contoh: celcius > 37 || fahrenheit > 98.6.
NOT (!)
Menukarkan nilai boolean kepada lawannya: true menjadi false, dan sebaliknya. Contoh: !lulus bermaksud murid gagal.
Struktur kawalan ulangan
Ulangan berasaskan pembilang: for
Digunakan apabila bilangan ulangan telah diketahui dengan jelas. Tiga komponen utama dalam kepala gelung for ialah pemula (contoh: int i = 1;), penamat (contoh: i <= 10;), dan penambah / pengemaskinian (contoh: i++ atau i += 1).
for (pemula; penamat; penambah) {
<Blok penyataan yang perlu diulang>
}
Ulangan berasaskan syarat: while
Membuat ujian syarat boolean TERLEBIH DAHULU (pre-test). Jika syarat benar, blok arahan dilaksanakan; jika palsu pada percubaan pertama, blok arahan tidak akan dilaksanakan langsung. Bilangan ulangan minimum ialah 0 kali.
Ulangan berasaskan syarat: do-while
Melaksanakan blok arahan terlebih dahulu SEBELUM menguji syarat boolean (post-test). Ini menjamin blok arahan dilaksanakan SEKURANG-KURANGNYA SEKALI walaupun syarat boolean bernilai palsu pada penilaian pertama.
while (<syarat boolean>) {
<Blok kenyataan berulang>
}
do {
<Blok kenyataan berulang>
} while (<syarat boolean>);
Gelung infiniti dan pernyataan kawalan gelung
Gelung infiniti berlaku apabila pembilang atau syarat tidak dikemas kini di dalam badan gelung. Kata kunci break digunakan untuk keluar serta-merta dari struktur gelung atau switch. Kata kunci continue melangkau baki arahan dalam lelaran semasa dan meneruskan gelung ke lelaran berikutnya.
Operator increment, decrement, Class Math, dan bendera boolean
Increment (++) dan decrement (--)
Tokok 1: i++ atau i += 1 atau i = i + 1. Susut 1: i-- atau i -= 1 atau i = i - 1.
Prefix (++i, --i) ditokok/disusut sebelum nilai pemboleh ubah digunakan dalam ungkapan. Postfix (i++, i--) ditokok/disusut selepas nilai pemboleh ubah digunakan dalam ungkapan.
Math.random()
Menjana nombor perpuluhan rawak antara 0.0 (inklusif) sehingga 1.0 (eksklusif) berpandukan waktu sistem sebagai benih (seed).
Formula menukar julat kepada nombor bulat: julat 1 hingga 10 ialah (int)(Math.random() * 10) + 1; julat 1 hingga 100 ialah (int)(Math.random() * 100) + 1; julat 1 hingga 6 (dadu) ialah (int)(Math.random() * 6) + 1.
Bendera boolean (Boolean Flag)
Pemboleh ubah boolean, contohnya boolean flag = true;, digunakan untuk mengawal gelung do-while atau while berdasarkan input pengguna. Contohnya pengguna memasukkan input "ya" untuk meneruskan atau "tidak" untuk menghentikan gelung.
Cuba Jawab Dulu
Cuba jawab sendiri dahulu, kemudian tekan butang untuk menyemak.
Apakah perbezaan utama antara struktur kawalan ulangan while dengan do-while dari segi pelaksanaan blok arahannya?
Gelung while menguji syarat boolean terlebih dahulu sebelum blok arahan dilaksanakan, jadi blok mungkin tidak dilaksanakan langsung jika syarat palsu. Gelung do-while melaksanakan blok arahan terlebih dahulu sebelum menguji syarat boolean, menjamin pelaksanaan sekurang-kurangnya sekali.
Tuliskan ungkapan Java menggunakan Math.random() untuk menjana satu nombor bulat rawak bagi balingan dadu enam muka (nombor 1 hingga 6).
(int)(Math.random() * 6) + 1
Apakah output bagi segmen kod berikut jika nilai markah = 75?
if (markah >= 80)
System.out.println("Cemerlang");
else if (markah >= 70)
System.out.println("Kepujian");
else
System.out.println("Lulus");Kepujian
Kesalahan Biasa
- Menggunakan satu tanda sama dengan (
=) dalam ungkapan syarat boolean, contohnya menulisif (nombor = 0)dan bukannyaif (nombor == 0). Tanda=ialah operator perumpukan nilai, manakala==ialah operator hubungan untuk membandingkan kesamaan. - Tertinggal arahan
breakdalam strukturswitch-case. Ini menyebabkan atur cara terlajak melaksanakan semua penyataan padacasedi bawahnya (fall-through) walaupun padanan nilai telah selesai. - Lupa mengemas kini pemboleh ubah pembilang atau syarat dalam badan gelung, contohnya tidak meletakkan
i++ataun -= 1di dalam gelungwhile. Ini menyebabkan syarat boolean sentiasa bernilai benar dan atur cara terperangkap dalam gelung infiniti. - Meletakkan tanda koma bertitik (
;) di hujung baris penyataanifatauwhile, contohnyaif (x > 10); { ... }atauwhile (i < 5); { ... }. Koma bertitik menamatkan penyataan tersebut serta-merta dan memisahkan blok arahan daripada syarat kawalan.
Salah Faham Konsep
Gelung while dan gelung do-while sentiasa memberikan output yang sama untuk sebarang syarat awal.
Jika nilai pemula tidak memenuhi syarat boolean sejak awal, gelung while tidak akan dilaksanakan langsung (0 kali), manakala gelung do-while tetap melaksanakan blok arahan sebanyak 1 kali sebelum keluar.
Operator logikal || (OR) memerlukan kedua-dua syarat menjadi benar untuk menghasilkan keputusan benar.
Operator || hanya memerlukan sekurang-kurangnya salah satu syarat bernilai benar untuk menghasilkan keputusan true. Hanya operator && (AND) yang memerlukan semua syarat bernilai benar.
Kaedah Math.random() terus menghasilkan nombor bulat secara automatik.
Math.random() mengembalikan nombor perpuluhan (double) dari julat 0.0 hingga kurang daripada 1.0. Ia perlu didarab dengan saiz julat, ditambah dengan nilai mula, dan ditukar jenis data (type cast) kepada (int).
Ringkasan
- Struktur kawalan terbahagi kepada kawalan urutan, pilihan, dan ulangan.
- Kawalan pilihan membuat keputusan berasaskan data boolean (
true/false) melalui penyataanif,if-else,if-else-if, atauswitch-case. - Gabungan syarat boolean menggunakan operator hubungan (
==,!=,>,<,>=,<=) dan operator logikal (&&,||,!). - Kawalan ulangan
fordigunakan apabila bilangan ulangan diketahui, berasaskan pembilang: pemula, penamat, penambah. - Kawalan ulangan berasaskan syarat terdiri daripada
while(pre-test, minimum 0 lelaran) dando-while(post-test, minimum 1 lelaran). - Tokokan (
++) dan susutan (--) mengemas kini nilai pembilang bagi mengelakkan gelung infiniti, manakala bendera boolean danMath.random()membantu kawalan interaktif dan rawak.
Aktiviti Ringkas
A. Kuiz Objektif
1 Antara struktur kawalan ulangan berikut, yang manakah menjamin bahawa blok arahannya akan dilaksanakan sekurang-kurangnya sekali walaupun syarat boolean bernilai palsu pada penilaian pertama?
2 Apakah output yang dihasilkan jika ungkapan logikal (markah >= 50 && markah <= 100) dinilai apabila nilai pemboleh ubah markah = 105?
B. Isi Tempat Kosong
3 Kata kunci yang digunakan untuk keluar serta-merta daripada sesuatu blok switch atau gelung ialah .
4 Untuk menjana satu nombor rawak bulat antara 1 hingga 10 menggunakan subatur cara Java, ungkapan yang ditulis ialah (int)(Math.random() * ) + 1.
C. Padankan Struktur Kawalan dengan Cirinya
Seret struktur kawalan ke ciri atau sintaks yang tepat. Jika menggunakan telefon, tekan pilihan jawapan dahulu, kemudian tekan kotak padanan.
(pemula ; penamat ; penambah)case