You are on page 1of 40

TI1103 - Struktur Data

Antonius Rachmat C, S.Kom


Widi Hapsari, MT
Kontrak Perkuliahan
• Bobot: 3 SKS
• Email: anton@ukdw.ac.id & widi@ukdw.ac.id
• Website : http://lecturer.ukdw.ac.id/anton
• Jadwal Kuliah Kelas:
– Kamis 07.30 – 10.00 A
– Kamis 10.30 – 13.00 B
– Jumat 07.30 – 10.00 C
– Jumat 10.30 – 13.00 D
• Ruang B.3.3
Jadwal Praktikum
• Senin 07.30 – 10.20 Prak A
• Selasa 10.30 – 13.20 Prak B
• Rabu 07.30 – 10.20 Prakt C
• Kamis 07.30 – 10.20 Prak D
• Jumat 10.30 – 13.20 Prakt E

• Lab : A
• Koordinator: Yuan Lukito, S.Kom
Deskripsi Matakuliah
• Matakuliah ini mengajarkan sistem
pengorganisasian data pada memori komputer
maupun file (berkas) pada suatu media
penyimpanan dengan menggunakan struktur
data array, struct, tree, dan file menggunakan
teknik-teknik seperti stack, queue, dan linked list
serta hashing.
• Matakuliah ini juga mengajarkan teknik-teknik
manipulasi data seperti tambah, hapus, edit,
pencarian dan pengurutan, yang dilakukan
dengan menggunakan bahasa pemrograman
generasi ketiga (Bahasa C).
Tujuan Matakuliah
Mahasiswa diharapkan mampu:
• Memahami sistem pengorganisasian data pada
memori komputer dan file (berkas) pada media
penyimpanan.
• Mengimplementasikannya dalam program
dengan menggunakan salah satu bahasa
pemrograman generasi ke-3 (Bahasa C) untuk
membuat berbagai macam struktur data (array,
tree, struct) dengan teknik-teknik tertentu (linked
list, stack, dan queue) serta manipulasinya
(sorting dan searching) secara baik, efisien, dan
cepat.
Silabus
• Perkenalan
– Perkenalan dan silabus
– Aturan praktikum
– Refresh Bahasa C
• Pengantar Struktur Data, Abstract Data Type (ADT) dan Struct
– Pengantar Struktur Data
– Pengertian dan cara pembuatan ADT
– Pengertian dan pendeklarasian Struct
– Struct: add,del,edit & array of struct
– Contoh-contoh program
• Searching Array
– Refresh array
– Pengertian searching
– Algoritma-algoritma searching : sequential search, binary search
– Array slice / explode
Silabus
• Sorting Array
– Algoritma-algoritma sorting : bubble sort,
selection sort, insertion sort, dan quick sort
• Stack dan Queue dengan Array
– Pengertian stack, cara pembuatan stack, dan
operasi-operasinya pada array
– Pengertian queue, cara pembuatan queue,
dan operasi-operasinya pada array
Silabus
• Pointer dan Function
– Konsep, operator, dan deklarasi
– Pointer pada array
– Function by value & reference
• Single Linked List Non Circular
– Single Linked List Non Circular
– Insert, update, dan delete
• Single Linked List Circular
– Insert, update, dan delete
• Double Linked List Non Circular
– Insert, update, dan delete
• Double Linked List Circular
– Insert, update, dan delete
Silabus
• Function Recursif dan Graf
– Konsep rekursif implementasi Graf serta
contoh
• Tree
– Konsep dan pembuatan
– Kunjungan Tree: pre-order, in-order, dan
post-order, level-order
– Berbagai macam operasi tree
Daftar Pustaka
• Moh. Sjukani, Algoritma dan Struktur Data dengan C, C++, dan Java, Mitra
Wacana Media, 2005
• Dwi Sanjaya, Asyiknya Belajar Struktur Data di Planet C++, PT. Elex Media
Komputindo, Jakarta, 2005
• Jogianto H.M, Konsep Dasar Pemrograman Bahasa C, Penerbit Andi, 2000
• Antonie Pranata, Algoritma dan Pemrograman, J&J Learning Yogyakarta,
2000
• Simon Harris and James Ross, Beginning Algorithms, Wiley Publishing Inc.,
2006
• Dwi Sanjaya, Bertualang dengan Struktur Data di Planet Pascal, J&J
Learning Yogyakarta, 2001
• Peter Drake, Data Structures and Algorithms in Java, Prentice Hall, 2005
• Bambang Hariyanto, Ir, M.T, Struktur Data Memuat Dasar Pengembangan
Berorientasi Obyek, Penerbit Informatika Bandung, 2003
• Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur
Data, Penerbit Informatika, Bandung, 2006
Penilaian
• 85.0 - 100 A 4.0
• 80.0 - 84.9 A- 3.7
• 75.0 - 79.9 B+ 3.3
• 70.0 – 74.9 B 3.0
• 65.0 – 69.9 B- 2.7
• 60.0 – 64.9 C+ 2.3
• 55.0 – 59.9 C 2.0
• 40.0 – 54.9 D 1.0
• 0 – 39.9 E 0.0
• -- F 0.0
Distribusi Nilai
• TTS : 25
• TAS : 25
• Tes Kecil : 10
• Praktikum : 40
• Jumlah : 100
Aturan Praktikum
• Datang dan mengilkuti praktikum dengan
tertib dan teratur
• Bila ada halangan hubungi asisten yang
bersangkutan
• Penilaian dari praktikum adalah 30%,
yang akan dibagi dalam tes-tes kecil /
tugas selama praktikum.
Aturan Lain
• Tidak ada ujian susulan
• Presensi minimal 75%
• Menggunakan pakaian yang sopan dan
rapi.
Refresh C++
• Bahasa C dibuat pada tahun 1978 untuk Sistem Operasi
Unix oleh Bell Labs (Ken Thompson dan Dennis M.
Ritchie).
– Buku The C Programming Language
• Bahasa C merupakan salah satu bahasa pemrograman
yang paling sering dipakai oleh pemrogram di seluruh
dunia, terutama karena bahasa C memperbolehkan
pengakses memori secara manual. (dengan POINTER)
• Bahasa C menjadi dasar bahasa C++.
• Bahasa C seringkali dipakai untuk membuat bahasa-
bahasa pemrograman yang lain.
• Distandarisasi ANSI tahun 1989
Identifier & Tipe Data C
• Identifier adalah pengingat tempat penyimpanan data di
dalam memori komputer.
– Variabel : bisa diubah
– Konstanta : bersifat tetap
Some programmer jargon
• Beberapa istilah:
– Source code: kode program yang ditulis programmer.
– Compile (build): pengubahan source code ke dalam
object code (bisa bahasa mesin / assembly)
– Executable: program dalam bahasa mesin yang siap
dieksekusi.
– Language: bahasa pemrograman.
– Library: fungsi-fungsi yang digunakan pada
pembuatan program.
– Preprocessor Directive
• Dimulai dengan tanda #
• Header file: file yang berekstensi .h yang disertakan pada
pembuatan program.
Structure of C

