Anda di halaman 1dari 22

LAPORAN HASIL PRAKTIKUM

STRUKTUR DATA

NAMA : IRWANDI
NIM : 193030503054
KELAS :B
MODUL : I (ARRAY, STRUCT DAN POINTER)

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2020
BAB I
TUJUAN DAN LANDASAN TEORI
I. Tujuan
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu
1. Mahasiswa mampu mengimplementasikan Array, Struct dan Pointer.
2. Mahasiswa mengetahui kapan harus menggunakan Array, Struct dan Pointer.
II. Landasan Teori

1. Array
Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu
yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu larik
disebut dengan elemen-elemen larik. Letak urutan dari suatu elemen larik
ditunjukkan oleh suatu subscript atau suatu index.
Menurut dimensinya, array dapat dibedakan menjadi :

1. Array berdimensi satu (Deklarasi)


 Setiap elemen array dapat diakses melalui index
 Index array secara default dimulai dari 0
 Deklarasi array : Tipe_array nama_array[ukuran]
2. Array berdimensi dua (Inisialisasi)
 Array dua dimensi merupakan array yang terdiri dari m buah baris dan n
 buah buah kolom. Bentuknya dapat berupa matriks atau tabel.
 Deklarasi array : Tipe_array nama_array [baris][kolom]
3. Array multidimensi (Pengaksesan)
 Array multidimensi merupakan array yang mempunyai ukuran lebih
dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan
deklarasi array dimensi satu maupun dimensi dua.
 Deklarasi array : Tipe_array nama_array [ukuran 1][ukuran 2] . . .
[ukuran N]

Perbedaan array dengan tipe data lain :


Array dapat mempunyai sejumlah nilai, sedangkan tipe data lain hanya
dihubungkan dengan sebuah nilai saja. Array dapat digunakan untuk
menyimpan beberapa nilai tipe data lain data (char, int, float, double,
long, dll) yang sama dengan satu nama saja. Selain itu, array dapat
berupa  satu dimensi atau lebih, sedangkan tipe data lain hanya berupa
satu dimensi.
Terdapat dua tipe operasi, yaitu:
1. Operasi terhadap satu elemen/posisi dari array
2. Operasi terhadap array sebagai keseluruhan
3. Dua operasi paling dasar terhadap satu elemen/posisi adalah
4. Penyimpanan nilai elemen ke posisi tertentu di array
2. Struct
Struct adalah tipe data yang dapat melakukan penyimpanan beberapa data yang
saling terkait (seperti Nama, NRP, Alamat), sebagai suatu kesatuan, sehingga
data-data tersebut seakan-akan menjadi suatu data tunggal. Pembuatan tipe data
baru dalam C dilakukan dengan menggunakan kata kunci struct, yang merupakan
kependekan dari structure (struktur).

Syntax :
Struct [<struct type name>]{
[<type><variabel-name[,variabel-name, …]>];
} [<structure variabels>];
Contoh :
typedef struct
{
int NIP ;
char nama[30]
} pegawai_t;

Perbedaan dengan Tipe data lain :

Tipe data yang lain hanya terdiri dari 1 element, sehingga hanya dapat menyimpan
sebuah nilai atau sebuah string saja, sedangkan tipe data struct dapat menyimpan
beberapa elemen, dengan berbagai macam tipe seperti int, char, long, dll.

Operator titik digunakan sebagai pemisah antara variabel struktur dengan


elemennya, penulisan ini sebaiknya tidak dipisahkan oleh spasi. Operator ini
berfungsi untuk mengakses suatu element dari variabel struktur.

Operator panah digunakan untuk pengaksesan operasi pointer, atau menggunakan


operator bintang (’*’), untuk pengaksesan element-element suatu struktur yang
berupa pointer

3. Pointer

Pointer adalah variabel yang merujuk pada alamat lokasi suatu memori tertentu,
variable pointer dapat dideklarasikan dengan menuliskan nama variabelnya
diawali dengan asterisk (‘*’). Perubahan yang terjadi pada variabel asal akan
mengakibatkan perubahan pada variabel pointernya dan sebaliknya.

Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi
integer. Deklarasi pada C adalah:

