PEMILIHAN
Menganalisis kasus suatu masalah : menentukan kondisi boolean (bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku(memenuhi).
Kondisi Boolean : suatu ekspresi relasional (ekspresi dengan operator relasional) yg bernilai true atau false bergantung pada nilai masing-masing operand yang terlibat di dalamnya.
Aksi yg dikerjakan bila kondisi boolean memenuhi dapat berupa pengisian nilai (assignment), kalkulasi, baca, tulis, dsb.
Penentuan kondisi boolean dan aksi yg dilakukan bergantung pada jumlah kasus yg terdapat pada masalah tsb : satu kasus, dua kasus, atau lebih dari dua kasus.
Tabel Translasi Notasi Algoritmik Pemilihan ke Notasi bahasa Pascal
Kelompok | Algoritmik | Pascal | Ket |
1. IF-THEN | if <kondisi> then aksi endif | if kondisi then aksi; (*endif*) | Bila aksi lebih dari satu : if kondisi then begin aksi1; aksi2; … aksiN;
|
2. IF-THEN- ELSE | if <kondisi> then aksi1 else aksi2 endif | if kondisi then aksi1; else aksi2; (* endif *) | |
3. CASE |
case (nama) <kond1> : aksi1 <kond2> : aksi2 . . . <kondN> : aksiN [otherwise aksiX] | Translasi cara 1 : case nama of nilai1 : aksi1; nilai2 : aksi2; . . . nilaiN : aksiN; [else aksiX] end; | nilai1, nilai2,… adalah nilai yg bertipe integer, char atau boolean. |
Translasi cara 2 : if kondisi1 then aksi1; else
aksi2; else … | Cara ini diterapkan bila kondisi berupa ekspresi yg operatornya bukan '=' atau bila operatornya '=' tetapi tetapan di ruas kanan '=' tidak bertipe integer, char boolean. |
Contoh 1 : Algoritma menentukan sebuah bilangan bulat merupakan bilangan genap
ALGORITMIK
Algoritma BILANGAN_GENAP
{Mencetak pesan "bilangan genap" jika sebuah bilangan bulat yg dibaca dari piranti masukan merupakan bilangan genap}
DEKLARASI
bil : integer
DESKRIPSI
read(bil)
if bil mod 2 = 0 then
write ('bilangan genap')
endif
Pascal
PROGRAM BILANGAN_GENAP ;
( Mencetak pesan "bilangan genap" jika sebuah bilangan bulat yg dibaca dari piranti masukan merupakan bilangan genap )
uses wincrt;
(* DEKLARASI *)
var
bil : integer;
(* DESKRIPSI *)
Begin
writeln ("Ketikkan sembarang bilangan bulat : "); readln(bil);
if bil mod 2 = 0 then
writeln ('bilangan genap');
(*end if *)
end.
Latihan :
Buatlah algoritma dan program dalam bahasa pascal, untuk menentukan bilangan terbesar(maksimum) dari dua buah bilangan!!!
Contoh 2 : Algoritma menentukan nama hari dari nomor harinya
ALGORITMIK
Algoritma NAMA_NAMA_HARI
{ Mencetak nama hari bila diberikan nomornya }
DEKLARASI
NoHari : integer [1..7]
DESKRIPSI
read (NoHari)
case (NoHari)
NoHari=1 : write('Senin')
NoHari=2 : write('Selasa')
NoHari=3 : write('Rabu')
NoHari=4 : write('Kamis')
NoHari=5 : write('Jumat')
NoHari=6 : write('Sabtu')
NoHari=7 : write('Minggu')
otherwise write (' Tidak ada Harinya !!! ')
endcase
PASCAL
PROGRAM
NAMA_ HARI
;
( Mencetak nama hari bila diberikan nomornya )
Uses wincrt;
(* DEKLARASI *)
var
NoBulan : integer ;
(* DESKRIPSI *)
Begin
Write ('Masukkan nomor hari (1-7) : '); readln(NoBulan);
Case NoBulan of
1 : writeln ('Senin');
2 : writeln ('Selasa');
3 : writeln ('Rabu');
4 : writeln ('Kamis');
5 : writeln ('Jumat');
6 : writeln ('Sabtu');
7 : writeln ('Minggu');
else writeln ('Tidak ada Harinya');
end;
end.
Contoh 3 : Algoritma menu empat persegi panjang
ALGORITMIK
Algoritma EMPAT_PERSEGI_PANJANG
{Algoritma untuk menampilkan menu perhitungan empat persegi panjang, memilih menu, dan melakukan proses perhitungan }
DEKLARASI
nomor_menu : integer
panjang, lebar : real
luas, keliling, diagonal : real
DESKRIPSI
{ Cetak Menu }
write(' ************************************************** ')
write(' MENU EMPAT PERSEGI PANJANG ')
write(' 1. Hitung Luas ')
write(' 2. Hitung Keliling ')
write(' 3. Hitung panjang diagonal ')
write(' 4. Keluar dari Program ')
write(' *************************************************** ')
write(' Masukkan pilihan anda dengan mengetikkan angka (1/2/3/4) ? ')
read (nomor_menu)
case (nomor_menu)
nomor_menu =1 : read (panjang,lebar)
luasßpanjang*lebar
write('luas')
nomor_menu =2 : read (panjang,lebar)
kelilingß2*panjang + 2*lebar
write('keliling')
nomor_menu =3 : read (panjang,lebar)
diagonalßsqrt(panjang*panjang + lebar*lebar)
write('diagonal')
nomor_menu =4 : write('Keluar dari program … sampai jumpa')
endcase
PASCAL
PROGRAM EMPAT_PERSEGI_PANJANG;
(* Program untuk menampilkan menu perhitungan empat persegi panjang, memilih menu, dan melakukan proses perhitungan *)
Uses wincrt;
var
nomor_menu : integer ;
panjang, lebar : real;
luas, keliling, diagonal : real;
Begin
writeln(' ******************************************************* ');
writeln(' MENU EMPAT PERSEGI PANJANG ');
writeln(' 1. Hitung Luas ');
writeln(' 2. Hitung Keliling ');
writeln(' 3. Hitung panjang diagonal ');
writeln(' 4. Keluar dari Program ');
writeln(' ******************************************************** ');
write(' Masukkan pilihan anda dengan mengetikkan angka (1/2/3/4) ? '); readln(nomor_menu);
case nomor_menu of
1 : begin
Write('Panjang? '); readln(panjang);
Write('Lebar? '); readln(lebar);
Luas:=panjang*lebar;
writeln('Luas = ',luas);
end;
2 : begin
Write('Panjang? '); readln(panjang);
Write('Lebar? '); readln(lebar);
Keliling:=2*panjang + 2*lebar;
writeln('Keliling = ', keliling);
end;
3 : begin
Write('Panjang? '); readln(panjang);
Write('Lebar? '); readln(lebar);
Diagonal:=sqrt(panjang*panjang + lebar*lebar);
writeln('Diagonal = ', diagonal);
end;
4 : writeln('Keluar dari program :-) sampai jumpa');
end;
end.
TUGAS :
Buatlah Algoritma & Program menggunakan bahasa pascal untuk menentukan indeks nilai ujian, gunakan struktur IF-THEN-ELSE !!!
Rules :
Index A untuk nilai ≥ 80,
Index B untuk 70 ≤ nilai < 80,
Index C untuk 55 ≤ nilai < 70,
Index D untuk 40 ≤ nilai < 55,
Index E untuk nilai < 40.
Tidak ada komentar:
Posting Komentar