f_pengulangan

16
Pemrograman C/C++ Pengulangan/Looping 1 Barita Bram Ardiwinata Putra, S.T. Pengulangan/Looping F.1. Memahami Bentuk Ulang…Akhir-Ulang dan Translasi ke Program C/C++ Salah satu struktur pengulangan yang telah dipelajari adalah Ulang…Akhir-Ulang. Bentuknya adalah seperti berikut: ULANG SELAMA (kondisi) Pernyataan-1 Pernyataan-2 AKHIR-ULANG Dalam hal ini, bagian pernyataan-1 hingga pernyataan-2 akan dijalankan secara terus-menerus selama kondisi bernilai TRUE. Bentuk seperti di atas jika ditranslasikan menjadi bahasa C/C++ dapat menggunakan pernyataan while. Bentuknya adalah seperti berikut: while (kondisi) { pernyataan_1; pernyataan_2; } Seandainya dalam tanda “{}” hanya terdapat satu pernyataan, maka tanda “{}” dapat dihilangkan. Contoh: while (kondisi) pernyataan; Catatan: Kondisi pada C/C++ dapat berupa ekspresi yang menghasilkan nilai TRUE atau FALSE dan harus ditulis dalam tanda kurung “()”. Contoh F.1. Program untuk memperoleh faktor persekutuan terbesar (FPB). Algoritma: masukkan(m,n) r ← sisa_pembagian(m,n) ULANG SELAMA r≠0 m ← n n ← r r ← sisa_pembagian(m,n) AKHIR-ULANG tampilkan(n) Program: //Kode sumber: fpb.c

Upload: andry-priatna

Post on 04-Jul-2015

54 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

1

Barita Bram Ardiwinata Putra, S.T.

Pengulangan/Looping

F.1. Memahami Bentuk Ulang…Akhir-Ulang dan Translasi ke Program C/C++

Salah satu struktur pengulangan yang telah dipelajari adalah Ulang…Akhir-Ulang. Bentuknya adalah seperti

berikut:

ULANG SELAMA (kondisi)

Pernyataan-1

Pernyataan-2

AKHIR-ULANG

Dalam hal ini, bagian pernyataan-1 hingga pernyataan-2 akan dijalankan secara terus-menerus selama

kondisi bernilai TRUE.

Bentuk seperti di atas jika ditranslasikan menjadi bahasa C/C++ dapat menggunakan pernyataan while.

Bentuknya adalah seperti berikut:

while (kondisi)

{

pernyataan_1;

pernyataan_2;

}

Seandainya dalam tanda “{}” hanya terdapat satu pernyataan, maka tanda “{}” dapat dihilangkan. Contoh:

while (kondisi)

pernyataan;

Catatan: Kondisi pada C/C++ dapat berupa ekspresi yang menghasilkan nilai TRUE atau FALSE dan harus

ditulis dalam tanda kurung “()”.

Contoh F.1. Program untuk memperoleh faktor persekutuan terbesar (FPB).

Algoritma:

masukkan(m,n)

r ← sisa_pembagian(m,n)

ULANG SELAMA r≠0

m ← n

n ← r

r ← sisa_pembagian(m,n)

AKHIR-ULANG

tampilkan(n)

Program:

//Kode sumber: fpb.c

Page 2: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

2

Barita Bram Ardiwinata Putra, S.T.

#include <stdio.h> int main() { int m, n, r; printf(“Masukkan m: ”); scanf(“%d”, &m); printf(“Masukkan n: ”); scanf(“%d”, &n); r = m % n; while (r != 0) { m = n; n = r; r = m % n; } printf(“FPB: %d\n”, n); return 0; }

//Kode sumber: fpb.cpp #include <iostream> using namespace std; int main() { int m, n , r; cout << “Masukkan m: ”; cin >> m; cout << “Masukkan n: ”; cin >> n; r = m % n; while (r != 0) { m = n; n = r; r = m % n; } cout << “FPB: ” << n << endl; return 0;

}

