BAB V - BAB VI Pengulangan

  DISU USUN OLEH H : ADAM MU UKHARIL BA ACHTIAR, S. .Kom.

DIK KTAT MATA A KULIAH P PEMROGRA AMAN I

BAB V VI PEN NGULA NGAN IF F Pe endahu uluan Pengu ulanga an Salah sat u kele ebihan kom m put er dib bandingkan n dengan m anusia adalah

  

k em m am puanny ya unt uk m m elaksanak kan suat u i nst ruksi be erulang k al li t anpa m e engenal

lela h dan bosa an. Di dalam m pem rogr am an, peru ulangan da pat dilakuk kan sej um la ah yang

t ela ah dit ent uka an at au sam m pai kondi si perulang gan t ercapa ai. Pengulan ngan adala h suat u

pros ses yang m elakukan n perint ah- - per int ah d dalam seb uah progra am secara t erus-

m en nerus sam pai t erdap at kondisi unt uk m e enghent ik an nnya. St ru kt ur pengu ulangan

san gat m em ba ant u dalam m enj aga e efisiensi pro ogram .

  Unt uk l ebih j elasn ny a lihat ka sus berikut t ini:

Tam m pilkan kat t a “ Sa ya t t ida k a k a n n bolos la a gi!” seban nyak lim a k kali. Apabi la t idak

m em m aham i fu ngsi perula angan m ak ka seorang program m m er akan m m em buat p program

