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 } i1 { 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 } ii+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