CONTOH PERMASALAHAN
NAMA: IRNA DWI RIZKI RONAHAYA POHAN
NIM: 4181111044
KELAS: MATEMATIKA DIK D 2018
MIND MAPPING
AKSES DATA LANGSUNG
Seorang sekretaris memerlukan suatu program sederhana
yang dapat membantu nya untuk mengetahui nomor
telepon seseorang dengan cepat tanpa harus membuka
buku agendanya.
Analisis:
Ketika program dijalankan maka akan muncul permintaan
untuk memasukkan satu nama.
Nama ini kemudian dicari, misalnya dengan rentetetan
if/then/else/ atau dengan instruksi case()
Bila nama tersebut sudah ditemukan maka nomor
telponnya akan ditampilkan
Bila nama tersebut tidak ada maka tampil “nama tersebut
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
untuk memasukkan jumlah suku N
Bila diperhatikan maka tanda berselang-seling
positif dan negatif. Posisi ganjil tandanya positif
dan posisi genap bertanda negatif
Nilai yang dijumlahkan adalah kelipatan dari
(1/2) yang dikalikan sesuai dengan posisinya,
mula-mula ½ kemudian 1/(2*2), 1/(2*3), ...
Contoh
Algoritma Jumlah_Deret_VI
{menjumlahkan deret bersuku N}
Definisi variabel
integer N, cacah, k;
real S;
Rincian langkah
write (“beberapa banyak suku?”);
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 berbentuk seperti berikut:
Jumlah bilangan ganjil= ....
Jumlah bilangan genap- ....
Analisis
Berapa banyak data harus diketahui terlebih dahulu N
Lakukan perulangan sebanyak N kali untuk:
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
Andaikan operasi terhadap dua bilangan
dapat dipilih melalui satu “menu” sebagai
berikut:
Pilih operasi yang diinginkan:
+ penjumlahan
-Pengurangan
/ pembagian
*Perkalian
jenis operasi:_
Masukkan angka 1:_
Masukkan angka 2:_
Hasil=...
Masih mau coba (Y/T)?
Contoh
Algoritma Menu_Program
{memilih operasi berdasarkan pilihan pada menu program}
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);
write (“masukkan angka 1:”);
read (angka 1);
write (masukkan angka 2:”);
read (angka 2);
case (pilihan)
‘+’ :hasil angka 1 + angka 2;
‘-’ : hasil angka 1 – angka 2;
‘/’ : if (angka2=0)
then write (“hasil tak berhingga”);
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.
MENGHITUNG NILAI RATA-RATA
DAN VARIANS
Andaikan ada N bilangan biasa yang
dimasukan lewat keyboard, maka nilai rata-
rata adalah jumlahbilangan tersebut dbagi N.
Dengan kata lain:
Rata-rata =(x1 + x2 +....+ xn)/N=Σx/N
Varians adalah nilai yang menunjukkan
besarnya jumlah perbedaan dari setiap
bilangan terhadap nilai rata-rata, atau:
Varians = (Σ(x-rata)^2)/(N-1) = (Σx^2-
(Σx)^2/N) / (N-1)
Analisis
Tetapkan N
Lakukan perulangan mulai dari i=1 s/d N
a. Masukkan x
b. Jumlahkan x, S=S+x
c. Jumlahkan x^2, K=K+x^2
Hitung rata = S/N
Hitung varians = (K-S^2/N)/(N-1)
Contoh
Algoritma Nilai_Rata_dan_Varians
{menghitung nilai rata dan varians dari N buah bilangan}
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
...
...
Total margin laba=Rp. ....
Penamaan variabel adalah sebagai berikut
1. Kode buku : kode
2. Jumlah stok: stok
3. Klasifikasi buku:klas
4. Jumlah mahasiswa: jummah
5. Status buku: status
6. Harga beli: harga
7. Margin laba: laba
8. Total margin laba: total
9. Jumlah pesanan: pesanan
10. Ragam buku: ragam
11. Jumlah buku: jumbuk
Contoh algoritmanya
Algoritma Toko_Buku
{memperkirakan pesanan buku pada sebuah toko buku kampus}
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
Bunga: bunga pinjaman/tahun
Lama: lamanya pinjaman dalam tahun
cicilan: cicilan perbulan
Besarnya cicilan dihitung berdasarkan rumus:
Cicilan=modal*bunga*(bunga+1)^n / bunga+1^n-1
Bunga dihitung perbulan sehingga
bunga=bunga/12, dan n adalah lamanya
pinjaman dalam bulan sehingga n=lama*12.
Contoh algoritmanya
Algoritma cicilan
{pembayaran cicilan atas pinjaman modal}
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
Buatlah algoritma yang membaca data 20 orang
anggota tim, kemudian menghitung nilai masing-
masing pemain. Buatlah daftar penilitian pemain ini
dan kemudian cantumkan nama pemain yang
memiliki nilai tertinggi di akhir daftar.
Algoritmanya
Algoritma Nilai_Pemain
{menghitung nilai setoap anggota tim hockey}
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);
{hitung perubahan volume}
perubahan (vol_thn_ini-Vol_thn_lalu)/vol_thn_lalu;
if (perubahan>0,5)
then writeln(idx, nama_ikan, perubahan*100,”++”);
else if (-1*perubahan>0,3)
then writeln(idx,nama_ikan,perubahan*100,”!!”);
else writeln(idx, nama_ikan, perubahan*100);
endif;
endif;
idx idx + 1;
endwhile;