laporan praktikum modul 2 percabangan c++2
TRANSCRIPT
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. Mahasiswa memahami berbagai struktur percabangan di C yaitu if & if-else
2. Mahasiswa memahami berbagai struktur percabangan di C yaitu switch
II. ALAT YANG DIGUNAKAN
Computer
Turbo C++ 45
III. 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.
Operato
r
Contoh Arti
== A==B Apakah Isi Variabel A sama dengan Isi
Variabel B
!= A!=B Apakah Isi Variabel A Tidak Sama
Dengan Isi Variabel B
> A>B Apakah Isi Variabel A lebih besar dari
Isi Variabel B
< A<B Apakah Isi Variabel A lebih kecil dari
Isi Variabel B
>= A>=B Apakah Isi Variabel A lebih besar atau
sama dengan Isi Variabel B
<= A<=B Apakah Isi Variabel A lebih kecil atau
sama dengan Isi Variabel B
&& (A<=100)
&&(A>=80)
Apakah A lebih kecil atau sama dengan
dari 100 dan A lebih besar atau sama
dengan 80
|| (A>100)||
(A<0)
Apakah A lebih besar dari 100 atau A
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 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.
Contoh Kasus :
Di sebuah universitas penilaian yang dipakai adalah :
NilaiAkhir=20%*tugas+30%*uts+50%*uas
Nilai
Akhir
Index
>=80 A
>=68 B
>=56 C
>=45 D
>=0 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 - 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 : 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");
}
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.
KELAS
EKSEKUTIF(1
)
BISNIS(2) EKONOMI(3)
TU
J
UA JAKARTA(1) 70000 40000 10000
YOGYA(2) 80000 50000 20000
SURABAYA(3) 90000 60000 30000
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. Jakarta2. Yogya3. Surabaya
Jurusan yang anda pilih : 2 [input]Pilih Kelas :
1. Eksekutif2. Bisnis3. 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
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:
1. Jika termasuk kelompok A maka perhitungan biaya meliputi :
Abonemen : 50000
150 kwh pertama : 2250/kwh
Selanjutnya : 4750/kwh
Pajak : 10% dari total
2. Jika termasuk kelompok B maka perhitungan biaya meliputi :
Abonemen : 35000
100 kwh pertama : 1750/kwh
Selanjutnya : 3250/kwh
Pajak : 10% dari total
3. Jika termasuk kelompok C maka perhitungan biaya meliputi :
Abonemen : 20000
75 kwh pertama : 1500/kwh
Selanjutnya : 2750/kwh
Pajak : 5% dari total
Menampilkan biaya yang harus dibayar pelanggan
Contoh:
Input : kelompok ‘A’
Pemakaian 250 kwh
Perhitungan : biaya = 50000 + 2250*150+4750*100
pajak = 10/100* biaya
total = biaya + pajak
Output : total
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”
3. FLOWCHART
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
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.
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
“nelpon” tersebut. Yang menjadi input dari program tersebut adalah pilihan menu dan total waktu
percakapan (dalam satuan detik)
Contoh Tampilan Menu :
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”
3. FLOWCHART
3.
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 x1=(-1*b)/2
Tampilkan /output hasil dari X1 yaitu x1 = x2
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
3. FLOWCHART
VI. 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.