Anda di halaman 1dari 75

STRUKTUR DATA

Shofwan Hanief, S.Kom., MT


Pendahuluan
Struktur Data
• Ilmu struktur data sangat berperan dalam bidang komputer,
dimana persoalan data yang didapatkan dalam kehidupan nyata
dapat diterjemahkan menjadi data dalam komputer, dengan
demikian komputer dapat mengolah, memanipulasi ataupun
melaksanakan operasi-operasi terhadap data tersebut
• Struktur dapat diartikan Sebagai suatu Susunan, Bentuk,
Pola atau Bangunan (konstruksi) data.
• Kata struktur juga sering digunakan misalnya struktur
organisasi yang menjelaskan susunan personil dalam sebuah
organisasi, struktur jaringan yang dapat diartikan sebagai
bentuk dari jaringan maupun dalam perkataan-perkataan
lainnya.
DATA
• Kata Data diambil dari Bahasa Inggris yang berasal dari bahasa
Yunani yaitu Datum yang berarti Fakta, Hasil Pengukuran atau
statistic untuk digunakan sebagai dasar perhitungan atau untuk
disajikan sebagai informasi.
• Makna kata Data bagi manusia adalah segala sesuatu yang dapat
diterima oleh indra manusia dari rangsangan-rangsangan
disekitarnya.
• sementara untuk computer adalah segala sesuatu yang bisa
dikodekan atau disimbolkan ataupun dilambangkan dengan kode-
kode, symbol-simbol atapun lambang-lambang yang telah disiapkan
dalam komputer.
Informasi

• Berbicara mengenai data di komputer tidak terlepas dengan istilah


Informasi, bagi computer informasi dan data tidak ada bedanya
dimana data dan informasi dianggap sama, namun bagi manusia
bahwa data dan informasi adalah hal yang berbeda.
• Dimana informasi adalah suatu fakta yang memiliki nilai atau arti
bagi seseorang, namun adakalanya bahwa informasi menjadi data
bagi orang lain, sementara data juga dapat dikatakan sebagai
informasi.

INPUT PRO OUTPUT


SES
Makna Struktur Data
• Jika kata struktur dan Data digabung akan
bermakna suatu susunan simbol-simbol yang
diorganisasikan dan dioperasikan sesuai dengan
defenisi yang diberikan kepadanya di dalam
komputer.
• Jika dikaitkan dengan mata kuliah struktur data,
maka mata kuliah struktur data mempelajari
bagaimana data disusun dalam memori utama
komputer agar penggunaan space dimemori
dapat digunakan secara optimal, cepat dalam
pencarian dan pengambilannya kembali dan
dapat diolah sesuai dengan tujuan.
• Sehingga mempelajari struktur data erat kaitannya
dengan membuat algoritma yang tentunya dilakukan
oleh perancang program.
• makna utama yang kita dapatkan adalah melatih
logika bagaimana memecahkan masalah yang rumit
dengan bantuan program.
• Bahasa pemrograman tidak dapat mengakomodasi
semua kebutuhan kita, sehingga dengan perintah
yang ada kita dapat merangkainya sehingga
menghasilkan output sesuai dengan kebutuhan kita.
Masalah
Masalah

Algoritma Struktur Data


penyelesaian
• Nilai Data
suatu data yang dipandang sebagai satu kesatuan Tunggal
(single Entity)
• Tipe Data
Kombinasi Antara
1. Himpunan nilai data ( set Of Value)
2. Himpunan operasi terhadap nilai-nilai
data tersebut ( Set Of Operation)
• Tipe Data Dapat dikelompokkan menjadi 2 Kelas yaitu :
1. Tipe data Atomik
2. Tipe data berstruktur/struktur data
• Data Atomik
yaitu sebagai suatu data yang dipandang sebagai satu
kesatuan tunggal dan tidak dapat dipecah-pecah lagi
Misalnya Integer, char, boolean dls
• Struktur data
Tipe data yang nilai-nilainya :
1. dapat didekomposisi menjadi satu atau beberapa
tipe berstruktur atau tipe atomik
2. menyertakan suatu himpunan assosiasi atau
relationship antara elemen-elemenya
Misalnya : Larik ( Array), Rekaman (Record), set dll
LEVEL ABSTRAKSI DARI TIPE DATA

• TIPE DATA ABSTRAK


