PERTEMUAN 5 Algoritma & Pemrograman Presented by : Sity Aisyah, M.Kom Email : dryesha@gmail.com Blog : yeshasalsabila.blogspot.com 1
SELEKSI DENGAN KONDISI MAJEMUK Seringkali suatu kondisi yang dijadikan sebagai pengambil keputusan dalam suatu seleksi tidak sesederhana pada contoh if sebelumnya,melainkan melibatkan lebih dari sebuah kondisi. Studi Kasus 1 : [MemvaLidasi Nilai Ujian] Buatlah algoritma dan program yang meminta sebuah nilai ujian dimasukkan dari keyboard dan memvalidasi nilai tersebut. Berikan komentar ”Absah” jika nilai tersebut berada antara 0 sampai dengan 100 dan berikan komentar ”Tidak Absah” untuk keadaan sebaliknya. 2
Jawaban :. Algoritma Program C 3 Deklarasi nilai : double Mulai Masukkan(nilai) JIKA nilai ≥ 0 dan nilai ≤ 100 MAKA Tampilkan (”Absah”) SEBALIKNYA Tampilkan (”Tidak Absah”) AKHIR-JIKA Selesai #include <stdio.h> int main() { double nilai; printf("Masukkan nilai ujian : "); scanf("%lf", &nilai); if(nilai>=0 && nilai<=100) printf("Absah\n"); else printf("Tidak Absah\n"); return 0; } 3
Program C++ Output 4 #include <iostream.h> int main() { double nilai; cout << "Masukkan nilai ujian : "; cin >> nilai; if(nilai>=0 && nilai<=100) cout <<"Absah\n"; else cout <<"Tidak Absah\n"; return 0; } 4
Studi Kasus 2 : [Menentukan huruf kapital atau bukan] Buatlah algoritma dan program yang meminta sebuah karakter dimasukkan dari keyboard dan kemudian memberikan keterangan karakter tersebut termasuk huruf kapital atau bukan. 5
Jawaban :. Algoritma Program C 6 Deklarasi karakter : char Mulai Masukkan(karakter) JIKA karakter ≥ ”A” dan karakter ≤ ”Z” MAKA Tampilkan (” Termasuk huruf kapital”) SEBALIKNYA Tampilkan (” Bukan huruf kapital”) AKHIR-JIKA Selesai #include <stdio.h> int main() { char karakter; printf("Masukkan sebuah karakter : "); scanf("%c",&karakter); if(karakter>='A' && karakter<='Z') printf("%c Termasuk huruf kapital\n", karakter); else printf("%c Bukan huruf kapital\n", return 0; } 6
FUNGSI GETCH() DAN GETCHE() Getch kepanjangan dari get character. Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. Bentuk umumnya adalah sebagai berikut : Karakter = getch (); Getch membaca karakter tunggal yang dimasukan lewat keyboard tetapi hasilnya tidak di tampilkan melalui layar. Contoh program : #include <stdio.h> #include <conio.h> main() { char a; printf("Tekan sebuah tombol pada keyboard!"); a=getch(); printf("\nTombol yang baru anda tekan adalah %c",a); getch(); } 7
Output : pada syntax a=getch(); artinya apapun yang ditekan pada keyboard akan disimpan ke dalam variabel a. salah satu kegunaan fungsi getch() ini adalah untuk masking password. Getche Getche kepanjangan dari get character and echo. Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. Bentuk umumnya adalah sebagai berikut : Karakter = getche (); Getche membaca karakter tunggal yang di masukan lewat keyboard dan hasilnya akan di tampilkan pada layar. 8
Lalu apa perbedaan fungsi getch() dan getche() Lalu apa perbedaan fungsi getch() dan getche()? Seperti yang dijelaskan tadi getch() merupakan kepanjangan dari Get Character, sedangkan untuk getche() merupakan kepanjangan dari Get Character And Echo. Pada fungsi getch() tombol yang kita tekan pada keyboard tidak akan ditampilkan pada console (kecuali kita panggil variabelnya dengan fungsi printf atau fungsi output lainnya), namun untuk getche() tombol yang kita tekan akan langsung ditampilkan pada console. Contoh : #include <stdio.h> #include <conio.h> main() { char a; printf("Tekan sebuah tombol pada keyboard!"); a=getche(); printf("\nTombol yang baru anda tekan adalah %c",a); getch(); } 9
Output : 10
SELEKSI BERSARANG (NESTED IF) Masalah dengan tiga kasus atau lebih dapat dianalisis dengan struktur pemilihan bersarang. Perintah IF dalam IF sering disebut nested-if. Perintah ini mempunyai bentuk umum sebagai berikut : If (kondisi1) If (kondisi2) Pernyataan1; Else Pernyataan2; Pernyataan3; If (kondisi1) Pernyataan1; Else if (kondisi2) Pernyataan2; Else if (kondisi3) Pernyataan3; … ... else pernyataan-n; Pernyataan If dalam if juga mempunyai bentuk yang majemuk yang sering disebut if bertingkat. Bentuk umumnya adalah sebagai berikut : 11
Studi Kasus 1 : [Menentukan_bilangan_positif_negatif_nol] {Menentukan apakah suatu bilangan bulat yang diperoleh dari piranti masukan merupakan bilangan positif, negatif atau nol}. DEKLARASI: bil : integer DEFINISI: read(bil) if (bil = 0) then write(‘bilangan nol’) else if (bil < 0) then write(‘bilangan negatif’) write(‘bilangan positif’) endif End Algoritma Buatlah program C nya ? 12
Studi Kasus 2 : [Menentukan wujud air] {Menentukan wujud air : padat, cair, atau gas berdasarkan suhunya} DEKLARASI: T : real DEFINISI: read(T) if (T ≤ 0) then write(‘padat’) else if (T > 0) and (T < 100) then write(‘cair’) if (T ≥ 100) then write(‘gas atau uap’) endif End Algoritma Buatlah program C nya ? 13
Studi Kasus 3 : [Menghitung Indeks Nilai] {Menghitung indeks nilai mahasiswa berdasarkan nilai ujian yang diperoleh} DEKLARASI: Nilai : real indeks : char DEFINISI: read(Nilai) if (Nilai ≥ 80) then indeks ← ‘A’ else if (Nilai ≥ 70) and (Nilai < 80) then indeks ← ‘B’ if (Nilai ≥ 55) and (Nilai < 70) then indeks ← ‘C’ 14
if (Nilai ≥ 40) and (Nilai < 55) then indeks ← ‘D’ else indeks ← ‘E’ endif write(indeks) End Algoritma Output : Buatlah program C nya ? 15
SELEKSI CASE Jika suatu masalah yang memiliki dua kasus atau lebih, maka untuk menyederhanakan penulisan struktur pemilihan bersarang (nested if) digunakan struktur case-of. Bentuk strukturnya adalah : ekspresi merupakan sembarang ekspresi (aritmatika atau boolean) yang menghasilkan suatu nilai (konstanta). Case akan memeriksa apakah nilai dari ekpresi tersebut sama dengan salah satu nilai dari nilai-1, nilai-2 dan seterusnya. case ekspresi nilai-1 : pernyataan-1 nilai-2 : pernyataan-2 . nilai-n : pernyataan-n otherwise : pernyataan-otherwise endcase Jika nilai ekspresi sama dengan nilai-1, maka pernyataan-1 akan dijalankan, dan seterusnya. Jika nilai ekspresi tidak sama dengan seluruh nilai (nilai-1, nilai-2, . . , nilai-n), maka pernyataan-otherwise yang akan dijalankan. 16
‘A’ : (nilai karakter A) ‘A’,’B’ : (nilai karakter A dan B) Pernyataan CASE digunakan untuk menyederhanakan konstruksi IF..THEN..ELSE…yang terlalu banyak. Pada masalah tertentu, CASE lebih memberikan kejelasan daripada IF. Namun perlu diketahui bahwa semua persoalan dapat ditangani oleh CASE bisa ditangani oleh IF, tetapi tidak sebaliknya. Daftar case-label dapat berupa sebuah konstanta, atau range dari konstanta yang bukan bertipe real. Contoh: 1 : (nilai integer 1) 1,2,3,4 : (nilai integer 1,2,3,4) 1..5 : (nilai integer 1,2,3,4,5) ‘A’ : (nilai karakter A) ‘A’,’B’ : (nilai karakter A dan B) ‘A’..’D’ : (nilai karakter A,B,C,D) ‘*’ : (nilai karakter *) 17
Berikut contoh algoritma dengan struktur case. Studi Kasus 1 : [Mengkonversi_nama_bulan] {Menentukan nama bulan sesuai dengan nomor bulan} Algoritma : DEKLARASI: Nomor_bulan : integer DEFINISI: read(Nomor_bulan) case Nomor_bulan 1 : write(‘Januari’) 2 : write(‘Februari’) 3 : write(‘Maret’) 4 : write(‘April’) 5 : write(‘Mei’) 6 : write(‘Juni’) 7 : write(‘Juli’) 8 : write(‘Agustus’) 9 : write(‘September’) 10 : write(‘Oktober’) 11 : write(‘November’) 12 : write(‘Desember’) otherwise : write(‘Nomor bulan salah’) Endcase End Algoritma 18
Studi Kasus 1 : [Kalkulator_sederhana] {Mensimulasikan kalkulator sederhana, yaitu menghitung hasil operasi aritmatika dari masukan berupa operand1, operand2, dan operator} Algoritma : DEKLARASI: op1, op2 : integer oprtor : char DEFINISI: read(op1, op2, oprtor) case oprtor ‘+’ : write(op1 + op2) ‘-’ : write(op1 – op2) ‘*’ : write(op1 * op2) ‘/’ : if (op2 ≠ 0) then write(op1 / op2) else write(‘Eror!’) endif Endcase End Algoritma 19
Thank You 20