sep er t i di baw a ah ini:

  1 /*

  2 Progr ram 6.1

  3 Nama File : Lat-6.1 1.c 4 Progr rammer : Adam Mu ukharil Bachtiar r, S.Kom m. 5 */

  6 7 #includ de <stdi io.h> 8 #includ de <stdl lib.h>

  9 10 int mai in(int a argc, cha ar *argv v[]) 11 { 12 print tf("Saya a tidak a akan bol los lagi! !\n"); 13 print tf("Saya a tidak a akan bol los lagi! !\n"); 14 print tf("Saya a tidak a akan bol los lagi! !\n"); 15 print tf("Saya a tidak a akan bol los lagi! !\n"); 16 print tf("Saya a tidak a akan bol los lagi! !\n"); 17 syste em("PAUS SE"); 18 retur rn 0; 19 }

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  1 /*

  2 Program 6.1

  3 Nama File : Lat-6.1.cpp 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <cstdlib> 8 #include <iostream>

  9 10 using namespace std;

  11 12 int main(int argc, char *argv[]) 13 { 14 cout<<"Saya tidak akan bolos lagi!"<<endl; 15 cout<<"Saya tidak akan bolos lagi!"<<endl; 16 cout<<"Saya tidak akan bolos lagi!"<<endl; 17 cout<<"Saya tidak akan bolos lagi!"<<endl; 18 cout<<"Saya tidak akan bolos lagi!"<<endl; 19 system("PAUSE"); 20 return EXIT_SUCCESS; 21 }

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 Aksi yang dilakukan sebelum pengulangan dilakukan pert am a kali. Bagian ini akan m em ber i nilai aw al kondisi per ulangan DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  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 ; } DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. 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; .

  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 ; }

  

Sebagai cont oh buat lah program unt uk m enam pilkan angka 1 sam pai 5 dan angk a

dari 5 sam pai 1 dengan sint aks sebagai berikut :

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  10

  1

  2

  3

  4

  5

  6

  7

  8

  9

  11

  24

  12

  13

  14

  15

  16

  17

  18

  19

  20

  25 /* Program 6.2 Nama File : Lat-6.2.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; for(i=1;i<=5;i++) { printf("%i\n",i); } printf("\n"); for(i=5;i>=1;i--) { printf("%i\n",i); } printf("\n"); system("PAUSE"); return 0; }

  23

  1

  11

  2

  3

  4

  5

  6

  7

  8

  9

  10

  12

  22

  13

  14

  15

  16

  17

  18

  19

  20

  21

  21 /* Program 6.2 Nama File : Lat-6.2.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int i; for(i=1;i<=5;i++) { cout<<i<<endl; } cout<<endl; for(i=5;i>=1;i--) {

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  22 cout<<i<<endl; 23 } 24 cout<<endl; 25 system("PAUSE"); 26 return EXIT_SUCCESS; 27 }

  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 Program 6.3

  3 Nama File : Lat-6.3.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h>

  9 10 int main(int argc, char *argv[])

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  19

  10

  11

  12

  13

  14

  15

  16

  17

  18

  20

  8

  21

  22

  23

  24

  25

  26

  27

  28

  29

  9

  7

  11

  21

  12

  13

  14

  15

  16

  17

  18

  19

  20

  22

  6

  23

  24

  25

  26 { int i,j,jumlah; jumlah=0; printf("Masukkan bilangan : ");scanf("%i",&j); printf("\nJumlah deret = "); for(i=1;i<=j;i++) { jumlah=jumlah+i; printf("%i ",i); if(i<j) printf("+ "); } printf("\n = %i\n\n",jumlah); system("PAUSE"); return 0; }

  1

  2

  3

  4

  5

  30 /* Program 6.3 Nama File : Lat-6.3.cpp 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; cout<<"Masukkan bilangan : ";cin>>j; cout<<endl; cout<<"Jumlah deret = "; for(i=1;i<=j;i++) { jumlah=jumlah+i; cout<<i<<" "; if(i<j) cout<<"+ "; } cout<<endl; cout<<" = "<<jumlah<<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. 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 ; } DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. Unt uk lebih j elasny a buat lah program di bawah ini:

  1

  6

  26

  27

  28 /* Program 6.4 Nama File : Lat-6.4.c 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) { kolom=1; while(kolom<=baris) { printf("%2i ",baris*kolom); kolom++; } printf("\n"); baris--; } printf("\n"); system("PAUSE"); return 0; }

  1

  2

  3

  4

  5

  7

  24

  8

  9

  10

  11

  12

  13

  14

  15

  25

  23

  2

  11

  3

  4

  5

  6

  7

  8

  9

  10

  12

  22

  13

  14

  15

  16

  17

  18

  19

  20

  21

  16 /* Program 6.4 Nama File : Lat-6.4.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { int baris,kolom; cout<<"Masukkan jumlah baris : ";cin>>baris;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  17 while(baris>=1) 18 { 19 kolom=1; 20 while(kolom<=baris) 21 { 22 cout<<setw(2)<<baris*kolom<<" "; 23 kolom++; 24 } 25 cout<<endl; 26 baris--; 27 } 28 cout<<endl; 29 system("PAUSE"); 30 return EXIT_SUCCESS; 31 }

  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 Program 6.5

  3 Nama File : Lat-6.5.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  9

  32 #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); } if(jml_data!=0) { rata2=jml_nilai/jml_data; printf("\nRata-rata = %.2f\n\n",rata2); } else printf("\nTidak ada data inputan!\n\n"); system("PAUSE"); return 0; }

  1

  2

  3

  4

  5

  6

  7

  8

  10

  30

  11

  12

  13

  14

  15

  16

  17

  18

  19

  31

  29

  7

  17

  8

  9

  10

  11

  12

  13

  14

  15

  16

  18

  28

  19

  20

  21

  22

  23

  24

  25

  26

  27

  20 /* Program 6.5 Nama File : Lat-6.5.cpp 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; cout<<"Masukkan nilai : ";cin>>nilai; while((nilai>=0)&&(nilai<=100))

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  32

  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; }

  39

  38

  37

  36

  35

  34

  33

  31

  21

  30

  29

  28

  27

  26

  25

  24

  23

  22

  Hasil eksekusi:

Gam bar 6.4 Hasil eksekusi program Lat 6.4

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

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 Program 6.6

  3 Nama File : Lat-6.6.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <conio2.h>

  10 11 int main(int argc, char *argv[]) 12 { 13 int pil; 14 int i; 15 do 16 { 17 printf(" =======================\n"); 18 printf("| Menu |\n"); 19 printf(" =======================\n"); 20 printf("| 1. Tampilkan Hai |\n"); 21 printf("| 2. Tampilkan Hoi |\n"); 22 printf("| 3. Tampilkan Hui |\n");

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  15

  6

  7

  8

  9

  10

  11

  12

  13

  14

  16

  4

  17

  18

  19

  20

  21

  22

  23

  24

  25

  5

  3

  23

  33

  24

  25

  26

  27

  28

  29

  30

  31

  32

  34

  2

  35

  36

  37

  38

  39

  40

  41

  42 printf("| 4. Keluar |\n"); printf(" =======================\n"); printf("| Pilihan [1..4] : |\n"); printf(" =======================\n"); gotoxy(20,9);scanf("%d",&pil); gotoxy(3,12); switch(pil) { case 1 :printf("Hai\n\n");break; case 2 :printf("Hoi\n\n");break; case 3 :printf("Hui\n\n");break; case 4 :printf("Bye\n\n");break; default:printf("Anda salah pilih\n\n"); } system("PAUSE"); system("cls"); }while(pil!=4); printf("\n\n"); return 0; }

  1

  26 /* Program 6.6 Nama File : Lat-6.6.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <conio2.h> using namespace std; int main(int argc, char *argv[]) { int pil; int i; do { cout<<" ======================="<<endl; cout<<"| Menu |"<<endl; cout<<" ======================="<<endl; cout<<"| 1. Tampilkan Hai |"<<endl; cout<<"| 2. Tampilkan Hoi |"<<endl; cout<<"| 3. Tampilkan Hui |"<<endl; cout<<"| 4. Keluar |"<<endl; cout<<" ======================="<<endl;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  27 cout<<"| Pilihan [1..4] : |"<<endl; 28 cout<<" ======================="<<endl; 29 gotoxy(20,9);cin>>pil; 30 gotoxy(3,12); 31 switch(pil) 32 { 33 case 1 :cout<<"Hai"<<endl<<endl;break; 34 case 2 :cout<<"Hoi"<<endl<<endl;break; 35 case 3 :cout<<"Hui"<<endl<<endl;break; 36 case 4 :cout<<"Bye"<<endl<<endl;break; 37 default:cout<<"Anda salah pilih" <<endl<<endl; 38 } 39 system("PAUSE"); 40 system("cls"); 41 }while(pil!=4); 42 return EXIT_SUCCESS; 43 }

  Hasil eksekusi:

Gam bar 6.5 Hasil eksekusi program Lat 6.6

Selain it u pengaplikasian do w hile yang kedua adalah unt uk m em buat login yang

akan m em bat asi passw ord yang salah sebany ak t iga kali. Sint aksnya adalah sebagai

berikut :

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  3

  26

  27

  28

  29

  30

  31 /* Program 6.7 Nama File : Lat-6.7.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define pass 1234 int main(int argc, char *argv[]) { int password,i; i=0; do { printf("Masukkan password yang benar : "); scanf("%i",&password); if(password==pass) printf("Password anda benar!\n"); else { printf("Password anda salah\n"); getch(); system("cls"); } i++; }while((password!=pass)&&(i!=3)); system("PAUSE"); return 0; }

  1

  2

  4

  24

  5

  6

  7

  8

  9

  10

  11

  12

  13

  25

  23

  1

  11

  2

  3

  4

  5

  6

  7

  8

  9

  10

  12

  22

  13

  14

  15

  16

  17

  18

  19

  20

  21

  14 /* Program 6.7 Nama File : Lat-6.7.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <conio.h> #define pass 1234 using namespace std; int main(int argc, char *argv[])

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  25

  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; }

  32

  31

  30

  29

  28

  27

  26

  24

  15

  23

  22

  21

  20

  19

  18

  17

  16

  Hasil eksekusi:

Gam bar 6.6 Hasil eksekusi program Lat 6.7

Selain bisa m enggunakan do w hile, program passw ord j uga bisa dibangun

m enggunakan st rukt ur w hile. Sint ak snya adalah sebagai berikut :

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  5

  25

  26

  27

  28 /* Program 6.8 Nama File : Lat-6.8.c 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)) { printf("Password anda salah!\n\n"); getch(); gotoxy(1,2);clreol();//menghapus satu baris dimulai dari pointer gotoxy(32,1);clreol(); scanf("%i",&password); i++; } system("PAUSE"); return 0; }

  1

  2

  3

  4

  6

  23

  7

  8

  9

  10

  11

  12

  13

  14

  15

  24

  22

  1

  10

  2

  3

  4

  5

  6

  7

  8

  9

  11

  21

  12

  13

  14

  15

  16

  17

  18

  19

  20

  16 /* Program 6.8 Nama File : Lat-6.8.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <conio2.h> #define pass 1234 using namespace std; int main(int argc, char *argv[]) { int password,i;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  17 i=1; 18 cout<<"Masukkan password yang benar : "; cin>>password; 19 while((password!=pass)&&(i!=3)) 20 { 21 cout<<"Password anda salah!"<<endl<<endl; 22 getch(); 23 gotoxy(1,2);clreol();//menghapus satu baris dimulai dari pointer 24 gotoxy(32,1);clreol(); 25 scanf("%i",&password); 26 i++; 27 } 28 system("PAUSE"); 29 return EXIT_SUCCESS; 30 }

  Hasil eksekusi:

Gam bar 6.7 Hasil eksekusi program Lat 6.8

Struktur Pengulangan Menggunakan Label

  

Pengulangan dengan t eknik label adalah t eknik pengulangan yang pert am a

kali dikenal ( bahasa assem bly) . Penggunaan label m em punyai banyak kelebihan

akan t et api sangat t idak dianj urkan penggunaanya unt uk m em ecahkan suat u kasus

pengulangan. Label ak an m em buat alur program yang st rukt ural m enj adi

berant akan. Ada dua kasus yang m enggam barkan kelem ahan label,yait u:

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  5

  25

  26

  27

  28 /* Program 6.9 Nama File : Lat-6.9.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; i=0; awal: i=i+1; printf("%i\n",i); if(i<10) goto awal; else goto akhir; printf("Perintah ini tak akan dieksekusi\n"); printf("Perintah ini juga tak akan dieksekusi\n"); akhir: printf("\n"); system("PAUSE"); return 0; }

  1

  2

  3

  4

  6

  23

  7

  8

  9

  10

  11

  12

  13

  14

  24

  22

  1

  10

  2

  3

  4

  5

  6

  7

  8

  9

  11

  21

  12

  13

  14

  15

  16

  17

  18

  19

  20

  15 /* Program 6.9 Nama File : Lat-6.9.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int i; i=0;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  16 awal: 17 i=i+1; 18 cout<<i<<endl; 19 if(i<10) 20 goto awal; 21 else 22 goto akhir; 23 cout<<"Perintah ini tak akan dieksekusi"<<endl; 24 cout<<"Perintah ini juga tak akan dieksekusi" <<endl;

  25 26 akhir: 27 cout<<endl; 28 system("PAUSE"); 29 return EXIT_SUCCESS; 30 }

  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.

  Cat at an Unt uk beberapa k asus, pengulangan m enggunakan label sangat m em bant u. Tet api apabila t idak hat i- hat i dalam pelet akan labelnya akan m engakibat k an adanya baris yang t idak t erek sekusi dan m em buat alur program m enj adi rum it . DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  1

  8

  26 /* Program 6.10 Nama File : Lat-6.10.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; for(i=1;i<=5;i++) { goto free_pass; if(i%2==0) printf("%i bilangan genap!\n\n",i); else { free_pass: printf("%i bilangan ganjil!\n\n",i); } } system("PAUSE"); return 0; }

  1

  2

  3

  4

  5

  6

  7

  9

  24

  10

  11

  12

  13

  14

  15

  16

  17

  25

  23

  2

  11

  3

  4

  5

  6

  7

  8

  9

  10

  12

  22

  13

  14

  15

  16

  17

  18

  19

  20

  21

  18 /* Program 6.10 Nama File : Lat-6.10.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int i; for(i=1;i<=5;i++) { goto free_pass; if(i%2==0)

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  19 cout<<i<<" bilangan genap!"<<endl<<endl; 20 else 21 { 22 free_pass: 23 cout<<i<<" bilangan ganjil!" <<endl<<endl; 24 } 25 } 26 system("PAUSE"); 27 return EXIT_SUCCESS; 28 }

  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

  Perint ah break digunakan unt uk m enghent ikan eksekusi pengulangan dan

program akan langsung m eloncat k e pernyat aan y ang ada di blok selanj ut nya. Unt uk dapat m em aham i penggunaan perint ah break lihat program berikut ini: DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  1

  11

  3

  4

  5

  6

  7

  8

  9

  10

  12

  1

  13

  14

  15

  16

  17

  18

  19

  20

  21

  2

  23 /* Program 6.11 Nama File : Lat-6.11.c 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("%i\n",i); if(i==(j-3)) break; } printf("\ni terakhir (break=banyak-3) = %i\n\n",i); system("PAUSE"); return 0; }

  2

  11

  3

  4

  5

  6

  7

  8

  9

  10

  12

  22

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22 /* Program 6.11 Nama File : Lat-6.11.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int i,j; cout<<"Masukkan banyak pengulangan : ";cin>>j; for(i=1;i<=j;i++) { cout<<i<<endl; if(i==(j-3)) break; } cout<<endl;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.