Penger6an struct. Algoritme dan Pemrograman. Cara membuat struct. Deklarasi struct. Pointer pada struct 12/10/14 ILKOM IPB 1

dokumen-dokumen yang mirip
Algoritme dan Pemrograman

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Review Latihan Slide 10. Review Latihan Slide 10

Algoritme dan Pemrograman

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

Algoritme dan Pemrograman

12/29/2011. Algoritme dan Pemrograman. Bit. Bitwise operator

ANALISIS ALGORITMA BINARY SEARCH

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

a[0] a[1] a[2] a[3] a[4] a[5] x

Algoritme dan Pemrograman

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

Gambar 13.1 Ilustrasi proses algoritma sorting

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

Algoritme dan Pemrograman

Algoritme dan Pemrograman

Bab 9 Pointer. 9.1 Pendeklarasian pointer

Modul 8 SORTING (PENGURUTAN)

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Char. Karakter dan bilangan

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Kisi- kisi UTS- P. Kisi- kisi UTS- T

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

BAB 3 SEARCHING A. TUJUAN

Algoritme dan Pemrograman

ALGORITMA & PEMROGRAMAN II ARRAY

Algoritma dan Struktur Data. Ramos Somya

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

MODUL IV PENCARIAN DAN PENGURUTAN

Algoritme dan Pemrograman

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

UJIAN AKHIR SEMESTER GANJIL 2008/2009 ALGORITME DAN PEMROGRAMAN Sabtu, 31 Januari 2009; Pukul 13:30 16:00; CATATAN TERTUTUP

Tipe Data dan Operator

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Sorting. Pertemuan ke 14.

Modul Praktikum Algoritma dan Struktur Data

BAB VI Pengurutan (Sorting)

Pencarian (Searching)

PRAKTIKUM 9 ARRAY. ARRAY BERDIMENSI SATU Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Binary Search Tree (BST)

KU-1072 Pengenalan Teknologi Informasi - B. Materi: Array. Fakultas Ilmu dan Teknologi Kebumian

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Achmad Solichin.

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Algoritma dan Struktur Data

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

A. TUJUAN PEMBELAJARAN

Searching [pencarian] Algoritma Pemrograman

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

01. Review Array, Pointer dan Struktur

# TEN Sorting PENDAHULUAN

A. TUJUAN PEMBELAJARAN

STRUKTUR DATA SORTING ARRAY

REVIEW ARRAY. Institut Teknologi Sumatera

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

Algoritme dan Pemrograman

BAB XI ARRAY (LARIK)

SORTING (Pengurutan)

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

Struktur Data. PDE - Struktur Data 1

A R R A Y. Bentuk umum deklarasi array : type nama_array[ukuran] tipe : menyatakan tipe dasar array ukuran : menyatakan banyaknya elemen pada array

Struktur Data Array. Rijal Fadilah S.Si

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Konsep Pemrograman. Bab 14. Struktur 1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

BAB VI SORTIR ATAU PENGURUTAN

Algoritme dan Pemrograman

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STRUCTURE. Structure

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Algoritma Bubble Sort dan Quick Sort

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Pengumuman Pekan ke- 5

Struktur Kontrol Perulangan (Loop) Algoritme dan Pemrograman. Struktur Kontrol Perulangan: while. Struktur Kontrol Perulangan: while

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

BAB V SORTING (PENGURUTAN) INTERNAL

LIST. Dewi Sartika, M.Kom

SORTING (PENGURUTAN DATA)

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

BAB VI SEARCHING (PENCARIAN)

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

BAB IX LINKED LIST (SENARAI BERANTAI)

IT234 - Algoritma dan Struktur Data. Ramos Somya

Transkripsi:

