You are on page 1of 27

LAPORAN PRAKTIKUM PEMROGRAMAN TERSTRUKTUR MODUL 2

PERCABANGAN

DOSEN PEMBINA: M.T. Andarbeni, S.Kom. OLEH: KELOMPOK 19 KHOIRUL HIDAYAT 201110370311284

LABORATORIUM DMAG DAN RPL PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2011/2012

I. TUJUAN
1. 2. Mahasiswa memahami berbagai struktur percabangan di C yaitu if & if-else Mahasiswa memahami berbagai struktur percabangan di C yaitu switch

I. ALAT YANG DIGUNAKAN


Computer Turbo C++ 45

I. DASAR TEORI
Ketika kita akan membuat suatu program, pasti akan ada statement yang akan kamu buat berjalan pada kondisi tertentu. Misalnya pada saat membuat program penghitung luas dan keliling lingkaran. Lalu kita membuat pilihan untuk user, menghitung keliling ataukah luas lingkaran yang diinginkan. Jika user memilih keliling, maka kita akan membuat statement yang akan berjalan untuk penghitung keliling. Dan tentu saja, statement penghitung luas tidak akan ditampilkan. Lalu, bagaimana caranya agar program kita bisa melakukan hal seperti itu? Inilah fungsi dari perintah percabangan (dalam bahasa inggris dikenal sebagai branching). Statement if - else Bentuk dasar perintah if else adalah sebagai berikut :
if (expression) Statement1; else Statement2; StatementBerikutnya;

Jika ketika dieksekusi ekspresi menghasilkan nilai true, maka statement1 akan dieksekusi dan statement2 tidak akan dikerjakan dan kemudian program akan mengeksekusi statement berikutnya, dan jika ekspresi tersebut bernilai false maka statement1 tidak akan dieksekusi dan statement2 akan dieksekusi, dan dilanjutkan dengan mengeksekusi statement berikutnya. Operator-operator yang biasa digunakan dalam operasi logika, dapat dilihat di tabel di bawah ini. Operator == != Contoh A==B A!=B Arti Apakah Isi Variabel A sama dengan Isi Variabel B Apakah Isi Variabel A Tidak Sama Dengan Isi Variabel B

> < >= <= &&

A>B A<B A>=B A<=B (A<=100) &&(A>=80)

Apakah Isi Variabel A lebih besar dari Isi Variabel B Apakah Isi Variabel A lebih kecil dari Isi Variabel B Apakah Isi Variabel A lebih besar atau sama dengan Isi Variabel B Apakah Isi Variabel A lebih kecil atau sama dengan Isi Variabel B Apakah A lebih kecil atau sama dengan dari 100 dan A lebih besar atau sama dengan 80 Apakah A lebih besar dari 100 atau A

|| !

(A>100)||

(A<0) lebih kecil dari 0 !(A==B) Apakah A Tidak Sama dengan B Untuk lebih jelas, perhatikan perintah berikut :

#include <stdio.h> #include <conio.h> main() { int Nilai; printf(Nilai : );scanf(%i,&Nilai); if(Nilai>=50) printf(Selamat Anda Lulus.); else printf(Maaf. Anda Tidak Lulus.); getch(); return 0; }

Perintah di atas hanya mempunyai 2 kemungkinan yaitu keterangan Selamat Anda Lulus jika nilai lebih besar dari atau sama dengan 50 dan keterangan Maaf. Anda Tidak Lulus, ketika nilai lebih kecil dari 50. Jika perintah yang akan dieksekusi ketika kondisi tercapai lebih dari 1 perintah, maka perintahperintah tersebut harus diblok dengan tanda kurawal {}. Perhatikan program di bawah ini yang merupakan perubahan dari program di atas.
#include <stdio.h> #include <conio.h> main() { int Nilai; printf(Nilai : );scanf(%i,&Nilai); if(Nilai>=50) { printf(Anda Hebat!\n);

printf(Selamat Anda Lulus.); } else { printf(Maaf. Anda Tidak Lulus.); printf(Perbaiki semester depan yah!.); } getch(); return 0; }

Perhatikan juga program di bawah ini :


