BAB II

16
16 BAB II OPERASI BERSYARAT DAN PERULANGAN I. DASAR TEORI A. OPERASI BERSYARAT a) Operasi Bersyarat dengan if Pernyataan if dipakai untuk mengambil keputusan berdasarkan suatu kondisi. Jika kondisi dipenuhi (benar) maka diambil keputusan untuk menjalankan atau mengeksekusi perintah-perintah atau pernyataan- pernyataan. Jika kondisi tidak dipenuh (salah) diambil keputusan untuk menghentikan eksekusi. Gambar 2.1 menunjukkan skema operasi bersyarat dengan if. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I). Gambar 2.1 skema operasi bersyarat dengan if. Bentuk umum operasi bersyarat dengan if adalah : atau Bentuk pertama dapat dipakai jika kondisi dipenuhi (benar), hanya ada satu pernyataan saja yang dieksekusi. Sedang bentuk kedua dipakai jika kondisi dipenuhi (benar), terdapat banyak pernyataan yang harus yang harus dieksekusi. kondisi Pernyataan salah benar if (kondisi) pernyataan ; if (kondisi) { pernyataan 1 ; pernyataan 2; ................. pernyataan n; }

description

data analsis

Transcript of BAB II

Page 1: BAB II

16

BAB II OPERASI BERSYARAT DAN PERULANGAN

I. DASAR TEORI

A. OPERASI BERSYARAT a) Operasi Bersyarat dengan if

Pernyataan if dipakai untuk mengambil keputusan berdasarkan suatu kondisi. Jika kondisi dipenuhi (benar) maka diambil keputusan untuk menjalankan atau mengeksekusi perintah-perintah atau pernyataan-pernyataan. Jika kondisi tidak dipenuh (salah) diambil keputusan untuk menghentikan eksekusi. Gambar 2.1 menunjukkan skema operasi bersyarat dengan if. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I).

Gambar 2.1 skema operasi bersyarat dengan if.

Bentuk umum operasi bersyarat dengan if adalah :

atau Bentuk pertama dapat dipakai jika kondisi dipenuhi (benar), hanya ada satu pernyataan saja yang dieksekusi. Sedang bentuk kedua dipakai jika kondisi dipenuhi (benar), terdapat banyak pernyataan yang harus yang harus dieksekusi.

kondisi

Pernyataan

salah

benar

if (kondisi)

pernyataan ;

if (kondisi) {

pernyataan 1 ; pernyataan 2; ................. pernyataan n;

}

Page 2: BAB II

17

Contoh 2.1 : if ( (bil % 2) == 0) cout << “Genap” << endl; Contoh 2.2: if ((bil % 2) !=0)

{ cout << “Ganjil” << endl; cout << “ Bukan kelipatan 2” << endl; }

Pada contoh 2.1, C++ akan memperlakukan nilai kondisi sama dengan nol sebagai benar dan tidak sama dengan nol sebagai salah. Jika kondisi benar dipenuhi, maka kata “ Genap” akan tampil di layar. Pada contoh 2.2, C++ akan memperlakukan nilai kondisi tidak sama dengan nol benar dan sama dengan nol sebagai salah. JJika kondisi benar dipenuhi, maka kalimat “ Ganjil” dan “Bukan kelipatan 2” akan tampil di layar.

b) Operasi Bersyarat dengan if..else Operasi bersyarat if..else menyediakan pernyataan atau perintah altenatif

yang mesti dieksekusi jika kondisi tidak dipenuhi (salah). Operasi bersyarat if..else dipakai untuk mengambil keputusan berdasarkan suatu kondisi tertentu. Jika kondisi dipenuhi (benar) maka diambil keputusan untuk menjalankan atau mengeksekusi perintah-perintah atau pernyataan-pernyataan pertama. Jika kondisi tidak dipenuh (salah) diambil keputusan untuk menjalankan atau mengeksekusi perintah-perintah atau pernyataan-pernyataan kedua. Gambar 2.2 menunjukkan skema operasi bersyarat dengan if..else. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I).

