Anda di halaman 1dari 36

Algortima

Pemrograman I
PERCABANGAN
Struktur Algoritma Percabangan
• Sebuah program tidak selamanya akan berjalan
dengan mengikuti struktur berurutan, kadang
perlu merubah urutan pelaksanaan program dan
menghendaki agar pelaksanaan program
meloncat ke baris tertentu.
• Peristiwa ini kadang disebut sebagai
percabangan/pemilihan atau keputusan.
Pernyataan If .... Else
• Digunakan untuk menguji sebuah kondisi.
• Bentuk umum:
If kondisi then
Begin
{pernyataan yang dijalankan jika kondisi terpenuhi}
End
Else
Begin
{pernyataan yang dijalankan jika kondisi tidak terpenuhi}
End;
• Contoh:
If (x > 0) then
Writeln(‘x bilangan positif’);
else
Writeln(‘x bilangan negatif’);
• Program diatas tidak perlu menambahkan kata kunci begin
dan end karena pernyataan yang dituliskan hanya satu baris
saja.
• Jika tidak ingin mengerjakan sesuatu jika kondisi yang
ditentukan tidak terpenuhi, dapat menyatakan if tanpa else.
If (x<0) then
x := -x;
Pernyataan If .... Else if
• Meletakkan pernyataan if lain setelah else.
If (x > 0) then
Writeln (‘x bilangan positif’);
Else if (x < 0) then
Writeln (‘x bilangan negatif’);
Else
Writeln (‘x adalah nol’);
Pernyataan case
• Digunakan untuk menyederhanakan konstruksi If ... Else if
If (x = 0) then
Writeln (‘x bernilai 0’);
Else if (x = 1) then
Writeln (‘x bernilai 1’);
Else if (x = 2) then
Writeln (‘x bernilai 2’);
else
Writeln (‘x tidak bernilai 0, 1 dan 2’);
• Dapat diganti menjadi lebih ringkas
Case x of
0:=Writeln (‘x bernilai 0’);
1:=Writeln (‘x bernilai 1’);
2:=Writeln (‘x bernilai 2’);
else
Writeln (‘x tidak bernilai 0, 1 dan 2’);
End;
Contoh soal
No.1
•  
Tulislah algoritma dan program serta flowchart yang
menampilkan ‘Genap’ jika suatu bilangan adalah bilangan genap
atau ‘Ganjil’ jika bilangan adalah bilangan ganjil.
Masukan: bilangan bulat yaitu x dimana 0 65535
Keluaran: bilangan genap dan bilangan ganjil
No.2
Tulislah algoritma dan program serta flowchart jika sebuah
aturan untuk menonton sebuah film tertentu adalah sebagai
berikut, jika usia penonton lebih dari 17 tahun maka penonton
diperbolehkan dan apabila kurang dari 17 tahun maka penonton
tidak diperbolehkan nonton.
jawaban algoritma:
menonton_film
Nama Menonton_film
algoritma
Deklarasi Usia : real;
Psn : String;
Deskripsi Read (Usia)
if Usia > 17
Psn “anda boleh menonton”
else
Psn “anda tidak boleh menonton”
Write(‘Pesan’, Psn)
jawaban flowchart:
menonton_film
No.3
Tulislah algoritma dan program serta flowchart jika dalam suatu
perhitungan nilai P = X + Y. Jika P positif, maka Q = X * Y,
sedangkan jika negative maka nilai Q = X/Y. Buatlah flowchart
untuk mencari nilai P dan Q
jawaban algoritma: hitung_bilangan
Nama algoritma Hitung_bilangan
Deklarasi X, Y : real;
P, Q : real;
Deskripsi Read (X,Y)
PX+Y
if P > 0
QX*Y
else
QX/Y
Write(‘Nilai P’,P)
Write(‘Nilai Q’, Q)
jawaban flowchart:
hitung_bilangan
No.4
Tulislah algoritma dan program serta flowchart jika diketahui
pegawai dengan masa kerja lebih dari 3 tahun mendapat
tunjangan sebesar 20% gaji pokok sedang yang kurang dari itu
mendapat tunjangan 10%. Input program adalah masa kerja dan
gaji pokok.
Jawaban algoritma: gaji
Nama Gaji_pegawai
Algoritma
Deklarasi Tjg, mk, gapok, gatot : double
Deskripsi Read (mk, gapok )
If(mk>3) then
tjg  0.2 * gapok
Else
tjf  0.1 * gapok
Gatot  gapok + tjg
Write(‘gaji total’,gatot )
Jawaban flowchart: gaji
No.5
•  
Tulislah algoritma dan program serta flowchart yang meminta
masukan dari pengguna. Jika memasukkan 0 program
menampilkan Minggu, jika memasukkan 1 program
menampilkan Senin, dan seterusnya sampai sabtu. Jika
memasukkan nila diluar 0 sampai 6, program menuliskan hari
tidak valid.
Masukan: bilangan bulat yaitu x dimana 0 255
Keluaran: Minggu, Senin ... Sabtu dan hari tidak valid.
No.6  persamaan Kuadrat
•  
Tulislah algoritma dan program serta flowchart untuk
menghitung akar persamaan kuadrat:

Masukan: bilangan real yaitu a, b dan c

Keluaran: akar-akar persamaan kuadrat.


Rumus pencarian akar kuadrat:

Nilai disebut diskriminan (=D)


No.7  Tahun Kabisat
•Tulislah
  algoritma dan program serta flowchart untuk mengecek