#include <stdio.h> #include <conio.h> main() { int a,b; printf(Masukan A : );scanf(%i,&a); printf(Masukan B : );scanf(%i,&b); if(a==b) printf(Isi Variabel A Sama Dengan B); else if(a>b) printf(Isi Variabel A lebih besar dari B); else if(a<b) printf(Isi Variabel A lebih kecil dari B); getch(); return 0; }

Program di atas akan meminta anda untuk memasukan nilai variabel A dan B, kemudian program akan memeriksa apakah variabel A samadengan B, atau A lebih besar dari B, dan A lebih kecil dari B. Contoh Kasus : Di sebuah universitas penilaian yang dipakai adalah : NilaiAkhir=20%*tugas+30%*uts+50%*uas Nilai Akhir >=80 >=68 >=56 >=45 >=0 Index A B C D E

Diluar nilai di atas, maka index adalah X (index tidak diketahui). Data yang diinputkan adalah : tugas, uts, uas.
#include <stdio.h> #include <conio.h> main() { int tugas,uts,uas; float nilaiakhir; char index; printf("Nilai Tugas : ");scanf("%i",&tugas); printf("Nilai UTS printf("Nilai UAS : ");scanf("%i",&uts); : ");scanf("%i",&uas);

nilaiakhir=0.2*tugas+0.3*uts+0.5*uas; printf("Nilai Akhir : %f\n",nilaiakhir); if(nilaiakhir>=80) index='A'; else if(nilaiakhir>=68) index='B'; else if(nilaiakhir>=56) index='C'; else if(nilaiakhir>=45) index='D'; else if(nilaiakhir>=0) index='E'; else index='X'; printf("Index getch(); return 0; } : %c\n",index);

Perintah switch case - default Selain if-else, perintah yang digunakan untuk percabangan adalah switch case. Bentuk dasar dari perintah tersebut adalah :
switch(ekspresi) { case kondisi1:perintah1;break; case kondisi2:perintah2:break; default : perintah3; }

Cara kerja perintah di atas adalah : Jika ekspresi sama dengan kondisi1, maka perintah1 akan dieksekusi dan kemudian keluar dari switch, dan jika ekspresi sama dengan kondisi2 maka perintah 2 yang akan dieksekusi dan kemudian keluar dari switch, dan jika tidak 1 kondisi pun yang sama dengan ekspresi maka perintah3 (perintah default) yang akan dieksekusi. Perintah default kalau tidak diperlukan bisa dihilangkan. Untuk lebih jelas, perhatikan perintah di bawah ini.
switch (index) { case 'A':printf("Keterangan case 'B':printf("Keterangan case 'C':printf("Keterangan case 'D':printf("Keterangan case 'E':printf("Keterangan default :printf("Keterangan } : Bagus Sekali\n");break; : Bagus\n");break; : Cukup\n");break; : Kurang\n");break; : Kurang Sekali\n");break; : Index Tak Diketahui\n");

Keterangan program di atas adalah jika index=A maka keterangan Bagus Sekali, jika index=B maka keterangan Bagus, jika index=C maka keterangan Cukup, jika index=D maka keterangan Kurang, jika index=E maka keterangan Kurang Sekali, dan jika index bukan A E, maka keterangan adalah Index Tidak Diketahui.

Perintah if else dengan banyak kondisi Jika kondisi yang harus diperiksa lebih dari 1 kondisi, maka hanya if-else lah yang bisa dipakai. Operator-operator logika yang dipakai adalah operator && (and), dan operator || (or). Untuk lebih jelas, perhatikan perintah di bawah ini:
if((index=='A')||(index=='B')||(index=='C')) printf("Selamat Anda Lulus"); else if((index=='D')||(index=='E')) printf("Anda Tidak Lulus. Lebih giat lagi belajar!");