Gambar 2.2 skema operasi bersyarat dengan if ... else .

Bentuk umum operasi bersyarat dengan if ..else adalah :

kondisi

Pernyataan1

salah

benar

Pernyataan 2

Page 3: BAB II

18

atau Bentuk pertama dapat dipakai jika kondisi dipenuhi (benar), hanya ada satu pernyataan saja yang dieksekusi atau jika kondisi tidak dipenuhi (salah), hanya ada satu pernyataan saja yang dieksekusi. Sedang bentuk kedua dipakai jika kondisi dipenuhi (benar), terdapat beberapa pernyataan pertama yang harus yang harus dieksekusi, atau jika kondisi tidak dipenuhi (salah), terdapat beberapa pernyataan kedua yang harus yang harus dieksekusi .

Contoh 2.3 : if ( (bil % 2) == 0)

cout << “Genap” << endl;

else

cout <<”Ganjil” <<endl;

Contoh 2.4 : if ((bil % 2) !=0)

{

cout << “Ganjil” << endl;

cout << “ Bukan kelipatan 2” << endl;

}

else

{

cout << “Genap” <<endl;

cout <<” Merupakan kelipatan 2 “ << endl;

}

Operasi bersyarat if..else dapat dibuat dalam bentuk bersarang, artinya

didalam pernyataan if..else ada pernyataan if..else yang lain. Pernyataan if..else bersarang dapat dibuat dipakai untuk melakukan penyeleksian dari beberapa kondisi yang mungkin (Lihat Gambar 2.3).

Contoh 2.5 :

char kode_nilai;

cin >> kode_nilai ;

if (kode_nilai == „A‟)

cout << “Istimewa” <<endl;

if (kondisi)

pernyataan 1 ;

else

pernyataan 2;

if (kondisi)

{

pernyataan 1.1 ;

.................

pernyataan 1.n;

}

else

{

pernyataan 2.1 ;

.................

pernyataan 2.n;

}

Page 4: BAB II

19

else if (kode_nilai == „B‟)

cout << “Bagus Sekali” <<endl;

else if (kode_nilai == „C‟)

cout << “Bagus” <<endl;

else if (kode_nilai == „D‟)

cout << “Kurang” <<endl;

else cout << “Kurang” <<endl;

Gambar 2.3 skema operasi penyeleksian dengan if ... else tersarang.

c) Operasi Bersyarat dengan switch

Operasi bersyarat dengan switch adalah operasi yang digunakan untuk menjalankan salah satu pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari suatu ungkapan atau variabel dan nilai penyeleksi dari beberapa kondisi. Gambar 2.4 menunjukkan skema pemakaian Operasi bersyarat dengan switch.

Gambar 2.4 skema operasi bersyarat dengan switch .

Kondisi 1

Pernyata- an 1

salah

benar benar benar

Kondisi 2

Kondisi N

Pernyata- an 2

Pernyata- an N

Pernyata- an M

salah salah

Kondisi1

Salah

Kondisi2

Pernyataan 1; Break ;

Pernyataan 2; Break ;

Pernyataan x;

Salah

Benar

Benar

Ungkapan

Page 5: BAB II

20

Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I).

Bentuk umum operasi bersyarat dengan switch adalah :

Atau

Bentuk pertama dapat dipakai jika salah satu kondisi dipenuhi (benar), maka hanya ada satu pernyataan saja yang dieksekusi. Sedang bentuk kedua dipakai jika salah satu kondisi dipenuhi (benar), dan terdapat beberapa pernyataan yang harus yang harus dieksekusi.

switch (ungkapan)

{

case kondisi1 :

pernyataan 1 ;

break ;

case kondisi2 :

pernyataan 2 ;

break ;

case kondisi3 :

pernyataan 3 ;

break ;

.............

default : pernyataan x ;

}

switch (ungkapan)

{

case kondisi1 :

{

pernyataan 1.1 ;

pernyataan 1.2 ;

}

break ;

case kondisi2 :

{

pernyataan 2.1 ;

pernyataan 2.2 ;

}

break ;

case kondisi3 :

{

pernyataan 3.1 ;

pernyataan 3.2 ;

}

break ;

.............

default : {

pernyataan x.1 ;

pernyataan x.2 ;

}

}

