• Tidak ada hasil yang ditemukan

Struktur Data (Data Structure) – IS 2313

N/A
N/A
Protected

Academic year: 2018

Membagikan "Struktur Data (Data Structure) – IS 2313"

Copied!
50
0
0

Teks penuh

(1)

Imam Rozali, S.T., M.T.

Struktur Data

(2)

System Basic Theory

Tuesday 07.00-13.00, Thursday 07.00-13.00

Reference:

 Liem, Inggriani. Diktat Struktur Data, ITB, 2003.

 Thomas A. Standish, “Data Stuctures, Algorithms & Software Principles in C” Addison-Wesley, 1995.

Additional Reference

 Internet

E-mail : imr@ittelkom.ac.id,

imam@telkompdc.com

(3)

Evaluation

Class Participation: - %

Quiz : 10%

Assignment : 20%

Midterm: 35%

(4)
(5)

Outline

 Latar Belakang  Sekilas Tentang C

 Proses Kompilasi dan Linking Program C  Struktur Penulisan Program C

 Fungsi-Fungsi Dasar CUDT (User Defined Type) atau Tipe Data Bentukan

 Pengenalan Praprosesor #include  Sekilas Tentang Array

 Sekilas Tentang Struct  Contoh Program Struct

 Struktur Data dalam Pemrograman  Memory Address

(6)

Latar Belakang

Algoritma

Program

Data

Struktur Data

(7)

Latar Belakang

Ciri algoritma yang baik menurut Donald

E.Knuth adalah:

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)

(8)

Sekilas Tentang C

 Bahasa C sebagai bahasa tingkat menengah  Beberapa kelebihan dari bahasa C:

 Bahasa C tersedia hampir di semua jenis komputer, baik mikro, mini maupun komputer besar (mainframe computer).

 Kode bahasa C bersifat portabel.

 Berbagai struktur data dan pengendalian proses disediakan dalam C sehingga memungkinkan untuk membuat program yang terstruktur.

 Dibandingkan dengan bahasa mesin atau assembly, C jauh lebih mudah dipahami dan pemrogram tidak perlu mengetahui mesin komputer secara detil.

(9)

Sekilas Tentang C

Kelemahan bahasa C yang dirasakan oleh para

pemula bahasa C:

Banyaknya operator serta fleksibilitas penulisan

program kadang-kadang membingungkan

pemakai. Kalau tidak dikuasai sudah tentu akan

menimbulkan masalah.

Para pemrogram C tingkat pemula umumnya

(10)

Proses Kompilasi dan Linking Program C

Agar suatu program dalam bahasa

pemrograman dapat dimengerti oleh komputer,

program haruslah diterjemahkan dahulu ke

dalam kode mesin.

(11)
(12)

Struktur Penulisan Program C

Program C tersusun atas sejumlah blok fungsi.

Sebuah program minimal mengandung sebuah

fungsi.

Fungsi pertama yang harus ada dalam program

C dan sudah ditentukan namanya adalah

main().

Bagian pernyataan fungsi (sering disebut tubuh

fungsi) diawali dengan tanda kurung kurawal

