2012/10/23
TW/KU1071/Sem. I 2012/2013
Tujuan Perkuliahan
Mahasiswa memahami makna dan
kegunaan array (tabel)
Mahasiswa dapat menggunakan notasi
pendefinisian dan pengacuan array
dengan benar hingga proses pencarian
terhadap elemen array
Mahasiswa dapat membuat program
dengan menggunakan array
2012/10/23
TW/KU1071/Sem. I 2012/2013
TW/KU1071/Sem. I 2012/2013
NMin
NMin+1
NMin+2
NMin+3
Array
Indeks Array,
dengan tipe ordinal
2012/10/23
NMax-2
NMax-1
NMax
TW/KU1071/Sem. I 2012/2013
Contoh Penggunaan
KAMUS
TabKata : array [1..100] of string
TabJumlahHari : array [1..12] of integer
type Point : <x : integer, y : integer >
type Indeks : integer [1..10]
TabTitikSurvey : array [Indeks] of Point
TabFREK : array ['A'..'Z'] of integer
Domain :
Domain array sesuai dengan pendefinisian indeks
Domain isi array sesuai dengan jenis array
Konstanta :
Konstanta untuk seluruh array tidak terdefinisi
Konstanta hanya terdefinisi jika indeks dari array terdefinisi
2012/10/23
TW/KU1071/Sem. I 2012/2013
Kasus-1: Kata
Kata pada dasarnya dapat dipandang sebagai sebuah array of
character,
Contoh :
Kata = BANDUNG
Kata4: D Kata1: B
Program Kata
{ Mengisi Kata yang berbentuk Array of Character, sehingga dapat dilakukan akses
terhadap karakter-karakter pembentuk kata }
Definisi container:
Sebuah kata maksimum terdiri dari 30 karakter
KAMUS
Kata: array [1..30] of character
Indeks efektif: Panjang kata sebenarnya
Panjang: integer { panjang kata }
procedure IsiKata (output K: array[1..30] of character, output P: integer) { mengisi K }
HurufKe : integer
ALGORITMA
IsiKata(Kata,Panjang)
{ Contoh pemanfaatan setelah Tabel Kata terdefinisi isinya }
iterate
{minta masukan HurufKe, hingga masukan dalam range 1..Panjang}
input (HurufKe)
Validasi input, agar di dalam
stop 1HurufKePanjang
batas ukuran kata
2012/10/23 output(Masukan salah)
TW/KU1071/Sem. I 2012/2013
6
output (KataHurufKe) {menampilkan huruf ke-(HurufKe) dari kata}
TW/KU1071/Sem. I 2012/2013
PEMROSESAN SEKUENSIAL
PADA TABEL
2012/10/23
TW/KU1071/Sem. I 2012/2013
2012/10/23
TW/KU1071/Sem. I 2012/2013
TW/KU1071/Sem. I 2012/2013
10
TW/KU1071/Sem. I 2012/2013
11
TW/KU1071/Sem. I 2012/2013
12
TW/KU1071/Sem. I 2012/2013
13
Deskripsi Persoalan
Program memiliki sejumlah pilihan kata, yang akan ditebak oleh
pengguna, dengan panjang berbeda. Program memilih satu kata
berdasarkan fungsi random (prosedur PilihKata).
Pilihan kata disimpan dalam sebuah array yang setiap elemen berisi:
Kata (array of character) yang akan ditebak
Panjang kata
Kategori
TW/KU1071/Sem. I 2012/2013
14
Program TebakKata_Arr
{ input: tebakan kata huruf per huruf
output: status tebakan T/F, posisi huruf jika benar, gambar hangman jika salah,
skor jika kata berhasil ditebak }
KAMUS
constant NMin : integer = 1 { NMin : batas bawah indeks}
constant NMax : integer = 100 { NMax : batas atas indeks}
constant PjgMax : integer = 30 { panjang kata maksimum }
type TKata : array[1..PjgMax] of character
type ElTabKata : < Kata : TKata, Panjang : integer[1..PjgMax], Kategori : string >
TabKata : array[NMin..NMax] of ElTabKata
N : integer { Jumlah elemen terdefinisi pada TabKata }
Kata : TKata { kata yang akan ditebak }
iKata : integer [NMin..NMax] {indeks tabel TabKata yang dipilih}
Panjang : integer[1..PjgMax]; nBenar, nSalah : integer
{ deklarasi prosedur PilihKata, TebakHuruf, dan PrintKata, lihat di blok sub program }
function HitungSkor(nS : integer) integer {menghitung skor}
ALGORITMA
{ Inisialisasi pengisian TabKata, ditinggalkan sebagai latihan }
PilihKata(Kata,Panjang,iKata) { isi Kata secara random dari TabKata }
nBenar 0; nSalah 0
while (nBenar<Panjang) and (nSalah<8) do
TebakHuruf(Panjang,Kata,nBenar,nSalah)
{nBenar=Panjang or nSalah=8}
if (nBenar=Panjang) then {kata berhasil ditebak}
output(HitungSkor(nSalah))
else {kata tidak berhasil ditebak}
PrintKata(TabKataiKata)
2012/10/23
TW/KU1071/Sem. I 2012/2013
15
2012/10/23
TW/KU1071/Sem. I 2012/2013
16
TW/KU1071/Sem. I 2012/2013
17
2012/10/23
TW/KU1071/Sem. I 2012/2013
18
2012/10/23
TW/KU1071/Sem. I 2012/2013
19
Array Dinamik
Merupakan array yang ukurannya baru
ditentukan pada saat runtime, menggunakan
perintah alokasi ukuran dapat disesuaikan
berdasarkan kebutuhan.
2012/10/23
TW/KU1071/Sem. I 2012/2013
20
Array Statik
Notasi Algoritmik
Bahasa C
{ Deklarasi Variabel }
nm_array : array [0..nmax-1]
of type-array
/* Deklarasi Variabel */
type-array nm_array[nmax];
Catatan: indeks array selalu
dimulai dari 0
Contoh:
TabInt : array [0..99]
of integer
TabInti 1
X TabInt10
Contoh:
int TabInt[100];
10/23/2012
TabInt[i] = 1;
X = TabInt[10];
WDS,FNA,AP,MLK/IF2030/Sem. 1
2012-2013
21
Array Dinamik
10/23/2012
22
3. Inisialisasi nilai
*(TabInt + i) = 9; /* pny. efek sama dgn: */
TabInt[i] = 9;
WDS,FNA,AP,MLK/IF2030/Sem. 1
2012-2013
23
10/23/2012
FN/IF2030/Sem. 1 2012-2013
24
10/23/2012
FN/IF2030/Sem. 1 2012-2013
25
Latihan
1. Buatlah sebuah fungsi HitungRataTabel yang menghitung nilai
rata-rata dari seluruh elemen array TabInt (array dengan elemen
bertipe integer, merupakan parameter fungsi) yang elemennya
berjumlah N (juga merupakan parameter fungsi).
2. Buatlah sebuah prosedur KemunculanTerakhir yang mencari
indeks array terakhir yang berisi suatu nilai. Parameter prosedur
adalah TabInt (array dengan elemen integer), N (indeks efektif), X
(nilai yang akan dicari), dan IX (indeks terakhir pada array yang
bernilai X). IX akan bernilai 0 jika X tidak terdapat di dalam TabInt.
Contoh: N=9, TabInt={4,3,7,6,3,8,4,3,6}, X=3, maka IX=8
3. Buatlah sebuah fungsi IsPalindrom yang menerima masukan
sebuah array of character (TChar) dan sebuah integer yang
menyatakan indeks efektif maksimum array (N). Fungsi akan
mengembalikan true apabila karakter2 di dalam TChar adalah
palindrom. Sebuah rangkaian karakter disebut palindrom jika
dibaca dari depan dan dari belakang sama, misalnya: MALAM,
KASUR RUSAK. Array of character kosong adalah palindrom.
2012/10/23
TW/KU1071/Sem. I 2012/2013
26