Page 6: BAB II

21

Pada pernyataan switch, ungkapan dapat berupa konstanta atau variabel. Adapun kondisi1 , kondisi2, kondisi3 dan seterusnya dapat berupa sembarang variabel bertipe int dan char yang dapat digunakan untuk menyatakan pilihan ke-1, ke-2, ke-3 dan seterusnya.

Pencocokan ungkapan dengan kondisi1 , kondisi2, kondisi3 dan sebagainya dilakukan secara berurutan, dimulai dari kondisi1 hingga terakhir. Jika salah satu kondisi dipenuhi atau cocok, maka deretan pernyataan antara case dan break akan dieksekusi. Bagian default hanya akan dijalankan kalau ungkapan pada bagian case tak ada yang cocok dengan ungkapan swich. Bagian default bersifat opsional, artinya bagian ini dapat ditulis atau tidak ditulis. Keberadaan break pada setiap case sangat penting karena break akan menyebabkan aliran perintah keluar dari switch.

Contoh 2.6 : char kode_nil;

cin >> kode_nil ;

switch (kode_nil)

{

case „A‟ :

cout << “Istimewa” <<endl;

break ;

case „B‟ :

cout << “Bagus Sekali” <<endl;

break ;

case „C‟ :

cout << “Bagus” <<endl;

break ;

case D‟ :

cout << “Kurang” <<endl;

break ;

default : cout << “Jelek dan tidak lulus” <<endl;

break ;

}

Contoh 2.7: switch (kode_hari)

//seleksi dengan switch

{

case 1 : cout << " Anda memilih hari Senin" <<endl;

break;

case 2 : cout << " Anda memilih hari Selasa" <<endl;

break;

case 3 : cout << " Anda memilih hari Rabu" <<endl;

break;

case 4 : cout << " Anda memilih hari Kamis" <<endl;

break;

case 5 : cout << " Anda memilih hari Jum'at" <<endl;

break;

case 6 : cout << " Anda memilih hari Sabtu" <<endl;

break;

case 7 : cout << " Anda memilih hari Minggu" <<endl;

break;

default :

cout<< " Kode hari salah " << endl;

break;

}

Page 7: BAB II

22

B. OPERASI PERULANGAN a) Operasi Perulangan dengan for

Operasi perulangan dengan for adalah operasi yang digunakan untuk menjalankan perulangan eksekusi satu atau beberapa pernyataan ketika kondisinya masih terpenuhi. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I). Perulangan ini dimulai dari suatu nilai inisial yang diberikan untuk suatu pencacah tertentu. Nilai pencacah ini dinaikkan atau diturunkan terus-menerus setiap kali terjadi eksekusi perulangan. Ketika nilai pencacah sudah tidak memenuhi kondisi yang disyaratkan, maka operasi perulangan terhenti. Gambar 2.5 menunjukkan skema operasi perulangan dengan for.

Gambar 2.5 skema operasi perulangan dengan for

Bentuk umum operasi perulangan dengan for adalah :

atau

inisialisasi

Kondisi

Pernyataan

Pencacah

Keluar loop

Tubuh loop

Salah

Benar

for (isialisasi ; kondisi ;pencacah) pernyataan ;

for (isialisasi ; kondisi ;pencacah) {

pernyataan 1 ; ................. pernyataan n;

}

Page 8: BAB II

23

Contoh 2.8:

for (int i=1; i<=10; i++ )

cout << “Saya sekarang baru latihan Bahasa C++ ke- ” <<i<< endl;

Contoh 2.9:

float celcius, fahrenheit ;

celcius=0;

for (int i=1; i<=20; i++ )

{

fahrenheit = 1.8*celcius + 32;

cout << " " <<i <<" " <<celcius <<" " << fahrenheit << endl;

celcius+=0.25;

}

b) Operasi Perulangan dengan while Operasi perulangan dengan while adalah operasi yang digunakan untuk

