Anda di halaman 1dari 31

Modul ke:

PRAKTIKUM ALGORITMA
& STRUKTUR DATA (LAB)

09 Fakultas
TEKNIK
Array dan Struktur Data

Muhammad Rifqi, S.Kom, M.Kom

Program Studi
Ilmu
Komputer
Latar Belakang Array
• Sejauh ini cuplikan program yang kita pelajari masih
sangat terbatas, karena statement assignment hanya
berupa pemberian satu nilai pada satu variabel
• Padahal sering kali kita perlu untuk meng-assign
ataupun memanipulasi banyak nilai ke sekelompok
variabel
• Sebagai contoh jika anda membuat program yang
membaca 6000 nilai percobaan untuk dihitung nilai
rata-rata-nya, akan sangat lucu jika anda
menghitungnya dengan cara berikut: rata_rata = (x1 +
x2 + x3 + x4 + x5 + + dst )/6000.
• Ekspresi matematis berikut akan lebih baik :
Pengertian Array
• Adalah struktur data standar yang mempunyai
elemen-elemen sejenis dan dapat diakses
menggunakan indeks
• Mempunyai nama dan tipe data
• Contoh: Tabel[30], mengembalikan nilai elemen
array bernama Tabel pada indeks ke-30
• Panjang suatu array terbatas, dicatat oleh length
• Contoh: Tabel.length, mengembalikan panjang Tabel
• Array dapat berupa array 1 dimensi, 2 dimensi,
bahkan n-dimensi.
Array dan Record Data
• Definisi: Array (larik) adalah suatu himpunan berhingga
elemen, terindeks dan homogen.
• Terindeks berarti elemen-elemennya dapat diacu
sebagai elemen ke-1, ke-2, …, ke-n.
12 15 32 66 3 20

elemen ke-2 = 15
elemen ke-5 = 3
• Homogen berarti bahwa semua elemen dalam suatu
array bertipe sama.
12.3 “AB” -12 TRUE 288.3 3213
Deklarasi Array

tipe_data nama_var_array [ukuran];

•tipe_data : menyatakan jenis tipe data elemen larik (int,


char, float, dll)
•nama_var_array : menyatakan nama variabel yang
dipakai.
•ukuran : menunjukkan jumlah maksimal elemen larik.

Contoh :
Int nilai[6];
Inisialisasi Array
Menginisialisasi array sama dengan memberikan nilai
awal array pada saat didefinisikan.

int nilai[6] = {8,7,5,6,4,3};


Contoh diatas berarti berarti anda memesan tempat di
memori komputer sebanyak 6 tempat dengan indeks dari
0-5, dimana indeks ke-0 bernilai 8, ke-1 bernilai 7, dst,
dan dimana semua elemennya bertipe data integer.
#include <stdio.h>
#include <conio.h>
using namespace std;
int main ()
{ int A [5]={20,9,1986,200,13},n,m;
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\nData yang baru : \n");
A[0]=4;
A[1]=2;
A[2]=1;
A[3]=3;
A[4]=5;
for (m=0;m<5;m++)
{
printf("%i ",A[m]);
}
}
• Subskrip atau indeks dari elemen array
menyatakan posisi elemen pada urutan
dalam array tersebut
• Ada 3 hal yang harus dikemukakan dalam
mendeklarasikan suatu array, yaitu :
1.nama Array
2.Range dari subskrip
3.Tipe Data dari elemen array
• Penulisan notasi array
Suatu array A berdimensi satu dengan tipe data T
dan subskrip bergerak dari L sampai dengan U, ditulis
sebagai A(L:U) = (A(i)), i=L, L+1, L+2,…, U dengan
setiap elemen A(i) bertipe data T.
L = lower bound (batas bawah)
U = upper bound (batas atas)
• Batas bawah array (L) tidak harus satu, melainkan
bisa juga bilangan lain sesuai kebutuhan)
• Rentang (range) adalah banyaknya elemen sebuah
array. Dihitung dengan cara Rentang = U – L + 1
• Array SISWA(0:9) bertipe STRING
• Batas bawah indeksnya = 0
• Batas atas indeksnya = 9
• Rentang array SISWA = 9 – 0 + 1 = 10
• SISWA(0) = “Budi”
SISWA(1) = “Catur”
SISWA(2) = “Dewi”

