Modul Struktur Data C - Opt
Modul Struktur Data C - Opt
ARRAY
array adalah suatu tipe data terstruktur yang berupa sejumlah data sejenis (bertipe data
sama) yang jumlahnya tetap dan diberi suatu nama tertentu.
Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.
DEKLARASI
tipe_data nama_var_array [ukuran];
tipe_data : menyatakan jenis tipe data elemen larik (int, char, float, dll)
nama_var_array : menyatakan nama variabel yang dipakai.
ukuran : menunjukkan jumlah maksimal elemen larik.
Contoh :
Int nilai[6];
INISIALISASI
Menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan.
Contoh diatas berarti berarti anda memesan tempat di memori komputer sebanyak 6 tempat
dengan indeks dari 0-5, dimana indeks ke-0 bernilai 8, ke-1 bernilai 7, dst, dan dimana
semua elemennya bertipe data integer.
PENGAKSESAN
nama_var_array [indeks];
Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai
atau menampilkan nilai pada indeks yang dimaksud. Pengaksesan elemen array dapat
dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung.
void main ()
{ int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
printf("%d",result);
}
1
Contoh pengaksesan dan pengisian langsung ke tiap elemen dari array:
#include <stdio.h>
#include <conio.h>
void main ()
{
int A [5]={20,9,1986,200,13},n,edit;
clrscr();
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\nData yang baru : \n");
A[0]=4;
A[1]=2;
A[2]=1;
A[3]=3;
A[4]=5;
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
}
void main ()
{ int A [5]={20,9,1986,200,13},n,hapus;
clrscr();
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("data yang ingin dihapus : ");
scanf("%i",&hapus);
printf("\nData yang baru : \n");
for (n=hapus-1;n<5-1;n++)
{
A[n]=A[n+1];
}
for (n=0;n<4;n++)
{
printf("%i ",A[n]);
}
}
2
#include <stdio.h>
#include <conio.h>
void main(){
int data[]={1,6,2,9,12,87,43,11};
int n=8;
do{
//menampilkan data
for(int i=0;i<n;i++)
printf("%i ",data[i]);
getch();
printf("\n");
printf("\n");
if(n==0) printf("Data kosong!!!");
}while(n!=-1);
3
MODUL 2. STRUCT
Bentuk struktur data yang dapat menyimpan variabel-variabel dalam 1 nama, namun
memiliki tipe data yang berbeda ataupun sama. Variable-variabel tersebut memiliki kaitan
satu sama yang lain.
Bentuk umum :
struct nama_struct
{
tipe_data <nama_var>;
tipe_data <nama_var>;
....
};
DEKLARASI
Ada 2 cara pendeklarasian struct, yaitu :
Deklarasi 1:
struct Mahasiswa
{
char NIM[8];
char nama[50];
float ipk;
};
Deklarasi 2 :
struct dataMhs
{
char NIM[8];
char nama[50];
float ipk;
} mhs;
Program 2-1
#include <stdio.h>
void main()
{
struct orang
{
char nama[40];
short umur;
} saya;
printf("nama : ");
scanf("%s",&saya.nama);
printf("umur : " );
scanf("%i",&saya.umur);
printf("%s berumur %i",saya.nama,saya.umur);
}
4
ARRAY OF STRUCT
Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara :
1. Deklarasi manual
Contoh :
#include <stdio.h>
struct Mahasiswa
{
char NIM[8];
char nama[50];
float ipk;
};
void main()
{
Mahasiswa a,b,c;
……
……
……
}
artinya struct mahasiswa digunakan untuk 3 variabel, yaitu a,b,c
2. Array of struct
Contoh :
#include <stdio.h>
struct Mahasiswa
{
char NIM[8];
char nama[50];
float ipk;
};
void main()
{
Mahasiswa mhs[3];
……
……
……
}
artinya struct mahasiswa dapat digunakan untuk tiga variabel mhs, yaitu mhs[0], mhs[1],
dan mhs[2].
5
Program 2-2
TUGAS DI LABORATORIUM
1. Buatlah struct untuk data buku yang berisi tentang : kode buku, nama buku, tahun
terbit, pengarang dan harga. Gunakan array of struct agar dapat menginput 5 buah
buku. Simpan dengan nama TUGAS2-3.c
6
MODUL 3. POINTER
Introduction
Setiap kali kita mendeklarasikan variabel, C akan menyediakan alokasi memori untuk masing-masing
variabel. Ukuran memori yang dialokasikan berbeda-beda tergantung dari tipe data variabelnya. Misalnya
untuk integer 2 bytes, untuk float 4 bytes, dst. Jadi, setiap variabel yang kita deklarasikan mempunyai 2
atribut yaitu address dan value.
Pengertian Pointer
Pada pertemuan kali ini, kita akan membahas powerful feature dari bahasa pemograman C, yaitu pointer.
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain.
Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character,
float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C.
Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih
fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL, dan
disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.
Deklarasi Pointer
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum
digunakan.
char *huruf;
Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya, sedangkan untuk
menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan operator * (tanda asterisk).
Jika diinginkan untuk menampilkan alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel
pointer, digunakan operator & (tanda ampersand).
7
Maka representasi dari operasi penugasan di atas adalah
PROGRAM 3-1
Pertanyaan :
1. Perintah apa yang digunakan untuk menampilkan alamat dari variabel i, namun tanpa melalui
pengaksesan variabel pointer ia?
8
PROGRAM 3-2
Pertanyaan :
2. t = *p;
*p = *q;
*q = t;
9
PROGRAM 3-3
Pertanyaan
3. Berapa selisih nilai (menggunakan heksadesimal) antar penunjuk dengan penunjuk+1? Hal
apa yangmempengaruhi besarnya selisih nilai tersebut?
10
Pointer pada Array
Pada array, pointer hanya perlu menunjuk pada alamat elemen pertama saja karena letak alamat array
sudah berurutan pada memori.
PROGRAM 3-4
Pertanyaan
4. Tambahkan potongan kode program pada program di atas untuk membalik suatu
kata/kalimat dengan menggunakan pointer!
11
Pointer pada Struct
Pointer dapat bertipe apa saja, bahkan tipe buatan kita sendiri.
PROGRAM 3-5
TUGAS DI LABORATORIUM
1. Buatlah sebuah program yang dapat mencari sebuah huruf dalam sebuah kata. Kata dapat
diinisialisasi terlebih dahulu. Gunakan pointer untuk menjadi counter.
12
MODUL 4. STACK (TUMPUKAN)
Definisi
Stack disebut juga tumpukan dimana data hanya dapat dimasukkan dan diambil dari
satu sisi.
Karena itu, stack bersifat LIFO(Last In First Out).
Operasi-operasi stack
Saat ini, kita akan mencoba membuat stack dan operasi-operasi yang dapat
dilakukannya.
13
b. Pop (mengambil data pada stack)
void pop()
{
printf ("data %s terambil",tumpuk.data[tumpuk.top]);
tumpuk.top--;
}
14
SOAL LATIHAN:
1. Dari flowchart dibawah ini, buatlah fungsi utama untuk menjalankan stack diatas
dengan menggunakan menu.
start
int a;
char input[20]
tumpuk.top -1
Input a
switch (a)
gets input
push(input)
pop()
print()
a!=5
15
selesai
2. Buatlah program pengubah infix ke postfix dengan asumsi operator hanya
tambah(+) dan kurang(-) saja. buatlah menggunakan stack!
3. Buatlah program yang menerima input dari user sebuah kalimat dan membalikkan
kalimat tersebut sebagai output programnya.
16
Kunci jawaban soal GUIDED STACK:
No.1:
Fungsi utamanya:
No.2:
Jangan lupa sesuaikan fungsi pop, dan push yang sudah ada dengan kontex
penggunaannya dan juga tipe datanya!
17
18
MODUL 5. LINKED LIST
Struktur data linked list merupakan sebuah untaian data yang antara satu elemen data dan
elemen data berikutnya dihubungkan dengan sebuah pointer.
Dilustrasikan sebagai kereta yang mempunyai gerbong-gerbong.
Bagian Data
Bagian Pointer
17
Ilustrasi Tambah Depan :
Penghapusan simpul pada linked list dapat dilihat dari beberapa keadaan; pertama
memastikan bahwa ada simpul yang akan dibuang. Kedua adalah membuang simpul dari
daftar yang sudah memiliki beberapa buah simpul. Penghapusan simpul juga harus
memperhatikan kedudukan simpul dalam daftar yaitu dilakukan pada bagian depan, diantara
dua simpul dan diakhir simpul.
18
TUGAS DI LABORATORIUM
1. Ketikkan program dibawah ini dan cetak hasil programnya
2. Coba dimodifikasikan sehingga penambahan titik koordinat dilakukan secara terurut
menurut absis dan menurut ordinat.
Sebagai contoh;
(1,1) (2,3) (9,8) (11,5) --- terurut menurut absis
(1,5) (2,9) (1,10) 7,11) -- terurut menurut ordinat
void main(void)
{
titikKoord *tambahTitik(titikKoord *);
titikKoord *buangTitik(titikKoord *);
void cetakDaftar(titikKoord *kepala);
switch (pilih)
{
case '1': kepala = tambahTitik(kepala);
break;
case '2': kepala = buangTitik(kepala);
break;
case '3': cetakDaftar(kepala);
break;
}
19
}
while (pilih < '4');
}
if (kepala == NULL)
kepala = baru ;
else
{
ekor = kepala ;
while (ekor->next != NULL)
ekor = ekor->next;
ekor->next = baru;
}
return kepala;
}
titikKoord *buangTitik(titikKoord *kepala)
{
int x, y, ada = 0;
titikKoord *cari, *hapus ;
20
kepala=kepala->next;
cari->next = NULL;
free(cari);
}
else
{
while((hapus->next!=NULL)&&(hapus->next!=cari))
hapus=hapus->next;
hapus->next = cari->next;
cari->next = NULL;
free (cari);
}
}
else
{
printf("Titik (%d,%d) tidak ada dalam daftar. \n",x,y);
getch();
}
return kepala;
}
21
MODUL 6. PENCARIAN
Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential search, dimana
data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke index terbesar, maupun
sebaliknya.
Contoh :
Metode pencarian adalah binary search, pada metode pencarian ini, data harus diurutkan terlebih
dahulu. Pada metode pencarian ini, data dibagi menjadi dua bagian (secara logika), untuk setiap
tahap pencarian.
PROGRAM 6 -1
22
Tambahan materi :
break ;
digunakan untuk keluar dari suatu blok perintah
continue;
digunakan untuk mem by-pass satu iterasi pada perulangan
PROGRAM 6-3
PROGRAM 6-4
23
PROGRAM 6-5
TUGAS
1. Buat program untuk mencari angka yang diinputka,n banyak data inputan user, lalu cari di
indeks keberapa, dan berapa jumlah angkanya kalo ada yang sama.
2. Buat program untuk mencari suatu data dan inputan berupa kalimat, hitung
konsonan,vokal,numerik.
Seperti contoh:
24
MODUL 7. PENGURUTAN (SORT)
Salah satu bagian penting dari struktur data adalah sorting atau pengurutan data. Ada
banyak sekali Algoritma pengurutan data di dunia komputer, yatu : bubble sort, selection
sort, insertion sort, exchange sort, quick sort, merge sort, dll.
Setiap algoritma memiliki kelebihan dan kekurangan masing – masing, kita akan mempelajari
cukup 4 algoritma saja, yaitu bubble sort, selection sort, insertion sort, dan exchange sort.
Bubble Sort
Program 7-1
25
Exchange Sort
Program 7-2
26
Selection Sort
Program 7-3
27
Insertion Sort
Program 7-4
28
TUGAS :
PROGRAM SORTING
================
Masukkan jumlah bilangan :
Masukkan data bilangan :
Masukkan pilihan sort;
1. Bubble Sort
2. Selection Sort
3. Insertion Sort
4. Exchange Sort
5. Keluar
29