menjalankan perulangan eksekusi dari satu atau beberapa pernyataan ketika kondisinya masih terpenuhi. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I). Perulangan ini dimulai dari suatu nilai inisial yang diberikan untuk suatu pencacah tertentu. Nilai pencacah ini dinaikkan atau diturunkan terus-menerus setiap kali terjadi eksekusi perulangan. Ketika nilai pencacah sudah tidak memenuhi kondisi yang disyaratkan, maka operasi perulangan terhenti. Gambar 2.6 menunjukkan skema operasi perulangan dengan while.

Gambar 2.6 skema operasi perulangan dengan while

inisialisasi

Kondisi

Pernyataan

Pencacah

Keluar loop

Tubuh loop

Salah

Benar

Page 9: BAB II

24

Bentuk umum operasi bersyarat dengan while adalah :

atau

Contoh 2.10 :

int i=0;

while (i<=10 )

cout << “Ini kalimat ke -” << i++ << endl;

Contoh 2.11: float celcius, fahrenheit ;

celcius=0;

int i=0;

while ( i<=10 )

{

fahrenheit = 1.8*celcius + 32;

cout << " " <<i <<" " <<celcius <<" " << fahrenheit << endl;

celcius+=0.25;

i++ ;

}

c) Operasi perulangan dengan do ... while Operasi perulangan dengan do ... while adalah operasi yang digunakan

untuk menjalankan perulangan eksekusi dari satu atau beberapa pernyataan ketika kondisinya masih terpenuhi. Penentuan kondisi dilaksanakan dengan menggunakan operator relasi atau logika (lihat Bab I). Perulangan ini dimulai dari suatu nilai inisial yang diberikan untuk suatu pencacah tertentu. Nilai pencacah ini dinaikkan atau diturunkan terus-menerus setiap kali terjadi eksekusi perulangan. Ketika nilai pencacah sudah tidak memenuhi kondisi yang disyaratkan, maka operasi perulangan terhenti. Gambar 2.7 menunjukkan skema operasi perulangan dengan do...while.

while ( kondisi) pernyataan ;

while ( kondisi) {

pernyataan 1 ; pernyataan 2; ................. pernyataan n;

}

Page 10: BAB II

25

Gambar 2.7 skema operasi perulangan dengan do...while Oleh karena pengujian ungkapan dilakukan di belakang, bagian

pernyataan pada operasi do...while minimal akan dijalankan sekali. Sedangkan pada opersi while , bagian pernyaataan ada kemungkinan tidak akan dieksekusi.

Bentuk umum operasi bersyarat dengan do...while adalah :

Contoh 2.12 : float celcius, fahrenheit ;

celcius=0;

int i=0;

do

{

fahrenheit = 1.8*celcius + 32;

cout << " " <<i <<" " <<celcius <<" " << fahrenheit << endl;

celcius=+0.25; i++ ;

}

while ( i<=10 ) ;

II. STUDI KASUS

Studi kasus 1 Berikut ini contoh program untuk mencari nilai mutlak suatu bilangan

dengan menggunakan operasi bersyarat if...else.

Kondisi

Pernyataan

Salah

Tubuh loop

Benar

do {

pernyataan 1 ; pernyataan 2; ................. pernyataan n;

}

while ( kondisi)

Page 11: BAB II

26

//*****************************************

// Program menghitung nilai mutlak

//*****************************************

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <iomanip.h>

void main()

{

float angka,abs;

clrscr;

cout<<" Program penghitung nilai mutlak"<<endl;

cout<<" Masukkan angka sembarang"<<endl;

cin>>angka;

if(angka>=0)

abs=angka;

else

abs=-angka;

cout<<" Nilai absolut dari "<< angka<<" adalah :"<<setw(10)<<abs<<endl;

getch();

}

Studi kasus 2

Berikut ini contoh program untuk mencari jenis bilangat bulat, apakah bilangan bulat positif atau negatif dengan menggunakan operasi bersyarat if...else.

//***************************************

// Program penentu bilangan bulat

