• Tidak ada hasil yang ditemukan

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

N/A
N/A
Protected

Academic year: 2021

Membagikan "1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB"

Copied!
9
0
0

Teks penuh

(1)

Pertemuan Ke 3

Referensi:

1. Inggriani Liem. 2003. Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

2. Rinaldi Munir. 2003. Algoritma dan Pemrograman II. Bandung : Penerbit Informatika

I. Tabel/Larik/Array

Tabel/larik/array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen dalam tabel diakses langsung melalui indeksnya. Dengan demikian indeks larik harus tipe data yang mempunyai keterurutuan misalnya integer atau character. Cara mengakses elemen larik dalam notasi algoritma ditulis sbegai berikut :

T[index] adalah elemen ke index dari larik T T[1] adalah elemen ke 1 dari larik T

T[100] adalah elemen ke 100 dari larik T

T[index].x adalah elemen ke index komponen x dari larik T T[1] .x adalah elemen ke 1 komponen x dari larik T

T[100] .x adalah elemen ke 100 komponen x dari larik T

Berikut adalah gambaran tabel

1 120 a <8.6,7.8> 2 90 b <10.0,2.8> 3 34 c <4.5,6,8> 4 56 d <23.45,4.67> 5 78 e 6 1 f 7 2 g 8 3 h ... 5 ... 100 6 z

(2)

TP[b].Y = <2.8>

1. Deklarasi Tabel

Deklarasi tabel dituliskan sebagai berikut :

<nama> : array [Nmin....Nmax] of TipeElemen

Dengan Nmin adadah index minimum, Nmax index maksiumum, TipeElemen adalah tipe elemen isi tabel. Contoh “

T : array [1....100] of Integer {T adalah tabel dengan index 1 .s.d. 100 yang isinya bertipe inteher}

TPoint : array [1....100] of Point {T adalah tabel dengan index 1 .s.d. 100 yang isinya bertipe Point}

2. Pemrosesan terhadap Tabel

Pemrosesan dasar terhadap tabel antara lain : Pengisian, Pencarian, Pengurutan. Berikut beberapa contoh primitif pemrosesan terhadap tabel.

2.1. Pengisan Tabel

2.1.1. Pengisian tabel dengan skema traversal. Traversal adalah skema “menjalani” semua isi dalam tabel tanpa kecuali, dari index terkecil (pertama) sampai dengan index terbesar (terakhir). Algoritma di bawah digunakan untuk melakukan pengisian tabel dengan langkah – langkah : 1. Menerima masukan jumlah elemen N tabel yang akan di isi dengan 1 <= N <= Nmax. Nmax adalah index maksimum tabel

Kamus/Deklarasi variable

Constant Nmin : integer = 1;

Constant Nmax : integer = 100;

T : array [Nmin....Nmax] of Integer; {temperatur air}

N : integer {jumlah maksimum }

(3)

Algoritma

Repeat

Input (N)

Until (N > 0) {tidak akan selesai melakukan input N selama N <= 0}

I traversal [1...N]

input(T[I])

2.1.2. Pengisian tabel dengan menerima masukan dari alat masukan (keyboard). Jika maukan bernilai -99 maka proses pengisian tabel dianggap selesai. Proses isi tabel juga dihentikan jika semua index sudah terisi, sebanyak Nmax. Nmax adalah index maksimum tabel

Kamus/Deklarasi variable

Constant Nmin : integer = 1;

Constant Nmax : integer = 100;

T : array [Nmin....Nmax] of Integer; {temperatur air}

N : integer {jumlah maksimum }

I : integer {pencacah}

X : integer { adalah elemen yang dimasukkan}

Algoritma

I  Nmin; 

Input (X)

While (i <= Nmax) and (X <> -99) do

T[I] <= X

I I +1

(4)

If (I > Nmax) then

Output (“Tabel penuh”)

2.2. Pencarian Isi Tabel secara terurut