Tipe data yang ada sebagai hasil imajinasi
• TIPE DATA VIRTUAL
Tipe data yang ada dalam virtual processor, misalnya
dalam bahasa pemrograman
• TIPE DATA PHYSICAL
tipe data yang secara physic/nyata di dalam main processor
• TIPE DATA NATIVE
tipe data yang tersedia pada bahasa pemrograman.
TIPE DATA ABSTRAK
Karakteristik :
- Modular
- Penyembunyian Informasi (information Hiding)
Keuntungan :
- Kebebasan mengimplementasi
- Perlindungan data (data protect)
- Integritas (integrity)
- Penyederhanaan Masalah
Langkah-langkah Menerjemahkan
Tipe Data Abstrak  Virtual
• Pilih salah satu bahasa Pemrograman yang akan
digunakan, misal Pascal, C, Prolog, dll
• Pilih cara merepresentasikan datanya, misalnya : Array
(Larik), Record, set, dll
• Tulis program untuk mengimplementasikan dalam tipe
data abstrak
Kebutuhan Memori
Besarnya memori untuk tipe data dapat berbeda seperti dalam table berikut
(Menggunakan Turbo Pascal 6.0)

Tipe Data Ukuran Memori (byte)


Byte 1
Shortint 1
Integer 2
Word 2
Longint 4
Real 6
Single 4
Double 8
Extended 10
Comp 8
Char 1
String 255
String[5] 5
Terstruktur Kumulatif dari komponen penyusunnya
PENGANTAR
• Bagaimana cara mengatasi masalah
implementasi program dengan komputer?
• Pemahaman masalah secara menyeluruh dan
persiapan data
• Keputusan operasi-operasi yang dilakukan terhadap
data
• Penyimpanan data-data pada memori sehingga
tersimpan dan terstruktur secara logis, operasinya
efisien
• Pengambilan keputusan terhadap bahasa
pemrograman mana yang paling cocok untuk jenis
data yang ada
Perbedaan Tipe Data, Obyek Data &
Struktur Data (1)

• Tipe data adalah jenis data yang mampu


ditangani oleh suatu bahasa pemrograman pada
komputer.
• Tiap-tiap bahasa pemrograman memiliki tipe
data yang memungkinkan:
• Deklarasi terhadap variabel tipe data tersebut
• Menyediakan kumpulan operasi yang mungkin
terhadap variabel bertipe data tersebut
• Jenis obyek data yang mungkin
• Contoh tipe data di C? Java? Pascal? .NET?
Perbedaan Tipe Data, Obyek Data &
Struktur Data (2)

• Obyek Data adalah kumpulan elemen yang


mungkin untuk suatu tipe data tertentu.
• Mis: integer mengacu pada obyek data -32768 s/d
32767, byte 0 s/d 255, string adalah kumpulan
karakter maks 255 huruf
• Struktur Data adalah cara penyimpanan dan
pengorganisasian data-data pada memori
komputer maupun file secara efektif sehingga
dapat digunakan secara efisien, termasuk
operasi-operasi di dalamnya.
Aktivitas Struktur Data

• Di dalam struktur data kita berhubungan


dengan 2 aktivitas:
• Mendeskripsikan kumpulan obyek data yang sah
sesuai dengan tipe data yang ada
• Menunjukkan mekanisme kerja operasi-operasinya
• Contoh: integer (-32768 s/d 32767) dan jenis operasi yang
diperbolehkan adalah +, -, *, /, mod, ceil, floor, <, >, !=
dsb.
• Struktur data = obyek data + [operasi
manipulasi data]
Hubungan SD dan Algoritma

• Dengan pemilihan struktur data yang baik, maka


problem yang kompleks dapat diselesaikan sehingga
algoritma dapat digunakan secara efisien, operasi-
operasi penting dapat dieksekusi dengan sumber daya
yang lebih kecil, memori lebih kecil, dan waktu eksekusi
yang lebih cepat.
• Tidak semua struktur data baik dan sesuai.
• Contoh untuk problem data bank: pengupdate-an harus
cepat, sedangkan penambahan/penghapusan data boleh
lebih lambat.
Ciri Algoritma

• Ciri algoritma yang baik menurut Donald


