440 likes | 613 Vues
Array , POINTER dan FUNGSI. DPK Review - Dasar Pemrograman Komputer. Konsep Array. Array == Laci ?. Array. Data disimpan dalam suatu struktur , sedemikian rupa sehingga elemen-elemen di dalam struktur tersebut dapat diolah secara kelompok ataupun secara individu .
E N D
Array, POINTER dan FUNGSI DPK Review - DasarPemrogramanKomputer
Konsep Array Array == Laci?
Array • Data 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[Nilai_dim]; 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 • Cara untukmengaksesunsurke-idarisuatu array. Misaluntuki=2; A[2] • Bilaelemen A[2] hendakditampilkandilayar monitor, gunakanstatemensbb: cout << 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};
Array DimensiSatu #include<stdio.h> int main() { inti, j; int n[5] = {15, 9, 1, 7, 5}; for( i=0 ; i< 5 ; i++) { cout << n[i]; for ( j=1; j<=n[i] ; j++) cout << "*"; cout << “\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]
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++) cout << two_dim[i][j]; cout << "\n”; } return(0); } 1 2 3 4 5 10 20 30 40 50 100 200 300 400 500 Program :
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
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 = “xyabcdef”, 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 :
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
Pointer DasarPemrogramanKomputer
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: intx, *ptr; ptr = &x; Untukmerubahisi/nilaiygditunjukoleh pointer: *ptr = 5; /* samaartinyadgnx=5 */
Pointer to Pointer • Pointer to pointer adalahvariabel yang menyimpanalamatdari pointer yang lainnya. • Deklarasi 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;
Akses Array Dengan pointer 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);
Cara AksesArray dengan Pointer • 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: cout << A[2] atau cout <<*(A+2);
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;
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++) cout<<*ptr[i];
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 !
Fungsi/method DasarPemrogramanKomputer
Pemrograman Modular Program Utama SubProgram SubProgram SubProgram SubProgram SubProgram BahasaJavamelengkapifasilitas modular denganmenggunakanfungsi/methodpadasetiapSubProgram. Contohpembagian program menjadibeberapa subprogram.
Pemrograman Modular • Rancangan Top - down denganteknik Sub goal, program besardapatdibagimenjadimodul-modul yang lebihkecil. • Dapatdikerjakanolehlebihdarisatuorangdengankoordinasi yang relatifmudah. • Mencarikesalahanrelatiflebihmudahkarenaalurlogikalebihjelas, dankesalahandapatdilokalisirdalamsatumodul. • Modifikasidapatdilakukan, tanpamenggangu program secarakeseluruhan • Mempermudahdokumentasi • Keuntunganmenggunakanmodul :
KonstruksiFungsi/method • Konstruksifungsi return-value-type function-name( parameter-list ) { return-value-type variableReturn; ....... statements; ......... return variableReturn; } • return-value-type:tipe data yang dikembalikanolehfungsi • Jikatidakdiisimakadianggaptipenya integer (default int) • Jikareturn-value-typediganti void makafungsitidakmengembalikannilai • Parameter-list:berisidaftarnilai yang dikirimkandarifungsipemanggil
KonstruksiFungsi formal parameter Fungsi intmaksimum (intx, inty){ intmaks = x; if ( y > maks) maks = y; returnmaks; } Pemanggil int main () { inta,b; cetak(“Input 2 bilanganbulat : "); cetak(“Bilangan a: "); baca (a); cetak(“Bilangan b "); baca (b); cetak(“Bilanganyglebihbesar:”<<maksimum(a,b)); } Actual parameter Contoh :
Parameter Fungsi • Pengiriman nilai data antar fungsi dapat dilakukan melalui penggunaan parameter fungsi. • Parametermerupakan ‘interface’ antara suatufungsi denganfungsi lain. • Pengirimannilai data melalui parameter dapat berupa: • By-Value Yang dikirimkefungsi lain adalahnilai datanya. • By Location / by reference Yang ditransferkefungsi lain adalahalamat memorinya.
Pengiriman Parameter void Garis (char x) { //x sbg Parameter Formal {inti; // i, x adalah Local Variabel for (i = 1; i<=10; i++) cout<<x; } /*Program Utama*/ Int main() {char A= ’-’; Garis(A);// A disebut Parameter Aktual } Contoh : Pengiriman parameter by value
Pengiriman Parameter void Hitung (int X, int Y, int *P, int *Q) {*P= X + Y; *Q= X * Y; x=0; y=1; cout <<“Dalam Fungsi Hitung nilai X: “<< X << “\n Nilai Y:” <<Y; } Int main() {intX, Y, PA, QA; /*local variabel*/ cout <<“ X=”; cin >> X; cout <<“ Y=”; cin >> Y; Hitung(X,Y,&PA,&QA); cout <<“Dalam Fungsi Main nilai X: “ << X << “\n Nilai Y:” <<Y; cout << “Nilai PA=” << PA; cout << ”\nNilai QA=” << QA; } Contoh : Pengiriman parameter by location