//***************************************

#include <iostream.h>

#include <conio.h>

#include <math.h>

void main()

{

int angka,abs;

clrscr;

cout<<" Program penentu bilangan bulat "<<endl;

cout<<" Masukkan angka sembarang : ";

cin>>angka;

if (angka>0)

cout<<" Jenis bilangan bulat positif "<<endl;

else if (angka<0)

cout<<" Jenis bilangan bulat negatif "<<endl;

else

cout<<" Bilangan tersebut adalah nol "<<endl;

}

Studi kasus 3

Berikut ini contoh program untuk memilih hari dengan menggunakan operasi switch.

//*********************************************

// Program penentu hari

//********************************************

Page 12: BAB II

27

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int kode_hari;

cout<<" Menentukan hari "<<endl;

cout<<" 1=senin, 2=selasa, 3=rabu, 4=kamis, "<<endl;

cout<<" 5=jumat, 6=sabtu, 7=minggu "<<endl;

cout<<" masukkan kode hari (1..7): ";

cin>>kode_hari;

cout<<endl<<endl<<endl;

switch(kode_hari) //selesai dengan switch

{

case 1: cout<<" Anda memilih hari senin"<<endl;

break;

case 2: cout<<" Anda memilih hari selasa"<<endl;

break;

case 3: cout<<" Anda memilih hari rabu"<<endl;

break;

case 4: cout<<" Anda memilih hari kamis"<<endl;

break;

case 5: cout<<" Anda memilih hari jumat"<<endl;

break;

case 6: cout<<" Anda memilih hari sabtu"<<endl;

break;

case 7: cout<<" Anda memilih hari minggu"<<endl;

break;

default:

cout<<" Kode hari salah "<<endl;

break;

}

getch();

}

Studi kasus 4 Berikut ini contoh program untuk membuat tabel konversi suhu celcius ke

fahrenheit dengan menggunakan operasi perulangan for.

//************************************************************

//Program konversi suhu dari celcius ke fahrenheit dengan for

//************************************************************

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr;

float celcius,fahrenheit;

cout<<"---------------------------"<<endl;

cout<<" No. Celcius Fahrenheit "<<endl;

cout<<"---------------------------"<<endl;

celcius=0;

for(int i=1;i<=10;i++)

{

Page 13: BAB II

28

fahrenheit=1.8*celcius+32;

cout<<" "<<i<<" "<<celcius<<" "<< fahrenheit<<endl;

celcius+=0.25;

}

getch();

}

Studi kasus 5

Berikut ini contoh program untuk membuat tabel konversi suhu celcius ke fahrenheit dengan menggunakan operasi perulangan while.

//***********************************************************

// Program konversi suhu celcius ke fahrenheit dengan while

//***********************************************************

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

float celcius, fahrenheit;

cout<<"---------------------------"<<endl;

cout<<" No. Celcius Fahrenheit "<<endl;

cout<<"---------------------------"<<endl;

celcius=0;

int i=0;

while (i<=10)

{

fahrenheit=1.8*celcius+32;

cout<<" "<<i<<" "<<celcius<<" "<<fahrenheit<<endl;

celcius += 0.25;

i++;

}

}

Studi kasus 6 Berikut ini contoh program untuk membuat tabel konversi suhu celcius ke

fahrenheit dengan menggunakan operasi perulangan do...while. //**************************************************************

// Program konversi suhu celcius ke fahrenheit dengan do..while

//**************************************************************

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr;

float celcius, fahrenheit;

cout<<"--------------------------"<<endl;

cout<<" No. Celcius Fahrenheit "<<endl;

cout<<"--------------------------"<<endl;

celcius=0;

Page 14: BAB II

29

int i=1;

do

{

fahrenheit=1.8*celcius+32;

cout<<" "<<i<<" "<<celcius<<" "<< fahrenheit<<endl;

celcius+=0.25;

i++;

}

while(i<=10);

getch(); }

Studi kasus 7

Berikut ini contoh program untuk menghitung nilai faktorial dari suatu bilangan tertentu dengan menggunakan operasi perulangan for dan operasi bersyarat if ... else

