Pertemuan 13-14 Pointer dan Array Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.

Презентация:



Advertisements
Похожие презентации
Pertemuan Pengantar Bahasa C Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
Advertisements

Pertemuan Operasi Input Output Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
Pertemuan Operand dan Operator Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
by : R. Heroe Siswojo KeywordJuml MemoriJangkauan Nilai Integer Short Int atau Short Long Int atau Long 16 bit 32 bit s/d
Nonot Wisnu Karyanto. UTS Konsep Dasar Berkas Perangkat Keras dan Parameternya Bloking dan Buffering Penyimpanan Data Organisasi File File Sequensial.
Pertemuan 9-10 Operasi Looping (Pengulangan) Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
Passing Parameters Ada beberapa detail yang seharusnya kita perhatikan dalam passing parameter kepada API function ByVal ataupun ByRef tidak masalah,
Pertemuan Algoritma dan Pemrograman Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
Pertemuan Fungsi Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1.
Algoritma rekursif dan relasi rekurensi. Deskripsi Materi ini membahas tentang algoritma rekursif beserta relasi rekurensnya.
BAB V DATA DEFINITION LANGUAGE 1.Membuat Tabel Sederhana contoh script : DROP TABLE T CUSTOMER; DROP TABLE T PESANAN; CREATE TABLE T CUSTOMER ( ID CUSTOMER.
Architectural Design. FASE PENGEMBANGAN DAN DESAIN SOFTWARE Design Code Generation (manual or automatic) Testing Setiap langkah melakukan transformasi.
PROGRAM PENGOLAH ANGKA (MICROSOFT EXCEL). PROGRAM PENGOLAH ANGKA MICROSOFT EXCEL Program pengolah angka yang bernaung di bawah sistem operasi Windows.
Pertemuan Operasi Seleksi Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6 1.
Berbagai Jenis Lisensi dan Berkembangnya Perangkat Lunak Bebas.
Pertemuan 1 – Pengantar Organisasi Komputer Erwin Christiant S.Kom - Arsitektur dan Organisasi Komputer.
U M L Unified Modeling Language. Penggunaan UML itu sendiri tidak terbatas hanya pada dunia software modeling, bisa pula digunakan untuk modeling hardware.
ORGANISASI BERKAS. Organisasi Berkas ialah suatu teknik atau cara untuk menyatakan dan menyimpan record-record dalam sebuah berkas / file Ada 4 teknik.
Sistem Operasi Konsep Dasar Sistem Operasi Prepared By Team Teaching Presented by WIN & TGW.
HTML singkatan dari HyperText Markup Language menentukan tampilan suatu teks dan tingkat kepentingan dari teks tersebut dalam suatu dokumen. Software.
Транксрипт:

Pertemuan Pointer dan Array Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1

Learning Outcomes Pada akhir pertemuan ini, diharapkan peserta didik akan mampu : Menerapkan konsep tipe data array untuk data majemuk homogen (C3) 2

Outline Materi Pointer Definisi dan karakteristik array Array dimensi satu Inisialisasi array Array sebagai parameter Array berdimensi dua dan tiga String 3

Pointer Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya. Deklarasi pointer : *ptr_name; Dua operator yang sering digunakan pada pointer : * (content of) dan & (address of). Contoh Inisialisasi sebuah integer pointer ke data variable: int i, *ptr; ptr = &i; Untuk merubah isi/nilai yg ditunjuk oleh pointer: *ptr = 5; / * sama artinya dgn i=5 */ 4

Pointer 5

Pointer to Pointer Pointer to pointer adalah variabel yang menyimpan alamat dari pointer yang lainnya. Deklarasi pointer : **ptr_ptr ; Contoh int i, *ptr, **ptr_ptr ; ptr = &i; ptr_ptr = &ptr; Untuk merubah isi/nilai variabel i bisa melalui sbb: *ptr = 5; // sama artinya dgn i=5 ; **ptr_ptr = 9 ; //sama artinya dgn i=9; atau *ptr=9; 6

Pointer to Pointer 7

Array Data disimpan dalam suatu struktur, sedemikian rupa sehingga elemen-elemen di dalam struktur tadi dapat diolah secara kelompok ataupun secara individu. Sifat - sifat Array Homogen Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access Setiap elemen di dalam struktur array dapat dicapai secara individual, langsung ke lokasi elemen yang diinginkan, tidak harus melalui elemen pertama. 8

Array Dimensi Satu Sintaks deklarasi array dimensi satu type nama_arrray[Nilai_dim] ; Contoh :int A[10]; Definisi dari sebuah array terdiri dari 4 komponen yaitu : Type specifier Identifier (nama array) Operator index ([ ]) Nilai dimensi dalam operator [ ] 9

Visualisasi Array Dengan menggunakan contoh deklarasi sebelumnya dapat digambarkan alokasi untuk variabel A Elemen-elemen suatu Array diindeks (subscript) mulai dari A[0]A[1]A[2]A[3]A[4]A[5]A[6]A[7]A[8] A[9]

Cara Akses Array Dua cara yang ekuivalen untuk mengakses unsur ke-i dari suatu array. Misal untuk i=2; *(A+2) atau A[2] A ekuivalen dengan &A[0] atau pointer constant ke elemen-pertama dari array tersebut. Bila elemen A[2] hendak ditampilkan di layar monitor, gunakan statemen sbb: printf(%d,A[2]) atau printf(%d\n,*(A+2)); 11

Mengisi Data Array Mengisi data ke elemen array dilakukan dengan menggunakan assignment operator. Contoh : A[6] = 15; A[3] = 27; Statement A[2] = A[3] - A[6], menghasilkan : 12 A[0]A[1]A[2]A[3]A[4]A[5]A[6]A[7]A[8] A[9] 2715 A[0]A[1]A[2]A[3]A[4]A[5]A[6]A[7]A[8] A[9]

Inisialisasi Array Array dapat diinisialisasi secara eksplisit pada saat didefinisikan dan bisa tidak diberikan nilai dimensinya. Contoh: int B[ ]={1, 2, -4, 8}; Pada contoh diatas Array B memiliki 4 element Contoh; int B[8]={1, 2, -4, 8}; 13

Inisialisasi Array Contoh: int B[4] = { 1, 2, -4, 8, 9 }; //error Contoh diatas error karena nilai dimensi lebih kecil dari jumlah element. Contoh inisialisasi array setelah didefinisikan : int A[5]; (for i=0; i<5;i++) A[i]=0; int B[5]; B[5]={0,0,0,0,0}; 14 Error, mengapa ?

Pointer Constant vs Pointer Variable Pointer variabel : adalah pointer yang isinya bisa dirubah-rubah pada saat run time Pointer constant : adalah pointer yang isinya tdk bisa dirubah pada saat run time Array tipenya adalah Pointer Constant ke element pertama dari array tersebut, oleh karena itu Array bisa mengisi pointer variabel. Contoh: int x=10, y=20; int *ptr; //ptr adalah pointer variable ptr = &x; ptr = &y; 15 Isi ptr bisa dirubah-rubah saat run time

Pointer Constant vs Pointer Variable Contoh: int x=10, y=20; int B[4]; //B adalah Array => pointer constant int *ptr; //ptr adalah pointer variable ptr = &x; //ok ptr = B; //ok ptr++; //ok B = ptr; //error B++; //error B = &y; //error ptr = B; sama artinya dengan ptr = &B[0]; karena B tipenya pointer konstan ke elemen pertama dari array 16

Pointer Constant vs Pointer Variable Pointer konstan hanya bisa di-inisialisasi pada saat didefinisikan. 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 dimensi adl 9 Arr1[0] = 23; //ok int Arr2[10] = {1, 2, 3, 4, 5}; //ok 17

18 Akses Array Akses array dengan pointer int arr[10]; int *ptr_arr; ptr_arr = arr; // sama artinya dengan // ptr_arr = &arr[0]; Untuk mengakses elemen ke-i dapat dilakukan dengan cara berikut: ptr_arr[i]; arr[i]; *(ptr_arr + i); *(arr + i); ptr_arr = ptr_arr + i; *ptr_arr;

Array Contoh : 19 #include void main() { int i; int list_int[10]; for (i=0; i<10; i++){ list_int[i] = i + 1; printf( "list_int[%d] diinisialisasi dengan %d.\n", i, list_int[i]); } #include void main() { int i; int list_int[10]; for (i=0; i<10; i++){ list_int[i] = i + 1; printf( "list_int[%d] diinisialisasi dengan %d.\n", i, list_int[i]); }

Array Dimensi Satu Bahasa C tidak membatasi jumlah dimensi array yang bisa digunakan. Hal ini semata-mata dibatasi jumlah memori komputer yang tersedia. Contoh Array dimensi 1: 20 #include int SIZE = 5; void main() { int i, 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"); } #include int SIZE = 5; void main() { int i, 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"); }

Array Dimensi Dua Sintaks deklarasi array dimensi dua type nama_arrray[baris][kolom] ; Contoh int a[3][4] 21 Row 0 Row 1 Row 2 Column 0Column 1Column 2Column 3 a[ 0 ][ 0 ] a[ 1 ][ 0 ] a[ 2 ][ 0 ] a[ 0 ][ 1 ] a[ 1 ][ 1 ] a[ 2 ][ 1 ] a[ 0 ][ 2 ] a[ 1 ][ 2 ] a[ 2 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 3 ] a[ 2 ][ 3 ] Row subscript Array name Column subscript

Array Dimensi Dua Inisialisasi: menggunakan aturan rmo (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 Dimensi Dua Program : 23 /* Mencetak array 2-D */ #include void main() { int two_dim[3][5] = {1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100, 200, 300, 400, 500}; int i, j; for (i=0; i<3; i++){ for (j=0; j<5; j++) printf("%6d", two_dim[i][j]); printf("\n"); }

Array Dimensi Tiga Sintaks deklarasi array dimensi tiga : type nama_arrray[baris][kolom][depth] ; Contoh: int x[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}}}; void main() { 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]); } 24

