410 likes | 753 Views
Pertemuan 0 7 Pointer dan Array. Dasar Pemrograman Komputer 20 10. Learning Outcomes. Pada akhir pertemuan , diharapkan mahasiswa mampu : Menerapkan konsep tipe data POINTER Menerapkan konsep tipe data array untuk data majemuk homogen. Outline Materi. Pointer
E N D
Pertemuan07Pointer dan Array DasarPemrogramanKomputer 2010
Learning Outcomes Padaakhirpertemuan, diharapkanmahasiswa mampu: • Menerapkankonseptipe data POINTER • Menerapkankonseptipe data array untuk data majemukhomogen
Outline Materi Pointer Definisidankarakteristik array Array dimensisatu Inisialisasi array Array berdimensiduadantiga String Manipulasi String
Pointer • Pointer adalahvariabel yang menyimpanalamatdarivariabel yang lainnya. • Deklarasi pointer : <type> *ptr_name; • Dua operator yang seringdigunakanpada pointer : * (content of) dan & (address of). • Contoh Inisialisasisebuah integer pointer ke data variable: inti, *ptr; ptr = &i; Untukmerubahisi/nilaiygditunjukoleh pointer: *ptr = 5; /* samaartinyadgni=5 */
Pointer to Pointer • Pointer to pointer adalahvariabel yang menyimpanalamatdari pointer yang lainnya. • Deklarasi pointer to pointer: <type> **ptr_ptr ; • Contoh inti, *ptr, **ptr_ptr ; ptr = &i; ptr_ptr = &ptr; Untukmerubahnilaivariabelibisamelaluisbb: *ptr = 5; //samaartinyadgni=5 ; **ptr_ptr = 9; //samaartinyadgni=9; atau *ptr=9;
Array • Arraymerupakansekumpulannilai data homogin yang disimpandalamsuatustruktur, sedemikianrupasehinggaelemen-elemendidalamstrukturtersebut dapatdiolahsecarakelompokataupunsecaraindividu. • Sifat - sifat Array • Homogen Seluruhelemendidalamstruktur array mempunyaitipe data yang sama. • Random Access Setiapelemendidalamstruktur array dapatdicapaisecara individual, langsungkelokasielemen yang diinginkan, tidakharusmelaluielemenpertama.
Array DimensiSatu • Sintaksdeklarasi array dimensisatu type nama_arrray[jumlah_elemen]; Contoh : inta[10]; • Definisidarisebuah array terdiridari 4 komponenyaitu : • Type specifier • Identifier (nama array) • Operator index ([ ]) • Nilaidimensidalam operator [ ]
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Visualisasi Array Denganmenggunakancontohdeklarasisebelumnyadapatdigambarkanalokasiuntukvariabel A Elemen-elemensuatu Array diindeks (subscript) mulaidari 0.
Cara Akses Array • Duacara yang ekuivalenuntukmengaksesunsurke-idarisuatu array. Misaluntuki=2; *(A+2) atau A[2] • A ekuivalendengan &A[0] atau pointer constant keelemen-pertamadari array tersebut. • Bilaelemen A[2] hendakditampilkandilayar monitor, gunakanstatemensbb: printf(“%d”,A[2]) atau printf(“%d\n”,*(A+2));
A[0] A[0] A[1] A[1] A[2] A[2] A[3] A[3] A[4] A[4] A[5] A[5] A[6] A[6] A[7] A[7] A[8] A[8] A[9] A[9] 27 27 15 15 12 Mengisi Data Array Mengisi data keelemen array dilakukandenganmenggunakan assignment operator. Contoh : A[6] = 15; A[3] = 27; Statement A[2] = A[3] - A[6], menghasilkan :
Inisialisasi Array • Array dapatdiinisialisasisecaraeksplisitpadasaatdidefinisikandanbisatidakdiberikannilaidimensinya. • Contoh: int B[ ]={1, 2, -4, 8}; • Padacontohdiatas Array B memiliki 4 element • Contoh; int B[8]={1, 2, -4, 8};
Inisialisasi Array Error, mengapa ? • Contoh: int B[4] = { 1, 2, -4, 8, 9 }; //error ERROR karenanilaidimensilebihkecildarijumlah element. • Contohinisialisasi array setelahdidefinisikan : int A[5]; (for i=0; i<5;i++) A[i]=0; int B[5]; B[5]={0,0,0,0,0};
Pointer Constant vs Pointer Variable Isi ptr bisa dirubah-rubah saat run time • Pointer variabel : adalah pointer yang isinyabisadirubah-rubahpadasaat run time • Pointer constant : adalah pointer yang isinyatdkbisadirubahpadasaat run time • Array tipenyaadalah Pointer Constant ke element pertamadari array tersebut, olehkarenaitu Array bisamengisi pointer variabel. • Contoh: • int x=10, y=20; • int *ptr; //ptradalah pointer variable • ptr = &x; • ptr = &y;
Pointer Constant vs Pointer Variable • Contoh: • int x=10, y=20; • intb[4]; //badalah Array => pointer constant • int *ptr; //ptradalah pointer variable • ptr = &x; //ok • ptr = b; //ok • ptr++; //ok • b= ptr; //error • b++; //error • b= &y; //error • ptr = b; samaartinyadenganptr = &b[0]; karenab tipenya pointer konstankeelemenpertamadari array
Pointer Constant vs Pointer Variable • Pointer konstanhanyabisadi-inisialisasipadasaatdidefinisikan. • Contoh: int Arr1[10]; Arr1[10] = {1, 2, 3, 4, 5}; //error Arr1 = {1, 2, 3, 4, 5}; //error Arr1[10] = 12; //error krn max dimensiadl 9 Arr1[0] = 23; //ok int Arr2[10] = {1, 2, 3, 4, 5}; //ok
Akses Array Akses array dengan pointer intarr[10]; int *ptr_arr; ptr_arr = arr; // samaartinyadgn // ptr_arr = &arr[0]; Untukmengakseselemenke-idapatdilakukandengancaraberikut: ptr_arr[i]; arr[i]; *(ptr_arr + i); *(arr + i); ptr_arr = ptr_arr + i; *ptr_arr;
Array #include <stdio.h> int main() { inti; intlist_int[10]; for (i=0; i<10; i++){ list_int[i] = i + 1; printf( "list_int[%d] diinisialisasidengan %d.\n", i, list_int[i]); } return(0); } Contoh :
Array DimensiSatu #include<stdio.h> int main() { const SIZE = 5; inti, j; int n[SIZE] = {15, 9, 1, 7, 5}; for( i=0 ; i< SIZE ; i++) { printf("%5d ", n[i]); for ( j=1; j<=n[i] ; j++) printf("%c",’*’); printf("\n"); } return(0); } Bahasa C tidakmembatasijumlahdimensi array yang bisadigunakan. Hal inisemata-matadibatasijumlahmemorikomputer yang tersedia. Contoh Array dimensi 1:
Column 0 Column 1 Column 2 Column 3 Row 0 Row 1 Row 2 Column subscript Array name a[2][1] a[0][0] a[1][0] a[0][1] a[1][1] a[2][0] a[0][3] a[1][2] a[2][2] a[1][3] a[2][3] a[0][2] Row subscript Array DimensiDua • Sintaksdeklarasi array dimensidua type nama_arrray[baris][kolom]; • Contoh int a[3][4];
1 2 3 4 1 0 3 4 Array DimensiDua • Inisialisasi: menggunakanaturanrmo (row major order). • Contoh: • int b[2][2] = {1, 2, 3, 4 }; • int b[2][2] = { { 1, 2 }, { 3, 4 } }; • int b[2][2] = { { 1 }, { 3, 4 } }; • int x[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; • int x[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
Array DimensiDua /* Mencetak array 2-D */ #include <stdio.h> int main() { inttwo_dim[3][5] = {{1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500}}; inti, j; for (i=0; i<3; i++){ for (j=0; j<5; j++) printf("%d ", two_dim[i][j]); printf("\n"); } return(0); } 1 2 3 4 5 10 20 30 40 50 100 200 300 400 500 Program :
Array DimensiTiga • Sintaksdeklarasi array dimensitiga : type nama_arrray[baris][kolom][depth]; • Contoh: • intx[3][2][4] = {{{1,2,3,4}, {5,6,7,8}}, {{11,12,13,14}, {15,16,17,18}}, {{21,22,23,24}, {25,26,27,28}}}; int main() { int x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}}, {{9, 7, 5}, {5, 7, 2}, {9}}, {{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}}, {{0}, {1}, {0, 1, 9}}}; printf(“%5d”, x[2][1][3]); return (0) }
Array Of Pointer Output : 1 2 3 5 • Sebuah array yang isinyaadalah pointer • Sintak : type *nama_array [nilai_dim]; • Contoh: inti; int *ptr[4]; int x=1, y=2, z=3, w=5; ptr[0]=&x, ptr[1]=&y; ptr[2]=&z; ptr[3]=&w; for(i=0;i<4;i++) printf("%d ",*ptr[i]);
Array of character • Array yang isinya character • Sintak: char nama_array[nilai_dim]; • Contoh: char nama[40]; char ss[20]={‘F’,’T’,’-’,’U’,’B’}; //20 elemen char ss[ ]= {‘F’,’T’,’-’,’U’, ’B’}; //5 elemen
String • String adalahArray of character yang diakhiridengannull character ( ‘\0’ atau ASCII nya = 0) • String constant ataustring literal adalahbeberapa character yang diapitolehtandapetikdua. • Contoh: ”Selamatdatang” • Tipedari string constant adalah pointer constant, sehinggabisadi-assigned kearray of charactersbb: • Contoh : char nama[40] = ”Amir”; //ok nama = ”Amir”; //error krnnamaadalah pointer konstan nama[40]= “Amir”; //error
String • String constant dapatdigabungpadasaatdikompilasi: ”Hello,” ” world” Samaartinyadengan:”Hello, world” • Contohinisialisasi string: char s[ ] = ”FT-UB”; Samaartinyadgn:char s[ ] = {’F’,’T’,’-’,’U’,’B’,’\0’}; • Stringbukantipe data diBahasa C.
Karaktervs String Sama • Karakterdalambahasa C diapitolehsingle quote. Tiapkaraktermenempatisatu byte memori. • Contoh: char ch=’A’; char ch=65; //Ascii desimal char ch=0x41; //Ascii hexadesimal • String diapitoehdouble quote.
Manipulasi string • Pada Standard Library Function ( header file string.h ) disediakanfungsi-fungsiuntukmemanipulasi string antara lain : • strlen() Menghasilkanpanjang string, tidakmenghitungkarakter null. • strcpy(s1,s2) Copy s2 ke s1. • strncpy(s1,s2,n) Copy n karakterpertama s2 ke s1. • strcat(s1,s2) Menambahkanstring s2 keakhirdari string s1. • strncat(s1,s2,n) Menambahkann karakter string s2 keakhirdari string s1. • strcmp(s1,s2) Membandingkanisi string s1 dan s2, jikaisinyasamamakanilainya 0. • Dll.
Manipulasi string char s1[ ] = “abcdef”;char s2[ ] = “xyz”; strlen(“nana”); // 4 strcmp(“nana”, “nana”) // bernilai 0 strcpy(s1,s2); // s1 = “xyz”, s2 = “xyz” strncpy(s1,s2,2); // s1 = “xy”, s2 = “xyz” strncpy(s1,s2,4); // jika n>=strlen(s2) efeksama // denganstrcpy() s1 = “xyz” strcat(s1,s2); // s1=“abcdefxyz”, s2=“xyz” strncat(s1,s2,2); // s1=“abcdefxy”, s2=“xyz” s1 = “Happy”; s2 = “New Year” strcat( s1, s2 ) // s1= “Happy New Year” strncat( s3, s1, 6 ) // s1= “Happy” strcat( s3, s1 ) // s1= “Happy Happy New Year” Contoh :
Manipulasi string /* Copy string */ #include <stdio.h> #include <string.h> int main() {char str1[] = "Copy a string."; char str2[15], str3[15];inti; strcpy(str2, str1); // denganstrcpy() for (i=0; str1[i]; i++) // tanpastrcpy() str3[i] = str1[i]; str3[i] = `\0'; //menampilkan str2 dan str3 printf("The content of str2: %s\n", str2); printf("The content of str3: %s\n", str3); return(0); } Contoh:
Latihan • Buatlah program untukmengambil 10 bilangan integer dari keyboard dandisimpandalam array, kemudian • Caribilanganterbesardalam array tersebut • Caribilanganterkecildalam array tersebut • Hitungnilai rata-rata dariisi Array tersebut • Tampilkanhasilnyadilayar monitor • Buat program untuk: • mengambil string dari keyboard • membaliksusunankarakterdalam string tsb • menampilkan string ygsudahdibalikkelayar monitor Contoh: string ygdi-input : KASUR dibalik: RUSAK
Latihan • Buat program untukmengalikan 2 matrikdibawahini. Gunakan Array dimensi 2 Buat program untukmenjumlahkan 2 matrikdibawahini. Gunakan Array dimensi 2
Latihan Perhatikandefinisi Array dibawahinisbb: inta[3][4]={1, 3, 2, 4, 5, 7, 6, 8, 9,11, 12 }; intb[3][3]={{1, 2}, {3, 4, 5} ,{ 7 }}; Berapaisi data dari : • a[1][1] = ? • b[2][2] = ? • a[2][3] = ? • b[0][1] = ? • a[0][2] = ?
Latihan • Perhatikandua statement dibawah: char str[] = ”SelamatDatangdiUB”; char *str = ”SelamatDatangdiUB”; Jelaskanperbedaankedua identifier strtersebutdiatas ! • Perhatikandua statement dibawah: char *name[] = {”Ali”,”Ani”,”Tono”}; char name[][10] = {”Ali”,”Ani”,”Tono”}; Jelaskanperbedaankedua identifier name tersebutdiatas !
Latihan • Jelaskandenganmemberikancontoh program sederhana, fungsi / carakerjadari library function yang adadi <string.h> sbb: • strchr(char *s, int c); • strrchr(char *s, int c); • strstr(char *s, char *src);
Latihan • Jelaskanbeberapafungsidi<ctype.h>, sbb: • isalpha(int c); • isupper(int c); • islower(int c); • isdigit(int c); • isalnum(int c); • isspace(int c); • toupper(int c); • tolower(int c);