buka ({) dan diakhiri dengan tanda kurung

(13)
(14)

Fungsi-Fungsi Dasar C

Pada C, terdapat beberapa fungsi dasar yang

merupakan struktur yang harus ada dalam

bahasa pemrograman C. Beberapa fungsi yang

terdapat dalam bahasa C adalah:

(15)

Fungsi-Fungsi Dasar C

Fungsi printf() merupakan fungsi yang umum

dipakai untuk menampilkan suatu keluaran pada

layar peraga. Untuk menampilkan tulisan:

Selamat belajar bahasa C

printf(“Selamat belajar bahasa C”);

Dalam bentuk yang lebih umum, format printf()

(16)

Fungsi-Fungsi Dasar C

\” menyatakan karakter petik-ganda

\\ menyatakan karakter backslash

\t menyatakan karakter tab

%d untuk menampilkan bilangan bulat (integer)

%f untuk menampilkan bilangan

titik-mengambang (pecahan)

%c untuk menampilkan sebuah karakter

(17)

Fungsi-Fungsi Dasar C

#include <stdio.h>

main( )

{

printf(“No : %d\n”, 10);

printf(“Nama : %s\n”, “Ali”);

printf(“Nilai : %f\n”,80.5);

(18)

UDT (User Defined 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.  Tipe data baru :

(19)

UDT (User Defined Type) atau

Tipe Data Bentukan

#include <stdio.h>

#include <conio.h> typedef int angka;

typedef foat pecahan; typedef char huruf; void main(){

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);

(20)

Pengenalan praprosesor

#include

#include merupakan salah satu jenis pengarah

praprosesor (preprocessor directive). Pengarah

praprosesor ini dipakai untuk membaca file yang

diantaranya berisi deklarasi fungsi dan definisi

konstanta.

File-file ini mempunyai ciri yaitu namanya diakhiri

dengan ekstensi .h. Misalnya pada program #include

<stdio.h> menyatakan pada kompiler agar membaca file

bernama stdio.h saat pelaksanaan kompilasi.

Bentuk umum #include:

(21)

Sekilas Tentang Array

Array adalah kumpulan data yang bertipe sama yang

menggunakan nama yang sama. Dengan menggunakan

array, sejumlah variabel dapat memakai nama yang

(22)

Sekilas Tentang Array

#include<iostream.h> #include<conio.h> void main()

{

int data[10]; // array dengan 10 elemen bertipe integer int elemen;

clrscr();

// entri 10 data

for (elemen=0;elemen <= 9;elemen++) {

cout << “Data ke – “ << elemen << “: “; cin >> data[elemen];

}

// tampilkan data setelah entri

for (elemen=0;elemen <= 9;elemen++) {

cout << “Data ke – “ << elemen << “: “ << data[elemen]; }

(23)

Sekilas Tentang Array

for (elemen=0;elemen <= 4;elemen++) {

cout << “Data ke – “ << elemen << “: “ << data[elemen];

(24)

Sekilas Tentang Array

(25)
(26)

Sekilas Tentang Struct

Struct adalah tipe data bentukan yang berisi

kumpulan variabel-variabel yang bernaung

dalam satu nama yang sama dan memiliki

kaitan satu sama lain.

typedef struct <nama_struct>

{

tipe_data <nama_var>;

tipe_data <nama_var>;

....

(27)

Sekilas Tentang Struct

typedef struct Mahasiswa

{

char NIM[8];

char nama[50];

foat ipk;

};

struct

{

char NIM[8];

char nama[50];

foat ipk;

(28)

Sekilas Tentang Struct

#include <stdio.h>

#include <conio.h>

//Pendeklarasian tipe data baru struct Mahasiswa

typedef struct Mahasiswa {

//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);

(29)

#include <stdio.h> #include <conio.h> #defne phi 3.14

//langsung dianggap variabel 'lingkaran' struct

//fungsi void untuk menghitung luas ingkaran void luasLingkaran()

{

//langsung menggunakan luas lingkaran asli

lingkaran.luas = lingkaran.jtariu * lingkaran.jtariu * phi;r printf("\nLuas lingkaran = %f",lingkaran.luas);r

}

//fungsi yang mengembalikan nilai float untuk menghitung keliling

float kelLingkaran(float jt) {

(30)

int main() {

clrscr();r

printf("Jari-jtari = ");rscanf("%f",&lingkaran.jtariu);r //panggil fungsi luasLingkaran

luasLingkaran();r

//panggil fungsi keliling, nilai kembaliannya dikirim lingkaran.keliling = kelLingkaran(lingkaran.jtariu);r //tampilkan keliling lingkaran asli

printf("\nKeliling lingkaran = %f",lingkaran.keliling);r getch();r

(31)

#include <stdio.h> #include <conio.h> typedef struct Date {

int dd;r int mm;r int yyyy;r };r

typedef struct Time {

int h;r int m;r int s;r };r

typedef struct Login {

int ID;r

Date tglLogin;r

(32)

int main() {

Login user1;r

printf("USER 1\n");r printf("ID : ");r

scanf("%d",&user1.ID);r printf("Tanggal Login\n");r printf("Hari : ");r

scanf("%d",&user1.tglLogin.dd);r printf("Bulan : ");r

scanf("%d",&user1.tglLogin.mm);r printf("Tahun ");r

scanf("%d",&user1.tglLogin.yyyy);r printf("Waktu Login\n");r

printf("Jam : ");r

scanf("%d",&user1.waktuLogin.h);r printf("Menit : ");r

scanf("%d",&user1.waktuLogin.m);r printf("Detik : ");r

scanf("%d",&user1.waktuLogin.s);r printf("Terimakasih\n");r

printf("Data Anda :\n");r

printf("ID : %d\n",user1.ID);r printf("Date : %d - %d –

%d\n",user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy);r

printf(“ Time: %d:%d:%d\ n",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s);r

(33)

#include <stdio.h> #include <conio.h> typedef struct Date {

int dd;r int mm;r int yyyy;r };r

typedef struct Time {

int h;r int m;r int s;r };r

typedef struct Login {

int ID;r

Date tglLogin;r

(34)

int main() {

Login user[3];r //3 user

for(int i=0;ri<3;ri++) {

printf("\nUSER ke-%d\n",i+1);r printf("ID : ");r

scanf("%d",&user[i].ID);r printf("Tanggal Login\n");r printf("Hari : ");r

scanf("%d",&user[i].tglLogin.dd);r printf("Bulan : ");r

scanf("%d",&user[i].tglLogin.mm);r printf("Tahun : ");r

scanf("%d",&user[i].tglLogin.yyyy);r printf("Waktu Login\n");r

printf("Jam : ");r

scanf("%d",&user[i].waktuLogin.h);r printf("Menit : ");r

scanf("%d",&user[i].waktuLogin.m);r printf("Detik : ");r

scanf("%d",&user[i].waktuLogin.s);r

printf("Terimakasih Atas Pengisiannya\n");r printf("\nData User ke-%d:\n",i+1);r

printf("Login ID : %d\n",user[i].ID);r printf("Login Date : %d %d

%d\n",user[i].tglLogin.dd,user[i].tglLogin.mm,user[i].tglLogin.yyyy);r printf("Login Time :

%d:%d:%d\n",user[i].waktuLogin.h,

user[i].waktuLogin.m,user[i].waktuLogin.s);r }

(35)

Struktur Data dalam

Pemrograman

Pemakaian struktur data yang tepat di dalam proses

pemrograman akan menghasilkan:

Algoritma yang lebih jelas dan tepat, sehingga

menjadikan program secara keseluruhan lebih efisien

dan sederhana.

Membuat program lebih ringkas, lebih bersih, lebih

elegan,lebih mudah dan lebih mampu berkinerja

tinggi (karena efisien dalam penggunaan memori dan

waktu)

Program berjalan membutuhkan waktu beberapa

(36)

Struktur Data dalam

Pemrograman

Tahapan pemrograman:

Analisa masalah

Memilih algoritma dan struktur data untuk

menyelesaikan masalah itu

(37)

Struktur Data dalam

Pemrograman

Struktur Data yang telah dipelajari struktur data dengan type :

 Dasar yaitu integer, real, boolean, character. Nama Informasi yang disefinisikan dengan type dasar ini hanya dapat

menyimpan satu nilai.

 Bentukan yaitu type yang merupakan komposisi dari type bentukan. Nama informasi yang didefiniskan dengan type ini hanya mengandung satu nilai sesuai dengan kompisisi dari type yang didefinisikan.

 Tabel/Array yaitu type yang mendefinisikan sekumpulan elemen bertype sama, dan nantinya kumpulan elemen tersebut akan dialokasikan secara kontigu, dengan akses elemen yang

(38)

Struktur Data dalam

Pemrograman

Ada 3 tingkatan struktur data :

Definisi Fungsional adalah pendefinisian struktur data dan

operator-operator yang berlaku pada struktur tersebut

Representasi Lojik adalah spesifikasi “type” dari struktur,

yang menyangkut nama type dan spesifikasi semua

operator, namun dalam definisi ini, alamat masih belum

ditentukan secara pasti.

Representasi fisik adalah spesifikasi dari struktur data

(39)

Struktur Data dalam

Pemrograman

Ada dua macam implementasi fisik :

 Representasi fisik kontigu adalah sekumpulan data yang penempatannya dalam memori secara fisik adalah kontigu, setiap elemen ditaruh berurutan posisi alamatnya dengan elemen lain. Karena itu untuk mencapai elemen berikutnya, cukup melalui suksesor alamat dari “current element”. Struktur ini disebut struktur yang statis.

 Representasi fisik berkait adalah sekumpulan data yang

penempatannya dalam memori dapat terpencar-pencar, namun dapat ditelusuri berkat adanya informasi berupa alamat, yang menghubungkan elemen yang satu dengan yang lain. Alamat memori dapat dialokasikan/dapat pula dibebaskan sesuai

(40)

Struktur Data dalam

Pemrograman

Beberapa jenis struktur data adalah sebagai berikut:

Array

Linear List

Stack

Queue

List

Connected List

Circular List

Double Linked List

Multi List Structure

(41)
(42)

Struktur Data dalam

Pemrograman

List Linier Multi List

Tree Antrian

(43)

MEMORY ADDRESS

Operand bilangan dan karakter, seperti halnya instruksi,

disimpan dalam memori komputer.

Memori terdiri atas jutaan sel penyimpanan, dimana tiap

sel tersebut menyimpan suatu bit informasi yang berupa

nilai 0 atau 1. Karena bit tunggal mewakili informasi

yang sangat sedikit, maka bit jarang ditangani secara

individu.

Pendekatan yang umum adalah menanganinya dalam

kelompok dengan ukuran tertentu. Untuk tujuan ini,

memori tersebut diatur sehingga kelompok n bit dapat

disimpan dan diambil dalam satu operasi dasar tunggal.

Tiap kelompok n bit disebut sebagai word informasi, dan

(44)

MEMORY ADDRESS

Komputer modern memiliki word length yang

biasanya berkisar dari 16 hingga 64 bit. Suatu

unit 8 bit disebut byte.

Instruksi mesin mungkin memerlukan satu atau

lebih word untuk representasinya. Jika word

length suatu komputer adalah 32 bit, maka word

tunggal dapat menyimpan 32-bit bilangan

(45)

MEMORY ADDRESS

Mengakses memori untuk menyimpan atau mengambil

suatu item informasi, baik berupa word atau byte,

memerlukan nama yang berbeda atau alamat untuk tiap

lokasi item.

Merupakan hal yang biasa menggunakan bilangan 0

hingga 2

k

– 1, untuk beberapa nilai k yang sesuai,

sebagai alamat dari lokasi yang berurutan dalam

memori. Alamat 2

k

meliputi ruang alamat komputer

tersebut, dan memori tersebut dapat memiliki lokasi

addressable

hingga 2

k

. Misalnya, alamat 24-bit

(46)

Data Structures

 CPU secara langsung dapat memanipulasi data integer, real number, karakter, boolean dan memory addres. Jenis data yang secara langsung didukung oleh CPU disebut jenis data primitif, atau jenis data mesin.

 Struktur data termasuk kelompok elemen data primitif yang

diorganisir untuk beberapa bentuk pengolahan umum. Struktur data digambarkan dan dimanipulasi dalam perangkat lunak.

 Perangkat keras komputer tidak bisa memanipulasi struktur data secara langsung, tetapi harus memperlakukannya berkaitan

dengan komponen primitif seperti bilangan integer, bilangan floating point, karakter tunggal, dan seterusnya.

(47)

Data Structures

Kompleksitas struktur data terbatas pada keterampilan

dan imajinasi para programmer.

Perangkat lunak sistem sering menyediakan jasa

aplikasi untuk manipulasi struktur data. Sebagai contoh,

suatu sistem operasi umumnya menyediakan jasa untuk

membaca dan menulis ke dan dari file.

Struktur data lain lebih sedikit didukung oleh perangkat

lunak sistem. Contohnya meliputi array numerik, file

indeks, dan struktur database kompleks.

File indeks didukung oleh beberapa, tetapi tidak semua

(48)

Data Structures

 Array numerik umumnya mendukung bahasa pemrograman tetapi bukan di dalam sistem operasi.

 Struktur database secara normal didukung oleh suatu database manajemen sistem.

 Kebanyakan bahasa program mendukung manipulasi langsung dari karakter string.

 Struktur data mempunyai peran penting dalam pengembangan sistem software. Sebagai contoh, linked list biasanya digunakan oleh sistem operasi untuk menjejaki blok memori yang dialokasikan ke program dan blok disk yang dialokasikan ke file dan direktori.  Indeks digunakan dalam database manajemen sistem untuk

(49)

Tugas I

Tuliskan nilai setiap elemen dari variabel array a

di bawah ini:

Int a[3][3] = {{1,8},{2,4,6},{5}}

Buatlah sebuah fungsi rekursif untuk

mendapatkan bilangan terkecil dari n buah

bilangan bulat yang tersimpan dalam sebuah

varriabel array

Buatlah sebuah array – record untuk

menampung suatu data mahasiswa yang terdiri

atas: nim, nama, alamat, dan umur. Asumsi

(50)

#include <stdio.h> #defne SIZE 10

Int whatisThis(int[],int); main()

{

Int total,a[SIZE] = {1,2,3,4,5,6,7,8,9,10} total = whatisThis(a,SIZE);

printf(“\nNilai variabel total adalah %d”, total); return 0;

}

Int whatisThis(int b[],int size) {

If (size == 1) Return b[0]; else

return b[size-1] + whatisThis(b,size-1) }

Referensi

Dokumen terkait

mineral berdasarkan nilai rata-rata tanah mineral menunjukkan peningkatan secara linear untuk parameter jumlah anakan, dan pada perlakuan aerasi juga memberikan hasil yang

(1) Para pelaku mempunyai hak eksklusif untuk memberikan ijin *51751 atau melarang orang lain untuk menyewakan secara komersial rekaman asli atau salinan karya pertunjukannya

Tujuan dari penelitian ini adalah (1) untuk mendeskripsikan tentang respon siswa terhadap penerapan metode pembelajaran demonstrasi di kelas VIII SMP Negeri 9 Kota

6  Melakukan penanaman secara hidroponik dengan kreatif dan inovatif dari aspek idea, teknik, peralatan dan bahan.. • Hendaklah sentiasa merujuk dan berpandukan pada

Pada metode Dalcroze, improvisasi memiliki peran penting untuk meningkatkan musikalitas siswa (Dopo, 2018). Improvisasi pada metode Dalcroze untuk menemukan solusi siswa

Suaka Alam Perairan Selat Pantar dan laut sekitarnya (SAP Selat Pantar) merupakan salah satu kawasan konservasi laut yang ditetapkan melalui Surat Keputusan Menteri Kelautan

Menurut peneliti perbedaan peningkatan respons perilaku adaptif penggunaan bidai infus bidai biasa kelompok kontrol dengan bidai infus bergambar kelompok perlakuan enam jam ke dua

Berdasarkan temuan ini manajemen LPD semestinya mengembangkan suatu pola penghayatan dan pengamalan nilai-nilai budaya THK yang dapat meningkatkan kepercayaan atas kegunaan dan