Dokumen tersebut membahas tentang array dalam bahasa C, mulai dari pengertian array, deklarasi dan alokasi memori array, hingga contoh pengolahan elemen array."
2. 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 :
2
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
3. Pendahuluan (1)
• Definsi : Kumpulan nilai dengan tipe data yang sama yang menggunakan
nama sama.
• Deklarasi Array :
– Tipe data elemen array
– Nama array
– Jumlah elemen array
• Contoh :
short val[ 200 ]; //declaration
val[ 12 ] = 5; //assignment
• Jika sebuah array y memiliki n elemen, maka:
– Elemen pertama adalah : y[0]
– Elemen terakhir adalah : y[n-1]
• Contoh :
– Short y[4], memiliki elemen y[0], y[1], y[2], y[3]
– Tetapi y[4], bukan merupakan elemen array ini.
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
3
4. Pendahuluan (2)
• Array dapat dibedakan menjadi :
– Array berdimensi satu (1D), berpadanan dg vektor di Matematika
– Array berdimensi dua (2D), berpadanan dg matriks di Matematika
– Array berdimensi banyak
• Contoh array integer 1D bernama n yg memiliki 5
elemen,
n[0] = 1, n[1] = 3, n[2] = 5, n[3] = 7, n[4] = 9
dideklarasikan sbb:
– int n[5] = {1,3,5,7,9};
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
4
1 3 5 7 9
n
0 1 2 3 4
indeks
5. Alokasi Memory Array (1)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
5
• Hati-hati dengan indeks
array
– jika ceroboh dapat
mengakses data lain
– hati-hati pula dengan
pointer
• Ilustrasi kasus:
int a[6];
int anu;
Array a[ ]
Data lain
Memori
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
anu
6. Alokasi Memory Array (2)
• Array, seperti halnya variabel biasa ataupun fungsi harusi dideklarasikan
terlebih dahulu.
• Array dapat dideklarasikan secara global dengan mendeklarasikannya
diluar fungsi main
• Hati-hati jika anda mendeklarasikannya secara (didalam sebuah fungsi
atau main), karena, variabel lokal akan dibentukan dalam stack ketikan
fungsi tersebut dibentuk, dan akan dihapus ketika fungsi tersebut
dihancurkan (ketika fungsi tersebut selesai dieksekusi).
• Mungkin hal ini tidak bermasalah bagi variabel biasa, namun array
umumnya akan menuntut jumlah memory yang sangat besar (array 'float
mydata[5000]' akan membutuhkan memory sebesar 20000 bytes),
sementara stack hanya memiliki kapasitas sekitar 2000 - 4000 bytes
• Oleh karena itu untuk array yang besar harus dideklarasikan secara global,
atau mempergunakan static statement (static float mydata[5000]; ) jika
anda hendak mendeklarasikannya secara local.
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
6
7. Alokasi Memory Array (3)
• Global arrays selalu bersifat “static”
• Local arrays selalubersifat “dynamic”
• Alokasi memory space array dan variabel “static”
umumnya lebih besar daripada array dan variabel
“dynamic”
• Untuk membuat local array “static”, deklarasikan
secara eksplisit : static short x[200];
• Hati-hati dengan batasan 64 kB pada beberapa
compiler
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
7
8. Deklarasi dan Inisialisasi Array
• Deklarasi secara global, semua elemen array akan diinisialiasi
dengan nilai nol.
• Deklarasi secara lokal, elemen array tidak di-inisialisasi.
• Contoh-contoh deklarasi dan inisialisasi array :
– short x[ 12 ] = { 1, 3, 88};
– double w[ ] = {3.14, 127.0, 22};
• Strings:
– char a_name[ 10 ] = “Hello”;
– char name[ 20 ] ={‘H’,‘e’,‘l’,’l’,’o’};
• Jika anda akan mendeklarasikan ukuran/dimensi array anda harus
menggunakan sebuah nilai atau konstanta, jangan variabel
– short x[12];
– Short x[MAX], dimana MAX adalah konstanta
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
8
9. Review Deklarasi Konstanta
• Contoh deklarasi konstanta
– #define ACONSTANT 300.0
– #define TRUE 1
– #define FALSE 0
• Catatan:
– Tidak ada semicolon diakhir deklarasi konstanta
– Kesepakatan dalam C: nama konstatnta ditulis
dengan menggunakan huruf besar semua.
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
9
10. Mengolah Elemen Array
• Elemen array dapat diakses dengan bentuk:
– nama_array[subscript] untuk dimensi 1
– nama_array[subscript_baris][subscript_kolom] untuk dimensi 2
• Dalam pemrograman harus diusahakan agar tidak terjadi
pengaksesan elemen di luar jumlah yang didefinisikan.
• Perlu diketahui, C tidak akan memberikan pesan kesalahan
apabila terjadi pengaksesan dengan nilai indeks yang
berada di luar nilai yang telah didefinisikan.
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
10
11. Review Sistem Komputer(1)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
11
CPU
OUTPUT
(CONSOLE)
INPUT
(KEYBOARD)
HDD
...
...
RAM
0
1
2
3
4
5
…
…
81345
81346
81347
Alamat
(disederhanakan)
...
...
12. Review Sistem Komputer(2)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
12
• Komputer sekarang ini = komputer digital
• Komputer ini hanya memahami bilangan
digital: ‘0’ and ‘1’
– Disebut BIT (binary digit)
– Mewakili tegangan elektronik -5 atau +5 volt
(secara mudahnya)
• ‘Semua’ bilangan dapat direpresentasikan
dengan menggunakan bit ini
– 15 1111 (cukup 4 bit)
– 253 11111101 (cukup 8 bit)
– -2.99x108 1001010100101…10101011
(cukup 32 bit, ilustrasi)
• Kebanyakan bit menyulitkan manusia
membaca, jadi dikelompokkan
– Kelompok 4 bit diwakili dengan bilangan
heksa (hexadecimal)
• Biasa dinotasikan dengan prefiks 0x
• Co: 1001 ditulis 0x9
– Kelompok 8 bit disebut BYTE
• Perlu 2 angka heksa
• Co: 1000 1111 ditulis 0x8F
Biner
(4 bit)
Desimal Heksa
0000 0 0x0
0001 1 0x1
0010 2 0x2
0011 3 0x3
0100 4 0x4
0101 5 0x5
0110 6 0x6
0111 7 0x7
1000 8 0x8
1001 9 0x9
1010 10 0xA atau 0xa
1011 11 0xB atau 0xb
1100 12 0xC atau 0xc
1101 13 0xD atau 0xd
1110 14 0xE atau 0xe
1111 15 0xF atau 0xf
13. 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.)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
13
14. Review Sistem Komputer(4)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
14
• Lihat ilustrasi
– Lebar bit memori saat ini 32 bit
(co: Intel Pentium IV)
– Prosesor 64 bit sudah mulai muncul
(co: AMD Athlon64)
Keadaan sebenarnya dalam sistem memori komputer
Alamat Memori
... ...
... ...
00000000000100101111000010000100 00000000000000000000000000000001
00000000000100101111000010001000 00000000000000000000000000000010
00000000000100101111000010010100 00010010010001000100100100100110
00000000000100101111000010010000 00100010010001000100100100100110
00000000000100101111000010010100 01001011001100001110100010100110
01011011001100101110101010110110
00000000000100101111000010010110 01000101001010100110011100100010
01000011011100000110101001110110
... ...
... ...
Alamat memori dalam notasi heksa,
isi memori dalam notasi desimal
Alamat Memori Keterangan
... ...
... ...
0x0012F084 1 int = 32 bit
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
... ...
... ...
15. 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
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
15
16. 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
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
16
17. Review Sistem Komputer(7)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
17
C++ Program
int main() {
int i=1;
. . .
Machine
Language
Program
01001001
10010100
C Compiler
file teks file biner
(bahasa C++) (bahasa mesin)
coba.cpp coba.exe
18. Review Sistem Komputer(8)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
18
set memory[801] to hold 00000001
set memory[802] to hold 00000000
if memory[802] = 10 jump to inst #8
increment memory[802]
set memory[803] to 2 times memory[801]
put memory[803] in to memory[801]
jump to instruction #3
print memory[801]
x=1;
i=0;
while (i!=10) {
i++;
x=x*2;
}
printf("%d",x);
{
Proses penerjemahan bahasa C/C++ ke bahasa mesin
Keterangan: bahasa mesin di bawah-kanan ini sebenarnya berupa angka-
angka biner (‘dimanusiawikan’ untuk memudahkan pemahaman)
19. Review Sistem Komputer(9)
IF2031-Algoritma dan Struktur
Data/Hamonangan Situmorang
19
• Biasanya, proses penterjemahan itu beberapa
tahap
– Melalui bahasa assembly
ST 1,[801]
ST 0,[802]
TOP: BEQ [802],10,BOT
INCR [802]
MUL [801],2,[803]
ST [803],[801]
JMP TOP
BOT: LD A,[801]
CALL PRINT
00000000001001011101001100000000
00000000001001001101010000000000
00000000100010100100100111110000
00000000010001000101010000000000
00000000010010001010011110100011
00000000111001011010101100000010
00000000001010010000000000000000
00000000110101010000000000000000
00000000110101001010100000000000
00000000100100010100010000000000
x=1;
i=0;
while (i!=10) {
i++;
x=x*2;
}
printf("%d",x);
Bahasa C Bahasa Assembly Bahasa Mesin