Array Of Pointer Sebuah array yang isinya adalah pointer Sintak : type *nama_array [nilai_dim]; Contoh: int i; 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]); 25 Output :

Array of character Array yang isinya character Sintak: char nama_array[nilai_dim]; Contoh: char nama[40]; char ss[20]={B,I,N,U,S}; //20 elemen char ss[ ]= {B,I,N,U,S}; //5 elemen 26

String String adalah Array of character yang diakhiri dengan null character ( \0 atau ASCII nya = 0) String constant atau string literal adalah beberapa character yang diapit oleh tanda petik dua. Contoh: Selamat datang Tipe dari string constant adalah pointer constant, sehingga bisa di-assigned ke array of character sbb : Contoh : char nama[40] = Amir; //ok nama = Amir; //error krn nama adalah pointer konstan Nama[40]= Amir; //error 27

String String constant dapat digabung pada saat dikompilasi: Hello, world Sama artinya dengan : Hello, world Contoh inisialisasi string: char s[ ] = BiNus; Sama artinya dgn : char s[ ] = {B,i,N,u,s,\0}; String bukan tipe data di Bahasa C. 28

Karakter vs String Karakter dalam bahasa C diapit oleh single quote. Tiap karakter menempati satu byte memori. Contoh: char ch= A; char ch=65; //Ascii char ch=0x41; //Ascii String diapit oeh double quote. 29 Sama

