1 / 39

Pertemuan 0 7 Pointer dan Array

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

montana
Download Presentation

Pertemuan 0 7 Pointer dan Array

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pertemuan07Pointer dan Array DasarPemrogramanKomputer 2010

  2. Learning Outcomes Padaakhirpertemuan, diharapkanmahasiswa mampu: • Menerapkankonseptipe data POINTER • Menerapkankonseptipe data array untuk data majemukhomogen

  3. Outline Materi Pointer Definisidankarakteristik array Array dimensisatu Inisialisasi array Array berdimensiduadantiga String Manipulasi String

  4. 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 */

  5. Pointer

  6. 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;

  7. Pointer to Pointer

  8. 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.

  9. 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 [ ]

  10. 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.

  11. 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));

  12. 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 :

  13. 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};

  14. 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};

  15. 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;

  16. 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

  17. 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

  18. 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;

  19. 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 :

  20. 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:

  21. 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];

  22. 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}};

  23. 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 :

  24. 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) }

  25. 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]);

  26. 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

  27. 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

  28. 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.

  29. 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.

  30. 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.

  31. 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 :

  32. 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:

  33. ASCII CODE

  34. 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

  35. Latihan • Buat program untukmengalikan 2 matrikdibawahini. Gunakan Array dimensi 2 Buat program untukmenjumlahkan 2 matrikdibawahini. Gunakan Array dimensi 2

  36. 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] = ?

  37. 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 !

  38. 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);

  39. 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);

More Related