Algoritma dan Struktur Data

Slides:



Advertisements
Presentasi serupa
Pemrograman Terstruktur
Advertisements

PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
STRUKTUR DATA (5) Pointer dan Function
Pointer Konsep Pemrograman.
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.
PERTEMUAN XI OPERASI FILE JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Linked List Entin Martiana.
//program untuk menulis ke dalam file teks kemudian menampilkan isi file ke layar #include Void main() { const int mak 80; file p; // deklarasi file.
8. FILE.
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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
STRUKTUR DATA (5) Pointer dan Function
Single Linked List Yuliana Setiowati, S.Kom.
Alokasi Memori Yuliana Setiowati.
Pemrograman Dasar Pointers.
Pointer Yuliana Setiowati.
PERTEMUAN IX DATA TINGKAT LANJUT JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
STRUKTUR DATA (1).
Algoritma & Struktur Data Abstract Data Type Evangs Mailoa.
LINKED LIST by Yohana N.
Algoritma dan Struktur Data
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.
POINTER.
LINKED LIST.
Teknik Pemrog. Terstruktur 2
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
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.
Informatique Engineering Ahmad Dahlan University May 17, 2004
REPRESENTASI FISIK LIST LINEAR
Algoritma dan Struktur Data
Pertemuan 3 Variabel/Dinamik Pointer
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Struktur Data Khoiriya Latifa, M.Kom.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Alokasi Memori Dinamis
Algoritma dan Struktur Data
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.
Variable Static & Linked List
Algoritma dan Struktur Data
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 */