0% menganggap dokumen ini bermanfaat (0 suara)
192 tayangan26 halaman

Modul Struktur Data PDF

Modul ini membahas tentang array, struct, function, dan sorting pada praktikum struktur data. Siswa diajarkan konsep-konsep dasar tersebut dan dilatih untuk mengimplementasikannya dalam program C++. Materi praktikum meliputi deklarasi dan penggunaan array, struct, function beserta parameternya, serta algoritma sorting seperti bubble, selection, dan merge sort.

Diunggah oleh

East Wind
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
192 tayangan26 halaman

Modul Struktur Data PDF

Modul ini membahas tentang array, struct, function, dan sorting pada praktikum struktur data. Siswa diajarkan konsep-konsep dasar tersebut dan dilatih untuk mengimplementasikannya dalam program C++. Materi praktikum meliputi deklarasi dan penggunaan array, struct, function beserta parameternya, serta algoritma sorting seperti bubble, selection, dan merge sort.

Diunggah oleh

East Wind
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 26

Modul Praktikum Struktur Data 2019/2020

Modul 1 : Array & Struct

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 1, praktikan diharapkan mampu memahami array dan struct
serta penggunaannya serta mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep array dan struct.
2. Mengetahui deklarasi dan penggunaan elemen pada array dan struct.
3. Mampu mengimplementasikan array dan struct dalam pemrograman.
TUGAS PENDAHULUAN
1. Tuliskan pengertian dan konsep array.
2. Tuliskan deklarasi array dan pemangillan elemen array.
3. Buatlah contoh program array.
4. Jelaskan pengertian struct.
5. Tuliskan deklarasi umum dari struct.
6. Jelaskan tahapan dalam menggunakan struct.
7. Tuliskan contoh program dari struct.
8. Tuliskan pengertian procedure dan function.
9. Tuliskan deklarasi procedure dan function disertai dengan contoh.
TEORI DASAR:
1. Array
Array adalah kumpulan data yang memiliki tipe data yang sama.
Deklarasi Array
TipeData NamaArray[PanjangArray];
Contoh :
int nilai[10]; atau
int nil[3]={10, 20, 30};
//penggunaan elemen array dari array nil
cout<<nil[0]; //output : 10

2. Struct
Struct adalah kumpulan elemen-elemen yang memiliki bentuk dan tipe yang berbeda-beda yang
dinyatakan dalam sebuah nama. Elemen struct ini dapat berupa variabel, konstanta, array, atau function.
1) Deklarasi Struct
Ada beberapa cara untuk mendeklarasikan sebuah struct.
Deklarasi Struct
struct NamaStruct{
elemen1; elemen2 ; … ; elemen n;
};
Contoh :
struct Nilai{
int tugas1, tugas2; float mid, uas;
};

Deklarasi Struct Menggunakan Typedef


typedef struct{
elemen1; elemen2 ; … ; elemen n;
}NamaStruct;
2) Pembuatan Objek / Variabel dari Struct
Pembuatan objek atau variabel dari struct yang telah dideklarasikan dapat dibuat dalam
function(local) maupun diluar function (global).

Laboratorium Informatika Industri | 1


Modul Praktikum Struktur Data 2019/2020

Deklarasi Objek Struct


NamaStruct NamaObjekStruct;
3) Pemanggilan / Penggunaan Elemen Struct
Pemanggilan atau penggunaan elemen dari struct yaitu :
Deklarasi Objek Struct
NamaObjekStruct.NamaElemen;
Contoh :
struct Nilai{ //deklarasi struct
int tugas1, tugas2; float mid, uas;
};
int Main(){
Nilai nil; //pembuatan objek
nil.tugas1=50; //penggunaan elemen struct
nil.tugas2=60;
}
3. Struct of Array
Struct of array adalah sebuah struct dimana didalamnya terdapat elemen berupa arrray.
struct Siswa {
char nim[15]; //struct of array
char nama[35]; //struct of array
}
4. Array of Struct
Array of Struct adalah struct dimana dalam pembuatan objek atau variabelnya dibuat dalam bentuk
array.
struct Siswa {
string nim, nama;
}
int Main(){
Siswa sis[30]; //array of struct
}
5. Nested Struct
Nested Struct adalah kondisi dimana sebuah struct didalamnya terdapat struct lagi. Berikut contoh
dari nested struct.
struct Nilai{
int tugas1, tugas2; float mid, uas;
};
struct Siswa {
string nim, nama, alamat, nohp;
Nilai nil;
}
PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.

Laboratorium Informatika Industri | 2


Modul Praktikum Struktur Data 2019/2020

