download

T0616
ALGORITMA DAN PEMROGRAMAN
(6)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
KONSTRUKSI WHILE
(1)
• SINTAKS
while (exp) pernyataan;
ATAU
while (exp) {
pernyataan;
pernyataan;
…
}
7/11/2017
T0616 - Algoritma dan Pemrograman
2
KONSTRUKSI WHILE
(2)
• exp : EKSPRESI BOOLEAN DENGAN NILAI TRUE
(1) ATAU FALSE (0)
• PERNYATAAN DIEKSEKUSI BERULANG KALI
SELAMA exp = 1
• PENGUJIAN exp DILAKUKAN SEBELUM
PERNYATAAN DIEKSEKUSI.
• ADA PELUANG PERNYATAAN TIDAK DIEKSEKUSI
SAMA SEKALI YAITU SAAT UJI KONDISI PERTAMA
KALI NILAI exp SAMADENGAN FALSE.
7/11/2017
T0616 - Algoritma dan Pemrograman
3
KONSTRUKSI WHILE
(3)
CONTOH :
main() {
int nilai = 0, jumlah = 0;
while(nilai < 10) {
jumlah += nilai;
printf(“\nNilai =%d, Jumlah =%d”, nilai++, jumlah);
}
}
7/11/2017
T0616 - Algoritma dan Pemrograman
4
KONSTRUKSI WHILE
(4)
printf(“\nInput bil:”);
scanf(%D”, &bil);
while(bil>1)
fak*=bil--;
printf(“\n%ld !=%ld”,
bil, fak);
}
while(1)
SELALU BENAR. UNTUK KELUAR GUNAKAN PERINTAH DOS
[ctrl][z]
main() {
long bil, fak;
while(1) {
7/11/2017
}
T0616 - Algoritma dan Pemrograman
5
KONSTRUKSI DO-WHILE
(1)
• SINTAKS
do {
<pernyataan-pernyataan>;
} while (exp);
• exp : EKSPRESI BOOLEAN DENGAN NILAI TRUE
(1) ATAU FALSE (0)
• PERNYATAAN DIEKSEKUSI BERULANG KALI
SELAMA exp = 1
7/11/2017
T0616 - Algoritma dan Pemrograman
6
KONSTRUKSI DO-WHILE
(2)
• PADA KONSTRUKSI WHILE, PERNYATAAN ATAU
BLOK PERNYATAAN MUNGKIN TIDAK PERNAH DI
EKSEKUSI. KASUS INI TERJADI JIKA EXP
BERNILAI FALSE SAAT DIUJI SEBELUM
MEMASUKI BLOK PERULANGAN.
• PADA KONSTRUKSI DO-WHILE PERNYATAAN
ATAU BLOK PERNYATAAN PALING SEDIKIT
DIEKSEKUSI SATU KALI. HAL INI DISEBABKAN
PENGUJIAN EXP DILAKUKAN DI AKHIR BLOK
PERULANGAN.
7/11/2017
T0616 - Algoritma dan Pemrograman
7
MENGAKHIRI PERULANGAN
(1)
• ADA DUA CARA UNTUK MENGAKHIRI
PERULANGAN: (A) DENGAN MENAMBAHKAN
SENTINEL YAITU PEMBATAS DENGAN NILAI
KHUSUS ATAU (B) PERTANYAAN APAKAH
PERULANGAN AKAN DILANJUTKAN ATAU TIDAK.
• SENTINEL PADA DO-WHILE: NILAI 0 DIBERIKAN
PADA VARIABEL PANJANG ATAU LEBAR UNTUK
MENGAKHIRI PERULANGAN.
7/11/2017
T0616 - Algoritma dan Pemrograman
8
MENGAKHIRI PERULANGAN
(2)
main() {
int pj, lb, ls;
do {
printf(“\nPanjang [0=end]:”); scanf(“%d”, &pj);
printf(“\nLebar [0=end]:”); scanf(“%d”, &lb);
ls = pj * lb;
printf(“\nLuas = %d”, ls);
} while((pj!=0) && (lb!=0));
}
7/11/2017
T0616 - Algoritma dan Pemrograman
9
MENGAKHIRI PERULANGAN
(3)
• ‘PERTANYAAN’ PADA WHILE
main() {
int pj, lb, ls;
char ulang;
printf(“\nTeruskan penghitungan? (Y/T): “);
scanf(“%c”, &ulang);
while((toupper(ulang)) == ‘Y’ {
printf(“\nPanjang [0=end]:”); scanf(“%d”, &pj);
printf(“\nLebar [0=end]:”); scanf(“%d”, &lb);
7/11/2017
T0616 - Algoritma dan Pemrograman
10
MENGAKHIRI PERULANGAN
(3)
ls = pj * lb;
printf(“\nLuas = %d”, ls);
printf(“\nTeruskan penghitungan? (Y/T): “);
scanf(“%c”, &ulang);
}
}
7/11/2017
T0616 - Algoritma dan Pemrograman
11
MEMBALIK DIGIT INTEGER POSITIF
main() {
long m, d, n = 0;
printf(“\n INPUT :”); scanf(“%D “, &m);
while(m>0) {
m%10: ambil digit terakhir
d = m%10;
dari m.
m/=10;
m/10: buang digit erakhir dari
n = 10*n + d;
m.
}
printf(“\n OUTPUT : %ld”, n);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
12
ALGORITMA E(UCLIDEAN)
(1)
main() {
int m, n, r, temp;
printf(“\nEnter two positive integers: “);
scanf(“%d %d”, &m, &n);
if(m<n) {
temp = m;
m = n,
n = temp;
}
7/11/2017
T0616 - Algoritma dan Pemrograman
13
ALGORITMA E(UCLIDEAN)
(2)
printf(“\n The GCD of %d and %d is “, m, n);
while(n>0) {
r = m%n;
m = n;
n = r;
}
printf(“%d “, m);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
14
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
15