MAKALAH STRUKTUR DATA Dosen Pengampuh Mata kuliah : Lukman Anas, S.Kom.,M.T. RANGKUMAN MATERI PERKULIAHAN OLEH : NURMAN AWALUDDIN NIM : 105841109119 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MAKASSAR TAHUN 2021 i KATA PENGANTAR Puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya sehingga saya dapat menyelesaikan tugas makalah yang berjudul rangkuman materi perkuliahan ini tepat pada waktunya. Adapun tujuan dari penulisan dari makalah ini adalah untuk memenuhi tugas mata kuliah struktur data. Selain itu, makalah ini juga bertujuan untuk menambah wawasan tentang materi perkuliahan yang telah diberikan bagi para pembaca dan juga bagi penulis. Saya mengucapkan terima kasih kepada bapak Lukman Anas, S.Kom.,M.T., selaku dosen mata kuliah struktur data yang telah memberikan tugas ini sehingga dapat menambah pengetahuan dan wawasan sesuai dengan bidang studi yang saya tekuni. Saya juga mengucapkan terima kasih kepada semua pihak yang telah membagi sebagian pengetahuannya sehingga saya dapat menyelesaikan makalah ini. Saya menyadari, makalah yang saya tulis ini masih jauh dari kata sempurna. Oleh karena itu, kritik dan saran yang membangun akan saya nantikan demi kesempurnaan makalah ini. Selayar, 11 Januari 2021 Penulis ii DAFTAR ISI JUDUL i KATA PENGANTAR ii DAFTAR ISI iii BAB I PENDAHULUAN 1 A. Latar Belakang masalah B. Rumusan masalah C. Tujuan 1 1 1 BAB II PEMBAHASAN A. B. C. D. E. F. G. H. 2 Data Dan Struktur Data Deklarasi Data Array String Record List Tree Terminology Stack 2 2 3 4 5 6 7 8 BAB III PENUTUP 13 A. Kesimpulan B. Saran 13 13 DAFTAR PUSTAKA 14 iii BAB I PENDAHULUAN A. Latar Belakang Pandemi Covid-19 memberikan dampak yang sangat besar bagi seluruh umat manusia , Karena sangat berbahaya terhadap kesehatan. Kita diharuskan menjalani karantina dan melakukan “Social Distancing” akibat-nya seluruh sektor menjadi tertutup utama-nya sector ekonomi, pendidikan dan pariwisata, berbagai kegiatan dan rencana menjadi terhalang bahkan bisa saja dibatalkan. Pandemi Covid-19 di Indonesia masih tak kunjung usai. Imbasnya, mahasiswa mengikuti pembelajaran jarak jauh atau kuliah daring. Pelaksanaan kuliah daring secara penuh tentunya menjadi hal baru untuk sebagian orang. Hal ini membawa kecemasan dalam menjalani proses perkuliahan. Tidak adanya tatap muka langsung dengan pengajar atau dosen membuat materi yang dibeikan kurang bisa dipahami, oleh karena itu perlu adanya saran untuk menambah pemahaman mahasiswa. B. Rumusan Masalah 1. Apa yang dimaksud dengan tipe data? 2. Apa saja bagian – bagian dari struktur data? 3. Apa itu Stack? 4. Bagaimana cara penerapan dan deklarasi stack? C. Tujuan Pembahasan 1. Memaparkan kembali materi yang telah disampaikan pada perhkuliahan jarak jauh atau daring sehingga dapat membantu dalam proses belajar. 2. Memahami terminologi yang terkait dengan struktur data stack. 3. Memahami operasi-operasi yang ada dalam stack. 1 BAB II PEMBAHASAN A. DATA DAN STRUKTUR DATA Data adalah fakta berupa angka, karakter, symbol, gambar, tanda-tanda, isyarat, tulisan, suara, bunyi yang merepresentasikan keadaan sebenarnya yang selanjutnya digunakan sebagai masukan suatu Sistem Informasi. Jenis data sederhana antara lain : a. Numerik, terdiri dari : Numerik integer (bilangan bulat) Numerik real (bilangan riil) b. Karakter, terdiri dari : Alfabet : a .. z, A .. Z Angka : 0 .. 9 Simbol khusus : + ? ‘ ! [ ] { } … dll c. Boolean (logika), terdiri dari : True False Identifier dalam bahasa pemrograman, item data diidentifikasi menurut namanya, bukan menurut alamat lokasinya dalam memori, Identifier akan merupakan konstanta jika ia selalu dikaitkan dengan nilai data yang sama. Identifier akan merupakan variabel jika nilai datanya yang terkait bisa berubah. Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Beberapa struktur data : Array (larik) String Record List (daftar) Tree SIMPLE DATA TYPE DATA STRUCTURES Kombinasi dari item data individual Membentuk item data lain Item data individual B. DEKLARASI DATA a. Jenis data konstanta dan variabel harus didefinisikan dalam program sehingga : operasi yang tepat dapat dijalankan pada nilai data dan Jumlah ruang penyimpanan yang tepat bisa ditentukan 2 b. Statement untuk mendefinisikan jenis data disebut declarative statement c. Beberapa bahasa pemrograman memiliki sintaks pendeklarasian yang berbeda d. Beberapa contoh program (pendeklarasian data) yang akan diberikan ditulis dalam pseudo-code. Contoh sebagai berikut: Constants pi = 3.141592654 Variables i, qty harga_satuan, harga_beli status nama : : : : integer real boolean character(25) D. ARRAY (LARIK) a. Array 1 Dimensi Set item data yang disusun secara baik menjadi rangkaian dan diacu atau ditunjuk oleh satu identifier Contoh : Nilai = (56 42 89 65 48) Item data individual dalam array bisa ditunjuk secara terpisah dengan menyatakan posisinya dalam array itu 1) Nilai(1) menunjuk 56 2) Nilai(2) menunjuk 42 Bilangan yang ditulis dalam tanda kurung menandakan posisi item individual dalam array (disebut juga subscript / indeks) Dekarasi array 1 dimensi : Variables Nilai A : array [1..5] of integer : array [1..4] of real b. Array 2 Dimensi Variabel bisa digunakan sebagai subscript, misalnya Nilai(i). 1) Jika i = 2 maka menunjuk ke Nilai(2) yaitu 42 2) Jika i = 4 maka menunjuk ke Nilai(4) yaitu 65 Item data individual dalam suatu array sering disebut elemen Matriks 1) Array yang hanya berisi bilangan dan tidak ada data alfabetisnya Klasifikasi Array 1) Array 1 dimensi 2) Array multi dimensi Deklarasi array 2 dimensi : Variables A : array [1..5, 1..2] of integer 3 c. Array Multi Dimensi Mempunyai elemen-elemen yang disusun ke dalam baris dan kolom dan digunakan sebagai tabel data Contoh : Nilai ujian dari mahasiswa satu kelas untuk beberapa mata kuliah bisa ditempatkan dalam array 2 dimensi. d. Penanganan Array Metode dasar penanganan array : 1) Mencari nilai terbesar 2) Mencari nilai terkecil 3) Menghitung nilai rata-rata 4) Menghitung nilai total 5) Menghitung jumlah nilai di bawah rata-rata Menyortir Array (Sort) 1) Buble sort 2) Straight selection sort Mencari/Meneliti Array (Search) 1) Linear search Contoh : Nilai ujian mahasiswa akan dibaca dalam array. Kemudian akan ditampilkan nilai terbesar, nilai terkecil, nilai rata-rata, nilai total, dan jumlah nilai di bawah rata-rata. Tahapan penanganan array 1) Input nilai data ke dalam array 2) Mengkalkulasi nilai terbesar, terkecil, total, dan rata-rata 3) Mengkalkulasi jumlah nilai di bawah rata-rata 4) Menampilkan hasilnya (output) E. STRING a. Rangkaian karakter yang ditangani sebagai unit data tunggal b. Contoh (string literal) : “ABC, 32fl2. 3h” “Kucing dalam karung” c. Contoh (variabel string) : A = “Universitas” B = “Gunadarma” d. Berada dalam bentuk array karakter 1 dimensi e. Fixed-length string (String yang panjangnya tetap) Mempunyai jumlah tempat karakter yang tetap yang tersedia (bisa digunakan) untuk penyimpanan data 4 posisi karakter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 isi A N D R I A M R I I N A J O K O D E D I komentar string ke 1 string ke 2 string ke 3 string ke 4 string ke 5 Variables nama : string[5] f. Variable-length string (String yang panjangnya berubah-ubah) Memberi data sejumlah spasi (ruang) sesuai yang ia perlukan posisi karakter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 isi A N D R I * A M R I * I N A * J O K O * A L * komentar string ke 1 string ke 2 string ke 3 string ke 4 string ke 5 tempat sisa Variables nama : string g. Operasi Pada String Concatenation 1. Penggabungan dua atau lebih string 2. Contoh : A = “Universitas” B = “Gunadarma” C = A + B maka C = “UniversitasGunadarma” Substring 1. Mengambil bagian dari suatu string 2. Contoh : A = “Universitas” B = “Gunadarma” C = Left(A, 3) D = Right(B, 5) E = Substr(A, 4, 5) maka C = “Uni” D = “darma” E = “versi” F. RECORD a. b. c. d. Seperti array 1 dimensi Terdiri dari serangkaian item data yang terkait Item data berurutan yang ada dalam record bisa mempunyai jenis yang berbeda Contoh : Mengorganisasikan 3 item data yang berbeda ke dalam struktur data tunggal NIP : string(8) Nilai : real Lulus : Boolean e. Deklarasi Record 5 mahasiswa : record NIP : string(8) Nilai : real Lulus : boolean end record Setiap elemen memiliki identifier sendiri dan Elemen dari suatu record disebut field f. Penunjukan ke setiap field dari suatu record bisa dilakukan dengan : 1) Notasi “dot” (titik) Begin mahasiswa.NPM := ‘51292215’ mahasiswa.Nilai := 90.5 mahasiswa.Lulus := True End 2) Notasi “with” Begin with mahasiswa do NPM := ‘51292215’ Nilai := 90.5 Lulus := True end with End g. Array Record(Tabel) Kumpulan dua atau lebih record Deklarasi Array Record : Variable Mahasiswa : Array [1..5] of record NIP : string(8) Nilai : real Lulus : boolean End record G. LIST a. Memberikan cara yang fleksibel untuk penanganan item data secara urut b. Perubahan terhadap urutan tersebut dapat dicapai (dilakukan) dengan perpindahan data yang minimal dan kehilangan ruang penyimpanan yang sedikit c. Contoh : Kalimat "Ahmad does not like cake" dituliskan sebagai suatu list, seperti berikut : d. Beberapa istilah Datum : item data dalam list Pointer : penunjuk yang menyambungkan item data satu dengan yang lain 6 Node / elemen : elemen dari suatu list yang terbentuk dari datum dan pointer Terminator : pointer terakhir dari list Start pointer : menyatakan tempat datum pertama Free storage pointer : menyatakan di mana datum berikutnya bisa mengarah atau menuju. List dapat dideklarasikan sebagai sebuah array record : Variable kalimat : Array [1..7] of record Datum : string Next : integer End record e. Operasi List Deletion : penghapusan elemen suatu list, Ketika elemen suatu list dihapus, tempat penyimpanan yang telah dikosongkan dapat digunakan lagi Insertion : penyisipan elemen ke dalam suatu list Search : pencarian elemen dalam suatu list. H. TREE a. Struktur data hirarki b. Dikonstruksi menggunakan aturan preseden untuk item data, misal : menggunakan rangkaian alfabet atau numerik c. Beberapa Istilah : Node : elemen dari suatu tree. Setiap node memiliki (sedikitnya) dua pointer yaitu left pointer dan right pointer. Root node : datum pertama yang ditempatkan dalam tree 7 Parent node : node yang memiliki node di bawahnya (sub-node) Child node : node yang berada di bawah parent Leaf node : node yang tidak mempunyai child d. Contoh : bilangan-bilangan ini (56 42 89 65 48) ditempatkan ke dalam tree e. Catatan : Node paling kiri berisi bilangan terkecil Node paling kanan berisi bilangan terbesar I. TERMINOLOGI STACK a. Pengertian Stack Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti sebuah tumpukan. Dengan demikian, stack merupakan salah satu struktur data yang menerapkan prinsip LIFO (Last In First Out). Dimana elemen yang terakhir disimpan dalam stack, menjadi elemen yang pertama diambil. Untuk meletakkan sebuah elemen pada bagian atas dari stack, maka dilakukan operasi push. Sedangkan untuk memindahkan sebuah elemen dari tempat atas tersebut dalam sebuah stack, maka dilakukan operasi pop. 8 b. Operasi Pada Stack Create Merupakan operator yang berfungsi untuk membuat sebuah stack kosong struct STACK { int top; float data[5]; }; float dta; struct STACK stackbaru; IsEmpty Merupakan operator yang berfungsi untuk menentukan apakah suatu stack merupakan stack kosong. Tanda bahwa sebuah stack kosong adalah Top bernilai kurang dari nol (-1). bool isempty() { if (stackbaru.top==1) return true; else return false; } IsFull Merupakan operator yang digunakan untuk memeriksa apakah stack yang ada sudah penuh. Stack akan penuh jika puncak stack terletak tepat dibawah jumlah maksimum yang dapat ditampung stack (Top = MAX_STACK-1). bool isfull() { if (stackbaru.top==maxstack) return true; else return false; } Push Merupakan operator yang berfungsi untuk menambahkan satu elemen ke dalam stack dan tidak dapat dilakukan jika stack dalam keadaan penuh. void push(float dta) { if (isfull()==false) { puts("stack penuh"); } else { stackbaru.top++; stackbaru.data[top]=dta; } } Pop Merupakan operator yang berfungsi untuk mengeluarkan satu elemen teratas dari dalam stack dengan syarat stack tidak dalam kondisi kosong. void pop() { if (isempty()==false) { cout<<"data kosong"; } else { cout<<"data yang terambil : "<<stackbaru.data[top]<<endl; 9 stackbaru.top--; } } Clear Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset Top dengan 1. Jika Top bernilai kurang dari nol maka stack dianggap kosong. void clear () { top=-1 } Retrieve fungsi yang digunakan untuk melihat nilai yang berada pada posisi tumpukan teratas. void print() { for (int i=0; i<=top; i++) { cout<<stackbaru.data[i]<<" "; } } c. Pointer Sebagai Penunjuk Stack Selain menggunakan indeks, untuk menunjuk sebuah Top atau posisi teratas dari stack, dapat juga digunakan pointer sebagai berikut. Membuat Stack Dengan Pointer int S[10], *Top, *BatasAtas Top = &S[-1]; BatasAtas = &S[10]; Proses Push if (Top < BatasAtas) Top++; *Top = X; else printf(“Stack Penuh”); Proses Pop if (Top > &A[-1]) X= *Top; Top --; else printf(“Stack Kosong”); d. Representasi Proses Stack Stack adalah salah satu dari contoh struktur data yang terdiri dari satu collection, yang juga menerapkan prinsip LIFO. Bila stack tersebut menggunakan array satu dimensi, maka stack tersebut dapat diilustrasikan sebagai berikut : 10 diatas diilustrasikan ada sebuah indeks array yang masih kosong pada awal pembuatan stcak dimana n[10], variabel Top berada pada -1 yang menunjukkan indeks masih dalam keadaan kosong. Pada gambar 4.3 adalah keadaan ketika stack sudah diisi data. Pada kondisi ini data pertama yang diinputkan adalah S[0]=11, data kedua S[1]=7, data ketiga S[2]=15, data keempat S[23]=23. Kondisi Top sudah berubah menjadi data yang terakhir diinputkan (data keempat) sehinggan Top[3] X=23. Variabel Top digunakan sebagai indeks untuk menunjuk nomor elemen array yang berisi nilai stack yang berada paling kanan atau Top, yang ditunjukan dengan angka 3. Variabel X bertipe integer digunakan sebagai perantara, dimana data yang akan disimpan kedalam stack harus berasal dari X. Demikian juga data yang baru diambil dari dalam stack harus diterima terlebih dahulu oleh variabel X, kemudian baru diberikan ke variabel lain untuk diolah. Oleh karena itu, jika ada instruksi PUSH, maka data baru (yang diambil dari isi variabel X) akan disimpan dalam elemen S[4] sehingga indeks Top harus diarahkan ke posisi no.4. Artinya, Top maju terlebih dahulu satu langkah ke S[4], kemudian baru mengisi nilai pada S[4]. Sedangkan jika ada instruksi Pop, maka yang akan diambil adalah isi dari S[3] dan datanya akan disimpan terlebih dahulu dalam variabel X, kemudian indeks Top menjadi mundur satu langkah sehinggaakan menunjuk S[2]. e. Double Stack Double Stack atau Stack Ganda adalah dua stack yang berada dalam satu array. Satu array digunakan untuk dua stack dimana dasar Stack1 berada pada sisi indeks yang terkecil dan dasar Stack2 berada pada sisi indeks yang terbesar. Sama halnya dengan Single Stack, Double Stack juga menerapkan prinsip LIFO (Last in Firt Out) Gambar diatas adalah ilustrasi indeks array pada double stack. Padastack 1 kondisi data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga S[2] dan Top=data input 11 terakhir S[2]. Sedangkan pada stack 2 data pertama adalah S[9], data kedua S[8], data ketiga S[7], data keempat S[6] dan Top=data input terakhir S[6]. f. Operasi Dasar Pada Double Stack Inisialisasi Proses awal adalah proses menyiapkan indeks penunjuk stack untuk pertama kali. Pada tahap ini ditetapkan Top1=-1 (sama seperti single stack) dan Top2=banyak jumlah data void AWAL (void) { Top1 = -1; Top2 = n; } Is Empty Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong if(top1==-1) return true; Is Full if(top2==n) return true; Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong int full(void){ if(top1+1>=top2){ return true; } Push (Stack1 dan Stack2) Proses mengisi data pada stack1 maupun stack2 void PUSH1 (void) { Top1 = Top1 + 1; S[Top1] = X; } void PUSH2 (void) { Top2 = Top2 - 1; S[Top2] = X; Pop (Stack1 dan Stack2) Proses mengambil data pada stack1 maupun stack2 void POP1 (void) { X = S[Top1]; Top1 = Top1 - 1; } void POP2 (void) { X = S[Top2]; Top2 = Top2 + 1; } 12 BAB III PENUTUP A. KESIMPULAN Materi yang telah dipelajari selama perkuliahan daring ini berlangsung yaitu sebagai berikut : 1. 2. 3. 4. 5. 6. 7. 8. Data Dan Struktur Data Deklarasi Data dan macam – macam tipe data Array String Record List Tree Stack pembahasan dan contoh deklarasinya dalam program B. SARAN Saran saya, baiknya kita sebagai mahasiswa hendaknya kita memahami betul tentang materi perkuliahan yang diberikan sehingga dalam membuat makalah, meringkas, erangkum maupun meresensi sesuai dengan kaidahnya, dan juga dapat menyusunnya dengan cara sistematis agar mudah di pahami. 13 DAFTAR PUSTAKA Materi perkuliaahan Struktur data.ppt Materi perkuliahan mengenai stack dan deklarasinya https://www.bbc.com/indonesia/majalah-53220630 https://www.slideshare.net/AJENGAMALIASAFITRI/makalah-rangkuman-ajeng https://bocahkampus.com/cara-membuat-makalah https://www.kompas.com/edu/read/2020/11/14/132920571/3-tantangan-mahasiswa-saatkuliah-daring 14