TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

dokumen-dokumen yang mirip
STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STRUKTUR DATA Pertemuan 1 s.d 8

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

KONSEP POINTER DAN LINKED LIST

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

SINGLE LINKED LIST (NON CIRCULAR)

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Achmad Solichin.

Review : Sifat Implementasi Linear List dengan Array

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

ARNA FARIZA YULIANA SETIOWATI

KONSEP POINTER DAN LINKED LIST

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

P 4 Bab 3 : Dasar Pemrograman C

Pertemuan 7. REVIEW dan QUIS

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Lab. Teknik Informatika Struktur Data 1

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

PERTEMUAN 7 REVIEW (QUIZ)

Algoritma dan Struktur Data. Ramos Somya

ARNA FARIZA YULIANA SETIOWATI

LAPORAN PRAKTIKUM RESMI QUEUE

Tipe Data dan Operator

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

ALGORITMA & PEMROGRAMAN II ARRAY

Algoritma Dan Struktur Data II

Perulangan, Percabangan, dan Studi Kasus

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

Abstrak data tipe. Struktur data-arita witanti ozzy suria Ganjil 2017

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Linked List 6.3 & 7.3 NESTED LOOP

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

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

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Lecture Notes Algoritma dan Pemrograman

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

Algoritma dan Struktur data

Struct Lanjutan: Studi Kasus

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack

Single Linked List (1)

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Search And Insert Problem (Sorted Double Linkedlist Solution)

Type Data terdiri dari : - Data Tunggal : Integer, Real, Boolean dan Karakter. - Data Majemuk : String

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Algoritma Pemrograman [BS204]

Larik/ Array int a1, a2, a3, a4, a5;

(3) BAHAN KAJIAN (materi ajar)

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

Silabus Struktur Data. Bandung 2013

05. Double Linked List

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

ALGORITMA DAN STRUKTUR DATA

Teori Algoritma TIPE DATA

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

Algoritma Pemrograman & Struktur Data

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

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

PERTEMUAN 3 KONSEP TIPE DATA

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

Chapter 3.2 : Tipe, Nama dan Nilai

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Praktikum Algoritma dan Struktur Data 2010

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO).

STRUKTUR DATA. Deskripsi Mata Kuliah

Algoritma & Pemrograman #9. by antonius rachmat c, s.kom, m.cs

Modul Praktikum Algoritma dan Struktur Data

BAB II STACK (TUMPUKAN)

Tumpukan(Stack)!! " # $ %&' $ %& ( ) ( * +, / ( (

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Makalah. STRUKTUR DATA ( Array )

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.

MODUL STRUKTUR DATA. Erna Kumalasari Nurnawati

Algoritma Dan Struktur Data II

BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto Structure and Pointer

BAB 3 STACK (TUMPUKAN)

04. Single Linked List

Chapter 2. Tipe Data dan Variabel

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

RENCANA PEMBELAJARAN SEMESTER

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

S T A C K ( T U M P U K A N )

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Algoritma dan Struktur Data

Chapter 1 KONSEP DASAR C

Transkripsi:

WAHJUDI ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C Universitas Multimedia Nusantara Tangerang - Banten Januar Wahjudi Abstrak- Tipe data abstrak(abstract data types atau disingkat ADT) adalah salah satu dasar pemrograman yang harus dipahami oleh pemrogram. Untuk membangun sebuah tipe data abstrak, ada 5(lima) bagian yang perlu diperhatikan, data abstrak berupa daftar terurut(sorted list, ordered list) pada tulisan ini, akan memperjelas batasan antar bagian pada tipe data abstrak. I. LATAR BELAKANG terdapat perbedaan teknik pemrograman antara penulis satu dengan lainnya. Stack, Queue dan List serta beberapa konsep lain dalam pemrograman menggunakan bahasa C, bisa diimplementasikan dengan beberapa tehnik. Diantaranya bisa dengan menggunakan tipe data semi terstruktur, bisa juga dengan tipe data terstruktur yang dibangun atas dasar tipe data abstrak. Contohnya sebuah stack bisa diimplementasikan menggunakan tipe data semi terstruktur, yaitu menggunakan array dan beberapa variabel integer sebagai penunjuk top of the stack. Karena menggunakan array, maka pemrogram dimungkinkan untuk mencetak isi stack bisa dimulai dari dasar stack, padahal prinsip stack hanya mengijinkan akses data (push maupun pop) pada posisi top. Stack bisa diimplementasikan menggunakan struktur data yang sesuai dengan tipe data abstrak stack, dimana pemrogram tidak diperkenankan mengakses isi array tanpa melalui teknik yang benar. tipe data. Tipe data (data type) yang umum digunakan untuk menyimpan karakter. Tipe data int dalam bahasa C disimpan dalam memori sebesar 4 byte, dengan demikian batasan nilai yang bisa disimpan adalah data int bisa dilakukan beberapa operasi, diantaranya adalah operasi penjumlahan, pengurangan, perkalian, pembagian, modulus, dan lain- lain. Dari contoh tipe data int diatas, dapat dilihat bahwa tipe data adalah sebuah wadah untuk menampung dan operasi yang bisa dilakukan untuk data tersebut. mengenai : jenis data, batasan data yang bisa disimpan. Sedangkan operasi yang bisa dilakukan misalnya penjumlahan, pengurangan, perkalian, pembagian, dan lain-lain. Dari contoh stack diatas menunjukkan perlunya pemahaman tipe data abstrak dan cara menggunakannya pada pemrograman. Dengan contoh daftar terurut (sorted list atau ordered list) diharapkan akan mempermudah pemahaman dasar ilmu komputer tentang cara penerapan Abstract Data Types (ADT). II. STRUKTUR DATA (DATA STRUC- TURE) SEBAGAI DASAR TIPE DATA ABSTRAK (ABSTRACT DATA TYPE) Pemahaman tipe data abstrak dimulai dari pemahaman lain-lain. 24 data sesuai kategori tipe data variabel tersebut. Dengan demikian variabel pada program harus dikategorikan pada salah satu tipe data yang ada, misalnya variabel bernama contohvar bertipe data int, maka variabel contohvar akan disimpan dalam memori sebesar 4 byte, mampu menampung sebuah bilangan bulat dengan dan terhadap variabel contohvar bisa dilakukan operasi penjumlahan, pengurangan, perkalian, pembagian dan

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 WAHJUDI Gambar 1. dibawah ini untuk memperjelas hubungan tipe data dan variabel. Misalnya terdapat potongan program sebagai berikut : int main() ( int variabel_a, nilai, xyz; char huruf, angka;... Pada gambar 1., terlihat tiga wadah, wadah pertama untuk variabel yang bertipe data int, wadah kedua untuk variabel yang bertipe data char. variabel_ xyz a nilai ratarata var_b angka huruf Gambar 1. Ilustrasi tipe data Dalam pemrograman, bisa saja dibutuhkan banyak variabel untuk menyimpan data yang bertipe sejenis. Kasus 1(gambar 2a.), misalkan 10 buah variabel bertipe data int untuk menampung nilai mahasiswa, jika disediakan satu variabel untuk masing-masing data, maka akan memerlukan 10 buah nama variabel variabel akan membutuhkan beberapa baris program. Kasus 2(gambar 3a.), selanjutnya jika selain nilai 10 mahasiswa tersebut perlu juga disimpan NIM (Nomor Induk Mahasiswa), dan Nama Mahasiswa. Untuk nilai, nama, dan NIM masing-masing mahasiswa harus ada penghubung (link) sehingga nilai, nama dan NIM tidak tertukar antar mahasiswa. Gambar 2b. Ilustrasi kasus 1 dengan array 10 nilai Gambar 3a. Ilustrasi kasus 2 dengan 3 buah array yang memiliki 10 elemen Gambar 3b. Ilustrasi kasus 2 dengan array 10 record mahasiswa III. TIPE DATA ABSTRAK Tipe data abstrak (Abstract Data Type - ADT) adalah tipe data yang diatur menggunakan struktur data tertentu terpisah dari representasi dan implementasinya (Horowitz, Sahni dan Freed, 1993,pp1-100). Pengguna representasi dan implementasinya. Namun seorang perancang program (program designer) perlu mengetahui implementasinya. Antara user dan program designer dipisahkan oleh interface (lihat gambar 4.). Untuk mengatur penyimpanan data pada kasus diatas diperlukan teknik penyimpanan data dalam Teknik (metode/cara) penyimpanan data diatas disebut Struktur data (data structures)(stubbs, Webre, 1985, pp1-43). Struktur Data dasar yang sering digunakan adalah array, record, union dan pointer (reference). Untuk kasus 1 diatas, bisa diatasi dengan struktur data array (gambar 2b.). Untuk kasus 2 diatas bisa diatasi menggunakan struktur data array dengan elemen berupa record (disebut array of records, gambar 3b.). Gambar 2a. Ilustrasi kasus 1 dengan 10 variabel integer 25 Gambar 4. Interface and implementation (http://developer.apple.com/) data types merupakan abstraksi matematis, tidak implementasi operasi merupakan bagian terpisah. 3.a Contoh Abstract Data Type Daftar Terurut Tipe Data Abstrak daftar terurut (sorted list) berisi data mahasiswa dalam sebuah kelas. Data mahasiswa terdiri dari NIM dan nama. Tentunya daftar terurut

WAHJUDI ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 (sorted list) dalam imaginasi pengguna, memiliki 1. Data terdiri dari nilai kunci (yaitu NIM) untuk mengurutkan berupa sebuah string dan string lainnya (yaitu nama mahasiswa), 2. Ukuran maksimal daftar tersebut, misalnya 100 (seratus) karena dalam sebuah kelas tidak lebih dari 100 (seratus) mahasiswa 3. Jumlah mahasiswa dalam kelas Pengguna akan melakukan beberapa hal seperti dalam 1. membentuk sebuah daftar baru 2. menambahkan sebuah data mahasiswa pada daftar 3. mencari nama mahasiswa sesuai sebuah nilai, misalnya NIM 4. mengetahui jumlah data pada daftar 5. mengetahui jumlah data maksimal pada daftar 6. menghapus seluruh data pada daftar 8. memeriksa apakah daftarurut sudah penuh 9. memeriksa apakah daftarurut masih kosong 10. dan lain-lain Tipe data untuk daftar terurut diatas belum tersedia, karena tipe data tersebut masih berada pada imaginasi dan masih bersifat abstrak. Inilah makna abstrak pada istilah Tipe Data Abstrak. Untuk membentuk tipe data daftar terurut diatas, tentu ada semacam interface untuk pengguna agar bisa mengoperasikan daftar terurut tersebut. Interface Operasi Penjelasan Operasi createlist(ukuran) Membentuk sebuah daftar dengan ukuran tertentu, misalk ukuran insert(xyz,baru) Menambah sebuah data baru pada daftar xyz, mengembalik status 1 jika berhasil dan 0 jika gagal search(xyz,key) Mencari sebuah data dengan nilai key pada daftar xy mengembalikan posisi record jika ditemukan, dan -1 jika tid ditemukan sizelist(xyz) Menghitung jumlah data pada daftar xyz, mengembalikan jum data maxlist(xyz) Mengembalikan jumlah data maksimal pada daftar xyz clearlist(xyz) Menghapus seluruh data pada daftar xyz printlist(xyz) Mencetak seluruh data pada daftar xyz isfull(xyz) Memeriksa apakah list dalam keadaan penuh atau tid mengembalikan nilai 1 jika list penuh, mengembalikan 0 j belum penuh isempty(xyz) Memeriksa apakah list dalam keadaan kosong atau tid mengembalikan nilai 1 jika list kosong, mengembalikan 0 j tidak kosong operasi-operasi. Operasi yang disediakan dan termasuk didalamnya adalah error-handling (penanganan kesalahan) tergantung kebutuhan dan rancangan pemrogram. Sekali lagi, pengguna tidak perlu mengetahui bagaimana implementasi -nya. Bisa saja diimplementasikan dengan struktur data array, bisa juga diimplementasikan dengan struktur data linked list (pointer based). Pada gambar 5. digambarkan sebuah obyek yang berisi data dan mampu melakukan beberapa tugas. Keterangan : = Data (input) = operasi yang tidak mengubah daftar terurut = operasi yang meminta input untuk mengubah daftar terurut Gambar 5. Objek Daftar Terurut 26

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 WAHJUDI 3.b Representasi ADT Daftar Terurut menggunakan bahasa C Untuk menyimpan data didalam memori komputer, harus diatur penyimpanan data dalam memori. Pada C, bisa digunakan struct. Jumlah data pada daftar terurut dan ukuran daftar terurut berupa bilangan bulat, sehingga digunakan tipe data int. NIM berupa string dengan panjang misalnya 12 karakter, dimana disimpan berupa deretan tipe data char (array of char). Inilah data structure(struktur data). typedef struct tdata { char nim[12]; char nama[30]; ; typedef struct daftarurut { tdata *data; int max; int jdata; ; Untuk menyimpan 100 (seratus) data, maka max diberi nilai 100 (seratus), dan akan disediakan sebuah array yang terdiri dari elemen sejumlah max. Sedangkan jdata dimulai dari 0 (nol). Jdata akan bertambah otomatis setiap kali terjadi penambahan data. Jika dimasukkan sebuah James Dean, maka jdata akan bertambah 1 (satu). Ilustrasi representasi daftar terurut untuk contoh diatas adalah sebagai berikut : Data data[0] data[1]... data[99] 0101970001 James Dean [kosong] [kosong] [kosong] [kosong] [kosong] max 100 Jdata 1 3.c Implementasi menggunakan Array dalam bahasa C diimplementasikan dalam bahasa pemrograman C. Interface Penjelasan Operasi dan implementasi dalam bahasa C Operasi createlist(ukuran) Membentuk sebuah daftar dengan ukuran tertentu, misalkan ukuran insert(xyz,baru) daftarurut createlist(int ukuran){ daftarurut xyz; xyz.max = ukuran; xyz.data =(tdata *)malloc(sizeof(tdata) * xyz.max); xyz.jdata = 0; for(i=0;i<ukuran;i++) { xyz.data[i].nim[0] = '\0'; xyz.data[i].nama[0] ='\0'; printf("ukuran list = %d\n",xyz.max); printf("jumlah data dalam list = %d\n",xyz.jdata); return xyz; Menambah sebuah data baru pada daftar xyz, mengembalikan status 1 jika berhasil dan 0 jika gagal int insert(daftarurut *a, tdata baru){ int i,j; if (isempty(a)) { (*a).data[0] = baru; (*a).jdata++; if(!isfull(a)) { j = sizelist(*a); while (j >= 0 && strcmp(baru.nim,(*a).data[j-1].nim)<0) { (*a).data[j] = (*a).data[j-1]; j = j - 1; (*a).data[j] = baru; (*a).jdata++; else { printf("daftar sudah penuh ); printf(,jumlah data = %d",(*a).jdata); printf( maksimal data = %d\n",(*a).max); return 0; TIPE DATA ABSTRAK... 27

WAHJUDI ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 search(xyz,key) sizelist(xyz) Mencari sebuah data dengan nilai key pada daftar xyz, mengembalikan posisi record jika ditemukan, dan -1 jika tidak ditemukan int searchlist(daftarurut a, char key[]){ for(i=0;i<a.jdata;i++) { if(strcmp(a.data[i].nim, key)==0) return i; return -1; Menghitung jumlah data pada daftar xyz, mengembalikan jumlah data 3.d Contoh program lengkap menggunakan ADT Daftar Terurut dalam bahasa C printf(,jumlah data = %d,(*a). jdata); printf( maksimal data = %d\n,(*a). max); int maxlist(daftarurut a) { return 0; return a.max; int sizelist(daftarurut a) { int searchlist(daftarurut a, char key[]){ return a.jdata; if(strcmp(a.data[i].nim, key)==0) free((*xyz).data); return i; (*xyz).max=0; (*xyz).jdata=0; return -1; daftarurut createlist(int ukuran){ daftarurut xyz; xyz.max = ukuran; printf( [%d] %-12s %-30s\n,i,a. xyz.data = (tdata *) data[i].nim, a.data[i].nama); xyz.jdata = 0; typedef struct tdata { char nim[12]; xyz.data[i].nim[0] = \0 ; char nama[30]; xyz.data[i].nama[0] = \0 ; ; typedef struct daftarurut { printf( ukuran list = %d\n,xyz. tdata *data; max); int max; printf( jumlah data dalam list = int jdata; %d\n,xyz.jdata); ; return xyz; int main() { int insert(daftarurut *a, tdata baru){ int i,j; char cari[12]; if (isempty(a)) { daftarurut xyz; (*a).data[0] = baru; tdata b; xyz=createlist(4); printf( jumlah data pada list = if(!isfull(a)) { %d\n,sizelist(xyz)); j = sizelist(*a); printf( maximum jumlah data pada list = %d\n,maxlist(xyz)); nim,(*a).data[j-1].nim)<0) { (*a).data[j] = (*a).data[j-1]; while(scanf( %[^\n],b.nim)==1) { j = j - 1; gets(b.nama); (*a).data[j] = baru; if(hasilinsert==1) n\n ); else { else printf( Daftar sudah penuh ); 28

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009 WAHJUDI printlist(xyz); printf( masukkan kunci untuk dicari : ); printf( Data tidak ditemukan\n\n ); else getch(); DAFTAR PUSTAKA 1. Horowitz,E., Sahni,S. and Anderson-Freed,S.,(1993), Fundamentals of Data Structures in C, Computer Science 2. Ngoen, T.S., (2009), Algoritma dan Struktur Data, Mitra Wacana Media, Jakarta. 3. Stubbs, D.F., Webre, N.W.,(1985), Data Structures with Abstract Data Types and Pascal, Brooks/Cole Analysis in C, 2nd Edition,Addison Wesley. en.wikipedia.org/wiki/abstract_data_types IV. PENUTUP Pada pemrograman menggunakan Tipe data abstrak, terdapat 5 (lima) bagian yang sebaiknya dipahami : c) antarmuka(interface), d) representasi data, e) implementasi operasi. Pengguna perlu mengetahui bagian a,b dan c saja. Pemrogram harus mampu mengubah abstraksi data dan operasi menjadi representasi data dan implementasi sesuai dengan bahasa pemrograman yang akan digunakan. 29