06 looping
TRANSCRIPT
-
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.