DECISION SUPPORT SYSTEM [MKB3493] -...

Post on 10-Mar-2019

251 views 1 download

Transcript of DECISION SUPPORT SYSTEM [MKB3493] -...

Pengulangan

ALGORITMA DAN PEMROGRAMAN [IS6110102]

Koordinator Mata Kuliah :Fathushahib, S.Kom., M.KomTim Dosen: Yudha Saintika, S.T., M.T.I

Sub-Capaian Pembelajaran MK

“Mahasiswa mampu menerapkan algoritmapengulangan ke dalam pseudocode dan

program.”

Sub-Capaian Pembelajaran MK

We Are Here !!!

Mid Test

Agenda

•Pendahuluan

•Struktur Pengulangan

•Contoh kasus konstruksi FOR

•Contoh kasus konstruksi WHILE

•Contoh kasus konstruksi REPEAT

•FOR VS WHILE

•WHILE VS REPEAT

•QUIZ

Pendahuluan

•Pengulangan digunakan untuk menjalankan satuatau beberapa pernyataan/aksi/instruksi secaraberulang kali.

•Dengan pengulangan, kita hanya perlu menuliskanpernyataan tersebut satu kali saja, tapi akandilakukan oleh program sebanyak yangdiperintahkan

Struktur Pengulangan

Struktur instruksi perulangan pada dasarnya terdiri atas:

• Kondisi perulangan; suatu kondisi yang harusdipenuhi agar perulangan dapat terjadi.

• Badan (body) perulangan; deretan instruksi yangakan diulang-ulang pelaksanaannya.

• Pencacah (counter) perulangan; suatu variabel yangnilainya harus berubah agar perulangan dapatterjadi dan pada akhirnya membatasi jumlahperulangan yang dapat dilaksanakan

Tiga Konstruksi Dasar – Jenis Pengulangan

1. For – to

2. While – do

3. Repeat - until

Konstruksi For

•Konstruksi FOR digunakan untuk melakukanpengulangan sejumlah kali yang telahdispesifikasikan sebelumnya. Jumlah pengulangandiketahui atau dapat ditentukan sebelum ekseskusiprogram.

•Untuk mencacah beberapa kali pengulangandilakukan, kita memerlukan sebuah peubahpencacah (counter). Peubah ini nilainya selalubertambah satu secara otomatis

Pengulangan: FOR

Bentuk umum For:

For <nilai awal> to <nilai akhir>

do

…………….

instruksi-instruksi

……………..

End for

Instruksi

For I = 1 to 4

Next I

Contoh Kasus

“Tinjau kembali barisan yang diberikan padapertemuan sebelumnya. Misalkan kita ingin

mencetak barisan 1,2, …, N di layar, dengan N adalah nilai yang sudah dispesifikasikansebelumnya (dibaca terlebih dahulu)”

Contoh Kasus

PROGRAM CetakBarisan

{Mencetak 1,2,…,N; Nilai N ditentukan terlebihdahulu}

DEKLARASI

i: integer

N: integer

ALGORITMA

read(N)

for i1 to N do

write(i)

end for

Contoh Kasus (2)

Kita ingin menghitung nilai rata-rata dari N buahdata bilangan bulat yang dibaca dari papan ketik(asumsikan N>0). Nilai rata-rata adalah jumlah

seluruh data dibagi dengan banyaknya data. Misalkan jika N=5 dan data bilangan yang dibacaberturut-turut adalah 12, 10, 6, 2 , 4, maka nilai

rata-ratanya adalah (12 + 10 + 6 + 2 + 4)/5 = 34/5 = 6.8

Contoh Kasus (2)

PROGRAM HitungRataRata

{Menghitung rata-rata N buah data bilangan bulat yang dibaca dari papan ketik. Asumsikan N>0}

DEKLARASI

N,x,i,sum:integer

rerata: real

ALGORITMA

read(N)

sum0

for i1 to N do

read(x)

sumsum+x

end for

reratasum/N

write(rerata)

Struktur For Menurun