Penger6an struct Algoritme dan Pemrograman Tipe struct Searching (Pencarian) Bubble Sort (Pengurutan) struct adalah kumpulan variabel (masing- masing dapat berbeda 6pe) yang dikelompokkan dan dikemas ke dalam satu nama variabel. Untuk mendefinisikan suatu record. Termasuk 6pe data turunan (derived data type). Cara membuat struct Contoh: ; Tipe struct ini diberi nama datamhs Terdiri atas dua variabel: nama dan usia Pernyataan tersebut hanya membuat 6pe data struct baru, TIDAK mendeklarasikan variabel apapun Belum ada alokasi memori Deklarasi struct Contoh deklarasi variabel menggunakan 6pe struct: struct datamhs mhs; struct datamhs arrmhs[100]; Dapat juga dilakukan langsung (definisi dan deklarasi): mhs, arrmhs[100]; Contoh program :: Merekam data nama dan usia mhs. mhs1; Elok Nian 20 struct datamhs mhs2={"indah Sekali", 19; mhs1.nama = "Elok Nian"; mhs1.usia = 20; printf("%s %d\n", mhs1.nama, mhs1.usia); printf("%s %d\n", mhs2.nama, mhs2.usia); ; Pointer pada struct struct datamhs mhs={"indah Sekali", 19; struct datamhs *p; p = &mhs; printf("%s %d\n", mhs.nama, mhs.usia); printf("%s %d\n", p->nama, p->usia); ILKOM IPB 1

Akses anggota struct Menggunakan salah satu dari dua operator: operator 66k (.) operator panah (- >) tergantung 6pe variabel yang dideklarasikan. Akses variabel biasa (selain pointer) menggunakan operator 66k, sedangkan akses variabel pointer menggunakan operator panah. Typedef Typedef merupakan mekanisme untuk membuat sinonim atau alias dari 6pe data yang telah didefinisikan sebelumnya. Contoh: typedef struct datamhs MHS; berar6 mendefinisikan 6pe data baru bernama MHS sebagai sinonim untuk struct datamhs. Dengan demikian, pernyataan struct datamhs untuk selanjutnya dapat digan6 dengan MHS saja. Contoh :: Menggunakan typedef ; typedef struct datamhs MHS; MHS mhs={"indah Sekali", 19; MHS *p; p = &mhs; printf("%s %d\n", mhs.nama, mhs.usia); printf("%s %d\n", p->nama, p->usia); Array of struct #define SIZE 100 struct nilaimhs { char nim[9]; int uts, uas; float rataan; ; typedef struct nilaimhs NILAI; void substring (char *dest, const char *source, int a, int n) { int i=a; for (; i<a+n; i++) dest[i-a]=source[i]; dest[i-a]='\0'; Array of struct int n, i; NILAI list[size]; char brs[256], st[4]; scanf("%d\n", &n); for (i = 0; i<n; i++) { gets(brs); // baca per baris data substring(list[i].nim, brs, 0, 9); 3 G64010234 60 80 G64010235 50 45 G64010236 90 76 substring(st, brs, 10, 2); list[i].uts = atoi(st); substring(st, brs, 13, 2); list[i].uas = atoi(st); for (i = 0; i<n; i++) // hitung rataan tiap mhs list[i].rataan = (float) (list[i].uts+list[i].uas)/2.0; for (i = 0; i<n; i++) { printf("%s %.2f\n", list[i].nim, list[i].rataan); La6han #1 Ti6k 2D Suatu 66k dalam bidang 2D diwakili oleh dua nilai yang masing- masingnya menunjukkan nilai untuk masing- masing dimensi dan dicetak dengan notasi (x, y) dengan x dan y adalah bilangan riil Buat program untuk membaca dua buah 66k dan menampilkan jarak Euclid keduanya dengan dua angka di belakang 66k desimal. Gunakan 6pe data struct Contoh masukan: 2.5 2 2 2 d( p, q) = ( px qx ) + ( py qy ) 5 2 Contoh keluaran: 2.50 ILKOM IPB 2

La6han #2 Waktu Buat fungsi untuk menentukan selisih antara dua waktu 6me1 dan 6me2 dalam satuan menit. Masing- masing waktu terdiri atas 6ga komponen nilai, yaitu hour (jam), minute (menit), dan second (de6k). Contoh penggunaan fungsi: TIME time1 = {10, 30, 0.0; TIME time2 = {11, 31, 30.0; float beda; beda = selisih(time1, time2); printf(".2f\n", beda); // output: 61.50 La6han #3 Diketahui suatu struct mhs untuk data mahasiswa: struct mhs { char nim[10]; char nama[30]; float nilai; ; Buat suatu program untuk menerima n buah data mahasiswa dan menampilkan daxar mahasiswa yang terurut berdasarkan nilai secara descending Data untuk searching & sor:ng Anggaplah kita mempunya array data yang terdiri dari beberapa kolom, salah satunya adalah key dengan 6pe int sbb: struct list { int key; int val; // contoh elemen lainnya... // dan seterusnya ; typedef struct list LIST; Akan dilakukan sor6ng berdasarkan nilai key secara ascending. Searching (pencarian) Mencari data berdasarkan nilai tertentu, x. Beberapa contoh algoritme pencarian: Sequen:al search Sorted array search Hashing Recursive structures search Mul:dimensional search Yang dibahas pada mata kuliah ini adalah sequen:al search dan sorted array search Pencarian pen6ng dalam struktur data Variasi masalah Ada atau 6dak ada? Keluaran: TRUE/FALSE Indeks kemunculan pertama? Keluaran: suatu nilai antara 0 dan n- 1 jika ada atau suatu nilai khusus (mis. - 1) jika 6dak ada Frekuensi kemunculan x? Keluaran: antara 0 hingga n Indeks seluruh kemunculan jika ada Indeks kemunculan terakhir atau ke- i Dapat divariasikan juga dengan Pencarian nilai yang lebih kecil atau lebih besar dari x Pencarian nilai tertentu untuk fungsi dari x (mis. nilai yang selisihnya dengan x kurang dari suatu nilai ambang) Penggunaan dua nilai x dan y untuk mencari data yang nilainya di antara keduanya Sequen:al search Se6ap elemen dalam array dibandingkan satu per satu dari awal (kiri) hingga x ditemukan atau semua elemen telah diperiksa. Mudah diimplementasikan. Waktu proses rela6f lambat untuk ukuran data sangat besar. Jika suatu array memiliki n buah elemen, sebanyak- banyaknya berapa perbandingan yang harus dilakukan untuk mencari? O(n) ILKOM IPB 3

Sequen:al search (ada/6dak?) // Keluaran: 1 jika ada // atau 0 jika tidak ada int sequentialsearch(list t[], int n, int val) { int i, last=0; for(i=0; i<n; i++) if(val==t[i].val) return 1; /* ditemukan */ /* tidak ditemukan */ Sequen:al search (kemunculan pertama) // Keluaran: indeks kemunculan pertama jika ada // atau bernilai -1 jika tidak ada int sequentialsearch(list t[], int n, int val) { int i; for(i=0; i<n; i++) if(val==t[i].val) return i; /* ditemukan */ */ return -1; /* tidak ditemukan Ubah fungsi sequentialsearch untuk melakukan variasi pencarian berikut: 1. Indeks kemunculan terakhir 2. Indeks seluruh kemunculan 3. Frekuensi kemunculan x 4. Frekuensi nilai yang lebih kecil dari x La6han Ubah fungsi sequentialsearch untuk melakukan variasi pencarian berikut: Frekuensi kemunculan x Indeks seluruh kemunculan Indeks kemunculan terakhir Frekuensi nilai yang lebih kecil dari x Sequen6al sorted array search Data harus terurut Se6ap elemen dalam array ditelusuri satu per satu dari awal (kiri) hingga ketemu atau nilai yang dibaca lebih besar dari nilai yang dicari atau semua elemen telah dibandingkan. Asumsi: terurut ascending Jika terurut descending, sesuaikan algoritme Mudah diimplementasikan. Waktu proses rela6f cepat untuk kasus data yang dicari terletak di bagian depan. Masih masuk lingkup O(n) Sequen6al sorted array search // Keluaran: indeks kemunculan pertama jika ada // atau bernilai -1 jika tidak ada // Asumsi: array t terurut secara ascending (menaik) int sortedsearch(list t[], int n, int val) { int i=0, hsl=-1; while ((t[i].val<=val) && (i<n) && (-1==hsl)) { if(t[i].val==val) hsl=i; i++; return hsl; /* tidak ditemukan */ Binary search Data harus terurut Pencarian dimulai dengan memeriksa elemen yang terletak di indeks tengah- tengah (mis. mid) Jika nilai yang di tengah lebih besar dari x, pencarian diarahkan ke data yang ada di kiri mid. Sebaliknya, diarahkan ke sebelah kanan. Asumsi: terurut ascending Jika terurut descending, sesuaikan algoritme Periksa elemen yang di tengah bagian tersebut Ulangi hingga x ditemukan atau data sudah habis Efisien: O(log n) ILKOM IPB 4

Binary search int binarysearch(list t[], int n, int val) { int left, right, mid; left = 0; right = n-1; //indeks paling kiri dan kanan while(left<=right) { mid = (left+right)/2; if (val<t[mid].val) //kanan tidak perlu dicek right = mid-1; else if (val>t[mid].val) //kiri tidak perlu dicek left = mid + 1; else return mid; /* ditemukan */ return -1; /* tidak ditemukan */ Sor:ng (Pengurutan) Mengurutkan data berdasarkan kunci tertentu. Jenis sor:ng: Ascending (menaik) Descending (menurun) Manfaat: mempercepat dan memudahkan akses data Banyak algoritme sor:ng dikembangkan untuk: Mempercepat proses Mengefisienkan penggunaan sumberdaya Ingat syarat terurut pada binary search Contoh Masukan: 5 2 4 6 1 3 Keluaran: 1 2 3 4 5 6 (ascending) 6 5 4 3 2 1 (descending) Data untuk sor:ng Anggaplah kita mempunyai suatu array integer Akan dilakukan sor:ng secara ascending Sor:ng secara descending dapat dilakukan dengan penyesuaian pada algoritme Fungsi pendukung Mempertukarkan nilai t1 dan t2: void tukar(list *t1, LIST *t2) { LIST t = *t1; *t1 = *t2; *t2 = t; Menampilkan n buah data void printlist(list t[], int n) { int i; for (i=0; i<n; i++) printf("%d ", t[i].val); printf("\n"); BUBBLE SORT Ide: nilai yang besar seper6 gelembung yang akan naik Keuntungan: Sederhana dan mudah diimplementasikan Cepat jika data masukan sudah terurut Kelemahan: Secara umum membutuhkan waktu proses lebih lama Biasa dijadikan contoh algoritme pengurutan yang ;dak efisien (O(n 2 )) ILKOM IPB 5

Cara kerja Baca elemen array dari kiri ke kanan, bandingkan nilai key yang bersebelahan. Jika dua nilai posisinya 6dak sesuai, tukar tempatnya. Ulangi prosedur ini sampai semua elemen terurut. Pada putaran ke- i, nilai ke- i terbesar akan berada di posisi yang benar Putaran pertama akan menempatkan nilai paling besar di akhir array Dimanfaatkan untuk op6masi inner loop agar 6dak lagi memeriksa nilai yang telah benar posisinya BUBBLE SORT void bubblesort(list x[], int n) { int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-(i+1);j++){ if (x[j].val > x[j+1].val) tukar(&x[j],&x[j+1]); printf("%d %d ", i, j); printlist(x, n); Bagian yang ditebalkan adalah optimasi inner loop Bagian berwarna biru hanya untuk tracing Algoritme sor:ng lainnya Inser:on sort Selec:on sort Quicksort Mergesort Review Untuk menampung data nama dan usia, dibuat dua variabel array: char nama[size][50]; int usia[size]; Bisakah disimpan dalam satu variabel array biasa? à TIDAK BISA, karena berbeda 6pe. Beberapa variabel dapat dikemas dalam satu paket dengan struct. ILKOM IPB 6