P9 Seleksi & Perulangan
A. Sidiq Purnomo Program Studi Teknik Informatika Universitas Mercu Buana Yogyakarta SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
Tujuan • Mahasiswa mampu mengetahui dan memahami : – Mengetahui dan memahami lebih lanjut Perulangan – Mengetahui dan memahami lebih lanjut seleksi
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
2
Pembahasan • Perulangan • Perulangan dan Kondisi
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
3
Lebih Lanjut Kondisi
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
If Dengan Kondisi Berupa Suatu Variabel • Telah disebutkan sebelumnya bahwa suatu kondisi yang diseleksi dapat bernilai benar atau bernilai tidak benar (salah). • Nilai benar adalah nilai numerik satu dan nilai salah adalah nilai numerik nol.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
5
• Dengan demikian bentuk dari statemen if berikut ini : if(D==0) printf(“Nilai D adalah nol \n”); else printf(“Nilai D tidak sama dengan nol \n”)
• Dapat juga ditulis sebagai berikut : if(D) printf(“Nilai D tidak sama dengan nol\n”); else printf(“Nilai D adalah nol\n”); SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
6
• Statemen if(D) berarti adalah untuk menyeleksi apakah D bernilai benar atau dengan kata lain apakah D bernilai tidak sama dengan nol. – Jika nilai D adalah nol, hasil kondisi yang diseleksi adalah tidak benar, maka statemen setelah else
yang diproses. – Sebaliknya jika kondisi adlah bernilai benar (D tidak bernilai nol), statemen setelah if yang akan diproses. SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
7
– Agar tidak membingungkan, bentuk dari statemen if dapat juga ditulis sebagai berikut ini (lebih jelas, tetapi kurang efektif). if(!D) printf(“Nilai D adalah nol\n”); else printf(“Nilai D tidak sama dengan nol\n”);
– statemen if(!D) berarti adalah jika D bernilai tidak benar atau D sama dengan nol (D==0) SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
8
Bentuk if Kondisi Jamak • Beberapa kondisi dapat diseleksi sekaligus dalam suatu statemen if dengan menggunakan operator logika (logical operator), yaitu operator && (AND),|| (OR) atau ! (NOT). • Contoh : – Misalnya nilai A=3, B=1, dan C=’Y’. penyeleksi kondisi jamak sebagai berikut ini akan
menghasilkan nilai nilai logika benar. if (A>5 || B && C==’Y’) printf(“Kondisi benar\n”); else printf(“Kondisi tidak benar\n”);
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
9
• Hasil dari penyeleksian kondisi ini dapat dievaluasi sebagai berikut ini. 1. Masing-masing kondisi yang berupa ungkapan hubungan diseleksi terlebih dahulu, karena operator hubungan mempunyai jenjang yang lebih tinggi dibandingkan dengan operator logika.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
10
2. Operator logika ‘&&’ mempunyai jenjang yang lebih tinggi dari operator logika ’||’, sehingga ungkapan logika (1 && 1) akan diseleksi terlebih dahulu dengan hasilnya adalah nilai logika 1 (benar).
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
11
3.Hasil akhir dari penyeleksian kondisi jamak ini adalah nilai logika 1 (benar) yang didapat dari hasil ungkapan logika (0 ||).
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
12
• Alternatif : – Kondisi dengan operator logika AND dapat diuraikan dalam bentuk if tersendiri yang diletakkan sebelum if semula. – Pada contoh sebelumnya, bentuk dari statemen if dapat dirubah dengan menggunakan bentu if bersarang sebagai berikut. if(C==’Y’) { if(A>5 || B) printf(“Kondisi benar\n”); else printf(“Kondisi tidak benar\n”); } SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
13
Penting : Selain jenjang dari operator logika menentukan hasil akhir dari penyeleksian kondisi jamak, kurung buka dan kurung tutup akan merubah urutan penyeleksian dengan hasil akhir yang dapat berbeda. Hasil dari penyeleksian kondisi ini : If(A>5 || B || C==’Y’ && A+B>20) Akan berbeda dengan hasil penyeleksi kondisi berikut : If((A>5 || B || C==’Y’) && A+B>20)
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
14
Lebih Lanjut Perulangan
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
Statement For Tanpa Nilai Awal • Nilai awal dari pengontrol perulangan for tidak harus ada di dalam statemen for. • Tetapi dapat ditentukan sebelum perulangan for.
• Contoh :
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
16
• Keterangan : – Nilai awal dari variable S sebagai variable untuk mengontrol perulangan adalah 3 dan ditentukan sebelum perulangan for. – Dalam statement for awal ini tidak perlu ditulis kembali, tetapi tanda titik koma (;) harus tetap ditulis.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
17
Statement For Tanpa Peningkatan • Dalam statement for, ungkapan yang menunjukkan peningkatan nilai dari variable pengontrol perulangan for tidak harus ada di dalam statemen for. • Tetapi dapat dituliskan sebagai suatu statement yang nantinya akan diproses secara berulang-ulang.
• Contoh 1 :
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
18
• Contoh 2 :
• Keterangan : – Nilai Q++ tidak berdiri sendiri sebagai suatu statement, tetapi ada fungsi printf() untuk menampilkan hasilnya, – Nilai Q akan ditampilkan terlebih dahulu, baru kemudian akan ditambah nilainya dengan 1.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
19
• Contoh 3 :
• Keterangan : – Jika ditulis ++Q tidak sama dengan Q++. – Nilai Q akan ditambah dengan nilai 1 terlebih dahulu, kemudian baru akan ditampilkan hasilnya.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
20
Statement For Tanpa Nilai Awal dan Peningkatan • Nilai awal dan peningkatan yang digunakan sebagai variable pengontrol perulangan boleh tidak dituliskan dalam statement for.
• Contoh :
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
21
Statement For Tanpa Nilai Awal, Nilai Akhir dan Peningkatan • Statement for biasanya digunakan untuk membuat perulangan tanpa henti (infinite loop). • Perulangan tidak akan pernah berhenti karena kondisi yang digunakan untuk mengakhiri perulangan tidak ada di statement for.
• Contoh 1:
•
Keterangan : – Proses dalam program tersebut, tidak akan pernah berhenti.
Bagaimana menghentikannya ?
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
22
• Contoh 2 :
• Keterangan : – Program tersebut menggunakan statement for yang akan melakukan pemrosesan tanpa henti. – Tetapi kenapa output yang dihasilkan hanya sampai sekali saja ?
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
23
Variasi dalam perulangan • Berikut, akan diberikan beberapa contoh program yang menggunakan statement for yang sangat membingungkan jika dilihat sekilas. • Kondisi seperti ini banyak dijumpai dalam pemrograman C.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
24
•
Keterangan : – Program tersebut merupakan program yang merubah string (huruf kecil)
menjadi string (huruf kapital).
– Proses dari elemen string awal (Q=0) sampai pada elemen string terakhir (S[Q])
untuk masing-masing elemen yang ditunjukkan dengan peningkatan nilai (Q++).
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
25
Statement
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
Statement Break • Statement break menyebabkan proses perulangan dihentikan. • Pernyataan break dapat digunakan untuk melanjutkan perulangan yang sedang dijalankan oleh statement for, while, atau do ... while loop.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
27
• Contoh :
• Keterangan : – Program tersebut menggunakan statement for yang akan melakukan pemrosesan tanpa henti. – Tetapi kenapa output yang dihasilkan hanya sampai sekali saja ?
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
28
Statement Continue • Statement continue menyebabkan proses perulangan kembali ke awal proses perulangan. • Pernyataan continue dapat digunakan untuk melanjutkan perulangan yang sedang dijalankan oleh statement for, while, atau do ... while loop.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
29
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
30
Statement goto • Statement goto dapat digunakan untuk melompat dari suatu proses ke proses lain yang menjadi tujuan dalam sebuah program. • Bentuk umum goto adalah sebagai berikut : goto label; • Contoh : goto stop; SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
31
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
32
Tugas • Dengan menggunakan statemen seleksi dan perulangan, dan statement continue, return dan break. • Buatlah algoritma (flowchart) dan program untuk menghitung : a.luas bangun persegi panjang b.luas bangun persegi
• Dengan ketentuan sebagai berikut : SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
33
1. Di awal eksekusi harus ada menu untuk memilih menghitung luas persegi atau persegi panjang. 2. Untuk luas persegi panjang, jika ukuran panjang & ukuran lebar nilainya min, maka eksekusi program akan kembali ke menu utama. Dan meninggalkan pesan : “Maaf tidak menerima nilai min” SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
34
3. Untuk luas persegi panjang, jika ukuran panjang < ukuran lebar, maka eksekusi program akan kembali ke menu utama. Dan meninggalkan pesan : 4. Jika telah selesai menghitung luas persegi/persegi panjang, maka eksekusi program akan kembali ke menu utama.
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
35
5. Eksekusi program hanya akan berhenti jika, di tekan button tertentu pada keyboard misalnya 0. Dan meninggalkan pesan misalnya : “Selamat Tinggal Kawan ...!” “Jangan Lupa Belajar Mau Ujian !” “Good Luck ...! & C U Next Time !”
SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com
36
Ketentuan Tugas • Syarat Algortima dan Program : – Setiap output hasil eksekusi program harus mencantumkan NIM dan Nama.
• Pengumpulan : – Algoritma dan Source Code Tulis Tangan – Hasil Eksekusi Program di Print
• Batas akhir pengumpulan : – Kamis, 12 - 12 - 13 37