Contoh F.2. Membuat algoritma untuk menampilkan 6 baris yang berisi string yang sama

Algoritma:

bil ← 1

ULANG SELAMA bil ≤ 6

Page 3: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

3

Barita Bram Ardiwinata Putra, S.T.

tampilkan(“Selamat Belajar C/C++”)

bil ← bil + 1

AKHIR-ULANG

Program:

Program di atas dapat dikonversi menjadi pemrograman C/C++ seperti berikut ini:

//Kode sumber: EnamBaris.c #include <stdio.h> int main() { int bil; bil = 1; while (bil <= 6) { printf(“Selamat Belajar C/C++ \n”); bil = bil + 1; } return 0; } //Kode sumber: EnamBaris.cpp #include <iostream> using namespace std; int main() { int bil = 1; while (bil <= 6) { cout << “Selamat belajar C/C++ \n”; bil = bil +1; } return 0; }

Contoh F.3. Membuat algoritma dan program untuk menampilkan bilangan ganjil yang terletak antara 1 –

10.

Algoritma:

bil ← 1

ULANG SELAMA bil ≤ 10

tampilkan(bil)

bil ← bil + 2

AKHIR-ULANG

Program:

//Kode sumber: BilanganGanjil10.c #include <stdio.h>

Page 4: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

4

Barita Bram Ardiwinata Putra, S.T.

int main() { int bil = 1; while (bil <= 10) { printf(“%d ”, bil); bil = bil + 2; } printf(“\n”); return 0; }

//Kode sumber: BilanganGanjil10.cpp #include <iostream> using namespace std; int main() { int bil = 1; while (bil <= 10) { cout << bil << “ ”; bil = bil + 2; } cout << endl; return 0; }

Contoh F.4. Membuat algoritma dan program untuk menampilkan deret angka 10 – 1.

Algoritma:

bil ← 10

ULANG SELAMA bil ≥ 1

tampilkan(bil)

bilt ← bil – 1

AKHIR-ULANG

Program:

//Kode sumber: DeretMenurun.c #include <stdio.h> int main() { int bil = 10; while (bil >= 1) { printf(“%d\n”, bil); bil = bil -1; } return 0; }

Page 5: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

5

Barita Bram Ardiwinata Putra, S.T.

//Kode sumber: DeretMenurun.cpp #include <iostream> using namespace std; int main() { int bil = 10; while (bil >= 1) { cout << bil << endl; bil = bil -1; } return 0; }

Contoh F.5. Membuat algoritma dan program untuk menampilkan hasil dari persamaan:

� � � � � � � � �� � � � �� � � � �

Dimana n adalah bilangan yang dimasukkan dari keyboard.

Algoritma:

masukkan(n)

jum ← 0

pencacah ← 0

ULANG SELAMA pencacah ≤ n

jum ← jum + pencacah

pencacah ← pencacah + 1

AKHIR-ULANG

tampilkan(jum)

Program:

//Kode sumber: JumlahN.c #include <stdio.h> int main() { int n, pencacah, jum; printf(“n = ”); scanf(“%d”, &n); jum = 0; pencacah = 1; while (pencacah <= n) { jum = jum +pencacah; pencacah = pencacah + 1; } printf(“Jumlah = %d\n”, jum); return 0; }

Page 6: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

6

Barita Bram Ardiwinata Putra, S.T.

//Kode sumber: JumlahN.cpp #include <iostream> using namespace std; int main() { int n, pencacah, jum; cout << “n = ”; cin >> n; jum = 0; pencacah = 1; while (pencacah <= n) { jum = jum +pencacah; pencacah = pencacah + 1; } cout << “Jumlah = ” << jum << endl; return 0; }

Contoh F.6. Menghitung π. Nilai π dapat diperoleh melalui pendekatan sebagai berikut:

�� � �

���

���

�� � �

��

Untuk n yang bernilai 100 atau lebih.

Algoritma:

masukkan(n)

bil ← 1

jum ← 0

ULANG SELAMA bil ≤ n

jum ← jum + 1 / (bil x bil)

