Anda di halaman 1dari 28

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. TU1UAN
. Mahasiswa memahami berbagai struktur percabangan di C yaitu iI & iI-else
2. Mahasiswa memahami berbagai struktur percabangan di C yaitu switch

II. ALAT YANG DIGUNAKAN
O Computer
O %urbo C 45

III. DASAR TEORI

etika 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 Iungsi dari perintah percabangan (dalam bahasa
inggris dikenal sebagai branching).

Statement 1 080
Bentuk dasar perintah iI else adalah sebagai berikut :
if (expression)
Statement1;
else
Statement2;
StatementBerikutnya;

Jika ketika dieksekusi ekspresi menghasilkan nilai true, maka 89a9emen91 akan dieksekusi dan
89a9emen92 tidak akan dikerjakan dan kemudian program akan mengeksekusi 89a9emen9 beriku9nya,
dan jika ekspresi tersebut bernilai Ialse maka 89a9emen91 tidak akan dieksekusi dan 89a9emen92 akan
dieksekusi, dan dilanjutkan dengan mengeksekusi 89a9emen9 beriku9nya.
Operator-operator yang biasa digunakan dalam operasi logika, dapat dilihat di tabel di bawah ini.
Opera9or Con9oh Ar9i
AB Apakah Isi Variabel A sama dengan Isi
Variabel B
A!B Apakah Isi Variabel A %idak Sama
Dengan Isi Variabel B
> A~B Apakah Isi Variabel A lebih besar dari
Isi Variabel B
< AB Apakah Isi Variabel A lebih kecil dari
Isi Variabel B
> A~B Apakah Isi Variabel A lebih besar atau
sama dengan Isi Variabel B
< AB Apakah Isi Variabel A lebih kecil atau
sama dengan Isi Variabel B
&& (A)
&&(A~8)
Apakah A lebih kecil atau sama dengan
dari dan A lebih besar atau sama
dengan 8
[[ (A~),,
(A)
Apakah A lebih besar dari atau A
lebih kecil dari
!(AB) Apakah A %idak 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 5 dan keterangan 'MaaI. Anda %idak Lulus, ketika nilai lebih
kecil dari 5.

Jika perintah yang akan dieksekusi ketika kondisi tercapai lebih dari perintah, maka perintah-
perintah 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.

Con9oh Ka8u8 :
Di sebuah universitas penilaian yang dipakai adalah :
NilaiAkhir2tugas3uts5uas

Nilai
Akhir
Index
~8 A
~68 B
~56 C
~45 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 : ");scanf("%i",&uts);
printf("Nilai UAS : ");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 : %c\n",index);
getch();
return 0;
}

Perintah switch case - deIault
Selain iI-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 kondisi, maka perintah 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 kondisi pun yang sama dengan
ekspresi maka perintah3 (perintah deIault) yang akan dieksekusi. Perintah deIault kalau tidak diperlukan
bisa dihilangkan.

Untuk lebih jelas, perhatikan perintah di bawah ini.
switch (index)
{
case 'A':printf("Keterangan : Bagus Sekali\n");break;
case 'B':printf("Keterangan : Bagus\n");break;
case 'C':printf("Keterangan : Cukup\n");break;
case 'D':printf("Keterangan : Kurang\n");break;
case 'E':printf("Keterangan : Kurang Sekali\n");break;
default :printf("Keterangan : Index Tak Diketahui\n");
}
eterangan 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
urang, jika index`E` maka keterangan urang Sekali, dan jika index bukan A E, maka keterangan
adalah Index %idak Diketahui.


Perintah 1 080 dengan banyak kondisi
Jika kondisi yang harus diperiksa lebih dari kondisi, maka hanya iI-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 %idak 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.
ELAS
ESEU%IF() BISNIS(2) EONOMI(3)
U
A
N
JAAR%A() 7 4
YOGYA(2) 8 5 20000
SURABAYA(3) 90000 6 3

arena sekarang masa promosi, maka khusus untuk surabaya-eksekutiI dan yogya-ekonomi
mendapatkan diskon sebesar . 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 : 2 [input]
Pilih Kelas :
1. Eksekutif
2. Bisnis
3. Ekonomi
Kelas yang anda pilih : 3 [input]
Banyak Tiket : 5 [input]
Harga Tiket : Rp. 20000 [output]
Total Tiket : Rp. 100000 [output]
Diskon : Rp. 10000 [output]
Bayar : Rp. 90000 [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
O %utorial
O Memaparkan Ilowchart percabangan dengan iI-else
O Membuat program sederhana menggunakan keyword iI dengan kasus bilangan ganjil
iI(x2)
printI('bilangan ganjil);}
O Melanjutkan program sebelumnya dengan menambahkan keyword else untuk kasus bilangan genap
O Membuat program yang mengandung nested iI
O Membuat program yang mengandung iI bertingkat
iI(x~)
printI('dapat 2 permen);}
else iI(x~5)
printI('dapat permen);}
else
printI('dapat permen);}
O Membuat program menggunakan switch untuk kasus: jika user memasukkan huruI a` maka akan keluar
'nilai kredit anda 4, jika user memasukkan huruI b` maka akan keluar 'nilai kredit anda 3, jika user
memasukkan huruI a` maka akan keluar 'nilai kredit anda 2
O Mahasiswa mengerjakan tugas praktikum
O Mahasiswa mendemokan hasil praktikum kepada asisten dan menulis laporan

V. TUGAS PRAKTIKUM

. Buat program perhitungan biaya rekening listrik dengan tariI progresiI:
O Menginputkan golongan kelompok pengguna berupa karakter A`, B`, atau C` dan jumlah pemakaian
listrik bulan ini.
O Menghitung biaya:
. Jika termasuk kelompok A maka perhitungan biaya meliputi :
Abonemen : 5
5 kwh pertama : 225kwh
Selanjutnya : 475kwh
Pajak : dari total
2. Jika termasuk kelompok B maka perhitungan biaya meliputi :
Abonemen : 35
kwh pertama : 75kwh
Selanjutnya : 325kwh
Pajak : dari total
3. Jika termasuk kelompok C maka perhitungan biaya meliputi :
Abonemen : 2
75 kwh pertama : 5kwh
Selanjutnya : 275kwh
Pajak : 5 dari total
O Menampilkan biaya yang harus dibayar pelanggan
Contoh:
Input : kelompok A`
Pemakaian 25 kwh
Perhitungan : biaya 5 2255475
pajak biaya
total biaya pajak
Output : total


JAWABAN:

. SOURCE CODE


#include stdio.h~
main()

char pilih;
Iloat pakai,biaya, abond,pajak,total;
printI(" program perhitungan biaya listrik
\n");
printI("masukan %IPE kelompok : ");
scanI("c",&pilih);
printI("
\n");

iI(pilih'a',,pilih'A')

printI("masukan pemakaian (kwh): ");
scanI ("I",&pakai);

printI("
\n");
iI (pakai~5)

abondpakai-5;
biaya53375475abond;
pajak.biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}
else iI (pakai5)


biaya 53375;
pajak.biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}
}
else iI(pilih'b',,pilih'B')

printI("masukan pemakaian (kwh): \n");
scanI ("I",&pakai);


iI (pakai~)

abondpakai-;
biaya3575325abond;
pajak.biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}

else iI (pakai)


biaya 3575;
pajak.biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}
}

else iI(pilih'c',,pilih'C')

printI("masukan total pemakaian (kwh): \n");
scanI ("I",&pakai);


iI (pakai~75)

abondpakai-75;
biaya225275abond;
pajak.5biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}

else iI (pakai75)


biaya 225;
pajak.5biaya;
totalbiayapajak;
printI("total biaya adalah .2I \n",total);
}
}

else

printI("pilihan salah");
}

}


































2. ALGORI%MA
O Input (pilih)
O Jika piliha atau pilihA maka inputkan (total pemakaian)
Selanjutnya jika total pemakaian~5 maka hitung :
abondpakai-5
biaya53375475abond
pajak.biaya
totalbiayapajak
tampilkan (output) perhitungan 'total
Selanjutnya jika total pemakaian5 maka hitung :
biaya 53375
pajak.biaya
totalbiayapajak
tampilkan (output) perhitungan 'total
O Jika pilihb atau pilihB maka inputkan (total pemakaian)
Selanjutnya jika total pemakaian~ maka hitung :
abondpakai-
biaya3575325abond
pajak.biaya
totalbiayapajak
tampilkan (output) perhitungan 'total
Selanjutnya jika total pemakaian5 maka hitung :
biaya 3575;
pajak.biaya;
totalbiayapajak;
tampilkan (output) perhitungan 'total

O Jika pilihC atau pilihc maka inputkan (total pemakaian)
Selanjutnya jika total pemakaian~75 maka hitung :
abondpakai-75
biaya225275abond
pajak.biaya
totalbiayapajak
tampilkan (output) perhitungan 'total
Selanjutnya jika total pemakaian75 maka hitung :
biaya 225
pajak.biaya
totalbiayapajak
tampilkan (output) perhitungan 'total









3. FLOWCHAR%






2. Sebuah operator seluler mempunyai dua buah program NELPON SUA-SUA dan NELPON
HEMA%. Buatlah sebuah program yang menghitung biaya percakapan sesuai dengan pilihan-pilihan
tersebut. Berikut ini adalah aturan masing-masing pilihan:
a. NELPON SUA-SUA
O Untuk 6 detik pertama, tariI percakapan Rp. 5,-detik
O Setelah 6 detik berikutnya sampai 25 menit pertama, tariI percakapan Rp. ,5- detik
O Setelah 25 menit pertama sampai terakhir, tariI percakapan Rp, 3,-detik
Input program ini berupa lama percakapan dalam satuan menit, sedangkan outputnya berupa biaya
percakapan total.
b. NELPON HEMA%
O Untuk 9 detik pertama, tariI percakapan Rp. ,-detik
O Setelah 9 detik berikutnya sampai 3 menit pertama, tariI percakapan Rp. ,- detik
O Setelah 3 menit pertama sampai terakhir, tariI percakapan Rp, 5,-detik
Buatlah sebuah menu pilihan yang akan digunakan untuk memilih satu diantara 2 jenis program
'nelpon tersebut. Yang menjadi input dari program tersebut adalah pilihan menu dan total waktu
percakapan (dalam satuan detik)

Contoh %ampilan Menu :

PROGRAM NELPON SUPER MURAAAAHHHHH !!!
PILIH MENU BERIU%

. Nelpon SUASUA
2. Nelpon HEMA%
3. eluar
Pilihan Anda Adalah
Masukkan %otal Waktu Percakapan (detik) 7
%otal Biaya Percakapan Rp. 65,-


JAWABAN:

. SOURCE CODE

#include stdio.h~

main()



int menu;
Iloat lama,total,abond;

printI("\t\t\t PROGRAM NELPON SUPER MURAAAAHHHHH !!! \n\n");
printI("\t PILIH MENU BERIU% \n ");
printI("
\n");
printI(". NELPON suka suka \n");
printI("2. NELPON HEMA% \n");
printI("pilihan anda :");
scanI("d",&menu);

printI("lama bicara(detik) : ");
scanI("I",&lama);

iI (menu)

iI (lama6)

totallama5;
printI("biaya total: Rp.2I",total);
}

else iI (lama~6 && lama5)

abondlama-6;
totalabond.59;
printI("biaya total: Rp.2I",total);
}

else iI (lama~5)

abondlama-5;
totalabond336;
printI("biaya total: Rp.2I",total);
}

}



iI (menu2)

iI (lama9)

totallama;
printI("biaya total: Rp.2I",total);
}

else iI (lama~9 && lama8)

abondlama-9;
totalabond9;
printI("biaya total: Rp.2I",total);
}

else iI (lama~8)

abondlama-8;
totalabond526;
printI("biaya total: Rp.2I",total);
}

}

}




2. ALGORI%MA
O Input (menu)
O Input (waktu)
O Jika menu
Selanjutnya jika waktu6 maka hitung :
total waktu5
tampilkan (output) perhitungan 'total
Selanjutnya jika waktu~6 dan waktu5
bersihwaktu-6;
totalbersih.59
tampilkan (output) perhitungan 'total
Selanjutnya jika waktu~5
bersihwaktu-5
totalbersih336
tampilkan (output) perhitungan 'total


O Jika menu2
Selanjutnya jika waktu9 maka hitung :
total waktu
tampilkan (output) perhitungan 'total
Selanjutnya jika waktu~9 dan waktu8
bersihwaktu-9;
totalbersih9
tampilkan (output) perhitungan 'total
Selanjutnya jika waktu~8
bersihwaktu-8
totalbersih526
tampilkan (output) perhitungan 'total


3. FLOWCHAR%











3.



























JAWABAN:

. SOURCE CODE

#include stdio.h~
#include math.h~

main()



Iloat a,b,c,Diskrim,x,x2;

printI("masukan nilai a : \n");
scanI("I",&a);
printI("masukan nilai b : \n");
scanI("I",&b);
printI("masukan nilai c : \n");
scanI("I",&c);

Diskrimbb-4ac;

printI("nilai diskriminan (D) .2I \n",Diskrim);

iI (Diskrim)

x(-b)2;
printI("terdapat akar akar kembar XX2.2I",x);
}

else iI (Diskrim~)

x(-bsqrt(Diskrim))2a;
x2(-b-sqrt(Diskrim))2a;
printI("hasil akar akar xI dan x2I",x,x2);
}

else iI (Diskrim)

x-b2a(sqrt(-Diskrim)2a);
x2-b2a-(sqrt(-Diskrim)2a);
printI("hasil akar akar xI dan x2I",x,x2);
}

}






2. ALGORI%MA
O Input (a,b,c)
O Hitung D bb-4ac
O Output 'D tampilkan hasil dari D
O Jika D
Hitung x(-b)2
%ampilkan output hasil dari X yaitu x x2
O Jika D ~
Hitung x(-bsqrt(D))2a
x2(-b-sqrt(D))2a
%ampilkan output hasil dari x dan x2
O Jika D
O hitung x-b2a(sqrt(-D)2a)
x2-b2a-(sqrt(-D)2a)
%ampilkan output hasil dari x dan x2



3. FLOWCHAR%









VI. KESIMPULAN


Setelah penyusun menyelesaikan laporan PERCABANGAN ini,maka penyusun dapat
menyimpulkan bahwa pemrogaman dengan Baha8a pemrograman C dalam materi percabangan
terdapat 2 macam yaitu iI dan switch case, tetapi keduanya relatiI sama. edua macam perintah
tersebut berjalan dengan cara (iI) 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 iI 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 iI di C
adalah bahwa suatu pernyataan lain selalu mengacu pada iI statement terdekat yang berada dalam
blok yang sama seperti yang lain dan belum terkait dengan yang lain.