Manipulasi string Pada Standard Library Function ( header file string.h ) disediakan fungsi-fungsi untuk memanipulasi string antara lain : strlen() Menghasilkan panjang string, tidak menghitung karakter null. strcpy(s1,s2) Copy s2 ke s1. strncpy(s1,s2,n) Copy n karakter pertama s2 ke s1. strcat(s1,s2) Menambahkan string s2 ke akhir dari string s1. strncat(s1,s2,n) Menambahkan n karakter string s2 ke akhir dari string s1. strcmp(s1,s2) Membandingkan isi string s1 dan s2, jika isinya sama maka nilainya 0. dll masih banyak lagi 30

Manipulasi string Contoh : 31 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 = xyabcdef, s2 = xyz strncpy(s1,s2,4);// jika n>=strlen(s2) efek sama // dengan strcpy() 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 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 = xyabcdef, s2 = xyz strncpy(s1,s2,4);// jika n>=strlen(s2) efek sama // dengan strcpy() 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

Manipulasi string Contoh : 32 /* Copy string */ #include void main() { char str1[] = "Copy a string."; char str2[15]; char str3[15]; int i; strcpy(str2, str1); // dengan strcpy() for (i=0; str1[i]; i++) // tanpa strcpy() 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); } /* Copy string */ #include void main() { char str1[] = "Copy a string."; char str2[15]; char str3[15]; int i; strcpy(str2, str1); // dengan strcpy() for (i=0; str1[i]; i++) // tanpa strcpy() 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); }

ASCII CODE 33

Latihan Buatlah program untuk mengambil 10 bilangan integer dari keyboard dan disimpan dalam array, kemudian Cari bilangan terbesar dalam array tersebut Cari bilangan terkecil dalam array tersebut Hitung nilai rata-rata dari isi Array tersebut Tampilkan hasilnya di layar monitor Buat program untuk: mengambil string dari keyboard membalik susunan karakter dalam string tsb menampilkan string yg sudah dibalik ke layar monitor Contoh: string yg di-input : KASUR dibalik : RUSAK 34

Latihan Buat program untuk menjumlahkan 2 matrik dibawah ini. Gunakan Array dimensi 2 35 Buat program untuk mengalikan 2 matrik dibawah ini. Gunakan Array dimensi 2

Latihan Perhatikan definisi Array dibawah ini sbb: int A[3][4]={1, 3, 2, 4, 5, 7, 6, 8, 9,11, 12 }; int B[3][3]={{1, 2}, {3, 4, 5},{ 7 }}; Berapa isi data dari : 1.A[1][1] = ? 2.B[2][2] = ? 3.A[2][3] = ? 4.B[0][1] = ? 5.A[0][2] = ? 36

Latihan 1.Perhatikan dua statement dibawah: char str[] = Selamat Datang di Binus; char *str = Selamat Datang di Binus; Jelaskan perbedaan kedua identifier str tersebut diatas ! 2.Perhatikan dua statement dibawah: char *name[] = {Ali,Ani,Tono}; char name[][10] = {Ali,Ani,Tono}; Jelaskan perbedaan kedua identifier name tersebut diatas ! 37

Latihan Jelaskan dengan memberikan contoh program sederhana, fungsi / cara kerja dari library function yang ada di sbb: strchr(char *s, int c); strrchr(char *s, int c); strstr(char *s, char *src); 38

Latihan Jelaskan beberapa fungsi yang ada di, 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); 39