tidak ada!”
Contoh
Algoritma Buku_telepon
{mencari nomor telepon seseorang}
Definisi variabel
string nama, notelp;
Rincian langkah
write (“ketik namanya:”);
read (nama);
case (nama)
‘anton’ : notelp ‘(0411) 324-678’;
‘bahrul’ : notelp ‘(021) 434-6783’;
‘charles’ : notelp ‘(022) 256-1234’;
‘daud’ : notelp ‘(0411) 567-342’;
‘endang’ : notelp ‘(0411)344-235’;
‘fahri’ : notelp ‘(021) 765-0856’;
‘gunarsih’ : notelp ‘(0421) 123-876’;
endcase.
write (notelp);
MENJUMLAHKAN DERET
Buatlah sebuah algoritma untuk menghitung
jumlah deret dengan N buah suku sebagai berikut:
S = 1 - ½ + ¼ - 1/6 + 1/8 - 1/10 + 1/12 -1/14 +...
Analisis
Ketika dijalankan maka akan ada permintaan
Definisi variabel
integer N, cacah, k;
real S;
Rincian langkah
write (“beberapa banyak suku?”);
read (N);
S 1;
cacah 1;
k 0;
a. Meminta data
b. Memeriksa data apakah termasuk ganjil atau genap
c. Menjumlahkan data sesuai kelompoknya.
- Tampilkan hasil penjumlahan.
Contoh
Algoritma Ganjil_Genap
{mengelompokkan data dalam bentuk jumlahan bilangan ganjil dan genap}
Deklarasi
integer cacah, N, angka, genap, ganjil;
Deskripsi
write (“berapa banyak bilangan?”);
read (N);
cacah 1;
genap 0;
ganjil 0;
repeat
write (“masukkan bilangak ke-”, cacah);
read (angka);
if (angka %2=0)
then genap genap + angka;
else ganjil ganjil + angka;
endif.
cacah cacah + 1;
until (cacah>N);
write (“jumlah bilangan ganjil=“,ganjil);
write (“jumlah bilangan genap=“,genap);
MEMILIH OPERASI BERDASARKAN PILHAN
+ penjumlahan
-Pengurangan
/ pembagian
*Perkalian
jenis operasi:_
Deklaraasi
real angka1, angka2, hasil;
char pilihan, ulang;
Deskripsi
ulang ‘Y’;
while (ulang=‘Y’||ulang=‘y’) do
write (“pilih operasi yang diinginkan:”);
write (“+ penjumlahan”);
write (“- pengurangan”);
write (“/ pembagian”);
write (“* perkalian”);
write (“ “);
write (“jenis operasi”);
read (pilihan);
endcase.
if (angka2!=0)
then write (“hasil=“, hasil);
endif.
write (“masih mau coba (Y/T)?”);
read (ulang);
endwhile.
MENGHITUNG NILAI RATA-RATA
DAN VARIANS
a. Masukkan x
b. Jumlahkan x, S=S+x
c. Jumlahkan x^2, K=K+x^2
Hitung rata = S/N
Definisi variabel
integer N, i;
real x, S,K, Rata, Varians;
Rincian langkah
write (“berapa banyak bilangan:”);
read (N);
S 0;
K 0;
for (i=1 to N step 1)
write (“masukkan bilangan ke-”,i);
read (x);
S S+x;
K K+x*x;
endfor.
rata S/N;
varians (K-S*S/N)/(N-1);
write (:rata-rta=“,rata);
write (“varians=“,varians);
MASALAH STOK PADA SEBUAH
TOKO BUKU
Informasi awal yang tersedia bagi toko buku
kampus adalah sebagai berikut:
Kode buku berupa 5 digit
Jumlah yang ada pada stok toko buku
Klasifikasi buku, angka 1 menyatakan buku
wajib, angka 2 menyatakan bacaan tambahan
Perkiraan jumlah mahasiswa yang mengikuti
program matakuliah tertentu
Status buku, bila 1 berarti buku baru, 0 berarti
buku lama
Harga beli dari penerbit.
Hasil penerbit staff toko buku menunjukkan
bahwa buku wajib lama pada umumnya dibeli
oleh 60% mahasiswa peserta matakuliah. Buku
wajib baru umumnya dibeli oleh 85% peserta
matakuliah. Buku bacaan tambahan yang pernah
digunakan sebelumnya dibeli oleh 25% peserta
matakuliah, bacaan tambahan baru dibeli oleh
40% peserta metakulian. Jumlah buku yang harus
dipesan adalah selisih antara jumlah kebutuhan
dengan jumlah stok. Apabila selisih ini negatif
berarti ada kelibihan stok sehingga harus
dikembalikan ke penerbit. Harga jual buku
adalah 125% harga beli apabila harga beli sama
atau kurang dari Rp.50.000 dan 120% harga beli
apabila harga belinya lebih dari Rp.50.000.
Laporan ke direktur toko buku harus menggunakan format berikut:
Kode buku Jumlah stok Jumlah Margin laba
pesanan
C4563 15 65 800.000
...
...
Devinisi variabel
string kode;
int stok, jummah, pesanan, jumbuk;
int klas, status, ragam, idx;
real harga, laba, total;
Rincian langkah
write (“berapa macam buku?”);
readln (ragam);
total 0,00;
writeln (“kodebuku”,”stok”,”pesanan”,”marginlaba”);
for idx = 1 to ragam
read (kode, stok, klas, jumah, status, harga);
if (klas=1);
then if (status=1);
then jumbuk round (0,85*jummah);
else jumbuk round(0,60*jummah);
endif;
else if (status=1);
then jumbuk round (0,40*jummah);
else jumbuk round (0,20*jummah);
endif;
endif;
pesanan jumbuk-stok;
if (pesanan<0);
then write (kode,”stok berlebih”,abs(pesanan).”harus dikembalikan”);
endif;
if (harga>50000);
then laba jumbuk*0,20*harga;
else laba jumbuk*0,25*harga;
endif;
total total+laba;
write (kode, stok, pesanan, laba);
endfor;
write (“total margin laba=Rp.”,total);
PEMBAYARAN CICILAN
Variabel yang terkait antara lain adalah:
modal: total modal yang dipinjam
Definisi variabel
real modal, cicilan, bunga;
real modalbulanan, bungabulanan, modaltahunan, bungatahunan;
int lama,n;
Rincian langkah
[memasukkan data utama]
write (“memasukkan modal yang akan dipinjam:”);
readln (modal);
write (“masukkan bunga pinjaman/tahun:”);
readln (bunga);
write (“berapa tahun akan dipinjam:”);
readln (lama);
[melakukan proses perhitungan]
bunga bunga12;
n lama*12;
cicilan (modal*bunga*(bunga+1)^n/((bunga+1)^n-1);
writeln (“pembayaran cicilan setiap bulan + Rp.”,cicilan);
[membuat daftar penyebaran]
writeln (“tahun”,”bulan”,”modalterbayar”,”bungaterbayar”);
for thn=1 to lama
bunga tahunan 0,0;
modaltahunan 0,0;
for tln=1 to 12
bungabulanan bunga*modal;
modalbulanan cicilan-bungabulanan;
bungatahunan bungatahunan + bungabulanan;
modaltahunan modaltahunan + modalbulanan;
writeln (thn,bln,modalbulanan,bungabulanan);
modal modal-modalbulanan;
endfor;
writeln (“akhir tahun-”,thn);
writeln (“modal terbayar = “,modaltahunan, “bungaterbayar=“,
bungatahunan);
writeln (“sisa utang modal=“,modal);
endfor;
PENYEMPROTAN TANAMAN
Sebuah perusahaan agribisnis memiliki pesawat-
pesawat kecil yang di sewakan untuk melakukan
penyemprotan tanaman pada areal perkebunan yang
luas. Biaya sewa yang dikenakan adalah sebagai
berikut:
tipe-1: penyemprotan rumput / alang-alang,
Rp.250.000. per hektar
Tipe-2: penyemprotan hama belalang, Rp.500.000 per
hektar
Tipe 3: penyemprotan kutu, hama wereng, dsb
Rp.750.000 per hektar
Tipe-4: penyemprotan segala jenis hama dan segala
macam rumput Rp.1.250.000 per hektar
Contoh algoritmanya
Algoritma penyemprotan
{menghitung biaya penyemprotan tanaman}
Deklarasi
{masukkan data petani}
writeln (“masukkan data petani:”);
write (“nama petani:”);
readln (nama);
write(“luas lahan:”);
readln(luas);
write(“tipe penyemprotan:”);
readln(tipe);
{menghitung biaya}
case (tipe) of
1 : biaya luas*250000;
2 : biaya luas*500000;
3 : biaya luas*750000;
4 : biaya luas*1250000;
default : writeln(“tipe penyemprotan salah ulangi!”);
Exit;
endcase;
{menghitung potongan}
if (luas>100)
then potongan1 = 0,1*biaya;
else potongan1 = 0,0;
endif;
biaya biaya – potongan1;
if (biaya > 150000000)
then potongan2 = o,1*(biaya – 150000000);
else potongan2 = 0,0;
endif;
biaya biaya – potongan2;
jumPot potongan1 + potongan2;
{menampilkan hasil}
write(“Sdr : “,Nama, “mendapat potongan : Rp. “,
jumPot);
writeln(“dan harus membayar biaya Rp. “,biaya);
ANALISIS PEMAIN HOCKEY
Suatu tim hockey memerlukan beberapa data dari
setiap pemainnya, antara lain:
Nama pemain, umur, tinggi badan, berat badan, skor
musim tanding yang lalu, assist (membantu hingga
teman skoring) musim lalu, pinalti yang diperolehnya,
dan faktor liga
Nilai setiap pemain dihitung sebagai berikut: nilai =
(skor + assist + penalti/4 + (tinggi + berat)/5 –
umur)*faktor liga
Definisi variabel
string nama, namaMaks;
int umur, skor, assist, pnalti, N, idx;
real tinggi, berat;
real nilai, faktor, maks;
Rincian langkah
{memproses data pemain}
N 20;
maks = 0,0;
for (idx = 1 to N)
{baca data awal pemain}
writeln(“masukkan data pemain ke-”,idx);
write(“nama pemain:”); readln (nama);
write (“umur:”); readln (umur);
write(“tinggi dlm cm:”); readln (tinggi);
write(“berat dlm kg:”); readln (berat);
write(“skor:”); readln (skor);
write(“assist:”); readln (assist);
write(“penalti:”); readln(penalti);
write(“faktor:”); readln(faktor);
{menghitung nilai}
nilai {skor + assist + penalti/4 + (tinggi+berat)/5 – umur)*faktor;
{mencari nilai tertinggi}
if (nilai>maks);
then {
maks nilai;
namaMaks nama;
}
endif;
writeln(nama, umur, tinggi, berat, skor, assist, penalti, faktor,
nilai);
endfor;
writeln(“nilai tertinggi adalah:”,maks);
writeln(“pemain dengan nilai tertinggi adalah:”, namamaks);
PERUBAHAN POPULASI IKAN LAUT
Susun sebuah algoritma yang menerima data dari
database berupa nama/jenis ikan, volume tangkapan
tahun lalu, dan volume tangkapan tahun ini,
kemudian hitung perubahan volume tangkapan
melalui formula:
Perubahan=volthn-ini – volthn-lalu/volthn-lalu*100%
Bila perubahan positif dan lebih dari 50%, beri tanda ++
yang berarti perdagangan jenis ikan ini perlu
diawasi, dan bila perubahan negatif lebih dari 30%
maka beri tanda !! Yang berarti perlu adanya
penambahan bibit ikan jenis ini agar populasinya
bisa mengikat.
Algoritmanya
Algoritma Populasi_Ikan
{menghitung perubahan populasi ikan}
Deklarasi
string nama_ikan;
int vol_thn_ini, vol_thn_lalu);
real perubahan;
int N, idx;
Deskripsi
{andaikan ada 50 macam ikan yang diawasi}
N 50;
idx 1;
while (idx N) do
write(“masukkan data ikan ke-”, idx);
readln(nama_ikan, vol_thn_ini, vol_thn_lalu);