T0616 ALGORITMA DAN PEMROGRAMAN (6) UNIVERSITAS BINA NUSANTARA

Download Report

Transcript T0616 ALGORITMA DAN PEMROGRAMAN (6) UNIVERSITAS BINA NUSANTARA

T0616
ALGORITMA DAN PEMROGRAMAN
(6)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
6/28/2016
T0616 - Algoritma dan Pemrograman
1
KONSTRUKSI WHILE
(1)
• SINTAKS
while (exp) pernyataan;
ATAU
while (exp) {
pernyataan;
pernyataan;
…
}
6/28/2016
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.
6/28/2016
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);
}
}
6/28/2016
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) {
6/28/2016
}
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
6/28/2016
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.
6/28/2016
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.
6/28/2016
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));
}
6/28/2016
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);
6/28/2016
T0616 - Algoritma dan Pemrograman
10
MENGAKHIRI PERULANGAN
(3)
ls = pj * lb;
printf(“\nLuas = %d”, ls);
printf(“\nTeruskan penghitungan? (Y/T): “);
scanf(“%c”, &ulang);
}
}
6/28/2016
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);
}
6/28/2016
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;
}
6/28/2016
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);
}
6/28/2016
T0616 - Algoritma dan Pemrograman
14
THE END
“...ALL YOU NEED IS LOVE…”
6/28/2016
T0616 - Algoritma dan Pemrograman
15