Adakalanya kita melakukan pengulangan dengan cacah yang menurun, yaitudari nilai cacah yang besar ke nilai cacah yang kecil. Untuk memfasilitasi haltersebut, maka kita mendefinisikan struktur FOR menurun.

For pencacah <nilai_akhir> downto <nilai_awal> do

aksi

End for

Contoh Kasus

Sebuah roket diluncurkan dengan hitungan mundur(countdown), mulai dari 100, 99, 98, … , 1, 0.

Buatlah algoritma dalam bentuk pseudo-code nya.

Pembahasan

PROGRAM PeluncuranRoket

{Hitung mundur peluncuran roket}

DEKLARASI

i: integer

ALGORITMA

for i100 downto 0 do

write(i)

end for

write(‘Go!’)

Contoh Soal 3

Tulislah algoritma untuk menuliskan teks lagu anak ayam turun N dengan N adalah jumlah anak ayam semula (nilai N positif dan dibaca

terlebih dahulu)

Contoh: N=5, maka lirik lagu anak ayam turun 5 tercetak seperti barisdi bawah ini:

Anak ayam turun 5, mati satu tinggal 4

Anak ayam turun 4, mati satu tinggal 3

Anak ayam turun 3, mati satu tinggal 2

Anak ayam turun 2, mati satu tinggal 1

Anak ayam turun 1, mati satu tinggal induknya

Pembahasan

PROGRAM LaguAnakAyam

{Mencetak lagu “anak ayam”}

DEKLARASI

N,i: integer

ALGORITMA

read(N)

write(‘Anak Ayam Turun’, N)

for iN downto 2 do

write(‘Anak ayam turun’, i, ‘mati satu tinggal’, i-1)

end for

write(‘’Anak ayam turun 1, mati satu tinggal induknya.’)

Konstruksi WHILE

Bentuk umum konstruksi WHILE adalah:

while kondisi do

aksi

end while

Penjelasan:

Sebelum memasuki badan pengulangan, kondisi diperiksa terlebihdahulu apakah masih memenuhi (benar) atau sudah tidak memenhui(salah). Aksi dikerjakan berulangkali selama kondisi masih benar (true).Jika kondisi salah (false) maka badan pengulangan tidak akan dimasuki,yang berarti pengulangan selesai.

Contoh Kasus Cetak Deret

PROGRAM CetakBarisan

{Mencetak 1,2,…,N; Nilai N ditentukan terlebihdahulu}

DEKLARASI

i: integer

N: integer

ALGORITMA

read(N)

i1

while i≤N do

write(i)

ii+1

end while

Contoh Kasus Mencari Rata-Rata

PROGRAM HitungRataRata

{Menghitung rata-rata N buah data bilangan bulat yang dibaca dari papan

ketik. Asumsikan N>0}

DEKLARASI

N,x,i,sum:integer

rerata: real

ALGORITMA

read(N)

sum0

i1

while i≤N do

read(x)

sumsum+x

i=i+1

end while

reratasum/N

write(rerata)

Contoh Kasus Peluncuran Roket

PROGRAM PeluncuranRoket

{Hitung mundur peluncuran roket}

DEKLARASI

i: integer

ALGORITMA

i100

while i≥0 do

write(i)

ii-1

end while

write(‘Go!’)

Kapan Sebaiknya Menggunakan WHILE?

• Sekilas antara FOR dan WHILE sama saja kegunaannya.Namun, WHILEmemiliki keunggulan yang tidak dimiliki oleh FOR.

• Pada kasus-kasus dimana jumlah pengulangan diketahui di awalprogram, WHILE dapat digunakan sebaik penggunaan FOR.

• Namun, untuk proses yang jumlah pengulangannya tidak dapatditentukan di awal, hanya struktur WHILE yang dapat kita gunakan,sebab kondisi pengulangan diperiksa di awal pengulangan. Jadimeskipun kita tidak mengetahui kapan persisnya WHILE ini berhenti,tetapi kita menjamin bahwa jika kondisi bernilai salah, pastipengulangan akan berhenti.

Contoh

• Misalkan jika nilai-nilai ujian yang diinputkan adalah80, 50, 75, -1Maka rata-rata nilai ujian adalah (80 + 50 +75) / 3 = 68,33