int *IntegerPointer;

Tanda asterik (*) yang berada sebelum nama variable IntegerPointer menandakan
‘pointer pada suatu int’. Jadi deklarasi diatas berarti ‘definisikan sebuah tipe yang
terdiri dari pointer bertipe integer yang bernama IntegerPointer’. Apabila
didepannya ditambahkan typedef sebagai berikut

Typedef int *IntegerPointer;

Berarti IntegerPointer merupakan suatu tipe pointer berbentuk integer. Apabila


akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan
integer : IntegerPointer A, B;

Berarti kompiler C akan berisi nilai dari variable A dan B yang ‘menunjuk ke
integer’.

Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang


kosong dan untuk membuat A dan B menunjuk tempat tersebut, digunakan
prosedur dinamis untuk alokasi penyimpan yang disebut malloc

A = (IntegerPointer *) malloc (sizeof(int));

B: (int *) malloc (sizeof(int));

Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk
pointer pada variable A. Untuk menuimpan angka 5 pada blok penyimpan
integer itu melalui pointer A, digunakan pernyataan :

*A = 5; 5

Linked list adalah salah satu struktur data yang paling fundamental. Linked list
terdiri dari sejumlah kelompok elemen (linked ) dengan urutan tertentu.
Linked list sangat berguna untuk memelihara sekelompok data, semacam
array, tetapi linked list lebih menguntungkan dalam beberapa kasus. Linked
list lebih efisien dalam proses penyisipan (insertion ) dan penghapusan
(deletion )

BAB II
PEMBAHASAN
1.1. Program pertama (Array) :

#Include < stdio.h>


#define Max 10

Int Fibo [Max];