3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Buat file baru kemudian simpan file tersebut dengan nama “Modul1.cpp”
3) Kerjakan program berikut.
#include <iostream>
#include <string>
using namespace std;
struct Kehadiran {
int izin, alfa;
};
struct Siswa {
string nim, nama;
Kehadiran absen;
};
int main(){
Siswa sis[3];
sis[0].nim ="9970283044";
sis[0].nama="Askadina";
sis[0].absen.izin = 4;
sis[0].absen.alfa = 1;
sis[1].nim ="9970283034";
sis[1].nama="Ainun";
sis[1].absen.izin = 4;
sis[1].absen.alfa = 2;
sis[2].nim ="9980283034";
sis[2].nama="Abyah";
sis[2].absen.izin = 0;
sis[2].absen.alfa = 1;
cout<<"Data Dari Struct : "<<endl;
for (int i=0; i<3; i++){
cout<<"Nim : " <<sis[i].nim<<endl;
cout<<"Nama : "<<sis[i].nama<<endl;
cout<<"Jumlah Izin : "<<sis[i].absen.izin<<endl;
cout<<"Jumlah Alfa : "<<sis[i].absen.alfa<<endl;
cout<<" "<<endl;
}
}
4) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
5) Matikan PC dan Rapihkan meja praktikum.

EVALUASI PRAKTIKUM
1. Pak Iman adalah seorang guru IPS dengan siswa 20 orang, ia ingin
menghitung nilai akhir siswa-siswanya. Setiap siswa memiliki data
nim dan nama lengkap. Untuk menghitung nilai IPS siswanya, pak
Iman membutuhkan 4 nilai tugas, nilai uts dan nilai uas disetiap
siswanya. Pak iman membutuhkan nilai akhir dalam bentuk nilai
angka yang didapatkan dari 30% dari rata-rata nilai tugas, 30% dari
nilai uts, dan 40% dari nilai uas. Untuk mengolah data yang mudah,
pak Iman ingin nilai-nilai tiap siswanya tertampung dalam 1 struktur
data seperti gambar disamping.

Laboratorium Informatika Industri | 3


Modul Praktikum Struktur Data 2019/2020

Modul 2 : Function

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 2, praktikan diharapkan mampu memahami konsep function
serta pengimplementasiannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep function dan implementasinya.
2. Mengetahui penggunaan parameter pass by value dan pass by reference pada function dan
implementasinya.
3. Mengetahui konsep rekursif dan implementasinya.
TUGAS PENDAHULUAN
1. Jelaskan pengertian konsep sorting.
2. Gambarkan ilustrasi dari metode bubble sorting, selection sorting dan merge sorting.
3. Tuliskan algoritma dalam metode bubble sorting, selection sorting dan merge sorting.
TEORI DASAR:
1. Function
Function adalah sebuah blok berisi kumpulan perintah untuk melakukan proses tertentu.
Deklarasi Function
TipeData NamaFunction ( ){
//statement
}
Contoh :
int Tambah ( ){
return 100; }
2. Parameter Function
Parameter pada function adalah sebuah nilai awal yang diberikan pada saat sebuah function dipanggil.
Parameter function diinisialisasikan pada saat pembuatan function sedangkan pemberian nilai pada
parameternya diberikan pada saat function akan dipanggil atau digunakan. Parameter dapat berupa
variabel, konstanta, array dan pointer.
Deklarasi Function Berparameter
TipeData NamaFunction (parameter1, parameter2, …, parameter-n ){
//statement
}
Contoh :
int Tambah (int nil1, int nil2 ){
return nil1+nil2;
}
Secara umum, procedure dan function terbagi menjadi 2 berdasarkan model parameternya yaitu
passing by value dan passing by reference
1) Passing By Value
Function dengan parameter passing by value yaitu menyalin data (nilai) dari argumen yang
memanggil ke parameter function tersebut. Sehingga jika ada perubahan nilai pada parameter
tidak akan berpengaruh dengan nilai argumennya.
#include <iostream>
using namespace std;
void tambah(int angka){
angka +=20;
cout<<“Nilai Angka Dari Procedure tambah = ”<<angka;
}
int main(){
int nilai = 10;

Laboratorium Informatika Industri | 4


Modul Praktikum Struktur Data 2019/2020

cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;


tambah(nilai);
cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
return 0;
}
2) Passing By Reference
Function dengan parameter passing by reference yaitu menyalin alamat data (reference) dari
argumen yang memanggil ke parameter function tersebut. Sifat parameter ini hanya bersifat
penunjuk sehingga setiap perubahan yang terjadi pada parameter sebenarnya terjadi pada
variabel yang ditunjuk bukan pada parameternya.
#include <iostream>
using namespace std;
void tambah(int &angka){
angka +=20;
}
int main(){
int nilai = 10;
cout<<"Nilai variabel nilai (sebelum pemanggilan fungsi) adalah =
"<<nilai<<endl;
tambah(nilai);
cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
return 0;
}
3. Recursive
Recursive adalah penggunaan fungsi dengan memanggil fungsi tersebut didalam fungsi itu sendiri.
#include <iostream>
using namespace std;
int faktorial(int nilai2){
if ((nilai2-1) >= 1){
nilai2 = nilai2*faktorial(nilai2-1);

}
return nilai2;
}
int main(){
int nilai;
cout<<"Masukkan Nilai : ";
cin>>nilai;
cout<<endl<<faktorial(nilai);
}
PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.

Laboratorium Informatika Industri | 5


Modul Praktikum Struktur Data 2019/2020

