• Tidak ada hasil yang ditemukan

BAB V - BAB VI Pengulangan

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB V - BAB VI Pengulangan"

Copied!
30
0
0

Teks penuh

(1)

Pe

m am puanny

h dan bosa m pilkan kat m aham i fu an. Di dalam

an at au sam m elakukan pai t erdap ant u dalam ebih j elasn t a “Sa ya t m pai kondi n perint ah-at kondisi

ka seorang

1.c nst ruksi be ulangan da gan t ercapa

dalam seb enghent ik an

ogram . erulang k al

pat dilakuk ai. Pengulan kt ur pengu

(2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

/*

Program 6.1

Nama File : Lat-6.1.cpp

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

cout<<"Saya tidak akan bolos lagi!"<<endl; cout<<"Saya tidak akan bolos lagi!"<<endl; cout<<"Saya tidak akan bolos lagi!"<<endl; cout<<"Saya tidak akan bolos lagi!"<<endl; cout<<"Saya tidak akan bolos lagi!"<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Mungk in unt uk k asus sepert i ini m asih bisa diselesaikan dengan pem ecahan di at as. Tapi apabila kat a t ersebut harus dit am pilk an sebanyak 100 kali m aka pem ecahan di at as t idak efisien lagi. St rukt ur pengulangan dapat m em ecahkan kasus di at as dengan efisien.

Struktur Pengulangan

St rukt ur pengulangan secara um um t erdiri at as dua bagian, yait u: 1. Kondisi pengulangan

Ek spresi boolean yang harus dipenuhi unt uk m elaksanakan pengulangan. Kondisi ini ada yang diny at ak an secara eksplisit oleh program m er at au dikelola sendiri oleh kom put er ( im plisit ) .

2. Badan pengulangan

Bagian algorit m a yang diulang. 3. I nisialisasi

(3)

4. Term inasi

Aksi yang dilakukan set elah pengulangan selesai dilaksanakan.

I nisialisasi dan t erm inasi t idak harus selalu ada. Tapi kebanyakan kasus pengulangan m em erluk an st rukt ur ini. Secara um um bent uk st rukt ur pengulangan adalah sebagai berikut :

< in isia lisa si>

Aw a l pe n gula n ga n

Ba da n pe n gu la n ga n

Ak h ir pe n gula nga n

< t e r m in a si>

Di dalam pem rogram an C dan C+ + ada 4 bent uk pengulangan, yait u: 1. For

2. While 3. Do while 4. Label.

Struktur Pengulangan

for

St rukt ur pengulangan for digunakan unt uk m enghasilkan pengulangan sej um lah yang dispesifikasikan ( sudah diket ahui banyakny a) . St rukt ur for m em punyai m inim al pengulangan sebanyak sat u k ali art iny a m inim al dalam pengulanganny a, badan pengulangan dieksek usi sebany ak sat u kali. St rukt ur ini paling bany ak digunakan unt uk kasus pengulangan yang berurut dan sudah diket ahui kondisi akhir pengulangannya. Unt uk bisa m enggunakan st rukt ur ini, dibut uhk an sebuah v ariabel sebagai indek sny a.

Bent uk um um pengulangan for adalah sebagai berikut :

for ( in isia lisa si cou n t e r ;k ondisi pe ngu la n ga n;st a t e m e nt )

{

pe r n ya t a a n ;

(4)

Ket erangan:

1. I nisialisasi count er

Ber bent uk sebuah variabel yang diinisialisasi dengan nilai k ondisi aw al pengulangan. Sebagai cont oh: i= 1; .

2. Kondisi pengulangan

Bagian ini berisi k ondisi y ang m enggam barkan akhir dari pengulangan for ini. Sebagai cont oh: i< = 5;

3. St at em ent

Biasanya diisi dengan operasi perhit ungan increm ent dan decrem ent dari var iabel yang disebut kan di bagian inisialisasi count er. Apabila bagian ini dilewat kan m aka pengulangan ini t idak akan berhent i ( kecuali apabila di pernyat aan t erdapat st at em ent increm ent at au decrem ent dari variabel t ersebut ) .

Ada dua j enis pengulangan for, yait u: 1. Ascending ( sifat nya m enaik)

Bent uk um um :

for ( va r ia be l= n ila i_ a w a l;k ondisi;va r ia be l+ + )

{

pe r n ya t a a n ;

}

2. Descending ( sifat ny a m enurun) Bent uk um um :

for ( va r ia be l= n ila i_ a k h ir ;k on disi;va r ia be l- - )

{

pe r n ya t a a n ;

}

(5)

1

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

(6)

22 23 24 25 26 27

cout<<i<<endl; }

cout<<endl;

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.1 Hasil eksekusi program Lat 6.2

Cat at an Unt uk for ascending m aka inisialisasi count er var iabelnya diisi dengan bat as bawah pengulangan. Sebaliknya unt uk for descending, inisialisasi count er variabelnya diisi dengan bat as at as pengulangannya.

Salah sat u pengaplikasian penggunaan for adalah unt uk program penj um lahan deret . Sint aksnya sebagai berikut :

1 2 3 4 5 6 7 8 9

/*

Program 6.3

Nama File : Lat-6.3.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

(7)

11

printf("Masukkan bilangan : ");scanf("%i",&j); printf("\nJumlah deret = ");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int i,j,jumlah; jumlah=0;

(8)

Hasil eksekusi:

Gam bar 6.2 Hasil eksekusi program Lat 6.3

Struktur Pengulangan

while

St rukt ur pengulangan w hile akan m em eriksa kondisi pengulangan si aw al blok st rukt ur. Badan pengulangan hanya akan dilakukan apabila kondisi pengulangan bernilai t rue ( benar) . Oleh sebab it u, pengulangan w hile m em punyai m inim al pengulangan sebanyak nol kali, art inya apabila kondisi pengulangan ber nilai false ( salah) ket ika per t am a kali eksekusi blok m ak a badan pengulangan t idak akan dieksekusi.

Bent uk um um dari pengulangan w hile adalah sebagai berikut :

w h ile ( k on disi)

{

pe r n ya t a a n ;

(9)

Unt uk lebih j elasny a buat lah program di bawah ini:

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int baris,kolom;

printf("Masukkan jumlah baris : ");scanf("%i",&baris); while(baris>=1)

{

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream> #include <iomanip>

using namespace std;

int main(int argc, char *argv[]) {

int baris,kolom;

(10)

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

while(baris>=1) {

kolom=1;

while(kolom<=baris) {

cout<<setw(2)<<baris*kolom<<" "; kolom++;

}

cout<<endl; baris--; }

cout<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.3 Hasil eksekusi progr am Lat 6.4

Salah sat u pengaplikasian pengulangan while adalah unt uk m enghit ung rat a- rat a sam pai kondisi yang t idak diinput k an di aw al ( cont ohny a sam pai nilai m asih m em enuhi ket ent uan um um yait u ant ara 0 sam pai 100) . Sint aksnya adalah sebagai berikut :

1 2 3 4 5

/*

Program 6.5

Nama File : Lat-6.5.c

(11)

7

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int jml_data;

float nilai,rata2,jml_nilai; jml_data=0;

jml_nilai=0;

printf("Masukkan nilai : ");scanf("%f",&nilai); while((nilai>=0)&&(nilai<=100))

{

jml_data=jml_data+1;

jml_nilai=jml_nilai+nilai;

printf("Masukkan nilai : ");scanf("%f",&nilai); }

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream> #include <iomanip>

using namespace std;

int main(int argc, char *argv[]) {

int jml_data;

float nilai,rata2,jml_nilai; jml_data=0;

jml_nilai=0;

(12)

21 22 23 24 25 26 27 28 29 30 31

32 33 34 35 36 37 38 39 40

{

jml_data=jml_data+1;

jml_nilai=jml_nilai+nilai;

cout<<"Masukkan nilai : ";cin>>nilai; }

if(jml_data!=0) {

rata2=jml_nilai/jml_data; cout<<endl;

cout<<setiosflags(ios::fixed);

cout<<"Rata-rata = "<<setprecision(2) <<rata2<<endl<<endl;

} else {

cout<<endl;

cout<<"Tidak ada data inputan!"<<endl<<endl; }

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

(13)

Struktur Pengulangan

do while

Pengulangan do while akan m em eriksa kondisi pengulangan di akhir blok pengulangan. Hal ini t ent unya sangat berbeda dengan pengulangan while yang m em eriksa kondisi pengulangan di aw al blok. Perint ah ini ekuivalen dengan perint ah

r e pe a t u nt il yang ada di algorit m a. Karena pem eriksaan kondisi ada di akhir blok

m aka badan pengulangan m inim al akan dieksekusi sebanyak sat u k ali. Bent uk um um pengulangan do while adalah sebagai ber ikut :

do

{

pe r n ya t a a n ;

} w hile ( k on disi) ;

Ada beberapa pengaplikasian pengulangan do w hile ant ara lain unt uk m em buat st rukt ur m enu ( besert a v alidasi input annya) sert a unt uk m em buat login m enggunakan passw ord ( k at a kunci) . Unt uk pengaplikasian pada st rukt ur m enu, program ny a adalah sebagai berikut :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

/*

Program 6.6

Nama File : Lat-6.6.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h> #include <conio2.h>

int main(int argc, char *argv[]) {

int pil; int i; do {

(14)

23 printf("\n\n"); return 0;

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream> #include <conio2.h>

using namespace std;

(15)

27 28 29 30 31 32 33 34 35 36 37

38 39 40 41 42 43

cout<<"| Pilihan [1..4] : |"<<endl; cout<<" ======================="<<endl; gotoxy(20,9);cin>>pil;

gotoxy(3,12); switch(pil) {

case 1 :cout<<"Hai"<<endl<<endl;break; case 2 :cout<<"Hoi"<<endl<<endl;break; case 3 :cout<<"Hui"<<endl<<endl;break; case 4 :cout<<"Bye"<<endl<<endl;break; default:cout<<"Anda salah pilih"

<<endl<<endl; }

system("PAUSE"); system("cls"); }while(pil!=4);

return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.5 Hasil eksekusi program Lat 6.6

(16)

1

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h> #include <conio.h>

#define pass 1234

int main(int argc, char *argv[]) {

}while((password!=pass)&&(i!=3)); system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream> #include <conio.h>

(17)

15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30 31 32 33

{

int password,i; i=0;

do {

cout<<"Masukkan password yang benar : "; cin>>password;

if(password==pass)

cout<<"Password anda benar!"<<endl; else

{

cout<<"Password anda salah"<<endl; getch();

system("cls"); }

i++;

}while((password!=pass)&&(i!=3)); system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.6 Hasil eksekusi program Lat 6.7

(18)

1

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h> #include <conio2.h>

#define pass 1234

int main(int argc, char *argv[]) {

int password,i; i=1;

printf("Masukkan password yang benar : "); scanf("%i",&password);

while((password!=pass)&&(i!=3)) {

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream> #include <conio2.h>

#define pass 1234 using namespace std;

(19)

17 18

19 20 21 22 23

24 25 26 27 28 29 30

i=1;

cout<<"Masukkan password yang benar : "; cin>>password;

while((password!=pass)&&(i!=3)) {

cout<<"Password anda salah!"<<endl<<endl; getch();

gotoxy(1,2);clreol();//menghapus satu baris dimulai dari pointer gotoxy(32,1);clreol();

scanf("%i",&password); i++;

}

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.7 Hasil eksekusi program Lat 6.8

Struktur Pengulangan Menggunakan Label

(20)

1. Kasus baris y ang t idak t erek sek usi

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

printf("Perintah ini tak akan dieksekusi\n"); printf("Perintah ini juga tak akan

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

(21)

16 17 18 19 20 21 22 23 24

25 26 27 28 29 30

awal:

i=i+1;

cout<<i<<endl; if(i<10)

goto awal; else

goto akhir;

cout<<"Perintah ini tak akan dieksekusi"<<endl; cout<<"Perintah ini juga tak akan dieksekusi" <<endl;

akhir:

cout<<endl; system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.8 Hasil eksekusi program Lat 6.9

Terlihat dari hasil eksekusi bahwa ada dua baris perint ah yang t idak dieksekusi sam a sekali diakibat kan adanya label. Hal ini j elas m em buat st rukt ur program m enj adi t idak baik.

(22)

2. Kasus label yang m engingkari kondisi if ( m erusak logika program )

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

(23)

19 20 21 22 23

24 25 26 27 28

cout<<i<<" bilangan genap!"<<endl<<endl; else

{

free_pass:

cout<<i<<" bilangan ganjil!" <<endl<<endl;

} }

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.9 Hasil eksekusi pr ogram Lat 6.10

Dari hasil eksekusi t erlihat bahwa label m em buat logika program m enj adi salah. Angka 2 dan 4 yang seharusnya m asuk ke dalam kat egori bilangan genap m alah dit am pilk an sebagai bilangan ganj il. Hal it u disebabkan k arena adanya label free_pass yang langsung m asuk ke dalam else.

Perintah

break

dan

continue

(24)

1

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int i,j;

printf("Masukkan banyak pengulangan : "); scanf("%i",&j);

for(i=1;i<=j;i++)

printf("\ni terakhir (break=banyak-3) = %i\n\n",i); system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int i,j;

(25)

23

24 25 26

cout<<"i terakhir (break=banyak-3) = "<<i <<endl<<endl;

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 6.10 Hasil eksekusi program Lat 6.11

Dari hasil eksekusi t erlihat bahw a pengulangan akan dihent ikan apabila i- nya sudah sam a dengan banyak pengulangan dikurangi t iga.

Ber beda dengan perint ah break , perint ah cont inue berguna unt uk m eneruskan perulangan. Dengan kat a lain perint ah ini akan m enyebabkan program m eloncat ke perny at aan aw al yang t erdapat di dalam badan pengulangan. Unt uk lebih j elasnya lihat program di baw ah ini:

1 2 3 4 5 6 7 8 9 10 11 12

/*

Program 6.12

Nama File : Lat-6.12.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

(26)

13 14 15 16 17

18 19 20 21

for(bil=1;bil<=5;bil++) {

printf("%i\n",bil); continue;

printf("Diskriminasi!!!! Saya kok tidak muncul??");

}

system("PAUSE"); return 0;

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

20 21 22 23

/*

Program 6.12

Nama File : Lat-6.12.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int bil;

for(bil=1;bil<=5;bil++) {

cout<<bil<<endl; continue;

cout<<"Diskriminasi!!!! Saya kok tidak muncul??";

}

(27)

Hasil eksekusi:

Gam bar 6.11 Hasil eksekusi program Lat 6.12

Dari hasil eksekusi t erlihat bahw a ada sat u bar is perint ah di dalam badan pengulangan y ang t idak dieksekusi ak ibat adanya perint ah cont inue sebelum nya. Perint ah cont inue ini akan m enyebabkan eksekusi pengulangan selanj ut nya t anpa m em bereskan t erlebih dahulu badan pengulangan yang t erlet ak di baw ah perint ah cont inue.

Kombinasi Pengulangan dengan Conio2.h

Salah sat u fungsi pengulangan yang bisa digunakan adalah unt uk m em bent uk kom binasi w arna dalam sat u layar. Tent unya unt uk dapat m enggunakan w arna di dev c+ + harus m enginst al conio2.h sepert i yang sudah disebut k an di bab I V. Salah sat u cont oh program nya adalah sebagai berikut :

1 2 3 4 5 6 7 8 9 10

/*

Program 6.13

Nama File : Lat-6.13.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

(28)

11

int main(int argc, char *argv[]) {

int i;

textbackground(WHITE);system("cls"); for(i=2;i<=12;i++)

{

gotoxy(9,i);

textbackground(LIGHTGREEN); printf(" ");

textbackground(YELLOW); printf(" ");

textbackground(LIGHTBLUE); printf(" ");

textbackground(LIGHTMAGENTA); printf(" ");

}

textbackground(WHITE); printf("\n\n\n");

textcolor(BLACK); system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

(29)

10

using namespace std;

int main(int argc, char *argv[]) {

int i;

for(i=2;i<=12;i++) {

gotoxy(9,i);

textbackground(LIGHTGREEN); cout<<" ";

textbackground(YELLOW); cout<<" ";

textbackground(LIGHTBLUE); cout<<" ";

textbackground(LIGHTMAGENTA); cout<<" ";

}

textbackground(WHITE); cout<<endl<<endl<<endl; textcolor(BLACK);

(30)

Hasil eksekusi:

Gambar

Gambar 6.1 Hasil eksekusi program Lat 6.2
Gambar 6.2 Hasil eksekusi program Lat 6.3
Gambar 6.3 Hasil eksekusi program Lat 6.4
Gambar 6.4 Hasil eksekusi program Lat 6.4
+7

Referensi

Dokumen terkait

Dermatofitosis atau yang dikenal dengan tinea, ringworm, kurap, herpes sirsinata, teigne adalah penyakit pada jaringan yang mengandung zat tanduk, misalnya stratum

Pengulangan akan terus dilakukan selama kondisi terpenuhi (bernilai TRUE), dan jika kondisi tidak terpenuhi (bernilai FALSE), maka AKSI tidak dilakukan atau pengulangan

Penelitian yang berjudul “Identifikasi Pola Tanam dan Sistem Tanam Di Lahan Pasir Pantai Selatan DIY” bertujuan untuk mengetahui pola tanam dan sistem tanam

Dengan adanya aplikasi yang berfungsi dalam melakukan pengawasan perizinan pesawat, maka diperlukan aplikasi sejenis yang dapat memfasilitasi perizinan kapal laut secara online

fungsinya adalah untuk melihat pengaruh yang paling dominan dari hubungan antara indikator dengan variabel latennya (keselamatan, kesehatan dan produktivitas) jadi

 Umpan balik dari pengguna dikumpulkan sejak dini dan sesering mungkin, menggunakan prototipe yang melingkupi secara luas dan umpan balik ini digunakan dalam proses desain

Manfaat kegiatan diantaranya : (1) sumber pendapatan bagi kampus; (2) wahana bagi mahasiswa untuk mengembangkan keterampilan berwirausaha berbasis hasil pengembangan

Secara regional, EHUGDVDUNDQ KDVLO 81 60$ -XUXVDQ %DKDVD di Kabupaten Minahasa Selatan dan Bolaang Mongdow Utara diperoleh rata-rata persentase penguasaan siswa untuk