Modul Struktur Data 2016.pdf

January 29, 2018 | Author: Anonymous | Category: Documents
Share Embed


Short Description

Modul Struktur Data 2016.pdf - Download as PDF File (.pdf), Text File (.txt) or read online....

Description

BAB I POINTER, STRUCTURE, REKURSIF 1.1 Pengertian Pointer Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null, jika pointer tidak berisi data maka disebut null  pointer. Pointer yang tidak diinisialisasi disebut dangling pointer. Lokasi memori tersebut bisa diwakili dengan sebuah variabel at au dapat juga  berupa nilai alamat memori secara langsung. Ilustrasi pointer :

Kita memiliki memiliki variabel X yang berisi nilai karakter “a”, maka oleh compiler C++ nilai “a” ini akan disimpan di suatu alamat tertentu di memori. Sehingga alamat variabel X ini dapat diakses dengan menggunakan statement &X. Jika kita ingin menyimpan alamat dari variabel X ini, kita dapat menggunakan suatu variabel misalnya int alamat_x = &x; Maka alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu 20 disimpan. Variabel alamat_x disebut variabel pointer atau sering disebut dengan pointer saja. Contoh penerapan pointer pada program Sour ce Code

LAB. RPL ITN MALANG 2016

1

BAB I POINTER, STRUCTURE, REKURSIF 1.1 Pengertian Pointer Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null, jika pointer tidak berisi data maka disebut null  pointer. Pointer yang tidak diinisialisasi disebut dangling pointer. Lokasi memori tersebut bisa diwakili dengan sebuah variabel at au dapat juga  berupa nilai alamat memori secara langsung. Ilustrasi pointer :

Kita memiliki memiliki variabel X yang berisi nilai karakter “a”, maka oleh compiler C++ nilai “a” ini akan disimpan di suatu alamat tertentu di memori. Sehingga alamat variabel X ini dapat diakses dengan menggunakan statement &X. Jika kita ingin menyimpan alamat dari variabel X ini, kita dapat menggunakan suatu variabel misalnya int alamat_x = &x; Maka alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu 20 disimpan. Variabel alamat_x disebut variabel pointer atau sering disebut dengan pointer saja. Contoh penerapan pointer pada program Sour ce Code

LAB. RPL ITN MALANG 2016

1

Tampil Tampil an H asil asil

1.2 Perbedaan Pointer Pointer Dengan Variabel Biasa

1.3 Operator Pointer

1.4 Aturan Variabel pointer dapat dideklarasikan dengan tipe dapat apapun. Pendeklarasian variabel pointer dengan tipe data tertentu digunakan untuk menyimpan alamat memori yang berisi data sesuai dengan tipe data yang dideklarasikan, bukan untuk berisi nilai bertipe data tertentu. Tipe data digunakan sebagai lebar data untuk alokasi memori (misalnya char  berarti lebar datanya 1 byte, dst).

LAB. RPL ITN MALANG 2016

2

Jika suatu variabel pointer dideklarasikan bertipe flat, berarti variabel pointer tersebut hanya bisa digunakan untuk menunjuk alamat memori yang berisi nilai  bertipe flat juga.

1.5 Operasi Pada Pointer Antar variabel pointer dapat dilakukan operasi assingment. Contoh 1 : assignment dan sebuah alamat dapat ditunjuk oleh lebih dari 1  pointer. Sour ce Code

Tampil an H asil

Contoh 2 : mengisi variabel dengan nilai yang ditunjuk oleh sebuah variabel  pointer. Sour ce Code

LAB. RPL ITN MALANG 2016

3

Tampil an H asil

Contoh 3 : mengoperasikan isi variabel dengan menyebut alamatnya dengan  pointer Sour ce Code

Tampil an H asil

Contoh 4 : mengisi dan mengganti variabel yang ditunjuk oleh pointer

LAB. RPL ITN MALANG 2016

4

Tampil an H asil

1.6 Pointer Pada Array Pada array, pointer hanya perlu menunjuk pada alamat elemen pertama saja karena letak alamat array sudah berurutan pada memori. Variabel pointer Han  perlu increment. Lihat seperti pada contoh program dibawah ini! Sour ce Code

Tampil an H asil

LAB. RPL ITN MALANG 2016

5

