06 Looping

download 06 Looping

of 37

Transcript of 06 Looping

  • 8/8/2019 06 Looping

    1/37

    LOOPINGOleh: M. Ade Erik (19870911 201001 1 006)

    Doc Versi. 06.00/Pas/OSN/TIK/2010

    SMA Negeri 1 Tegal

  • 8/8/2019 06 Looping

    2/37

    Pembahasan:

    For

    Positive Looping

    Negative Looping Nested Looping

    Repeat Until

    Nested Repeat Until

    While Do

    Nested While - Do

  • 8/8/2019 06 Looping

    3/37

    For .. Do

    Digunakan bila jumlah pengulangan sudah diketahui atau

    sudah tertentu.

    Syntax (positive looping)

    for := to do Begin

    ;

    end;

    Apabila kita akan melakukan pengulangan secara cacah mundur

    kita bisa memakai kata kunci downto (negative looping) for := downto do

    Begin

    ;

    end

  • 8/8/2019 06 Looping

    4/37

    Nested looping (looping bersarang)

    Syntax

    for := to do

    Begin

    ;

    for := to do

    Begin

    ;

    end

    end;

  • 8/8/2019 06 Looping

    5/37

    Contoh

    Uses wincrt;

    Var i,j:integer;

    Begin

    For i:=1 to 5 do

    begin

    writeln('mari membuat program');

    For j:=1 to 3 do

    Begin Writeln(' mari');

    end;

    end;

    End.

  • 8/8/2019 06 Looping

    6/37

    Soal:

    Setiap akhir minggu Melly, seorang mahasiswa yang

    mendapatkan kiriman biaya hidup bulanan dengan jumlah

    agak pas-pasan, selalu mencatat pengeluarannya per-minggu di luar sewa kamar selama satu bulan. Di akhir

    bulan ia menghitung total pengeluarannya selama

    sebulan dan menghitung rerata pengeluarannya per

    minggu selama bulan itu. Bila sebulan dianggap 4

    minggu, buat program komputer untuk menghitungpengeluaran Tertib seperti itu

  • 8/8/2019 06 Looping

    7/37

    Penjelasan

    Lakukan looping for do selama 4 kali lalu Jumlahkan

    pengeluaran tiap minggunya, kemudian hitung rata-

    ratanya dengan dengan cara membagi total pengeluarandengan 4.

  • 8/8/2019 06 Looping

    8/37

    uses wincrt;

    var ongkos, jumlah, rerata : real;

    i, m : integer;

    begin

    jumlah := 0.0; { Nilai awal penjumlah } m := 4; { Jumlah minggu dalam sebulan dianggap 4 }

    for i := 1 to m do

    begin

    write('Data minggu ke ', i,' = '); readln(ongkos);

    jumlah:= jumlah + ongkos; end;

    rerata:= jumlah/m;

    writeln('Total ongkos hidup per bulan = Rp ',jumlah:7:2);

    writeln('Rerata ongkos hidup per minggu = Rp ',rerata:7:2);

    end.

  • 8/8/2019 06 Looping

    9/37

    While Do

    Perintah-perintah akan dilaksanakan apabila ekspresi

    boolean dalam keadan benar. Di dalam loop ada nilai

    yang mengontrol loop, yang nilainya harus berubah

    sehingga pada akhirnya program akan keluar dari loop

    syntax

    While do

    Begin

    ; end;

  • 8/8/2019 06 Looping

    10/37

    Contoh

    Uses wincrt;

    Var i:integer;

    Begin

    i:=0;

    While i

  • 8/8/2019 06 Looping

    11/37

    Soal: Modifikasi ke bentuk while do

    uses wincrt;

    var ongkos, jumlah, rerata : real;

    i, m : integer;

    begin

    jumlah := 0.0; { Nilai awal penjumlah } m := 4; { Jumlah minggu dalam sebulan dianggap 4 }

    for i := 1 to m do

    begin

    write('Data minggu ke ', i,' = '); readln(ongkos);

    jumlah:= jumlah + ongkos; end;

    rerata:= jumlah/m;

    writeln('Total ongkos hidup per bulan = Rp ',jumlah:7:2);

    writeln('Rerata ongkos hidup per minggu = Rp ',rerata:7:2);

    end.

  • 8/8/2019 06 Looping

    12/37

    jawaban

    uses wincrt;

    var ongkos, jumlah, rerata : real;

    i, m : integer;

    begin

    jumlah := 0.0; { Nilai awal penjumlah }

    m := 4; { Jumlah minggu dalam sebulan dianggap 4 }

    i:=0;

    while i

  • 8/8/2019 06 Looping

    13/37

    Repeat Until

    Pernyataan repeat...until hampir sama dengan

    pernyataan while...do, tetapi dengan pernyataan repeat,

    akan terjadi paling tidak akan terjadi satu kali eksekusi

    statemen.

    Syntact

    Repeat

    Begin

    ; End;

    until;

  • 8/8/2019 06 Looping

    14/37

    Contoh

    Uses wincrt;

    Var i,j:integer;

    Begin

    i:=0;

    repeat

    begin

    i:=i+1;

    writeln('mari buat program'); end;

    until i=4;

    End.

  • 8/8/2019 06 Looping

    15/37

    Soal: Modifikasi ke bentuk repeat until

    uses wincrt;

    var ongkos, jumlah, rerata : real;

    i, m : integer;

    begin

    jumlah := 0.0; { Nilai awal penjumlah }

    m := 4; { Jumlah minggu dalam sebulan dianggap 4 }

    i:=0;

    while i

  • 8/8/2019 06 Looping

    16/37

    Jawaban

    uses wincrt;

    var ongkos, jumlah, rerata : real;

    i, m : integer;

    begin

    jumlah := 0.0; { Nilai awal penjumlah }

    m := 4; { Jumlah minggu dalam sebulan dianggap 4 } i:=0;

    repeat

    begin

    i:=i+1;

    write('Data minggu ke ', i,' = '); readln(ongkos);

    jumlah:= jumlah + ongkos;

    end;

    until i=4;

    rerata:= jumlah/m;

    writeln('Total ongkos hidup per bulan = Rp ',jumlah:7:2);

    writeln('Rerata ongkos hidup per minggu = Rp ',rerata:7:2);

    end.

  • 8/8/2019 06 Looping

    17/37

    Soal

    Tulislah program yang meminta pemakai memasukkan jumlah uang

    dalam rupiah dan mengeluarkan output pada layar banyaknya lembar

    Rp. 100,- , Rp. 50,-, Rp. 10,-, Rp. 5,- dan Rp. 1,- yang paling efisien.

    Contoh Run:

    Input: Masukkan jumlah uang Rp. : 2879

    Output:

    Pecahan Rp. 100,- : 28 lembar

    Pecahan Rp. 50,- : 1 lembar

    Pecahan Rp. 10,- : 2 lembar

    Pecahan Rp. 5,- : 1 lembar

    Pecahan Rp. 1,- : 4 lembar

  • 8/8/2019 06 Looping

    18/37

    Penjelasan:

    Lakukan seleksi ke 1

    B:= N div 100 dan N:=N mod 100, tampilkan nilai B

    Selanjutnya lakukan seleksi ke 2

    B:=N div 50 dan N:= N mod 50, tampilan nilai B

    Selanjutnya lakukan seleksi ke 3

    B:=N div 10 dan N:=N mod 10, tampilkan nilai B

    Selanjutnya lakukan seleksi ke 4

    B:=N div 5 dan N:=N mod 5, tampilkan nilai B Selanjutnya lakukan seleksi ke 5

    B:=N div 1 dan N:=N mod 1, tampilkan nilai B, sampai N=0

  • 8/8/2019 06 Looping

    19/37

    Program mata_uang;

    Uses wincrt;

    Var a,b,i:integer;

    Begin write('uang= ');readln(a);i:=0;

    Repeat i:=i+1;

    if i=1 then begin b:=a div 100;a:=a mod 100; writeln('100=',b);end

    else if i=2 then begin b:=a div 50;a:=a mod 50;writeln('50=',b);end

    else if i=3 then begin b:=a div 10;a:=a mod 10;writeln('10=',b);end

    else if i=4 then begin b:=a div 5;a:=a mod 5;writeln('5=',b);end else if i=5 then begin b:=a div 1;a:=a mod 1;writeln('1=',b);end;

    until a=0;

    end.

  • 8/8/2019 06 Looping

    20/37

  • 8/8/2019 06 Looping

    21/37

    Lakukan looping bersarang dengan banyaknya

    pengulangan sebanyak 10 kali, dimana nilai pengulangan

    kedua akan menampilkan * sejumlah nilai pada variable

    pengulangan pertama.

  • 8/8/2019 06 Looping

    22/37

    uses wincrt;

    var

    i,j:integer;

    begin

    for i:=1 to 10 do

    begin

    for j:=1 to i do

    begin

    write('*'); end;

    writeln;

    end;

    end.

  • 8/8/2019 06 Looping

    23/37

  • 8/8/2019 06 Looping

    24/37

    Penjelasan

    Identifikasi panjang string = length(string);

    Lakukan looping bersarang dimana looping pertama ialah

    negative looping dengan nilai awalnya adalah panjangstring.

    lakukan copy string dan pengurangan 1 karakter string

    tiap pengulangan. Copy(string,1,i)

    Pada looping yang kedua nilai variable ke dua menuju kenilai variable yang pertama.

  • 8/8/2019 06 Looping

    25/37

    uses wincrt;

    var

    i,j,k:integer;

    s:string;

    begin

    s:='abrakadabra';

    k:=length(s);

    for i:=k downto 1 do

    Begin for j:=1 to i do

    Begin s:=copy(s,1,i);

    end;

    writeln(s); end;

    end.

  • 8/8/2019 06 Looping

    26/37

    Bujur sangkar ajaib orde N (3

  • 8/8/2019 06 Looping

    27/37

    Sebagai contoh, bujur sangkar ajaib orde 3 di bawah ini

    memiliki konstan ajaib bernilai 15 karena setiap

    baris/kolom/diagonalnya menghasilkan angka 15 pada

    saat dijumlahkan

  • 8/8/2019 06 Looping

    28/37

    Pembahasan

    Yang perlu kita lakukan hanya menjumlahkan 1 sampai n2

    kemudian bagi hasilnya dengan n

    ajaib= (1 + 2 + 3 + + n2

    ) / n dengan menggunakan rumus jumlah n suku pada

    aritmatika (Sn=1/2n (a+Un)) maka didapat rumus

    ajaib= (n2 * (1+ n2) / 2) / n

    ajaib= n * (n2 + 1) / 2

  • 8/8/2019 06 Looping

    29/37

    Untuk bujung sangkar ajaib orde 5, maka nilai konstan

    ajaibnya adalah 65

    Ajaib=n*(n2+1)/2 = 5*(52+1)/2 =65

  • 8/8/2019 06 Looping

    30/37

    Soal: buatlah program bujur sangkar ajaib ber orde n,

    agar dapat diketahui nilai konstan ajaibnya. untuk

    3

  • 8/8/2019 06 Looping

    31/37

    uses wincrt;

    var n,x: longint;s:char;

    Begin

    Repeat begin

    write('orde= ');readln(n); if (n>=3) and (n

  • 8/8/2019 06 Looping

    32/37

    Latihan

    Input

    5

    Output

  • 8/8/2019 06 Looping

    33/37

    Pembahasan

    Lakukan looping repeat karakter * sampai n dari titik

    (x,y)=(0,0) menuju (x,y)=(n,n), jika ordinat y>n lakukan

    (x,y)=(n-1,n+1) hingga absis x=0.

  • 8/8/2019 06 Looping

    34/37

    uses crt;

    var i,n,x,y:integer;

    Begin write(n= ');readln(n);

    x:=0; y:=0;i:=0; clrscr; Repeat i:=i+1; x:=x+1;y:=y+1; gotoxy(x,y);write('*');

    until i=n;

    Repeat i:=i-1; y:=y+1; gotoxy(x,y);write('*'); x:=x-1;

    until i=0;readln;

    end.

  • 8/8/2019 06 Looping

    35/37

    Input

    5, dimana _ adalah pengganti *

    Output

  • 8/8/2019 06 Looping

    36/37

    Pembahasan

    Lakukan looping baris i sampai i=n, Lakukan looping *

    sejumlah baris ke i, lakukan looping _ sejumlah (2*n-1)-i

    dikurangi baris ke i, lakukan kembali looping * sejumlahbaris ke i.

  • 8/8/2019 06 Looping

    37/37

    uses crt;

    var i,j,x,y,c:integer;

    Begin

    Write(n=);readln(j); clrscr;

    for i:=1 to j do begin

    for x:=1 to i do begin write('*'); end;

    c:=(2*j-1)-i;

    for y:=i to c do begin write('_'); end;

    for c:=1 to i do begin write('*'); end;

    Writeln;end; readln;end.