Minggu IV : Teori dan Workshop. PERULANGAN (LOOP/Iterasi/Repetisi)

dokumen-dokumen yang mirip
STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

STRUKTUR DASAR ALGORITMA

Struktur Pengulangan

ALGORITMA PERULANGAN

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

Struktur Kontrol. Contoh, Akan tercetak x is 100 jika nilai yang disimpan pada variable x adalah 100:

Konstruksi Dasar Algoritma

Algoritma Pemrograman

Algoritma Pemrograman

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

Algoritma Pemrograman

Algoritma Pemrograman

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

LOOPING. Brigida Arie Minartiningtyas, M.Kom

MODUL V PERULANGAN. Perulangan digunakan untuk menjalankan satu atau lebih perintah secara berulang selama kondisi tertentu.

Algoritma & Pemrograman

PERTEMUAN 9-11 STATEMENT

Algoritma Pemrograman

3. Struktur Perulangan dalam C++

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

OPERASI SELEKSI PEMROGRAMAN C++

PENGULANGAN. pencacah harus bertipe integer atau karakter pernyataan adalah satu atau lebih instruksi yang. Pernyataan

PENGANTAR KOMPUTER & SOFTWARE II

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

STRUKTUR DASAR ALGORITMA

Algoritma Pemrograman

BAB VI. STATEMENT CONTROL

PEMROGRAMAN TERSTRUKTUR PERTEMUAN VI KOMPONEN KOMPONEN PEMROGRAMAN TERSTRUKTUR

Algoritma Pemrograman 2B (Pemrograman C++)

Dasar Pemrograman. Kondisi dan Perulangan. By : Hendri Sopryadi, S.Kom, M.T.I

Melakukan Operasi Logika

PERULANGAN (LOOP) PERNYATAAN WHILE

Perulangan, Percabangan, dan Studi Kasus

3. Struktur Perulangan dalam Bahasa C++

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

1/5. while and do Loops The remaining types of loops are while and do. As with for loops, while and do loops Praktikum Alpro Modul 3.

IF IF ELSE. ELSE IF SWITCH CASE STATEMENT F NT OR, W HILE D O WHILE I 2

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

OPERATOR DAN STATEMEN I/O

Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :

Selection / Pemilihan PEMILIHAN

24/09/2017 PERULANGAN

ALGORITMA RINTA KRIDALUKMANA SISKOM UNDIP

Keg. Pembelajaran 5 : Perulangan dalam C++ 1. Tujuan Kegiatan Pembelajaran 2. Uraian Materi while do..while for continue dan break go to

Pemrograman Dasar R E P E T I T I O N

PERULANGAN PROSES. Proses perulangan ditandai dengan mekanisme yang disebut loop. Proses Loop : Proses yang berulang-ulang

DPK UNIVERSITAS BRAWIJAYA MALANG

INPUT OUTPUT. cout. Digunakan untuk mencetak suatu informasi ke layar Contoh : cout << Halo Teknik Informatika

PERCABANGAN P E N G E N A L A N P R O G R A M S T U D I T E K N I K I N F O R M AT I K A. Institut Teknologi Sumatera

MODUL 5 PERULANGAN (LOOPING)

ALGORITMA DAN PEMROGRAMAN

Rekursif/ Iterasi/ Pengulangan

BAB 6. Struktur Kontrol

MODUL. Perulangan (Looping) Modul Praktikum C++ Pemrograman Dasar. Semester Genap 2017/2018

Pertemuan 06. Dasar Pemrograman Komputer [TKL-4002] 2010

Imam Fahrur Rozi. Algoritma dan Pemrograman PENGULANGAN

Object Oriented Programming (OOP)

REVIEW ARRAY. Institut Teknologi Sumatera

Teori Algoritma. Algoritma Perulangan

Selection, Looping, Branching


Algoritma Pemrograman

Algoritma Perulangan. Kuliah algoritma dan pemrograman

PERTEMUAN 5 PENGEMBANGAN PSEUDOCODE STRUKTUR KONTROL PENGULANGAN

Perulangan Muh. Izzuddin Mahali, M.Cs. Pertemuan 3. Algoritma dan Struktur Data. PT. Elektronika FT UNY

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