• Consists mainly of: #include <….>


• Preprocessor Directive #define ….
int coba();
• Function Definitions
• Data Structures void main()
• Code programs {
int a;
• Function Body printf(“Hello, world!\n”);
a = coba();
}

int coba(){
…..
}
More about Hello World

Preprocessor
#include <stdio.h> Comments are good
/* My first C program which prints Hello World */
main() means “start here”
int main (int argc, char *argv[])
{
printf ("Hello World!\n");
return 0; Library command
}

Return 0 from main means our program


Brackets finished without errors
define code blocks
Keywords of C
• Flow control (6) – if, else, return,
switch, case, default
• Loops (5) – for, do, while, break,
continue
• Common types (5) – int, float,
double, char, void
• Structures (2) – struct, typedef
• Sizing things (1) – sizeof
• Rare but still useful types (7) – extern,
signed, unsigned, long, short,
static, const
• Evil keywords which we avoid (1) – goto
Variable
• Kita harus mendeklarasikan tipe data
setiap variabel pada C.
• Setiap varibel punya tipe data dan
namanya.
• Variabel adalah unik, tidak boleh berupa
keyword, dimulai dengan huruf atau
underline, maks 32 karakter
int a,b; int start_time;
double d; int no_students;
/* This is double course_mark;
a bit cryptic */ /* This is a bit better */
Pendeklarasian Variabel &
Konstanta
Escape Characters
The char type
• char disimpan dalam kode ascii (integer)
• Print char dengan %c
• char menggunakan single quote

int main()
{
char a, b;
a= 'x'; /* Set a to the character x */
printf ("a is %c\n",a);
b= '\n'; /* This really is one character*/
printf ("b is %c\n",b);
return 0;
}
A short note about ++
• ++i means increment i then use it
• i++ means use i then increment it
int i= 6;
printf ("%d\n",i++); /* Prints 6 sets i to 7 */

Note this important difference


int i= 6;
printf ("%d\n",++i); /* prints 7 and sets i to 7 */

