Programming Language Concept Session 6
- Control structure merupakan suatu pernyataan mengontrol (control statement) dan pernyataan yang eksekusinya dikendalikan
Selection Statement
- Selection statement menyediakan cara untuk memilih antara dua atau lebih jalan eksekusi
- Dua kategori umum:
– Two-way selector
– Multiple-way selector
Two-way selection statement
- Bentuk umum
if control_expression
then clause
else clause
- Control Expression
– Jika reserved word then atau penanda sintaktik lain tidak digunakan untuk memperkenalkan klausa then, maka control expression diletakkan didalam kurung (parentheses)
– Di C89, C99, Python, dan C++, control expression dapat berupa aritmatika
– Di kebanyakan bahasa lain, control expression harus berupa Boolean - Bentuk klausa
– Di banyak bahasa kontemporer, klausa then dan else dapat berupa satu pernyataan atau compound statement
– Di Perl, semua klausa harus dibatasi dengan kurung kotak (brace), artinya harus berupa compound
– Di Fortran 95, Ada, Python, dan Ruby, klausanya berupa rentetan pernyataan - Nesting Selector
– Disebut nesting karena ada selector didalam selector
– Contoh:if (sum == 0)if (count == 0)result = 0;else result = 1;- Contoh diatas dapat dikatan ambigu karena klausa else bergantung pada aturan semantic dari bahasa tersebut. Misal di Java, else diatas akan dipasangkan dengan if sebelumnya yang paling dekat
– Untuk solusi nested selector yang ambigu, di bahasa C, C++, dan C# menggunakan compound statement, seperti:
if (sum == 0) {
if (count == 0)
result = 0;
}
else result = 1;
Multiple-Way Selection Statement
- Multiple-selection memperbolehkan satu selection dengan pernyataan berapapun
- Beberapa bahasa dapat menggunakan switch-case, contoh di C, C++, Java:
switch (index) {
case 1:
case 3: odd += 1;
sumodd += index;
break;
case 2:
case 4: even += 1;
sumeven += index;
break;
default: printf(“Error in switch, index = %d\n”, index);
}
– Control expression hanya dapat bertipe integer
– Segmen yang dapat dipilih dapat berupa rentetan pernyataan, block, atau compound statement
– Segmen angka berapapun dapat dieksekusi di satu eksekusi construct
– Klausa default digunakan untuk nilai yang tidak disajikan
- Berbeda dengan C, di C#:
– Tidak memperbolehkan eksekusi implisit lebih dari satu segmen
– Tiap segmen harus diakhiri dengan unconditional branch (goto atau break)
– Control expression dan case constant dapat berupa string
- Multiple selector dapat muncul sebagai ekstensi langsung dari two-way selector, menggunakan klausa else-if, contoh di Python:
if count < 10 :
bag1 = True
elif count < 100 :
bag2 = True
elif count < 1000 :
bag3 = True
Iterative Statement
- Iterative statement merupakan pernyataan yang menyebabkan suatu pernyataan atau kumpulan pernyataan dieksekusi nol, satum atau lebih kali
- Iterative statement juga dikenal sebagai loop
- Ada dua macam iterative statement, counter-controlled loop dan logically controlled loop
- Counting iterative statement (seperti for) memiliki suatu variable loop, dan suatu alat untuk menjelaskan nilai awal (initial) dan terminal, dan stepsize
- Contoh counter controller loop di Ada:
Count : Float := 1.35;
for Count in 1..10 loop
Sum := Sum + Count;
end loop;
- Counter controlled loop di bahasa berbasis C:
– Bentuk umum:
for ([expr_1] ; [expr_2] ; [expr_3]) statement
– Nilai dari suatu ekspresi multiple-statement merupakan nilai dari pernyataan terakhir di ekspresi tersebut
– Jika ekspresi kedua tidak ada, maka akan terjadi infinite loop
– C++ berbeda dengan C dalam dua hal, control expression dapat berupa Boolean, ekspresi awal dapat memasukkan definisi variable
– Control expression di Java dan C# harus berupa Boolean - Logically controlled loop didasarkan dari ekspresi Boolean, bukan suatu penambahan (counter)
- C dan C++ memiliki bentuk pretest (di cek dulu) dan posttest(jalankan baru dicek), sehingga control expressionnya dapat berupa aritmatika:
Pretest:
while (control_expression)
loop body
Postest:
do
loop body
while (control_expression);
- Java mirip dengan C dan C++, namun control expressionnya harus berupa Boolean
- Terkadang lebih mudah ketika programmer dapat memilih lokasi untuk loop control, mekanisme ini dinamakan user-located loop control (misal break), contoh:
while (sum < 1000) {
getnext(value);
if (value < 0) break;
sum += value;
}
Sumber:
- Concept of Programming Languages 10th. Ed / Robert W. Sebesta (Chapter 8)
- Control Structure Statement / Binus Powerpoint Presentation