1,2,3,...N - Telkom University

advertisement
KUG1A3 Algoritma& Pemrograman
Burhanuddin D
Prodi S1-Sistem Komputer, F Teknik Elektro
Universitas Telkom
Presentasi 6
Skema Pemrosesan Sekuensial
Definisi [1]
• Pemrosesan “sekumpulan” informasi sejenis
satu-persatu
• Hasil dari suatu pengolahan akan digunakan
untuk pengolahan berikutnya.
• Pemrosesan dilakukan mulai dari awal atau
akhir dari kumpulan informasi
• Kumpulan informasi memiliki elemen yang
terurut, artinya ada elemen sebelum (
predesessor ) dan elemen sesudah ( suksesor)..
KUG1A3 Algoritma & Pemrograman
2
Membuat Kue Lapis
Kondisi Awal
Hasil :
Wadah
Pemanas
Adonan
Perhatikan ...
• Proses untuk tiap tahap sama
• Hasil pada suatu tahap, tergantung dari
hasil tahap sebelumnya
– Kalau hasil pertama 1 lapis, maka hasil
kedua 2 lapis
– Kalau hasi ketiga 3 lapis, maka pada hasil
proses keempat ada 4 lapis
KUG1A3 Algoritma & Pemrograman
4
Contoh Lain : Game
Aturan baku :
 Mainkan sampai menang atau kalah
 Langkah berikut tergantung dari langkah
sebelumnya.
KUG1A3 Algoritma & Pemrograman
5
Akses
Kumpulan informasi itu dapat diakses
dengan istilah berikut :
– Call_First_Elmt: prosedur yang akan
menghasilkan Elemen Pertama
– Call_Next_Elmt : prosedur yang akan
menghasilkan elemen berikutnya
– Current_Elmt : Elemen yang siap diproses
– EOP : Tanda akhir proses
KUG1A3 Algoritma & Pemrograman
6
Contoh [1]
Suatu deret bilangan integer [1,2,3,...N]
dengan N=100
• Setiap elemen bertipe integer
• Call_First_Elmt menghasilkan Current_Elmt=1
• Jika Current_Elmt=2, maka Call_Next_Elmt
menghasilkan Current_Elmt=3.
• EOP akan berharga true jika
Current_Elmt=100
KUG1A3 Algoritma & Pemrograman
7
Contoh [2]
type Mhs : < NIM : string, Kode:string,
Nilai : character>
NIM yang diakui tidak boleh bernilai '999'.  Mark !
Diketahui sekumpulan data bertipe Mhs :
<'111','TE12','A'>,<'112','TE12','B'>,
<'113','TE12','C'>,<'114','TE12','A'>
• Call_First_Elmt membuat Current_Elmt =
<'111','TE12','A'>
• Jika Current_Elmt data diatas, maka Call_Next_Elmt
menghasilkan <'112','TE12','B'>.
•
EOP berharga true jika Current_Elmt=<'999','',''>
KUG1A3 Algoritma & Pemrograman
8
Procedure Terdefinisi
• Inisialisasi : persiapan sebelum proses dilakukan
• Call_First_Elmt : menghasilkan elemen pertama
• Proses_Current_Elmt : mengolah Current_Elmt
• Call_Next_Elmt : menghasilkan elemen berikutnya
• Terminasi : tindakan setelah semua proses selesai
• Proses_First_Elmt : mengolah elemen pertama
• Proses_Kasus_Kosong : dilakukan jika terjadi kasus
kosong ( tidak ada data )
• EOP : berharga true jika Current_Elmt bernilai mark
( unt model dg mark ) atau akhir elemn (tanpa mark)
KUG1A3 Algoritma & Pemrograman
9
Skema Pemrosesan
{Tanpa penanganan kasus kosong secara khusus}
Skema :
Inisialisasi
Call_First_Elmt
While not EOP do
Proses_Current_Elmt
Call_Next_Elmt
{EOP}
Terminasi
KUG1A3 Algoritma & Pemrograman
10
Skema Pemrosesan
{Dengan penanganan kasus kosong}
Skema :
Call_First_Elmt
if EOP then
Proses_Kasus_Kosong
Else
Inisialisasi
repeat
Proses_Current_Elmt
Next_Elmt
Until EOP
Terminasi
KUG1A3 Algoritma & Pemrograman
11
Studi Kasus 1 : Jumlah 1 s/d N
Buatlah algoritma yang membaca sebuah
bilangan bulat positif N seagai pencacah,
menuliskan 1,2,3, ...N dan menjumlahkan
1+2+3+...+N serta menuliskan hasil
penjumlahannya.




Inisialisasi : membaca pencacah N
Proses1 : menuliskan 1,2,3, ...N
Proses2: menjumlahkan 1+2+3+...+N
Terminasi : menuliskan hasil
penjumlahannya.
KUG1A3 Algoritma & Pemrograman
12
Studi Kasus 1 (lanjutan)
Pendetailan
 Inisialisasi :
 membaca pencacah N
 Memberikan nilai awal variabel lain
 Menetapkan skema pengulangan
 Memakai while, for atau …?
 Menetapkan logika penghentian loop
 Menetapkan variabel pengulangan dan
nilai EOP
KUG1A3 Algoritma & Pemrograman
13
Studi Kasus 1 (lanjutan)
Pendetailan
 Proses1 : menuliskan 1,2,3, ...N
 Menetapkan variabel penulisan, misal I
 Menuliskan  output
 Output (i)
 Proses2: menjumlahkan 1+2+3+...+N
 Menetapkan variabel penjumlahan, misal Sum
 Menjumlah : var_jml  var_jml + var_tulis
 Sum  Sum + i
