Hari : Rabu Pertemuan : 4 Tanggal Praktikum : 28 November 2001 Shift : 4

dokumen-dokumen yang mirip
Hari : Rabu Pertemuan : 3 Tanggal Praktikum : Oktober 2001 Shift : 4

Hari : Rabu Pertemuan : 2 Tanggal Praktikum : Oktober 2001 Shift : 4

BAB XII OPERASI FILE

Pemrograman Terstruktur. Pemrosesan File Teks dan File Biner

PERTEMUAN VII FILE TEKS & FILE BINER

TREE STRUCTURE (Struktur Pohon)

MODUL PRAKTIKUM STRUKTUR DATA

Apakah Anda sering kesulitan untuk

BAB 4 KONDISI / PEMILIHAN

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

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

Modul V Pemrograman Bahasa C ( bagian II )

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

ALGORITMA DAN STRUKTUR DATA

Baca Tulis File. Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah:

PERTEMUAN XI OPERASI FILE

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

Struktur Program Bahasa C

UNIVERSITAS WIDYATAMA JURUSAN TEKNIK INFORMATIKA - FAKULTAS TEKNIK Jl. Cikutra No.204 A BAndung UJIAN TENGAH SEMESTER TA.

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

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

Bab 7 File 109 BAB 7 FILE TUJUAN PRAKTIKUM TEORI PENUNJANG. FILE *fopen( const char*nama_file, const char*mode);

Object Oriented Programming (OOP)

Pertemuan 11: OPERASI FILE dalam C

PRAKTIKUM 1. Untuk membuat program, prosedur yang harus dilewati adalah: 1. Menentukan logika jalannya program, sering disebut algoritma.

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

3. Struktur Perulangan dalam C++

Struct Lanjutan: Studi Kasus

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

KUM 6 IMPLEMENTASI BINARY TREE

BAB 2. FUNGSI INPUT OUTPUT

OPERASI FILE DASAR PEMROGRAMAN

PERTEMUAN XI OPERASI FILE

MODUL 3 PERCABANGAN A. TUJUAN

Algoritma dan Struktur Data. Ramos Somya

BAB VI BAHASA C Pendahuluan

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah: Perkalian Pembagian Sisa Pembagian (mod) Penjumlahan 6 2

INPUT DAN OUTPUT BAHASA C

PRAKTIKUM 6 PENGULANGAN PROSES 2

BAB VI. STATEMENT CONTROL

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

IT234 Algoritma dan Struktur Data. Tree

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Binary Search Tree (BST)

Achmad Solichin.

Bab 1 Pengantar Struktur Data

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

IT234 - Algoritma dan Struktur Data. Ramos Somya

6. TREE / BINARY TREE

Tree (Struktur Data) Nisa ul Hafidhoh, MT

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

BAHASA PEMROGRAMAN C LANGUAGE

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

IT234 - Algoritma dan Struktur Data. Ramos Somya

SATUAN ACARA PERKULIAHAN (SAP)

BAB IX TREE (POHON) ISTILAH DASAR

elemen Dasar Bahasa Pemrograman C

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Algoritma dan Pemrograman

IT234 - Algoritma dan Struktur Data. Ramos Somya

Tipe Data, Variabel, Input/Output

FILE INPUT/OUTPUT. Overview

File. Dalam bahasa pemrograman C, terdapat dua jenis stream: teks (ASCII) dan binari. Minggu ini, FILE dan stream jenis teks akan dibahas.

TUGAS PENDAHULUAN MODUL I PERKENALAN MIKU, COMPILER BAHASA C, DAN STANDARD INPUT-OUTPUT

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

Algoritma dan Struktur Data. Linear & Binary Search Tree

Sequential Search (Linear Search)

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Pohon Biner (Bagian 1)

BAB 12 MANIPULATION FILE

Tipe Data dan Operator

Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN

Praktikum 12 FILE. Gambar Struktur data dari file

Gambar 13.1 Ilustrasi proses algoritma sorting

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access

Modul Praktikum Algoritma dan Struktur Data

MODUL 5 PERULANGAN (LOOPING)

Looping : break, continue, nested loop

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan

JURUSAN SISTEM INFORMASI

MODUL 5 SUBPROGRAM / FUNGSI

Function. Contoh function 1 : // function example #include <stdio.h> int addition (int a, int b){ int r; r=a+b; return (r); }

Teknik Pemrograman Terstruktur 1

Membuat Binary Search Tree Menggunakan STL Vector C++

VARIABEL & TIPE DATA PEMROGRAMAN C++

Algoritma Pemrograman. Fery Updi,M.Kom

SOAL TUGAS STRUKTUR DATA

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XII FILE

PENGENALAN BAHASA C DAN C++

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

Praktikum Algoritma dan Struktur Data

Achmad Solichin.

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

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

PRAKTIKUM JUDUL PERULANGAN 7.2 TUJUAN

Konsep Pohon (Tree) Binary Tree Penyajian Tree dengan Array Penyajian Tree dengan Linked List Metode Traversal (Kunjungan Node pada Tree)

