Tipe Data Lecture 8
Tipe Data Dasar Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar, yaitu: Bilangan bulat (integer) Bilangan pecahan (float/real) presisi-tunggal Bilangan pecahan (float/real) presisi-ganda Karakter Tak bertipe
Daftar tipe data dasar Tipe Jml Bit Rentang Data Keterangan Char 8 -128 .. 127 Karakter Int 16 -32768 .. 32767 Bilangan bulat Float 32 3.4e-38 .. 3.4e+38 Bilangan pecahan presisi-tunggal Double 64 1.7e-308 .. 1.7e+3.8 Bilangan pecahan presisi-ganda Void - Tak bertipe
/* LOTTYPES.C */ #include <stdio.h> int main() { int a; /* simple integer type */ long int b; /* long integer type */ short int c; /* short integer type */ unsigned int d; /* unsigned integer type */ char e; /* character type */ float f; /* floating point type */ double g; /* double precision floating point */ a = 1023; b = 2222; c = 123; d = 1234; e = 'X'; f = 3.14159; g = 3.1415926535898; printf("a = %d\n", a); /* decimal output */ printf("a = %o\n", a); /* octal output */ printf("a = %x\n", a); /* hexadecimal output */ printf("b = %ld\n", b); /* decimal long output */ printf("c = %d\n", c); /* decimal short output */ printf("d = %u\n", d); /* unsigned output */ printf("e = %c\n", e); /* character output */ printf("f = %f\n", f); /* floating output */ printf("g = %f\n", g); /* double float output */ printf("\n"); printf("a = %d\n", a); /* simple int output */ printf("a = %7d\n", a); /* use a field width of 7 */ printf("a = %-7d\n", a); /* left justify in field of 7 */ c = 5; d = 8; printf("a = %*d\n", c, a); /* use a field width of 5 */ printf("a = %*d\n", d, a); /* use a field width of 8 */ printf("f = %f\n", f); /* simple float output */ printf("f = %12f\n", f); /* use field width of 12 */ printf("f = %12.3f\n", f); /* use 3 decimal places */ printf("f = %12.5f\n", f); /* use 5 decimal places */ printf("f = %-12.5f\n", f); /* left justify in field */ return 0; }
Result of execution a = 1023 a = 1777 a = 3ff b = 2222 c = 123 d = 1234 e = X f = 3.141590 g = 3.141593 a = 1023 a = 1023 a = 1023 f = 3.141590 f = 3.142 f = 3.14159 f = 3.14159
Struktur Array
Motivation One of the most powerful programming tools available Help to organize a collection of homogeneous data items (same type and lenght). The individual data items that make up the array are called as Element of the array Example: Scores[3] indicated the third exam score
Definition Array disebut juga larik, merupakan runtun data dengan setiap elemen data menggunakan nama yang sama dan mesing-masing elemen data bertipe sama. Setiap komponen (elemen) array dapat dibedakan dan diakses melalui nomor indeksnya. Struktur array dapat digolongkan menjadi: Array berdimensi satu Array berdimensi dua Array berdimensi banyak
Array Satu Dimensi Struktur array satu dimensi dapat dideklarasikan dengan bentuk umum berupa: Tipe nama_var [ukuran]; dengan: tipe: untuk menyatakan jenis elemen array (misalnya char, int, unsigned). Ukuran untuk menyatakan jumlah maksimal elemen array. contoh pendeklarasian suatu array lima elemen dengan tipe float adalah sebagai berikut: float nilai_tes [5];
Mengakses Elemen Array Pada bahasa C, data array akan disimpan dalam memori pada lokasi yang berurutan. Elemen pertama mempunyai indeks bernilai 0. Jika pada contoh variabel nilai_tes mempunyai 5 elemen, maka elemen pertama mempunyai indeks sama dengan 0, elemen kedua mempunyai indeks 1, dan seterusnya.
Bentuk umum pengaksesan suatu elemen variabel array adalah: Nama_var [indeks]; Untuk variabel array nilai_tes, Nilai_tes[1] elemen ke-1 dari nilai_tes Nilai_tes[3] elemen ke-3 dari nilai_tes
Gambar berikut memperlihatkan urutan komponen array dalam memori.
Contoh untuk memasukkan data ke variabel array: nilai_tes[0] = 70; /* contoh 1*/ scanf(“%f”, &nilai_tes[3]); /* contoh 2*/ Contoh pertama merupakan pemberian nilai 70 ke elemen variabel nilai_tes ke-0. Contoh kedua merupakan perintah untuk membaca data bilangan dari keyboard dan diberikan ke elemen nilai-tes yang ke-3. Statemen &nilai_tes[3] menunjukkan “alamat dari elemen variabel nilai_tes yang ke-3”. Perlu diingat bahwa instruksi scanf( ) membutuhkan argumen berupa alamat dari variabel yang digunakan untuk menyimpan nilai masukan.
/* ------------------------------------------------ */ /* File program : baca.c */ /* Contoh pengaksesan array satu dimensi */ #include <stdio.h> #define maks_tes 5 main() { int i; float nilai_tes[maks_tes]; /* deklarasi array */ /* Membaca data dari keyboard */ for (i=0;i<maks_tes;i++) printf("Nilai tes ke-%d: ",i+1); scanf("%f", &nilai_tes[i]); } /* Menampilkan data yang telah dimasukkan */ printf("Nilai tes ke-%d: %f",i+1,nilai_tes[i]);
Program Baca.c Program diatas memperlihatkan cara memasukkan data larik dari keyboard sebanyak lima buah data dan kemudian menampilkan data tersebut ke layar monitor. Data array juga dapat dideklarasikan dalam bentuk variabel yang bersifat statis, serta dapat dilakukan inisialisasi terhadap masing-masing elemen array. Contoh proses deklarasi dan inisialisasinya adalah: static int jum_hari[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; Dengan deklarasi di atas, maka o jum_hari[0] bernilai 31 o jum_hari[1] bernilai 28 o jum_hari[2] bernilai 31 o jum_hari[3] bernilai 30 o dan seterusnya. Nilai yang ada pada array menyatakan banyaknya hari untuk setiap bulan.
Array 2-Dimensi Tipe data array dua dimensi biasa digunakan untuk menyimpan, mengolah maupun menampilkan suatu data dalam bentuk tabel maupun matriks. Untuk data dalam bentuk tabel, seperti yang diperlihatkan pada tabel berikut ini, dimensi pertama array digunakan untuk menyatakan nama Program Studi dan dimensi kedua untuk menyatakan jumlah penerimaan mahasiswa per tahun pada tahun tertentu.
Tabel Jumlah Mahasiswa yang diterima di Jurusan Teknik Elektro UGM.
Untuk mendeklarasikan array agar dapat menyimpan data penerimaan mahasiswa dari tabel di atas adalah sebagai berikut: int Jumlah_mhs [4][3]; Nilai indeks 3 untuk menyatakan banyaknuya tahun dan 4 menyatakan banyaknya program studi.
Array dua dimensi Gambar berikut memperlihatkan ilustrasi untuk memudahkan pemahaman tentang array dua dimensi.
Seperti halnya pada arrau satu dimensi, data array dua dimensi akan ditempatkan pada memori secara berurutan, seperti yang diperlihatkan pada Gambar 7.3. Model penyimpanan array dua dimensi pada memori.
Mengakses Elemen Array 2 Dimensi Untuk mengakses elemen array dua dimensi dapat dilakukan dengan statemen: nama_variabel[indeks pertama][indeks kedua]; - Sebagai contoh: Jumlah_mhs[1][2] = 129; Merupakan instruksi untuk mengakses elemen array pada baris ke-1, kolom ke-2.
Pengakessan elemen array dua dimensi
Dalam program, untuk membaca atau memasukkan data array dua dimensi dari keyboard dapat dilakukan dengan memanfaatkan statemen nested loop. Contoh program berikut memperlihatkan bagaimana memasukkan data sebuah matriks n x n ke memori dan menampilkan hasil pembacaan ke layar monitor.
/* ------------------------------------------------ */ /* File program : baca2.c */ /* Contoh pengaksesan array dua dimensi */ #include <stdio.h> main() { int i,j; int matriks[4][3]; /* deklarasi array */ /* Membaca data dari keyboard */ for (i=0;i<4;i++) for(j=0;j<3;j++) printf("matriks (%d, %d): ",i,j); scanf("%d", &matriks[i][j]); } printf("\n\n"); /* Menampilkan data matriks yang telah dimasukkan */ printf(" Matriks(%d, %d): %d",i,j,matriks[i][j]); printf("\n");
Array of Integer /* INTARRAY.C */ #include <stdio.h> int main() { int values[12]; int index; for (index = 0 ; index < 12 ; index++) values[index] = 2 * (index + 4); printf("The value at index = %2d is %3d\n", index, values[index]); return 0; }
Result of execution The value at index = 0 is 8
AN ARRAY OF FLOATING POINT DATA /* BIGARRAY.C */ #include <stdio.h> char name1[] = "First Program Title"; int main() { int index; int stuff[12]; float weird[12]; static char name2[] = "Second Program Title"; for (index = 0 ; index < 12 ; index++) stuff[index] = index + 10; weird[index] = 12.0 * (index + 7); } printf("%s\n", name1); printf("%s\n\n", name2); printf("%5d %5d %10.3f\n", index, stuff[index], weird[index]); return 0;
Result of execution First program title Second program title 0 10 84.000 1 11 96.000 2 12 108.000 3 13 120.000 4 14 132.000 5 15 144.000 6 16 156.000 7 17 168.000 8 18 180.000 9 19 192.000 10 20 204.000 11 21 216.000
MULTI-DIMENSIONAL ARRAYS #include <stdio.h> int main() { int i, j; int big[8][8], large[25][12]; for (i = 0 ; i < 8 ; i++) for (j = 0 ; j < 8 ; j++) big[i][j] = i * j; /* This is a multiplication table */ for (i = 0 ; i < 25 ; i++) for (j = 0 ; j < 12 ; j++) large[i][j] = i + j; /* This is an addition table */ big[2][6] = large[24][10] * 22; big[2][2] = 5; big[big[2][2]][big[2][2]] = 177; /* this is big[5][5] = 177; */ printf("%5d ", big[i][j]); printf("\n"); /* newline for each increase in i */ } return 0;
Result of execution 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 0 2 5 6 8 10 748 14 0 3 6 9 12 15 18 21 0 4 8 12 16 20 24 28 0 5 10 15 20 177 30 35 0 6 12 18 24 30 36 42 0 7 14 21 28 35 42 49