Perintah di atas akan menampilkan string Selamat Anda Lulus ketika index berisi A, B atau C, dan akan menampilkan keterangan Anda Tidak Lulus. Lebih giat lagi belajar! ketika index berisi D atau E. Untuk lebih jelas, buatlah program untuk mengatasi kasus di bawah ini. Di sebuah perusahaan bus, tabel harga dapat dilihat dalam tabel di bawah ini. EKSEKUTIF(1 TU JU JAKARTA(1) YOGYA(2) SURABAYA(3) ) 70000 80000 90000 KELAS BISNIS(2) 40000 50000 60000 EKONOMI(3) 10000 20000 30000

A N Karena sekarang masa promosi, maka khusus untuk surabaya-eksekutif dan yogya-ekonomi mendapatkan diskon sebesar 10%. Buatlah program dengan data yang dimasukan adalah jenis kelas, tujuan dan banyak tiket yang dibeli. Data yang ingin ditampilkan adalah harga tiket dan total tiket, diskon dan besar pembayaran. Contoh :
Pilih Jurusan : 1. Jakarta 2. Yogya 3. Surabaya Jurusan yang anda pilih : Pilih Kelas : 1. Eksekutif 2. Bisnis 3. Ekonomi Kelas yang anda pilih : 3 Banyak Tiket : 5 [input] Harga Tiket : Rp. 20000 Total Tiket : Rp. 100000 Diskon : Rp. 10000 Bayar : Rp. 90000

2 [input]

[input] [output] [output] [output] [output]

Program untuk kasus di atas :


#include <stdio.h> #include <conio.h> main() { int kodejurusan,kodekelas,banyaktiket; long int hargatiket,total; float diskon,bayar; printf("Pilih Jurusan :\n"); printf("---------------\n"); printf("1. Jakarta\n2. Yogya\n3. Surabaya\n"); printf("---------------\n"); printf("Jurusan yang dipilih : ");scanf("%i",&kodejurusan); printf("Pilih Kelas :\n"); printf("---------------\n"); printf("1. Eksekutif\n2. Bisnis\n3. Ekonomi\n"); printf("---------------\n"); printf("Kelas yang dipilih : ");scanf("%i",&kodekelas); printf("Banyak Tiket : ");scanf("%i",&banyaktiket); if((kodejurusan==1)&&(kodekelas==1)) hargatiket=70000; else if((kodejurusan==1)&&(kodekelas==2)) hargatiket=40000; else if((kodejurusan==1)&&(kodekelas==3)) hargatiket=10000; else if(kodejurusan==2) { if(kodekelas==1) hargatiket=80000; else if(kodekelas==2) hargatiket=50000; else if(kodekelas==3) hargatiket=20000; } else if(kodejurusan==3)

{ switch (kodekelas) { case 1:hargatiket=90000;break; case 2:hargatiket=60000;break; case 3:hargatiket=30000; } } printf("Harga Tiket : Rp. %li\n",hargatiket); total=banyaktiket*hargatiket; printf("Total Tiket : Rp. %li\n",total); if( ((kodejurusan==3)&&(kodekelas==1)) || ((kodejurusan==2)&&(kodekelas==2)) ) diskon=0.1*total; else diskon=0; printf("Diskon 10%% : Rp. %f\n",diskon); bayar=total-diskon; printf("Bayar : Rp. %f\n",bayar); getch(); return 0;

Sumber:

IV.PROSEDUR PELAKSANAAN
Tutorial Memaparkan flowchart percabangan dengan if-else Membuat program sederhana menggunakan keyword if dengan kasus bilangan ganjil if(x%2==1){ printf(bilangan ganjil);} Melanjutkan program sebelumnya dengan menambahkan keyword else untuk kasus bilangan genap Membuat program yang mengandung nested if Membuat program yang mengandung if bertingkat if(x>1000){ printf(dapat 2 permen);} else if(x>500){ printf(dapat 1 permen);} else{ printf(dapat 1 permen);} Membuat program menggunakan switch untuk kasus: jika user memasukkan huruf a maka akan keluar nilai kredit anda 4, jika user memasukkan huruf b maka akan keluar nilai kredit anda 3, jika user memasukkan huruf a maka akan keluar nilai kredit anda 2 Mahasiswa mengerjakan tugas praktikum Mahasiswa mendemokan hasil praktikum kepada asisten dan menulis laporan

