Algortima Pemrograman I

advertisement
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
algoritma
Menonton_film
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
Algoritma
Gaji_pegawai
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
menghitung akar persamaan kuadrat:
𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0
Masukan: bilangan real yaitu a, b dan c
Keluaran: akar-akar persamaan kuadrat.
Rumus pencarian akar kuadrat:
𝑥1,2
−𝑏 ± 𝑏 2 − 4𝑎𝑐
=
2𝑎
Nilai 𝑏 2 − 4𝑎𝑐 disebut diskriminan (=D)
flowchart
untuk
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
Deklarasi
Deskripsi
Pembelian_barang
Kodebarang, jml_beli : int;
Hargasatuan,jml_harga,pot,bayar : double;
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;
Var
begin
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;
Var
Status: string;
Harga, Total: double;
Jumlah: integer;
Begin
Write(‘Masukkan Status
Customer=’);
Readln(status);
Write(‘Masukkan jumlah
lembar=’);
Readln(jumlah);
If (status=’pelanggan’) then
begin
Harga:=75;
end
Else
begin
If (jumlah < 100) then
begin
Harga:= 100;
end
Else
Begin
Harga :=85;
end
End;
Total :=Jumlah * Harga;
Writeln(‘ Total Bayar adalah= ‘,
Total);
Readln;
End.
jawaban algoritma:
percabangan bersarang
Nama
algoritma
Biaya_fotokopi
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
Download