suatu tahun merupakan tahun kabisat atau bukan.
Masukan: bilangan bulat dimana 0 255
Keluaran: Tahun Kabisat dan Tahun bukan kabisat.
No.8
Buatlah algoritma dan program serta flowchart untuk
menghitung umur anda dengan memasukkan tahun sekarang.
Hasil penghitungan adalah
 apakah tahun lahir tahun kabisat atau tidak
 Umur anda dalam hitungan jam
Jawaban soal: tahun kabisat
Nama Algoritma Tahun_kabisat
Deklarasi Tahun_sekarang : int;
Tahun_lahir : int;
Hitung_umur_tahun : int
Hitung_umur_jam : int
Kata : String
Deskripsi Read (tahun_sekarang,tahun_lahir)
Hitung_umur_tahun  tahun_sekarang – tahun_lahir
Hitung_umur_jam  hitung_umur_tahun * 8760
If((tahun_sekarang % 400 ==0) ||((tahun_sekarang % 4 == 0) &&
(tahun_sekarang %100 != 0)) )
kata  tahun kabisat
Else
kata  tidak tahun kabisat
Write (hitung_umur_jam, kata)

a01TahunKabisatSimple.java
Jawaban flowchart: tahun kabisat
No.9
FORM BELI BARANG

Kode Barang

Jumlah Beli

Harga Barang

Jumlah Harga

Total Bayar

• Buatlah algoritma dan program serta flowchart jika beli


produk >=3, maka diskon 5%
Jawaban algoritma: form
Nama program Pembelian_barang
Deklarasi Kodebarang, jml_beli : int;
Hargasatuan,jml_harga,pot,bayar : double;
Deskripsi read (kodebarang,hargasatuan,jml_beli)
Jml_harga = hargasatuan * jml_beli;
If jml_beli >=3
Pot = 0.5;
Else
Pot = 0;
Bayar = (Jml_harga) – (Jml_harga* pot);
Write(‘Jumlah Harga’, Jml_harga )
Write(‘Potongan’,pot)
Write (‘bayar’, bayar);
Pseudo code Jml_harga = harga * jml_beli;
If jml_beli >=3 then
Program Pembelian_barang; begin
Var diskon = 0.5;
Kode, jml_beli : int; end
Harga,jml_harga: double; Else
diskon : double; begin
Begin diskon = 0;
write ( ‘ Kode Barang : ‘); End;
readln(Kode); Bayar = (Jml_harga) – (Jml_harga*
write (‘ Jumlah beli : ‘); diskon);
readln (jml_beli); Writeln(‘Jumlah Harga’, Jml_harga );
write (‘Harga satuan: ‘); Writeln (‘Total bayar’, bayar);
readln(harga); Readln;
End.
Percabangan
bersarang
Contoh 10:
• Sebuah usaha fotokopi mempunyai aturan sebagai berikut :
 jika yang fotokopi statusnya adalah langganan, maka berapa
lembar pun dia fotokopi, harga perlembarnya Rp. 75,-
jika yang fotokopi bukan langganan, maka jika dia fotokopi
kurang dari 100 lembar harga perlembarnya Rp. 100,-.
Sedangkan jika lebih atau sama dengan 100 lembar maka
harga perlembarnya Rp. 85,-.
Algoritma
1. Masukkan Status customer dan jumlah lembar
2. Jika status=’pelanggan’ harga perlembarnya Rp. 75,-
3. Jika status=’bukan pelanggan’ , jika dia fotokopi < 100 harga
perlembarnya Rp. 100,-. Sedangkan jika >= 100 maka
harga=Rp. 85,-.
4. Total bayar  jumlah lembar * harga
5. Tulis Total Bayar
Pseudo code
Program Biaya Cetak; begin
Var If (jumlah < 100) then
Status: string; begin
Harga, Total: double; Harga:= 100;
Jumlah: integer; end
Begin Else
Write(‘Masukkan Status Customer=’); Begin
Readln(status); Harga :=85;
Write(‘Masukkan jumlah lembar=’); end
Readln(jumlah); End;
If (status=’pelanggan’) then
begin  Total :=Jumlah * Harga;
Harga:=75; Writeln(‘ Total Bayar adalah= ‘, Total);
end Readln;
Else
End.
jawaban algoritma:
percabangan bersarang
Nama Biaya_fotokopi
algoritma
Deklarasi Status : String;
JLF : int;
HPP, TH : real;
Deskripsi Read (Status,JLF)
if Status==“langganan”
HPP  75
else
if JLF < 100
HPP  100
else
HPP  85
TH  JLF * HPP
Write (‘Total Harga’, TH)
jawaban flowchart: percabangan
Contoh 11:
• Aturan kelulusan siswa pada mata pelajaran Pemrograman
Web diterapkan sebagai berikut :
 Jika nilai ujian tengah semester (UTS) lebih besar dari 70
maka siswa dinyatakan lulus dan Nilai Akhir sama dengan
nilai UTS.
 Jika nilai UTS kurang atau sama dengan 70 maka siswa
dinyatakan lulus jika Nilai Akhir lebih besar atau sama
dengan 60 dimana Nilai Akhir = (nilai UTS x 40%) + (nilai
UAS x 60%).
Jawaban algoritma: lulus
Nama algoritma Kelulusan_siswa
Deklarasi nim,nama,status : String;
NUTS,NUAS,NA : real;
Deskripsi Read (nim,nama,status,NUTS,NUAS)
if NUTS > 70
NA  NUTS;
status  “lulus”
else
NA  (NUTS * 0.4) + (NUAS * 0.6)
if NA >= 60
status  “lulus”

else
status  “tidak lulus”
Write (‘Nim, Nama, NA, Status’, nim,nama,NA,status)
Jawaban
flowchart: lulus

Anda mungkin juga menyukai