3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Kerjakan program pada contoh program Passing By Value, Passing By Reference, dan Recursive.
3) Kerjakan program berikut.
Program 1 :
#include <iostream>
using namespace std;
float kali10 (float a){return a*=100;}
float bagi10 (float a){return a/=100.d;}
int main(){
float a;
cout<<"Masukkan Nilai : "; cin>>a;
cout<<"Hasil Hitung Dari fungsi kali10 = "<<kali10(a)<<endl;
cout<<"Hasil Hitung Dari fungsi bagi10 = "<<bagi10(a)<<endl;
cout<<" "<<endl;
cout<<"Nilai variabel a : "<<a<<endl;
}
Program 2 :
#include <iostream>
using namespace std;
void Proses1(float *a, float *b){
*a*=100.f;
*b/=100.f;
}
void Proses2(float &a, float &b){
a*=100.f;
b/=100.f;
}
int main(){
float a, b;
cout<<"Masukkan Nilai : "; cin>>a;
b=a;
cout<<" "<<endl;
cout<<"Nilai variabel a dan b Sebelum Fungsi Proses Dipanggil : "<<endl;
cout<<"Variabel a : "<<a<<endl;
cout<<"Variabel b : "<<b<<endl;
cout<<" "<<endl;
Proses1(&a, &b);
cout<<"Nilai variabel a dan b Setelah Fungsi Proses1 Dipanggil :
"<<endl;
cout<<"Variabel a : "<<a<<endl;
cout<<"Variabel b : "<<b<<endl;
cout<<" "<<endl;
Proses2(a, b);
cout<<"Nilai variabel a dan b Setelah Fungsi Proses2 Dipanggil :
"<<endl;
cout<<"Variabel a : "<<a<<endl;
cout<<"Variabel b : "<<b<<endl;
}
4) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
5) Matikan PC dan Rapihkan meja praktikum.

Laboratorium Informatika Industri | 6


Modul Praktikum Struktur Data 2019/2020

EVALUASI PRAKTIKUM
1. Jelaskan Perbedaan Program1 dan Program2 Pada Kegiatan Praktikum.
2. Buatlah sebuah program konversi satuan panjang dari meter ke satuan panjang lainnya dengan
memanfaatkan procedure dan function yang berparameter pass by value.
3. Lengkapi program manajemen poin berdasarkan source code dibawah ini. Tidak ada penambahan
variabel ataupun procedure dan function.
#include <iostream>
using namespace std;
void TambahPoin (&poinsaya, poin){poinsaya = poinsaya + poin}
void KurangPoin (int &poinsaya, int poin, int *penggunaanpoin){
poinsaya = poinsaya – poin.
Penggunaanpoin = penggunaanpoin+poin
}
void lihatPoin(. . .){ perintah untuk lihat total poin }
void lihatPenggunaanPoin(. . . ){ perintah untuk penggunaan poin }
void menu (){
cout<<"Menu Poin"<<endl;
cout<<"(1) Tambah Poin "<<endl;
cout<<"(2) Kurang Poin "<<endl;
cout<<"(3) Cek Poin "<<endl;
cout<<"(4) Penggunaan Poin"<<endl;
cout<<"Masukkan Pilihan (1, 2, 3 ) : ";
}
int main(){
int pilih, poinsaya, poin, penggunaanpoin=0;
poinsaya = 40;
panggil procedure untuk melihat total poin.
while (. . .){
menu();
cin>>pilih;
if (pilih==1){
cout<<"Masukkan Jumlah Poin Yang Ditambahkan : "; cin>>poin;
TambahPoin(poinsaya, poin); }
else if (pilih==2){
cout<<"Masukkan Jumlah Poin Yang DiGunakan : "; cin>>poin;
KurangPoin(poinsaya, poin, penggunaanpoin); }
else if (pilih==3){ lihatPoin(poinsaya);}
else if (pilih==4){lihatPenggunaanPoin(penggunaanpoin);}
else {cout<<"PILIHAN SALAH "<<endl;}
cout<<" "<<endl;
}
4. Buatlah contoh program aritmatika dengan menggunakan procedure dan function dengan parameter
passing by reference.
5. Buatlah program perpangkatan dengan menggunakan konsep recursive.

Laboratorium Informatika Industri | 7


Modul Praktikum Struktur Data 2019/2020

Modul 3 : Sorting / Pengurutan

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 3, praktikan diharapkan mampu memahami konsep dan
algoritma beberapa metode sorting/pengurutan serta mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep sorting data.
2. Mengetahui algoritma sorting/pengurutan dan pengimplementasiannya kedalam program.
TUGAS PENDAHULUAN
1. Jelaskan pengertian dan fungsi dari pointer.
2. Jelaskan operator deference dan reference dari pointer.
3. Buatlah contoh program dari pointer yang menggunakan operator deference dan reference.
TEORI DASAR:
1. Sorting
Sorting/Pengurutan adalah sebuah proses untuk mengatur beberapa data/objek sesuai aturan tertentu.
Pengurutan terdiri dari 2 jenis yaitu ascending (urutan yang menaik) dan descending (urutan yang
menurun). Ada beberapa metode dalam pengurutan antara lain bubble sort, selection sort dan merge sort,
dll.
1) Bubble Sort
Bubble Sort atau pengurutan gelembung adalah metode pengurutan dengan mengangkat nilai
terkecil keatas dan dibawa ke posisi sebelah kiri melalui proses pertukaran.
Program Bubble Sort :
#include <iostream>
using namespace std;
int main(){
int nilai[6]={6, 1, 2, 3, 4, 5};
int temp;
cout<<endl<<"Data Sebelum
diurutkan"<<endl;
for(int a=0; a<=5; a++){
cout<<nilai[a]<<" ";
}
cout<<endl;
for(int a=5; a>=0; a--){
for(int b=0; b<=a-1; b++){
if(nilai[b]>nilai[b+1]){
temp=nilai[b+1];
nilai[b+1]=nilai[b];
nilai[b]=temp;
}
}
}
cout<<endl<<endl<<"Data Setelah Diurutkan (Ascending)"<<endl;
for (int a=0; a<=5; a++){
cout<<nilai[a]<<" ";}
cout<<endl<<"Data Setelah Diurutkan (Descending)"<<endl;
for (int a=5; a>=0; a--){
cout<<nilai[a]<<" ";}
return 0;
}