pencacah ← pencacah + 1

AKHIR-ULANG

pi ← akar(jum x 6)

tampilkan(pi)

Program:

//Kode sumber: MenghitungPi.c #include <stdio.h> #include <math.h> int main() { int n, bil; double jum, pi; printf(“n = ”);

Page 7: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

7

Barita Bram Ardiwinata Putra, S.T.

scanf(“%d”, &n); jum = 0; bil = 1; while (bil <= n) { jum = jum + 1.0 / (bil * bil); bil = bil + 1; } pi = sqrt(jum * 6); printf(“pi = %lf\n”, pi); return 0; } //Kode sumber: MenghitungPi.cpp #include <iostream> #include <math.h> using namespace std; int main() { int n, bil; double jum, pi; cout << “n = ”; cin >> n; jum = 0; bil = 1; while (bil <= n) { jum = jum + 1.0 / (bil * bil); bil = bil + 1; } pi = sqrt(jum*6); cout << “pi = ” << pi << endl; return 0; }

Contoh F.7. Membuat algoritma dan program yang meminta n buah bilangan bulat yang dimasukkan dari

keyboard dan kemudian menampilkan rata-rata dari keseluruhan bilangan tersebut.

Algoritma:

masukkan(n)

jum ← 0

pencacah ← 0

ULANG SELAMA pencacah ≤ n

masukkan(bil)

jum ← jum + bil

pencacah ← pencacah + 1

AKHIR-ULANG

Page 8: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

8

Barita Bram Ardiwinata Putra, S.T.

rata_rata ← jum / n

tampilkan(rata_rata)

Program:

//Kode sumber: RatarataNBilangan.c #include <stdio.h> int main() { int n, pencacah; double bil, jum, rata_rata; printf(“Jumlah data = ”); scanf(“%d”, &n); jum = 0; pencacah = 1; while (pencacah <= n) { printf(“Bilangan %d = ”, pencacah); scanf(“%lf”, &bil); jum = jum + bil; pencacah = pencacah + 1; } rata_rata = jum / n; printf(“Rata-rata = %lf\n”, rata_rata); return 0; } //Kode sumber: RatarataNBilangan.cpp #include <iostream> using namespace std; int main() { int n, pencacah; double bil, jum, rata_rata; cout << “Jumlah data = ”; cin >> n; jum = 0; pencacah = 1; while (pencacah <= n) { cout << “Bilangan ” << pencacah << “ = ”; cin >> bil; jum = jum + bil; pencacah = pencacah + 1; } rata_rata = jum / n; cout << “Rata-rata = ” << rata_rata << endl; return 0;

Page 9: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

9

Barita Bram Ardiwinata Putra, S.T.

}

Contoh F.8. Membuat algoritma dan program yang meminta sebuah bilangan bulat yang dimasukkan dari

keyboard dan kemudian menampilkan deret berikut jika yang dimasukkan adalah 50:

� � � �� �� �� �� �� �

Angka terakhir yang ditampilkan dalam deret harus lebih kecil atau sama dengan bilangan yang

dimasukkan dari keyboard.

Algoritma:

masukkan(n)

pencacah ← 1

nilai ← 1

ULANG SELAMA nilai < n

tampilkan(nilai)

nilai ← nilai + pencacah

pencacah ← pencacah + 1

AKHIR-ULANG

Program:

//Kode sumber: Deret1.c #include <stdio.h> int main() { int n, pencacah, nilai; printf(“Nilai pembatas = ”); scanf(“%d”, &n); pencacah = 1; nilai = 1; while (nilai <= n) { printf(“%d ”, nilai); nilai = nilai +pencacah; pencacah = pencacah + 1; } printf(“\n”); return 0; } //Kode sumber: Deret1.cpp #include <iostream> using namespace std; int main() { int n, pencacah, nilai; cout << “Nilai pembatas = ”;

Page 10: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

10

Barita Bram Ardiwinata Putra, S.T.

