P10 Seleksi & Perulangan
A. Sidiq Purnomo Program Studi Teknik Informatika Universitas Mercu Buana Yogyakarta SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
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 -
[email protected]
2
Pembahasan • Perulangan • Perulangan dan Kondisi
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
3
Lebih Lanjut Kondisi
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
Statement If (Dengan Kondisi Berupa Suatu Variabel) Suatu kondisi yang diseleksi 1 (true)
Kondisi 0 (false)
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
5
Sehingga if(D==0) printf(“Nilai D adalah nol \n”); else printf(“Nilai D tidak sama dengan nol \n”)
Bentuk dari statemen if
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
6
Dapat juga ditulis sebagai berikut :
if(D) printf(“Nilai D tidak sama dengan nol\n”); else printf(“Nilai D adalah nol\n”);
D = 0 -> false
if (D) = if (D!=0)
D != 0 -> true
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
7
Agar tidak membingungkan, dapat juga ditulis :
if(!D) printf(“Nilai D adalah nol\n”); else printf(“Nilai D tidak sama dengan nol\n”);
D != 0 -> false
if (!D) = if (D==0)
D = 0 -> true
lebih jelas, tetapi kurang efektif
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
8
Bentuk if Kondisi Jamak • Beberapa kondisi dapat diseleksi sekaligus dalam suatu statemen if • Penulisan dengan menggunakan operator logika (logical operator), yaitu operator : – && (AND), – || (OR) atau – ! (NOT).
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
9
• 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 -
[email protected]
10
• 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 -
[email protected]
11
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 -
[email protected]
12
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 -
[email protected]
13
• 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 diubah dengan menggunakan bentuk 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 -
[email protected]
14
if (A>5 || B && C==’Y’) printf(“Kondisi benar\n”); else printf(“Kondisi tidak benar\n”);
= if(C==’Y’) { if(A>5 || B) printf(“Kondisi benar\n”); else printf(“Kondisi tidak benar\n”); } SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
15
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 -
[email protected]
16
Lebih Lanjut Perulangan
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
Review Statement : For (Nilai_Awal ; Nilai_Akhir ; Peningkatan/Penurunan)
Ex : For (A=0 ; A<5 ; A++) For (A=5 ; A>0 ; A--)
--> -->
Peningkatan Penurunan
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
18
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 -
[email protected]
19
• 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 -
[email protected]
20
Statement For (Tanpa Peningkatan) • Dalam statement for, ungkapan yg 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 -
[email protected]
21
• 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 -
[email protected]
22
• 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 -
[email protected]
23
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 -
[email protected]
24
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 -
[email protected]
25
• 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 -
[email protected]
26
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 -
[email protected]
27
•
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 -
[email protected]
28
Statement
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
Statement Break • Menyebabkan proses perulangan dihentikan. • Dapat digunakan untuk melanjutkan perulangan yang sedang dijalankan oleh statement for, while, atau do ... while loop.
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
30
• 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 -
[email protected]
31
Statement Continue • Menyebabkan proses perulangan kembali ke awal proses perulangan. • Dapat digunakan untuk melanjutkan perulangan yang sedang dijalankan oleh statement for, while, atau do ... while loop.
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
32
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
33
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 -
[email protected]
34
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
35
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 -
[email protected]
36
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 -
[email protected]
37
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 -
[email protected]
38
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 !”
Note : - Untuk luas persegi dan persegi panjang, tidak boleh menggunakan inputan < 0 (bilangan negatif), jika diinputkan bilangan negatif maka harus ada pesan “ Tidak boleh menggunakan bilangan negatif “. SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
39
Ketentuan • Kelas 21 : – Tugas dikumpulkan paling lambat (06 Desember 2015 / 23:59:00 WIB) – Dikumpulkan di web FTI • Algoritma, • source code, dan • hasil output.
• Kelas 22 : – Tugas dikumpulkan paling lambat (06 Desember 2015 / 23:59:00 WIB) – Dikumpulkan di web FTI • Algoritma, • Source code, dan • Hasil output.
Note : Setiap hasil output program harus mencantumkan keterangan berupa : NIM, Nama dan Kelas (di bagian paling atas)
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
40
Thanks … ! 4 Participating In My Class C U Next Week
SQ - http://sidiq.mercubuana-yogya.ac.id -
[email protected]
41