270 likes | 611 Views
Array dalam Bahasa C. Alvano Yulian, MSi STMIK Jakarta. 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
E N D
Array dalam Bahasa C Alvano Yulian, MSi STMIK Jakarta
Pendahuluan (1) • Definsi : Kumpulan nilaidengantipe data yang sama yang menggunakannamasama. • Deklarasi Array : • Tipe data elemen array • Nama array • Jumlahelemen array • Contoh : short val[ 200 ]; //declaration val[ 12 ] = 5; //assignment • Jikasebuah array y memiliki n elemen, maka: • Elemenpertamaadalah : y[0] • Elementerakhiradalah : y[n-1] • Contoh : • Short y[4], memilikielemen y[0], y[1], y[2], y[3] • Tetapi y[4], bukanmerupakanelemen array ini. IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Pendahuluan (2) • Array dapatdibedakanmenjadi : • Array berdimensisatu (1D), berpadanan dg vektordiMatematika • Array berdimensidua (2D), berpadanan dg matriksdiMatematika • Array berdimensibanyak • Contoh array integer 1D bernamanygmemiliki 5 elemen,n[0] = 1, n[1] = 3, n[2] = 5, n[3] = 7, n[4] = 9 dideklarasikansbb: • int n[5] = {1,3,5,7,9}; n 1 3 5 7 9 indeks 0 1 2 3 4 IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Alokasi Memory Array (1) • Hati-hati dengan indeks array • jika ceroboh dapat mengakses data lain • hati-hati pula dengan pointer • Ilustrasi kasus: • int a[6]; • int anu; Memori a[0] a[1] a[2] a[3] a[4] a[5] anu Array a[ ] Data lain IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Alokasi Memory Array (2) • Array, sepertihalnyavariabelbiasaataupunfungsiharusidideklarasikanterlebihdahulu. • Array dapatdideklarasikansecara global denganmendeklarasikannyadiluarfungsi main • Hati-hatijikaandamendeklarasikannyasecara (didalamsebuahfungsiatau main), karena, variabellokalakandibentukandalam stack ketikanfungsitersebutdibentuk, danakandihapusketikafungsitersebutdihancurkan (ketikafungsitersebutselesaidieksekusi). • Mungkinhalinitidakbermasalahbagivariabelbiasa, namun array umumnyaakanmenuntutjumlah memory yang sangatbesar (array 'float mydata[5000]' akanmembutuhkan memory sebesar 20000 bytes), sementara stack hanyamemilikikapasitassekitar 2000 - 4000 bytes • Olehkarenaituuntuk array yang besarharusdideklarasikansecara global, ataumempergunakanstatic statement (static float mydata[5000]; ) jikaandahendakmendeklarasikannyasecara local. IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Alokasi Memory Array (3) • Global arrays selalubersifat “static” • Local arrays selalubersifat “dynamic” • Alokasi memory space array danvariabel “static” umumnyalebihbesardaripada array danvariabel “dynamic” • Untukmembuat local array “static”, deklarasikansecaraeksplisit : static short x[200]; • Hati-hatidenganbatasan 64 kBpadabeberapa compiler IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Deklarasi dan Inisialisasi Array • Deklarasisecara global, semuaelemen array akandiinisialiasidengannilai nol. • Deklarasisecaralokal, elemen array tidakdi-inisialisasi. • Contoh-contohdeklarasidaninisialisasi 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’}; • Jikaandaakanmendeklarasikanukuran/dimensi array andaharusmenggunakansebuahnilaiataukonstanta, janganvariabel • short x[12]; • Short x[MAX], dimana MAX adalahkonstanta 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
Mengolah Elemen Array • Elemen array dapatdiaksesdenganbentuk: • nama_array[subscript] untukdimensi 1 • nama_array[subscript_baris][subscript_kolom] untukdimensi 2 • Dalampemrogramanharusdiusahakan agar tidakterjadipengaksesanelemendiluarjumlah yang didefinisikan. • Perludiketahui, C tidakakanmemberikanpesankesalahanapabilaterjadipengaksesandengannilaiindeks yang beradadiluarnilai yang telahdidefinisikan. IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Alamat (disederhanakan) RAM 0 1 2 3 4 5 … … 81345 81346 81347 ... ... ... ... Review SistemKomputer(1) OUTPUT (CONSOLE) CPU HDD INPUT (KEYBOARD) IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review SistemKomputer(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) • ‘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 IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review Sistem Komputer(3) • Merupakansubsistemkomputer yang seringmenjadifokuspemrogram: • Terutamamemori primer (RAM) • Memorisekunderlebihbanyakdiaksessebagai file • Jikatidakdisebutkansecarakhusus, kata ‘memori’ berarti ‘memori primer’ • Memorimerupakantempat software berada • Jadi, isinyadapatberupa SO, aplikasiatau data • Jikaditelusurilebihrincilagi, setiaplokasidapatberisiperintahdan/atau data (angka, alamat, nilai, dsb.) IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review Sistem Komputer(4) • Lihat ilustrasi • Lebar bit memori saat ini 32 bit(co: Intel Pentium IV) • Prosesor 64 bit sudah mulai muncul(co: AMD Athlon64) Memudahkan Manusia Membaca IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review Sistem Komputer(5) • Untukkemudahanpemrograman,komputerdapatdimodelkansecarasederhanaterdiriatas • prosesor (CPU) • memori (RAM) • Sebenarnya, CPU hanyamemahamiinstruksisederhana, misalnya: • baca data darisebuahlokasimemori • tulis data kesebuahlokasimemori • jumlahkanduabilangan • bandingkanduabilangan • Ingat, semuainidirepresentasikandalambilanganbiner! • Dinamakan BAHASA MESIN • Sebuah program merupakanseruntunaninstruksi-instruksidan data dalambahasamesinini IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review Sistem Komputer(6) • Karenamanusiamengalamikesulitanketikaharusmemberikanperintahdalambahasamesin • Diciptakanlahbahasapemrograman yang lebihmendekatibahasamanusia (terutama: bahasaInggris) • COMPILER atau INTERPRETER bertindaksebagaipenerjemahbahasatingkattinggiinikebahasamesin • Compiler • Menerjemahkandari file teksbahasatingkattinggike file binerbahasamesin • Co: hello.cpp (file teksbahasa C++) hello.exe (file binerbahasamesin) • Interpreter • Menerjemahkan on-the-fly, instruksi per instruksi, jaditidakmenghasilkan file binernya • Co: hello.bas (file teksbahasa BASIC) dijalankandi BASIC prompt • Co: hello.m (file teksbahasaMatlab) dijalankandiMatlab prompt IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Review Sistem Komputer(7) C Compiler C++ Program int main() { int i=1; . . . Machine Language Program 01001001 10010100 file teks file biner (bahasa C++) (bahasa mesin) coba.cppcoba.exe IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
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; i=0; while (i!=10) { i++; x=x*2; } printf("%d",x); 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] { IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang
Bahasa C Bahasa Assembly Bahasa Mesin x=1; i=0; while (i!=10) { i++; x=x*2; } printf("%d",x); 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 Review Sistem Komputer(9) • Biasanya, proses penterjemahan itu beberapa tahap • Melalui bahasa assembly IF2031-Algoritma dan Struktur Data/Hamonangan Situmorang