All of the above also applies to --.


Casting
• Memaksa suatu tipe data
• Tipe data yang serupa
• float -> int
• Int -> float
• Lihat contoh!
Formatting Command Summary
Format Command Data type Description

%d Int Decimal number

%x Int Hexadecimal number

Low byte as binary


%b Int
number
Low byte as ASCII
%c Int
character

%f float Floating point number

%s char array Char array (string)


Control Structure 1
• IF / IF … ELSE • SWITCH

if ( true ) { switch ( key ) {


case ‘a’:
DoFirstThing(); case ‘A’:
DoSecondThing(); DoFirstThing();
}; DoSecondThing();
break;
case ‘b’:
if ( true ) DoSomething();
break;
DoSomething();
default:
else break;
DoSomethingElse(); };
Control Structure 2
• FOR • WHILE
int i, j;
for (i=0; i<5; i++)
int i = 0;
for (j=5; j>0; j--) { int StayInLoop = 1;
// i counts up while ( StayInLoop ) {
// j counts down i+=2;
printf(“%i %j\n”, i, j); // Make sure you have
}; // exit condition!
if ( i > 200 )
StayInLoop = 0;
• The “++” / ”--” is shortcut };
used to increment /
decrement value of int
variables • “+=“ increments by n
What is a function?
• The function is one of the most basic things to
understand in C programming.
• A function is a sub-unit of a program which
performs a specific task.
• We have already (without knowing it) seen
one function from the C library – printf.
• We need to learn to write our own functions.
• Functions take arguments (variables) and
may return an argument.
– Formal parameter
– Actual parameter
Type of function
• Void : tidak mengembalikan nilai
• Non-void : mengembalikan nilai
An example function
#include <stdio.h>
int maximum (int, int); /* Prototype – see later in lecture */

int main(int argc, char*argv[])


{ Prototype the function
int i= 4;
int j= 5; Call the function
int k;
k= maximum (i,j); /* Call maximum function */
printf ("%d is the largest from %d and %d\n",k,i,j);
printf ("%d is the largest from %d and %d\n",maximum(3,5), 3, 5);
return 0;
} function header
int maximum (int a, int b)
/* Return the largest integer */
{
The function itself
if (a > b)
return a; /* Return means "I am the result of the function"*/
return b; /* exit the function with this result */
}
The main Function
• function main() dibutuhkan agar program C
dapat dieksekusi!
• Tanpa function main, program C dapat dicompile
tapi tidak dapat dieksekusi (harus dengan flag
parameter –c, jika di UNIX)
• Pada saat program C dijalankan, maka compiler
C pertama kali akan mencari function main() dan
melaksanakan instruksi-instruksi yang ada di
sana.
int main()
• Berarti di dalam function main tersebut harus terdapat
keyword return di bagian akhir fungsi dan
mengembalikan nilai bertipe data int,
• Mengapa hasil return harus bertipe int juga? karena tipe
data yang mendahului fungsi main() diatas
dideklarasikan int
• Tujuan nilai kembalian berupa integer adalah untuk
mengetahui status eksekusi program.
– jika “terminated successfully” (EXIT_SUCCESS) maka, akan
dikembalikan status 0,
– sedangkan jika “terminated unsuccessfully” (EXIT_FAILURE)
akan dikembalikan nilai status tidak 0, biasanya bernilai 1
• Biasanya dipakai di lingkungan UNIX
What is scope variable?
• The scope of a variable is where it can be used
in a program
• Normally variables are local in scope - this
means they can only be used in the function
where they are declared (main is a function)
• We can also declare global variables.
• If we declare a variable outside a function it can
be used in any function beneath where it is
declared
• Global variables are A BAD THING
Why Global is Bad?
The print stars example
This program prints five rows of
#include <stdio.h> five stars *****
void print_stars(int); *****
*****
int main() *****
{ *****
int i;
for (i= 0; i < 5; i++) Loop around 5 times to
print_stars(5); print the stars
return 0;
} Variables here are LOCAL variables

void print_stars (int n) This prints 'n' stars and then


{
int i; a new line character
for (i= 0; i < n; i++)
printf ("*");
printf ("\n");
}
Other techniques for debugging
• Check missing brackets and commas.
• Check that you have a semicolon at the end of
every line which needs one.
• Put in some printf
– if you know what your program is DOING you will
know what it is DOING WRONG.
• Try to explain to someone else what the
program is meant to do.
• Take a break, get a cup of coffee and come
back to it fresh.
– Debugging is FRUSTRATING
NEXT
• Pengantar Struktur Data & Abstract Data
Type

You might also like