Laboratorium Informatika Industri | 8


Modul Praktikum Struktur Data 2019/2020

2) Selection Sort
Selection Sort adalah metode sorting / pengurutan dengan menemukan data terkecil dengan
cara membandingkan elemen sekarang dengan elemen yang berikutnya sampai dengan elemen
terakhir kemudian menukar posisi elemen terkecil tersebut.

Program Selection Sort :


#include<iostream>
using namespace std;
int main()
{
int arr[]={6, 2, 8, 3, 9};
int i, j, temp;
cout<<"Sebelum Pengurutan :\n";
for(i=0; i<5; i++)
{
cout<<arr[i]<<" ";
}
for(i=0; i<5; i++){
for(j=i+1; j<5; j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
cout<<endl<<"Setelah Pengurutan :\n";
for(i=0; i<5; i++){
cout<<arr[i]<<" ";
}
return 0;
}
3) Merge Sort
Merge Sort adalah yaitu metode pengurutan dengan memecah kemudian menyelesaikan setiap
bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana
bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil)
dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya
terdiri dari satu data tiap blok.

Laboratorium Informatika Industri | 9


Modul Praktikum Struktur Data 2019/2020

Program Selection Sort :


#include <iostream>
using namespace std;

void merge(int arr[], int l, int m, int r){


int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1+ j];
i = 0;
j = 0;
k = l;
while (i < n1 && j < n2){
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1){
arr[k] = L[i];
i++;
k++;
}
while (j < n2){
arr[k] = R[j];
j++;
k++;
}
}
void mergeSort(int arr[], int l, int r){
if (l < r){
int m = l+(r-l)/2;
mergeSort(arr, l, m);
mergeSort(arr, m+1, r);
merge(arr, l, m, r);
}
}
void printArray(int arr[], int size){
int i;
for (i=0; i<size ; i++){
cout<<arr[i]<<" ";
}

Laboratorium Informatika Industri | 10


Modul Praktikum Struktur Data 2019/2020

}
int main(){
int arr[]={12, 11, 13, 5, 6, 7};
int arr_size = sizeof(arr)/sizeof(arr[0]);
cout<<"Data Sebelum Pengurutan : "<<endl;
printArray(arr, arr_size);
mergeSort(arr, 0, arr_size-1);
cout<<endl;
cout<<"Data Setelah Pengurutan : "<<endl;
printArray(arr, arr_size);
return 0;
}
PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Kerjakan contoh program bubble sort, selection sort, dan merge sort yang ada pada teori dasar.
3) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
4) Matikan PC dan Rapihkan meja praktikum.
EVALUASI PRAKTIKUM
1. Buatlah program sorting huruf yang berfungsi untuk mengurutkan huruf dari nama yang diinputkan pada
saat program dijalankan. Gunakan metode sorting yang telah dibahas.

Laboratorium Informatika Industri | 11


Modul Praktikum Struktur Data 2019/2020

Modul 4 : Pointer

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 4, praktikan diharapkan mampu memahami pointer serta
mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui tools yang dapat digunakan dalam bahasa C++
2. Mengetahui pengertian pointer dan operator pada pointer
3. Mampu mengimplementasikan pointer dalam program
TUGAS PENDAHULUAN
1. Tuliskan pengertian dan konsep dari linked list.
2. Tuliskan fungsi dari lingked list.
3. Tuliskan contoh program penerapan Iinked list.
TEORI DASAR:
1. Pointer
Pointer adalah variabel yang berisi alamat memori. Dengan kata lain, pointer berisi alamat dari
variabel yang mempunyai nilai tertentu.
Deklarasi Pointer
Tipedata * nama_variabel
Contoh :
int * a;
2. Operator Pointer
1) Operator Reference (&)
Operator reference digunakan untuk menghasilkan alamat memori lokasi memori dari sebuah
svariabel. Operator ini biasa disebut dengan address of atau operator alamat.
2) Operator Deference (*)
Operator deference digunakan untuk mengakses langsung nilai yang terdapat didalam variabel
berpointer. Operator ini biasa disebut dengan value pointed by.
Contoh :
#include <iostream>
using namespace std;
int main(){
int *nil1;
int nil2 = 9;
nil1 = &nil2;
cout<<"Nilai dari nil1 : "<<nil1<<endl;
cout<<"Nilai dari *nil1 : "<<*nil1<<endl;
cout<<"Nilai dari &nil1 : "<<&nil1<<endl;
cout<<"Nilai dari &nil2 : "<<&nil2<<endl;
return 0; }

PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)

Laboratorium Informatika Industri | 12


Modul Praktikum Struktur Data 2019/2020

d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain


e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Buat file baru kemudian simpan file tersebut dengan nama “Pointer.cpp”
3) Kerjakan beberapa praktikum berikut.
a. Program 1 :
#include <iostream>
using namespace std;
int main()
{
int *nil1;
int nil2 = 10;
nil1 = &nil2;
cout<<"Nilai dari nil1 : "<<nil1<<endl;
cout<<"Nilai dari Reference nil1 : "<<*nil1<<endl;
cout<<"Nilai dari Deference nil1 : "<<&nil1<<endl;
cout<<"Nilai dari nil2 : "<<nil2<<endl;
cout<<"Nilai dari Deference nil2 : "<<&nil2<<endl;
return 0;
}
b. Program 2 :
#include <iostream>
using namespace std;
int main()
{
int *nil1;
int nil2 = 9;
nil1 = &nil2;
cout<<"Nilai dari nil1 : "<<nil1<<endl;
cout<<"Nilai dari *nil1 : "<<*nil1<<endl;
nil2=10;
cout<<"Nilai dari *nil1 : "<<*nil1<<endl;
*nil1=8;
cout<<"Nilai dari *nil1 : "<<*nil1<<endl;
nil2=19;
cout<<"Nilai dari *nil1 : "<<*nil1<<endl;
return 0;
}
4) Seteah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
5) Matikan PC dan Rapihkan meja praktikum.

EVALUASI PRAKTIKUM
1. Jelaskan Source Code pada kegiatan praktikum.
2. Kerjakan Source Code dibawah ini.
#include <iostream>
using namespace std;
int main()
{
Buatlah variabel pointer (*) nil1 bertipe int.
Buatlah variabel pointer berpointer (**) nil3 bertipe int.
Buatlah variabel nil2 bertipe int dengan nilai samadengan 15.

Laboratorium Informatika Industri | 13


Modul Praktikum Struktur Data 2019/2020

Berikan nilai pada variabel nil1 dengan alamat variabel nil2.


Berikan nilai pada variabel nil3 dengan alamat variabel nil1.

Tampilkan nilai dari variabel nil2.


Tampilkan nilai dari reference nil2.
cout<<“ ----------------------------------- ”<<endl;
Tampilkan nilai dari variabel nil1.
Tampilkan nilai dari reference nil1.
Tampilkan nilai dari deference nil1.
cout<<“ ----------------------------------- ”<<endl;
Tampilkan nilai dari variabel nil3.
Tampilkan nilai dari deference nil3 (*nil3).
Tampilkan nilai dari deference dari deference nil3 (**nil3).
Tampilkan nilai dari reference nil3.

//Tambahan Soal Nomor 4, tuliskan di bawah ini.


return 0;
}
3. Jelaskan hasil output dari nilai-nilai yang ditampilkan pada program nomor 2.
4. Setelah mengerjakan soal nomor 2, berikan nilai pada variabel nil2 dengan nilai 35. Setelah itu tampilkan
nilai dari deference nil1 (*nil1) dan deference dari deference nil3 (**nil3). Jelaskan hasil output program
tersebut.
5. Buatlah sebuah contoh program yang mengimplementasikan pointer didalamnya. Buat program tersebut
dilengkapi dengan proses aritmatika dan penginputan dari user.

Laboratorium Informatika Industri | 14


Modul Praktikum Struktur Data 2019/2020

Modul 5 : Linked List

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 5, praktikan diharapkan mampu memahami konsep Linked
List serta mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui tools yang dapat digunakan dalam bahasa C++
2. Mengetahui konsep linked list.
3. Mampu mengimplementasikan linked list dalam program
TUGAS PENDAHULUAN
1. Jelaskan pengertian dan konsep stack atau tumpukan.
2. Gambarkan ilustrasi dari konsep stack atau tumpukan
3. Tuliskan dan jelaskan operasi-operasi yang terdapat pada program stack atau tumpukan.
4. Tuliskan contoh program dari stack atau tumpukan beserta outputnya.
TEORI DASAR:
1. Linked List
Linked List adalah struktur data yang tersusun atas node-node yang minimal memiliki 2 field pada
tiap node, yaitu data yang akan disimpan dan sebuah pointer. Tiap node tersebut terhubung dengan node
lain melalui field pointer-nya. Linked List juga membutuhkan suatu pointer yang biasa disebut
sebagai head untuk menandakan node pertama dari list tersebut.

Contoh Program Linked List :