V. TUGAS PRAKTIKUM
1. Buat program perhitungan biaya rekening listrik dengan tarif progresif: Menginputkan golongan kelompok pengguna berupa karakter A, B, atau C dan jumlah pemakaian listrik bulan ini. Menghitung biaya: : 50000 : 2250/kwh : 4750/kwh : 10% dari total : 35000 : 1750/kwh : 3250/kwh : 10% dari total : 20000 : 1500/kwh : 2750/kwh : 5% dari total 1. Jika termasuk kelompok A maka perhitungan biaya meliputi : Abonemen 150 kwh pertama Selanjutnya Pajak Abonemen 100 kwh pertama Selanjutnya Pajak Abonemen 75 kwh pertama Selanjutnya Pajak Contoh: Input : kelompok A biaya = 50000 + 2250*150+4750*100 = biaya + pajak Pemakaian 250 kwh Perhitungan : total Output : total pajak = 10/100* biaya

2. Jika termasuk kelompok B maka perhitungan biaya meliputi :

3. Jika termasuk kelompok C maka perhitungan biaya meliputi :

Menampilkan biaya yang harus dibayar pelanggan

JAWABAN: 1. SOURCE CODE #include <stdio.h> main() { char pilih; float pakai,biaya, abond,pajak,total; printf("==================== program perhitungan biaya listrik ======================== \n"); printf("masukan TIPE kelompok : "); scanf("%c",&pilih); printf("===================================================================== ========== \n"); if(pilih=='a'||pilih=='A') { printf("masukan pemakaian (kwh): "); scanf ("%f",&pakai); printf("===================================================================== ========== \n"); if (pakai>=150) { abond=pakai-150; biaya=50000+337500+4750*abond; pajak=0.1*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } else if (pakai<150) { biaya= 50000+337500; pajak=0.1*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } } else if(pilih=='b'||pilih=='B') { printf("masukan pemakaian (kwh): \n"); scanf ("%f",&pakai); if (pakai>=100) { abond=pakai-100; biaya=35000+175000+3250*abond; pajak=0.1*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } else if (pakai<100)

{ biaya= 35000+175000; pajak=0.1*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } } else if(pilih=='c'||pilih=='C') { printf("masukan total pemakaian (kwh): \n"); scanf ("%f",&pakai); if (pakai>=75) { abond=pakai-75; biaya=20000+112500+2750*abond; pajak=0.05*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } else if (pakai<75) { biaya= 20000+112500; pajak=0.05*biaya; total=biaya+pajak; printf("total biaya adalah %.2f \n",total); } } else { printf("pilihan salah"); } }

2. ALGORITMA Input (pilih) Jika pilih=a atau pilih=A maka inputkan (total pemakaian) Selanjutnya jika total pemakaian>=150 maka hitung : abond=pakai-150 biaya=50000+337500+4750*abond pajak=0.1*biaya total=biaya+pajak tampilkan (output) perhitungan total Selanjutnya jika total pemakaian<150 maka hitung : biaya= 50000+337500 pajak=0.1*biaya total=biaya+pajak tampilkan (output) perhitungan total Jika pilih=b atau pilih=B maka inputkan (total pemakaian) Selanjutnya jika total pemakaian>=100 maka hitung : abond=pakai-100 biaya=35000+175000+3250*abond pajak=0.1*biaya total=biaya+pajak tampilkan (output) perhitungan total Selanjutnya jika total pemakaian<150 maka hitung : biaya= 35000+175000; pajak=0.1*biaya; total=biaya+pajak; tampilkan (output) perhitungan total Jika pilih=C atau pilih=c maka inputkan (total pemakaian) Selanjutnya jika total pemakaian>=75 maka hitung : abond=pakai-75 biaya=20000+112500+2750*abond pajak=0.1*biaya total=biaya+pajak tampilkan (output) perhitungan total Selanjutnya jika total pemakaian<75 maka hitung : biaya= 20000+112500 pajak=0.1*biaya total=biaya+pajak tampilkan (output) perhitungan total