SISWA(9) = “SEPTI”
• Array Berdimensi Banyak (multi-dimensional array)
adalah array yang elemennya berupa array juga.
A(L:U) bertipe T
dimana T adalah tipe array T(L2:U2)
• Contoh kasus: Sebuah kelas terdiri atas 50 siswa. Nilai
ujian tiap siswa terdiri atas nilai Ujian ke-1, Ujian ke-2
dan Ujian ke-3
Bagaimana tipe data yang digunakan?
• Penjabaran
NilaiSiswa(1) memiliki nilai ujian 75, 68, 79
NilaiSiswa(2) memiliki nilai ujian 10, 100, 50
NilaiSiswa(3) memiliki nilai ujian 90, 80, 85
NilaiSiswa(4) memiliki nilai 85, 85, 80
NilaiSiswa(5) memiliki nilai 100, 100, 100

NilaiSiswa(50) memiliki nilai 65, 75, 95
• Nilai untuk tiap siswa dibuatkan tipe array
Ujian(1:3) bertipe Integer
Sedangkan, tipe untuk NilaiSiswa adalah
NilaiSiswa(1:50) bertipe Ujian(1:3)
1 75 68 79 75 68 79
2 10 10 50 10 100 50
0
3 90 80 85 90 80 85
… … … …
50 65 75 95 65 75 95
• Notasi array dimensi 2
A(L1:U1,L2:U2) = (A(I,J)), I = L1, L1+1,L1+2,…, U1
J = L2, L2+1, L2+2, …,U2
Contoh : B(1:3,1:10)
NilaiSiswa(1:50,1:3)
• Banyaknya elemen array merupakan ukuran array atau
order array. Order suatu array dimensi 2 diperoleh
dengan cara
Order array A = (U1 - L1 + 1) * (U2 - L2 + 1)
Order array B = (3-1+1) * (10-1+1) = 3 * 10 = 30
Order array NilaiSiswa = (50-1+1) * (3-1+1) = 150
• Secara umum, notasi array berdimensi
banyak ditulis sbb:
A(L1:U1, L2:U2, L3:U3, …, Ln:Un) tipe T

• Order array A =
(U1-L1+1) * (U2-L2+1) * … * (Un-Ln+1)
Contoh Kasus
Suatu kelas terdiri atas 50 siswa SD kelas 6.
Dari kelas 1 s.d. kelas 6, ujian selalu
dilaksanakan 3kali, yaitu uji-1, uji-2, dan uji-3
untuk mata pelajaran Matematika.

Buatlah struktur data array untuk menyimpan


nilai Matematika siswa dalam kelas tersebut.
• Jawaban I :
NilaiMat(1:50, 1:6, 1:3) bertipe integer
S K U
S = Jumlah siswa (1 s.d. 50)
K = Jumlah kelas (1 s.d. 6)
U = Ujian ke … (1 s.d. 3)

• Jawaban II :
NilaiMat(1:6, 1:50, 1:3) bertipe integer
• Cara mengacu ke elemen array
Pada soal di atas untuk Jawaban I, untuk
mengacu Nilai siswa ke-45, pada kelas 3,
ujian ke-2 ditulis: NilaiMat(45,3,2)

Untuk jawaban ke-2 ditulis:


NilaiMat(3,45,2)
Recording Array
• Ada beberapa cara untuk menyajikan tipe
record data array di dalam memori. Skema
penyajian dapat dievaluasi berdasarkan 4
karakteristik, yaitu:
1.Kesederhanaan dari akses elemen
2.Mudah untuk ditelusuri
3.Efisiensi dari utilisasi storage
4.Mudah dikembangkan
Review Sistem Komputer(1)
Alamat
(disederhanakan)
RAM
OUTPUT
(CONSOLE) 0
1
2
3
4
HDD CPU 5

...

...

81345
INPUT 81346
(KEYBOARD) 81347
...

...
21

Review Sistem Komputer(2)
Komputer sekarang ini = komputer digital
• Komputer ini hanya memahami bilangan
digital: ‘0’ and ‘1’
– Disebut BIT (binary digit) Biner Desimal Heksa
– Mewakili tegangan elektronik -5 atau +5 volt (4 bit)
(secara mudahnya) 0000 0 0x0
• ‘Semua’ bilangan dapat direpresentasikan 0001 1 0x1
dengan menggunakan bit ini 0010 2 0x2
0011 3 0x3
– 15  1111 (cukup 4 bit) 0100 4 0x4
– 253  11111101 (cukup 8 bit) 0101 5 0x5
– -2.99x108  1001010100101…10101011 0110 6 0x6
(cukup 32 bit, ilustrasi) 0111 7 0x7
• Kebanyakan bit menyulitkan manusia 1000 8 0x8
membaca, jadi dikelompokkan 1001 9 0x9
– Kelompok 4 bit diwakili dengan bilangan 1010 10 0xA atau 0xa
heksa (hexadecimal) 1011 11 0xB atau 0xb
• Biasa dinotasikan dengan prefiks 0x 1100 12 0xC atau 0xc
• Co: 1001 ditulis 0x9 1101 13 0xD atau 0xd
– Kelompok 8 bit disebut BYTE 1110 14 0xE atau 0xe
• Perlu 2 angka heksa 1111 15 0xF atau 0xf
• Co: 1000 1111 ditulis 0x8F 22
Review Sistem Komputer(3)
• Merupakan subsistem komputer yang sering
menjadi fokus pemrogram:
– Terutama memori primer (RAM)
– Memori sekunder lebih banyak diakses sebagai file
– Jika tidak disebutkan secara khusus, kata ‘memori’
berarti ‘memori primer’
• Memori merupakan tempat software berada
– Jadi, isinya dapat berupa SO, aplikasi atau data
– Jika ditelusuri lebih rinci lagi, setiap lokasi dapat berisi
perintah dan/atau data (angka, alamat, nilai, dsb.)

23
Review Sistem Komputer(4)
• Lihat ilustrasi Alamat memori dalam notasi heksa,
isi memori dalam notasi desimal
– Lebar bit memori saat ini 32 bit
Alamat Memori Keterangan
(co: Intel Pentium IV) ... ...
... ...
– Prosesor 64 bit sudah mulai muncul 0x0012F084 1 int = 32 bit
(co: AMD Athlon64) 0x0012F088 2 int = 32 bit
0x0012F08C 3.33 float = 32 bit
0x0012F090 4.44 float = 32 bit
0x0012F094
5.5x1067 double = 64 bit
0x0012F09C
6.6x1078 double = 64 bit
... ...
... Me ...
Keadaan sebenarnya dalam sistem memori komputer Ma muda
Me nusia hkan
mb
Alamat Memori aca
... ...
... ...
00000000000100101111000010000100 00000000000000000000000000000001
00000000000100101111000010001000 00000000000000000000000000000010
00000000000100101111000010010100 00010010010001000100100100100110
00000000000100101111000010010000 00100010010001000100100100100110
00000000000100101111000010010100 01001011001100001110100010100110
01011011001100101110101010110110
00000000000100101111000010010110 01000101001010100110011100100010
01000011011100000110101001110110
... ...
...
IF2031-Algoritma dan
...
24
Review Sistem Komputer(5)
• Untuk kemudahan pemrograman,
komputer dapat dimodelkan secara sederhana terdiri atas
– prosesor (CPU)
– memori (RAM)
• Sebenarnya, CPU hanya memahami instruksi sederhana, misalnya:
– baca data dari sebuah lokasi memori
– tulis data ke sebuah lokasi memori
– jumlahkan dua bilangan
– bandingkan dua bilangan
• Ingat, semua ini direpresentasikan dalam bilangan biner!
– Dinamakan BAHASA MESIN
– Sebuah program merupakan seruntunan instruksi-instruksi dan data
dalam bahasa mesin ini

