Anda di halaman 1dari 17

LAPORAN PRAKTIKUM STRUKTUR DATA

SEMESTER GASAL 2019/2020

MINGGU 01: POINTER, STRUCT DAN FUNCTION

Disusun oleh:

Ferdinand Gozales (7118299)


KELAS C

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS KRISTEN DUTA WACANA
YOGYAKARTA 2019

RINGKASAN MATERI POINTER, STRUCT DAN FUNCTION


Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib
memiliki alamat dari variabel yang ditunjuknya.
dalam program yang besar, penghematan memori sangat wajib untuk dilakukan. Karena
dengan copy dan paste nilai suatu variabel satu kedalam variabel lain, itu akan sangat
memboroskan pemakaian memori sehingga membuat komputer sangat tersiksa karena
beban memori. Dengan pointer, maka suatu variabel dalam suatu fungsi dapat diakses oleh
fungsi yang lainnya dan tentu menjadi ringan dan hemat memori.
Alamat Dari Variabel,
Contohnya kamu memiliki sebuah variabel x dan terletak pada memori 0x000001. Jika
kamu ingin menginputkan variable x tersebut bernilai 100. maka processor harus membawa
nilai 100 yang kamu inputkan kedalam variabel x yang terletak di alamat memori 0x000001.
Hal yang perlu ketahui bahwa, setiap variabel itu memiliki ukuran “byte” yang berbeda-beda
didalam memori.
Contohnya saja variabel bertipe INT memiliki ukuran 4 byte didalam memori. Maka
variabel tersebut menempati 4 blok lokasi dalam memori, misalkan alamat 0x000001,
0x000002, 0x000003, dan 0x000004. Jika terdapat 2 variabel bertipe INT bersebelahan, maka
alamat variabel yang pertama terletak di 0x000001 dan variable yang kedua dialamat
0x000005.

Memori menggunakan heksadesimal yang ditandai dengan awalan ‘0x’, sehingga jika suatu
variabel menempati blok 10 dalam memori, maka alamatnya adalah 0x00000a
Argument Passing
• Ada 3 macam cara memberikan argumen (passing an argument) kedalam sebuah fungsi:
1. Pass by value
2. Pass by address / pass by pointer
3. Pass by reference
2
• Pass by Value artinya kita akan mempassing value sebagai parameter dalam fungsi yang
kita buat
• Pass by Address berarti kita akan menggunakan pointer untuk mengakses atau bisa
juga mengubah value dari sebuah alamat.

Deference (&)
Deference (&), adalah suatu operator yang berfungsi untuk menanyakan alamat dari suatu
variabel. Apabila memberikan simbol & diawal variabel dan mencetak hasilnya pada jendela
CLI, maka yang akan tercetak adalah alamat dari variabel tersebut bukan nilai yang ditampung
oleh variabel tersebut. Berikut contohnya

outputnya

Alamat variabel ‘a’ di setiap komputer akan berbeda-beda tergantung pada kompiler kamu
dalam mengalamatkan memori untuk suatu variabel.
Reference (*)
Reference (*), adalah operator yang berfungsi menyatakan suatu variabel adalah variabel
pointer. peletakan simbol ‘*’ operator reference diletakan diawal variabel. Operator
reference ini akan membuat suatu variabel pointer untuk menampung alamat. Nah untuk
lebih mudahnya liat contoh kuy…. :

3
Ouputnya adalah

Nilai variabel b sama dengan variabel a, walaupun variabel b tidak diberikan nilai yang sama dengan variabel
a. karena variabel pointer b menunjuk alamat a dan variabel pointer b dapat mengakses nilai yang terkandung
dalam alamat.

POINTER PADA ARRAY


Pada array, pointer hanya perlu menunjuk pada alamat elemen pertama saja karena letak
alamat array sudah berurutan pada memori. Variabel pointer hanya perlu di increment –
Menunjuk pada alamat memorinya saja.
Array adalah pointer konstan – menunjuk ke elemen pertama (index 0).
menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array
tersebut menunjuk atau bersi alamat elemen pertama dari array tsb. Misalnya membuat
sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang
sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut dapat dilakukan:

FUNCTION
Function adalah sebuah struktur, Pengelompokan yang mengandung sekelompok pernyataan
yang akan dilaksanakan oleh komputer jika nama function tersebut dipanggil untuk di
eksekusi, kecuali untuk function utama yaitu int main() yang akan di eksekusi secara otomatis.
4
Bayangkan jika kita melakukan pemrograman sebuah program yang sangat-sangat besar dan
memerlukan pernyataan yang sangat Panjang (complex), apa lagi jika sebuah proses
mempunyai banyak pernyataan dan dibutuhkan tidak hanya sekali saja, itu pasti akan
membuat kita pusing jika ini tidak ada function.
Function sangat membantu kita untuk membuat pengelompokan pernyataan berdasarkan
tugas, proses atau katagori. Ketika kita membutuhkan kelompok pernyataan tersebut kita
cukup memanggil nama functionnya saja.

apa saja komponen dalam sebuah fungsi itu:

• Suatu fungsi jelas memiliki tipe. Tipe suatu fungsi menentukan nilai kembalian dari
fungsi tersebut. Suatu fungsi dengan tipe int (integer) akan memberikan kembalian/
return berupa nilai bertipe integer dari pemrosesan yang sudah dilakukannya.
Berbeda dengan tipe void, dimana tipe fungsi ini tidak memiliki nilai kembalian atau
dapat dikatakan fungsi void hanya menjalankan rutin program saja.
• Nama_fungsi merupakan pengenal suatu fungsi. Nama_fungsi akan sangat berguna
dan wajib disertakan karena sebagai basis pemanggilan.
• Parameter merupakan variabel penampung input suatu fungsi. Dapat dikatakan
bahwa parameter merupakan satu-satunya gerbang input dan pertukaran nilai antara
suatu fungsi dengan dunia luar (fungsi main).
• Return merupakan instruksi yang berguna mengembalikan hasil kerja suatu fungsi,
untuk dapat digunakan di dunia luar (fungsi main).
Jelasnya perhatikan contoh ini:

Program itu merupakan program yang berfungsi menghitung luas persegi panjang, dengan
memanfaatkan sebuah fungsi. kita buat fungsi untuk hitung_luas dengan tipe int (integer).

5
Parameter ada terdapat pada fungsi hitung_luas adalah panjang, dan lebar dengan masing-
masing bertipe data integer. Variabel luas di deklarasikan di dalam function dan memiliki hasil
berupa perkalian panjang dan lebar. Nilai luas kemudian diumpan kembali sebagai nilai akhir
pemrosesan dengan menggunakan return pada baris 6.

Pada baris ke 17 yaitu di dalam fungsi main(), kita memanggil kembali fungsi hitung_luas dan
diberikan ke nilai parameter berupa variabel a, dan b. Nilai variabel a dan b pada baris
sebelumnya menampung nilai panjang dan lebar yang diinputkan kita. Pada baris 17 juga,
hasil umpan balik (return) fungsi hitung_luas, kita tampung pada variabel hasil untuk
kemudian dicetak dibaris 18 untuk melihat outputnya.

STRUCT
Struct atau record adalah kumpulan data yang memiliki tipe data yang berbeda. Secara
pendeklarasian, struct sangat berbeda dengan array yang hanya memiliki satu buah tipe data.
Struct digunakan apabila data yang ingin dikelompokkan memiliki tipe data yang berbeda.
Pendeklarasian struct sebagai berikut:
stuct data_mahasiswa
{

long int nim;


char nama[100];
char fakultas[100];
};

data_mahasiswa mahasiswa1, mahasiswa2;

Bentuk umum pendeklarasian variabel struct nya adalah sebagai berikut:

struct data_mahasiswa mahasiswa1, mahasiswa2;

Deklarasi di atas ada dua variabel bernama Mahasiswa1 dan Mahasiswa2 setiap variabel
tersebut mempunyai field sesuai dengan data_mahasiswa.
Cara untuk mengisi dan memanggil nilai yang ada di dalam sebuah struct, sebagai berikut:

6
//Untuk mengisi nilai struct
cin>>mahasiswa1.nim;

//Untuk memanggil nilai struct


cout<<mahasiswa1.nim<<endl;

Lebih jelasnya:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

using namespace std;

//Deklarasi struct
struct data_mahasiswa
{
long int nim;
char nama[100];
char fakultas[100];
};

//Deklarasi variabel struct


data_mahasiswa mahasiswa1, mahasiswa2;

int main()
{
//Input struct data mahasiswa
cout<<" Data Mahasiswa Pertama\n";
cout<<"-----------------------\n";
cout<<" NIM : "; cin>>mahasiswa1.nim;
cout<<" Nama : "; fflush(stdin); gets(mahasiswa1.nama);
cout<<" Fakultas : "; fflush(stdin); gets(mahasiswa1.fakultas);
cout<<"\n\n";
cout<<" Data Mahasiswa Kedua\n";
cout<<"-----------------------\n";
cout<<" NIM : "; cin>>mahasiswa2.nim;
cout<<" Nama : "; fflush(stdin); gets(mahasiswa2.nama);
cout<<" Fakultas : "; fflush(stdin); gets(mahasiswa2.fakultas);
cout<<"\n\n";

//Output struct data mahasiswa


cout<<" Data Mahasiswa Pertama\n";
cout<<"-----------------------\n";
cout<<" NIM : "<<mahasiswa1.nim<<endl;
cout<<" Nama : "<<mahasiswa1.nama<<endl;
cout<<" Fakultas : "<<mahasiswa1.fakultas<<endl;
cout<<"\n\n";
cout<<" Data Mahasiswa Kedua\n";
cout<<"----------------------\n";
cout<<" NIM : "<<mahasiswa2.nim<<endl;
cout<<" Nama : "<<mahasiswa2.nama<<endl;
cout<<" Fakultas : "<<mahasiswa2.fakultas<<endl;
cout<<"\n\n";
getch();
}

7
CONTOH SOAL
1. Function

8
2. Struck

9
PEMBAHASAN SOAL
1. FUNCTION

Pada FUNCTION kali ini saya menggunakan #include <iostream> singkatan dari input
output stream header yang digunakan sebagai standar input output C++ dan #include
<conio.h> yang merupakan file header yang mempunyai fungsi sebagai menampilkan hasil
antarmuka kepada user,.
using namespace std yaitu perintah yang digunakan untuk mendeklarasikan pada
complier kalo kita akan menggunakan semua fungsi didalamnya.

Pertama membuat fungsi saldo, yang menggunakan fungsi int karena menggunakan void,
karena pada fungsi ini menggunakan operasi perhitungan. Dan hanya menggeluarkan
karakter saja.

membuat function penarikan dimana function digunakan untuk mengambil uang yang di
saldo, saya menggunakan int karena pada function ini kita melakukan operasi
perhitungan, pada sisa saldo setelah penarikan uang, disini pendeklarasikannya dengan
cara tabungan=tabungan-tarik; sehingga kita bisa mengeluarkan sisa saldo kita
ditabungan setelah melakukan penarikan uang.

fungsi setor digunakan untuk menabung uang/saldo di ATM (setor tunai),


pendeklarasikannya tabungan=tabungan-setor; sehingga bisa mengeluarkan tampilan
saldo setelah menyetor uang tunai.

10
Fungsi keluar untuk keluar dari aplikasi, pada fungsi ini menggunakan void karena hanya
mengeluarkan karakter saja.

Setelah membuat beberapa function diatas, sekarang membuatkan function untuk