E.Knuth:
• Input: ada minimal 0 input atau lebih
• Ouput: ada minimal 1 output atau lebih
• Definite: ada kejelasan apa yang dilakukan
• Efective: langkah yang dikerjakan harus
efektif
• Terminate: langkah harus dapat berhenti
(stop) secara jelas
ADT (Abstract Data Type) atau
Tipe Data Bentukan

• Bahasa pemrograman bisa memiliki tipe data:


• Built-in : sudah tersedia oleh bahasa pemrograman
tersebut
• Tidak berorientasi pada persoalan yang dihadapi.
• UDT : User Defined Type, dibuat oleh pemrogram.
• Mendekati penyelesaian persoalan yang dihadapi
• Contoh: record pada Pascal, struct pada C, class pada Java
• ADT : Abstract Data Type
• memperluas konsep UDT dengan menambahkan
pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-
operasi yang bisa dilakukan terhadap kelas tersebut.
• Contoh: class pada Java
ADT (2)

• Bahasa C memiliki tipe data numerik dan


karakter (seperti int, float, char dan lain-
lain). Disamping itu juga memiliki tipe
data enumerasi dan structure. Bagaimana
jika kita ingin membuat tipe data baru?
• Untuk pembuatan tipe data baru
digunakan keyword typedef
• Bentuk umum:
typedef <tipe_data_lama> <ama_tipe_data_baru>
Program
• Contoh:
• #include <stdio.h>
• #include <conio.h>
• typedef int angka;
• typedef float pecahan;
• typedef char huruf;
• void main(){
• clrscr();
• angka umur;
• pecahan pecah;
• huruf h;

huruf nama[10];
• printf("masukkan umur anda : ");scanf("%d",&umur);
• printf("Umur anda adalah %d",umur);
• printf("\nmasukkan bilangan pecahan : ");scanf("%f",&pecah);
• printf("Bilangan pecahan %f",pecah);
• printf("\nmasukkan huruf : ");h=getche();
• printf("\nHuruf anda %c",h);
• printf("\nmasukkan nama : ");scanf("%s",nama);
• printf("Nama anda %s",nama);
• getch();
• }
Hasil Program
Struct
• Struct adalah tipe data bentukan yang berisi kumpulan
variabel-variabel yang bernaung dalam satu nama yang
sama dan memiliki kaitan satu sama lain.
• Berbeda dengan array hanya berupa kumpulan variabel
yang bertipe data sama, struct bisa memiliki variabel-
variabel yang bertipe data sama atau berbeda, bahkan
bisa menyimpan variabel yang bertipe data array atau
struct itu sendiri.
• Variabel-variabel yang menjadi anggota struct disebut
dengan elemen struct.
Bentuk Umum

• Bentuk umum:
• typedef struct <nama_struct> {
• tipe_data <nama_var>;
• tipe_data <nama_var>;
• ....
• }
Pendeklarasian dan penggunaan
Struct (1) (menggunakan typedef)

• typedef struct Mahasiswa {


• char NIM[8];
• char nama[50];
• float ipk;
• };
• untuk menggunakan struct Mahasiswa dengan
membuat variabel mhs dan mhs2
• Mahasiswa mhs,mhs2;
• untuk menggunakan struct Mahasiswa dengan
membuat variabel array m;
• Mahasiswa m[100];
Pendeklarasian dan penggunaan
Struct (2) (tanpa menggunakan
typedef)

• struct {
• char NIM[8];
• char nama[50];
• float ipk;
• } mhs;

• Berarti kita sudah mempunyai variabel


mhs yang bertipe data struct seperti
diatas.
Cara penggunaan struct dan
pengaksesan elemen-elemennya

• Penggunaan/pemakaian tipe data struct


