Algoritma dan Struktur Data

Slides:



Advertisements
Presentasi serupa
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
Advertisements

Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
Pointer.
Pertemuan 2 STRUKTUR DATA LINKED LIST
Struktur Sugeng Supriyadi, M.Kom.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Linked List Entin Martiana.
1 Pointer wijanarto. 2 Topik Introduction to Pointers Pointers dan Parameter Fungsi.
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Algoritma & Struktur Data Pointer Evangs Mailoa.
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Operasi pada pohon biner
Single Linked List Yuliana Setiowati, S.Kom.
Alokasi Memori Yuliana Setiowati.
Pemrograman Dasar Pointers.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
LINKED LIST by Yohana N.
STRUKTUR DATA Pointer dan Function
Algoritma dan Struktur Data
Algoritma dan Struktur Data
P O I N T E R. Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga.
STRUKTUR DATA Structure.
Bab 8 Pointer Riyanto Sigit Konsep Dasar Pointer  Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain  Variabel.
Pertemuan ketujuh Struktur data st3telkom.ac.id
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Algoritma dan Struktur Data
POINTER.
Teknik Pemrog. Terstruktur 2
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data Pointer Pada Struct. Definition — Structure Beberapa variabel (dapat berbeda tipe) yang dikelompokkan menjadi satu dengan.
ASD Alokasi Memori Dinamis.  Untuk menggunakan sebuah variabel, kita harus mendeklarasikannya dulu  Pada saat deklarasi, slot memori dipesan untuk dipakai.
Pertemuan 12 Array (Larik) & struct Erna Sri Hartatik
Informatique Engineering Ahmad Dahlan University May 17, 2004
Pertemuan 21 POINTER Bag.1 Dasar Pemrograman Renni Angreni, S.Kom.
REPRESENTASI FISIK LIST LINEAR
Algoritma dan Struktur Data
POINTER
Pertemuan 3 Variabel/Dinamik Pointer
STRUKTUR DATA array.
Struktur Manfaat tipe data struct secara umum adalah untuk menyimpan paket (sekumpulan) data ke dalam satu buah nama variabel saja. Kumpulan data di dalam.
Pointer, Array dan String
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
POINTER (VAR.PENUNJUK)
Pointer Pertemuan 10 Bahasa C.
P O I N T E R.
Pointer Oleh : Sri Supatmi,S.Kom.
STRUCT OF ARRAY.
Program komputer Sebuah program komputer yang ditulis dengan bahasa apapun dapat dipandang sebagai sebuah himpunan operasi yang dikerjakan pada data-data.
Struktur Data Khoiriya Latifa, M.Kom.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
Algoritma dan Struktur Data
Struktur Data Khoiriya Latifa, M.Kom.
Alokasi Memori Dinamis
Algoritma dan Struktur Data
ALGORITMA & STRUKTUR DATA I
Pointer Oleh : Sri Supatmi,S.Kom.
Algoritma dan struktur data
KONSEP DASAR STRUKTUR DATA
STRUCTURE Struktur (Structure = struct) merupakan suatu struktur data yang terdiri dari satu atau lebih variabel yang bertipe data.
POINTER (VAR.PENUNJUK)
STRUKTUR DATA Array.
Variable Static & Linked List
POINTER
Pointer.
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Algoritma dan Struktur Data Pertemuan 6 Alokasi Memori Dinamis

Alokasi Memori Dinamis Untuk menggunakan sebuah variabel, kita harus mendeklarasikannya dulu Pada saat deklarasi, slot memori dipesan untuk dipakai oleh variabel tersebut Setelah dideklarasikan, variabel bisa digunakan Ada cara untuk membuat variabel tanpa deklarasi!!! Variabel tersebut baru dibuat saat dibutuhkan ketika program berjalan!!! Setelah selesai digunakan, variabel tersebut harus dihapus!!!

Cara membuat variabel tanpa deklarasi Deklarasikan pointer yang menunjuk variabel yang akan dibuat Jika pada saat program berjalan variabel tersebut dibutuhkan Pesan slot memori untuk menyimpan variabel (malloc) Simpan alamat slot memori pada pointer no 1 Gunakan variabel sesuai kebutuhan dengan cara akses tak langsung melalui pointer Hapus variabel / lepas slot memori setelah variabel selesai digunakan (free)

