Anda di halaman 1dari 19

Array dalam Bahasa C

Hamonangan Situmorang STEI-ITB

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 :
IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang 2

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 ]; val[ 12 ] = 5; //declaration //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

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};
n indeks 1 0 3 1 5 2 7 3 9 4
4

IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang

Hati-hati dengan indeks array


jika ceroboh dapat mengakses data lain hati-hati pula dengan pointer Array a[ ] lain

Alokasi Memory Array (1)


Memori

Ilustrasi kasus:
int a[6]; int anu; Data

a[0] a[1] a[2] a[3] a[4] a[5] anu

IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang

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

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

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

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

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

Review Sistem Komputer(1)


Alamat (disederhanakan)

RAM
OUTPUT (CONSOLE)

HDD

CPU

INPUT (KEYBOARD)

0 1 2 3 4 5 81345 81346 81347


IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang

... ...

... ...
11

Review Sistem Komputer(2)


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)
Biner (4 bit) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Desimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Heksa 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 atau atau atau atau atau atau

Semua bilangan dapat direpresentasikan dengan menggunakan bit ini


15 1111 (cukup 4 bit) 253 11111101 (cukup 8 bit) -2.99x108 100101010010110101011 (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
IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang

0xA 0xB 0xC 0xD 0xE 0xF

0xa 0xb 0xc 0xd 0xe 0xf


12

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

Lihat ilustrasi

Review Sistem Komputer(4)


Alamat memori dalam notasi heksa, isi memori dalam notasi desimal Alamat ... ... 0x0012F084 0x0012F088 0x0012F08C 0x0012F090 0x0012F094 0x0012F09C ... ... Memori ... ... 1 2 3.33 4.44 5.5x1067 6.6x1078 ... ... Keterangan int = 32 bit int = 32 bit float = 32 bit float = 32 bit double = 64 bit double = 64 bit

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


... ... 00000000000100101111000010000100 00000000000100101111000010001000 00000000000100101111000010010100 00000000000100101111000010010000 00000000000100101111000010010100 00000000000100101111000010010110 ... ...

Memori
... ... 00000000000000000000000000000001 00000000000000000000000000000010 00010010010001000100100100100110 00100010010001000100100100100110 01001011001100001110100010100110 01011011001100101110101010110110 01000101001010100110011100100010 01000011011100000110101001110110

IF2031-Algoritma dan Struktur ... Data/Hamonangan Situmorang ...

14

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

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

Review Sistem Komputer(7)


C++ Program int main() { int i=1; . . .

C Compiler

Machine Language Program 01001001 10010100

file teks (bahasa C++) coba.cpp

file biner (bahasa mesin) coba.exe


IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang 17

Review Sistem Komputer(8)


Proses penerjemahan bahasa C/C++ ke bahasa mesin
Keterangan: bahasa mesin di bawah-kanan ini sebenarnya berupa angkaangka biner (dimanusiawikan untuk memudahkan pemahaman)

x=1;

set memory[801] to hold 00000001

i=0;
while (i!=10) { i++; x=x*2; }

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

printf("%d",x);

print memory[801]
IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang 18

Review Sistem Komputer(9)


Biasanya, proses penterjemahan itu beberapa tahap
Melalui bahasa assembly
Bahasa C Bahasa Assembly Bahasa Mesin ST 1,[801] ST 0,[802] TOP: BEQ [802],10,BOT INCR [802] MUL [801],2,[803] ST [803],[801] JMP BOT: TOP LD A,[801] CALL PRINT

x=1; i=0; while (i!=10) { i++; x=x*2; } printf("%d",x);

00000000001001011101001100000000 00000000001001001101010000000000 00000000100010100100100111110000 00000000010001000101010000000000 00000000010010001010011110100011 00000000111001011010101100000010 00000000001010010000000000000000 00000000110101010000000000000000 00000000110101001010100000000000 00000000100100010100010000000000

IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang

19

Anda mungkin juga menyukai