Bab. 2 Program Terstruktur
Tujuan
Instruksional
|
|
·
Statemen seleksi if.
·
Statemen seleksi if...else.
|
·
Statemen repetisi while.
·
Operator penugasan.
|
2.1 Statemen Seleksi if
Struktur seleksi if dipakai untuk memilih beberapa alternatif aksi yang akan
dilakukan program. Sebagai contoh, dimisalkan bahwa nilai batas kelulusan pada
sebuah ujian adalah 60. Statemen pseudocode
Jika nilai mahasiswa
lebih dari atau sama dengan 60
Tampilkan “Lulus”
menentukan jika kondisi “nilai
mahasiswa lebih dari atau sama dengan 60” bernilai false atau true. Jika kondisi
bernilai true, maka “Lulus” akan ditampulkan, dan
statemen berikutnya akan dieksekusi. Sebaliknya, jika kondisi bernilai false, maka statemen untuk menampilkan “Lulus” akan diabaikan,
dan statemen berikutnya yang akan dieksekusi.
Statemen pseudocode if tersebut dapat ditulis dalam C sebagai
if ( nilai >= 60 ) {
printf( "Lulus\n" );
} /* akhir if */
Gambar 2.1 | Diagram alir statemen if seleksi-tunggal
Diagram alir pada Gambar 2.1
mengilustrasikan statemen if
seleksi-tunggal. Diagram alir ini memuat apa yang dikenal sebagai simbol
diagram alir yang paling penting, yaitu simbol diamond, yang juga dikenal
dengan simbol keputusan untuk mengindikasikan bahwa suatu keputusan harus
dibuat. Simbol keputusan memuat sebuah ekspresi, seperti kondisi, yang bisa
bernilai true atau false. Simbol keputusan memiliki dua garis-alir keluar. Satu garis-alir
mengindikasikan arah yang akan ditempuh jika ekspresi di dalam simbol bernilai true; yang lain mengindikasikan arah yang akan ditempuh ketika
ekspresi bernilai false. Keputusan
dibuat didasarkan pada kondisi yang memuat operator relasional dan operator
ekualitas. Namun, pada kenyataannya, keputusan bisa dibuat didasarkan pada
sembarang ekspresi, jika ekspresi memiliki nilai evaluasi nol, maka akan
dipandang sebagai false, dan jika hasil
evaluasinya bernilai tak-nol, maka akan diperlakukan sebagai true.
2.2 Statemen Seleksi if...else
Statemen seleksi if melakukan sebuah aksi hanya ketika kondisi bernilai true; sebaliknya aksi tersebut diabaikan. Statemen seleksi if...else memampukan Anda untuk menspesifikasi
dua kondisi berbeda ketika kondisi bernilai true dan ketika kondisi bernilai false.
if nilai lebih dari atau sama dengan 60
Tampilkan “Lulus”
else
Tampilkan “Gagal”
menampilkan “Lulus” jika nilai
mahasiswa lebih dari atau sama dengan 60 dan menampilkan “Gagal” jika nilai
mahasiswa kurang dari 60. Statemen pseudocode if...else tersebut dapat ditulis dalam C sebagai
if ( nilai >= 60 ) {
printf( "Lulus\n" );
} /* end if */
else {
printf( "Gagal\n" );
} /* akhir else */
Diagram alir pada Gambar 2.2
mengilustrasikan aliran kendali di dalam statemen if...else. Perhatikan kembali
bahwa (selain lingkaran kecil dan anak panah) dua jenis simbol yang ada pada
diagram alir adalah persegi-panjang (untuk aksi) dan diamond (untuk keputusan).
Gambar 2.2 | Diagram alir statemen if...else seleksi-ganda
C menyediakan operator kondisional (?:) yang sangat berelasi dengan statemen if...else. Operator kondisional ini memerlukan
tiga operand. Operand pertama adalah sebuah kondisi. Operand kedua adalah nilai
dari ekspresi jika kondisi bernilai true dan operand
ketiga adalah nilai dari ekspresi jika kondisi bernilai false. Sebagai contoh,
printf( "%s\n", nilai >= 60 ? "Lulus" : "Gagal" );
memuat sebuah ekspresi kondisional yang
mengevaluasi literal string “Lulus” jika kondisi nilai >= 60 bernilai true dan yang
mengevaluasi literal string “Gagal” jika kondisi nilai >= 60 bernilai false. String kendali
format pada printf memuat
penspesifikasi konversi %s untuk
menampilkan sebuah string.
Operand kedua dan operand ketiga di
dalam ekspresi kondisional dapat pula berupa aksi yang akan dieksekusi. Sebagai
contoh, ekspresi kondisional
nilai >= 60 ? printf( "Lulus\n" ) : printf( "Gagal\n" );
dibaca sebagai “Jika nilai lebih besar dari atau sama dengan 60 maka
eksekusi printf(“Lulus\n”), sebaliknya eksekusi printf(“Gagal\n”).
2.3 Statemen Seleksi if...else
Bersarang
Statemen seleksi if...else bersarang untuk beberapa kasus
dilakukan dengan menempatkan statemen if...else di dalam statemen if...else lain. Sebagai
contoh, pseudocode berikut akan
menampilkan A untuk nilai lebih besar atau sama dengan 90, B untuk nilai lebih
besar atau sama dengan 80, C untuk nilai lebih besar atau sama dengan 70, D
untuk nilai lebih besar atau sama dengan 60, dan F untuk semua nilai lainnya.
If nilai
mahasiswa lebih besar dari atau sama dengan 90
Print “A”
else
If nilai mahasiswa lebih besar dari
atau sama dengan 90
Print “B”
else
If nilai mahasiswa lebih besar dari
atau sama dengan 70
Print “C”
else
If nilai mahasiswa lebih besar dari
atau sama dengan 60
Print “D”
else
Print “F”
Pseudocode tersebut dapat
dituliskan dalam C sebagai
if ( nilai >= 90 )
printf( "A\n" );
else
if (nilai >= 80 )
printf("B\n");
else
if (nilai >= 70 )
printf("C\n");
else
if
(nilai >= 60 )
printf( "D\n" );
else
printf( "F\n" );
Banyak programer C lebih nyaman
menuliskannya sebagai
if ( nilai >= 90 )
printf( "A\n" );
else if (nilai >= 80 )
printf( "B\n" );
else if (nilai >= 70 )
printf( "C\n" );
else if (nilai >= 60 )
printf( "D\n" );
else
printf( "F\n" );
Statemen seleksi if tidak hanya bisa memuat satu statemen di dalam tubuhnya.
Untuk mencantumkan beberapa statemen di dalam tubuh suatu statemen if, sepasang kurung kurawal ({ dan }) dipakai untuk
mangapitnya. Himpunan statemen yang diapit tersebut dikenal dengan blok atau
statemen gabungan.
Contoh berikut mencantumkan statemen
gabungan di bagian else dari suatu
statemen if...else.
if ( nilai >= 60 ) {
printf( "Lulus.\n" );
} /* akhir if */
else {
printf( "Gagal.\n" );
printf( "Anda harus
mengulang matakuliah ini.\n" );
} /* akhir else */
2.4 Statemen Repetisi while
Perhatikan statemen repetisi while berikut:
hasil = 3;
while ( hasil <= 100 ) {
hasil = 3 * hasil;
} /* akhir while */
Diagram alir pada Gambar 2.3
mengilustrasikan kendali alir di dalam repetisi while. Garis alir yang keluar dari simbol persegi-panjang menuju kembali ke
simbol keputusan, yang diuji setiap kali melalui loop sampai keputusan akhirnya
bernilai false. Pada titik ini, statemen while keluar dan kendali bergerak ke statemen berikutnya di dalam
program.
Gambar 2.3 | Diagram alir repetisi while
Ketika kendali masuk ke statemen while, nilai dari hasil adalah 3.
Variabel hasil secara berulang dikalikan dengan 3,
menghasilkan nilai 9, 27, dan 81. Ketika hasil menjadi 243, kondisi di dalam statemen while, hasil <= 1000, menjadi false. Hal ini menghentikan repetisi, dan nilai akhir hasil adalah 243. Program kemudian berlanjut untuk mengeksekusi
statemen setelah while.
2.5 Studi Kasus
Akan digunakan repetisi
terkendali-kounter untuk membaca beberapa nilai yang dimasukkan pengguna.
Teknik ini menggunakan sebuah variabel kounter untuk menentukan berapa kali
sehimpunan statemen harus dieksekusi. Pada contoh ini, repetisi berhenti ketika
kounter melebihi 10. Pseudocode akan
disajikan dan program C terkait diberikan pada Gambar 2.4. Repetisi
terkendali-kounter sering dikenal dengan repetisi pasti karena jumlah repetisi
telah diketahui sebelum loop mulai dieksekusi. Berikut adalah pseudocode yang
ingin direalisasikan:
Tetapkan total menjadi nol
Tetapkan kounter nilai menjadi satu
while kounter nilai kurang dari atau sama
dengan 10
Masukkan nilai berikutnya
Tambahkan nilai ke total
Tambahkan satu kepada kounter nilai
Tetapkan rata-rata kelas dengan membagi total
dengan sepuluh
Tampilkan rata-rata kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/* Gambar 2.4: gambar02_04.c
Program untuk menghitung rata-rata kelas */
#include <stdio.h>
/* fungsi main untuk memulai eksekusi */
int main( void )
{
int
kounter; /* jumlah nilai yang akan dimasukkan */
int
nilai; /* nilai */
int
total; /* total nilai yang dimasukkan pengguna */
int
rata_rata; /* rata-rata nilai */
/*
inisialisasi */
total = 0; /* menginisialisasi total */
kounter = 1; /* menginisialisasi kounter loop */
/*
pemrosesan */
while
(kounter <= 10) { /* loop 10 kali */
printf( "Masukkan nilai: " ); /* meminta pengguna
untuk masukan */
scanf( "%d", &nilai ); /* membaca nilai dari pengguna */
total = total + nilai; /* menambahkan nilai kepada total */
kounter = kounter + 1; /* menginkremen kounter */
} /*
akhir while */
/*
penghentian */
rata_rata = total / 10; /* pembagian integer */
printf( "Rata-rata kelas adalah %d\n", rata_rata ); /* menampilkan hasil */
return
0; /* indikasi terminasi sukses */
} /* akhir fungsi main */
|
Masukkan nilai: 98
Masukkan nilai: 76
Masukkan nilai: 71
Masukkan nilai: 87
Masukkan nilai: 83
Masukkan nilai: 90
Masukkan nilai: 57
Masukkan nilai: 79
Masukkan nilai: 82
Masukkan nilai: 94
Rata-rata kelas adalah 81
Gambar 2.4 | Program menghitung
rata-rata kelas
Soal
1. Identifikasi
dan koreksi error pada tiap kasus berikut:
a) while ( c
<= 5 ) {
hasil *= c;
++c;
b) scanf(
"%.4f", &nilai );
c) if (
gender == 1
)
printf( "Wanita\n" );
else;
printf( "Pria\n" );
2. Identifikasi
dan koreksi error pada tiap kasus berikut:
a) if ( usia
>= 65 );
printf( "Usia lebih dari atau sama dengan
65\n" );
else
printf( "Usia kurang dari 65\n" );
b) int x =
1, total;
while ( x <= 10 ) {
total += x;
++x;
}
c) While ( x
<= 100 )
total += x;
++x;
d) while ( y
> 0 ) {
printf( "%d\n", y );
++y;
}
3. Apakah yang
dilakukan program ini?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main( void )
{
int x = 1, total = 0, y;
while ( x <= 10 ) {
y = x * x;
printf( "%d\n",
y );
total += y;
++x;
} /* akhir while */
printf("Total adalah %d\n",
total);
return 0;
}
/* akhir main */
|
4. Apakah yang
ditampilkan program ini?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <stdio.h>
int main( void )
{
int hitung = 1; /* inisialisasi hitung */
while (hitung <= 10
) { /* loop 10 kali */
/* menampilkan sebaris teks */
printf( "%s\n",
hitung % 2 ? "****" :
"++++++++" );
hitung++; /* menginkremen hitung */
} /* akhir while */
return 0; /* indikasi terminasi sukses */
} /* akhir fungsi main */
|
No comments:
Post a Comment