Misalnya diketahui suatu tabel T [1....Nmax] yang elemennya merupakan bilangan integer. Persoalan yang diberikan adalah mencari apakah integer X ada di dalam tabel. Proses pencarian dilakukan secara berurutan mulai dari T[Nmin] s.d T[IX] di mana IX adalah index di mana X berada atau sampai dengan T[Nmax], yaitu pencarian dilakukan sampai dengan elemen terakhir pada tabel. Pada pencarian ini digunakan deklarasi global sebagai berikut

Constant Nmin : integer = 1;

Constant Nmax : integer = 100;

Type TabInt : array [Nmin....Nmax] of Integer; { definisi tipe tabel integer }

T : TabInt

2.2.1. Prsedur Pencarian versi 1, tanp boolean

Procedure SeqSearch1(Input T: TabInt; N:Integer; X: Integer; Output : IX :integer)

{Memeriksa apakah X ada didalam tabel T yang berindex dari 1 s.d N. Jika X ada di dalam tabel maka IX akan berisi index terkecil tempat X berada. Jika X tidak ada didalam tabel, IX berisi 0}

Kamus/Deklarasi

(5)

Algoritma

I <= 1

While (i < N) and (T[i] <> X) do

I <= I+1

{i = N or T[i] = X}

Depend on T, i, X

T[i] = X : IX  I

TI <> X : IX  0

2.2.2. Prsedur Pencarian versi 2, dengan menggunakan boolean

Procedure SeqSearch2(Input T: TabInt; N:Integer; X: Integer; Output : IX :integer; Found : Boolean)

{Memeriksa apakah X ada didalam tabel T yang berindex dari 1 s.d N. Jika X ada di dalam tabel maka IX akan berisi index terkecil tempat X berada, Found berisi true. Jika X tidak ada didalam tabel, IX berisi 0 found berisi false}

Kamus/Deklarasi

I : integer {pencacah}

Algoritma

I  1

Found  false

While (i <= N) and (not Found) do

If T[I] == X then

Found  True

Else

I <= I+1

(6)

Found : IX  I

Not Found : IX  0

2.3. Pencarian pada Tabel yang isinya terurut menaik

Misalnya diketahui suatu tabel T [1....Nmax] yang telah terisi dan elemennya merupakan bilangan integer yang terurut menaik. Persoalan yang diberikan adalah mencari apakah integer X ada di dalam tabel. Proses pencarian dilakukan secara berurutan mulai dari T[Nmin] s.d T[IX] di mana IX adalah index di mana X berada atau sampai dengan T[Nmax], yaitu pencarian dilakukan tidak harus dilakukan sampai dengan elemen terakhir pada tabel.

Misalnya N = 6, T {2,4,5,7,8,9}, X= 5 maka pencarian dilakukan terhadap {2,4,5}, IX= 3;

Misalnya N = 10, T {2,4,5,7,8,9,20,22,45,60}, X= 35 maka pencarian dilakukan terhadap {2,4,5, 7,8,9,20,22,45}, IX= 0;

Pada pencarian ini digunakan deklarasi global sebagai berikut

Constant Nmin : integer = 1;

Constant Nmax : integer = 100;

Type TabInt : array [Nmin....Nmax] of Integer; { definisi tipe tabel integer }

T : TabInt

2.3.1. Prsedur Pencarian Tabel terurut

Procedure SeqSearchSorted(Input T: TabInt; N:Integer; X: Integer; Output : IX :integer)

{Memeriksa apakah X ada didalam tabel T yang berindex dari 1 s.d N dengan isi elemen adalah integer terurut menaik. Jika X ada di dalam tabel maka IX akan berisi index terkecil tempat X berada. Jika X tidak ada didalam tabel, IX berisi 0}

(7)

Kamus/Deklarasi

I : integer {pencacah}

Algoritma

I <= 1

While (i < N) and (T[i] < X) do

I <= I+1

{i = N or T[i] = X}

Depend on T, i, X

T[i] == X : IX  I

TI <> X : IX  0 {TI > X}

2.4. Pencarian pada Tabel yang isinya terurut menaik dengan metode Binary Search Dichotomic