cin >> n; pencacah = 1; nilai = 1; while (nilai <= n) { cout << nilai << “ ”; nilai = nilai + pencacah; pencacah = pencacah + 1; } cout << endl; return 0; }

Contoh F.9. Membuat algoritma dan program untuk menampilkan deret:

100000000

10000000

1000000

100000

10000

1000

100

10

1

Algoritma:

nilai ← 100000000

ULANG SELAMA nilai ≥ 1

Tampilkan(nilai)

nilai ← nilai / 10

AKHIR-ULANG

Program:

//Kode sumber: Deret2.c #include <stdio.h> int main() { long int nilai; nilai = 100000000; while (nilai >=1) { printf(“%ld\n”, nilai); nilai = nilai / 10; } return 0; } //Kode sumber: Deret2.cpp

Page 11: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

11

Barita Bram Ardiwinata Putra, S.T.

#include <iostream> using namespace std; int main() { long int nilai; nilai = 100000000; while (nilai >= 1) { cout << nilai << endl; nilai = nilai / 10; } return 0; }

Contoh F.10. Membuat algoritma dan program yang meminta suatu string dimasukkan dari keyboard dan

kemudian menghitung dan menampilkan jumlah karakter yang terdapat pada string tersebut.

Algoritma:

Masukkan(string)

indeks ← 0

ULANG SELAMA string[indeks] ≠ NULL

Indeks ← indeks + 1

AKHIR-ULANG

Tampilkan(“Jumlah karakter = ”, indeks)

Program:

//Kode sumber: JumlahString.c #include <stdio.h> int main() { char string[80]; int indeks; printf(“Masukkan suatu string: ”); gets(string); indeks = 0; while (string[indeks] != ‘\0’) { indeks = indeks + 1; } printf(“Jumlah karakter = %d\n”, indeks); return 0; } //Kode sumber: JumlahString.cpp #include <iostream> using namespace std; int main() {

Page 12: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

12

Barita Bram Ardiwinata Putra, S.T.

char string[80]; int indeks; cout << “Masukkan suatu string: ”; cin >> string; indeks = 0; while (string[indeks] != ‘\0’) { indeks = indeks + 1; } cout << “Jumlah karakter = ” << indeks << endl; return 0; }

Contoh F.11. Membuat algoritma dan program untuk membalik suatu string yang dimasukkan dengan

keyboard kemudian menampilkan string yang telah dibalikkan tersebut.

Algoritma:

Masukkan(string)

indeks ← panjang(string) – 1

ULANG SELAMA indeks >= 0

tampilkan(string[indeks])

indeks = indeks – 1

AKHIR-ULANG

Program:

//Kode sumber: MembalikString.c #include <stdio.h> #include <string.h> int main() { char string[80]; int indeks; printf(“Masukkan suatu string: ”); gets(string); indeks = strlen(string)-1; while (indeks >= 0) { printf(“%c”, string[indeks]); indeks = indeks-1; } printf(“\n”); return 0; } //Kode sumber: MembalikString.cpp #include <iostream>

Page 13: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

13

Barita Bram Ardiwinata Putra, S.T.

#include <string.h> using namespace std; int main() { char string[80]; int indeks; cout << “Masukkan suatu string: ”; cin >> string; indeks = strlen(string)-1; while (indeks >= 0) { cout << string[indeks]; indeks = indeks-1; } cout << “\n”; return 0; }

E.2. Memahami Bentuk UNTUK…AKHIR-UNTUK dan Translasi ke Program C/C++

Bentuk UNTUK…AKHIR-UNTUK juga digunakan untuk menangani pengulangan. Contoh penggunaannya

adalah sebagai berikut:

UNTUK variabel ← awal s.d. akhir LANGKAH langkah

Pernyataan_1

Pernyataan_2

AKHIR-UNTUK

Bentuk di atas melakukan pengulangan terhadap Pernyataan_1 hingga Pernyataan_2 yang dimulai dari

variabel “awal” hingga variabel yang memiliki nilai tidak lebih dari “akhir”. Klausa LANGKAH menentukan

