TEE 2103 Algoritma dan Pemrograman
Pengulangan
Dosen: Abdillah, MITHp: 0853 6581 8665Email: [email protected]: www.abdill01.wordpress.com
Tujuan
Memahami proses pengulangan while, for dan do dalam runtunan komputasi program C.
Pengulangan while
Bentuk umum pengulangan while adalah
while (ekspresi) statement
Ekspresi dievaluasi, jika bernilai benar maka statement dieksekusi dan ekspresi kembali dievaluasi. Pengulangan berlanjut hingga ekspresi bernilai salah.
Program konversi.c
/* Mencetak tabel F – C untuk 0,202000F */#include <stdio.h>main(){
float fahr, celsius, lower, upper, step;lower = 0; /* batas bawah skala suhu */upper = 200; /* batas atas skala suhu */step = 20; /* interval suhu */fahr = lower;while (fahr <= upper) {
celsius = (5.0/9.0) * (fahr-32.0);printf("%3.0f %6.1f\n", fahr, celsius);fahr = fahr + step;
}}
Pengulangan for
Bentuk umum pengulangan for adalah:
for (expr1; expr2; expr3)statement
Pernyataan ini ekuivalen dengan:
expr1;while (expr2) {
statementexpr3;
}
Program konversi2.c
/* Mencetak tabel F – C untuk 0,202000F */#include <stdio.h>
main(){
int fahr;for (fahr = 0; fahr <= 200; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-
32));}Program di atas tampak beda, tapi menghasilkan output yang sama dengan program konversi.c. Perbedaan pada jumlah variabel, ekspresi yang menghitung temperatur celcius dan pernyataan for yang menggantikan while.
Nested for
Jika ada for di dalam for, kompilator akan mengeksekusi pengulangan for yang di dalam lebih dahulu.
Bentuk pengulangan nested for adalah
for (expr1; expr2; expr3){for (expr4; expr5; expr6)statement
}
Contoh Nested for
Tulislah algoritma yang mencetak segitiga bintang jika tinggi segitiga adalah N (N > 0). Contohnya, jika N = 5, maka segitiga yang dihasilkan adalah:
***************
Perhatikan gambar segitiga: baris ke-1 terdiri atas satu bintang, baris ke-2 dua bintang, dan seterusnya hingga baris ke-5 lima bintang.
Algoritma Nested for
PROGRAM Bintang{Mencetak segitiga bintang dengan tinggi N }
DEKLARASIN, i, j : integer
ALGORITMA:read (N)for i 1 to N do for (i=1;i<=N;i++)
for j 1 to i do for (j=1;j<=i;j++) write ( * ) printf (“*”);endfor
endfor
Program bintang.c
/* Mencetak segitiga bintang */ #include <stdio.h> main() { int N, i, j; printf (“Masukkan sebuah bilangan: “); scanf (“%d”, &N); for (i=1;i<=N;i++){
for (j=1;j<=i;j++) printf (“*”);
printf(“\n”); }}
Pengulangan do
Bentuk umum pengulangan do adalah:
dostatement
while (expression); Statement dieksekusi kemudian ekspresi
dievaluasi, jika bernilai benar maka statement kembali dieksekusi. Pengulangan berlanjut hingga ekspresi bernilai salah.
Algoritma do
PROGRAM Deret{ Menjumlahkan deret 1 + 2 + 3 + … + N }DEKLARASI N, i, jumlah : integerALGORITMA: read (N) jumlah 0 i 1 do
jumlah jumlah + i i i + 1
while (i <= N) write (jumlah)
Program deret.c
#include <stdio.h>main(){ int N, i, jumlah; printf("Ketikkan N: "); scanf("%d", &N); jumlah = 0; i = 1; do {
jumlah = jumlah + i; i++; } while (i <= N); printf("Jumlah deret = %d", jumlah);}
break dan continue
Sama seperti pada pemilihan switch, pernyataan break menyediakan pintu keluar lebih awal bagi pengulangan for, while dan do.
Pernyataan continue menyebabkan iterasi berikutnya dari pengulangan for, while dan do dimulai. Dalam while dan do, ini berarti ekspresi langsung dievaluasi. Dalam for, ini berarti kendali program langsung menuju tahap menaik/menurun.
Goto dan label
goto biasanya digunakan sebagai pintu keluar dari nested for yang panjang menuju ke sebuah label.
for (i = 0; i < n; i++)for (j = 0; j < m; j++)
if (a[i] == b[j])goto found;
/* tidak menemukan elemen yang sama */...found:/* dapat satu: a[i] == b[j] */...
Algoritma while
PROGRAM Deret{ Menjumlahkan deret 1 + 2 + 3 + … + N }
DEKLARASIN, i, jumlah : integer
ALGORITMA: read (N)jumlah 0i 1while (i N) do
jumlah jumlah + ii i + 1
endwhilewrite (jumlah)
#include <stdio.h>main(){ int N, i, jumlah; printf("Ketikkan N: "); scanf("%d", &N); jumlah = 0; i = 1; while (i <= N) { jumlah = jumlah + i; i++; } printf("Jumlah deret = %d", jumlah);}
Program deret2.c
Algoritma for menaik
PROGRAM Deret{ Menjumlahkan deret 1 + 2 + 3 + … + N }
DEKLARASIN, i, jumlah : integer
ALGORITMA:read (N)jumlah 0for i 1 to N do for (i=1; i<=N; i++)
jumlah jumlah + i i = i +1endforwrite (jumlah)
Program deret3.c
#include <stdio.h>
main()
{
int N, i, jumlah;
printf("Ketikkan N: "); scanf("%d", &N);
jumlah = 0;
for (i=1; i<=N; i++){
jumlah = jumlah + i;
}
printf("Jumlah deret = %d", jumlah);
}
Algoritma for menurun
PROGRAM Deret{ Menjumlahkan deret 1 + 2 + 3 + … + N }
DEKLARASIN, i, jumlah : integer
ALGORITMA:read (N)jumlah 0for i N to 1 do for (i=N; i>=1; i--)
jumlah jumlah + i i = i ‒ 1endforwrite (jumlah)
#include <stdio.h>
main()
{
int N, i, jumlah;
printf("Ketikkan N: "); scanf("%d", &N);
jumlah = 0;
for (i=N ; i>=1 ; i--){
jumlah = jumlah + i;
}
printf("Jumlah deret = %d", jumlah);
}
Program deret4.c