Kamis, 29 November 2012

PENGULANGAN DALAM PASCAL

I. Judul Praktikum : Pengulangan II. Tujuan Praktikum : 1. Agar dapat mengetahui dan memahami pernyataan-pernyataan pengulangan yang ada dalam program Turbo Pascal. 2. Agar dapat memahami fungsi dari Pengulangan dan penggunaannya di dalam proses pemrograman. 3. agar mahasiswa dapat memahami kapan digunakannya pengulangan pada turbo pascal. III. Dasar Teori Komputer mempunyai beberapa kelebihan dibandingkan dengan manusia. Salah satunya, komputer bisa melakukan suatu perintah secara berulang-ulang. Pengulangan tersebut kn kit pelajari pada program pascal. Secara alamiah, suatu proses bisa berupa proses berurutan dari awal hingga selesai, pilihan berdasarkan kondisi tertentu atau pengulangan berdasarkan batasan tertentu pula. Pascal menyediakan beberapa konstruksi perintah untuk melakukan proses-proses itu, yaitu : A. For ...to.... do Pernyatan For digunakan jika jumlah pengulangan sudah diketahui sebelum proses dimulai. Pengulangan ini bergantung pada suatu variabel integer. Pada setiap pengulangan, variabel tersebut akan bertambah atau berkurang satu. Batas bawah dan batas atas proses For ini ditentukan oleh kedua batas tersebut.Ada dua bentuk pengulangan For, yaitu pengulangan positif dan pengulangan negatif. 1. Pengulangan Positif Bentuk umumnya : For indeks := nilai awal indeks to nilai akhir indeks do statement. Contoh sederhana penggunaan For yaitu untuk menampilkan bilangan asli sampai ke N. Implementasinya : For bilangan := 1 to N do Writeln (Bilangan); Dengan Bilangan mrupakan variable bertipe bilangan bulat. Pada perintah ini, mula-mula Bilangan bernilai 1. karena nilai bilangan lebih kecil dari N (nilai akhir) maka pernyataan writeln dijalankan, lalu isi Bilangan dinaikkan sebesar 1, menjadi 2. Jika bilangan lebih kecil atau sama engan N. Maka pernyataan Writeln ini dikerjakan lagi, dan seterusnya. Dengan demikian pada layar akan tampil 1 2 3 : : N Program menampilkan bilangn asli sampai ke N (dengan N dimasukkan melalui papan ketik sewaktu program dijalankan) dapat dilihat pada program di bwah ini. Program Bilangan_asli; Uses wincrt; Var N, Bilangan : Byte; Begin CLRSCR; Write(‘masukkan sebuah bilangan bulat positif < 256 : ’); readln (N); For bilangan := 1 to N do Writeln (bilangan :3); Readln End. Contoh eksekusi : masukkan sebuah bilangan bulat positif < 256 : 3 1 2 3 masukkan sebuah bilangan bulat positif < 256 : 0 pada program ini jika nilai 0 dimasukkan (sebagai N) maka pernyataan writeln tidak dikerjakan sama sekali. Contoh lain pengguanan For misalnya untuk menampilkan tulisan ‘Jonizar’ sebanyak 10 kali. Penulisan pernyataannya, For I := 1 to 10 do Writeln (‘Jonizar’); Dengan I berupa variable bertipe bilangan bulat. 2. Pengulangan Negatif Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil. Statement yang digunakan adalah For-DownTo-Do Bentuk umumnya : For indeks := nilai akhir indeks downto nilai awal indeks do statement. Contoh berikut menunjukkan tipe char pada variable pencacah. Dalam hl ini, pernyataan for digunakan untuk menampilkan huruf Z sampai dengan huruf A dalam satu baris. Program AZ; Uses wincrt; Var karakte : char; Begin For karakter := ‘Z’ Downto ‘A’ do Write (karakter); Rewadln End. Hasil eksekusi : ZYXWVUTSRQPONMLKJIHGFEDCBA Dalam pembuatan program terkadang diperlukan adanya pernyataan for di dalam pernyataan for atau yang sering disebut pernyataan for berkalang. Misalnya, pada persoalan untuk menampilkan tabel perkalian sebagai berikut : 1 2 3 4 5 6 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 programnya dapat dilihat pada program berikut : Program TabelKali; Uses wincrt; Const spasi = # 32; Var N, Hasilkali, Kolom, Brs : word; Begin CLRSCR; Write(‘masukkan nilai N’); readln (N); Write (spasi : 4); For kolom := 1 to N do Write(kolom : 4); Writeln; For Brs := 1 to N do Begin Write Brs := 1 to Brs do Begin HasilKali := Brs * kolom; Write (hasilKali : 4) End; writeln End; Readln End. Pada program, pernyataan yang mengikuti For terluar berupa pernyataan majemuk. Dalam pernyataan mejemuk tersebut ada pernyataan for lagi. For terluar digunakan untuk mengatur tampilan sebanyak N baris. Sedangkan For bagian dalam untuk mengatur tampilan pada posisi kolom (dalam satu baris). For kolom := 1 to Brs do Begin hasilKali := Brs * kolom; write (hasilKali : 4); end; menyebabkan sebanyak Baris buah nilai hasil perkalian dicetak pada satu baris (karena pernyataan yang digunakan adalah Write, dan bukanlah Writeln). Perulangan For tersarang Perulangan For tersarang adalah perulangan For yang berada pada perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya. Contoh : Var a,b : Integer; Begin For a := 1 To 3 Do Begin For b := 1 To 2 Do Write (a :4,b:2); Writeln; End; End. Hasil : 1 1 1 2 2 1 2 2 3 1 3 2 B. Pengulangan pada While-Do Pernyataan lain yang sering dipakai untuk pengulangan adalah pernyataan While. Terutama digunakan jika jumlah pengulangan belum diketahui dengan pasti. Pernyataan while sering dikatakan sebagai pengulang proses selama kondisi benar. Statement while-do digunakan untuk melakukan proses perulangan suatu statement atatu blok statement secara terus menerus selama kondisi ungkapan logika pada while masih benar. Bentuk umumnya : While do Begin Statement 1 Statement 2 Statement n End; Artinya : selama kondisi tersebut terpenuhi maka proses akan berulang pada blok statement tersebut. Pada saat while dikerjakan, mula-mula ungkapan nalar yang merupakan kondisi pengulangan diperiksa terlebih dahulu. Jika ungkapan nalar bernilai benar maka statement akan dikerjakan. Selanjutnya akan dilakukan pengujian lagi terhadap ungkapan nalrnya. Selama ungkapan nalar bernilai benar, maka Statement akan dikerjakan terus. Berdasarkan sifat ini dapat disimpulkan : a. Pada statement atau ungkapan nalar harus ada suatu bagian yang bisa mengubah nilai ungkapan nalar untuk kondisi tertentu. Kalau tidak, bisa menyebabkan proses berulang tiada hentinya. b. Pada saat While dikerjakan pertama kali, kalau ungkapan nalar bernilai salah, maka statement tidak dikerjakan sama sekali. Contoh persoalan yang menggunakan While yaitu untuk menentukan sisa pembagian bulat tanpa menggunakan operator bawaan mod dan div. Algoritma yang dipakai untuk memperoleh solusi sisa pembagian bulat adalah sebagai berikut (algoritma ini hanya berlaku untuk bilangan bulat positif saja). 1) Masukkan Penyebut 2) Masukkan Pembilang 3) Berikan nilai Penyebut ke Sisa. 4) Selama nilai Sisa lebih besar atau sama dengan Pembilang, maka kurangilah nilai Sisa sebesar Pembilang. 5) Tampilkan nilai Sisa ke layar. Program Sisa_pembagian; Uses wincrt; Var Penyebut, Pembilang, Sisa : Word; Begin CLRSCR; Write (‘masukkan nilai Penyebut dan Pembilang (positif) : ’); Readln(Penyebut, Pembilang); Sisa := Penyebut; While (Sisa >= Pembilang) do Dec (Sisa, Pembilang); Writeln (‘Sisa pembagian ’, Penyebut, ‘ dengan ‘, Pembilang,’ = ‘, Sisa); Readln End. Contoh eksekusi : Masukkan nilai Penyebut dan Pembilang (positif) : 7 2 Sisa pembagian 7 dengan 2 = 1 Pada program ini, pernyataan While (Sisa= Pembilang) DO DEC (Sisa, Pembilang); Adalah implementasi langkah nomor 4 dalam algoritma untuk memperoleh sisa pembagian bulat (yang artinya, selama nilai Sisa lebih besar dari atau sama dengan pembilang, maka kurangilah nilai Sisa sebesar Pembilang). Pernyataan yang ada dalam WHILE (DEC Sisa, Pembilang) tidak akan dikerjakan sama sekali apabila pada saat masuk ke WHILE, kondisi dalam WHILE bernilai salah (yaitu jika Penyebut < Pembilang). Pernyataan WHILE juga bisa diterapkan untuk menggantikan pernyataan REPEAT. Sebagai contoh, program tentang pembuatantabel konversi suhu (Program 5-9) akan dilaksanakan dengan menggunakan pernyataan WHILE pada program 5-10. Pada Program 5-10 ungkapan nalar sesudah kata-tercadang WHILE harus dibuat terlebih dulu bernilai benar, supaya pernyataan yang mengikutinya diproses. C. Pengulangan Repeat....Until Tidak jauh berbeda dengan pengulangan pada while do, statement repeat until juga dapat digunakan untuk melakukan proses perulangan suatu statement atau blok statement secara terus menerus selama kondisi pada until terpenuhi. Perbedaannya jika while-do penyeleksian di awal kalang maka repeat-until di akhir kalang, dan pada repeat-until tidak perlu blok statement karena akhir statement sudah sitentukan yaitu pada Until. Bentuk umumnya : Repeat Statement 1 Statement 2 Statement n Until Artinya : selama kondisi tersebut terpenuhi maka proses akan berulang pada statement tersebut. Prose pengulangan akan berhenti jika kondisinya salah. Pernyataan REPEAT digunakan untuk pengulangan proses yang jumlahnya belum pasti, tetapi minimal proses akan dikerjakan sekali. Pengujian kondisi pengulangan pada REPEAT dilakukan setelah proses dikerjakan. Selama ungkapan nalar yang dijadikan kondisi bernilai salah, maka proses akan dikerjakan terus-menerus. Oleh karena itu, pernyataan REPEAT sering dikatakan sebagai pengulangan proses selama kondisi salah. Persoalan yang menggunakan pernyataan REPEAT misalnya yaitu untuk menghitung jumlah deret : 1/1 + 1/3 + 1/5 + ... + 1/N Jika dituangkan dalam program : Program Deret; Uses Wincrt; Const BEL = ^G; Var N, Pembagi : Byte; Jumlah : Real; Ganjil : Boolean; Begin CLRSCR; Writeln (‘Menghitung : 1/1 + 1/3 + 1/5 + ... + 1/N’); Writeln; { Peroleh bilangan ganjil } Repeat Write (‘Masukkan nilai N: ‘); Readln (N); Ganjil := ODD(N); If Not Ganjil Then Writeln (BEL, ‘N harus berupa bilangan ganjil !’) Until ganjil; {Hitung Jumlah deret} Jumlah := 0; Pembagi : = 1; Repeat Jumlah := Jumlah + 1 / Pembagi; INC (Pembagi, 2) Until Pembagi > N; {Cetak jumlah} Writeln (‘Jumlah = ‘, Jumlah : 12 : 6); Readln End. Contoh eksekusi: Menghitung : 1/1 + 1/3 + 1/5 + ... + 1/N Masukkan nilai N : 5 Jumlah = 1.533333 Pada Program : Repeat Write (‘Masukkan nilai N:’); Readln (N); Ganjil : = ODD(N); If Not Ganjil Then Writeln (BEL, ‘N harus berupa bilangan ganjil !’); Until Ganjil; D. Label dan Goto Pernyataan goto mentransfer program ke lokasi lain yang dinyatakan dengan label, dimana merupakan tipe integer dengn maksimum 4 digit. Label juga harus dideklarasikan seperti variabel lainnya. Penulisan Goto: goto Contoh goto: goto 100; Penulisan Label : label Contoh deklarasi Label: label 100, 200, 300; penulisan pemakaian Label: SYNTAX < label >: Daftar Pustaka Jogiyanto. 1988. Teori dan Aplikasi Program Komputer Bahasa Turbo Pascal (Jilid I). Yogyakarta: Penerbit Andi. Munir, Rinaldi. 2004. Pengantar Algoritma dan Pemrograman dalam Bahasa Pascal dan C. Bandung: Informatika. Sanjaya, Alwin. 2003. Cepat Mahir Bahasa Pascal. Ilmu Komputer.com Tim Asisten. 2009. Modul Praktikum Program Komputer I. Inderalaya: Universitas Sriwijaya. IV. Algoritma Deklarasi Pas:string I:byte Deskripsi Read(pas) If pas<>’1234’ then i 1 repeat write (‘silakan ulangi lagi’) i i+1 until (pas ‘1234’) or (i 3) if pas=’1234’ then write(‘silakan masuk’) else write(‘goog bye’) endif write(‘silakan masuk’) endif. VI. Program Program pengulangan_password_sahrul; uses wincrt; var pas:string; i:byte; begin write('masukkan password=');readln(pas); if(pas<>'1234')then begin i:=1; repeat write('silakan ulangi lagi');readln(pas); i:=i+1; until(pas='1234') or (i>=3); if (pas='1234') then write('silakan masuk') else write('good bye'); end else write('silakan masuk'); end. VIII. Pembahasan Pada praktikum minggu kemarin kita membahas mengenai pernyataan pengulangan. Pengulangan adalah beberapa pernyataan yang dapat menjalankan eksekusi secara terus menerus berkali – kali. Pada pengulangan ini dibagi menjadi empat pernyataan, yaitu Pernyataan FOR–TO–DO, Pernyataan FOR–DWON–TO, Pernyataan WHILE–DO, dan RepeatUntil. Pernyataan For–TO–Do masih terbagi menjadi dua bagian, yaitu pengulangan positif dengan bentuk umum : For indeks := nilai awal indeks To nilai akhir indeks Do Statement, sedangkan pada pengulangan negative bentuk umumnya For indeks := nilai akhir indeks DownTo nilai awal indeks Do Statement. Perbedaannya kalau dengan struktur For–To–Do dihitung maju sedangkan dengan struktur For – DownTo – Do dihitung mundur. Contoh program penggunaan struktur For – To – Do, misalnya mencetak angka 1 sampai 10 yaitu dengan menggunakan variable I dengan tipe data integer. Dengan nilai awal indeksi 1 dan nilai akhir indeks 10. lalu mengetik perintah write / writeln ( i ). Setelah selesai untuk mengeksekusi program tersebut kita mengkilik Run ( Ctrl + F9 ). Maka program dapat dijalankan atau digunakan. Selanjutnya pada pernyataan pengulangan juga dapat menggunakan pernyataan / struktur While – Do. Struktur While – Do digunakan pada proses pengulangan bersyarat di mana proses pengulangan akan terus – menerus berlangsung sampai kondisi ungkapan logika pada while masih benar, jika salah maka akan berhenti dengan sendirinya. Bentuk umumnya : While < kondisi > do Begin - statement - statement End; Artinya selama kondisi tersebut terpenuhi maka proses akan berulang pada blok statement. Pada sturktur While – Do menggunakan blok statement dengan mengawali begin…end, karena statement / aksi yang digunakan lebih dari satu. Contoh program yang menggunakan struktur While – Do, misalnya mencetak angka 1 sampai 10 yaitu menggunakan variable I dengan tipe data byte. Masukkan atau misalkan i itu sebagai 0, dengan kondisi i <=9 menggunakan blok statement maka cetaklah I, dan melakukan proses i = i + 1. untuk lebih jelasnya lihat program di bawah ini. Program mencetak_angka_1_sampai_10; Uses wincrt; Var i:byte; begin i:=0; while (1<=9) do begin write (i); i:=i+1; end; end. Untuk mengecek program yang dibuat benar atau salah maka mengklik compile ( Alt + F9 ) jika benar maka langkah selanjutnya untuk dapat mengeksekusi atau menjalankan program tersebut maka dengan mengklik RUN ( Ctrl + F9 ) maka program siap untuk dijalankan. Untuk yang terakhir adalah struktur Repeat…Until digunakan untuk melakukan proses perulangan suatu statement secara terus menerus selama kondisi pada until terpenuhi. Perbedaannya dengan While – Do, adalah jika repeat … until penyeleksian kondisinya diakhir kalang sedangkan while – do di awal kalang. Artinya kalau pada while – do, ia akan menyeleksi kondisinya terlebih dahulu jika kondisinya benar atau terpenuhi maka statement atau aksinya akan diproses, sampai kondisinya tidak terpenuhi / salah. Sedangkan pada repeat … until statement atau aksinya yang terlebih dahulu diproses dan jika kondisinya terpenuhi maka akan berhenti. Pada repeat … until tidak perlu menggunakan blok statement karena sudah ada Until sebagai akhir statement. Contoh program yang menggunakan struktur repeat … until, misalnya mencetak angka 1 sampai 10, masukkan 1 pada i, cetak / write i dan melakukan proses i:=i+1, hal tersebut diprose berulang – ulang hingga i=9. Berikut bentuk program dengan pascalnya. Program cetak_1_sampai_10; Uses wincrt; Var i:byte; begin i:=1; repeat write (i); i:=i+1; until i=9 end. Agar tampilan 1 -3 5 -7 9 -10 Maka programnya yaitu: Program angka; Uses wincrt; Var I:byte; N:integer; Begin Read(n) a:=-1; I:=1; While i<=n do Begin a:=a*-1; Writeln (a*i); i:=i+2; end; end. Agar tampilan 1/2 2/3 3/4 4/5 Maka Programnya yaitu: Program; Uses wincrt; Var i:byte; n:integer; begin read(n) i:=1; while i<= n do begin wirteln (i,’/’,i+1) i:=i+1; end; end. Program yang kita buat dalam praktikum kali ini yaitu program hitung jumlah deret 1/2 ,2/3, 3/4 .... Struktur pengulangan yang kita gunakan dalam pembuatan program ini yaitu struktur while...do dan struktur for...do. Meskipun struktur yang digunakan berbeda, tetapi hasil programnya menunjukkan hasil yang sama waaupun gaya pemogramannya berbeda Pada pembuatan program deret ini, kita mendeklarasikan terlebih dahulu variabel-variabel yang akan kita gunakan selama jalannya program, apakah bernilai integer ataukah bernilai real. Setelah itu, kita buat pernyataan-pernyataan sebagaimana pembuatan program seperti biasanya. Setelah itu, kita tentukan parameter-parameter yang akan menjadi output atau pun menjadi input. Perlu diingat bahwa dalam pengulangan kita perlu membuat variabel yang brfungsi sebagai penyimpan bilangan pencacah pengulangan. Dalam program deret hitung yang kita buat yaitu menggunakan struktur for...do dan while...do. Jadi, kita harus membuat kondisi penguangannya di awal karena pada struktur pengulangan for...do dan while...do pemeriksaannya dilakukan di awal. Setelah program dijalankan, maka program tersebut akan meminta kita untuk menginputkan suatu nilai (dalam hal ini, kita perlu menginputkan batasan nilai deret yang akan kita hitung jumlahnya). Program tidak akan dijalankan jika kita tidak menginputkan nilai masukkan. Setelah nilai masukkan diperiksa kondisinya, maka program akan langsung mengeksekusi nilai tersebut. Jika nilai memenuhi syarat, maka program akan secara otomatis melakukan pengulangan sampai kondisi nilai yang kita masukkan tadi tidak memenuhi syarat. Setelah nilai tidak memenuhi syarat agi maka program akan langsung mengeksekusi pernyataan selanjutnya. IX. KESIMPULAN : 1. Pada pengulangan terbagi menjadi tiga jenis pernyataan, yaitu For – Do, While – Do, Repeat … Until. 2. Dalam pernyataan For – Do dibagi lagi pengulangan positif yaitu For – To – Do dan pengulangan negatif, yaitu For – DownTo – Do. 3. Pada While – Do penyeleksian kondisinya terjadi di awal kalang sedangkan Repeat … Until di akhir kalang. 4. Pada Repeat … Until tidak perlu blok statement karena antara akhir statement sudah ditentukan oleh Until. 5. Pada While – Do selama kondisi tersebut terpenuhi maka proses akan berulang pada blok statement. 6. Pada Repeat … Until aksi / statementnya akan diproses terlebih dahulu samapai kondisi benar dan akan berhenti jika kondisinya salah. X. TUGAS Algoritma Deklarasi Z:integer; Deskripsi Read(z) If z div 10000=2 then z z -20000 write(‘ada puluhan ribu’) If z div 1000<>1 then z z-1000 write(‘ada ribuan’) if z div 200<>2 then z z-100 write(‘ada ratusan’) if z div 10<>2 then z z-20 write(‘ada puluhan’) if z div 2<>2 then z z-4 write(‘ada satuan’); endif Algoritma {menghitung nilai a dengan rumus n(n+1) dengan menginput nilai a,jumlah,1,dan n} Deklarasi a:integer{penyimpanan rumus yang akan digunakan} i:integer{pencatat banyaknya pengulangan} n:integer{jumlah data>0} jum:integer{pencatat jumlah nilai} Deskripsi Read(n) jumlah 0 a 0 for i i to n do a i*(i+1) jumlah jum + a endfor write(jumlah) PROGRAM Program menghitung_notasi_sigma; uses wincrt; var a,jum,i,n:integer; begin a:=0; jum:=0; write('masukkan batas=');readln(n); for i:=1 to n do begin a:=i*(i+1); jum:=jum+a; end; writeln('maka hasilnya:',jum); end. Program uang; uses wincrt; var z:integer; begin writeln('..........................................................................................'); Write('<<>>= ');readln(z); Writeln; gotoxy(14,6); If z div 10000=2 then Begin z:=z-20000; Writeln('Ada puluhan ribu'); end; gotoxy(14,7); if z div 1000<>1 then Begin z:=z-1000; Writeln('Ada ribuan'); end; gotoxy(14,8); if z div 200<> 2 then Begin z:=z-200; Writeln('Ada ratusan'); end; gotoxy(14,9); if z div 10<>2 then Begin z:=z-20; Writeln('Ada puluhan'); end; gotoxy(14,10); if z div 2<>2 then Begin z:=z-4; Writeln('Ada satuan'); end; end.