dilakukan dengan membuat suatu variabel yang
bertipe data struct tersebut
• Pengaksesan elemen struct dilakukan secara
individual dengan menyebutkan nama variabel
struct diikuti dengan operator titik (.)
• Misalnya dengan struct mahasiswa seperti
contoh di atas, kita akan akses elemen-
elemennya seperti contoh berikut:
Program
• Contoh 1
• #include <stdio.h>
• #include <conio.h>
• //Pendeklarasian tipe data baru struct Mahasiswa
• typedef struct Mahasiswa{
• char NIM[9];
• char nama[30];
• float ipk;
• };
• void main(){
• //Buat variabel mhs bertipe data Mahasiswa
• Mahasiswa mhs;
• clrscr();
• printf("NIM = ");scanf("%s",mhs.NIM);
• printf("Nama = ");scanf("%s",mhs.nama);
• printf("IPK = ");scanf("%f",&mhs.ipk);

• printf("Data Anda : \n");
• printf("NIM : %s\n",mhs.NIM);
• printf("Nama : %s\n",mhs.nama);
• printf("IPK : %f\n",mhs.ipk);
• getch();
• }
Hasil
Program
• #include <stdio.h>
• #include <conio.h>
• #define phi 3.14
• //langsung dianggap variabel 'lingkaran'
• struct {
• float jari2;
• float keliling;
• float luas;
• } lingkaran;
• //fungsi void untuk menghitung luas ingkaran
• void luasLingkaran(){
• //langsung menggunakan luas lingkaran asli
• lingkaran.luas = lingkaran.jari2 * lingkaran.jari2 * phi;
• printf("\nLuas lingkaran = %f",lingkaran.luas);
• }
• //fungsi yang mengembalikan nilai float untuk menghitung keliling lingkaran
• float kelLingkaran(float j){
• return 2*phi*lingkaran.jari2;
• }
• int main(){
• clrscr();
• printf("Jari-jari = ");scanf("%f",&lingkaran.jari2);
• //panggil fungsi luasLingkaran
• luasLingkaran();
• //panggil fungsi keliling, nilai kembaliannya dikirim ke keliling lingkaran asli
• lingkaran.keliling = kelLingkaran(lingkaran.jari2);
• //tampilkan keliling lingkaran asli
• printf("\nKeliling lingkaran = %f",lingkaran.keliling);
• getch();
• }
Hasil
Struct yang berisi struct lain
• #include <stdio.h>
• #include <conio.h>
• typedef struct Date{
• int dd;
• int mm;
• int yyyy;
• };

• typedef struct Time{
• int h;
• int m;
• int s;
• };

• typedef struct Login{
• int ID;
• Date tglLogin;
• Time waktuLogin;
• };
• int main(){
• Login user1;

• printf("USER 1\n");
• printf("ID : ");scanf("%d",&user1.ID);
• printf("Tanggal Login\n");
• printf("Hari : ");scanf("%d",&user1.tglLogin.dd);
• printf("Bulan : ");scanf("%d",&user1.tglLogin.mm);
• printf("Tahun : ");scanf("%d",&user1.tglLogin.yyyy);
• printf("Waktu Login\n");
• printf("Jam : ");scanf("%d",&user1.waktuLogin.h);
• printf("Menit : ");scanf("%d",&user1.waktuLogin.m);
• printf("Detik : ");scanf("%d",&user1.waktuLogin.s);
• printf("Terimakasih\n");

• printf("Data Anda :\n");
• printf("ID : %d\n",user1.ID);
• printf("Date : %d - %d - %d\n",user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy);
• printf("ID : %d:%d:%d\n",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s);

• getch();
• }
Hasil
Array of Struct
• #include <stdio.h>
• #include <conio.h>
• typedef struct Date{
• int dd;
• int mm;
• int yyyy;
• };

• typedef struct Time{
• int h;
• int m;
• int s;
• };

• typedef struct Login{
• int ID;
• Date tglLogin;
• Time waktuLogin;
• };
• int main(){
• Login user[3];

• //3 user
• for(int i=0;i<3;i++){
• printf("\nUSER ke-%d\n",i+1);
• printf("ID : ");scanf("%d",&user[i].ID);
• printf("Tanggal Login\n");
• printf("Hari : ");scanf("%d",&user[i].tglLogin.dd);
• printf("Bulan : ");scanf("%d",&user[i].tglLogin.mm);
• printf("Tahun : ");scanf("%d",&user[i].tglLogin.yyyy);
• printf("Waktu Login\n");
• printf("Jam : ");scanf("%d",&user[i].waktuLogin.h);
• printf("Menit : ");scanf("%d",&user[i].waktuLogin.m);
• printf("Detik : ");scanf("%d",&user[i].waktuLogin.s);
• printf("Terimakasih Atas Pengisiannya\n");

• printf("\nData User ke-%d:\n",i+1);
• printf("Login ID : %d\n",user[i].ID);
• printf("Login Date : %d - %d - %d\n",user[i].tglLogin.dd,user[i].tglLogin.mm,user[i].tglLogin.yyyy);
• printf("Login Time : %d:%d:%d\n",user[i].waktuLogin.h,user[i].waktuLogin.m,user[i].waktuLogin.s);
• }

• getch();
• }
Hasil
Tipe Data
ORDINAL, meliputi integer,
shortint, longint, char,
boolean, byte,word, subrange
dan enumerated
TIPE SEDERHANA
REAL, meliputi single,
real, double, extended
dan comp
TIPE DATA TIPE STRING