#include <iostream>
using namespace std;
struct TNode
{ int data;
TNode *next;
};
TNode *head;
void init(){
head = NULL;
}
int isEmpty(){
if(head == NULL) return 1;
else return 0;
}
void insertDepan(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
head->next = NULL;
} else {
baru->next = head;

Laboratorium Informatika Industri | 15


Modul Praktikum Struktur Data 2019/2020

head = baru;
}
cout<<"data masuk";
}
void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
head->next = NULL;
} else {
bantu=head;
while(bantu->next!=NULL){ bantu=bantu->next;}
bantu->next = baru;
}
cout<<"Data masuk";
}
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<"";
} else cout<<"Masih kosong\n";
}
void hapusDepan (){
TNode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = head;
d = hapus->data;
head = head->next;
delete hapus;
} else {
d = head->data;
head = NULL;
}
cout<<d<<"terhapus";
}else cout<<"Masih kosong\n";
}
void hapusBelakang(){
TNode *hapus,*bantu;
int d;
if (isEmpty()==0){
if(head->next != NULL){

Laboratorium Informatika Industri | 16


Modul Praktikum Struktur Data 2019/2020

bantu = head;
while(bantu->next->next!=NULL){
bantu = bantu->next;
}
hapus = bantu->next;
d = hapus->data;
bantu->next = NULL;
delete hapus;
} else {
d = head->data;
head = NULL;
}
cout<<d<<"terhapus";
} else cout<<"Masih kosong\n";
}
int main(){
int pil,databaru;
cout<<"* ------------------------------- *"<<endl;
cout<<"* Single Linked List Non Circular"<<endl;
cout<<"* ------------------------------- *"<<endl;
do
{
cout<<"\n";
cout<<"\n1. Insert Depan";
cout<<"\n2. Insert Belakang";
cout<<"\n3. Delete Depan";
cout<<"\n4. Delete Belakang";
cout<<"\n5. Tampil Data";
cout<<"\n\nSilahkan Masukan Pilihan Anda :";cin>>pil;
switch (pil)
{
case 1: {
cout<<"Masukkan Data = ";
cin>>databaru;
insertDepan(databaru);
break;
}
case 2:{
cout<<"Masukkan Data = ";
cin>>databaru;
insertBelakang(databaru);
break;
}
case 3:{
hapusDepan();
break;
}
case 4:{
hapusBelakang();
break;
}

Laboratorium Informatika Industri | 17


Modul Praktikum Struktur Data 2019/2020

case 5:{
tampil();
break;
}
default :{
cout<<"\n Maaf, Tidak ada dalam pilihan";
}
}
} while(pil>=1 && pil<= 5);
}
PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Kerjakan contoh program linked list pada teori dasar.
3) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
4) Matikan PC dan Rapihkan meja praktikum.

EVALUASI PRAKTIKUM
1. Buatlah sebuah program sorting dengan menggunakan metode insertion sort dengan
mengimplementasikan linked list.

Laboratorium Informatika Industri | 18


Modul Praktikum Struktur Data 2019/2020

\ Modul 6 : Stack / Tumpukan

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 6, praktikan diharapkan mampu memahami stack dan
konsepnya serta mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep yang digunakan dalam stack.
2. Mengetahui algoritma stack dan pengimplementasiannya kedalam program.
TUGAS PENDAHULUAN
1. Jelaskan pengertian dan konsep queue atau antrian
2. Gambarkan ilustrasi dari konsep queue atau antrian.
3. Tuliskan dan jelaskan operasi-operasi yang terdapat pada program queue atau antrian
4. Tuliskan contoh program dari queue atau antrian beserta outputnya.
TEORI DASAR:
1. Stack
Stack berarti tumpukan yang menerapkan konsep LIFO (Last In First Out) yang artinya data yang
terakhir masuk akan menjadi data yang pertama keluar. Ada beberapa operas-operasi pada stack yaitu :
a. Push Untuk menambahkan item pada tumpukan paling atas
b. Pop Untuk mengambil item teratas
c. Clear Untuk mengosongkan stack
d. IsEmpty Untuk memeriksa apakah stack kosong
e. IsFull Untuk memeriksa apakah stack sudah penuh

PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Buat file baru kemudian simpan file tersebut dengan nama “ContohTumpukan.cpp”
3) Kerjakan program berikut.
#include <iostream>
using namespace std;
int top=-1;
int data[5];
void Push (int input){

Laboratorium Informatika Industri | 19


Modul Praktikum Struktur Data 2019/2020

top=top+1;
data[top]=input;
}
void Pop (){
top=top-1;
}
void isiStack(){
for (int i=top; i>=0; i--) {
cout<<"| "<<data[i]<<" |"<<endl;
}
}
int main () {
int pilih, input;
while (true){
cout<< "Menu" << endl;
cout<< "1. Push Stack" << endl;
cout<< "2. Pop Stack" << endl;
cout<< "3. Isi Stack" << endl;
cout<< "Masukkan Pilihan : " ; cin>>pilih;
if (pilih == 1){
cout<< "Masukkan Data : "; cin>>input;
Push(input);
cout<< "Push Berhasil !" << endl;
} else if (pilih == 2){
Pop();
cout<< "Pop Berhasil" << endl;
} else if (pilih == 3) {
isiStack();
} else { cout<< "Tidak Ada Pilihan !" << endl;
}
}
}
4) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
5) Matikan PC dan Rapihkan meja praktikum.
EVALUASI PRAKTIKUM
1. Lengkapilah program pada kegiatan praktikum dengan operasi :
a. Clear untuk mengosongkan stack.
b. IsEmpty untuk memeriksa stack dalam kondisi kosong
c. IsFull untuk memeriksa stack dalam kondisi full
d. Tambahkan validasi untuk tidak dapat menambahkan data jika stack penuh dan validasi untuk
tidak dapat menghapus data jika stack kosong.
2. Buatlah program seperti ilustrasi berikut.
5 5 25 56
3 3 9 36
6 6 36 25
8 7 56 14
7 2 14 9
Tumpukan Tumpukan Tumpukan Tumpukan
1 2 3 4