1.7 Pengertian Structure Structure(struktur) adalah kumpulan elemen-elemen data yang digabungkan menjadi satu kesatuan. Masing-masing elemen data tersebut dikenal dengan sebutan field. Field data tersebut dapat memiliki tipe data yang sama ataupun  berbeda. Walaupun field-field tersebut berada dalam satu kesatuan, masingmasing field tersebut tetap dapat diakses secara individual. Field-field tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam operasinya. Misalnya anda ingin mencatat data-data mahasiswa dan pelajar dalam sebuah program. Untuk membedakannya anda dapat membuat sebuah struct mahasiswa yang terdiri dari field nama, mim,  program studi, dan ipk. Serta sebuah record pelajar yang terdiri dari field-field nama, nim, alamat, dan nilai. Dengan demikian akan lebih mudah untuk membedakan keduanya. Bentuk umum : struct nama_struct { tipe_data field1; tipe_data field2; tipe_data fieldN; };

Contoh : struct mahasiswa { char nim[11], nama[50]; char alamat[100]; float ipk; };

1.8 Penggunaan dan Pengaksesan Elemen Terstruktur Untuk menggunakan struktur, tulis nama struktur beserta dengan fieldnya yang dipisahkan dengan tanda titik (“ . “). Misalnya anda ingin menulis mim seorang mahasiswa ke layar maka penulisan yang benar adalah seba gai berikut :  Mahasiswa.nim = “1418126”;  Cout “).  cout nim; Contoh Program Struct!

LAB. RPL ITN MALANG 2016

6

Tampil an H asil

1.9 Pengertian Rekursif Rekursif adalah salah satu metode dalam dunia matematika, Diana definisi sebuah fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursi diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri dan  prosesnya terjadi secara berulang-ulang.

1.10 Implementasi Rekursif 1.10.1 Faktorial

n != 1 if n = 0

anchor

n != n*(n-1)! If n > 0

inductive step

0! = 1

2! = 2*(2-1)! = 2*1! = 2*1 =2

3! = 3*(3-1)! = 3*2! = 3*2 =6

1! = 1*(1-1)! = 1*0! = 1*1 =1  NB : 0! = 1

LAB. RPL ITN MALANG 2016

7

Tabel peningkatan nilai faktorial

Contoh implementasi rekursif dari fungsi faktorial : Sour ce Code

Tampil an H asil

1.10.2 Fibonacci Fibonacci adalah kumpulan deret angka seperti berikut ini “1, 1, 2, 3, 5, 8, 13 , 21, 34, 55, ...”. setiap bilangan setelah bilangan kedua merupakan  jumlah dari. Dengan demikian 2 dari 1+1, 3 dari 2+1, 5 dari 3+2, dan demikian seterusnya yang merupakan definisi rekursif dan secara sistematis dijabarkan sebagai berikut :

LAB. RPL ITN MALANG 2016

8

Jika n = 0, maka Fn = 0, jika n = 1, maka Fn = 1 Jika n > 1, maka Fn = F(n-1)+F(n-2)

Implementasi dari fungsi fibonacci secara logika ekuivalen dengan translasi langsung dari definisi diatas. Karena Fn = n untuk n < 2, kita dapat menyederhanakan dengan pernyataan If.

Contoh  : program rekursif dari fungsi fibonacci

Tampil an hasil

1.10.3 Menara Hanoi Permainan menara Hanoi merupakan contoh klasik Diana solusinya memerlukan rekursif. Permainan ini terdiri dari papan dengan 3 tiang yang diberi label A, B, dan C, dan tumpukan cakram yang disusun dari besar ke kecil (dari bawah ke atas) pada tiang A. Aturannya adalah tidak boleh ada cakram yang lebih besar di atas cakram kecil. Tujuan permainan ini adalah untuk memindahkan seluruh cakram dari tiang A ke tiang C, satu per satu dengan melalui menara B sebagai menara tampungan.

LAB. RPL ITN MALANG 2016

9

Solusi umum untuk permainan ini pada dasarnya adalah rekursif : Bagian I : Pindahkan n-1 cakram yang lebih kecil dari A ke B. Bagian II : Pindahkan sisa cakram dari A ke C. Bagian III : Pindahkan n-1 cakram dari B ke C. Bagian I dan III adalah rekursif. Terapkan solusi lengkap n-1 cakram. Basis dari rekursif ini adalah kasus Diana n = 0, pada kasus ini tidak ada yang dikerjakan.

