You are on page 1of 7

AKSES DATA LANGSUNG

Seorang sekretaris memerlukan satu program sederhana yang dapat


membantu dia untuk mengetahui nomor telepon seseorang dengan cepat tanpa harus
membuka-buka buku agendanya.
Andaikan nama-nama orang tersebut adalah
Anton : (0411) 324-678
Bahrul : (021) 434-6783
Charles : (022) 256-1234
Daud : (0411) 567-342
Endang : (0411) 344-235
Fahri : (021) 765-0856
Gunarsih : (0421) 123-876

Analisis:
1. Ketika program dijalankan maka akan muncul permintaan untuk
memasukkan satu nama.
2. Nama ini kemudian dicari, misalnya dengan rentatan if then else atau dengan
instruksi case()
3. Bila nama tersebut ketemu makanomor teleponnya akan ditampilkan
4. Bila nama tersebut tidak ada maka tampil “nama tersebut tidak ada”.
5.
Algoritma Buku_Telepon
{mencari nomor telepon seseorang}

Devinisi 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;
Default : notelp ← ‘nama tersebut tidak ada’;

endcase
write(notelp);
Tentu saja algoritma diatas hanya cocok untuk data dengan volume yang tidak
terlalu besar. Untuk kasus seperti ini namun dengan volume data yang besar maka
diperlukan aplikasi basis data (data base) yang berada diluar konteks buku ini.
Solusi altenatif untuk volume data sedang adalah dengan membagi data menjadi
beberapa kelompok berdasarkan huruf pertama dari nama, sehingga menjadi
kelompok A, kelompok B, kleompok C dan seterusnya. Kemudian setiap kelompok
dinyatakan dalam bentuk array (vektor) nama. Pencarian nama bisa dilakukan
dengan kombinasi instruksi case, for, dan if then. Potongan kodenya adalah sebagai
berikut :

awal ← substr(nama,I);
case (awal)
‘A’: for i=1 to n
If(nama=namaA[i])
then notelp ← telp A[i];
break
‘B’: for i=1 to n
If(nama=namaB[i])
then notelp ← telp B[i];
break

‘Z’: for i=1 to n


If(nama=namaZ[i])
then notelp ← telp Z[i];
break

default : notelp ← ’Nama tersebut tidak ada”;


endcase.

MENJUMLAHKAN DERET
Buatlah sebuah algoritma untuk menghitung jumlah deret denga N buah suku sebagai
berikut :
1 1 1 1 1 1 1
S = 1- + - + - + - +
2 4 6 8 10 12 14

Analisis :
1. Ketika dijelaskan maka akan ada permintaan untuk memasukkan jumlah suku N
2. Bila diperhatikan maka tanda berselang-seling positif dan negatif. Posisi ganjil
tandanya positif dan posisi genap tandanya negatif.
3. Nilai yang dijumlahkan adalah kelipatan dari (1/2) yang dikalikan sesuai degan
posisinya, mula2 ½ kemudian 1/(2 ¿ 2), 1/(2 ¿ 3), ...
Algoritma Jumlah_Deret
{menjumlahkan deret sebanyak N buah suku}

Devinisi Variabel
integer N, cacah, k ;
real S;

Rincian Langkah
write(“Masukkan banyak sukunya:”);
read(N);

S ← 1;
cacah ← 1;
k ← 0;

while (cacah ¿ N) do
cacah ← cacah+1;
k ← k+2;
if (cacah%2=0)
then S ← S-1/k;
else S ← S+1/k;
endif.
endwhile

Write(“Jumlah deret”,S);

MENGELOMPOKKAN DATA

Andaikan dari keyboard dimasukkan N buah data (bilangan bulat) dan kemudian
akan dikelompokkan menjadi dua macam, yaitu kelompok bilangan ganjil dan
kelompok bilangan genap, dalam bentuk jumlahan maka keluarannya dalam bentuk
sebagai berikut:
Jumlah Bilangan Ganjil “ ...
Jumlah Bilangan Genap “ ...

Analisia:
 Berapa banyak data yang harus di telebih terlebih dahulu → N
 Lakukan perulangan sebanyak N kali untuk :
a. Meminta data
b. Memeriksa data apakah termasuk bilangan ganjil atau bilangan
genap,
c. Menjumlahkan data sesuai dengan kelompoknya
 Tampilkan hasil penjumlahan

Algoritma Ganjil-Genap
{mengelompokkan data dalam bentuk penjumlahan bilangan ganjil dan genap}

Deklarasi
integer N, cacah, angka, Ganjil, Genap;

Deskripsi
write(“Masukkan banyaknya bilangan:”);
read(N);

