algoritma_pemrograman terstruktur

19
Alur Program Input Proses Output Yang paling komplek ALGORITMA DAN PEMROGRAMAN TERSTURKTUR Oleh : Aslam Fatkhudin, S.Kom 3 krtiteria program yang baik : 1. Correct benar. 2. Clear jelas. 3. Efficient efisien. Agar program memenuhi 3 kriteria di atas), maka kita harus mengetahui Langkah-langkah Pemrograman: 1. Mendefiniskan masalah. 2. Garis besar (outline) pemecahan. 3. Menerjemahkan garis besar tersebut menjadi langkah-langkah yang lebih rinci / algoritma. 4. Menerjemahkan algoritma ke dalam bahasa pemrograman (pengkodean/coding). Kode / program = statement-statement yang dituliskan dalam bahasa pemrograman. 5. Pengujian (debugging) untuk menemukan bug/kesalahan, kemudian menghilangkannya. Algoritma : urutan langkah-langkah yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah dalam rentang waktu tertentu. Contohnya : langkah-langkah menelpon. Karakteristik / Syarat Algoritma : 1. Algoritma harus tidak ambigu (unambiguous) deskripsi langkah-langkah dalam algoritma harus dan hanya mempunyai tafsiran tunggal. 2. Algoritma langkah-langkahnya harus tepat (pricise). 3. Algoritma harus pasti (definite) jika serangkaian langkah-langkah yang sama dilakukan 2 kali maka hasilnya harus sama. 4. Algoritma harus berhingga (finite) selesai dalam rentang waktu tertentu. Cara Penulisan Algoritma : 1. Uraian deskriptif (bahasa alamiah). 2. Pseudocode. 3. Flowchart (bagan alir) = bagan yang menggambarkan urutan instruksi untuk proses dengan komputer dan hubungan antara suatu proses dengan proses lainnya dengan menggunakan simbol. SIMBOL-SIMBOL FLOWCHART A. FLOW DIRECTION SYMBOLS SIMBOL KEGUNAAN Simbol Arus (Flow) Untuk menghubungkan antara simbol yang satu dengan simbol yang lainnya. Simbol Communication Link Simbol transmisi untuk informasi dari satu lokasi ke lokasi lainnya.

Upload: abdul-rohim

Post on 25-Nov-2015

17 views

Category:

Documents


2 download

