1 / 65

Algoritma dan Struktur Data

Algoritma dan Struktur Data. Pointer Pada Struct. REVIEW POINTER. Memori Komputer. Komputer menyimpan variabel program di satu atau beberapa slot pada memori Tiap slot memori memiliki nomor atau alamat tertentu. Tambahkan & sebelum variabel x.

sirius
Télécharger la présentation

Algoritma dan Struktur Data

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. Algoritma dan Struktur Data Pointer Pada Struct

  2. REVIEW POINTER

  3. Memori Komputer • Komputer menyimpan variabel program di satu atau beberapa slot pada memori • Tiap slot memori memiliki nomor atau alamat tertentu

  4. Tambahkan & sebelum variabel x Di slot memori nomer berapa sebuah variabel disimpan ? #include <stdio.h> #include <conio.h> void main() { int x; x = 10; printf("x berada di slot memori nomor : %d", &x); getch(); }

  5. Eksekusi program

  6. Pointer • Nomor atau alamat slot memori di mana variabel disimpan dapat disimpan pada variabel lain • Variabel tersebut dinamakan pointer • Pointer tidak menyimpan isi variabel, tetapi menyimpan alamat / nomor slot di mana isi variabel berada

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

  8. Contoh #include <stdio.h> #include <conio.h> void main() { int x; int *px; x = 10; px = &x; printf("x berada di slot memori nomor : %d", px); getch(); }

  9. Eksekusi program

  10. Mengakses nilai variabel • Nilai sebuah variabel bisa diakses melalui dua cara • Cara 1 : Langsung • Cara 2 : Menggunakan pointer

  11. Contoh #include <stdio.h> #include <conio.h> void main() { int x; int *px; x = 10; px = &x; printf("nilai x diakses secara langsung : %d\n", x); printf("nilai x diakses melalui pointer : %d", *px); getch(); }

  12. Eksekusi program

  13. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  14. An Illustration int i = 5, j = 10; int *ptr; /* declare a pointer-to-integer variable */ int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  15. An Illustration int i = 5, j = 10; int *ptr; int **pptr; /* declare a pointer-to-pointer-to-integer variable */ ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2; Double Indirection

  16. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; /* store address-of i to ptr */ pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  17. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; /* store address-of ptr to pptr */ *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  18. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  19. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  20. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  21. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

  22. An Illustration int i = 5, j = 10; int *ptr; int **pptr; ptr = &i; pptr = &ptr; *ptr = 3; **pptr = 7; ptr = &j; **pptr = 9; *pptr = &i; *ptr = -2;

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

  24. Pointer to Pointer

  25. Operasi pada pointer • Apa arti ptr + 1? • Alamat slot sesudahnya! • Apa arti ptr - 1? • Alamat slot sebelumnya! • Apa arti ptr * 2 and ptr / 2? • Invalid operations!!!

  26. Operasi pada pointer • Apa arti *ptr + 1 • ? • Apa arti *ptr - 1 • ? • Apa arti *ptr * 2 and ptr / 2 • ?

  27. REVIEW Pass by Value & Pass by Reference

  28. Program tanpa fungsi

  29. Perhitungan luas diletakkan di bagian terpisah

  30. Fungsi untuk menghitung luas

  31. Program menggunakan fungsi

  32. Latihan • Variabel atau data untuk main dan hitungluas terletak di bagian memori berbeda • Keduanya tidak berhubungan • Gambarkan keadaan memori untuk main dan hitungluas!

  33. Pass by Value • Jika kita mengubah nilai variabel p di hitungluas, apakah variabel panjang di main nilainya berubah?

  34. Pass by Value

  35. Pass by Value • Pada saat main memanggil fungsi hitungluas, isi variabel panjang dan lebar dicopy kemudian dikirim ke hitungluas • Di fungsi hitungluas, nilai tersebut dimasukkan ke variabel p dan l • Merubah nilai p dan l tidak berakibat apa-apa pada variabel panjang dan luas • Ingat, variabel main dan hitungluas terletak di bagian memori yang berbeda!

  36. Pass by Reference • Bagaimana cara mengubah nilai variabel panjang pada main dari fungsi hitungluas? • Pada saat memanggil hitungluas, jangan mengirim nilai panjang • Kirim alamat variabel panjang ke hitung luas • Hitungluas dapat mengakses & mengubah isi variabel panjang milik main secara indirect

  37. Program menggunakan fungsi

  38. Pass by Reference • Variabel v ada di fungsi F • F memanggil fungsi G • G perlu mengubah nilai v di F • Jangan mengirim nilai v ke G • Kirim alamat v • G dapat mengakses v di F secara indirect • G dapat mengubah nilai v di F

  39. Latihan • Buatlah fungsi untuk menukar isi dua variabel bertipe float!

  40. Solusi

  41. Using a Pass by Value Is like giving someone the key to your home The key can be used by the other person to change the contents of your home!

  42. Additional Terms Pass-by-reference is also called . . . pass-by-address, or pass-by-location Can you explain why?

  43. LATIHAN • Contoh : Pengiriman parameter by location #include <stdio.h> void Hitung (int X, int Y, int *P, int *Q) {*P= X + Y; *Q= X * Y; x=0; y=1; printf(“Dalam Fungsi Hitung nilai X: %d ,\n Nilai Y: %d”, X,Y); } void main() {int X, Y, PA, QA; /*local variabel*/ printf(“ X=”); scanf(“%d”,&X); printf(“ Y=”); scanf(“%d”,&Y); Hitung(X,Y,&PA,&QA); printf(“Dalam Fungsi Main nilai X: %d ,\n Nilai Y: %d”, X,Y); printf(”Nilai PA= %d\n”, PA); printf(”Nilai QA= %d\n”, QA); }

  44. Struct

  45. DefinisiStruct • User defined data type • Berisibeberapavariabel yang bisaberbedatipenyamasing-masingdisebutelemenyang dikelompokkanmenjadisatudengansebuahnamabaru • Miriprepresentasisebuah object beserta properties-nya. Contoh: struct MHS setidaknyapunyaelemenuntuk NPM, NamadanAlamat.

  46. DefinisidandeklarasiStruct Syntax: struct nama_struct { tipe_data_1 nama_var_1; tipe_data_2 nama_var_2; tipe_data_3 nama_var_3; …… };

  47. struct • Penting untuk implementasi ADT / membuat tipe data baru • E.g., struct motor {float volts; //voltage of the motorfloat amps; //amperage of the motorint phases; //# of phases of the motorfloat rpm; //rotational speed of motor }; typedef struct motor motor;

  48. Name of the type struct • E.g., struct motor {float volts;float amps;int phases;float rpm; }; typedef struct motor motor;

  49. Members of the struct struct • E.g., struct motor {float volts;float amps;int phases;float rpm; }; typedef struct motor motor;

More Related