Jobsheet 3 Algoritma dan Pemrograman.doc

22
Pr Algoritma dan Pemrograman JOBSHEET 3 Percabangan Bersyarat 3.1. Tujuan Instruksional Khusus 1. Mahasiswa dapat membuat program menggunakan percabangan menggunakan if .. else. 2. Mahasiswa dapat membuat program menggunakan percabangan bertingkat menggunakan if .. else if. 3. Mahasiswa dapat membuat program menggunakan percabangan menggunakan switch .. case. 3.2. Pendahuluan Percabangan bersyarat memungkinkan pemrogram untuk memilih suatu alternatif dari beberapa alternatif yang disediakan berdasarkan kondisi yang sesuai. 3.2.1 Operator Relasi Operator relasi digunakan untuk membandingkan nilai dua ekspresi aritmatika yang berbeda. Kedua nilai ekspresi yang dibandingkan tersebut dapat sama, lebih besar, atau lebih kecil atau tidak sama dan sebagainya. Tabel 3.1. Operator Relasi OPERATOR RELASI ARTI < Lebih kecil > Lebih besar == Sama dengan Jobsheet 3: Percabangan Bersyarat Page 34

Transcript of Jobsheet 3 Algoritma dan Pemrograman.doc

Jobsheet Dasar Pemrogaman, Bab. 4: Percabangan Bersyarat

Pr Algoritma dan Pemrograman

JOBSHEET 3Percabangan Bersyarat3.1. Tujuan Instruksional Khusus

1. Mahasiswa dapat membuat program menggunakan percabangan menggunakan if .. else.2. Mahasiswa dapat membuat program menggunakan percabangan bertingkat menggunakan if .. else if.

3. Mahasiswa dapat membuat program menggunakan percabangan menggunakan switch .. case.3.2. Pendahuluan

Percabangan bersyarat memungkinkan pemrogram untuk memilih suatu alternatif dari beberapa alternatif yang disediakan berdasarkan kondisi yang sesuai.

3.2.1 Operator Relasi

Operator relasi digunakan untuk membandingkan nilai dua ekspresi aritmatika yang berbeda. Kedua nilai ekspresi yang dibandingkan tersebut dapat sama, lebih besar, atau lebih kecil atau tidak sama dan sebagainya. Tabel 3.1. Operator Relasi

OPERATOR RELASIARTI

Lebih besar

==Sama dengan

=Lebih besar atau sama dengan

!=Tidak sama dengan

Kesalahan yang sering terjadi dalam menggunakan operator relasi ini adalah penggunaan tanda sama dengan (==). Sering pemrogram menggunakan notasi = untuk menunjukkan relasi sama dengan (==). Hal ini dapat dimaklumi karena dalam bahasa pemrograman yang lain tanda relasi sama dengan yang banyak digunakan adalah =. Contoh dari ekspresi sama: Ekspresi pertama : x + 5

Ekspresi kedua : y + 10

Pernyataan yang benar adalah : x+5==y+10

Bila pernyataan tersebut dituliskan x+5=y+10Akan muncul pesan kesalahan Lvalue required in function

3.2.2 Operator Lojik Operator lojik umumnya digunakan untuk membandingkan dua ekspresi relasional atau lebih dalam suatu ekspresi logik. Operator Logik yang dikenal oleh Turbo C diberikan dalam Tabel 3.2

Tabel 3.2 Operator LojikOPERATOR LOGIKARTI

&&Lojik AND

||Logik OR

!Lojik NOT

Suatu ekspresi lojik yang terdiri dari dua ekspresi realsional atau lebih yang dihubungkan oled DAN (logical AND) akan dianggap BENAR bila semua ekspresi relasional tadi BENAR. Tinjau dari tiga ekspresi relasional berikut ini merupakan contoh dari ekspresi lojik:

1. X+5x+3

3. Z-2>3

Bila ketiga ekspresi relasional ini digabungkan dengan &&

(x+5x+3 && z-2>3)

Jika nilai-nilai x=1, y=5, z=10, maka ekspresi-ekspresi relasional tersebut akan memiliki nilai:

X+5x+3 BENAR

Z-2>3 BENAR

Berhubung ketiga ekspresi relasional BENAR, maka:

(x+5x+3 && z-2>3) juga BENARUntuk nilai x,y,, dan z yang brbeda, misalkan x=2, y=2, dan z=10, maka:

X+5x+3 SALAH

Z-2>3 BENAR

Karena di sini ada ekpresi relasional yang SALAH, maka :