Contoh : Program Rekursif dari Menara Hanoi

Tampil an H asil

LAB. RPL ITN MALANG 2016

10

Tugas ! Buatlah program faktorial dengan ketentuan : 1. Banyak angka diinputkan manual oleh user 2. Dapat diulang kembali 3. Untuk script dapat dikreasikan sendiri, tidak boleh sama dengan modul

LAB. RPL ITN MALANG 2016

11

BAB II STACK, QUEUE 2.1 Pengertian Stack Stack atau tumpukan adalah saru struktur data yang penting dalam  pemrograman. Stack mempunyai sifat LIFO (Last In First Out) dimana benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contohnya : ketika kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, ketika kita menumpuk Televisi pada saat pertama kali, ma ka elemen Televisi ini menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas , yaitu Compo. Ilustrasinya dapat dilihat pada gambar dibawah ini.

2.2 Operasi-operasi / Fungsi Stack Push

:

Digunakan untuk menambah item pada stack dan ditempatkan  pada tumpukan paling atas

Pop

:

Digunakan untuk mengambil item pada stack pada tumpukan  paling atas

Clear

:

Digunakan untuk mengosongkan stack

Is Empty

:

Fungsi yang digunakan untuk mengecek apakah stack sudah kosong

Is Full

:

Fungsi yang digunakan untuk mengecek apakah stack sudah  penuh

2.3 Stack Dengan Struktur Array 1. 2. 3. 4.

Mendefinisikan stack dengan menggunakan struct Mendefinisikan MAX_STACK untuk maksimum isi stack Membuat variabel array data sebagai implementasi stack secara nyata Mendeklarasikan operasi-operasi / function di atas dan membuat implementasinya

LAB. RPL ITN MALANG 2016

12

2.4 Deklarasi Stack dengan Struct dan Array typedef struct Stack { int top; char data[10][10]; //misalkan : data adalah array of string //berjumlah 10 data, masing-masing string //menampung maksimal 10 karakter };

Deklarasi / buat variabel dari Struct Deklarasi MAX_STACK #define MAX_STACK 10

//hati-hato mulai dari 0, jadi 0-9 bukan 1-10

2.5 Inisialisasi Stack Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang  berarti stack adalah KOSONG! Top adalah suatu variabel penanda dalam Stack yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu  bergerak hingga mencapai Max Of Stack sehingga menyebabkan Stack PENUH! Ilustrasi stack pada saat inisialisasi seperti pada gambar dibawah ini :

2.6 Fungsi Is Full Untuk memeriksa apakah stack sudah penus? Cukup dengan cara memeriksa Top of Stack, jika sudah sama dengan MAX_STACK-1 maka dapat dinyatakan  bahwa stack yang ada sudah penuh, tetapi jika masih lebih kecil dari MAX_STACK-1 maka dapat dinyatakan bahwa stack belum penuh. Untuk ilustrasinya dapat dilihat seperti pada gambar dibawah ini :

LAB. RPL ITN MALANG 2016

13

2.7 Fungsi Push Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack. Tambah satu (increment) nilai Top of Stack terlebih dahulu setiap kali ada  penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan index Top of Stack setelah ditambah sat u seperti  pada gambar dibawah ini :

2.8 Fungsi POP Untuk mengambil elemen teratas dari stack, ambil dahulu nilai elemen teratas stack dengan mengakses Top of Stack, tumpukan nilai yang akan diambil

LAB. RPL ITN MALANG 2016

14

terlebih dahulu, baru didecrement (dikurangi) nilai Top of Sta ck sehingga jumlah elemen stack berkurang seperti pada gambar dibawah ini :

Sintax program fungsi POP

2.9 Fungsi Print Untuk menampilkan semua elemen-elemen stack. Dengan cara looping semua nilai array secara erbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang paling kecil seperti pada gambar dibawah :

LAB. RPL ITN MALANG 2016

15

Sintaks program fungsi Print : void TampilStack() { for (int i = tumpuk.top; i >= 0; i--) { cout jml=0; }; int kosong(Stack *s) { return (s->jml==0); } int penuh(Stack *s) { return (s->jml==MAXSTACK); } void isi(itemType x, Stack *s) { if(penuh(s)) { cout
View more...

Comments

Copyright © 2017 EDOC Inc.