Anda di halaman 1dari 30

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;

Anda mungkin juga menyukai