LOGIKA ALGORITMA Pertemuan 6
Sequence Algoritma yang merupakan runtunan (sequence) satu atau lebih instruksi, yaitu berarti: Tiap instruksi dikerjakan satu persatu. Tiap instruksi dilaksanakan (tanpa perulangan). Urutan dilaksanakan sesuai urutan. Akhir dari instruksi terakhir merupakan akhir algoritma.
Sequence Perhatikan diagram di bawah, Berdasarkan diagram tersebut, algoritmanya terdiri dari 3 instruksi yang dimulai dari instruksi A, kemudian dilanjukan instruksi B dan setelah instruksi B dilanjutkan instruksi C A B C Instruksi A Instruksi B Instruksi C
Sequence Pengaruh Urutan Instruksi Urutan instruksi dalam algoritma sangat penting. Urutan instruksi yang berbeda akan menghasilkan keluaran yang berbeda. Perhatikan contoh:
Contoh Algoritma_Sequence_1 {Contoh algoritma yang menghasilkan keluaran berbeda jika urutan berbeda} DEKLARASI A, B : Integer DESKRIPSI A 10 A 2 * A B A write (B) {nilai B yang dicetak ke piranti keluaran = 20} Algoritma_Sequence_2 {Contoh algoritma yang menghasilkan keluaran berbeda jika urutan berbeda} DEKLARASI A, B : Integer DESKRIPSI A 10 B A A 2 * A write (B) {nilai B yang dicetak ke piranti keluaran = 10}
Contoh Contoh kasus: misalkan nilai A=8 dan nilai B=5. Lakukan pertukaran nilai A dengan nilai B sehingga nilai A=5 (nilai B) dan nilai B=8 (nilai A) Lakukan pembacaan dari piranti input untuk nilai A, lakukan pembacaan dari piranti input untuk nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Lakukan pertukaran antara nilai A dan nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Algoritma_Luas_Segitiga {Contoh algoritma menghitung luas segitiga} DEKLARASI a : Integer {Alas Segitiga} t : Integer {Tinggi Segitiga} L : Integer {Luas Segitiga} DESKRIPSI read (a) read (t) L a * t /2 write (L)
Contoh Contoh kasus: misalkan nilai A=8 dan nilai B=5. Lakukan pertukaran nilai A dengan nilai B sehingga nilai A=5 (nilai B) dan nilai B=8 (nilai A) Lakukan pembacaan dari piranti input untuk nilai A, lakukan pembacaan dari piranti input untuk nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Lakukan pertukaran antara nilai A dan nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Menghitung komisi yang diterima salesman berdasarkan jumlah penjualan yang dicapainya. Salesman mendapat komisi 10% dari hasil penjualannya. Masukan algoritma adalah nama salesman dan jumlah penjualannya, tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperolehnya.
SELECTION (PEMILIHAN ) IF IF (Simple selection without false branch) Contoh: Pseudocode Bahasa C++ if <kondisi> then instruksi endif if (kondisi) { instruksi } Pseudocode Bahasa C++ if x > 100 then x x + 1 endif if (x>100) { x = x + 1; } if ketemu=true then if a <= 10 then read(b) endif if (ketemu==true) { if (a<=10) { scanf(“%d”,&b); }
SELECTION (PEMILIHAN ) IF … ELSE IF … ELSE (Simple selection) Contoh: Bahasa C++ Pseudocode if (kondisi) { instruksi_1 } else { instruksi_2 if <kondisi> then instruksi_1 else instruksi_2 endif Pseudocode Bahasa C++ if nilai >= 60 then write (“Lulus”) else write (“Tidak Lulus”) endif if (nilai>=60) { printf(“Lulus”); } else { printf(“Tidak Lulus”);
SELECTION (PEMILIHAN ) Nested IF Nested IF (Nested selection) Linear nested IF statement Non linear nested IF statement if <kondisi_1> then Instruksi_1 else if <kondisi_2> then Instruksi_2 if <kondisi_3> then Instruksi_3 Instruksi_4 endif if <kondisi_1> then if <kondisi_2> then if <kondisi_3> then Instruksi_1 else Instruksi_2 endif Instruksi_3 Instruksi_4
SELECTION (PEMILIHAN ) CASE Pseudocode Bahasa C++ case (nama_variable_yang_diuji) <kondisi_1> : instruksi_1 <kondisi_2> : instruksi_2 <kondisi_3> : instruksi_3 . <kondisi_N> : instruksi_N Otherwise instruksi_x endcase switch (nama_variable_yang_diuji) { case nilai_1 : instruksi_1; break; case nilai_2 : instruksi_2; case nilai_3 : instruksi_3; . . default : instruksi_4; }
SELECTION (PEMILIHAN ) CASE Pseudocode Algoritma_Keterangan_grade_nilai { Menampilkan keterangan untuk grade nilai } DEKLARASI chrNilai : char DESKRIPSI write (‘Nilai huruf yang didapat ? ‘) read (chrNilai) case (chrNilai) chrNilai==‘A’ : write (“Sangat Baik”) chrNilai==‘B’ : write (“Baik”) chrNilai==‘C’ : write (“Cukup”) chrNilai==‘D’ : write (“Kurang”) chrNilai==‘E’ or chrNilai==’F’ : write (“Gagal”) otherwise write(“isi dengan huruf antara (A – F) !”) endcase Contoh: Bahasa C++ #include<stdio.h> void main() { char chrNilai; printf(“Nilai huruf yang didapat ? “); scanff(“%s”, &chrNilai); switch (chrNilai){ case ‘A’ : printf(“Sangat Baik”); break; case ‘B’ : printf(“Baik”); break; case ‘C’ : printf(“Cukup”); break; case ‘D’ : printf(“Kurang”); break; case ‘E’ : printf(“Gagal”); break; case ‘F’ : printf(“Gagal”); break; default : printf(“isi dengan huruf antara (A – F) !”); break; }
Repetition (PERULANGAN) while - do Pseudocode Bahasa C++ while - do Contoh: while <kondisi> do instruksi_1 instruksi_2 . endwhile while (<kondisi>) { instruksi_1 instruksi_2 . } Pseudocode Bahasa C++ Algoritma_Cetak_Hello_Sebanyak_10_Kali { Menampilkan tulisan Hello sebanyak 10 kali } DEKLARASI i : integer {sebagai pencacah perulangan} DESKRIPSI i 1 while i<=10 do write (‘Halo’) i++; endwhile #include<stdio.h> void main() { int i; i = 1; while (i<=10) { printf (“Halo”); i++; }
Repetition (PERULANGAN) repeat - until Pseudocode Bahasa C++ repeat - until Contoh: repeat instruksi_1 instruksi_2 . Until <kondisi> do { instruksi_1 instruksi_2 . } while (<kondisi>) Pseudocode Bahasa C++ Algoritma_Cetak_Hello_Sebanyak_10_Kali { Menampilkan tulisan Hello sebanyak 10 kali } DEKLARASI i : integer {sebagai pencacah perulangan} DESKRIPSI i 1 Repeat write (‘Halo’) i++ until i<=10 #include<stdio.h> void main() { int i; i = 1; do { printf (“Halo”); i++ } while (i<=10) }
Repetition (PERULANGAN) for Pseudocode Bahasa C++ for Contoh: for namavar awal to akhir do instruksi_1 instruksi_2 . endfor for (namavar=awal; namavar<=akhir;namavar++) { instruksi_1 instruksi_2 . } Pseudocode Bahasa C++ Algoritma_Cetak_Hello_Sebanyak_10_Kali { Menampilkan tulisan Hello sebanyak 10 kali } DEKLARASI DESKRIPSI for k 1 to 10 do write (k, ‘Halo’) endfor #include<stdio.h> void main() { for (int k=1; k<=10; k++) { printf (“%d Halo”, k); }
Thanks