25
Review Sistem Komputer(6)
• Karena manusia mengalami kesulitan
ketika harus memberikan perintah dalam bahasa mesin
– Diciptakanlah bahasa pemrograman yang lebih mendekati bahasa
manusia (terutama: bahasa Inggris)
– COMPILER atau INTERPRETER bertindak sebagai penerjemah bahasa
tingkat tinggi ini ke bahasa mesin
• Compiler
– Menerjemahkan dari file teks bahasa tingkat tinggi ke file biner bahasa
mesin
• Co: hello.cpp (file teks bahasa C++)  hello.exe (file biner bahasa mesin)
• Interpreter
– Menerjemahkan on-the-fly, instruksi per instruksi, jadi tidak
menghasilkan file binernya
• Co: hello.bas (file teks bahasa BASIC)  dijalankan di BASIC prompt
• Co: hello.m (file teks bahasa Matlab)  dijalankan di Matlab prompt

26
Review Sistem Komputer(7)

C++ Program Machine


C Compiler Language
Program
int main() {
int i=1;
. . . 01001001
10010100

file teks  file biner


(bahasa C++) (bahasa mesin)
coba.cpp coba.exe
Review Sistem Komputer(8)
Proses penerjemahan bahasa C/C++ ke bahasa mesin
Keterangan: bahasa mesin di bawah-kanan ini sebenarnya berupa angka-
angka biner (‘dimanusiawikan’ untuk memudahkan pemahaman)

x=1; set memory[801] to hold 00000001

i=0; set memory[802] to hold 00000000

while (i!=10) { if memory[802] = 10 jump to inst #8

i++; increment memory[802]

{
x=x*2; set memory[803] to 2 times memory[801]

} put memory[803] in to memory[801]

jump to instruction #3

printf("%d",x); print memory[801]


28
Review Sistem Komputer(9)
• Biasanya, proses penterjemahan itu beberapa
tahap
– Melalui bahasa assembly
Bahasa C Bahasa Assembly Bahasa Mesin

x=1; ST 1,[801] 00000000001001011101001100000000


ST 0,[802] 00000000001001001101010000000000
i=0;
TOP: BEQ 00000000100010100100100111110000
while (i!=10) { [802],10,BOT 00000000010001000101010000000000
INCR [802] 00000000010010001010011110100011
i++;
00000000111001011010101100000010
MUL [801],2,
x=x*2; [803] 00000000001010010000000000000000
00000000110101010000000000000000
} ST [803],[801]
00000000110101001010100000000000
JMP TOP 00000000100100010100010000000000
printf("%d",x);
BOT: LD A,[801]
CALL PRINT
29
Daftar PUstaka
1. Murray D, Sandford N, Sandford N. Software engineering project
management Undergraduate study in Computing and related programmes.
London: University of London; 2013.
2. Marchewka, Jack T., 2006, Information Technology Project Management,
John Wiley & Sons, Inc, ISBN-13 978-0-471-71539-9
3. Pressman, R. 2000. Software Engineering : A Practioners Approach 5TH
Editon. Boston : Mc Graw Hill.

1. Hughes, B., and Cotteral, M. 1999. Software Project Management Second


Edition. London : McGraw Hill.
2. ForsBerg, K., dkk. 1996. Visualizing Project Management 2TH. New York :
John Willey & sons.
Terima Kasih
Muhammad Rifqi, S.Kom, M.Kom

Anda mungkin juga menyukai