In main()
{
Int 1;
Fibo[1]=1;
Fibo[2]=2;

For (1=3;1<=MAX++)
Fibo[1]=fibo[1-2]+fibo[i-1];
Printf (“b bilangan fibonachi pertama adalah : \n”,MAX);
For(i=1;i<=MAX;1++);
Printf ( “d-“, fibo[i]);

1.1 Gambar program pertama array


Output :

1.1 Gambar hasil program array

1. mulai
2. Definisi maksimal MAX = 10
3. Integer i
4. Bilangan fibo[1] = 1 dan fibo[2] = 1
5. Untuk i = 3 , i <=MAX dan i bertambah , fibo[i] = fibo [i-2] + fibo [i-1]
6. Tampilkan “%d bilangan Fibonaci pertama adalah :” \n, MAX
7. Untuk i = 1 , i < MAX dan i bertambah , output fibo[i]
8. Tampilkan %d, fibo[i]
9. Selesai
Penjelasan

Program ini di gunakan untuk menentukan 10 bilangan fibonanci pertama.


Tipe data yang digunakan adalah int (integer ) yang merupakan bilangan bulat
dengan menggunakan variabel i. Header yang digunakan adalah <stdio.h>
untuk perintah untuk perintah printf. Pendefinisian max data yang digunakan
adalah 10, menggunakan perulangan for. Dalam program ini digunkan header
<stdio.h> untuk perintah printf. Program tidak dapat diexecute apabila
menggunakan syntax “void”, maka diganti dengan

1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array


dapat diacu secara langsung tanpa melalui elemen-elemen lain.
2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri
ke elemen- elemen tetangga, baik elemen pendahulu atau elemen
penerus
3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya
harus terjaga, maka penggunaan penyimpanannya sangat efisien

Contoh lain: array_data.cpp
#include <iostream>
using namespace std;

int main(){
// membuat array kosong
int nilai[5];

// mengisi array
nilai[0] = 32;
nilai[1] = 42;
nilai[2] = 76;
nilai[3] = 31;
nilai[4] = 57;

// mencetak isi array


cout << "Nilai ke-1: " << nilai[0] << endl;
cout << "Nilai ke-2: " << nilai[1] << endl;
cout << "Nilai ke-3: " << nilai[2] << endl;
cout << "Nilai ke-4: " << nilai[3] << endl;
cout << "Nilai ke-5: " << nilai[4] << endl;

return 0;
}
Contoh program array
Output:

Contoh Gambar Output program Array


Kelemahan array.
Array mempunyai fleksibilitas rendah, karena array mempunyai
batasan sebagai berikut:

1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana
satu elemen adalah karakter, elemen lain bilangan, dan elemen lain
adalah tipe-tipe lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array statik
yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan
pengurangan terjadi terus-menerus, maka representasi statis Tidak
efisien dalam penggunaan memori Menyiakan banyak waktu komputasi
Pada suatu aplikasi, representasi statis tidak dimungkinkan

1.2. Program Kedua (Struct)

#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;

struct data Buku{


char kode[50];
char nama[50];
char tahunTerbit[50];
char pengarang[40];
double hargaBuku;

};
main(){

int n,i;

cout << "Banyaknya Jumlah buku = " ;


cin >> (n);

dataBuku buku[n];
for(i=1;i<=n;i++)
{
cout<<"buku ke- ["<<i<<"] ";
cout<<endl;
cout<<"Kode buku :";
cin >> buku[n].kode;
cout<<"Nama buku :";
cin >> buku[n].nama;
cout<<"Tahun terbit :";
cin >> buku[n].tahunTerbit;
cout<<"nama pengarang :";
cin >> buku[n].pengarang;
cout<<"Harga buku :";
cin >> buku[n].hargaBuku;
cout << endl;
system ("cls");
}
for (i=1;i<=n;i++)
{
cout <<"buku ke- " <<i<<endl;
cout <<"kode buku " <<buku[n].kode<<endl;
cout <<"Nama buku " <<buku[n].nama<<endl;
cout <<"Tahun terbit " <<buku[n].tahunTerbit<<endl;
cout <<"Nama pengarang " <<buku[n].pengarang<<endl;
cout <<"Harga buku " <<buku[n].hargaBuku<<endl;
cout<<endl;
}

return 0;

}
1.2 Program struct

Output :

1.3 Output hasil program struct

#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
Nama_struct : merupakan identitas dari struct tersebut

Penggunaan dari nama_struct dan nama_object merupakan opsional, kita


bisa mendirikan tanpa hal tersebut, tapi kita tidak bisa mengabaikan
keduanya. Dan masing-masing tindakan akan membuat struct memiliki
sifat yang berbeda.

Jika kita mendirikan struct tanpa menggunakan nama_struct, maka kita


diharuskan menggunakan object. Jika tindakan ini dilakukan maka akan
membuat struct tidak bisa di pakai di luar deklarasi struct (kita tidak bisa
mendirikan object diluar struct tersebut). biasanya tindakan ini digunakan
untuk membuat sebuah struct yang tidak di anjurkan untuk digunakan
(agar tidak terjadi pembuatan object di luar deklarasi struct).

Pada contoh di atas, kita menggunakan perintah cout secara berulang untuk


mencetak semua isi array

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama,
dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa
dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi
sebuah satu kesatuan.
Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal,
bulan dan tahun.
struct data Buku{
char kode[50];
char nama[50];
char tahunTerbit[50];
char pengarang[40];
double hargaBuku;

};
main(){
int n,i;

Mendeklarasikan Struktur
Contoh pendefinisian tipe struktur adalah sebagai berikut:
Struct data_buku
{ int banyaknya buku
int banyaknya buku
};
pendeklarasian struktur
dapat juga ditulis sebagai
berikut:
struct data buku
{ int tanggal;
Int bulan; int tahun; }
tgl_lahir;
Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah
sebagai berikut
struct nama_tipe_struktur {
tipe field1;
tipe field2;
tipe fieldn;
}variabel_struktur1, ... , variabel_strukturM;
Masing-masing tipe dari elemen struktur dapat berlainan. Adapun
variabel_struktur1 sampai dengan variabel_strukturM menyatakan bahwa
variabel struktur yang dideklarasikan bisa lebih dari satu. Jika ada lebih dari
satu variabel, antara variabel struktur dipisahkan dengan tanda koma.

cout << "Banyaknya Jumlah buku = " ;


cin >> (n);

dataBuku buku[n];
for(i=1;i<=n;i++)
{
cout<<"buku ke- ["<<i<<"] ";
cout<<endl;
cout<<"Kode buku :";
cin >> buku[n].kode;
cout<<"Nama buku :";
cin >> buku[n].nama;
cout<<"Tahun terbit :";
cin >> buku[n].tahunTerbit;
cout<<"nama pengarang :";
cin >> buku[n].pengarang;
cout<<"Harga buku :";
cin >> buku[n].hargaBuku;
cout << endl;
system ("cls");
}

Penjelasan : Struct sebenarnya hanyalah deklarasi untuk membuat sebuah tipe


data baru yang didirikan oleh programmer sebagai data structure. Data
structure tersebut akan digunakan sebagai pembuatan object, pembuatan
object itu dapat dilakukan didalam deklarasi struct atau diluar deklarasi struct.

Pembuaan object sendiri sama seperti pembuatan variabel seperti biasanya,


yang berbeda hanya kita menggunakan tipe structure sebagai tipe datanya.

1.3. Program ketiga (Pointer)

#Include <stdio.h>
Main()
{
Int y, x =87;
Int *px;

Px=x;
Y =px;

Printf(“alamat x =p\n”, x);


Printf(“isi px =p\n”,px);
Printf(“isi x =d\n”,x);
Printf(“Nilai yang ditunjukan oleh px =d\n”, *px);
Printf(“Nilai y
{
1.2 Program pointer

Output:
1.3 Output hasil dari program pointer

1. Mulai
2. Variabel integer y, x =87
3. Variabel integer *px
4. Nilai px = alamat x(&x)
5. Nilai y = *px
6. Output alamat x = &x (alamat x)
7. Output isi px = px yaitu &x (alamat x)
8. Output isi x = x yaitu 87
9. Output nilai yang di tunjuk px = *px(nilai yang ada di alamat x) yaitu 87
10. Output nilai y = y yaitu *px(nilai yang ada di alamat x)
11. Selesai

Penjelasan

Program ini digunakan untuk menampilakan nilai dari varibel yang didenifisikan
berupa x dan y berupa alamat x, isi px, isi x, nilai yang ditunjuk oleh px, dan nilai
y. Header yang digunakan adalah <stdio.h> untuk perintah printf dengan tipe data
integer. Ini menunjukkan bagaimana cara pointer bekerja, *px (variabel integer
pointer x).

Tanda asterik (*) di baca sebagai nilai yang ada dalam alamat pointer, sedangkan
tanda & dibaca sebagai alamat dari pointer. Diketahui bahwa nilai px=&x, nilai y
= *px. Tidak terdapat kesalahan sintax pada program ini.
Dari program (code) contoh penggunaan Operator Dereference (&) diatas,
kami mencoba membuat ilustrasinya pada gambar dibawah ini sehingga sobat
dapat lebih memahami code yang kami buat, perlu diketahui alamat memori dari
sebuah variabel / pointer pada setiap komputer kemungkinan besar berbeda
Pada program diatas awalnya kita membuat variabel dengan tipe data int dengan
nama "x", kemudian sebuah pointer dengan tipe data int dengan nama "p". setelah
itu memberikan nilai x dengan nilai "20" kemudian mengarahkan / mengisi /
menunjukkan pointer p ke alamat memori variabel x. setelah itu menampilkan
data dari variabel x dan pointer p,.

Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat pula menunjuk 
ke pointer lainnya. Didalam pendeklarasianya, hanya menambahkan pointer refere
nce ( * ) pada variabel yang akan ditunjuk.
Contog Program : 
#include <iostream> //file header input output
using namespace std; //mengunakan namespace std
int main(void){ //fungsi  utama yang dijalankan program
     int angka = 10; //deklarasi variable angka dengan nilai 10
     int *point; //deklarasi pointer point
     int **pointpoint; //deklarasi pointer pointpoint yang akan diisi pointer point
    point = &angka; //pengisian pointer point dengan alamat angka
     pointpoint = &point; //pengisian pointer pointpoint dengan alamat pointer point
     cout<<**pointpoint; //mengkases nilai angka dari pointer ke pointer
     return 0; //mengmbalikan nilai 0

BAB III
KESIMPULAN
1.4 Array
Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah
elemen maksimumnya telah diketahui dari awal. Array umumnya disimpan
di memori komputer secara kontigu (berurutan). Deklarasi dari array adalah
sebagai berikut:
int A[5]; artinya variabel A adalah kumpulan data sebanyak 5
bilangan bertipe integer. Operasi terhadap elemen di array dilakukan
dengan pengaksesan langsung. Nilai di masing-masing posisi elemen
dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.
Struct
Penggunaan dari nama_struct dan nama_object merupakan opsional, kita
bisa mendirikan tanpa hal tersebut, tapi kita tidak bisa mengabaikan
keduanya. Dan masing-masing tindakan akan membuat struct memiliki
sifat yang berbeda.
Jika kita mendirikan struct tanpa menggunakan nama_struct, maka kita
diharuskan menggunakan object. Jika tindakan ini dilakukan maka akan
membuat struct tidak bisa di pakai di luar deklarasi struct (kita tidak bisa
mendirikan object diluar struct tersebut). biasanya tindakan ini digunakan
untuk membuat sebuah struct yang tidak di anjurkan untuk digunakan
(agar tidak terjadi pembuatan object di luar deklarasi struct).

Pada contoh di atas, kita menggunakan perintah cout secara berulang untuk


mencetak semua isi array

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama,
dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa
dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi
sebuah satu kesatuan.
Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal,
bulan dan tahun.
Pointer
Program ini digunakan untuk menampilakan nilai dari varibel yang
didenifisikan berupa x dan y berupa alamat x, isi px, isi x, nilai yang ditunjuk
oleh px, dan nilai y. Header yang digunakan adalah <stdio.h> untuk perintah
printf dengan tipe data integer. Ini menunjukkan bagaimana cara pointer
bekerja, *px (variabel integer pointer x).

Tanda asterik (*) di baca sebagai nilai yang ada dalam alamat pointer,
sedangkan tanda & dibaca sebagai alamat dari pointer. Diketahui bahwa nilai
px=&x, nilai y = *px. Tidak terdapat kesalahan sintax pada program ini.
Dari program (code) contoh penggunaan Operator Dereference (&) diatas,
kami mencoba membuat ilustrasinya pada gambar dibawah ini sehingga sobat
dapat lebih memahami code yang kami buat, perlu diketahui alamat memori
dari sebuah variabel / pointer pada setiap komputer kemungkinan besar
berbeda
Pada program diatas awalnya kita membuat variabel dengan tipe data int
dengan nama "x", kemudian sebuah pointer dengan tipe data int dengan nama
"p". setelah itu memberikan nilai x dengan nilai "20" kemudian mengarahkan /
mengisi / menunjukkan pointer p ke alamat memori variabel x. setelah itu
menampilkan data dari variabel x dan pointer p,.
BAB IV
DAFTAR PUSTAKA
1.5 Daftar Pustaka
Tim Asisten Praktikum. 2010. Modul 1 Struct, Array, Pointer. Malang:
Unversitas Negeri Malang.
BAB V
LAMPIRAN
1.6 Lampiran
Program Array

1.1 program Array


Output :

1.1 Hasil Program Array


1.2 Program Struct

Output :

1.2 hasil program struct

Program Pointer
1.3 Program Pointer

Output :

1.3 Hasil Program Pointer