Logika dan Algoritma Job 3

LAPORAN PRAKTIKUM
PERCABANGAN BERSYARAT
(IF, IF-ELSE, NESTED IF)

Oleh:
Dwi Wuri Mud’mainah (3.34.13.1.06)
IK-1B

PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2013

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
Struktur diagram alir dan pseudocode adalah sebagai berikut :

Dwi Wuri Mud’mainah

Page | 2

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
If Kondisi Then
Proses 1

Dwi Wuri Mud’mainah

Page | 3

Else

Proses 2
Endif

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

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 :

Dwi Wuri Mud’mainah

Page | 4

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 :
-


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.

Dwi Wuri Mud’mainah

Page | 5

-

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
4) Buatlah algoritma dengan bentuk flowcharts dan buat pula pseudocodenya untuk
proses menentukan suatu keputusan seseorang mendapatkan korting bila total
pembeliannya Rp50.000 atau lebih, dimana proses memasukkan jumlah beli di
masukkan dari keyboard selanjutnya diproses dan menghasilkan keluaran besar
diskon dan jumlah bayarnya.


Dwi Wuri Mud’mainah

Page | 6

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
Write (‘total belanja = ‘,
total_bayar)

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”)

Dwi Wuri Mud’mainah

Page | 7

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
Write (‘x adalah bilangan ganjil’)
Endif

6) Suatu toko fotocopy berusaha meningkatkan layanan dengan pola sebagai berikut:

Dwi Wuri Mud’mainah

Page | 8

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.
d. 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.

Dwi Wuri Mud’mainah

Page | 9

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)
Write(‘Masukkan jumlah lembar kopi anda : ‘)
Read(jml_lbr)
If (jns_pelanggan =’Y’) Then
begin
If (jml_lbr >= 100 ) then

Dwi Wuri Mud’mainah

Page | 10

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 5

Dwi Wuri Mud’mainah

Page | 11

-

Nomor 6
#include
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;
};
}
else
{
printf("masukkan jumlah lembar! \n");
scanf("%d", &jml_lbr);
if(jml_lbr>=200)

Dwi Wuri Mud’mainah

Page | 12

{
jml_byr=70*jml_lbr;
}
else
{
jml_byr=80*jml_lbr;
};
}
potongan=(80*jml_lbr)-jml_byr;
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
Dari nilai deskriminan yang diperoleh memiliki tiga kemungkinan berikut yang
dijadikan sebagai dasar untuk menentukan nilai akar-akarnya.

Dwi Wuri Mud’mainah

Page | 13

Jika D = 0, maka nilai akarnya
x 1=x 2=

−b
2a

Jika D > 0, maka nilai akarnya
D
x 1=−b+ √
2a
D
x 2=−b− √
2a
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
2.

Flowchart :

Dwi Wuri Mud’mainah

Page | 14

Pseudocode :

PROGRAM PEMBAYARAN_WARTEL

3. Flowchart:

DEKLARASI
Jam_awal, jam_akhir, lama_percakapan:
Pseudocode:
interger
PROGRAM
Jml_byr,HITUNG_AKAR
diskon, total: real
DEKLARASI
DESKRIPSI
a,b,c,D:interger
Write(‘waktu mulai mnelpon= ‘)
X1,X2=real
Read(jam_awal)
Write(‘waktu selesai menelpon= ‘)
DESKRIPSI
Read(jam_akhir)
Write(‘masukkan
nilai a= ‘)
Lama_percakapanjam_akhir-jam_awal
Read(a)
Write(‘masukkan
nilai 22.00-07.00)then
b= ‘)
If(hari libur//pukul
Read(b)
Jml_byr (lama_percakapan/20)*200
Write(‘masukkan nilai c= ‘)
Diskonjml_byr*0.03
Read(c)
totaljml_byr-diskon
D(b*b)-4*a*c
else if(hari
If(D=0)
then libur//pukul 22.00-07.00)
Jml_byr
(lama_percakapan/20)*200
X1=X2-b/(2*a)
Diskonjml_byr*0
Write(X1)
totaljml_byr-diskon
Write(X2)
endif
write(‘total
biaya telpon adalah ‘)
Else
if(D>0)then
X1-b+((sqrt(D))/(2*a)
X2-b-((sqrt(D))/(2*a)
Write(X1)
Write(X2)
Else
Write(‘akar imajiner’)
Endif
Endif

4. Dari praktik ini dapat disimpulkan
bahwa untuk menyelesaikan suatu

Dwi Wuri Mud’mainah

Page | 15

masalah bisa dilakukan dengan berbagai cara. Kita bisa menggunakan proses tunggal
maupun proses jamak, tergantung pada konteks permasalahan tersebut. Jenis proses
yang akan dikerjakan menentukan efisiensi dalam mendapatkan hasil akhir.

Dwi Wuri Mud’mainah

Page | 16