KUG1A3 Algoritma & Pemrograman
14
Studi Kasus 1 (lanjutan )
Tambahan :
 Inisialisasi : inisialisasi variabel
 Sum  0
 Call_First_Elmt : mulai dr 1
 i  1
 Call_Next_Elmt : nilai bertambah 1
 i  i + 1
 EOP : penghitung (counter ) = N,
(tergantung mekanisme pengulangan )
 memanfaatkan varibel penulisan
 i = N
KUG1A3 Algoritma & Pemrograman
15
Penulisan Algortima 1
Program SumBil1 { Tanpa penanganan kasus kosong}
Kamus
N : integer
i : integer
Sum : integer
{ Cacah bilangan }
{ Bilangan yg dihitung }
{ Total bilangan }
Algoritma
Input(N) ; Sum  0
i  1
while (i  N ) do
output (i)
Sum  Sum + i
i  i + 1
output ( Sum )
{ inisialisasi }
{ Call_First_Element}
{
{
{
{
Proses Penulisan }
Proses Penjumlahan }
Call_Next_Elmt}
Terminasi }
KUG1A3 Algoritma & Pemrograman
16
Penulisan Algoritma 2
Program SumBil2 { Dengan penanganan kasus kosong }
Kamus
N,i : integer { Cacah dan bilangan yg dihitung}
Sum : integer
{ Total bilangan }
Algoritma
Input(N) ; Sum  0
{ inisialisasi }
i1
{ Call_First_Element }
if N<1 then
output (’ Kasus kosong’) { Penanganan Kasus ksng}
else
repeat
output( i )
{ Proses Penulisan bil}
Sum  Sum + i { Proses Penjumlahan }
ii+1
{ Call_Next_Elmt}
until ( i > N )
output ( Sum )
{ Terminasi }
KUG1A3 Algoritma & Pemrograman
17
Hubungan Berulang
• Skema pengulangan untuk persoalan deret yang
rumusnya dapat dinyatakan dalam suatu
hubungan.
• Contoh :
Hitung S= 1 - 1/2 + 1/3 -1/4+ ... +1/999-1/1000
 Carilah rumus suku ke-i !
 Tanda berubah +, -, +, - dan seterusnya
Tanda = (-1)^(i+1)
 Pembagi sama dengan indeks suku : 1 / I
 Didapat : Suku = Tanda / i
Si = ( (-1)^(i+1) ) / i
KUG1A3 Algoritma & Pemrograman
18
Penulisan Algoritma Suku1
Program Suku1 { Tanpa penanganan kasus kosong }
Kamus
N,i : integer
{ Cacah dan indeks suku}
Sum : real
{ Total suku }
Algoritma
N  1000 ; Sum  0
{ inisialisasi }
i  1
{ Call_First_Element }
repeat
Sum  Sum + ((-1)^(i+1))/i { Proses Jumlah }
i  i + 1
{ Call_Next_Elmt}
until ( i > N )
output ( Sum )
{ Terminasi }
KUG1A3 Algoritma & Pemrograman
19
Hubungan Berulang (2)
Hitung :
S= 1 - 1/2 + 1/3 -1/4+ ... +1/999-1/1000
• Cara Kedua
Tanda berubah +, -, +, - dan seterusnya
Tanda menjadi (-Tanda) unt suku berikutnya
Tanda pertama adalah 1.
Pembagi sama dengan indeks suku : 1 / I
Didapat : Suku = Tanda / i
Si = Tanda / i
KUG1A3 Algoritma & Pemrograman
20
Penulisan Algoritma Suku2
Program Suku2 { Tanpa penanganan kasus kosong }
Kamus
N,i : integer
{ Cacah dan indeks suku}
Sum : real
{ Total suku }
Tanda :integer[-1,1]
Algoritma
N  1000 ; Sum  0
{ inisialisasi }
Tanda  1;
i  1
{ Call_First_Element }
while i  N do
Sum  Sum + Tanda / i { Proses Penjumlahan }
i  i + 1
{ Call_Next_Elmt}
Tanda  - Tanda
{ Call_Next_Elmt}
output ( Sum )
{ Terminasi }
KUG1A3 Algoritma & Pemrograman
21
Contoh (3) : Faktorial
Definisi :
0!
1!
2!
3!
4!
:
n!
=
=
=
=
=
1
1
2 x 1! = 2 x 1 = 2
3 x 2! = 3 x 2 = 6
4 x 3! = 4 x 6 = 24
= n x (n-1)! = n x (n-1)x .. x 2 x 1
KUG1A3 Algoritma & Pemrograman
22
Penulisan Algoritma Faktorial
Program Faktorial
Kamus
N : integer  0 { Bilangan yg dicari nilai faktorialnya }
i : integer
 1 { Indeks suku}
F : integer
{ Nilai faktorial }
Algoritma
input (N) ; F  1
i  1
while i  N do
F  F * i
i  i + 1
output ( F )
{ inisialisasi }
{ Call_First_Element }
{ Proses Perhitungan }
{ Call_Next_Elmt}
{ Terminasi }
KUG1A3 Algoritma & Pemrograman
23
Latihan
1. Buat algortima untuk menampilkan
deret : 1 2/3 3/5 4/7...., dan
tampilkan juga jumlah N suku
pertama
2. Buat algortima untuk menampilkan
deret : +1 *2 -3 div 4 + 5 *6 7 div 8 ...., dan tampilkan juga
jumlah N suku pertama
KUG1A3 Algoritma & Pemrograman
24
Download