LAPORAN PRAKTIKUM
PERCABANGAN BERSYARAT
(IF, IF-ELSE, NESTED IF)
Oleh:
Dwi Wuri Mud’mainah (3.34.13.1.06)
IK-1B
I. Tujuan Instruksional Khusus :
Setelah Menyelesaikan praktek ini mahasiswa dapat :
1. Menjelaskan tentang algoritma percabangan bersyarat (if-then, if-then-else, nested if) dalam dalam bentuk flowcharts ataupun pseudocode.
2. Membuat algoritma dalam bentuk flowcharts dan pseudocode yang melibatkan permasalahanpermasalahan percabangan dimana komputer harus melakukan pemilihan untuk menuju ke salah satu cabang berdasarkan kondisi tertentu.
3. Mengimplementasikan algoritma yang telah dibuat ke dalam bahasa pemrograman dengan menggunakan bahasa Pascal.
II. Alat dan Bahan
- PC minimal P-3 400 Mhz - Min Win98
- Microsoft Visio - Microsoft Word - Turbo C
III. Dasar Teori:
Salah satu proses didalam suatu program adalah proses seleksi atau kondisional. Dalam bahasa C
ada beberapa antara lain : 1. If_Then
2. If-Then-Else 3. nested if
1. If-Then dan If-Then-Else
KONDISI adalah ungkapan bernilai boolean (true atau false), berikut penjelasan kedua gambar diatas :
a) 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.
b) Jika ungkapan dalam kondisi bernilai benar (true) maka proses 1 yang akan dikerjakan dan bila bernilai salah (false) maka proses 2 yang akan dikerjakan. Proses 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
If Kondisi Then
Proses 1
Endif
Atau
If Kondisi Then
Proses 1a Proses 1b Proses 1c ………… Proses 1n
Endif
Struktur If-Then-Else tunggal
Else
Proses 2
Endif
Struktur if else Jamak
If Kondisi Then
- 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:
2. 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:
Perhatian :
- Hal tersebut di atas juga berlaku pada proses implementasi ke dalam suatu bahasa pemrograman, yang mungkin membedakan adalah sintaksis dan semantiknya.
IV. Langkah Kerja
1) Hidupkan komputer anda !
2) 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
3) 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
5) 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:
Untuk bilangan ganjil
output (“Bilangan “,intBil,” tidak habis di bagi 2 “) output (“Karena itu termasuk sebagai bilangan Ganjil”)
Atau
Untuk bilangan genap
output (“Bilangan “,intBil,” habis di bagi 2 “)
output (“Karena itu termasuk sebagai bilangan Genap”) Bentuk Pseudocode:
PROGRAM BELANJAAN DEKLARASI
Total_harga : interger Total_bayar : interger DESKRIPSI
Write (‘masukkan total harga : ‘) If (total_harga>=50000) then Potongan total_harga*5%
Total_bayar total_harga-potongan Else
Total_bayar total_harga Endif
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.
Bentuk Pseudocode:
ALGORITMA JENIS_BIL DEKLARASI
X : interger DESKRIPSI Input (X) Modulus x%2 If (modulus=0) then
Write (‘x adalah bilangan genap’) Else
a. 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. b. 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.
c. Hasil keluaran berupa jumlah lembar kopynya, besar potongan harga yang diperoleh dan jumlah bayarnya.
Bentuk pseudocode : PROGRAM TOKO_FOTOCOPY
DEKLARASI
jml_lbr:integer hrg_lbr:interger hrg_potongan:interger jml_byr:interger jns_pelanggan : char
DESKRIPSI
Write(‘Apakah anda pelanggan (Y/T) :‘) Read(jns_pelanggan)
Hrg_lbr := 65 Else
Hrg_lbr := 75 end
Else
If (jml_lbr >= 200 ) then Hrg_lbr := 70
Else
Hrg_lmr := 80
Endif
Jml_byr := jml_lbr * hrg_lbr
Hrg_potongan := (jml_lbr * 80)- jml_byr
Write (‘Jumlah lembar yang anda kopy : ‘,lbr)
Write (‘Jumlah Potongan harga : ’,hrg_potongan :8:2) Write (‘Jumlah bayar : ’,jml_byr:8:2)
7) Cobalah anda implementasikan permasalahan nomor 4, 5, dan 6 ke dalam bentuk program dengan menggunakan bahasa pemrograman C.
- Nomor 4
- Nomor 6
#include <stdio.h> main()
{
char jns_pelanggan;
int jml_lbr, jml_byr, potongan;
printf("Apakan pelanggan tetap? Y/N \n"); scanf("%c", &jns_pelanggan);
if('Y') {
printf("masukkan jumlah lembar! \n"); scanf("%d", &jml_lbr);
if(jml_lbr>=100) {
jml_byr=65*jml_lbr; }
else {
jml_byr=75*jml_lbr; };
{
printf("potongan sebesar = %d \n", potongan); printf("jumlah bayar = %d \n", jml_byr); }
V. Pertanyaan / Soal
1. Apa yang dimaksud dengan proses atau aksi jamak dan tunggal ? jelaskan dengan singkat dan jelas .
2. Diketahui suatu permasalahan sistem pembayaran panggilan disuatu wartel sebagai berikut :
a. Sistem pembayaran didasarkan pada lama percakapan ( jam akhir pembicaraan – jam awal pembicaraan).
b. Hitunglah berapa pulsa telepon yang dipakai jika per-pulsa telepon berubah setiap 20 detik.
c. 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,-d. Buatlah flowcharts dan pseudocodenya serta impelentasikan permasalahan ini ke dalam bahasa pemrograman C.
3. Diketahui persamaan kuadrat ax2 + bx + c = 0. Buatlah program untuk menghitung nilai-nilai akarnya dengan ketentuan nilai deskriminannya sebagai berikut :
D = b2 – 4ac
Jika D = 0, maka nilai akarnya
x1=x2=−b
2a
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.
4. Berikanlah kesimpulan dari praktik yang anda lakukan di jobsheet ketiga ini.
VI. Jawaban
1. Proses tunggal adalah apabila hanya ada 1 proses yang akan dikerjakan jika suatu syarat terpenuhi.
Proses jamak adalah beberapa proses atau aksi yang akan dikerjakan apabila suatu syarat (kondisi) terpenuhi
3. Flowchart:
Jam_awal, jam_akhir, lama_percakapan: interger
Jml_byr, diskon, total: real
DESKRIPSI
Write(‘waktu mulai mnelpon= ‘) Read(jam_awal)
Write(‘waktu selesai menelpon= ‘) Read(jam_akhir)
Lama_percakapanjam_akhir-jam_awal If(hari libur//pukul 22.00-07.00)then Jml_byr (lama_percakapan/20)*200 Diskonjml_byr*0.03
totaljml_byr-diskon
else if(hari libur//pukul 22.00-07.00) Jml_byr (lama_percakapan/20)*200 Diskonjml_byr*0
totaljml_byr-diskon endif
write(‘total biaya telpon adalah ‘)
Pseudocode:
Write(‘masukkan nilai a= ‘) Read(a)
Write(‘masukkan nilai b= ‘) Read(b)
Write(‘masukkan nilai c= ‘) Read(c)
Write(‘akar imajiner’) Endif