Misalnya diketahui suatu tabel T [1....Nmax] yang telah terisi dan elemennya merupakan bilangan integer yang terurut menaik. Persoalan yang diberikan adalah mencari apakah integer X ada di dalam tabel. Bayangkan index tabel disusun dari atas kebawah artinya index terkecil di atas, dan index terbesar di bawah. Proses pencarian dilakukan dengan membandingkan X dengan elemen yang di tengah. Jika X lebih kecil dari yang di tengah, maka pencarian di fokuskan di belahan setengah atas, sebaliknya jika X lebih besar dari tengah maka pencarian difokuskan di belahan setengah bawah. Proses ini diluang sampai ditemukan atau tabel tidak dapat dibagi setengah – setengah lagi. Proses pencarian ini hanya bisa digunakan untuk tabel dengan elemen terurut menaik.

Perhatikan ilustrasi berikut, memeriksa apakah 12 ada di dalam tabel :

X= 10

Index Index Index

(8)

3 6 3 6 3 6 4 7 4 7 4 7 ==> Tengah 5 9 5 9 5 9 6 10 ==> Atas 6 10 ==> Atas 6 10 7 12 7 12 ==> Bawah,Tengah 7 12 8 14 ==> Tengah 8 14 8 14 9 15 9 15 9 15 ==> Bawah 10 18 ==> Bawah 10 18 10 18

2.4.1. Prsedur Pencarian Tabel terurut dengan Binary Search

Procedure BinarySearch(Input T: TabInt; N:Integer; X: Integer; Output : IX :integer; Found : Boolean)

{Memeriksa apakah X ada didalam tabel T yang berindex dari 1 s.d N. Elemen Tabel terurut menaik T[1]<= T[2] <= T[3]...., pencarian dilakuan dengan model Binary Search dichotomic.}

Kamus/Deklarasi

Atas, Bawah, Tengah : integer

{pencacah yang digunakan sebagai batas pemeriksaan}

Algoritma

Atas  1; Bawah  N

Found  false ;

IX  0;

While ( Atas <= Bawah ) and (not Found) do

(9)

Depend on T, Tengah, X

X = T[Tengah] Found  True; IX  Tengah

X > T[Tengah] : Atas  Tengah + 1

X < T[Tengah] : Bawah  Tengah - 1

{Atas > Bawah or Found}

3. Latihan

3.1. Mencari nilai minimal Ujian

Permasalahan : Nilai ujian mahasiswa Kelas Algoritma dimasukkan ke dalam tabel yang tiap elemennya merupakan komponen NIM dan Nilai. Nim bertipe Integer dan Nilai bertipe riil. Diasumsikan tabel Nilai sudah berisi. Tugas yang harus anda lakukan adalah mengeluarkan NIM dan Nilai mahasiswa dengan nilai tertinggi dan nilai terendah.

Contoh :

Jika tabel berisi {(41501,80.5), (41502,90.5), (41503,60)}, maka outputnya adalah “Nilai minimum NIM 41503, nilai – 60”, “Nilai maksimum NIM 41502, nilai 90.5”

3.2. Menghitung nilai rata – rata

Permasalahan : Diterima masukan berupa bilangan riiel lebih besar atau sama dengan nol sebanyak N kali. Setiap menerima masukan bilangan riil tersebut dimasukkan ke dalam tabel yang index maksimumnya N. Hitunglha nilai rata – ratanya.

Contoh :

jika berturut turut dimasukkan nilai riil tiga kali yatu 3.0, 1.0, 7.0, 5.0, maka outputnya adalah 5.0

Referensi

Dokumen terkait

Hipotesis tindakan yang dapat diajukan dalam penelitian ini adalah jika dalam pembelajaran menulis puisi dilakukan dengan teknik ubah catatan harian, keterampilan siswa kelas X D

A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-1-2-3-4-5-6-7-8-9-0-.-, - Buatlah chiper dengan menggunakan tabel ROT13 dari plaintext berikut : Seorang penyerang bisa