Contoh 1: Akan dicetak angka 1 sampai 10 dengan menggunakan perulangan for

Algoritma dan Pemrograman. Pertemuan Ke-9 Statement Pengulangan 2

Memilih bilangan yang nilainya terbesar atau terkecil dari dua buah bilangan yang ada

Bab 3. Decision 1 (Pengambilan Keputusan)

Soal hari Jumat (16/10) Latihan 10 MS

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

ALGORITHM. 9 Algoritma Menggunakan Control Statement IF. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

PENGANTAR ALGORITMA & PEMROGRAMAN C/C++ Analisis Algoritma dan Struktur Data (TKE 670)

Fungsi 1. Ekohariadi FT Unesa

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Pengulangan for. Konstruksi for. keberadaan exp1, exp2, dan exp3 bersifat optional. for (exp1; exp2; exp3){ statement; atau. statement1; statement2;

PERNYATAAN DAN KONDISI

PERTEMUAN 7 REVIEW (QUIZ)

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Struktur Kontrol. Gambar 1: Flowchart Statement If

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011

BAB 6. Struktur Kontrol

MODUL 6 PERULANGAN. Contoh1: 1. Pernyataan while Digunakan untuk pengambilan keputusan dan looping. Bentuk Umum:

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

Algoritma Pemrograman

Pemrograman Fery Updi,M.Kom

PEMROGRAMAN BERORIENTASI OBJEK. Pengulangan. Budhi Irawan, S.Si, M.T

INPUT & OUTPUT SEQUENCE STATEMENT SELECTION STATEMENT. Pengantar Logika & Teknik Pemrograman Politeknik Negeri Jakarta TA.

4.1. Pernyataan Kondisi dan Perulangan Pernyataan kondisi digunakan apabila kita ingin membandingkan atau mengetahui nilai suatu objek.

Tipe Data, Identifier, Operator dan Control Statement

Percabangan. Agus Priyanto, M.Kom

MODUL 2 STRUKTUR KONTROL

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Pertemuan 3: Struktur Kontrol Pemrograman

Transkripsi:

Minggu IV : Teori dan Workshop PERULANGAN (LOOP/Iterasi/Repetisi)

Motivasi Sangat banyak kegiatan sehari-hari yang sering diulang. Contoh : Makan sepiring akan dilakukan sesendok demi sesendok (berulang). Kondisi awal : sepiring nasi Yang diulang : makan sesendok nasi Kondisi berikutnya : sepiring sesendok nasi Kondisi akhir : nasi habis

Aritmetika Untuk menghitung 2 x 3 dilakukan dengan menjumlah 2 sebanyak 3 kali (2 ditambah 2ditambah 2) Kondisi awal? Yang diulang? Kondisi berikutnya? Kondisi akhir?

Ada yang berkurang vs ada yang bertambah Kondisi awal : berada di rumah Kondisi akhir : sampai di kampus Yang diulang : jalan kaki selangkah demi selangkah Yang berkurang :jarak rumah kampus Yang bertambah : banyaknya langkah yang telah dilakukan

Komputer mempunyai kemampuan untuk menghitung perulangan dengan sangat cepat dan tidak mengenal lelah. Kadang diperlukan suatu kondisi untuk menghitung dengan perulangan sampai presisi tertentu.

Konsep Counter Perhatikan penugasan berikut ini : C++ : Atau i i + 1 i++; ++i;

Operator Increment dan Decrement Operator increment dan decrement digunakan dalam ekspresi aritmetika Postfix Prefix int hasil, bilangan = 10; hasil = 2 * bilangan++; cout << hasil << endl; cout << bilangan << endl; int hasil, bilangan = 10; hasil = 2 * ++bilangan; cout << hasil << endl; cout << bilangan << endl; Output: 20 11 Output: 22 11

Konsep Total Misalnya kita diminta untuk menghitung jumlah deret : 1 + 2 + 3 + + n = Harga awal : i dimulai dengan 0 (unsur identitas penjumlahan) n i=1 i

Konsep Total (lanjutan) Algoritmik : jumlah 0 for i 1 to n do jumlah jumlah + i C++ : jumlah = 0; for (i = 1; i<=n; i++) jumlah += i;

Konsep Total Perkalian Misalkan kita diminta menghitung : n! = 1. 2. 3. n = Harga awal : 1 (unsur identitas perkalian) n i=1 i

Algoritmik faktorial 1 for i 1 to n do faktorial faktorial * i C++ faktorial = 1; for (i = 1; i<=n; i++) faktorial *= i;

Pemrograman Algoritmik for i awal to akhir do aksi end for for i awal downto akhir do aksi end for while (kondisi) do aksi end while repeat aksi until (kondisi) C++ for (i = awal; i <= akhir; i++) aksi; for (i = awal; i <= akhir; i--) aksi; while (kondisi) aksi; do { aksi; while (kondisi);

Contoh pernyataan for Tidak sah: for (j = 0, j < n, j = j + 3) // semicolon diperlukan for (j = 0; j < n) // bagian ketiga diperlukan

for Ekspresi Null Contoh 1: j = 1; sum = 0; for ( ; j <= 10; j = j + 1) sum = sum + j; Contoh 2: j = 1; sum = 0; for ( ; j <= 10; ) sum = sum + j;

Contoh 3: j = 1; sum = 0; for ( ; ; ) { sum = sum + j; j++; cout << "\n" << sum;

Menghentikan Loop terminating loop Output bilangan genap < 12 Ketika x berharga 12, evaluasi ekspresi menjadi false x = 2; while ( x!= 12 ) { cout << x << ; x = x + 2; Program Output: 2 4 6 8 10 Example: infinite loop Outputs odd bilangans < 12 x tidak pernah berharga 12, sehingga ekspresi selalu true x = 1; while ( x!= 12 ) { cout << x << ; x = x + 2; Loop akan terus Program Output: berulang! 1 3 5 7 9 11 13 15...

Perulangan while dan do-while Perbedaan antara keduanya : saat pengecekan ekspresi! while loop: while ( Expression ) { Statement_1; Statement_2;.... Statement_Last; Ekspresi dievaluasi sebelum badan loop dieksekusi. Badan loop bisa saja tidak dieksekusi. Badan loop do { do-while loop: Statement_1; Statement_2;.... Statement_Last; while ( Expression ); Ekspresi dievaluasi sesudah badan loop dieksekusi. Badan loop Badan loop setidakna diekseskusi sekali.

Format: Badan loop adalah sebuah blok for (initialisasi; tes; update ) { Statement_1; Statement_2;... Badan loop adalah pernyataan tunggal for (initialisasi; tes; update ) Statement; for Loop for loop adalah pre-test loop ekspresi dites before setiap iterasi 1. Eksekusi ekspresi inisialisasi dilakukan hanya sekali 2. Evaluasi ekspresi tes If true, go to 3. If false, loop berakhir. 3. Eksekusi badan loop 4. Eksekusi ekspresi update Kembali ke 2.

for Loop Untuk menambah 1 sampai 10 lakukan pernyataan berikut 10 kali sum = sum + n; Menggunakan while : sum = 0; n = 1; while ( n <= 10 ) { sum = sum + n; n++; Menggunakan for : sum = 0; for ( n = 1; n <= 10 ; n++ ) sum = sum + n; n diinitialisasi1 loop berlanjut sepanjang bernilai true increment setiap kali badan loop dieksekusi for ( Inisialisasi; Ekspresi_Tes; Ekspresi_Update) Cek untuk akhir loop

for Loop Variabel update yang berbeda Variabel n didecrement 7 setiap kali iterasi for ( n = 0; n >= -100; n = n 7) cout << n is now equal to << n << endl; Mendeklarasikan variabel saat inisialisasi Variabel n lokal terhadap badan loop for ( int n = 1; n <= 10; n++ ) { sum = sum + n; Skope cout << sum << endl; variabel n Lebih dari 1 pernyataan dalam inisialisasi for ( int ct = 1, total = 0.0; ct <= 5; ct ++ ) ct dan total { diinisialisasi cout << Enter the sales for day << ct << endl; cin >> sales; total += sales; multiple inisialisasi dipisah dengan koma

Loop Bersarang loop bersarang : loop yang berada di dalam loop yang lain for ( int hours = 0; hours < 24; hours++ ) 3 levels of nesting { for ( int minutes = 0; minutes < 60; minutes++ ) { for ( int seconds = 0; seconds < 60; seconds++ ) { cout << setw(2) << hours << : ; cout << setw(2) << minutes << : cout << setw(2) << seconds << endl; Indentasikan setiap level sub pernyataan bersarang Inner loop akan menjalani iterasi untuk setiap iterasi outer loop

Contoh loop bersarang int y,z; for (y = 5; y > 0; y--) {cout << "\nkuliah."; for (z = 1; z < 3; z++) cout <<"\talgoritma.\t"; cout << ** ; Eksekusi 1 2 3 4 5 4 5 4 6 2 3 4 5 4 5 4 6 2 3 4 5 4 5 4 6 2 3 4 5 4 5 4 6 2 3 4 5 4 5 4 6 2 7

Pernyataan break dan continue break statement causes a loop to terminate early while ( ++count <= 10 ) When break is executed, the loop ends immediately and execution continues with statement following the loop Exit loop { cin >> bilangan; if ( bilangan >= 0 ) { cout << Error: positive bilangan ; break; sum += bilangan; Reads in 10 negative bilangans, computes sum continue statement causes loop to stop current iteration and begin next one while ( testval++ < 7 ) Ketika testval = 4, continue dieksekusi dan cout diloncati, lalu iterasi berikutnya mulai { 1 2 3 5 6 7 if ( testval == 4 ) continue; cout << testval << ;

Pernyataan break int j =50; while (j < 80) { j += 10; if (j == 70) break; cout << Nilai j adalah << j<< \n ; cout << Keluar dari loop.\n ; Output Nilai j adalah 60 Keluar dari loop. Deretan eksekusi : 1 2 3 4 6 7 1 2 3 4 5 8

Pernyataan continue int j =50; while (j < 80) { j += 10; if (j == 70) continue; cout << Nilai j adalah << j<< \n ; cout << Keluar dari loop.\n ; Output Nilai j adalah 60 Nilai j adalah 80 Keluar dari loop. Sequence of execution: 1 2 3 4 6 7 1 2 3 4 5 1 2 3 4 6 7 1 8

break dan continue while ( ---) { statement-1; if( ---) continue statement-2; statement-3; while ( ---) { statement-1; if( ---) break statement-2; statement-3;

Loop design consists of three parts Designing Loops Loop body repeats a predetermined bilangan of times pseudocode: implemented as a for loop: sum = 0 repeat this_many times read value into next sum = sum + next end of loop 1 the body of the loop 2 the initializing statements 3 the conditions for ending the loop Compute the product of a list of bilangans int sum = 0; Initialize to 0 for ( int ct = 1; ct <= this_many; ct++ ) { Loop terminates cin >> next; when this is false sum = sum + next; int product =1; Not initialized to 0 for ( int ct = 1; ct <= this_many; ct++) { First time through loop cin >> next; product * next should = next product = product * next;

Kasus 4.1. Cetaklah bilangan 1 sampai 4 Algoritma Cetak_Angka {Mencetak angka 1,.., 4 ke piranti keluaran Deklarasi i : integer for loop while loop repeat until loop Deskripsi for i 1 to 4 do write (i) endfor Deskripsi i 1 while (i <= 4) do write (i) i i + 1 endwhile Deskripsi i 1 repeat write (i) i i + 1 until (i > 4)

Perhatikan perbedaan ketiga flowchart berikut : Mulai Mulai Mulai for i = 1 to 4 do i =1 i =1 i i <= 4 F i Selesai i T i = i+1 i = i+1 Selesai F i > 4 T Selesai Struktur for Struktur while Struktur repeat -until

for loop while loop do while loop #include <iostream.h> main() { int i; for (i=1; i<=4; i++) cout << << i; return 0; #include <iostream.h> main() { int i=1; while (i <= 4) { cout << << i; i++; return 0; #include <iostream.h> main() { int i=1; do { cout << << i; i++; while (i <= 4); return 0;

Kasus 4.2. Cetaklah bilangan ganjil dari 0 sampai 10 Ide : Bilangan ganjil dari 0 sampai 10 diawali dengan 1, kemudian bertambah dengan 2 atau bilangan ganjil adalah bilangan yang bila dibagi 2 bersisa 1.

Algoritma Cetak Ganjil {Mencetak bilangan ganjil dari 0 sampai 10 ke piranti keluaran Deklarasi i : integer Deskripsi for i 0 to 10 do if (i mod 2 = 1) then write (i) endif endfor Deskripsi i 1 while (i <= 10) do write (i) i i + 2 endwhile Deskripsi i 1 repeat write (i) i i + 2 until (i > 10)

Beberapa cara : Alternatif for Alternatif while Alternatif do while #include <iostream.h> #include <iostream.h> #include <iostream.h> main() { for (int i=0; i<=10; i++) { if (i % 2 == 1) cout << i << endl; return 0; main() { int i=1; while (i<=10) { if (i % 2 == 1) cout << i << endl; i++; return 0; main() { int i=1; do { if (i % 2 == 1) cout << i << endl; i++; while (i<=10); return 0;

Aplikasi Perulangan kerap digunakan untuk menghitung jumlah deret. Contoh : Hitung jumlah dari : 1+2+3+ + n = n i = 1 Kuncinya : buat pola untuk rumus di sebelah kanan! Untuk operasi perkalian menggunakan tanda i

Algoritma menjumlah deret Deklarasi i, n, jumlah : integer Deskripsi read(n) {menjumlah sampai suku ke-n jumlah 0 { nilai awal/unsur identitas penjumlahan adalah 0 for i 1 to n do jumlah jumlah + i write(jumlah)

#include <iostream.h> Bahasa C++ main() { int n, jumlah = 0; cout << "Sampai berapa suku? "; cin >> n; for (int i=0; i<=n; i++) jumlah += i; cout << "Jumlah deret sampai : " << n << " suku = " << jumlah; return 0; Cocok menggunakan perulangan for karena digunakan untuk kalkulasi bilanganerik dengan jumlah perulangan tertentu (fix)

Bilangan Fibonacci Bilangan Fibonacci dapat disajikan sebagai berikut : 0, 1, 1, 2, 3, 5, 8, Dimulai dari suku pertama = 0 dan kedua = 1, suku ketiga adalah jumlah 2 suku pertama. Dalam rumus : F(n) = F(n-1) + F(n-2)

Analisis : Ketika kita menghitung suku ke-3 (F(3)) maka suku ke-1 sebenarnya sudah tidak digunakan. Untuk itu kita bisa menggeser tempat : f1 f2 f2 f3 Lalu berulang kita hitung suku berikutnya : f3 f2 + f1 Buat algoritma fibonacci dan flowchartnya!

Bahasa C++ #include <iostream.h> #define true 1 int main() { long batas; cout << "Masukkan integer positif : "; cin >> batas; cout << "Bilangan Fibonacci < " << batas << ":\n0, 1"; long f1=0, f2=1; while (true) { long f3 = f2 + f1; if (f3 > batas) break; // menghentikan loop cout << ", " << f3; f1 = f2; f2 = f3; return 0; Buat class Fibonacci dan methodnya!

Perulangan while cocok untuk situasi di mana badan loop tidak semuanya dieksekusi Perulangan do - while cocok untuk situasi di mana badan loop sekurangkurangnya dieksekusi satu kali

Kasus 4.3. Carilah rata-rata dari n bilangan bulat positif. Analisis : Rumus rata-rata adalah : n i=1 n x i yaitu jumlah data dibagi dengan banyaknya data, dengan x i adalah data ke-i.

Algoritma mencari rata-rata {Diberikan n data kemudian dicari rata-ratanya Deklarasi i, n, jumlah, x : integer rata : real Deskripsi read(n) jumlah 0 for i 1 to n do read(x) jumlah jumlah + x endfor rata jumlah/n write(rata)

Bahasa C++ #include <iostream.h> main() { int i, n, jumlah, x; float rata; cout << "Banyak data : "; cin >> n; jumlah = 0; for (i = 1; i<=n; i++) { cout << "Data ke- : " << i; cin >> x; jumlah += x; rata = (float) jumlah/n; cout << "Rata-rata = " << rata; return 0; Buat class Rata dan methodnya!

Sentinel Digunakan bila banyaknya masukan tidak diketahui, tetapi sifat datanya diketahui. Untuk menghentikan masukan, digunakan harga lain. Contoh : Bila masukan harga selalu positif (misalkan nilai mahasiswa), sentinel bisa nol atau harga negatif.

Kasus 4.4. Hitunglah rata-rata dari integer positif (banyak data ditentukan dari data yang dimasukkan) Algoritma mencari rata-rata {Diberikan data bilangan bulat positif kemudian dicari rata-ratanya Deklarasi Deskripsi n, jumlah, x : integer rata : real jumlah 0 read(x) n 1 while (x>0) do jumlah jumlah + x read(x) n n+1 endfor rata jumlah/(n-1) write(rata)

Bahasa C++ #include <iostream.h> main() { int n = 1, jumlah = 0, x; float rata; cout << "Data ke-1 : "; cin >> x; while (x>0) { jumlah += x; cout << "Data ke- : " << n+1; cin >> x; n++; rata = (float)jumlah/(n-1); cout << "Rata-rata = " << rata; return 0; Buat class Rata dan methodnya!

Kasus 4.7. Hitunglah nilai dari dan y bilangan bulat. x y dengan x bilangan real Analisis : y x i= 1 = x. x. x. x (sebanyak y kali) = Input : x dan y Output : hasil x pangkat y y x

Algoritma Pangkat {Diberikan masukan x dan y, dihitung nilai dari x pangkat y Deklarasi x, y, i : integer { input pangkat : integer { output Deskripsi read (x,y) pangkat 1 for i 1 to y do pangkat pangkat * x enfor write (pangkat) Buat class Pangkat dan methodnya!

Bahasa C++ #include <iostream.h> main() { int x, y, i; int pangkat = 1; cout << "Menghitung hasil perpangkatan\n"; cout << "Tulis sebuah bilangan : "; cin >> x; cout << "Mau dipangkat berapa : "; cin >> y; for (i = 1; i<=y; i++) pangkat *= x; cout << x << " pangkat << y << = << pangkat; return 0;

Hanya saja, algoritma ini khusus untuk y 0. Latihan : Sempurnakan algoritma tersebut agar dapat menghitung pangkat y negatif.

Kasus 4.8. Hitunglah axb dengan metode penjumlahan Analisis : axb = a + a + + a (sebanyak b kali) = b i = 1 a Ini berlaku untuk a positif maupun negatif Bagaimana bila b negatif?

Karena loop tidak pernah negatif maka harus dimanipulasi perulangan yang selalu positif. Untuk itu nilai b menjadi abs(b) Kemudian khusus untuk b < 0, jumlah yang sudah diperoleh dinegatifkan Ingat : ax(-b) = ax(-1)xb = -axb

#include <iostream.h> #include <math.h> Bahasa C++ main() { int a, b, jumlah=0; cout << "Program menghitung perkalian dengan cara penjumlahan\n"; cout << "Masukkan nilai a : "; cin >> a; cout << "Masukkan nilai b : "; cin >> b; for (int i=1; i<=abs(b); i++) jumlah += a; if (b < 0) jumlah = -jumlah; cout << a << "x" << b << " = " << jumlah; return 0;

Loop Invariant Loop invariant digunakan untuk membuktikan bahwa loop for adalah benar Karakteristik : Benar pada suatu titik (pernyataan) pada setiap iterasi loop Benar bila loop berhenti membuktikan loop bekerja secara benar.

Contoh : program untuk mencari nilai minimum dari sederetan input #include <iostream.h> Bahasa C++ int main() { // mencari maksimum dari sederetan bilangan int n, min; cout << "Masukkan bilangan positif(0 untuk selesai): "; cin >> n; for (min = n; n > 0; ) { if (n < min) min = n; // INVARIANT: min <= n untuk semua n, // dan min adalah 1 dari n bilangan cin >> n; cout << "min = " << min << endl; return 0;

Kondisi : min <= n selalu benar sebab sebelum pernyataan if mengubah harga min jika harga input terakhir dari n kurang dari harga min sebelumnya. Kondisi : min satu dari n harga selalu benar sebab min diawali dengan harga pertama dan min berubah harganya hanya bila harga input n yang baru lebih kecil dari min. Akhirnya : kondisi benar ketika loop berakhir diperoleh nilai minimum dari semua input

Rangkuman Minggu Depan : SUBPROGRAM

Mengakhiri perulangan Secara umum, perulangan dapat diakhiri dengan cara : Dikontrol counter : banyaknya iterasi ditentukan sebelum perulangan dimulai Ditanyakan lebih dulu sebelum iterasi : pengguna ditanya setiap kali iterasi apakah dilanjutkan atau tidak Keluar dengan tanda (flag) : harga variabel berubah pada saat perulangan. Bila sudah berubah sesuai dengan kondisi keluar, maka perulangan berhenti Buat contoh dari masing-masing kasus di atas!

Menunggu respon pengguna char jawab; do { // pernyataan lain cout << Mau melanjutkan? (y/t): "; cin >> jawab; while (jawab!= t');

Contoh Flag bilangan = 0; while ( bilangan!= 999 ) { total = total + bilangan; cout \ntotal saat ini << total; cout << Masukkan bilangan: ; cin >> bilangan;

Contoh Flag flag = 1; while ( flag ) { total = total + bilangan; cout \ntotal saat ini << total; cout << Masukkan bilangan: ; cin >> bilangan; if( bilangan > 999) flag = 0;

Melakukan debugging pada perulangan Bisa terjadi loop terjadi tak berhingga banyak. Agar loop dapat dikendalikan, dapat dilakukan trace (pelacakan) dengan cara : Debuglah kode berikut : int next = 2; int prod = 1; while ( next < 5 ) { next++; prod = prod * next; Variabel trace diletakkan pada cout dalam badan loop : int next = 2; int prod = 1; while ( next < 5 ) { next++; prod = prod * next; cout << next = << next Variabel Trace << prod = << prod << endl;

Kesalahan umum! while (balance!= 0.0); { balance = balance - amount; ini akan mengarah ke infinite loop! for (n=1; n <= count; n++); { cout << "hello" << endl; "hello" hanya dicetak sekali!

Kesalahan umum! while (balance!= 0.0) { balance = balance - amount; balance may not become equal zero due to bilangan inaccuracies while (power <= 1000) { cout << "Next power of N is " << power << endl; power *= n; pastikan variabel sudah diinisialisasi. Untuk penjumlahan 0 dan untuk perkalian 1

Latihan Buatlah algoritma dan program untuk mencetak bilangan yang habis dibagi 3 dan 5 antara 1 sampai dengan 100. Hitunglah nilai dari : 1 1 1 1 1 + + L+ 2 3 4 n [Sentinel] Buatlah algoritma untuk menentukan nilai terkecil, terbesar, dan jumlah semua bilangan positif yang dimasukkan. Buatlah algoritma untuk menentukan nilai terbesar t sedemikian sehingga : 1 2 + 2 2 + + t 2 < 2000

Bahan Diskusi Buat simulasi membeli tiket masuk kebun binatang dengan spesifikasi : Input berupa : Pilihan perorangan/ rombongan Perorangan, berapa orangtua, berapa anak-anak (50% orangtua) Rombongan, banyak orang tua+ anak, diskon 25% Input akan terus dimasukkan sampai tidak ada lagi pengunjung yang membeli tiket Output menyatakan : Banyak tiket orang tua, dan tiket anak Banyak rombongan beserta jumlah tiketnya

Ketentuan program Dibuat menggunakan class Input dan output menggunakan operator overloading dan dibuat cukup informatif untuk pengguna Tidak menggunakan ARRAY Tidak diperkenankan menggunakan SATU FILE untuk seluruh program

Laporan (selain listing program) Deskripsi masalah Analisis permasalahan Algoritma Print out uji coba berupa : Masukan Keluaran

Bacaan [S5] 6.5 while Statement : Fibonacci 6.6 break Statement 8.1 for Statement 8.2 switch Statement Tunjukkan catatan pinggir saat masuk kelas