biaya=35000+17500 abond=pakai-100 pilih=C) biaya=50000+33750 abond=pakai-150 pilih=A) If (pilih==a en Input ( (total)||sta Output pakai) pilih=B) If (pilih==b (pilih==c Input ( pilih) 0 pakai>=100 biaya=35000+17500 0;pakai>=150 biaya=50000+33750 Pakai<100 Pakai<150 0+3250*abond pajak=0.1*biaya;d 0+4750*abond rt total=biaya+pajak; pajak=0.1*biaya total=biaya+pajak

2. Sebuah operator seluler mempunyai dua buah program NELPON SUKA-SUKA dan NELPON HEMAT. Buatlah sebuah program yang menghitung biaya percakapan sesuai dengan pilihan-pilihan tersebut. Berikut ini adalah aturan masing-masing pilihan: a. NELPON SUKA-SUKA Untuk 60 detik pertama, tarif percakapan Rp. 15,-/detik T T Setelah 60 detik berikutnya sampai 25 menit pertama, tarif percakapan Rp. 1,5-/ detik Setelah 25 menit pertama sampai terakhir, tarif percakapan Rp, 3,-/detik Input program ini berupa lama percakapan dalam satuan menit, sedangkan outputnya berupa biaya percakapan total. y b. NELPON HEMAT Untuk 90 detik pertama, tarif percakapan Rp. 10,-/detik Setelah 90 detik berikutnya sampai 30 menit pertama, tarif percakapan Rp. 1,-/ detik Setelah 30 menit pertama sampai terakhir, tarif percakapan Rp, 5,-/detik Buatlah sebuah menu pilihan yang akan digunakan untuk memilih satu diantara 2 jenis program T T T nelpon tersebut. Yang menjadi input dari program tersebut adalah pilihan menu dan total waktu percakapan (dalam satuan detik) y Contoh Tampilan Menu : y y y y y y y

PROGRAM NELPON SUPER MURAAAAHHHHH !!! PILIH MENU BERIKUT ======================================== 1. Nelpon SUKA_SUKA 2. Nelpon HEMAT 3. Keluar Pilihan Anda Adalah = 1 Masukkan Total Waktu Percakapan (detik) = 71 Total Biaya Percakapan = Rp. 1065,-

JAWABAN: 1. SOURCE CODE #include <stdio.h> main() { int menu; float lama,total,abond; printf("\t\t\t PROGRAM NELPON SUPER MURAAAAHHHHH !!! \n\n"); printf("\t PILIH MENU BERIKUT \n "); printf("===================================================================== ========= \n"); printf("1. NELPON suka suka \n"); printf("2. NELPON HEMAT \n"); printf("pilihan anda :"); scanf("%d",&menu); printf("lama bicara(detik) : "); scanf("%f",&lama); if (menu==1) { if (lama<=60) { total=lama*15; printf("biaya total: Rp%.2f",total); } else if (lama>60 && lama<=1500) { abond=lama-60; total=abond*1.5+900; printf("biaya total: Rp%.2f",total); } else if (lama>1500) { abond=lama-1500; total=abond*3+3060; printf("biaya total: Rp%.2f",total); } }

if (menu==2) { if (lama<=90) { total=lama*10; printf("biaya total: Rp%.2f",total); }

else if (lama>90 && lama<=1800) { abond=lama-90; total=abond*1+900; printf("biaya total: Rp%.2f",total); } else if (lama>1800) { abond=lama-1800; total=abond*5+2610; printf("biaya total: Rp%.2f",total); } } }

2. ALGORITMA Input (menu) Input (waktu) Jika menu=1 Selanjutnya jika waktu<=60 maka hitung : total= waktu*15 tampilkan (output) perhitungan total Selanjutnya jika waktu>60 dan waktu<=1500 bersih=waktu-60; total=bersih*1.5+900 tampilkan (output) perhitungan total Selanjutnya jika waktu>1500 bersih=waktu-1500 total=bersih*3+3060 tampilkan (output) perhitungan total

Jika menu=2 Selanjutnya jika waktu<=90 maka hitung : total= waktu*10 tampilkan (output) perhitungan total Selanjutnya jika waktu>90 dan waktu<=1800 bersih=waktu-90; total=bersih*1+900 tampilkan (output) perhitungan total Selanjutnya jika waktu>1800 bersih=waktu-1800 total=bersih*5+2610 tampilkan (output) perhitungan total

1. FLOWCHART start

Input ( menu)dan (waktu)

3.
If (menu==1) If (menu==2)

y
If If If Waktu>6o&&waktu<=1500 Waktu <=60 T T Waktu>1500

y
If Waktu<=90 If If Waktu>90&&waktu<=1800 Waktu T

y total= waktu*15

y bersih=waktu -60 total=bersih* 1.5+900

y
bersih=waktu1500 total=bersih*3 +3060

y total= waktu*10

bersih=waktubersih=waktu -1800 -90 total=bersih* total=bersih* 5+2610 1+900

Output (total)

Output (total)

Output (total)

Output (total)

Output (total)

Output (tota

end

JAWABAN: 1. SOURCE CODE #include <stdio.h> #include <math.h> main() { float a,b,c,Diskrim,x1,x2; printf("masukan nilai a : \n"); scanf("%f",&a); printf("masukan nilai b : \n"); scanf("%f",&b); printf("masukan nilai c : \n"); scanf("%f",&c); Diskrim=b*b-4*a*c; printf("nilai diskriminan (D)= %.2f \n",Diskrim); if (Diskrim==0) { x1=(-1*b)/2; printf("terdapat akar akar kembar X1=X2=%.2f",x1); } else if (Diskrim>0) { x1=(-b+sqrt(Diskrim))/2*a; x2=(-b-sqrt(Diskrim))/2*a; printf("hasil akar akar x1=%f dan x2=%f",x1,x2); } else if (Diskrim<0) { x1=-b/2*a+(sqrt(-1*Diskrim)/2*a); x2=-b/2*a-(sqrt(-1*Diskrim)/2*a); printf("hasil akar akar x1=%f dan x2=%f",x1,x2); } }

2. ALGORITMA Input (a,b,c) Hitung D = b*b-4*a*c Output D / tampilkan hasil dari D Jika D = 0 Hitung Jika D > 0 Hitung x1=(-b+sqrt(D))/2*a x2=(-b-sqrt(D))/2*a Tampilkan /output hasil dari x1 dan x2 Jika D < 0 hitung x1=-b/2*a+(sqrt(-1*D)/2*a) x2=-b/2*a-(sqrt(-1*D)/2*a) Tampilkan /output hasil dari x1 dan x2 x1=(-1*b)/2 Tampilkan /output hasil dari X1 yaitu x1 = x2

1. FLOWCHART

start

Input ( a,b,c)

D=b*b-4*a*c

Output(D)

IF (D==0) T

IF (D>0) T

IF (D<0)

y x1=(-1*b)/2

y x1=(-b+sqrt(D))/2*a x2=(-b-sqrt(D))/2*a

y x1=-b/2*a+(sqrt(-1*D)/2*a) x2=-b/2*a-(sqrt(-1*D)/2*a)

output ( x1 )

output ( x1 dan x2 )

output ( x1 dan x2 )

end

IV.KESIMPULAN
Setelah penyusun menyelesaikan laporan PERCABANGAN ini,maka penyusun dapat menyimpulkan bahwa pemrogaman dengan Bahasa pemrograman C dalam materi percabangan terdapat 2 macam yaitu if dan switch case, tetapi keduanya relatif sama. Kedua macam perintah tersebut berjalan dengan cara (if) dipakai untuk mengambil keputusan berdasarkan suatu kondisi. Jika kondisi yang diuji tersebut benar, maka program akan menjalankan pernyataan-penyataan tertentu. Jika kondisinya salah, maka program yang dijalankan. Di dalam if juga terdapat pola Nested IF atau IF bersarang adalah salah satu bentuk percabangan (branch) dimana didalam IF terdapat IF lagi. Hal utama yang harus diingat tentang nested if di C++ adalah bahwa suatu pernyataan lain selalu mengacu pada if statement terdekat yang berada dalam blok yang sama seperti yang lain dan belum terkait dengan yang lain.

You might also like