cacah ← 1;
Ganjil ← 1;
Genap ← 1;

repeat
write(“Masukkan bilangan 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 Ganjil”, Ganjil);

MEMILIH OPERASI BERDASARKAN PILIHAN

Andaikan operasi terhadap dua bilangan dapat dipilih melalui satu “menu” sebagai
berikut :
Pilih operasi yang diinginkan

 Penjumlahan
 Pengurangan
 Perkalian
 Pembagian

Jenis operasi:

Masukkan angka 1:
Masukkan angka 2:
Hasil “...

Masih mau coba (Y/T)

Apabila jawaban untuk mencoba ulang adalah “Y”, maka nama operasi diatas
dimunculkan kembali dan proses yang sama berulang hingga jawaban penggguna
program adalah “T”.

Algoritma Ganjil-Genap
{memilih operasi berdasarkan pilihan pada Menu Program}

Deklarasi
real angka1, angka2, angka3
char pilhan, ulang

Deskripsi
ulang ← ”Y”;
while (ulang “Y” ulang “Y”) do
write(“+ Penjumlahan”);
write(“- Pengurangan”);
write(“/ Pembagian”);
write(“* Perkalian”);
write(“ ”);
write(“ Jenis Operasi”);
read(pilihan);

write(“ Masukkan angka 1”);


read(angka1);
write(“ Masukkan angka 2”);
read(angka2);
case (pilihan);
“+”: hasil ← angka1+ angka2;
“-” : hasil ← angka1- angka2;
“/” : if (angka2=0)
then write(“Tak Terhingga:”)
else hasil ← angka1/angka2;
endif
“*” : hasil ← angka1*angka2;
default : write(“pilihan operasi salah”);
hasil ← 0;

endcase
if (angka2;=0)
then write(“Hasil “,hasil);
endif.
write(“Masih mau coba (Y/T:”);
read(ulang);
endwhile.

PEMBAYARAN CICILAN

Dewasa ini banyak perusahaan binonsial yang menawarkan kredit pembelian


dalam bentuk cicilan. Jumlah yang harus dibayarkan setiap bulan oleh pelanggan
bergantung pada tiga macam faktor, yaitu :jumlah modal yang dipinjam, besarnya bunga
pinjaman dan lama periode cicilan. Sebuah algoritma akan disusun untuk mencetak
daftar. Pembayaran cicilan. Variabel yang terkait antara lain :
1. Modal: total modal yang dipinjam
2. Bunga: bunag pinjaman/tahun
3. Lama: lamanya pinjaman dalam tahun
4. Cicilan: cicilan perbulan

Besarnya cicilan dihitung berdasarkan rumus:


n
Modal∗Bunga∗( Bunga+1)
Cicilan =
(Bunga+1)n−1

Bunga dihitung per bulan sehingga , Bunga = Bunga ½ dan n adalah lamanya pinjaman
dalam bulan sehingga, n= Lama * ½

Algoritma Jumlah_Deret
{pembayaran cicilan atas pinjaman modal}

Devinisi Variabel
Real Modal, Cicilan, Bunga;
real ModalBulanan, BungaBulanan, Modal Tahunan, BungaTahunan;
integer Lama, n;

Rincian Langkah
(masukkan data utama)
write(“Masukkan Modal Pinjaman:”);
readln(Modal);
write(“Masukkan Bunga Pinjaman:”);
readln(Bunga);
write(“Masukkan Lama Pinjaman:”);
readln(Lama);

(malakukan proses perhitungan)


Bunga ← Bunga/12
n ← Lama*12
Cicilan ← (Modal*Bunga*( Modal∗Bunga∗¿ (Bunga + 1)^n /(Bunga + 1 )
^n -1;
writeln(Pembayaran Cicilan setiap Bulan RP ‘,Cicilan);

(membuat daftar pembayaran)


writeln(“Tahun”, “Bulan”, “Modal Terbayar”, “Bunga Terbayar”;
k ← 0;
for (thn+1 to Lama step 1)
Bunga Tahunan ← 0;
Modal Tahunan ← 0;
for (bln+1 to 12 step 1)
BungaBulanan ← Bunga*Modal;
ModalBulanan ← Cicilan-BungaBulanan;
BungaTahunan ← BungaTahunan-BungaBulanan;
ModalTahunan ← ModalTahunan-ModalBulanan;
Modal ← Modal-ModalBulanan;
endfor
writeln(“Akhir Tahun ke “, thn);
writeln(“Modal Terbayar “, Modal Tahunan);
writeln(“Bunga Terbayar “, Bunga Tahunan);
writeln(“Sisa Uang Modal“, Modal);
endfor.