ALGORITMA DAN STRUKTUR DATA

Transkripsi:

Hari : Rabu Pertemuan : 4 Tanggal Praktikum : 28 November 2001 Shift : 4 Tujuan Instruksional Khusus Mahasiswa memahami penggunaan BST / AVL Tree Pokok Bahasan BST / AVL Materi Membuat program dengan menggunakan BST / AVL Tree Data dalam file diurutkan dengan Binary Search Tree (BST). BST adalah binary tree yang nilai di node kirinya selalu lebih kecil dari node yang di kanan. Sedangkan cara penampilan datanya ada tiga, yaitu secara preorder, inorder, dan postorder. Preorder menampilkan berurutan dimulai dari root, lalu bagian kiri, dan terakhir kanan. Inorder mulai dari kiri, root, lalu kanan. Postorder mulai dari kiri, lanjut ke kanan, dan terakhir root. Sintaks yang digunakan : FILE *file1 Menentukan handle yang akan digunakan dalam program. Di sini hanya diperlukan satu handle, yaitu file1, karena operasi-operasi yang ada tidak memerlukan handle tambahan. fread (void *ptr, size_t size, size_t n, FILE *stream) Perintah ini digunakan untuk membaca data dari FILE *stream. n menunjukkan banyaknya data yg dibaca per kali baca. Size menunjukkan sepanjang apa data yang akan kita baca. Sedangkan *ptr menunjuk pada bagian data yang dibaca. fopen (const char *filename, const char *mode) Sebelum data dalam suatu file bisa diakses, maka filenya harus dibuka terlebih dahulu dengan sintaks fopen. *filename menunjukkan nama file yang akan

dibuka, sedangkan mode menunjukkan status file yang dibuka tsb. Mode yang dipakai dalam program ini adalah r (read), rt (read text ). fclose(file *stream) Untuk menutup FILE *stream yang sebelumnya telah dibuka. fseek (FILE *stream, long offset, int whence) Fungsi ini berguna untuk mencari data kemudian memindahkan posisi kursor ke alamat tertentu. FILE *stream adalah file tempat data yang hendak dicari. Long offset adalah alamat (offset) tempat data tsb berada. Sedangkan int whence adalah tempat awal pencarian, biasanya digunakaan SEEK_SET yang berarti dari awal file. Khusus pada program ini ada mode lain yaitu SEEK_CUR, yaitu pencarian dilakukan dari posisi sekarang. ftell(file *stream) Untuk mencari/mendapatkan alamat offset dari suatu data dalam file *stream. fscanf (FILE *stream, const char *format [, address,...]) Untuk membaca data dari FILE *stream disertai dengan jenis data dan nama data yang hendak diambil.

Hari : Rabu Pertemuan : 4 Tanggal Praktikum : 28 November 2001 Shift : 4 Pembahasan Soal ALGORITMA Pilih library yang ingin dipakai (di sini yang dipakai adalah stdio.h, conio.h, stdlib.h, dan string.h). Tetapkan pula file handle yang akan digunakan. Pada program ini dipakai satu file handle yaitu file1. Buat variabel yang akan dipakai dengan struct. Di sini dipakai dua buah struct, yaitu untuk BST dan untuk data.data. Deklarasikan pula modul yang akan dibuat. File data sudah disiapkan sebelumnya (dalam program ini dipakai data.txt ) Program akan berlanjut ke main program. Main program hanya memanggil modul proses. Modul proses akan mulai dengan membersihkan layar dan menjalankan modul insert. Setelah itu akan menampilkan menu utama, di mana user harus memilih. Jika pilihan user tidak sesuai menu, maka menu utama akan tampil terus. Program akan keluar dan kembali ke prompt jika user memilih exit (4). Algoritma Insert Deklarasikan variabel yang akan digunakan. Di sini dipakai kode yang nantinya dipakai untuk menampung data. Buka file1 dengan mode r (read). Lalu siapkan tempat untuk curr. Curr kiri dan curr kanan diassign dengan nilai nol. Baca kode dari file1 dan lakukan hal-hal berikut selama semua kode belum dibaca habis : cek apakah root sama dengan NULL.

Jika ya copy kode ke curr kode, lalu assign NULL ke root kiri dan kanan. Jika tidak, maka jadikan temp sama dengan root, bentuk tempat baru untuk curr, copy kode ke curr kode, cari alamat curr, dan bandingkan apakah temp kode lebih besar atau kecil daripada curr kode. Jika lebih besar, masuk ke modul left, selain itu ke modul right dengan temp sebagai transfer parameter. Pindahkan posisi kursor sebanyak 46 dimulai dari awal file. Terakhir, tutup kembali file1. Algoritma right Jika temp kanan bernilai NULL, assign nol ke curr kiri, curr kanan, dan temp kanan. Jika tidak bernilai NULL, temp dibuat sama dengan temp kanan, bandingkan antara temp kode dengan curr kode. Jika temp kode lebih besar maka masuk ke modul left, selain itu ke right dengan temp sebagai transfer parameter. Jadi ada kemungkinan terjadi rekursif. Algoritma left Jika temp kiri bernilai NULL, assign NULL ke curr kiri, curr kanan, dan temp kiri. Selain itu, jadikan nilai temp kiri sebagai nilai temp. Bandingkan apakah temp kode lebih besar atau lebih kecil daripada curr kode. Jika lebih besar jalankan modul left lagi (rekursif), jika tidak jalankan modul right. Algoritma cetak_data Buka file1 dengan mode rt (read text). Cari letak data sesuai alamat dari temp, pencarian data dimulai dari awal file. Baca kode dari data, nama dari data, jabatan dari data, serta umur dari data. Cetak kesemua data yang telah dibaca di atas baris ini. Tutup kembali file1. Algoritma prefix