TRANSCRIPT

  • Alur Program Input Proses Output

    Yang paling komplek

    ALGORITMA DAN PEMROGRAMAN TERSTURKTUR Oleh : Aslam Fatkhudin, S.Kom

    3 krtiteria program yang baik : 1. Correct benar. 2. Clear jelas. 3. Efficient efisien.

    Agar program memenuhi 3 kriteria di atas), maka kita harus mengetahui Langkah-langkah Pemrograman: 1. Mendefiniskan masalah. 2. Garis besar (outline) pemecahan. 3. Menerjemahkan garis besar tersebut menjadi langkah-langkah yang lebih rinci / algoritma. 4. Menerjemahkan algoritma ke dalam bahasa pemrograman (pengkodean/coding). Kode /

    program = statement-statement yang dituliskan dalam bahasa pemrograman. 5. Pengujian (debugging) untuk menemukan bug/kesalahan, kemudian menghilangkannya.

    Algoritma : urutan langkah-langkah yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah dalam rentang waktu tertentu. Contohnya : langkah-langkah menelpon.

    Karakteristik / Syarat Algoritma : 1. Algoritma harus tidak ambigu (unambiguous) deskripsi langkah-langkah dalam

    algoritma harus dan hanya mempunyai tafsiran tunggal. 2. Algoritma langkah-langkahnya harus tepat (pricise). 3. Algoritma harus pasti (definite) jika serangkaian langkah-langkah yang sama dilakukan 2

    kali maka hasilnya harus sama. 4. Algoritma harus berhingga (finite) selesai dalam rentang waktu tertentu.

    Cara Penulisan Algoritma : 1. Uraian deskriptif (bahasa alamiah). 2. Pseudocode. 3. Flowchart (bagan alir) = bagan yang menggambarkan urutan instruksi untuk proses dengan

    komputer dan hubungan antara suatu proses dengan proses lainnya dengan menggunakan simbol.

    SIMBOL-SIMBOL FLOWCHART

    A. FLOW DIRECTION SYMBOLS

    SIMBOL KEGUNAAN

    Simbol Arus (Flow)

    Untuk menghubungkan antara simbol yang satu dengan simbol yang lainnya.

    Simbol Communication Link

    Simbol transmisi untuk informasi dari satu lokasi ke lokasi lainnya.

  • Simbol Connector

    Simbol untuk keluar/masuk prosedur atau proses dalam lembar/halaman yang sama.

    Simbol Off-Line Connector

    Simbol untuk keluar/masuk prosedur atau proses dalam lembar/halaman yang lain.

    B. PROCESSING SYMBOLS

    SIMBOL KEGUNAAN

    Simbol Process

    Simbol yang menunjukkan pengolahan yang dilakukan oleh komputer.

    Simbol Manual Operation

    Simbol yang menunjukkkan pengolahan yang tidak dilakukan oleh komputer.

    Simbol Decision

    Simbol untuk kondisi yang akan menghasilkan beberapa kemungkinan jawaban/aksi.

    Simbol Predefined Process

    Simbol untuk mempersiapkan penyimpanan yang akan digunakan sebagai tempat pengolahan di dalam storage.

    Simbol Terminal

    Simbol untuk permulaan atau akhir dari suatu program.

    Simbol Keying Operation

    Simbol operasi dengan menggunakan mesin yang mempunyai keyboard.

    Simbol Off-Line Storage

    Simbol untuk menunjukkan bahwa data di dalam simbol ini akan disimpan.

    Simbol Manual Input

    Simbol untuk pemsukkan data secara manual on-line keyboard.

  • C. INPUT-OUTPUT SYMBOLS

    SIMBOL KEGUNAAN

    Simbol Input-Output

    Simbol yang menyatakan proses input dan output tanpa tergantung dengan jenis peralatannya.

    Simbol Punched Card

    Simbol yang menyatakan input berasal dari kartu atau output ditulis ke kartu.

    Simbol Magnetic Tape Unit

    Simbol yang menyatakan input berasal dari pita magnetik atau output disimpan ke pita magnetik.

    Simbol Disk and On-Line Storage

    Simbol untuk menyatakan input berasal dari disk atau output disimpan ke disk.

    Simbol Document

    Simbol-simbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas.

    Simbol Transmittal Tape

    Simbol untuk menyatakan input berasal dari mesin jumlah/hitung.

    Simbol Display

    Simbol yang menyatakan peralatan output yang digunakan yaitu layar, plotter, printer dan sebagainya.

    PASCAL

    Dalam mempelajari algoritma, dipakai bahasa pemrograman Pascal untuk membantu pemahaman. Bahasa Pascal dikembangkan pada awal tahun 1970-an oleh ilmuwan komputer Eropa, Niklaus Wirth (dibaca : Veert). Nama Pascal diambil dari nama ahli matematika Blaise Pascal yang menemukan mesin hitung mekanik pertama. Bahasa pemrograman pada tahun 1960-an sangat rumit, kemudian Wirth ingin menciptakan bahasa yang sederhana.

  • 1 PROSES BERURUTAN

    TUJUAN Cara membuat judul program. Menggunakan unit layer dengan uses crt. Mendeklarasikan tipe data byte dan real. Cara kerja instruksi write dan readln. Mengerti proses berurutan.

    PROSES PROGRAM YANG DIKEHENDAKI Masukan :

    Lama Menginap (nama variabelnya LM). Harga Kamar/hari (nama variabelnya HK).

    Rumus : Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Keluaran : JML

    FLOWCHART

    PROGRAM PRAKTEK1; (* PROSES BERURUTAN*)

    USES CRT; VAR

    LM : BYTE; HK, JML : REAL;

    BEGIN CLRSCR; WRITE (LAMA MENGINAP : ); READLN (LM); WRITE (HARGA KAMAR/HARI : Rp. ); READLN (HK); JML := LM * HK; WRITELN (JUMLAH BAYAR : Rp. ,JML:8:0);

    READLN; END.

    TUGAS 1 PROSES PROGRAM YANG DIKEHENDAKI Masukan :

    Banyak Barang yang dibeli (nama variabelnya BB). Harga Satuan barang (nama variabelnya HS).

    Rumus : Jumlah Bayar (nama variabelnya JB) dihitung dari BB dikali dengan HS. Keluaran : JB TAMPILAN DI SCREEN

    BANYAK BARANG = HARGA SATUAN = JUMLAH BAYAR =

    Catatan : Data Banyak Barang, Harga Satuan diinput, sedangkan Jumlah Bayar otomatis.

    BEGIN

    INPUT LM,HK

    JML=LM*HK

    PRINT JML

    END

  • 2 PROSES PENCABANGAN IF_THEN_ELSE

    (SATU PERNYATAAN)

    TUJUAN Mengerti proses pencabangan satu pernyataan. Mengerti penggunaan IF_THEN_ELSE

    PROSES PROGRAM YANG DIKEHENDAKI

    Masukan : Lama Menginap (nama variabelnya LM). Harga Kamar/hari (nama variabelnya HK).

    Rumus : Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Jika Jumlah Bayar lebih besar sama dengan 100000, maka mendapat potongan 10%, jika kurang dari 100000 maka tidak mendapat potongan. Total Bayar Akhir (nama variabelnya BYRAKH) dihitung dari JML dikurangi Potongan.

    Keluaran : BYRAKH

    FLOWCHART

    N

    Y

    BEGIN

    INPUT LM,HK

    JML=LM*HK

    PRINT JML,

    BYRAKH

    END

    IF JML>=100000

    BYRAKH := JML-(JML*0.1)

    BYRAKH := JML

  • PROGRAM PRAKTEK2; (* PENCABANGAN IF_THEN_ELSE_SATU_PERNYATAAN*)

    USES CRT; VAR

    LM : BYTE; HK, JML,BYRAKH : REAL;

    BEGIN CLRSCR; WRITE (LAMA MENGINAP = ); READLN (LM); WRITE (HARGA KAMAR/HARI = Rp. ); READLN (HK); JML := LM * HK; IF JML >= 100000 THEN BYRAKH := JML (JML * 0.1) ELSE BYRAKH := JML;

    WRITELN (JUMLAH BAYAR : Rp. ,JML:8:0); WRITELN;

    WRITELN (TOTAL BAYAR AKHIR = Rp. ,BYRAKH:12:0); READLN;

    END.

    TUGAS 2

    PROSES PROGRAM YANG DIKEHENDAKI

    Masukan : Nama Siswa (nama variabelnya NS). Nilai Pascal (nama variabelnya NP).

    Rumus : Keterangan Nilai (nama varaibelnya KN) ditentukan dari Nilai ujian Pascal, jika NP lebih besar sama dengan 56, maka variabel KN berisi LULUS, jika NP kurang dari 56, maka variabel KN berisi GAGAL.

    Keluaran : KN

    TAMPILAN DI SCREEN

    NAMA SISWA = NILAI PASCAL =

    KETERANGAN NILAI =

    Catatan : Nama Siswa dan Nilai Pascal diinput, sedangkan Keterangan Nilai otomatis.

  • 3 PROSES PENCABANGAN IF_THEN_ELSE

    (BLOK PERNYATAAN)

    TUJUAN Mengerti cara mendeklarasikan jenis data string. Mengerti cara kerja IF_THEN_ELSE blok pernyataan.

    PROSES PROGRAM YANG DIKEHENDAKI

    Masukan : Lama Menginap (nama variabelnya LM). Harga Kamar/hari (nama variabelnya HK).

    Rumus : Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Jika Jumlah Bayar lebih besar sama dengan 200000, maka mendapat Discount 20% dan Keterangan (nama variabelnya KET) DPT DISC, jika kurang dari 200000 maka tidak mendapat Discount dan Keterangan TAK DISC. Total Bayar Akhir (nama variabelnya BYRAKH) dihitung dari JML dikurangi Discount.

    Keluaran : BYRAKH

    FLOWCHART

    N

    Y

    BEGIN

    INPUT LM,HK

    JML=LM*HK

    PRINT JML, KET BYRAKH

    END

    IF JML>=200000

    BYRAKH := JML-(JML*0.2) KET := DPT DISC

    BYRAKH := JML KET := TAK DISC

  • PROGRAM PRAKTEK3; (* PENCABANGAN IF_THEN_ELSE_BLOK_PERNYATAAN*)

    USES CRT; VAR

    LM : BYTE; KET : STRING [8]; HK, JML,BYRAKH : REAL;

    BEGIN CLRSCR; WRITE (LAMA MENGINAP = ); READLN (LM); WRITE (HARGA KAMAR/HARI = Rp. ); READLN (HK); JML := LM * HK; IF JML >= 200000 THEN BEGIN BYRAKH := JML (JML * 0.2); KET := DPT DISC; END ELSE BEGIN BYRAKH := JML; KET := TAK DISC; END;

    WRITELN (JUMLAH BAYAR = Rp. ,JML:8:0); WRITELN (KETERANGAN = ,KET); WRITELN; WRITELN (TOTAL BAYAR AKHIR = Rp. ,BYRAKH:12:0); READLN;

    END.

    TUGAS 3

    PROSES PROGRAM YANG DIKEHENDAKI Masukan :

    Nama Karyawan (nama variabelnya NK). Gaji Pokok (nama variabelnya GP). Jumlah Jam Kerja (nama variabelnya JJK).

    Rumus : Gaji Kotor (nama variabelnya GK) dihitung dari GP dikali JJK. Jika GK lebih besar sama dengan 500000 dikenakan pajak (nama variabelnya TAX) 5% dan pada variabel Keterangan (nama varaibelnya KET) diisi PAJAK, sebaliknya jika GK dibawah 500000, tidak dikenakan pajak dan variabel Keterangan diisi TAK PAJAK, Gaji Bersih yang diterima (nama variabelnya GB) dihitung dari GK dikurangi TAX.

    Keluaran : GB

    TAMPILAN DI SCREEN

    NAMA KARYAWAN = GAJI POKOK = JUMLAH JAM KERJA =

    GAJI KOTOR = PAJAK = GAJI BERSIH =

    KETERANGAN =

    Catatan : NK, GP dan JJK diinput, sedangkan GK, TAX, GB dan KET otomatis.

  • Soal 1: Kelulusan mahasiswa ditentukan berdasar nilai ujian yang didapatkan. Jika nilai ujian lebih dari atau sama dengan 70, mahasiswa dinyatakan lulus dan jika tidak, dinyataan tidak lulus. Buatlah program yang membaca nilai ujian dan menentukan status kelulusan dengan menampilkan pesan yang sesuai di layar.

    Analisis : berdasar soal diatas terdapat dua kondisi yang mungkin terjadi, yaitu nilai lebih dari atau sama dengan 70. Karena kedua kondisi ini saling melengkapi, maka bagian else dalam statement if digunakan. Langkah-langkah pemecahan masalahnya menjadi : 1. Membaca nilai ujian 2. Memeriksa nilai ujian dan menampilkan pesan.

    Solusi : Program kelulusan; {menampilkan status kelulusan berdasar nilai yang dibaca}

    Var Nilai : integer; Begin {membaca nilai ujian} Write (Nilai ujian :); Readln (nilai); {memeriksa nilai dan menampilkan pesan} If nilai >= 70 then Writeln (Lulus) Else Writeln (Tidak Lulus);

    End.

    Tampilan di screen : Nilai ujian : 65 Tidak lulus

    Buatlah Flowchart untuk soal di atas

    Soal 2: Sebuah perusahaan ingin menambah kesejahteraan karyawannya dengan memberlakukan upah yang berbeda jika terdapat karyawan yang kerja lembur. Jam kerja karyawan selama satu minggu diluar jam lembur adalah 40 jam. Jika seorang karyawan bekerja lebih dari 40 jam seminggu, maka sisanya dihitung sebagai lembur. Upah lembur perjam adalah dua kali upah per jam biasa. Buatlah program yang membaca jumlah jam kerja dalam satu minggu dan upah per jam yang berlaku, menghitung upah per minggu yang diterima, serta menampilkannya di layar.

    Analisis : berdasar soal diatas dapat ditarik sebuah simpulan, bahwa terdapat karyawan yang bekerja kurang dari atau sama dengan 40 jam seminggu dan karyawan yang bekerja lebih dari 40 jam seminggu. Masalah ini dapat dipecahkan dengan dua cara : 1. Menggunakan statement if tanpa bagian else, dan 2. Statement if dengan bagian else. Secara umum, langkah-langkah pemecahan masalahnya adalah : 1. Membaca jam kerja. 2. Membaca upah per jam. 3. Menghitung upah. 4. Menampilkan upah.

    Solusi 1: Program hitung_upah; {menghitung upah per minggu berdasar jam kerja dan upah per jam }

    uses wincrt;

  • Var Jamkerja : integer; upahperjam, upah : real; Begin clrscr; {membaca jam kerja} Write ('Jam kerja :'); Readln (jamkerja);

    {membaca upah per jam} Write ('Upah per jam :'); Readln (upahperjam);

    {menghitung upah} Upah := 40 * upahperjam; If jamkerja > 40 then Upah := upah + ((jamkerja - 40) * (2 * upahperjam));

    {menampilkan upah} Write ('Upah yang diterima sebesar Rp. ' , upah:12:0); End.

    Tampilan di screen : Jam kerja : 35 Upah per jam : 1000 Upah yang diterima sebesar Rp. 35000

    Solusi 2: Program hitung_upah; {menghitung upah per minggu berdasar jam kerja dan upah per jam } uses wincrt; Var Jamkerja : integer; upahperjam, upah : real; Begin clrscr; {membaca jam kerja} Write ('Jam kerja :'); Readln (jamkerja); {membaca upah per jam} Write ('Upah per jam :'); Readln (upahperjam); {menghitung upah} If jamkerja 40} Upah := (40 * upahperjam) + ((jamkerja - 40) * (2 * upahperjam)); {menampilkan upah} Write ('Upah yang diterima sebesar Rp. ' , upah:12:0); End.

    Tampilan di screen : Jam kerja : 50 Upah per jam : 1000 Upah yang diterima sebesar Rp. 60000

    Buatlah Flowchart untuk soal di atas

  • 4 BEBERAPA IF

    TUJUAN Mengerti menyusun beberapa IF secara terstruktur. Mengerti format tampiilan jenis data real.

    PROSES PROGRAM YANG DIKEHENDAKI

    Masukan : Lama Menginap (nama variabelnya LM). Harga Kamar/hari (nama variabelnya HK).

    Rumus : Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Ketentuan discount dapat dilihat pada tabel di bawah ini.

    JUMLAH BAYAR DISCOUNT JML > 300000 200000 < JML

  • END

    JML, KET

    BYRAKH

    N

    Y

    BYRAKH=JML

    IF JML > 100000

    KET = DAPAT DISC

    A B

    N

    Y BYRAKH := JML-(JML*0.1)

    IF JML > 100000

    N

    KET = TAK DISC

  • PROGRAM PRAKTEK4; (* PENCABANGAN_BEBERAPA_IF *) USES CRT; VAR

    LM : BYTE; KET : STRING [10]; HK, JML,BYRAKH : REAL;

    BEGIN CLRSCR; WRITE (LAMA MENGINAP = ); READLN (LM); WRITE (HARGA KAMAR/HARI = Rp. ); READLN (HK); JML := LM * HK; IF JML > 300000 THEN BYRAKH := JML (JML * 0.3) ELSE IF JML > 200000 THEN BYRAKH := JML (JML * 0.2) ELSE IF JML > 100000 THEN BYRAKH := JML (JML * 0.1) ELSE BYRAKH := JML; IF JML > 100000 THEN KET := DAPAT DISC ELSE KET := TAK DISC;

    WRITELN (JUMLAH BAYAR = Rp. ,JML:14:0); WRITELN (KETERANGAN = ,KET); WRITELN (TOTAL BAYAR AKHIR = Rp. ,BYRAKH:14:0); READLN;

    END.

    TUGAS 4

    PROSES PROGRAM YANG DIKEHENDAKI Masukan :

    Nama Induk Mahasiswa (nama variabelnya NIM). Nama Mahasiswa (nama variabelnya NAMA). Nilai Pascal (nama variabelnya NILPAS).

    Rumus : Nilai Mutu Huruf (nama variabelnya INDEK) ditemtukan dari tabel di bawah ini :

    NILAI MUTU HURUF

    NILPAS >= 85 70

  • N

    N

    N

    N

    Y

    B

    BYRAKH := JML-(JML*0.2)

    BEGIN

    INPUT LM,HK

    JML=LM*HK

    A

    PRINT JML

    PRINT HEADER

    MENU

    INPUT PILIH

    CASE PILIH=1

    A

    B

    CASE PILIH=2

    CASE PILIH=3

    CASE PILIH=4

    Y

    Y

    Y

    BYRAKH := JML-(JML*0.3)

    BYRAKH := JML-(JML*0.1)

    BYRAKH := JML

    PILIHN SALAH

    PRINT BYRAKH

    END

    6 PROSES PENCABANGAN CASE

    TUJUAN Mengetahui perbedaan instruksi pencabangan IF dibandingkan dengan instruksi CASE. Memahami instruksi menuju ke posisi tertentu dengan instruksi GOTOXY.

    PROSES PROGRAM YANG DIKEHENDAKI

    Masukan : Lama Menginap (nama variabelnya LM). Harga Kamar/hari (nama variabelnya HK).

    Rumus : Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Jika JML diatas 300000 dapat discount 30%, jika JML diatas 200000 dapat discount 20%, jika JML diatas 100000 dapat discount 10%. Total Bayar Akhir (nama variabelnya BYRAKH) dihitung dari JML dikurangi discount.

    Keluaran : BYRAKH

    FLOWCHART

  • PROGRAM PRAKTEK6; (*PENCABANGAN CASE*) USES CRT; VAR

    LM,PILIH : BYTE; HK, JML,BYRAKH : REAL;

    BEGIN CLRSCR; GOTOXY(10,2); WRITE (LAMA MENGINAP = ); READLN (LM);

    GOTOXY(10,3); WRITE (HARGA KAMAR/HARI = Rp. ); READLN (HK); JML := LM * HK;

    GOTOXY(10,4); WRITELN (JUMLAH BELI =,JML:8:0); WRITELN; GOTOXY(10,6); WRITELN ( > ); GOTOXY(10,7); WRITELN (1. 300000 KEATAS ); GOTOXY(10,8); WRITELN (2. 200000 < JML

  • STATEMEN WHILE Jika banyak perulangan yang akan dilakukan sudah diketahui, maka statemen for yang

    digunakan. Bagaimana jika banyak perulangan tidak diketahui? Salah satunya dapat menggunakan statemen while. Statemen while mirip dengan statemen if yang melakukan pemeriksaan ekspresi boolean sebelum sebuah atau serangkaian statemen dilakukan.

    Skema umum statemen while adalah :

    While kondisi do Statemen

    Kondisi adalah sebuah ekspresi boolean. Jika ekspresi boolean bernilai true, statemen dijalankan dan ekspresi boolean tersebut diperiksa kembali, dan keluar dari perulangan jika ekspresi boolean bernilai false. Dengan demikian, banyak perulangan yang dilakukan sama dengan banyak pmeriksaan ekspresi boolean yang mengirimkan harga true. Contoh :

    program jumlahinteger; {menjumlahkan integer, 1 sampai dengan batas, menggunakan statemen while} uses crt; var i : integer; batas : integer; hasil : integer;

    begin clrscr; write ('Masukkan integer positif : '); readln (batas); hasil := 0; i := 0; while i=batas} write ('Jumlah 1 sampai ', batas, ' = '); write (hasil); readln; end.

    Masukkan/Keluaran Masukkan integer positif : 10 Jumlah 1 sampai 10 = 55

    Perhatikan bagian program di atas

    hasil := 0; i := 0; while i

  • sebelum statemen while, hasil dan i masing-masing diberi nilai awal 0. while dan do adalah reserved word pada Pascal. Jika statemen di bawah statemen while lebih dari satu, maka serangkaian statemen tersebut harus diawali dengan begin dan diakhiri dengan end.

    Jika ekspresi boolean

    i

  • STATEMEN REPEAT Pada statemen while pemeriksaan kondisi atau ekspresi boolean dilakukan pada awal

    perulangan. Hal ini memungkinkan statemen di bawah statemen while tidak pernah dilakukan, yaitu jika pada pemeriksaan pertama, ekspresi booolean bernilai false. Berbeda dengan statemen while, pada statemen statemen repeat pemeriksaan ekspresi boolean dilakukan pada akhir perulangan, sehingga statemen dalam perulangan minimal dilakukan sekali.

    Skema umum statemen repeat adalah :

    Repeat Statemen Until kondisi

    Dimana kondisi adalah sebuah ekspresi boolean. Jika kondisi berharga true perulangan selesai dan statemen tidak dijalankan lagi, dan sebaliknya, jika kondisi berharga false statemen dijalankan lagi. repeat dan until adalah reserved word Pascal. Contoh :

    program derethuruf; {menuliskan angka mulai 'a' sampai dengan batas} uses crt; var cc, batas : char;

    begin clrscr; write ('Masukkan huruf, a .. z : '); readln (batas); cc := 'a'; repeat write (cc); cc := succ(cc); until (cc>batas); readln; end.

    Perhatikan potongan program di atas

    cc := 'a'; repeat write (cc); cc := succ(cc); until (cc>batas);

    terlihat bahwa statemen

    write (cc); cc := succ(cc);

    minimal dilakukan sekali, yaitu jika karakter yang dibaca dari keyboard (batas) adalah a, yang berarti program hanya akan menuliskan satu karakter. Setelah nilai cc atau a ditulis, nilai cc diganti dengan suksesor a, yaitu b. Kemudian pemeriksaan ekspresi boolean dilakukan, dan menghasilkan nilai true, karena cc atau b lebih besar daripada nilai batas, yaitu a.

    Jika dalam di bawah statemen while, terdapat lebih dari satu statemen harus digunakan begin dan end, pada statemen repeat hal tersebut tidak diperlukan lagi.

    Latihan : buatlah program yang menerima sebuah respon atau jawaban s untuk sudah dan b untuk belum terhadap sebuah pertanyaan Anda sudah berdoa?. Program akan terus menanyakan jawaban sampai jawaban yang diberikan adalah s atau b. Jika jawaban yang diberikan adalah s, tampilan pesan di layar Bagus, dan jika jawaban yang diberikan b, tampilan pesan di layar, Berdoa mendekatkan diri dengan Tuhan.

  • program sudah_berdoa; var jawab : char; begin repeat write ('Anda sudah berdoa? (s/b)'); readln (jawab); until (jawab = 's') or (jawab = 'b'); if jawab = 's' then write ('Bagus') else write ('Berdoa mendeekatkan diri dengan Tuhan.'); readln; end.

    program jumlahderetkuadrat; {menjulahkan deret kuadrat, mulai n sampai dengan 1, menggunakan statemen while} var n : integer; hasil: integer; begin write ('Masukkan integer positif : '); readln (n); hasil := 0; while n>0 do begin hasil := hasil + sqr(n); n := n - 1; end; {kondisi berhenti : n