//*********************************************

// Program perhitungan nilai hasil faktorial

//*********************************************

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <iomanip.h>

void main()

{

int n; long f;

cout<<" Menghitung Nilai hasil faktorial"<<endl;

cout<<" Masukkan nilai bilangan yang di cari faktorilnya: "<<endl;

cin>>n;

if(n<=0)

f=1;

else

{

f=1;

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

f=f*i;

}

cout<<" Hasil faktorial dari"<<n<<"adalah: "<<"<<setw(8)<<f<<endl;

getch();

}

Studi kasus 8

Berikut ini contoh program perulangan bertingkat untuk menghitung sisi –sisi suatu segitiga dengan menggunakan perulangan for sesuai dengan teorema pytagoras .

//**************************************

// Program untuk perulangan bertingkat

//**************************************

#include <iostream.h>

#include <conio.h>

Page 15: BAB II

30

#include <math.h>

void main()

{

clrscr();

cout<<"--------------------------"<<endl;

cout<<" SisiA SisiB SisiC"<<endl;

cout<<"--------------------------"<<endl;

for (int a=1; a<=8; a++)

{

for(int b=1;b<=8; b++)

{

float c;

c=(float)sqrt(a*a+b*b);

cout<<" "<<a<<" "<<b<<" "<<c<<endl;

}

}

getch();

}

III. LATIHAN

Latihan 1 Buatlah program untuk menampilkan bilangan ganjil yang lebih besar dari a

dan lebih kecil dari b (misalnya, a =45 dan b =97 ).

Latihan 2

Tulislah program untuk menghitung sudut terkecil yang terbentuk antara jarum jam panjang dan jarum jam pendek pada saat menunjuk jam tertentu. Sebagai contoh, jika pengguna memasukkan jam 12:00, program akan menampilkan keluaran “0 derajat”. Masukan fungsi adalah berupa dua bilangan bulat yang melambangkan jam dan menit. Keluaran fungsi adalah sudut terkecil yang dibentuk oleh jarum jam tersebut.

Latihan 3

Tulislah program untuk menghitung jumlah deret berikut :

-

n

iix

xy

1

1

-

n

i ixxy

1 11

- Deret dengan tanda suku berselang-seling positif dan negatif :

1+3

1 -5

1 +7

1 -9

1 + ... n

1

Latihan 4

Tulislah program dengan menggunakan operasi for ... dan while untuk menghitung FPB (Faktor persekutuan terbesar ) dari dua bilangan bulat. Masukan program berupa dua bilangan bulat dan keluarannya berupa faktor persekutuan terbesar dari dua bilangan tersebut.

Latihan 5

Tulislah program untuk mencari semua nilai x , y dan z yang memenuhi

persamaan liniar berikut :

Page 16: BAB II

31

09516 zyx dengan 250,,1 zyx .

Latihan 6

Buatlah program untuk mencari nilai bilangan prima dari batas terendah

bilangan a hingga batas tertinggi bilangan b .

Latihan 7 Buatlah program untuk menghitung akar-akar persamaan kuadrat dengan

menggunakan operasi kondisi if...else .

Latihan 8 Buatlah program untuk menentukan nilai mahasiswa dengan menggunakan

operasi switch dengan masukan berupa nilai dalam bentuk angka dan keluaran berupa nilai dalam bentuk huruf (A, B, C, D, atau E) .

Latihan 9

Buatlah program yang menampilkan perubahan energi kinetik, energi potensial dan energi total tiap detik dari benda bermassa m yang bergerak jatuh

bebas dari ketinggian h hingga menyentuh tanah. (Diasumsikan percepatan

gravitasinya 9.8 m/s2)

Latihan 10 Buatlah program untuk menampilkan perubahan besar kecepatan total peluru

sebuah meriam yang ditembakkan pada arah o dengan kecepatan awal 0v

dari permukaan tanah hingga jatuh ke tanah kembali. (Diasumsikan percepatan gravitasinya 9.8 m/s2)