Cek apakah temp bernilai NULL atau tidak. (Ingat, untuk prefix, urutan pertama adalah root,.disusul dengan kiri, dan terakhir kanan). Jika tidak panggil modul cetak_data dengan temp sebagai transfer parameter, lalu panggil modul prefix dengan temp kiri sebagai parameter, lalu prefix dengan temp kanan sebagai parameter. Prefix dengan temp kiri akan dijalankan dahulu sampai semua habis, lalu baru jalankan prefix dengan temp kanan. Algoritma infix Cek apakah temp NULL atau tidak. Jika tidak, panggil modul infix dengan temp kiri sebagai parameter (Ingat, untuk infix, urutan pertama adalah kiri,.disusul dengan root, dan terakhir kanan). Setelah selesai, panggil cetak_data dengan temp sebagai parameter. Setelah cetak_data dijalankan, lakukan rekursif kembali dengan temp kanan sebagai parameter. Algoritma postfix Cek apakah temp bernilai NULL atau tidak. Jika tidak, jalankan modul postfix dengan temp kiri sebagai parameter. (Ingat, untuk postfix, urutan pertama adalah kiri,.disusul dengan kanan, dan terakhir root). Setelah temp kiri tidak ada lagi, jalankan fungsi yang sama dengan temp kanan sebagai parameter. Setelah selesai, jalankan cetak_data dengan temp sebagai parameter.. CODING #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> FILE *file1;

struct BST char kode[5]; long alamat; struct BST*kanan, *kiri; *root=null, *curr, *temp; struct char kode[6]; char nama[21]; char jabatan[21]; int umur; data; void left(struct BST*temp); void right(struct BST*temp); void right(struct BST*temp) if(temp->kanan==null) curr->kiri=null; curr->kanan=null; temp->kanan=curr; else temp=temp->kanan; if(strcmp(temp->kode, curr->kode)<0) right(temp); if(strcmp(temp->kode, curr->kode)>0) left(temp); void left(struct BST*temp) if(temp->kiri==null) curr->kiri=null; curr->kanan=null; temp->kiri=curr; else temp=temp->kiri; if(strcmp(temp->kode, curr->kode)<0) right(temp); if(strcmp(temp->kode, curr->kode)>0) left(temp); void insert() char kode[5]; fflush(stdin);

clrscr(); file1=fopen("data.txt", "r"); curr=(struct BST*)malloc(sizeof(struct BST)); curr->kiri=null; curr->kanan=null; while(fread(kode, 5, 1, file1)!=null) if(root==null) strcpy(curr->kode, kode); curr->alamat=0; root=curr; root->kiri=null; root->kanan=null; else temp=root; curr=(struct BST*)malloc(sizeof(struct BST)); strcpy(curr->kode, kode); curr->alamat=ftell(file1)-5; if(strcmp(temp->kode, curr->kode)<0) right(root); if(strcmp(temp->kode, curr->kode)>0) left(root); fseek(file1, 46, SEEK_CUR); fclose(file1); void cetak_data(struct BST *temp) file1=fopen("data.txt", "rt"); fseek(file1, temp->alamat, SEEK_SET); fread(data.kode, 5, 1, file1); fread(data.nama, 20, 1, file1); fread(data.jabatan, 20, 1, file1); fscanf(file1,"%d", &data.umur); printf("\n%s%s%s%d", data.kode, data.nama, data.jabatan, data.umur); fclose(file1); void prefix(struct BST* temp) if(temp!=null) cetak_data(temp); prefix(temp->kiri); prefix(temp->kanan); getch(); void infix(struct BST* temp) if(temp!=null) infix(temp->kiri);

cetak_data(temp); infix(temp->kanan); getch(); void postfix(struct BST* temp) if(temp!=null) postfix(temp->kiri); postfix(temp->kanan); cetak_data(temp); getch(); void display() clrscr(); printf("1. Show Prefix"); printf("\n2. Show Infix"); printf("\n3. Show Postfix"); printf("\n4. Exit"); printf("\npilihan Anda : "); void proses() char a; insert(); do display(); a=getch(); switch (a) case '1' : prefix(root); break; case '2' : infix(root); break; case '3' : postfix(root); break; case '4' : break; default : display();

while(a!='4'); void main() proses();