• Jika nilai ujian yang diinputkan adalah80,-1Maka hanya ada satu nilai ujian yaitu 80, sehingga rata-rata nilai ujianadalah 80/1

• Jika data yang diinputkan ternyata -1,Maka, tidak ada nilai-nilai ujian yang dimasukkan sehingga rata-ratanya tidak dapat dihitung.

Untuk masalah ini, jelas kita tidak dapat menggunakan FOR karena jumlahpengulangan tidak diketahui. WHILE dapat digunakan untuk pengulangansemacam ini karena proses pembacaan data dilakukan selagi data yangdibaca tidak sama dengan -1.

ContohPROGRAM HitungRerata

{Menghitung rata-rata ujian siswa yang dibaca dari inputan user selama data yang

dibaca tidak sama dengan -1}

DEKLARASI

i,x : integer

sum,rerata : real

ALGORITMA

sum0

i0

read(x)

while x≠-1 do

ii+1

sumsum+x

read(x)

end while

if i≠0 then

reratasum/i

write(rerata)

else

write(‘tidak ada nilai ujian yang dimasukkan’)

end if

Konstruksi REPEAT

Bentuk umum konstruksi REPEAT adalah:

repeat

aksi

until kondisi

Penjelasan:

Konstruksi REPEAT mendasarkan pengulangan pada kondisi yangbernilai Boolean. Pemeriksaan kondisi dilakukan pada akhir setiappengulangan. Aksi dikerjakan berulang-ulang sampai kondisi terpenuhi(bernilai true).

Contoh Kasus Cetak Deret

PROGRAM CetakBarisan

{Mencetak 1,2,…,N; Nilai N ditentukan terlebihdahulu}

DEKLARASI

i: integer

N: integer

ALGORITMA

read(N)

i1

repeat

write(i)

ii+1

until i>N

Contoh Kasus Mencari Rata-Rata

PROGRAM HitungRataRata

{Menghitung rata-rata N buah data bilangan bulat yang dibaca dari papan

ketik. Asumsikan N>0}

DEKLARASI

N,x,i,sum:integer

rerata: real

ALGORITMA

read(N)

sum0

i1

repeat

read(x)

sumsum+x

i=i+1

until i>N

reratasum/N

write(rerata)

Contoh Kasus Peluncuran Roket

PROGRAM PeluncuranRoket

{Hitung mundur peluncuran roket}

DEKLARASI

i: integer

ALGORITMA

i100

repeat

write(i)

ii-1

until i<0

write(‘Go!’)

WHILE atau REPEAT

• Pada contoh-contoh sebelumnya memperlihatkan bahwa konstruksi WHILE danREPEAT ekivalen. Kita dapat menggunakan WHILE maupun REPEAT. Keduanyabenar untuk persoalan tertentu.

• Tetapi, pada beberapa persoalan, pemilihan WHILE atau REPEAT bergantungpada natural dari persoalan itu sendiri.

• Untuk mengetahui struktur mana yang lebih tepat, kita harus mengetahuiperbedaan mendasar di antara keduanya. Perbedaannya adalah padakonstruksi REPEAT, kondisi pengulangan diperiksa pada akhir dulu, barulahpengetesan kondisi dilakukan. Konsekuensinya, badan pengulangandilaksanakan paling sedikit satu kali.

• Sebaliknya pada konstruksi WHILE, kondisi pengulangan diperiksa di awalpengulangan. Konsekuensinya badan pengulangan mungkin tidak akan pernahdilaksanakan bila kondisi pengulangan pertama kali bernilai false.

WHILE atau REPEAT

• Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulupemeriksaan kondisi objek sebelum objek tersebut dimanipulasi

• Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasiobjek, baru memeriksa kondisi objek tersebut.

Contoh penggunaan WHILE benar, tetapi REPEAT salah:

Diinputkan sejumlah nilai bilangan bulat (x) dari papan ketik, namun banyaknyadata tidak diketahui. Tanda akhir pembacaan data adalah bila nilai x yang dibacaadalah -1. Anda diminta membuat algoritma yang menghitung jumlah seluruh nilaipecahannya (1/x). Contoh jika nilai x yang dibaca berturut-turut adalah 3,5,8, dan -1, maka jumlah seluruh nilai pecahannya adalah: 1/3 + 1/5 + 1/8 = 0.65833

Pembahasan WHILE benar

PROGRAM PenjumlahanDeretPecahan

{program untuk menghitung penjumlahan deret pecahan}

DEKLARASI

x,S: integer

ALGORITMA

S0

read(x)

while x≠-1 do

SS+1/x

read(x)

end while

Pembahasan REPEAT salah

PROGRAM PenjumlahanDeretPecahan

{Hitung mundur peluncuran roket}

DEKLARASI

x,S: integer

ALGORITMA

S0

read(x)

repeat

SS+1/x

read(x)

until x=-1

write(S)

Contoh Latihan Pengulangan

Tuliskan algoritma dalam bentuk pseudo-code untukmencetak gambar segitiga bintang sebanyak N baris, setiap

baris ke-i berisi i buah bintang. Nilai N dibaca dari papanketik!

Contoh masukan: N = 5Keluaran:

***************

Penyelesaian

*

**

***

****

*****

Baris ke-1 terdiri dari 1 bintang, baris ke-2 dua bintang, baris ke-3 tigabintang, dan seterusnya. Secara umum, baris ke-i terdiri dari i bintang.

Pseudo-Code Bintang

PROGRAM CetakSegitigaBintang

{Program untuk mencetak segitiga bintang dengantinggi segitiga = N}

DEKLARASI

N,i,j : integer

ALGORITMA

read(N)

for i1 to N do

for j1 to i do

write(‘*’)

end for

end for

Kisi-Kisi UTS

1. Soal UTS terdiri dari Essay berjumlah 6 Nomor.

2. Waktu Pengerjaan 90 menit.

3. Sifat Ujian Close Book, No Electronice Device

4. Materi UTS dari pertemuan ke-1 hingga pertemuan ke-6 (Pengulangan)

5. Soal Essay berupa konsep dasar algoritma, pembuatan pseudo-code(runtunan-pengulangan), pembuatan tipe bentukan, dan pembuatanflowchart.

6. Pengerjaan soal yang berupa pseudo-code harus memuat komponen-komponen PROGRAM, DEKLARASI, dan ALGORITMA.

7. Pengerjaan soal yang berupa tipe bentukan hanya memuat DEKLARASIdan Cara mengacu masing-masing field.

Baca seluruh materi yang ada pada buku Rinaldi Munir beserta soal-soallatihannya.

QUIZ 1 ALPROCLOSE BOOK, NO ELECTRONIC DEVICES, PERHATIKAN JARAK TEMPAT DUDUK

SOAL:

1. Definisikan sebuah tipe terstruktur untuk menyatakan data-data nilai mata kuliah yangdiambil setiap mahasiswa. Data-data yang disimpan di dalam struktur rekaman (record)adalah sebagai berikut:

a) NIM (Nomor Induk Mahasiswa)

b) NamaMhs (nama mahasiwa)

c) Mata kuliah yang diambil mahasiswa tersebut, yang terdiri atas:

- Kode mata kuliah

- Nama mata kuliah

- Nilai mata kuliah

2. Indeks nilai mahasiswa ditentukan berdasarkan nilai ujian yang diraihnya. Ketentuanpemberian nilai indeks adalah sebagai berikut:

Jika nilai ujian ≥ 80, maka nilai = A

Jika 70 ≤ nilai ujian < 80, maka indeks nilai = B

Jika 55 ≤ nilai ujian < 70, maka indeks nilai = C

Jika 40 ≤ nilai ujian < 55, maka indeks nilai = D

Jika nilai ujian < 40, maka indeks nilai = E

Buatlah algoritma (pseudo-code) yang membaca nama mahasiswa dan nilaiujiannya, lalu menentukan indeks nilainya, kemudian mencetak nama mahasiswa,nilai ujian, dan indeksnya!