06-pengulangan-atau-looping-1.pdf

14
Algoritma Pemrograman Pertemuan Ke-6 (Pengulangan atau Looping [1]) 1

Upload: ibnuhakimsmg

Post on 25-Nov-2015

14 views

Category:

Documents


0 download

DESCRIPTION

looping

TRANSCRIPT

  • Algoritma Pemrograman

    Pertemuan Ke-6 (Pengulangan atau Looping [1])

    1

  • Sub Pokok Bahasan

    Pendahuluan

    Struktur Pengulangan

    Pengulangan tanpa kondisi dan dengan kondisi

    Struktur FOR (menaik dan menurun)

    2

  • Pendahuluan

    Pengulangan (looping) adalah pelaksanaan suatu

    instruksi berulangkali

    Di dalam algoritma, pengulangan dapat dilakukan

    sejumlah kali, atau sampai kondisi berhenti

    pengulangan tercapai

    3

  • Struktur Pengulangan

    Bentuk Umum: awal pengulangan

    badan pengulangan

    akhir pengulangan

    : aksi yang dilakukan sebelum pengulangan dilakukan untuk pertama kalinya.

    badan pengulangan: bagian algoritma yang diulang

    : aksi yang dilakukan setelah pengulangan selesai dilaksanakan

    dan tidak selalu harus ada, namun pada berbagi kasus inisialisasi umumnya diperlukan

    awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang digunakan

    4

  • Macam struktur pengulangan

    pengulangan tanpa kondisi (unconditional looping): Struktur FOR jumlah pengulangan sudah diketahui sebelum eksekusi

    Struktur WHILE pengulangan dengan kondisi (conditional looping): jumlah pengulangan tidak diketahui sebelum eksekusi

    program. Yang dapat ditentukan hanya kondisi berhenti Struktur REPEAT pengulangan (instruksi-instruksi di dalam badan

    pengulangan diulangi sampai kondisi berhenti terpenuhi)

    5

  • Struktur FOR

    Jumlah pengulangan diketahui atau dapat ditentukan

    sebelum eksekusi.

    Untuk mencacah sudah jumlah pengulangan diperlukan

    sebuah peubah (variable) pencacah (counter). Peubah ini

    nilainya selalu bertambah satu setiap kali pengulangan

    dilakukan

    Jika cacah pengulangan sudah mencapai jumlah yang

    dispesifikasikan, maka proses pengulangan berhenti

    Bentuk umum struktur FOR:

    Menaik (ascending)

    Menurun (descending)

    6

  • Struktur FOR: menaik

    for pencacah nilai_awal to nilai_akhir do

    aksi

    endfor

    pencacah menggunakan tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah)

    aksi satu atau lebih instruksi yang diulang.

    nilai_awal harus lebih kecil atau sama dengan nilai_akhir (jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki)

    pada awalnya pencacah diinisialisasikan dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir

    jumlah pengulangan yang terjadi = nilai_akhir nilai_awal + 1

    7

  • Contoh 1: Mencetak tulisan Informatika sebanyak 5 kali

    Algoritma CETAK_INFORMATIKA Jumlah pengulangan sudah { Mencetak Informatika sebanyak 5 kali } ditentukan sebelumnya (5 kali)

    DEKLARASI Badan pengulangan hanya berisi k : integer { pencacah pengulangan } satu instruksi, yaitu

    write(Informatika) DESKRIPSI :

    k adalah peubah pencacah yang for k1 to 5 do {ulangi sebanyak 5 kali} bertipe integer

    write(Informatika) pada mulanya k bernilai 1, nilai k

    endfor selalu bertambah 1 setiap kali pengulangan dilakukan, sampai akhirnya k mencapai 5

    Program CETAK_INFORMATIKA; Jumlah pengulangan yang { Mencetak Informatika sebanyak 5 kali } dilakukan:

    (* DEKLARASI *) 5 1 + 1 = 5 kali

    var Keluaran dari algoritma CETAK_INFORMATIKA adalah k : integer; string Informatika sebanyak 5 kali:

    (* DESKRIPSI *) Informatika begin Informatika

    for k := 1 to 5 do Informatika writeln(Informatika); Informatika

    (*endfor*) Informatika end.

    8

  • Contoh 2:

    Algoritma PENJUMLAHAN_DERET Menghitung jumlah angka- { Menjumlahkan deret 1 + 2 + 3 + ... + N, angka dari 1 sampai N dengan N adalah bilangan bulat positif

    yang dibaca dari piranti masukan } jumlah = 1 + 2 + 3 + ... + N

    Nilai N dibaca terlebih DEKLARASI

    dahulu dari piranti masukan. k : integer { pencacah pengulangan } Misalnya, jika N = 5, maka N, jumlah : integer jumlah angka dari 1 sampai

    DESKRIPSI : 5 adalah deret: read(N) { banyaknya suku deret }

    1 + 2 + 3 + 4 + 5 = 15 jumlah 0 for k1 to N do {ulangi sebanyak N kali}

    jumlah jumlah + k

    endfor

    write(jumlah)

    9

  • Program PENJUMLAHAN_DERET;

    { Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah

    bilangan bulat positif yang dibaca dari piranti masukan

    }

    (* DEKLARASI *)

    var

    k, N, jumlah : integer;

    (* DESKRIPSI *)

    begin

    write(Masukkan banyaknya suku deret : ); readln(N);

    jumlah := 0;

    for k := 1 to N do

    jumlah := jumlah + k;

    (*endfor*)

    writeln(jumlah);

    end.

    10

  • Contoh 3: Algoritma HITUNG_RATA_RATA { Menghitung rata-rata N buah bilangan

    bulat yang dibaca dari piranti

    masukan. N > 0. }

    DEKLARASI Menghitung nilai rata-rata dari k : integer { pencacah pengulangan } N buah data bilangan bulat

    N : integer { jumlah data, > 0 } yang dibaca dari piranti

    x : integer {bilangan bulat yang dibaca} masukan. Nilai rata-rata adalah

    jumlah : integer jumlah seluruh nilai dibagi

    rata : real dengan banyaknya nilai

    Misalkan, N = 5 dan data DESKRIPSI :

    bilangan yang dibaca berturut- read(N) { banyaknya suku deret }

    turut adalah 12, 10, 6, 2, jumlah 0 4, maka nilai rata-ratanya for k1 to N do {ulangi sebanyak N kali} adalah:

    read(x) (12 +10 + 6 + 2 + 4)/5 jumlah jumlah + x = 34/5 endfor = 6.8 rata jumlah/N

    write(rata)

    11

  • Program HITUNG_RATA_RATA;

    { Menghitung rata-rata N buah bilangan bulat yang dibaca dari

    piranti masukan. N > 0. }

    (* DEKLARASI *)

    var

    k, N, x, jumlah : integer;

    rata : real;

    (* DESKRIPSI *)

    begin

    write(Masukkan banyaknya suku deret : );

    readln(N);

    jumlah := 0;

    for k := 1 to N do

    begin

    write(Bilangan ke-,k, : );readln(x);

    jumlah := jumlah + x;

    end;

    rata := jumlah/N;

    writeln(rata);

    end.

    12

  • Struktur FOR: menurun

    for pencacah nilai_akhir downto nilai_awal do

    aksi

    endfor

    pencacah menggunakan tipe data yang memilki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah.

    aksi adalah satu atau lebih instruksi yang diulang)

    nilai_akhir harus lebih besar atau sama dengan nilai_awal (Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan tidak dimasuki)

    pada awalnya pencacah diinisialisasikan dengan nilai_akhir. Nilai pencacah secara otomatis berkurang satu setiap kali aksi diulangi, sampai akhirnya nilai pencacah sama dengan nilai_awal.

    jumlah pengulangan yang terjadi = nilai_akhir nilai_awal + 1

    13

  • Contoh: Mencetak angka 5, 4, , 1

    Algoritma CETAK_ANGKA_TURUN

    {Mencetak 5, 4, ..., 1 ke piranti keluaran}

    DEKLARASI Pada algoritma k : integer { pencacah pengulangan }

    CETAK_ANGKA_TURUN, DESKRIPSI :

    angka-angka yang dicetak for k5 downto 1 do bersesuaian dengan nilai write(k)

    endfor pencacah pengulangan.

    Keluaran dari algoritma Program CETAK_ANGKA_TURUN; {Mencetak 5, 4, ..., 1 ke piranti keluaran} adalah angka 5 yang turun (* DEKLARASI *) sampai ke angka 1: var

    54321 k : integer;

    (* DESKRIPSI *)

    begin

    for k := 5 downto 1 do

    write(k, );

    (*endfor*)

    end. 14