Karakteristik Alokasi Memori Dinamis Memori dapat dipesan atau dilepas sesuai kebutuhan pada saat program berjalan Memesan slot memori menggunakan fungsi malloc Melepas slot memori menggunakan fungsi free

malloc: memesan memori untuk variabel baru (tipedata *) malloc(size); Membuat pointer yang menunjuk slot memori yang dipesan. Tipe pointer sesuai tipe variabel yang dibuat Banyaknya slot memori yang dipesan untuk menyimpan variabel baru ( gunakan fungsi sizeof()untuk mengetahui ukuran variabel). malloc()prototype ada di stdlib.h

free: menghapus variabel setelah digunakan void free(pMemBlock); Pointer yang menunjuk variabel free() ada di stdlib.h IMPORTANT!!!!!!: jangan free()pointer yang tidak pernah di malloc() Jangan free() pointer yang sudah difree Selalu free()variabel yang sudah selesai digunakan. Jika tidak, akan menyebabkan: ‘memory leak’ – BAD!

Contoh tanpa malloc() #include <stdio.h> #include <conio.h> void main() { float jari, luas; jari = 7; luas = 3.14 * jari * jari; printf("lingkaran dengan jari-jari : %f\n", jari); printf("luasnya : %f\n", luas); getch(); }

Contoh dengan malloc() #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { //deklarasi pointer float *pjari, *pluas; //memesan slot memori untuk membuat variabel jari & luas. Simpan alamatnya pada pointer pjari = (float *)malloc(sizeof(float)); pluas = (float *)malloc(sizeof(float)); if (pjari != NULL && pluas != NULL){//jika berhasil memesan memori //gunakan variabel jari dan luas melalui pointer *pjari = 7; *pluas = 3.14 * *pjari * *pjari; printf("lingkaran dengan jari-jari : %f\n", *pjari); printf("luasnya : %f\n", *pluas); //menghapus atau melepaskan slot memori yang ditunjuk oleh pjari dan pluas free(pjari); free(pluas); } getch();

Contoh tanpa malloc() #include <stdio.h> #include <conio.h> struct motor{ float amps; float volts; }; typedef struct motor motor; void main() { motor m; m.volts = 4.5; m.amps = 6; printf("volts = %f", m.volts); printf("amps = %f", m.amps); getch(); }

Latihan : dengan malloc? #include <stdio.h> #include <conio.h> #include <stdlib.h> struct motor{ float amps; float volts; }; typedef struct motor motor; void main() { motor *m; ?????? }

Peringatan!!! - malloc Jika malloc() gagal memesan memori, akan mengembalikan NULL Selalu cek apakah malloc() mengembalikan NULL: char *pMsg; pMsg = (char *) malloc (sizeof(char)); if (pMsg == NULL) { printf(“Insufficient memory. Error Exit\n”); return -1; }

Peringatan!!! malloc() Selalu free() variabel yang sudah selesai dipakai Jika tidak akan menyebabkan ‘memory leaks’ Bisa terjadi crash karena kehabisan memori!

Peringatan!!! - free Hati – hati!!! : Jangan pernah mem-free slot memori yang sudah di free! char *pMsg, *pWord, aLetter; pMsg = (char *) malloc (20 * sizeof(char); pWord = pMsg; /* both point to same byte 0 */ strcpy(pWord, “Welcome!\n”); /* use the memory */ free(pMsg); /* Free the memory. */ free(pWord); /* RUNTIME ERROR! No block to free! */

Peringatan!!! - free free()membebaskan slot memori yang ditunjuk sebuah pointer. Jika ada pointer lain yang menunjuk ke alamat slot yang sama, maka pointer tersebut menjadi invalid! Jangan difree lagi! char *pMsg, *pWord, letr = ‘A’; pMsg = (char *) malloc (20 * sizeof(char)); /* reserve a memory block */ pWord = pMsg; /* another pointer to block*/ pMsg = &aLetter; /* pMsg now points to letr */ free(pWord); /* free the memory block */