(x+5x+3 && z-2>3) SALAHDua atau lebih ekspresi realsional yagn dihubungkan oleh lojik OR akan BENAR, bila minimum salah satu ekspresi relasional tersebut Benar. Bila semua relasi memiliki nilai SALAH, abru pernyataan tersebut akan Salah. Dari contoh tersebut, penggabungan beberapa ekpresi relasional dalam suatu ekspresi lojik dengan menggunakan && dan ||, akan mengikuti aturan seperti yang ditunjukkan dalam Tabel 3.3. Tabel 3.3 Operator lojikOPERATOR LOGIKEKSPRESI LOGIKHASIL

&&(benar) && (benar)

(benar) && (salah)

(salah) && (benar)

(salah) && (salah)BENAR

SALAH

SALAH

SALAH

||(benar) || (benar)

(benar) || (salah)

(salah) || (benar)

(salah) || (salahBENAR

BENAR

BENAR

SALAH

!! (benar)

! (salah)

SALAH

BENAR

Bila && dan || digunakan secara bersama-sama dalam suatu pernyataan untuk menggabungkan beberapa relasi, maka && akan dipriotaskan lebih dahulu, baru kemudian menyusul ||.

.

3.2.3 Pernyataan if Pernyataan if membagi suatu alur proses menjadi dua cabang, berdasarkan persyaratan yang diberikan. Cabang yang pertama dijalankan bila persyaratan dipenuhi, sedangkan cabang yang kedua akan dipilih bila persyaratan tidak dipenuhi. Dalam bentuk diagram alir, proses percabangan if dapat digambarkan sebagai berikut (lihat gambar 3.1.)

Ya Tidak

Gambar 3.1. Digram Alir Percabangan if

Diagram alir yang diberikan dalam gambar 3.1. menggambarkan proses percabangan if yang paling sederhana, yaitu bila cabang yang kedua (persyaratan tidak dipenuhi) tidak memiliki perintah. Dengan kata lain, sekumpulan perintah akan dijalankan bila syarat dipenuhi, sedangkan bila syarat tidak dipenuhi, sekumpulan perintah tadi akan dilewati atau diabaikan, proses akan langsung dialnjutkan pada perintah-perintah berikutnya. Struktur if dapat dituliskan dalam dua bentuk penulisan. Pertama, pada if hanya mengandung sebuah perintah atau pernyataan dengan format perintah seperti berikut:if(syarat)

perintah;Terlihat bahwa baris if tidak diakhiri oleh ;, notasi ; baru diberikan pada akhir perintah baris di bawah if. Bentuk penulisan kedua digunakan bila perintah yang terdapapat di dalam if merupakan sekumpulan perintah. if(syarat)

{ perintah;

perintah;

perintah; } Pada setiap baris perintah diakhiri oleh ;. Kumpulan perintah yang termasuk di dalam if diletakkan di antara { dan }.

3.2.4 Pernyataan if elsePernyataan if else sebenarnya merupakan pengembangan dari pernyataan if. Disini kedua cabang, yaitu syarat dipenuhi dan syarat tidak dipenuhi, masing-masing memiliki perintah yang harus dijalankan. Diagram alir untuk pernyataan if else dilukiskan dalam Gambar 3.2.

Gambar 3.2. Diagram Alir untuk pernyataan if .. else

Seperti halnya pernyataan if.cara menuliskan struktur if else ini juga dibedakan dalam dua bentuk.Yang pertama yaitu bila masing-masing alternative hanya terdiri dari satu perintah atau pernyataan.

if (syarat)

.perintah;

else

.perintah;

Bila setiap alternatif terdiri lebih dari satu perintah,maka perintah-perintah tadi harus diletakkan diantara tanda kurung { }.

if (syarat)

{

....perintah;

....perintah;

....perintah;

}

else

{

.perintah;

.perintah;

.perintah;

}3.2.5 Bentuk Percabangan if else ifBentuk else if sebenarnya mirip dengan nested if, bahkan dalam aplikasinya seringkali sturktur ini digunakan untuk menggantikan struktur nested if. Keuntungan struktur else if dibandingkan dengan nested if adalah struktur ini menghasilkan bentuk penulisan program yang lebih sederhana. Diagram alir untuk struktur else if ini di lukiskan dalam Gambar 3.3.

Gambar 3.3. Diagram alir struktur else if

Struktur pertanyaan if else if dapat dituliskan sebagai berikut:

if (syarat)

{

..perintah;

..perintah;

}

else if (syarat)

{

..perintah;

..perintah;

}

else if (syarat)

{

..perintah;

..perintah;

{

else { ..perintah;

..perintah;

}

Bagian program ini akan dijalankan bila semua syarat if dan else if di atasnya tidak dipenuhi. Jadi alternative else yang terakhir ini akan dipilih bila semua alternative yang diberikan sebelumnya bukan merupakan pilihan yang sesuai.

3.2.6 Switch dan break

Perintah switch dan break memiliki sifat yang hamper sama dengan else if, namun penggunaanya lebih sempit, karena perintah ini hanya khusus untuk memeriksa data yang bertipe karakter atau integer. Perintah switch dan break ini juga digunakan untuk menyelesaikan program yang memiliki banyak cabang atau alternative. Bentuk penulisan perintah ini:

switch (variable integer atau karakter)

{

case nilai pertama variable :

..perintah;

..perintah;

break;

case nilai kedua:

..perintah;

..perintah;Break;

case nilai ketiga:

..perintah;

..perintah;

break;

default:

..perintah;

..perintah;

}

Tanda kurung kurawal { } menunjukkan batas jangkauan switch. Setiap cabang akan dijalankan bila syarat nilai variable tersebut dipenuhi. Default akan dijalankan bila semua cabang di atasnya tidak dipenuhi. Pertanyaan break menunjukkan bahwa kita siap keluar dari switch. Bila pertanyaanya ini tidak ada, maka program akan diteruskan ke cabang-cabang di bawahnya.

3.2.7 Operator Kondisi (Conditional Operator)

Operator kondisi diperkenalkan oleh Turbo C untuk menyediakan penulisan program yang sedang disusun. Kita tinjau contoh penggalan program di bawah ini.

if (nilai>=60)

Status=L;

else

Status=G;

Dimana L dan G masing-masing menyatakan lulus dan gugur. Penggalan program di atas ini dapat disederhanakan menjadi:

status = nilai>60 ? L : G;

Bentuk umum dari operator kondisi:

TRUE

nama_variabel = ekspresi logic atau relasi ? ekspresi 1 : ekspresi 2;

FALSE

Nama_variabel: adalah variable yang akan menerima nilai ekspresi 1 atau ekspresi 2. Ekspresi lojik atau relasi: merupakan ekspresi yang akan memeriksa apakah kondisi yang ada BENAR atau SALAH. Jadi hasil ekspresi ini adalah TRUE (BENAR) atau FALSE (SALAH). Kondisi yang BENAR apabila memenuhi syarat yang diberikan dalam ekspresi lojik atau relasi, sedangkan kondisi yang SALAH tidak memenuhi kreteria ini.

3.3. Peralatan 1. 1 set computer 2. Software turbo C

3.4. Langkah Kerja

1. Aktifkanlah editor Turbo C, kemudian lakukanlah konfigurasi directory.

2. Buatlah program seperti berikut ini yang digunakan untuk menghitung jumlah belanja yang harus dibayar, bila berlaku ketentuan: Discount 10% diberlakukan bagi pembeli yang berbelanja Rp.100.000,- ke atas. Program disimpan dengan nama Con31.C. Input program:Jumlah belanja

Output program: Discount dan Jumlah yang harus dibayar

Ketentuan tentang nama dan tipe variabel yang dugunakan adalah sebagai berikut:

Variabel untuk

Nama variabelTipe Jumlah belanja

jml_belanja

float

Discount

discount

float

Jumlah yang

jml_bayar

float

harus dibayar

/* Program menghitung uang pembelian */

main()

{

float jml_belanja, discount=0,jml_bayar;

/* Input Jumlah Belanja */

printf("\nBesarnya Belanja : ");

scanf("%f",&jml_belanja);

/* Menghitung Discount */

if (jml_belanja>=100000)

discount=0.10*jml_belanja;

/* Menghitung Uang Pembayaran */

jml_bayar=jml_belanja-discount;

/* Cetak Discount dan Uang Pembayaran */

printf("\nDiscount : %10.2f",discount);

printf("\nUang Pembayaran : %10.2f",jml_bayar); getche();

} 3. Buatlah program seperti dibawah ini dan simpan dengan nama Con32.C.

/* Struktur if yang terdiri dari sekumpulan perintah */

main()

{

int usia;

clrscr();

printf("Berapakah usia Anda? : ");

scanf("%d",&usia);

if(usia>=40)

{

printf("\nWah, Anda sudah cukup tua");

printf("\nJangan makan makanan yang banyak mengandung kolesterol");

printf("\nTidak baik untuk kesehatan Anda");

} getche();}

4. Buatlah program seperti dibawah ini dan simpan dengan nama Con33.C. /* struktur if else yang terdiri dari sebuah perintah */

main()

{

char jawab;

printf(\nApakah anda ikut ujian hari ini ? );

jawab=getche();

if(jawab==Y | | jawab==Y)

printf(\nCepat datang ke auditorium untuk ujian);

else

printf(\nAnda tetap kuliah sesuai jadwal); getche();}

5. Buatlah program seperti dibawah ini dan simpan dengan nama Con34.C. Kemudian isikanlah angka 30 dan tuliskan hasilnya pada lembar kerja? coba pula untuk angka 60. /* Penggunaan nested if */

main()

{

int umur;

clrscr();

printf(\nBerpakah usia Anda ? : );

scanf(%d,&umur);

if (umur >= 50) printf(Anda sudah cukup berumur );else if (umur>=21)

printf(\nAnda sudah dewasa);

else

printf(\nAnda masih muda);getche();}6. Buatlah program seperti dibawah ini dan simpan dengan nama Con35.C. Saat program dijalankan cobalah dengan mengisikan angka 1, 2, 3, 4, dan 5 secara bergantian saat ada pertanyaan Pilihlah angka antara 1 sampai dengan 5 ? .

/* penggunaan switch */

main()

{

int bil;

printf(\nPilihlah angka antara 1 sampai dengan 5 ? );

scanf(%d,&bil);

switch(bil)

{ case 1 : printf(\nanda mengetikkan satu);

break;

case 2 : printf(\nanda mengetikkan dua);

break;

case 3 : printf(\nanda mengetikkan tiga);

break;

case 4 : printf(\nanda mengetikkan empat);

break;

case 5 : printf(\nanda mengetikkan lima);

break;

default: printf(\nanda mengetikkan bilangan yang salah);

}

getche();

}

7. Buatlah program seperti dibawah ini dan simpan dengan nama Con36.C. Saat program dijalankan cobalah dengan mengisikan angka 1, 2, 3, 4, dan 5 secara bergantian saat ada pertanyaan Pilihlah angka antara 1 sampai dengan 5 ? .

/* penggunaan switch */

main()

{

int bil;

printf(\n Pilihlah angka antara 1 sampai dengan 5 ? );

scanf(%d,&bil);

switch(bil)

{case 1 : printf(\nanda mengetikkan satu);

case 2 : printf(\nanda mengetikkan dua);

case 3 : printf(\nanda mengetikkan tiga);

case 4 : printf(\nanda mengetikkan empat);

case 5 : printf(\nanda mengetikkan lima);

default: printf(\nanda mengetikkan bilangan yang salah);

}getche();

}

8. Buatlah program seperti dibawah ini dan simpan dengan nama Con37.C. Saat program dijalankan cobalah dengan menginputkan dengan salah satu bulan dan tahun dan tuliskanlah hasilnya pada lembar kerja.

/* menentukan jumlah hari pada bulan tertentu*/

main()

{

int bulan,tahun,hari;

clrscr();

/* input bulan dan tahun */

printf(\n\ninputkan bulan dan tahun (xx-xxxx) );

scanf(%d-%d, &bulan,& tahun);

if (bulan==1)

hari=31;

else if (bulan==2)

{ if (tahun % 4 == 0)/* tahun kabisat */

hari=29;

else

/* tahun biasa */

hari=28;

}

else if (bulan==3)

hari=31;

else if (bulan==4)

hari=30;

else if (bulan==5)

hari=31;

else if (bulan==6)

hari=30;

else if (bulan==7)

hari=31;

else if (bulan==8)

hari=31;

else if (bulan==9)

hari=30;

else if (bulan==10)

hari=31;

else if (bulan==11)

hari=30;

else if (bulan==12)

hari=31;

else

printf(\n\n bulannya ngaco, bos!!!\n\n);

/* cetak output */

printf(\n\nbulan %2d tahun %4d memiliki %d hari ,bulan ,tahun,hari);

getche();

}9. Buatlah program seperti dibawah ini dan simpan dengan nama Con38.C. Saat program dijalankan cobalah dengan menginputkan dengan salah satu bulan dan tahun dan tuliskanlah hasilnya pada lembar kerja.

/* menentukan jumlah hari pada bulan tertentu*/

main()

{

int bulan,tahun,hari;

clrscr();

/* input bulan dan tahun */

printf(\n\ninputkan bulan dan tahun (xx-xxxx) );

scanf(%d-%d, &bulan,& tahun);

if (bulan