memanggil semua fungsi-fungsi tsb, menggunakan fungsi switch case. akan membuat
beberapa case sesuai dengan jumlah fungsi yang telah dibuat sebelumnya, saya akan
membuat 4 case,

Case yang pertama memanggil function saldo, yaitu cek saldo, case kedua akan memanggil
function penarikan, untuk melakukan penarikan uang, case ketiga memanggil fungsi
setoran uang tunai, yaitu untuk melakukan setoran tunai atau menabung, case keempat
terkahir akan memanggil fungsi keluar, yaitu fungsi untuk keluar dari aplikasinya.

11
2. STRUCK

Di sini sebuah struktur karyawan dinyatakan yang memiliki tiga nama anggota, usia dan
gaji.

Di dalam fungsi Main (), sebuah variabel struktur karyawan1 didefinisikan. Kemudian user
diminta untuk memasukkan informasi dan data yang dimasukkan oleh user dan akan
ditampilkan.

Soal Unguided Program SOAL 2:


PEMBAHASAN:

12
#include <iostream>

#include <conio.h>

#include <iomanip> //setw()

#include <stdlib.h>

using namespace std;

struct listbarang

int data;

listbarang* next; // untuk menghubungkan dengan listbarang lain, tipe data


dibuat sama seperi aturan penggunaan pointer.

};

listbarang* head;

listbarang* tail;

listbarang* curr;

listbarang* entry;

listbarang* del;

void inisialisasi()

head = NULL;

tail = NULL;

void input(int dt)

entry = (listbarang* )malloc(sizeof(listbarang)); //alokasi memori

entry->data = dt;

entry->next = NULL;

if(head==NULL)

head = entry;

tail = head;

13
}

else

tail->next = entry;

tail = entry;

void kirimbarang()

int simpan;

if(head==NULL)

cout<<"\nlist kosong, pengkirimbarangan tidak bisa dilakukan"<<endl;

else

simpan = head ->data;

//kirimbarang depan

del = head;

head = head->next;

delete del;

cout<<"\ndata yang dikirimbarang adalah "<<simpan<<endl;

void cetak()

curr = head;

if(head == NULL)

cout<<"\ntidak ada data dalam list toko bambang"<<endl;

else

14
{

cout<<"\nData yang ada dalam list toko bambang"<<endl;

cout<<setw(6);

while(curr!=NULL)

cout<<curr->data<<"->";

curr = curr->next;

cout<<"NULL";

cout<<endl;

void menu()

char pilih, ulang;

int data;

do

system("cls");

cout<<"List Toko Bambang"<<endl;

cout<<"Menu : "<<endl;

cout<<"1. Tambah Barang"<<endl;

cout<<"2. Kirim Barang"<<endl;

cout<<"3. Liat Barang"<<endl;

cout<<"4. Exit"<<endl;

cout<<"Masukkan pilihan Anda : ";

cin>>pilih;

switch(pilih)

case '1' :

cout<<"\nMasukkan data : ";

15
cin>>data;

input(data);

break;

case '2' :

kirimbarang();

break;

case '3' :

cetak();

break;

case '4' :

exit(0);

break;

default :

cout<<"\nPilih ulang"<<endl;

cout<<"\nKembali ke menu?(y/n)";

cin>>ulang;

}while(ulang=='y' || ulang=='Y');

int main()

inisialisasi();

menu();

return EXIT_SUCCESS;

DAFTAR PUSTAKA
https://www.sinauarduino.com/artikel/fungsi-pada-pemrograman-cpp/

https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/

https://www.worldbestlearningcenter.com/index_files/cpp-oop-singly-linkedlist-count-elements-
exercise.htm

16
https://www.belajarcpp.com/tutorial/cpp/function/

http://jagocoding.com/tutorial/666/Struct_Pada_Pemrograman_C

#Mohon Maaf Kalau masih ada kesalahan menyusun laporan pak

17

Anda mungkin juga menyukai