TIPE TERSRUKTUR, meliputi ARRAY,


RECORD, SET DAN FILE

TIPE POINTER
TIPE DATA SEDERHANA
TIPE ORDINAL
TIPE JANGKAUAN UKURAN
Shortint -128 … 127 8 bit
Integer -32768 … 32767 16 bit
Longint -2147483648 … 2147483647 32 bit
Byte 0 … 255 8 bit
word 0 … 65535 16 b
TIPE BILANGAN REAL
Tipe Jangkauan Digit Ukuran
Penti
ng
Real 2.9*10-39…1.7*1038 11-12 6 byte
Single 1.5*10-45…3.4*1038 7-8 4 byte
Double 5.0*10-324…1.7*10308 17-18 8 byte
Extended 3.4*10-4932…1.1*104932 19-20 10
byte
Comp -263+1…263-1 19-20 8 byte
TIPE DATA SEDERHANA
• Tipe Char : menyimpan satu karakter
• Tipe boolean: menyimpan data true dan
false
• Subrange : data dalam range/jangkauan
• Enumerated: data disebutkan satu per
satu
TIPE STRING
• TIPE STRING menyimpan data string
(deretan karakter). Panjangnya 255
karakter.
• Contoh: var nama: string;
TIPE ARRAY
• Adalah tipe terstruktur yg mempunyai
komponen dlm jml yg tetap dan setiap
komponen mempunyai tipe yang sama.

• Ada 2 jenis: Array berdimensi satu dan


array berdimensi dua
ARRAY DIMENSI SATU
Sintaks :
type pengenaltipe = array[tipe_index] of tipe_data
Var namavar:pengenaltipe;
Keterangan :
Pengenal adalah nama tipe data
Tipe_index adalah tipe data untuk nomor index serta
menentukan banyaknya
Komponen larik tersebut. Tipe adalah tipe data
komponen
ARRAY
• Contoh:
type larik=array [1..100] of real;
var nilai: larik;
ARRAY DIMENSI DUA
• Adalah array yang berupa tabel, shg
posisi data berada pada baris dan kolom
• Syntax:
type namatipe= ARRAY [1..baris, 1..kolom] of tipe data
Contoh:
Type matrix= ARRAY [1..5, 1..7] of integer;
var A,B, C: matrix;
TIPE RECORD
• Sama dengan larik hanya saja pada rekaman setiap elemen bisa
mempunyai tipe data yang berbedasatu sama lain.
• Sintaks:
• Type pengenal = record
Field1 : tipe1;
Field2 : tipe2;
.
Fieldn : tipen;
End;
Keterangan :
• pengenal adalah pengenal yg menunjukkan tipe data yg akan
Dideklarasikan
• field1,fieldn adalah nama variabel yang akan digunakan
• tipe1,tipen adalah sembarang tipe data yg telah dideklarasikan
sebelumnya
RECORD
• CONTOH:
Type rekam= RECORD
nim:string[10];nama:string[20];
ipk:real;
End;
larikrek= ARRAY [1..100] of rekam;
Var: mhs:larikrek;
RECORD
• Kebanyakan pemakain record berupa
larik, yaitu untuk pemakaian dalam
jumlah besar.
• Pada pendeklarasian record
memungkinkan suatu variabel
mempunyai banyak tipe
TIPE DATA HIMPUNAN
• Adalah kumpulan obyek yg mempunyai tipe data yg
sama dan urutan penulisannya tdk diperhatikan.
Perbedaan dng larik pd himpunan selalu dioperasikan
secara keseluruhan sebagai satu kesatuan.
• Sintaks :
type pengenal = set of tipe_data ;
Keterangan :
• pengenal adalah nama perubah/pengenal yg akan
dinyatakan sbg tipe himp
• tipe_data adalah tipe data dari anggota himpunan ,
harus bertipe ordinal
b

Anda mungkin juga menyukai