integer; begin PemrogDasarSMK X Smt2

Bab 4 Struktur Kontrol Perulangan 129 a := 10; while a 20 do begin writeln‘nilai dari a adalah: , a; a := a + 1; end; end. Hasil: nilai dari a adalah: 10 nilai dari a adalah: 11 nilai dari a adalah: 12 nilai dari a adalah: 13 nilai dari a adalah: 14 nilai dari a adalah: 15 nilai dari a adalah: 16 nilai dari a adalah: 17 nilai dari a adalah: 18 nilai dari a adalah: 19 Perulangan dengan struktur FOR DO Perulangan dengan pencacah, yaitu menggunakan struktur FOR DO dimasukkan dalam pembahasan pada kegaiatan Belajar ini. Struktur ini digunakan untuk mengulang statement atau satu blok statement berulang kali sejumlah yang ditentukan. Bentuk umum : for nama_variabel := nilai_awal to nilai_akhir do {untuk pencacah naik} Pernyataan; atau for nama_variabel := nilai_awal downto nilai_akhir do {untuk pencacah turun} Pernyataan; Untuk lebih jelasnya, perhatikan contoh kode program berikut, beserta hasilnya. Program FORDO: Var I : integer; Begin For I := 1 to 5 Do Writeln‘Pascal’; 130 Pemrograman Dasar SMK Kelas X Sem 2 End. Output : Pascal Pascal Pascal Pascal Pascal Penulisan pernyataan yang akan diproses berulang kali tersebut dapat juga ditulis dalam bentuk blok pernyataan diawali dengan BEGIN dan diakhiri dengan END, walaupun hanya berisi sebuah statement saja, sebagai berikut : Contoh 2 Program Ulang; Var I : integer; Begin For I := 1 to 5 Do Begin Writel n‘Belajar Pascal’; Writeln “Sampai Bisa’; End; End. Output: Belajar Pascal Sampai Bisa Belajar Pascal Sampai Bisa Belajar Pascal Sampai Bisa Belajar Pascal Sampai Bisa Belajar Pascal Sampai Bisa Dalam menyelesaiakan suatu permasalahan kita bisa menggunakan salah satu bentuk perulangan, apakah While Do ataupun For Do. Manakah yang lebih baik? Keduanya mempunyai Bab 4 Struktur Kontrol Perulangan 131 kelebihan dan kekurangan sendiri-sendiri. Ada permasalahan yang dapat diubah dalam dua bentuk eprulangan tapi ada yang lebih mudah menggunakan bentuk For Do, tapi ada juga yang hanya bisa digunakan bentuk While Do. Perhatikan dua contoh pertama pada bagian mengamati. program whiledo var i : integer; begin i := 1; while i = 5 do begin writeln ‘Pascal’; i:=i+1; end; end. Program FORDO: Var I : integer; Begin For i:= 1 to 5 Do Writeln‘Pascal’; End. Kedua program di atas mempunyai keluaran yang sama yaitu mencetak ‘Pascal’ sebanyak 5 kali, yaitu untuk i=1 sampai 5. Dalam While Do, - pertama i diberi nilai 1, - Periksa apakah i = 5? Iya maka tuliskan ‘Pascal’ kemudian nilai i ditambah 1 menjadi 2 - Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=3 - Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=4 - Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=5 - Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=6 - Periksa apakah i=5?Tidak, maka STOP Di sini i berfungsi sebagai iterator dan 5 sebagai nilai sentinel. Dalam struktur FOR DO, iterator dan sentinel diringkas dalam bentuk for i:=1 to 5, di mana i otomatis bertambah naik, mulai dari nilai awal 1 menjadi 5. Oleh karena itu struktur For Do disebut perulangan dengan pencacah. Contoh berikut kode program dengan dua struktur berbeda untuk masalah yang sama. Contoh 3. Buatlah program untuk mementukan suku ke-n dari barisan berikut. 2,7,12,17,22, .... Jawab: Barisan di atas adalah barisan aritmatika di mana selisih tiap suku berturutan adalah 5. Dengan struktur For Do. Program Barisan; 132 Pemrograman Dasar SMK Kelas X Sem 2 var i,n,suku:integer; begin readlnn; suku:=2; for i:=2 to n do suku:=suku+5; writeln‘suku ke- ‘, n,’ adalah : ’, suku; end. Dari kode program di atas dapat dilihat bahwa suku pertama adalah 2, sehingga dinyatakan nilai awal suku:=2. Berikutnya untuk suku kedua, ketiga dan seterusnya i=2, 3, 4, .. dihitung nilai suku setelahnya adalah suku sebelumnya ditambah 5 suku:=suku+5. Berikut ini programnya dengan struktur WHILE DO. Program Barisan; var i,n,suku:integer; begin readlnn; suku:=2; i:=2 While i=n do Begin suku:=suku+5; i:=i+1; End; writeln‘suku ke- ‘, n,’ adalah : ’, suku; end. Contoh 4. Buatlah program untuk menentukan suku terbesar yang kurang dari n dari barisan 2, 4, 8, 16, .... Jawab: Masalah ini kurang cocok diselesaikan dengan struktur FOR DO karena banyaknya perulangan tidak diketahui dengan pasti sehingga sulit mementukan ioterator dan nilai sentinelnya. Dengan menggunakan struktur While Do dapat diperoleh solusi sebagai berikut. Program Barisan2; var n,suku:integer; begin