Pengulangan - WordPress.com

Download Report

Transcript Pengulangan - WordPress.com

TEE 2103
Algoritma dan Pemrograman
Pengulangan
Dosen: Abdillah, MIT
Hp: 0853 6581 8665
Email: [email protected]
Website: 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,202000F */
#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) {
statement
expr3;
}
Program konversi2.c
/* Mencetak tabel F – C untuk 0,202000F */
#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 }
DEKLARASI
N, i, j : integer
ALGORITMA:
read (N)
for i  1 to N do
for j  1 to i do
write ( * )
endfor
endfor
for (i=1;i<=N;i++)
for (j=1;j<=i;j++)
printf (“*”);
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:
do
statement
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
: integer
ALGORITMA:
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 }
DEKLARASI
N, i, jumlah
: integer
ALGORITMA:
read (N)
jumlah  0
i1
while (i <= N) do
jumlah  jumlah + i
ii+1
endwhile
write (jumlah)
Program deret2.c
#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);
}
Algoritma for menaik
PROGRAM Deret
{ Menjumlahkan deret 1 + 2 + 3 + … + N }
DEKLARASI
N, i, jumlah
: integer
ALGORITMA:
read (N)
jumlah  0
for i  1 to N do
for (i=1; i<=N; i++)
jumlah  jumlah + i
i = i +1
endfor
write (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 }
DEKLARASI
N, i, jumlah
: integer
ALGORITMA:
read (N)
jumlah  0
for i  N to 1 do
for (i=N; i>=1; i--)
jumlah  jumlah + i
i=i‒1
endfor
write (jumlah)
Program deret4.c
#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);
}