ARRAY/LARIK Sumber dari : imaru.files.wordpress.com/2008/02/array-struc-pointer.ppt
ARRAY/LARIK Array adalah kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Nilai-nilai data itu disebut dengan elemen. Letak atau urutan dari suatu elemen array ditunjukkan oleh suatu index/subscript. Untuk bahasa C, elemen pertama dari suatu array dimulai dari indeks nol. Suatu array dapat ber-dimensi satu atau lebih.
ARRAY 1 DIMENSI Bentuk umum deklarasi array 1 dimensi: tipe_data nama_variabel[n]; Dimana n adalah jumlah elemen atau ukuran array Contoh: int x[3]={5,3,7}; Artinya Array x bertipe integer, mempunyai 3 elemen yaitu x[0], x[1] dan x[2] x[0] bernilai 5, x[1] bernilai 3, x[2] bernilai 7
Beda array dengan varibel biasa: Sebuah larik/array dapat mempunyai sejumlah nilai, sedang sebuah varibel biasa hanya dihubungkan dengan sebuah nilai saja Dengan array Dengan variabel biasa
ARRAY 2 DIMENSI Mempunyai elemen BARIS & KOLOM Dapat dipakai untuk representasi sebuah MATRIK Struktur data untuk rekapitulasi informasi berdasar baris dan kolom TABEL, misal: penjualan barang Memakai NESTED LOOPING dalam operasinya
ARRAY 2 DIMENSI Bentuk umum penulisan tipe_data variabel[i] [j]; Dimana i dan j adalah ukuran dari array. i menunjukkan jml baris, j menunjukkan jml kolom Jumlah data yang bisa disimpan oleh array 2 dimensi adalah i x j. Contoh: int x[2][4]={8,5,9,8,8,2,1,0}; merepresentsikan matriks dengan 2 baris dan 4 kolom x= 8 5 9 8 8 2 1 0
Array Berdimensi Banyak Bentuk umum deklarasi array dimensi satu: tipe_data nama_var[i][j]..[n]; dimana i, j, n adalah ukuran dari array. Contoh deklarasi: int nilai[4][2][7][21];
Array Tak Berukuran Array dapat dideklarasikan tanpa memberi ukuran (jumlah data dalam array). Dengan syarat: Harus langsung diinisialisasi. Hanya elemen pertama yang boleh tidak berukuran. Contoh: int x[] = {32, 45, 67,21}; int x[][2]={{9,7},{4,2},{8,3}};
STRING
STRING String merupakan bentuk data yang digunakan untuk menampung dan memanipulasi data teks. Pada C, string bukan merupakan satu tipe data tersendiri, melainkan merupakan array dari karakter. Contoh: char mystring[35]; char myname[] = “Hello World”;
Konstanta String Konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda. Contoh: #define abjad “ABeCe” #define judul “Stringku”
Penggunaan Memory Komposisi penyimpanan string dalam memori: Setiap karakter akan menempati memori sebesar 1 byte Byte terakhir otomatis akan berisi karakter NULL (\0)
Variable String Variabel string adalah variabel yang dipakai utuk menyimpan nilai string. Variabel string sebenarnya merupakan variabel array bertipe data char. string = array of char Contoh: char nama[35]; char alamat[60];
Inisialisasi Variabel String Seperti halnya variabel tipe lain, suatu variabel string dapat diinisialisasi dengan elemen terakhirnya berupa karakter NULL. Contoh: char name[]={‘J',’o',‘y',’\0’}; char name[]= “Joy”; Penugasan atau pemberian nilai ke variabel string seperti dibawah ini tidak diperkenankan name = “RINI”;
Array String suatu string dapat dibentuk dari array karakter berdimensi satu Dengan cara yang sama, berarti array string dimensi satu dapat dibentuk dari array karakter dimensi dua. Array string dimensi dua dapat dibentuk dari array karakter dimensi tiga dan seterusnya.
Array String Contoh berikut menunjukkan deklarasi suatu Array string dimensi satu yang dibentuk dari array karakter dimensi dua. (perhatikan bahwa deklarasi ini menggunakan tipe char) #include <stdio.h> main() { int i,j; char Hari[7][10]={"Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"}; for(i=0;i<7;i++) { for(j=0;j<10;j++) printf("%c",Hari[i][j]); printf("\n"); }
Output String Untuk menampilkan isi variabel string ke layar monitor bisa menggunakan perintah puts() atau printf(). Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n‘. Contoh: puts(nama); printf (“%s”, nama);
Input String Untuk memberikan nilai string dari keyboard dapat menggunakan perintah gets() atau scanf(). Contoh: gets(nama); scanf(“%s”, nama); Keterangan: nama adalah variabel bertipe array of char. Didepan nama tidak perlu ada tanda & (operator alamat). Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi.
Contoh #1 #include <stdio.h> main() { char nama[35], kota[15]; printf("Masukkan nama Anda : "); gets(nama); printf("Masukkan kota Anda: "); scanf("%s", kota); printf("\nHallo "); puts(nama); printf("Rumahmu %s ya...\n“,kota); printf("Bye.. Bye..\n"); }
Mengakses String Variabel string merupakan bentuk khusus dari array bertipe char Elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen pada array. Contoh: printf(“%c”, nama[2]);
Fungsi-Fungsi Pada String strcpy(): untuk menyalin nilai string. strlen(): untuk mengetahui panjang nilai string. strcmp(): untuk membandingkan dua nilai string. strcat(): untuk menggabung nilai string. strchr(): untuk mencari nilai karakter dalam string.
Contoh #2 #include <stdio.h> main() { char str01[] = "Piala"; char str02[] = "Pialang"; char str03[20]; printf("Panjang str01 = %d karakter.\n", strlen(str01)); strcpy(str03, "Ini string ke 3"); printf("Isi dari str03 = %s.\n", str03); printf("str01 VS str02 = %d\n", strcmp(str01, str02)); strcat(str01, str02); printf("Isi str01 sekarang = %s.\n", str01); }
STRUCT
STRUCT DEFINISI User defined data type Berisi beberapa variabel yang bisa berbeda tipenya masing-masing disebut elemen Mempunyai nama yang sama Mirip representasi sebuah object beserta properties-nya. Contoh: struct MHS punya elemen untuk NPM, Nama dan Alamat.
STRUCT DEKLARASI Syntax: struct nama_struct { tipe_data_1 nama_var_1; …… }; Contoh: struct barang { char Kode[5]; char Nama[30]; int Unit; float Harga; }
STRUCT CARA PENGAKSESAN Untuk mengakses tiap elemen di dalam sebuah struct digunakan operator titik (.) Syntax: nama_var_struct . nama_var_elemen; Contoh:
NESTED STRUCT Sebuah kondisi dimana di dalam sebuah struct terdapat tipe data berupa struct lagi. Contoh
STRUCT OF ARRAY Sebuah struct yang di dalamnya terdapat variable/ elemen yang bertipe array.
ARRAY OF STRUCT Sebuah array yang setiap data elemennya bertipe struct. Umumnya dipakai untuk menyimpan object data yang terstruktur, misal: data mahasiswa, karyawan, buku, barang, dsb.
POINTER
POINTER Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Sebagai contoh, px adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori 1000, maka px akan berisi 1000.
Contoh ‘J’ FFDB FFDC FFDD FFDE FFDD Alamat_X #include <stdio.h> Main() { char *Alamat_X, X; X=‘J’; Alamat_X=&X; printf(“Nilai varibel X, berada di alamat &p, Alamat_X); } Alamat Memori Nilai yg disimpan FFDB FFDC FFDD FFDE ‘J’ FFDD Alamat_X
Deklarasi Pointer Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char.
Operator pointer Operator Pointer ada dua, yaitu : Operator & · Operator & bersifat unary (hanya memerlukan satu operand saja). · Operator & menghasilkan alamat dari operandnya. Operator * · Operator * bersifat unary (hanya memerlukan satu operand saja). · Operator * menghasilkan nilai yang berada pada sebuah alamat.
Mengakses Isi Suatu Variabel Melalui Pointer Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol *(bersifat unary). Contoh penerapan operator * yaitu : *px yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” . Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut px = &x; y = *px;
Contoh penggunaan operator *
Pada program di atas, dua pernyataan px = &x; y = *px; Output Alamat x = 0012FF78 Isi px = 0012FF78 Isi x = 87 Nilai yang ditunjuk oleh px = 87 Nilai y = 87 Pada program di atas, dua pernyataan px = &x; y = *px; sebenarnya dapat digantikan dengan sebuah pernyataan berupa y = x; Seandainya pada program di atas tidak terdapat pernyataan namun terdapat pernyataan maka y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk ke variabel x. Hal seperti ini harap diperhatikan. Kalau program melibatkan pointer, dan pointer belum diinisialisasi, ada kemungkinan akan terjadi masalah yang dinamakan “bug” yang bisa mengakibatkan komputer tidak dapat dikendalikan (hang). Selain itu tipe variabel pointer dan tipe data yang ditunjuk harus sejenis. Bila tidak sejenis maka akan terjadi hasil yang tidak diinginkan.
Contoh lain #include <stdio.h> main() { int *pu; int nu; int u = 1234; pu = &u; nu = *pu; printf("Alamat dari u = %p\n", &u); printf("Isi pu = %p\n", pu); printf("Isi u = %d\n", u); printf("Nilai yang ditunjuk oleh pu = %d\n", *pu); printf("Nilai nu = %d\n", nu); }
Pada contoh di atas, saat penugasan pu = &u; maka pu akan menunjuk data berukuran 4 byte (tipe float) sekalipun u berukuran 2 byte (tipe int). Oleh karena itu, pernyataan nu = *pu; tidak akan membuat nu berisi nilai u.