kenaikan terhadap nilai variabel untuk setiap iterasi berikutnya. Bagian LANGKAH bersifat opsional, jika tidak

disebutkan, maka kenaikan terhadap variabel adalah sebesar 1.

Pada C/C++, bentuk tersebut dapat ditranslasikan dengan menggunakan for. Pernyataan for yang setara

dengan bentuk UNTUK…AKHIR-UNTUK adalah seperti berikut:

for (variabel=awal; variabel<=akhir; variabel=variabel+langkah)

{

Pernyataan_1;

Pernyataan_2;

}

Tanda “{}” dapat ditiadakan jika pada bagian tersebut hanya terdapat satu pernyataan.

Catatan:

Pada C/C++, bentuk seperti “variabel = variabel + langkah” dapat ditulis menjadi “variabel += langkah”

Bentuk yang setara dengan += antara lain: -=, *=, /=, %=

Bentuk seperti “variabel = variabel + 1” dapat ditulis menjadi “variabel++”

Page 14: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

14

Barita Bram Ardiwinata Putra, S.T.

Bentuk seperti “variabel = variabel – 1” dapat ditulis menjadi “variabel--”

Contoh F.12. Membuat algoritma dan program dengan memanfaatkan bentuk UNTUK…AKHIR-UNTUK

untuk menampilkan 6 buah baris yang berisi string “Selamat Belajar C/C++”.

Algoritma:

UNTUK bil ← 1 s.d. 6

Tampilkan(“Selamat Belajar C/C++”)

AKHIR-UNTUK

Program:

//Kode sumber: EnamBarisFor.c #include <stdio.h> int main() { int bil; for (bil=1; bil<=6; bil++) { printf(“Selamat Belajar C/C++ \n”); } return 0; } //Kode sumber: EnamBarisFor.cpp #include <iostream> using namespace std; int main() { int bil; for (bil=1; bil<=6; bil++) { cout << “Selamat Belajar C/C++” << endl; } return 0; }

Contoh F.13. Membuat algoritma dan program untuk menghitung

��

��

� � �

��

���

Algoritma:

jum ← 0

UNTUK bil ← 1 s.d. 99

jum ← jum + bil / (bil + 1)

AKHIR-UNTUK

Tampilkan(jum)

Page 15: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

15

Barita Bram Ardiwinata Putra, S.T.

Program:

//Kode sumber: MenghitungDeretPecahan.c #include <stdio.h> int main() { int bil, pencacah; double jum; for (bil=1; bil<=99; bil++) { jum = jum + (double) bil / (bil + 1); } printf(“Jumlah = %lf\n”, jum); return 0; } //Kode sumber: MenghitungDeretPecahan.cpp #include <iostream> using namespace std; int main() { int bil, pencacah; double jum; for (bil=1; bil<=99; bil++) { jum = jum + (double) bil / (bil + 1); } cout << “Jumlah = ” << jum << endl; return 0; }

Contoh F.14. Membuat algoritma dan program untuk menghitung faktorial.

Algoritma:

Masukkan(n)

Hasil ← 1

UNTUK bil ← n s.d. 1 LANGKAH -1

Hasil ← Hasil * bil

AKHIR-UNTUK

Tampilkan(Hasil)

Program:

//Kode sumber: faktorial.c #include <stdio.h> int main() { int bil, n; long int hasil; printf(“n = ”); scanf(“%d”, &n);

Page 16: f_Pengulangan

Pemrograman C/C++ Pengulangan/Looping

16

Barita Bram Ardiwinata Putra, S.T.

hasil = 1; for (bil=n; bil>=1; bil--) { hasil = hasil * bil; } printf(“n! = %d”, hasil); return 0; } //Kode sumber: Faktorial.cpp #include <iostream> using namespace std; int main() { int bil, n; long int hasil; cout << “n = ”; cin >> n; hasil = 1; for (bil=n; bil>=1; bil--) { hasil = hasil * bil; } cout << “n! = ” << hasil << endl; return 0; }