adalah sekelompok instruksi yang dikerjakan secara berulang-ulang
adalah suatu proses yang terjadi secara berulang-ulang
Contoh-1 :
Bila kedua program diatas dijalankan, (diRUN)maka keduanya akan tecetak:
JakartaJakartaJakartaJakartaJakartaSelesai
#include<iostream.h>void main(){int I; for(I=1; I<=5; I=I+1) { cout << "\nJakarta"; } cout << "\nSelesai";}
#include<iostream.h>void main(){int I; I=1; while( I<=5 ) { cout << "\nJakarta"; I = I + 1; } cout << "\nSelesai";}
for ( init; cond; chng of cond ) { - - - loop - - - }
Bentuk Umum
init;while ( cond ) { - - - loop - - - chng of cond }
cond = conditionSuatu pernyataan yang mengandung nilai BENAR (true) atau SALAH (False)
init = inisialisaiInstruksi pemberian suatu nilai yang mempengaruhi nilai condition. Pada proses yang normal, pemberian nilai awal ini akan menyebabkan condition bernilai true.Instruksi ini hanya pernah satu kali dilaksanakan, yaitu hanya pada saat awal
Chng of cond = Change of condition
Suatu instruksi yang dapat mempengaruhi nilai condition. Pada proses yang normal, perubahan nilai disini suatu saat akan membuat nilai condition = false
Loop adalah sekumpulan instruksi yang rencananya akan dikerjakan secara berulang-ulang
for ( init; cond; chng of cond ) { - - - loop - - - }
Bentuk Umum
init;while ( cond ) { - - - loop - - - chng of cond }
conditionfalse
true
------
initialization
Change Condition
------
Next instruction
Kerjakanloop
for ( init; cond; chng of cond ) { - - - loop - - - }
init;while ( cond ) { - - - loop - - - chng of cond }
false
true
initialization
cond
Chg ofcond
Kerjakanloop
208
for ( init; cond; chng of cond ) { - - - loop - - - }
init;while ( cond ) { - - - loop - - - chng of cond }
cond
false
true
init
Chg ofconf
Kerjakanloop
208
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
}
}
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{
I=I+1;
}
}
for()
while()
looploop
Berapa Kali Loop Dikerjakan ?
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
}
}
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{
I=I+1;
}
}
for()
while()
looploop
Jawab : 5 kali
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout << “\nJakarta” ;
}
}
#include<iostream.h>void main(){ int I; I = 1; while(I<=5) { cout << “\nJakarta”; I=I+1; }}
for()while()
Apa yang tercetak bila programdiatas dikerjakan
211
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout << “\nJakarta” ;
}
}
#include<iostream.h>void main(){ int I; I = 1; while(I<=5) { cout << “\nJakarta”; I=I+1; }}
for()while()
Tercetak :
211
JakartaJakartaJakartaJakartaJakarta
Tercetak : JakartaJakartaJakartaJakartaJakarta
Contoh-2 :
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout << "\n" << I;
}
}
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{
cout << "\n" << I;
I=I+1;
}
}
for()
while()
211
Apa yang tercetak bila programdiatas dijalankan
Contoh-3 :
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout << "\n" << I;
}
}
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{
cout << "\n" << I;
I=I+1;
}
}
for()
while()
Tercetak : 12345
211
I
1
2
3
4
5
6
1
2
3
4
5
Tercetak
Tercetak : 12345
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout << "\n" << I;
}
}
for()
Tercetak : 12345
I<=5
I = 1
I = I+1
printf I
false
true
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{cout << "\n" << I;
}
}
I<=5
I = 1
I = I+1
print I
false
true
for()Tercetak : 1 2 3 4 5
Perkembangan nilai I
nilai
I
Kondisi
I <= 5
Tercetak oleh
cout << I
Oleh I=I+1
nilai I menjadi:
1
2
3
4
5
6
True
True
True
True
True
False
1
2
3
4
5
Keluar dari loop
2
3
4
5
6
211
Tercetak : 1 2 3 4 5
Perkembangan nilai I
nilai
I
Kondisi
I <= 5
Tercetak oleh
cout << I
Oleh I=I+1
nilai I menjadi:
1
2
3
4
5
6
True
True
True
True
True
False
1
2
3
4
5
Keluar dari loop
2
3
4
5
6
#include<iostream.h>void main(){ int I; I = 1; while(I<=5)
{cout << "\n" << I; I=I+1; }}
while()
I<=5
I = 1
I = I+1
print I
false
true
211
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{ cout << "\n" << I;
}
} I<=5
I = 1
I = I+1
print I
false
true
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{ cout << "\n" << I;
I=I+1; }
}
for()
while()
211
I<=5
false
true
I = 1
I=I+1
print I
false
true
I = 1
I<=5
print I
I=I+1
I<=5
I = 1
I=I+1
print I
false
true
#include<iostream.h>
void main()
{ int I;
for ( I=1 ; I<=5 ; I=I+1 ) { cout << "\n" << I; }}
Perhatikan kembali Contoh-1 sebelumnyasebagai berikut :
Buku literatur selalu
menggunakan I++
untuk I = I+1
for()
for()
#include<iostream.h>
void main()
{ int I;
for ( I=1 ; I<=5 ; I++ ) { cout << "\n" << I; }} 212
#include<iostream.h>void main(){ int I; for ( I=1 ; I<=5 ; I=I+1 ) { cout << "\n" << I; }}
Beberapa Cara penulisan loop dengan for( ) untuk Contoh-1 diatas, yang menghasilkan efek yang sama :
{ int I;
for ( I=1 ; I<=5 ; I++ ) cout << "\n" << I;}
Bila instruksi dalam loop hanya ada 1 instruksi, maka boleh tidak diapit oleh tanda kurung.
{ int I;
for(I=1; I<=5; I++) cout << "\n" << I;
}
Loop boleh langsung ditulis pada baris yang sama dengan for().
212
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{cout <<"\n"<< I;
I++;
}
}
while()
Perhatikan kembali loop dengan while sebagai berikut:
#include<iostream.h>
void main()
{ int I;
I = 1;
while(I<=5)
{cout <<"\n"<< I++;
}
}
dapat ditulis menjadi:
213
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout <<“\n ” << I*2;
}
}
#include<iostream.h>void main()
{ int I;
I = 1;
while(I<=5)
{
cout <<“\n ” << I*2; I=I+1;
}
}
for()while()
Apa yang tercetak bila programdiatas dikerjakan
Contoh-4 :
#include<iostream.h>
void main()
{ int I;
for(I=1; I<=5; I=I+1)
{
cout <<“\n ” << I*2;
}
}
#include<iostream.h>void main()
{ int I;
I = 1;
while(I<=5)
{
cout <<“\n ” << I*2; I=I+1;
}
}
for()while()
Tercetak : 246810
Tercetak : 246810
Perkembangan nilai I
nilai
I
Kondisi
I <= 5
Tercetak oleh
Cout << I*2
Oleh I=I+1
nilai I menjadi:
1
2
3
4
5
6
True
True
True
True
True
False
2
4
6
8
10
Keluar dari loop
2
3
4
5
6
#include<iostream.h>void main(){ int I; for(I=1; I<=5; I=I+1) { cout <<“\n ” << I*2; }}
#include<iostream.h>void main(){ int I; I = 1; while(I<=5) { cout <<“\n ” << I*2; I=I+1; }}
for() while()
#include<iostream.h>void main(){ int I, N; N = 8; for(I=1; I<=5; I=I+1) { cout << N; N = N + 2; }}
#include<iostream.h>void main(){ int I, N; N = 8; I = 1; while(I<=5) { cout << N; N = N + 2; I=I+1; }}
for()
while()
Apa yang tercetak bila programdiatas Dilaksanakan
Contoh-5 :
#include<iostream.h>void main(){ int I, N; N = 8; for(I=1; I<=5; I=I+1) { cout << N; N = N + 2; }}
#include<iostream.h>void main(){ int I, N; N = 8; I = 1; while(I<=5) { cout << N; N = N + 2; I=I+1; }}
for()
while()
Tercetak : 810121416
Tercetak : 810121416
#include<iostream.h>void main(){ int I, N; N = 8; for(I=1; I<=5; I=I+1) { cout << N; N = N + 2; }}
#include<iostream.h>void main(){ int I, N; N = 8; I = 1; while(I<=5) { cout << N; N = N + 2; I=I+1; }}
for() while()
Perkembangan nilai I
nilai
I
Kondisi
I <= 5
Tercetak oleh
cout << N
Oleh I=I+1
nilai I menjadi:
1
2
3
4
5
6
True
True
True
True
True
False
8
10
12
14
16
Keluar dari loop
2
3
4
5
6
NOleh N=N+2
nilai N menjadi:
10
12
14
16
18
8
10
12
14
16
18
Soal Susun Algoritma yang ditulis dalam Bahasa C++ untuk mencetak 10 suku pertama deret berikut ini :
1, 2, 3, 4, 5, . . . . . . . . .
#include<iostream.h>
void main()
{ int I;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << I ;
}
}
Bila algoritma benar, maka
tercetak :
12345678910
Cara-1 I
1234567891011
Tercetak :
12345678910
I terakhir nilainya = 11,Tapi tidak ikut dicetak
Karena sudah keluar dari loop
#include<iostream.h>
void main()
{ int I,N;
for( I=1; I<=10; I=I+1 )
{ N = I;
cout << “\n” << N ;
}
}
Cara-2
#include<iostream.h>
void main()
{ int I,N;
N = 1;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << N ;
N = N + 1;
}
}
Cara-3I N
1234567891011
12345678910
I N
12345678910
11
12345678912
11
Nilai N pernah = 11tapi tidak ikut dicetak
karena sudah keluar dari loop
N awalnya =1dan selalu ditambah 1
Perkembangan nilai I
nilai
I
Kondisi
I <= 10
Tercetak oleh
Cout << N
Oleh I=I+1
nilai I menjadi:
1
2
3
4
5
6
7
8
9
10
11
True
True
True
True
True
True
True
True
True
True
False
1
2
3
4
5
6
7
8
9
10
Keluar dari loop
2
3
4
5
6
7
8
9
10
11
NOleh N=N+1
nilai N menjadi:
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
Soal Susun Algoritma yang ditulis dalam Bahasa C++ untuk mencetak 10 suku pertama deret berikut ini :
1, 3, 5, 7, 9, . . . . . . . . .
#include<iostream.h>
void main()
{ int I;
for( I=1; I<=19; I=I+2 )
{ cout << “\n” << I ;
}
}
Bila algoritma benar, maka
tercetak :
135791113151719
Cara-1 I
13579111315171921
Tercetak :
135791113151719
I terakhir nilainya = 21,Tapi tidak ikut dicetak
Karena sudah keluar dari loop
#include<iostream.h>
void main()
{ int I,N;
for( I=1; I<=10; I=I+1 )
{ N = I * 2 - 1;
cout << “\n” << N ;
}
}
Cara-2
#include<iostream.h>
void main()
{ int I,N;
N = 1;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << N ;
N = N + 2;
}
}
Cara-3I N
1234567891011
135791113151719
I N
12345678910
11
135791113151719
21
Nilai N pernah = 21tapi tidak ikut dicetak
karena sudah keluar dari loop
N awalnya =1dan selalu ditambah 2
Soal Susun Algoritma yang ditulis dalam Bahasa C++ untuk mencetak 10 suku pertama deret berikut ini :
1, 2, 4, 8, 16, . . . . . . . . .
#include<iostream.h>
void main()
{ int I;
for( I=1; I<=512; I=I*2 )
{ cout << “\n” << I ;
}
}
Bila algoritma benar, maka
tercetak :
1248163264128256512
Cara-1 I Tercetak :
1248
1632641282565121024
1248163264128256512
#include<iostream.h>
#include<math.h>
void main()
{ int I,N;
for( I=1; I<=10; I=I+1 )
{ N = pow(2,(I-1));
cout << “\n” << N ;
}
}
Cara-2
#include<iostream.h>
void main()
{ int I,N;
N = 1;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << N ;
N = N * 2;
}
}
Cara-3I N
1234567891011
I N
1234567891011
1248163264128256512
pow(2, (I-1)) Maksudnya 2 pangkat (I-1)
Agar dapat menggunakan fungsi
matematik pow (power), harus
menambah : # include<math.h>
12481632641282565121024
Nilai N pernah = 1024tapi tidak ikut dicetak
karena sudah keluar dari loop
N awalnya =1dan selalu dikali 2
Soal Susun Algoritma yang ditulis dalam Bahasa C++ untuk mencetak 10 suku pertama deret berikut ini :
5, 8, 11, 14, 17, . . . . . . . . .
#include<iostream.h>
void main()
{ int I;
for( I=5; I<=32; I=I+3 )
{ cout << “\n” << I ;
}
}
Bila algoritma benar, maka
tercetak :
581114172023262932
Cara-1 I Tercetak :
58111417202326293235
581114172023262932
#include<iostream.h>
void main()
{ int I,N;
for( I=1; I<=10; I=I+1 )
{ N = I*3 + 2 ;
cout << “\n” << N ;
}
}
Cara-2
#include<iostream.h>
void main()
{ int I,N;
N = 5;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << N ;
N = N + 3;
}
}
Cara-3I N
1234567891011
I N
1234567891011
581114172023262932
58111417202326293235N awalnya = 5
dan selalu ditambah 3
Nilai N pernah = 35tapi tidak ikut dicetak
karena sudah keluar dari loop
Soal Susun Algoritma yang ditulis dalam Bahasa C++ untuk mencetak 10 suku pertama deret berikut ini :
5, 8, 13, 20, 29, 40, . . . . . . .
#include<iostream.h>
void main()
{ int I, X;
X = …. ;
for( I=1; I<=104; I=I+3 )
{ cout << “\n” << I ;
I = I + X;
X = X + …. ;
}
}
Bila algoritma benar, maka
tercetak :
5813202940536885104
Cara-1I Tercetak :
5813202940536885104125
5813202940536885104
5 8 13 20 29 40 53 .. .. ..
+3 +5 +7 +9 +11 +13
#include<iostream.h>
void main()
{ int I,N ;
for( I=1; I<=10; I=I+1 )
{ N = I*I + 4 ;
cout << “\n” << N ;
}
}
Cara-2
#include<iostream.h>
void main()
{ int I,N, X;
N = 5;
X = 3;
for( I=1; I<=10; I=I+1 )
{ cout << “\n” << N ;
N = N + X;
X = X + 2;
}
}
Cara-3I N
1234567891011
I N
1234567891011
5 8 13 20 29 40 53 .. .. ..
5813202940536885104
5813202940536885104125
1 2 3 4 5 6 7I
N
X 3 5 7 9 11 13
Susun program untuk menginput 100 buah bilangan yang merupakan nilai ujian mahasiswa, kemudian cetak nilai tertinggi yang didapat mahasiswa .
{ int N, I, MAX;
cin >> N;
MAX = N;
for(I=2; I <= 100; I++)
{ cin >> N;
if(N > MAX)
MAX = N ;
}
cout << “Tebesar : “ << MAX;
}
Untuk pertama kali, nilai MAX dibuat sama dengan data pertama yang dibaca.
99 kali loop. (dari 2 sampai dengan 100).
Ilustrasi Proses :
Bilangan yangdiinput (N) : 75 72 75 82 64 82 74 82 66 87 72 87 68 . .
75 -- -- 82 -- -- -- -- -- -- -- 87 -- -- -- . .
Seriap kali loop :Bila nilai yang baru diinput lebih besar dari MAX, maka nilai MAX diganti dengan nilai yang baru.
Soal
Nilai MAX :
Terakhir cetak MAX
Susun program untuk menginput 10 buah bilangan yang merupakan nilai ujian mahasiswa, kemudian cetak nilai tertinggi yang didapat mahasiswa , serta mencetak ada berapa orang mahasiswa yang mendapat nilai tertinggi tersebut :
Soal
Bila diinput :
15 12 15 10 15 17 25 17 25 13
Seharusnya tercetak :
Nilai terbesar : 25Jum Mahasiswa : 2
15 12 15 10 15 17 25 17 25 13
Konsep Proses :
1. Input 15
Data :
15MAX
115N Jum
Input pertama, isi MAX = N, dan Jum dibuat = 1
2. Input 12 15MAX
112N Jum
N=12 N tidak > MAX isi MAX tetap tidak diubah
N tidak == MAX, Jum tetap, tidak ditambah
3. Input 15 15MAX
215N Jum
N=15 N tidak > MAX isi MAX tetap, tidak diubah
Tapi, N == MAX, Jum ditambah 1
4. Input 10 15MAX
210N Jum
N=10 N tidak > MAX isi MAX tetap tidak diubah
N tidak == MAX, Jum tetap, tidak ditambah
5. Input 15 15MAX
315N Jum
N=15 N tidak > MAX isi MAX tetap, tidak diubah
Tapi, N == MAX, Jum ditambah 1
6. Input 17 17MAX
117N Jum
N=17 N > MAX isi MAX = N dan Jum = 1
15 12 15 10 15 17 25 17 25 13 Data :
9. Input 25 25MAX
225N Jum
N=15 N tidak > MAX isi MAX tetap, tidak diubah
Tapi, N == MAX, Jum ditambah 1
7. Input 25 25MAX
125N Jum
N=25 N > MAX isi MAX = N dan Jum = 1
17MAX
1Jum
8. Input 17 25MAX
117N Jum
N=17 N tidak > MAX isi MAX tetap tidak diubah
N tidak == MAX, Jum tetap, tidak ditambah
10. Input 13 25MAX
213N Jum
N=13 N tidak > MAX isi MAX tetap tidak diubah
N tidak == MAX, Jum tetap, tidak ditambah
Data habis : 25MAX
2Jum
Jadi dari 12 data yang diinput, Nilai terbesar = MAX = 25Dan jumlah mahasiswa yang mendapat nilai terbesar = Jum = 2
Konsep Proses :
1. Input pertama, simpan ke MAX dan Jum dibuat = 1.
2. Input ke N 9 kali.
Setiap kali input periksa :
Input ke : N
MAX menampung nilai terbesar
Jum menampung jumlah mahasiswa yang mempunyai nilai terbesarN MAX Jum
Proses :
Bila N > MAX Ganti nilai MAX dengan nilai N dan nilai Jum dibuat ulang = 1.
Bila N tidak lebih besar dari MAX,Periksa apakah N == MAX.
Bila N == MAX, Jum ditambah 1
3. Setelah selesai 9 kali input,Cetak MAX dan Jum
input
MAX=NJum=1
I<=10
N>MAX
MAX=NJum=1
N
I=2
input N
N==MAX
Jum=Jum+1
True
TrueFalse
END
I=I+1
False
END
#include<iostream.h> void main() { int N,I,MAX, Jum; cin >> N; MAX = N; Jum = 1; for(I=2; I <= 10; I++) { cin >> N; if(N > MAX) { MAX = N ;
Jum = 1; }
else if(N == MAX) Jum++; } cout << "\nTerbesar : " << MAX; cout << "\nJum Mhs : " << Jum;}
MAX,Jum
Susun program untuk menginput 10 buah bilangan yang merupakan nilai ujian mahasiswa, kemudian cetak nilai tertinggi yang didapat mahasiswa, serta mencetak ada berapa orang mahasiswa yang mendapat nilai tertinggi tersebut :
Soal