Praktikum
Struktur Data
Nur Cahyo Wibowo, S.Kom. M.Kom.
Doddy Ridwandono, S.Kom.
Kata Pengantar
Tim Penulis
i
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JATIM
DAFTAR ISI:
ii
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JATIM
Aturan Penilaian :
Tugas Pendahuluan : 30 %
Keberhasilan Program : 40 %
Laporan Resmi : 20 %
Kedisiplinan : 10 %
Prosedur Pelaksanaan :
1. Praktikan yang sudah melakukan pretest berhak untuk
mengikuti praktikum di laboratorium sesuai jadwal yang telah
ditetapkan. Praktikan akan didampingi oleh 2 (dua) orang
asisten dalam setiap sesinya. Instruktur berhak memberikan
penilaian untuk poin Kedisiplinan praktikan selama jalannya
praktikum.
2. Praktikan yang sudah menyelesaikan tugas praktikumnya
lebih awal dari waktu yang disediakan bisa mengajukan
permintaan demo program ke asisten dan setelah itu boleh
meninggalkan tempat. Tetapi jika waktu yang disedikan telah
habis maka demo program dilaksanakan saat itu juga tanpa
ada perpanjangan waktu. Kemudian asisten akan
memasukkan nilai untuk poin Keberhasilan Program.
3. Praktikan mengumpulkan laporan resmi yang berisi tugas
pendahuluan ditambah dengan source code dan analisa
program ke asisten selambat-lambatnya 1 (satu) pekan pada
saat praktikum berikutnya. Asisten akan memberikan penilaian
untuk poin Laporan Resmi.
4. Jika ada praktikan yang tidak dapat mengikuti kegiatan
praktikum karena sakit, maka harus menyerahkan surat
keterangan yang jelas kepada dosen penanggung jawab
praktikum pada hari itu.
iii
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 1 ::
FUNGSI REKURSIF
DASAR TEORI
Rekursif adalah salah satu teknik dasar pemrograman. Pada prinsipnya metode
rekursif adalah sebuah rutin progrram yang memanggil dirinya sendiri. Banyak
masalah dalam pemrograman yang dapat diselesaikan dengan metode ini.
Salah satu contoh kasus rekursif yang sering dijumpai adalah bilangan n! ( = n
faktorial). Dimana telah diketahui bahwa:
n! = n x (n – 1) x (n – 2) x (n – 3) x … x 1
1|Page
SOAL LATIHAN:
2|Page
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 2 ::
ARRAY/ LARIK
DASAR TEORI
Tipe data
Contoh potongan source code untuk inisialisasi array dengan nilai awal 0:
…;
Int[] angka = new int angka[100];
for (i = 0; i < 100; i++)
angka[i] = 0;
…;
Contoh potongan source code untuk mengisi array dengan nilai dari user:
int[] numbers = new int[100];
for (int i = 0; i < 3; i++)
{
System.out.print("Angka:");
numbers[i] = sc.nextInt();
3|Page
System.out.println(numbers[i]);
}
Array bisa kita definisikan lebih dari satu dimensi. Contohnya adalah sebagai
berikut:
Ini berarti bahwa variabel angka terdiri dari 3 baris array berurutan yang masing-
masing baris array tersebut mempunyai 5 elemen yang juga tersusun berurutan.
indeks = [baris][kolom]
4|Page
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
SOAL LATIHAN
5|Page
:: MODUL 3 ::
CLASS
6|Page
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
Hasil tampilannya
120.0
Dari contoh diatas objek yang dibuat adalah a dari class buku.
Perintah NEW digunakan untuk menentukan referensi berupa alamat memori
yang akan digunakan untuk menyimpan objek.
7|Page
Class Karyawan
Objek
8|Page
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
Method Overloading
Java mengizinkan lebih dari satu method dengan nama yang sama dalam
satu class. Inilah yang dikenal dengan nama method overloading.
Contoh penggunaan
public class buku {
String pengarang;
String judul;
9|Page
pengarang = "tidak Ada";
}
public void setNilai(String param1, String param2){
judul = param1;
pengarang = param2;
}
public void cetak(){
if(judul==null && pengarang==null)return;
System.out.println("Judul : "+judul+", Pengarang : "+pengarang);
}
public static void main(String[] args){
buku a = new buku();
buku b = new buku();
a.setNilai("Buku Aneh");
b.setNilai("Mastering Java","Rahmad Hakim S." );
a.cetak();
b.cetak();
}
}
Hasil tampilan
Method Overriding
Jika dalam suatu subclass kita mendefinisikan sebuah method yang sama dengan
yang dimiliki oleh superclass, maka method yang kita buat dalam subclass
tersebut dikaakan meng-override superclassnya. Sehingga jika kita memanggil
method tersebut dari instance subclass yang dibuat, maka method milik subclass-
lah yang akan dipanggil, bukan lagi method milik superclass.
Contoh penggunaan
public class X {
10 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
Hasil tampilan
Method milik class B di panggil...
D. Accses Modifier
Acces modifier digunakan untuk mengatur pengaksesan. Gunanya agar data dan
motode dara suatu class tidak selalu bisa diakses secara bebas.
Public
Public di sini mengandung arti bahwa siapapun dapat mengakses member
ini, baik code yang ada di dalam class itu sendiri ataupun yang berada di luar
class.
Private
11 | P a g e
Member yang dideklarasikan sebagai private hanya dapat digunakan oleh
internal member dari class itu saja. Tidak ada code satu pun dari luar class
tersebut yang diizinkan mengakses/mengubah nilai member tersebut.
Protected
Member yang dideklarasikan menggunakan access specifier ini hanya
dapat diakses oleh member clas itu sendiri, member dari class turunannya dan
member class lain yang berada dalam package yang sama.
E. Pewarisan
Pada dasarnya kita melakukan pewarisan untuk membuat class baru (subclass)
yang masing masing memiliki sifat class dari mana ia diturunkan (superclass).
Untuk iru java menyediakan keyword extends yang dapt dipakai pada waktu kita
deklarasikan class.
Contoh
class A {
int x;
int y;
void tampilkanNilaixy(){
System.out.println("NIlai x : "+x+" , y "+y);
}
}
class B extends A{
int z;
void tampilanjumlah(){
System.out.println("Jumlah : "+(x+y+z));
}
}
class demo{
public static void main(String[] args){
A superOB = new A();
B subOB = new B();
System.out.println("Superclass");
superOB.x=10;
12 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
superOB.y=20;
superOB.tampilkanNilaixy();
System.out.println("Subclass");
subOB.x=5;
subOB.y=4;
subOB.tampilkanNilaixy();
subOB.z=50;
ubOB.tampilanjumlah();
}
}
Hasil tampilan
Superclass
NIlai x : 10 , y 20
Subclass
NIlai x : 5 , y 4
Jumlah : 59
Contoh
public class karyawan {
public String nama;
public String alamat;
public int nip;
public void koordinasi(){
System.out.println("Berkoordinasi dengan " +nama+" "+nip);
13 | P a g e
}
}
public class karyawanTetap extends karyawan{
public float gaji;
public float bonus;
public float hitungGajiTotal(){
System.out.println("Hitung gaji totaal " +nama);
return (gaji+bonus);
}
}
public class demoKaryawan {
public static void main(String[] args){
System.out.println("Membuat objek karyawan");
karyawan rizal = new karyawan();
rizal.nama = "Awaluddin Rizal";
rizal.alamat = "Gresik";
rizal.nip = 12345;
System.out.println("Nama : "+rizal.nama+" , Alamat : "+rizal.alamat);
System.out.println("--------------------------");
System.out.println("Membuat objek karyawan tetap");
karyawanTetap aku = new karyawanTetap();
aku.nama = "Hanafi";
aku.alamat = "Surabaya";
aku.nip = 98765;
aku.gaji = 1000000;
aku.bonus = 100000;
System.out.println("Nama : "+aku.nama+" , Alamat : "+aku.alamat);
System.out.println("Gaji : "+aku.hitungGajiTotal());
}
}
Hasil Tampilan
Membuat objek karyawan
Nama : Awaluddin Rizal , Alamat : Gresik
--------------------------
Membuat objek karyawan tetap 14 | P a g e
Nama : Hanafi , Alamat : Surabaya
Hitung gaji totaal Hanafi
Gaji : 1100000.0
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
F. Interface
Interface merupakan unit program yang berisi deklarasi method dan konstanta
yang diperlukan.
Deskripsi dari desain awal hanya memiliki konstanta dan method tanpa
implementasi. Dengan interface dimungkinkan suatu implemntasi multiple
inheritance.
Cara mendeklarasikan interface
modifier interface nama_interface{
//implementasi interface
}
Mengimplementasikan interface
Contoh
public interface NamaListerner {
public void onChange(NamaModel model);
}
SOAL LATIHAN:
15 | P a g e
Berdasarkan gambar bagan dibawah, buatlah program Java yang
mengimplementasikan konsep OOP.
Motor
Vehicle
Race
Car
16 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 4 ::
SORTING/ PENGURUTAN
DASAR TEORI
Konsep sebuah himpunan elemen/ data yang terurut mempunyai pengaruh yang
cukup penting dalam kehidupan sehari-hari. Sebagai contoh adalah proses
pencarian sebuah nomer telepon di buku alamat. Faktanya adalah bahwa nama-
nama di dalam buku tersebut telah ditulis urut berdasar alphabet. Contoh lain,
ketika seseorang mencari sebuah buku di perpustakaan. Karena buku sudah
diberi kode dan menempati lokasi tertentu berdasar urutan maka buku tersebut
dapat ditemukan dalam waktu yang relatif dapat diperkirakan. Jadi secara umum,
sebuah himpunan elemen disimpan terurut untuk mempermudah dalam membuat
laporan atau untuk membuat akses mesin ke data lebih efisien.
17 | P a g e
SOAL LATIHAN
18 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 5 ::
SEARCHING/ PENCARIAN
DASAR TEORI
Misal akan dicari data angka 79. Maka proses pencariannya adalah seperti di
bawah ini:
i=0 i=1
20 32 37 45 79 20 32 37 45 79
i=2 i=3
20 32 37 45 79 20 32 37 45 79
i=4 ketemu
20 32 37 45 79 STOP!
Visualisasi searching
19 | P a g e
Algoritma tersebut akan melakukan pengecekan untuk setiap key secara bergiliran
sampai ditemukannya kecocokan dengan argumen. Indeks key yang cocok akan
dikembalikan oleh fungsi. Tetapi jika tidak ditemukan kecocokan maka nilai –1
akan dikembalikan oleh fungsi.
Contoh dengan Java:
public class Searching
{
public static void main(String[] args)
{
int [] myArray = {21,52,6,1,32,76,32};
for(int i=0;i<myArray.length;i++)
if(myArray[i]==76)
System.out.println("Ketemu Oi!!");
}
}
SOAL LATIHAN
20 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 6 ::
LINKED LIST
DASAR TEORI
Dalam beberapa modul sebelumnya tipe struktur data Array digunakan untuk
menyimpan data dalam indeks yang terurut. Ada kelemahan/kekurangan jika
Array digunakan sebagai media penyimpanan. Dimana panjang dari data harus
telah ditentukan terlebih dahulu. Ada cara lain yang dapat digunakan untuk
mengatasi kekurangan tersebut.
Dalam modul ini akan dijelaskan materi mengenai linked list. Yang merupakan
salah struktur data yang dapat kita pilih untuk meyimpan data dengan jumlah node
yang fleksibel.
Linked list dalam bentuknya yang paling sederhana adalah sekumpulan nodes
yang terhubung menjadi satu yang membentuk untaian. Masing masing node
menyimpan data dan “alamat” yang akan menghubungkan node tersebut dengan
node sesudahnya (next node)
Contoh inisialisasi, pengisian dan pencetakan data dalam linked list jika menggunakan
looping:
public class TestNode
{
public static void main(String[] args)
{
Node start = new Node(22);
Node p = start;
21 | P a g e
for (int i = 1; i < 5; i++)
{
p = p.next = new Node(22 + 11*i);
}
for (p = start; p != null; p = p.next)
{
System.out.println(p.data);
}
}
}
class Node
{
int data;
Node next;
Node(int data) {
this.data = data;
}
}
SOAL LATIHAN
1. Linked List adalah array dinamis. Dikatakan dinamis karena ukurannya bisa
berubah-ubah sesuai besar data yang disimpan. Elemen yang kosong bisa
dihapus untuk mengurangi ukuran. Struktur data Linked List merupakan
gabungan antara struct dan pointer.
Tugas:
a. Deklarasikan struktur data sebuah NODE yang mempunyai elemen
informasi NPM dan Nama.
b. Buatlah subrutin untuk melakukan penambahan NODE baru di dalam
Linked List.
c. Buatlah subrutin untuk menghapus NODE dalam sebuah Linked List.
Bisa berdasar nilainya maupun indeks/ urutannya.
*Linked List yang digunakan adalah Single Linked List.
3. Sama dengan nomer 1, tetapi gunakanlah Double Linked List.
4. Sama dengan nomer 1, tetapi gunakan Circular Single Linked List.
5. Sama dengan nomer 1, tetapi gunakan Circular Double Linked List.
6. Buatlah sebuah program simulasi : Nasabah yang tiba di Bank. Ketika seorang
nasabah sampai di bank, kemudian mereka mengambil tempat pada antrian
nasabah, menunggu dipanggil oleh kasir (teller). Pihak bank bermaksud
22 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
23 | P a g e
untuk modul berupa linked list lagi yang berisi :
statePengerjaanModul
noModul
Nilai Modul
AsistenModul
Absensi //kehadiran pada saat praktikum
Fungsi-fungsi yang ada :
insert siswa praktikum baru.
edit data praktikum siswa.
lihat data seluruh siswa yang mengikuti praktikum.
lihat detail siswa dengan modulnya.
24 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 7 ::
STACK/ TUMPUKAN
DASAR TEORI
Salah satu konsep yang sangat bermanfaat dalam ilmu komputer adalah stack.
Stack adalah koleksi item/ data yang terurut dimana item baru akan dimasukkan
atau item lama akan dihapus melalui satu ujung/ jalan, dikenal dengan nama top
dari stack. Stack bersifat dinamis, artinya item/ data yang tidak terpakai bisa
dihapus.
POP( ) PUSH( )
F
E
D
BOTTOM C TOP
B
A
Stack
Fungsi-fungsi standar dalam stack adalah fungsi pop() dan push(). Fungsi pop()
untuk mengambil data/ item dari sebuah stack. Sedangkan fungsi push() untuk
memasukkan item baru ke dalam sebuah stack.
25 | P a g e
Contoh Dalam Java:
import java.util.ArrayDeque;
import java.util.Deque;
SOAL LATIHAN
26 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
27 | P a g e
SUB untuk mengurangi isi register dengan variable A.
MUL untuk mengalikan isi dari register dengan variable A.
DIV untuk membagi isi dari register dengan variable A.
Catatan: Gunakan variable TEMP_n sebagai temporary variable.
Contoh :
Input : ekspresi postfix ABC*+DE-/
Output :
PUT B
MUL C
GET TEMP_1
PUT A
ADD TEMP_1
GET TEMP_2
PUT D
SUB E
GET TEMP_3
PUT TEMP_2
DIV TEMP_3
GET TEMP_4
Petunjuk : Asumsikan register sebagai stack. Struktur data yang dipakai
boleh menggunakan stack dengan array maupun stack dengan linked list.
7. PERMUTATION
Tulislah program yang mampu menghitung jumlah permutasi beserta
macamnya dari sekumpulan karakter tunggal yang diinputkan user.
Program harus mengimplementasi-kan struktur data stack dengan
menggunakan linked list.
Contoh :
Input : 3 buah karakter yaitu a, b, c (dipisahkan oleh tanda koma)
Output: Jumlah permutasi : 6
Macam permutasi : abc, acb, bac, bca, cab, cba
8. POSTFIX CALCULATOR
28 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
29 | P a g e
Palindrome adalah kata yang menghasilkan bunyi ucapan yang sama jika
dibaca dari depan maupun dari belakang. Tulislah program untuk
memeriksa apakah sebuah kata termasuk palindrome atau bukan. Program
harus mengimplementasikan struktur data stack dengan menggunakan
linked list.
Contoh:
Input : katak Output : PALINDROME
Input : palapa Output : BUKAN PALINDROME
30 | P a g e
:: MODUL PRAKTIKUM STRUKTUR DATA::
JURUSAN SISTEM INFORMASI UPN “VETERAN” JAWA TIMUR
:: MODUL 8 ::
QUEUE/ ANTRIAN
DASAR TEORI
Selain stack, konsep struktur yang juga sering dipakai dalam ilmu computer
adalah queue/ antrian. Sama dengan stack, struktur data queue dikembangkan
dari struktur data Linked List ataupun Array.
Remove( ) Insert( )
A B C D E
Queue
Front Back
31 | P a g e
System.out.println("queue.add(\"Elemen 5\"): ");
queue.add("Elemen 5");
System.out.println(queue);
System.out.println("queue.remove(): " + queue.remove());
System.out.println(queue);
}
}
Output:
[Elemen 1, Elemen 2, Elemen 3, Elemen 4]
queue.element(): Elemen 1
queue.remove(): Elemen 1
[Elemen 2, Elemen 3, Elemen 4]
queue.remove(): Elemen 2
[Elemen 3, Elemen 4]
queue.add("Elemen 5"):
[Elemen 3, Elemen 4, Elemen 5]
queue.remove(): Elemen 3
[Elemen 4, Elemen 5]
SOAL LATIHAN
32 | P a g e