Tumpukan 3 : berisi hasil kali dari tumpukan 1 dan tumpukan 2.


Tumpukan 4 : berisi hasil pengUrutan tumpukan 3 menggunakan bubble sort.

Laboratorium Informatika Industri | 20


Modul Praktikum Struktur Data 2019/2020

Modul 7 : Queue / Antrian

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 7, praktikan diharapkan mampu memahami queue dan
konsepnya serta mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep yang digunakan dalam queue.
2. Mengetahui algoritma queue dan pengimplementasiannya kedalam program.
TUGAS PENDAHULUAN
1. Tuliskan dan jelaskan pengertian tree dalam struktur data.
2. Tuliskan dan jelaskan jenis-jenis tree dalam struktur data.
3. Tuliskan dan jelaskan pengertian binary tree.
4. Tuliskan dan jelaskan maksud dari preorder, inorder dan postorder.
5. Tuliskan contoh program tree sederhana.
TEORI DASAR:
1. Queue
Queue berarti antrian yang menerapkan konsep FIFO (First In First Out) yang artinya data yang
pertama masuk akan menjadi data yang pertama keluar. Ada beberapa operasi-operasi pada antrian yaitu:
a. Enqueue Untuk menambahkan item pada antrian
b. Dequeue Untuk mengambil item dari antrian
c. Clear Untuk mengosongkan antrian
d. IsEmpty Untuk memeriksa apakah antrian kosong
e. IsFull Untuk memeriksa apakah antrian sudah penuh

PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Buat file baru kemudian simpan file tersebut dengan nama “ContohAntrian.cpp”
3) Kerjakan program berikut.
#include <iostream>
using namespace std;
int main(){

Laboratorium Informatika Industri | 21


Modul Praktikum Struktur Data 2019/2020

int queue[5];
int depan=-1;
int belakang =-1;
int pilihan, data, i;
do {
cout<<"MENU \n";
cout<<"1. ENQUEUE \n2. DEQUEUE \n3. VIEW \n4. EXIT\n";
cout<<"Masukkan Pilihan : ";
cin>>pilihan;
cout<<endl;
switch (pilihan) {
case 1:
if (belakang<4)
{ cout<<"Data Masuk : ";
cin>>data;
queue[belakang+1]=data;
belakang++;
if(belakang==0)
depan=0;
}else
cout<<"Queue Penuh"<<endl;
break;
case 2 :
if (depan<=belakang)
{cout<<"Data Keluar ="<<queue[depan];
depan++;
}else{cout<<"QUEUE KOSONG"<<endl;}
break;
case 3 :
for(i=depan;i<=belakang;i++)
cout<<"===== "<< queue[i]<<" ====="<<endl;
break;
}
}while(pilihan !=4);
return 0;
}
4) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
5) Matikan PC dan Rapihkan meja praktikum.
EVALUASI PRAKTIKUM
1. Buatlah program antrian sesuai ilustrasi berikut ini.
Pengguna melakukan Enqueue sebanyak 10 kali. Kemudian data tersimpan pada Antrian1.
Ketika pengguna melakukan Dequeue, data yang dikeluarkan akan masuk ke antrian selanjutnya. Data
dengan angka yang lebih dari 20 akan masuk ke Antrian2 sedangkan dtaa dengan angka yang kurang dari
20 akan masuk ke Antrian3. Pengguna akan dapat melihat isi dari ketiga Antrian tersebut.

Laboratorium Informatika Industri | 22


Modul Praktikum Struktur Data 2019/2020

Modul 8 : Tree

KOMPETENSI :
Setelah menyelesaikan praktikum pada modul 8, praktikan diharapkan mampu memahami konsep Tree serta
mampu mengimplementasikannya.
TUJUAN INTRUKSIONAL KHUSUS :
1. Mengetahui konsep Tree.
2. Mengetahui konsep Binary Tree
3. Mengetahui konsep Preorder, Inorder, dan Postorder.
4. Mampu mengimplementasikan Tree dalam program
TEORI DASAR:
1. Tree
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat
hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan
simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-
himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di bawah
akan diuraikan istilah-istilah umum dalam tree :
 Prodecessor : node yang berada diatas node tertentu.
 Successor : node yang berada di bawah node tertentu.
 Parent : predecssor satu level di atas suatu node.
 Child : successor satu level di bawah suatu node.
 Sibling : node-node yang memiliki parent yang sama dengan suatu node.
 Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua
karakteristik dari tree tersebut.
 Size : banyaknya node dalam suatu tree.
 Height : banyaknya tingkatan/level dalam suatu tree.
 Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
 Leaf : node-node dalam tree yang tak memiliki successor.
 Degree : banyaknya child yang dimiliki suatu node
2. Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree
dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary
tree hanya boleh memiliki paling banyak dua child.

Contoh Program Binary Tree


#include <iostream>
using namespace std;
struct Node {
int data;
Node *kiri;
Node *kanan;
};

Laboratorium Informatika Industri | 23


Modul Praktikum Struktur Data 2019/2020

//FUNGSI UNTUK MENAMBAHKAN DATA


void tambah (Node **root, int databaru){
if ((*root)==NULL){ //jika pohon/subpohon masih kosong
Node *baru; //node baru dibentuk
baru = new Node;
baru->data=databaru;
baru->kiri=NULL;
baru->kanan=NULL;
*root=baru;
(*root)->kiri=NULL;
(*root)->kanan=NULL;
cout<<"DATA BERTAMBAH !"<<endl;
} else if (databaru<(*root)->data){
tambah(&(*root)->kiri, databaru);
} else if (databaru>(*root)->data){
tambah(&(*root)->kanan, databaru);
} else if(databaru==(*root)->data){
cout<<"DATA SUDAH ADA !";
}
}
//FUNGSI PRE-ORDER itu data ditampilkan dari node induk, node anak kiri,
lalu node anak kanan
void preOrder(Node *root){
if (root!=NULL){
cout<<root->data;
preOrder (root->kiri);
preOrder (root->kanan);
}
}
//FUNGSI IN-ORDER itu data ditampilkan dari node anak kiri, node induk,
node anak kanan
void inOrder(Node *root){
if (root!=NULL){
inOrder(root->kiri);
cout<<root->data;
inOrder(root->kanan);
}
}
//FUNGSI POST-ORDER itu data ditampilkan dari node anak kiri, node anak
kanan, lalu node induk)
void postOrder(Node *root){
if (root!=NULL){
postOrder(root->kiri);
postOrder(root->kanan);
cout<<root->data;
}
}
int main(){
int pil;
Node *pohon;
pohon=NULL;

Laboratorium Informatika Industri | 24


Modul Praktikum Struktur Data 2019/2020

do{
int data;
cout<<"MENU"<<endl;
cout<<"(1) TAMBAH"<<endl;
cout<<"(2) LIHAT PRE-ORDER"<<endl;
cout<<"(3) LIHAT IN-ORDER"<<endl;
cout<<"(4) LIHAT POST-ORDER"<<endl;
cout<<"(5) KELUAR"<<endl;
cout<<"Pilihan : "; cin>>pil;
switch(pil){
case 1 :cout<<"Data Baru : ";
cin>>data;
tambah(&pohon, data);break;
case 2 :if (pohon!=NULL) preOrder(pohon);
else cout<<"MASIH KOSONG ! ";break;
case 3 :if (pohon!=NULL) inOrder(pohon);
else cout<<"MASIH KOSONG ! ";break;
case 4 :if (pohon!=NULL) postOrder(pohon);
else cout<<"MASIH KOSONG ! ";break;
}
cout<<endl;
}while(pil !=5);
return 0;
}

PRAKTIKUM MANDIRI
1. Peralatan
a) Perangkat komputer / PC / Laptop / Notebook .
b) Sistem operasi Windows / Linux (optional Mac OS)
c) Aplikasi Code Block
2. Prosedur
a) Baca dan pahami semua tahapan praktikum dengan cermat.
b) Gunakan fasilitas yang disediakan dengan penuh rasa tanggung jawab.
c) Rapihkan kembali setelah menggunakan komputer (mouse, keyboard, kursi, dll)
d) Perhatikan sikap anda untuk tidak mengganggu rekan praktikan lain
e) Pastikan diri anda tidak menyentuh sumber listrik.
3. Kegiatan Praktikum
1) Buka texteditor yang akan digunakan.
2) Kerjakan contoh program linked list pada teori dasar.
3) Setelah percobaan selesai, tutup semua perangkat lunak yang telah digunakan.
4) Matikan PC dan Rapihkan meja praktikum.
EVALUASI PRAKTIKUM
1. Buatlah sebuah program searching dengan menggunakan konsep binary tree (Binary Tree Searching)!

Laboratorium Informatika Industri | 25


Modul Praktikum Struktur Data 2019/2020

LEMBAR EVALUASI PRAKTIKUM

EVALUASI PRAKTIKUM 1
Stamp/Date Result/Point Signature/Name

EVALUASI PRAKTIKUM 2
Stamp/Date Result/Point Signature/Name

EVALUASI PRAKTIKUM 3
Stamp/Date Result/Point Signature/Name

EVALUASI PRAKTIKUM 4
Stamp/Date Result/Point Signature/Name

Dosen : RANGE NILAI


A = 85 – 100
Asisten 1 : A- = 80 – 84
Asisten 2 : B+ = 75 – 79
B = 70 – 74
B- = 65 – 69
C+ = 60 – 64
C = 50 – 59

Laboratorium Informatika Industri | 26

Anda mungkin juga menyukai