If-then-elsePage 16
I. Tujuan Instruksional Khusus :
Setelah Menyelesaikan praktek ini mahasiswa dapat :
Menjelaskan tentang algoritma percabangan bersyarat (if-then, if-then-else, nested if) dalam dalam bentuk flowcharts ataupun pseudocode.
Membuat algoritma dalam bentuk flowcharts dan pseudocode yang melibatkan permasalahan permasalahan percabangan dimana komputer harus melakukan pemilihan untuk menuju ke salah satu cabang berdasarkan kondisi tertentu.
Mengimplementasikan algoritma yang telah dibuat ke dalam bahasa pemrograman dengan menggunakan bahasa C.
II. Alat dan Bahan
PC minimal P-3 400 Mhz
Min Win98 , Microsoft Visio, Microsoft Word, Turbo Pascal Versi 7.0 dan Disket Data
III. Dasar Teori
Salah satu proses didalam suatu program adalah proses seleksi atau kondisional. Dalam bahasa C ada beberapa antara lain :
If_Then
If-Then-Else
nested if
If-Then dan If-Then-Else
Struktur diagram alir dan pseudocode adalah sebagai berikut :
ba
b
a
KONDISI adalah ungkapan bernilai boolean (true atau false), berikut penjelasan kedua gambar diatas :
Bentuk pseudocodenya :
if kondisi Then
Proses 1
Endif
jika ungkapan dalam kondisi bernilai benar (true) maka proses 1 yang akan dikerjakan
dan bila bernilai salah (false) maka selanjutnya diluar kalang IF yang akan dikerjakan.
Bentuk pseudocodenya :
if kondisi Then
Proses 1
Else
Proses 2
Endif
jika ungkapan dalam kondisi bernilai benar (true) maka proses 1 yang akan dikerjakan
dan bila bernilai salah (false) maka proses 2 yang akan dikerjakan.
Struktur If-Then-Else tunggalIf Kondisi ThenProses 1ElseProses 2EndiStruktur if else JamakIf Kondisi ThenProses 1aProses 1bProses 1c…………Proses 1nElseProses 2aProses 2bProses 2c…………Proses 2nEndifProses 1 atau proses 2 dalam struktur If –Then dan If-Then-Else dapat berupa proses tunggal ataupun jamak seperti gambaran berikut ini :
Struktur If-Then-Else tunggal
If Kondisi Then
Proses 1
Else
Proses 2
Endi
Struktur if else Jamak
If Kondisi Then
Proses 1a
Proses 1b
Proses 1c
…………
Proses 1n
Else
Proses 2a
Proses 2b
Proses 2c
…………
Proses 2n
Endif
Struktur If-Then
If Kondisi Then
Proses 1
Endif
Atau
If Kondisi Then
Proses 1a
Proses 1b
Proses 1c
…………
Proses 1n
Endif
Keterangan :
Kondisi dapat berupa ekspresi relasional atau logika
Kata tunggal berarti hanya ada satu proses atau aksi yang dikerjakan bila suatu syarat dari kondisi terpenuhi,
Kata jamak berarti ada dua atau lebih proses atau aksi yang dikerjakan bila suatu syarat dari kondisi terpenuhi,
Untuk percabangan If-Then-Else tidak selalu harus semuanya proses atau aksi tunggal semua atau proses atau aksi jamak semua, akan tetapi bisa kombinasi antara keduanya tergantung dari permasalahannya.
Untuk menyeleksi kondisi tersebut perlu tanda-tanda operasi (pembanding) seperti tabel berikut ini:
Macam operator yang terlibat dalam proses seleksi :
Operator relasi
tanda
arti
=
Sama dengan
Tidak sama dengan
Lebih besar dari atau sama dengan
Lebih kecil dari atau sama dengan
>
Lebih besar dari
<
Lebih kecil dari
Operator logika
tanda
arti
AND
DAN (logical and)
OR
ATAU (logical or)
NOT
TIDAK (logical not)
XOR
Keduanya atau lebih tidak
sama
Nested If
Nested if atau struktur if bersyarang atau struktur if dalam if digunakan untuk menyelesaikan masalah-masalah yang memiliki lebih dari dua cabang. Seperti halnya struktur If-Then ataupun If-Then-Else, alternatif-alternatif dalam nested if bisa berupa alternatif hanya terdiri dari satu proses atau aksi ( tunggal ) atau alternatif yang terdiri dari sejumlah proses atau aksi ( jamak) ataupun kombinasi antar keduanya. Berikut ini contoh flow chart untuk nested if:
Bentuk umum nested if :If Kondisi1 ThenIf Kondisi1 ThenProses 2bElseProses 2aEndifElseProses 1Endifcatatan : Proses atau aksi bisa jugaberupa proses atau aksi jamak.
Bentuk umum nested if :
If Kondisi1 Then
If Kondisi1 Then
Proses 2b
Else
Proses 2a
Endif
Else
Proses 1
Endif
catatan : Proses atau aksi bisa juga
berupa proses atau aksi jamak.
Perhatian :
Bila suatu proses atau aksi setelah If-Then atau Else perintah tidak diapit dengan begin dan end maka hanya tepat satu proses atau aksi setelah If-Then atau Else yang diuji berdasarkan syarat atau kondisi dalam percabangan tersebut.
Hal tersebut di atas juga berlaku pada proses implementasi ke dalam suatu bahasa pemrograman, yang mungkin membedakan adalah sintaksis dan semantiknya.
IV. Langkah Kerja
Hidupkan komputer anda !
Jalankan Microsoft Visio, dengan cara menekan tombol Start Program MS Office 2000>Microsoft Visio. Selanjutnya gambarkanlah algoritma dari permasalahan berikut ini dan simpan dalam satu nama file : Lat03.vsd
Jalankan Microsoft Word, dengan cara menekan tombol Start>Program>MS Office 2000>Microsoft Word. Selanjutnya tuliskan algoritma dari permasalahan berikut ini dan simpan dalam satu nama file : Lat03.doc.
Buatlah algoritma dengan bentuk flowcharts dan buat pula pseudocodenya untuk proses menentukan suatu keputusan seseorang mendapatkan korting bila total pembeliannya Rp 50.000 atau lebih, dimana proses memasukkan jumlah beli di masukkan dari keyboard, selanjutnya diproses dan menghasilkan keluaran besar diskon dan jumlah bayarnya.
PROGRAM BELANJAANDEKLARASI tot_blnja : integer biaya : long integerDESKRIPSI Write ('masukkan total belanja : ') If (tot_blnja>=50.000) then Biaya tot_blnja – (tot_blnja*10%) Else Biaya tot_blnja Endif Write ('pembayaran total = ' , biaya)
PROGRAM BELANJAAN
DEKLARASI
tot_blnja : integer
biaya : long integer
DESKRIPSI
Write ('masukkan total belanja : ')
If (tot_blnja>=50.000) then
Biaya tot_blnja – (tot_blnja*10%)
Else
Biaya tot_blnja
Endif
Write ('pembayaran total = ' , biaya)
Buatlah algoritma dengan bentuk flowcharts dan buat pula pseudocodenya untuk
proses menentukan apakah suatu bilangan yang dimasukkan dari keyboard itu bilangan ganjil atau genap. Hasil keluaran proses ini berupa tampilan sebagai berikut : output ("Bilangan ",intBil," tidak habis di bagi 2 ")
output ("Karena itu termasuk sebagai bilangan Ganjil")
Atau
output ("Bilangan ",intBil," habis di bagi 2 ")
output ("Karena itu termasuk sebagai bilangan Genap")
Buatlah flowchart di bagian lembar Microsoft Visio dan pseudocode pada lembar
Microsoft Word, kemudian simpan hasil kerja anda, dimana flowchartnya anda
masukkan dalam dokumen word di jadikan satu di samping dari pseudocodenya dan
simpan ke dalam hardisk atau disket data dengan nama file yang sama.
ALGORITMA JNS_BIL
DEKLARASI
X : integer
DESKRIPSI
Input (x)
Modulus x%2
If (mod==0) then
Output ('habis dibagi dua, karena itu termasuk bilangan genap)
Else
Output ('tidak habis dibagi dua, karena itu termasuk bilangan ganjil)
endif
Suatu toko fotocopy berusaha meningkatkan layanan dengan pola sebagai berikut:
Jika yang mengkopy sudah terdaftar sebagai pelanggan maka akan mendapat potongan harga/lembar kopynya Rp. 75 untuk jumlah kopy kurang dari 100 lembar dan bila lebih dari atau sama dengan 100 lembar diberikan potongan harga/lembar kopynya Rp. 65, untuk harga normal perlembar/kopynya Rp. 80.
Jika yang mengkopy belum terdaftar sebagai pelanggan maka akan mendapat potongan harga/lembar kopynya Rp. 70 untuk jumlah kopy lebih dari atau sama dengan 200 lembar.
Hasil keluaran berupa jumlah lembar kopynya, besar potongan harga yang diperoleh dan jumlah bayarnya.
Selesaikan permasalahan ini seperti metode langkah kerja no.4 (flowcharts dan pseudocode )dan simpan ke dalam hardisk atau disket data dengan nama file yang sama pula.
PROGRAM TOKO_FOTOCOPY
DEKLARASI
Jml_kopy : integer
Hrg_lmbr, jml_pot, jml_byr : integer
Jns_plgn : char
DESKRIPSI
Write('Apakah termasuk pelanggan (Y/T): ' , jns_plgn)
Write('Masukkan jumlah lembar kopi : ' , jml_kopy)
If (jns_plgn ='Y') Then
If (jml_kopy >= 100 ) then
hrg_rlmbr 65
Else
Hrg_lmbr 75
endif
Else
If (jml_kopy >= 200 ) then
Hrg_lmbr 70
Else
Hrg_lmbr 80
endif
Jml_byr jml_kopy * hrg_lmbr;
Jml_pot (jml_kopy * 80)- jml_byr;
Write ('Jumlah lembar yang anda copy: ',jml_kopy)
Write ('Jumlah Potongan harga : ',jml_pot)
Write ('Jumlah bayar : ',jml_byr)
Cobalah anda implementasikan permasalahan nomor 4, 5, dan 6 ke dalam bentuk program dengan menggunakan bahasa pemrograman bahasa C.
Program nomor 4 :
Program nomor 5 :
Program nomor 6 :
V. Pertanyaan / Soal
Apa yang dimaksud dengan proses atau aksi jamak dan tunggal ? jelaskan dengan singkat dan jelas .
Diketahui suatu permasalahan sistem pembayaran panggilan disuatu wartel sebagai berikut :
Sistem pembayaran didasarkan pada lama percakapan ( jam akhir pembicaraan – jam awal pembicaraan).
Hitunglah berapa pulsa telepon yang dipakai jika per-pulsa telepon berubah setiap 20 detik.
Jika pembicaraan dilakukan pada hari libur atau antara jam 10:00 malam sampai jam 07:00 pagi mendapat diskon 30% dari total pembayaran dan untuk waktu selain itu tidak mendapatkan diskon. Hitunglah jumlah bayarnya, dengan harga per-pulsa Rp. 200,-
Buatlah flowcharts dan pseudocodenya serta impelentasikan permasalahan ini ke dalam bahasa pemrograman C.
Diketahui persamaan kuadrat ax2 + bx + c = 0. Buatlah program untuk menghitung nilai-nilai akarnya dengan ketentuan nilai deskriminannya sebagai berikut :
D = b2 – 4ac
Dari nilai deskriminan yang diperoleh memiliki tiga kemungkinan berikut yang dijadikan sebagai dasar untuk menentukan nilai akar-akarnya.
Jika D = 0, maka nilai akarnya x1 = x2 = -b2a
Jika D > 0, maka nilai akarnya x1 = - b + D2a
x2 = - b - D2a
Jika, D < 0 , maka akarnya imajiner (Tampilkan keterangan "Akar Imajiner).
Tugas anda :
Buatlah algoritma dengan bentuk flowcharts dan pseudocode serta implementasikan permasalahan tersebut ke dalam bahasa Pascal / Bahasa C.
Berikanlah kesimpulan dari praktik yang anda lakukan di jobsheet ketiga ini.
Penutup
Demikian laporan praktikum jobsheet 3 logika dan algoritma saya buat. Apabila terdapat kesalah dalam penulisan, mohon kritikan dan sarannya.
Daftar Pustaka
Jobsheet Algo 03.pdf
Handoko, S. 2011. BUKU AJAR LOGIKA & ALGORITMA.pdf. Semarang: Politeknik Negeri Semarang.
Lampiran :
Jawaban
Proses atau aksi tunggal : hanya ada satu proses yang dikerjakan bila suatu kondisi/syarat terpenuhi.
Proses atau aksi jamak : ada dua atau lebih proses yang dikerjakan bila suatu kondisi/syarat terpenuhi.
Flowchart :
Pseudocode :
PROGRAM WARTEL
DEKLARASI
lm_bcr : integer
hr_lbr : char
biaya,bayar : long integer
DESKRIPSI
Write ('lamanya bicara dalam detik= ',lm_bcr)
Write ('hari libur? (Y/T)=',hr_lbr)
Biaya lm_bcr*200/20
If (hari libur==y) then
Bayar biaya * 30%
Else
if ('22.00-07.00')
Bayar biaya * 30%
Else
Bayar biaya
endif
endif
Output ('anda harus membayar= ',bayar)
Nilai deskriminan :
Flowchart
Pseudocode
PROGRAM PERS_DESKRIMINANT
DEKLARASI
a,b,c,d : integer
DESKRIPSI
D b2 – 4ac
Write ('nilai D = ',D)
If (D==0) then
x1 x2 (-b)/2a
Else if (D > 0) then
x1 - b + D/2a
x2 - b - D/2a
else if (D < 0) then
output ('angka imajiner')
else
write (nilai x1 = ' , x1)
write (nilai x2 = ' , x2)
endif
endif
endif
Codding
#include
#include
int main()
{
int a,b,c,D;
float x1,x2;
printf("Masukan nilai a,b,c (pisahkan dengan koma) : ");
scanf("%d,%d,%d",&a,&b,&c);
printf("\n");
D = (b*b) - 4*a*c;
if(D==0)
{
x1 = (b-b*2)/(2*a);
x2 = x1;
printf("D = %d\nx1 = %0.2f\nx2 = %0.2f",D,x1,x2);
}
else if(D > 0){
x1 = (b-b*2) + (sqrt(D)/(2*a));
x2 = (b-b*2) - (sqrt(D)/(2*a));
printf("D = %d\nx1 = %0.2f\nx2 = %0.2f",D,x1,x2);
}
else{
printf("D = %d\nAkar Imajiner",D);
}
return 0;
}
Kesimpulan :
Struktur bersyarat adalah proses untuk membandingkan nilai, yang terdapat beberapa proses di badannya. Apabila kondisi bernilai true, maka proses true akan dijalankan, apabila bernilai false, maka proses false yang akan dijalankan.