Modul Praktikum Algoritma Dan Struktur Data

April 26, 2019 | Author: Ahmar Taufik Safaat | Category: N/A
Share Embed Donate


Short Description

Modul ini digunakan untuk mata kuliah Praktikum Algoritma Dan Struktur Data di jurusan Teknik Informatika...

Description

LAPORAN PRAKTIKUM ALGORITMA ALGORITMA DAN DAN STRUKTUR STRUKTUR DATA DATA

Semester II Tahun Akademik 2013/2014

Oleh: Nama

: Ahmar Taufik Safaat

NPM

: 137006230

LABORATORIUM INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS FAKULTAS TEKNIK TEKNIK UNIVERSIT UNIVERSITAS AS NEGERI NEGERI SILIWANGI SILIWANGI TASIKMALAYA 2014

KATA PENGANTAR

Puji dan dan syuk syukur ur penyusun penyusun panjatka panjatkan n ke hadirat hadirat Allah SWT karena karena atas atas berkat berkat rahmat rahmat dan karun karunia-Ny ia-Nyaa penyusun penyusun dapat dapat menyelesa menyelesaikan ikan praktikum praktikum serta serta laporan laporan akhir akhir mata kuliah kuliah Algoritma Algoritma dan Struktur Struktur Data. Data. Adapun isi dari laporan akhir ini adalah kumpulan dari setiap laporan mingguan selama praktikum berlangsung. Laporan ini merupakan syarat untuk  dapat dapat mengikuti mengikuti ujian praktikum. praktikum. Tak lupa lupa penyu penyusun sun ucapka ucapkan n banya banyak k terim terimaka akasih sih kepad kepadaa Dosen Dosen beserta beserta staf  staf  penga pengajar jar mata kuli kuliah ah Algori Algoritma tma dan dan Strukt Struktur ur Data Data yang yang selal selalu u membimb membimbing ing dan dan mengajari penyusun dalam melaksanakan melaksanakan praktikum dan dan dalam menyusun laporan ini. ini. Ser Serta ta sem semua ua piha pihak k yan yang g tela telah h ban bany yak memb memban antu tu peny penyus usun un dala dalam m hal hal penyusunan penyusunan laporan ini. Tentunya laporan laporan ini masih sangat jauh dari kesempurnaan. kesempurnaan. Oleh karena itu, kriti kritik k serta serta sar saran an yan yang g bers bersif ifat at memb memban angu gun n sang sangat at peny penyus usun un hara harapk pkan an untu untuk  k  menyempurnakan menyempurnakan laporan akhir ini. Atas perhatian dari semua pihak yang membantu penulisan ini saya ucapkan terimakas terimakasih. ih. Semog Semogaa laporan laporan akhir ini dapat dapat dapat dapat berman bermanfaat faat bagi penyusun penyusun dan bagi pembaca, Amiin.

Tasik Tasikmal malay aya, a, Juni Juni 2014 2014

Ahmar Taufik Safaat

137006230

i

DAFTAR ISI

KATA PENGANTA PENGANTAR R

i

DAFTAR ISI

ii

MODUL I  –  PENGANTAR BAHASA C

I.

Tu Tujuan Praktikum

I-1

II. Dasar Teori A. Pengantar Bahasa C

I-1

B. Struktur Program dalam Bahasa C

I-2

III. III. Hasil Hasil danPe danPemba mbaha hasan san Program 1-1  –  Program Hello

I-3

Program 1-2  –  Program Hello1

I-3

Program 1-3  –  Program Asign

I-4

Program 1-4  –  Program Asgdll

I-4

Program 1-5  –  Program Asign1

I-5

Program 1-6  –  Program Asign2

I-5

MODUL II  –  PEMROSESAN FILE

I.

Tujuan Praktikum

II-1

II. Dasar Teori A. Membuka File

II-1

B. Menutup File

II-2

C. Meletakkan Data ke Buffer

II-2

D. Manipulasi File

II-3

1. Mengecek Keberadaan File

II-3

2. M Meengganti Nama File

II-3

3. Menghapus File

II-4

III. Hasil dan Pembahasan

II-4

Program 2-1

II-4

Program 2-2

II-4

Program 2-3

II-5 ii

Program 2-4

II-6

Program 2-5

II-6

Stusi Kasus 2-1

II-7

Stusi Kasus 2-2

II-7

MODUL III  –  MESIN ABSTRAK

I.

Tujuan Praktikum

III-1

II. Dasar Teori A. Mesin Integer (Pencacah)

III-1

B. Mesin Karakter

III-2

III. III. Hasil Hasil dan dan Pemba Pembahas hasan an Program 3-1

III-4

Program 3-2

III-4

Studi Kasus 3-1

III-5

Studi Kasus 3-2

III-5

Studi Kasus 3-3

III-6

Studi Kasus 3-4

III-7

MODUL IV  –  REKURSIF

I.

Tujuan Praktikum

IV-1

II. Dasar Teori

IV-1

III. III. Hasil Hasil dan dan Pemba Pembahas hasan an Program 4-1

IV-2

Program 4-2

IV-2

Studi Kasus 4-1

IV-3

Studi Kasus 4-2

IV-4

MODUL ODUL V –  ABSTRACT DATA TYPE (ADT)

I.

Tu T ujuan Praktikum

V-1

II. Dasar Teori

V-1

III. Hasil dan Pembahasan

V-2

iii

Program 5-1

V-2

MODUL VI –  LINKED LIST

I.

Tujuan Praktikum

VI-1

II. Dasar Teori

VI-1

III. Hasil dan Pembahasan Program 6-1

VI-2

Studi Kasus 6-1

VI-3

Studi Kasus 6-2

VI-6

Studi Kasus 6-3

VI-8

Studi Kasus 6-5

VI-8

Studi Kasus 6-6

VI-9

MODUL VII  –  STACK

I.

Tujuan Praktikum

VII-1

II. Dasar Teori

VII-1

III. Hasil dan Pembahasan Program 7-1

VII-2

Studi Kasus 7-1

VII-5

MODUL VIII –  QUEUE

I.

Tujuan Praktikum

VIII-1

II. Dasar Teori

VIII-1

III. Hasil dan Pembahasan Program 8-1

VIII-3

Studi Kasus 8-1

VIII-5

Studi Kasus 8-2

VIII-8

MODUL IX –  TREE

I.

Tujuan Praktikum

IX-1

II. Dasar Teori

IX-1

iv

III. Hasil dan Pembahasan Program 9-1

IX-6

MODUL X –  GRAPH

I.

Tujuan Praktikum

X-1

II. Dasar Teori

X-1

III. Hasil dan Pembahasan Program 10-1

X-3

MODUL XI  –  KESIMPULAN DAN SARAN

I.

Kesimpulan

XI-1

II. Saran

XI-1

DAFTAR PUSTAKA

1

LAMPIRAN

2

v

DAFTAR PUSTAKA

1. Bryon, Goffried. Programming with PASCAL 1986. New York: Schaum Series 2. Inggriani Liem. Dasar Pemrograman (Bagian Pemrograman Prosedural). April 2007. Bandung: STEI  –  ITB 3. Munir, Rinaldi. 2012. Algoritma dan Pemrograman 2. Bandung : Informatika 4. Pranata, Antony. 2005. Algoritma dan Pemrograman. Yogyakarta : Graha Ilmu 5. Santosa, Insap. Dasar-dasar Pemrograman Pascal Teori dan Program Terapan. Yogyakarta: Andi Offset 6. Wahid, Fathul. 2004. Dasar-dasar Algoritma dan Pemrograman. Yogyakarta: Andi Offset 7. Teknik Informatika. 2013. Panduan Praktikum Algoritma dan Pemrograman. Tasikmalaya : Fakultas Teknik UNSIL

1

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS SILIWANGI

LEMBAR ASISTENSI PRAKTIKUM

Nama

: Ahmar Taufik Safaat

NPM

: 137006230

Kelompok

: 11

Nama Praktikum

: Algoritma dan Struktur Data

Tahun Akademik

: 2013/2014

Asisten Dosen

: Erna Haerani

No.

Tanggal

Hasil Pemeriksaan

Perbaikan yang perlu

ACC

dilakukan

(Paraf Asisten)

Tasikmalaya, Juni 2014 Dosen Pembina

Heni Sulastri, ST

2

MODUL I  –  PENGANTAR BAHASA C I.

Tujuan Praktikum

Praktikan diharapkan dapat: 1. Mengenal bahasa C dan struktur program pada bahasa C 2. Mengetahui dan memahami penggunaan komponen-komponen dasar pada bahasa C 3. Menggunakan perintah dasar penulisan dalam membuat program dengan bahasa C

II. Dasar Teori A. Pengantar Bahasa C

Bahasa C dikembangkan oleh Dennis M. Ritchie dan Brian W. Kernighan pada awal tahun 1970. Bahasa C berkembang di lingkungan UNIX (± 90% sistem operasi UNIX ditulis dalam bahasa C). Standar yang ada: •

Definisi Kernighan dan Ritchie (K&R);



ANSI-C (X-3.159-1989-);



Definisi AT&T (untuk superset C, C++). Versi pada PC misalnya:



Lattice C;



Microsoft C/ Microsoft QuickC;



Turbo C/Borland C++; Pada tahun 1986, dikembangkan superset C (kompatibel dengan C, namun

dilengkapi dengan kemampuan pemrograman berorientasi objek) oleh Bjarne Stroustrup [Stroustrup-86], yaitu bahasa C++ (C with Class). Catatan:

Ringkasan ini memakai standar ANSI C. Contoh-contoh sedapat mungkin dipilih bebas dari implementasi kompilator tertentu. Jika ada contoh yang spesifik  terhadap implementasi, implementasi kompilator yang dipakai akan disebutkan.

I-1

Aplikasi dalam bahasa C

Bahasa C banyak dipakai untuk: 1. Membuat sistem operasi dan program-program sistem, 2. Pemrograman yang “dekat” ke perangkat keras (misalnya untuk kontrol peralatan), 3. Membuat tool kit, 4. Menulis program aplikasi (misalnya dBase, WordStar, Lotus 123).

Kelebihan bahasa C, sehingga terpilih untuk aplikasi-aplikasi tersebut adalah kemampuannya untuk membuat kode yang compact, efisien tanpa mengorbankan readability (beda dengan bahasa assembly yang efisien namun sudah dibaca, atau bahasa tingkat tinggi lain yang enak dibaca namun tidak efisien). Walaupun tak  dapat diingkari bahwa program dalam bahasa C lebih sulit dibaca (karena compact) dibandingkan dengan bahasa tingkat tinggi yang lain.

B. Struktur Program dalam Bahasa C

Berikut ini adalah struktur sebuah program utama dalam bahasa C. Contoh lengkap dapat dilihat pada contoh program kecil.  /* Nama File */   /* Identitas perancang/penulis */   /* Deskripsi ringkas dari program */ 

main([int argc, char** argv[, char** envp]]) {  /* Keterangan program */   /* KAMUS */   /* Algoritma/deretan intruksi yang executable */  Return(); }

I-2

III. Hasil dan Pembahasan

Program 1.1 – Program Hello

Program ini bertujuan untuk menampilkan kata “hello” ke layar (output). Adapun output di atas dibarengi dengan pesan dan beberapa rekomendasi dari aplikasi bahasa C, dan menunjukkan bahwa drive C digunakan untuk direktori penyimpanan file dari bahasa C.

Program 1.2 – Program Hello1

I-3

Program hello1 ini sama dengan program hello (program yang pertama) yakni  bertujuan untuk menuliskan kata “hello” ke layar output. Tapi, sintaksnya lebih lengkap.

Program 1.3 – Program Asign

Program Asign ini bertujuan untuk mendeklarasikan variabel i dengan tipe data integer ke dalam program utama. Setelah itu, berfungsi untuk menuliskan “hello” dan “ini nilai i : [nilai i = 5]”. Setelah itu, dikembalikan ke dalam nilai 0 setelah program selesai dirunning.

Program 1.4 – Program Asgdll

Program Asgdll bertujuan untuk mendefinisikan “f” dan “fll” sebagai variabel dengan tipe data yang berbeda ke dalam program. Program ini tidak  memberikan perintah apa pun untuk menuliskan data ke layar output.

I-4

Program 1.5 – Program Asign1

Program Asign1 bertujuan untuk menuliskan nilai i dan ii dengan tipe data yang berbeda. Selain itu, program ini bertujuan untuk menampilkan nilai terkecil dan terbesar dari tipe data integer, dan juga nilai terpanjang dari integer. Datanya sudah terdapat pada program. Jadi, kita hanya memanggilnya.

Program 1.6 – Program Asign2

I-5

Program ini berfungsi untuk menginisialisasi karakter dengan karakter, karakter dengan integer (bilangan bulat), dan juga menuliskan beberapa data ke layar output.

Resume:

Menunjukkan bagian sintaks dalam program bahasa C,  /*(Kalimat/Nama)*/  atau bisa juga hanya berupa komentar/judul. Bagian ini tidak akan berpengaruh pada program utama. void main( ) { ... } int main( ) { ... }

Struktur

utama

dalam

pemrograman

bahasa

C,

menandakan bahwa pemrograman dimulai. Sintaks ini wajib ada dalam setiap program. Berfungsi untuk menampilkan/menuliskan kata/kalimat

 printf(“... \ n”);

ke layar output. \n berfungsi untuk meletakkan kursor di baris berikutnya (garis baru).

return 0; int i; short ks; long kl; char c;

Mengembalikan ke nilai 0 stelah program dijalankan. Mendeklarasikan “ i, ks, kl, c ” sebagai variabel dengan tipe data yang berbeda-beda. Pemanggilan data dengan tipe data yang khsusus. D

%d, %ld, %c, %f 

untuk double (bilangan bulat), ld untuk long double (bilangan bulat yang lebih besar), c untuk character

I-6

(huruf/angka/karakter), dan f untuk float (bilangan desimal). #include

Sintaks untuk memasukkan perintah-perintah khusus.

INT_MIN,

Tipe data yang sudah baku, dan nilainya sudah

INT_MAX,

terdefinisikan dalam program bahasa C. Data yang

LONG_MAX  \t\t

dimunculkan pun akan otomatis. Berfungsi untuk tab (memberikan jarak).

I.

I-7

MODUL II –  PEMROSESAN FILE I.

Tujuan Praktikum

Praktikan diharapkan dapat: 1. Mengenal pemrosesan file pada bahasa C 2. Melakukan proses input/output data dengan bahasa C 3. Mengimplementasikan pemrosesan file untuk melakukan perekaman data pada bahasa C

II. Dasar Teori

Seringkali untuk program-program aplikasi sistem informasi, data perlu disimpan secara permanen utnu keperluan lebih lanjut. Data dapat disimpan di eksternal memory seperti di disk, floppy disk, dan UFD ataupun di internal memory sendiri pada penyimpanan internal memory mempunyai sifat volatile dan relatif lebih kecil dibandingkan dengan external memory. Pada bab ini akan membahas tentang operasi input/output file dan manipulasi file. Operasi i/o file melibatkan pembacaan dari file atau perekaman ke file. Manipulasi file melibatkan operasi pengecekan keberadaan file di disk, mengganti nama, menghapus file, dan lain-lain.

A. Membuka File

Suatu file di disk harus dibuka sebelum digunakan dapat dilakukan dengan fungsi pustaka fopen( ). Hasil dari pembukaan file ini akan didapatkan suatu nilai pointer dengan tipe FILE, berikut ini bentuk operasi buka file: FILE *fopen ( const char*nama_file, const char*mode );

Pada operasi di atas nama_file dan mode ditentukan oleh pembuat program sendiri. Berikut ini contoh mode yang digunakan di bahasa C. Tabel 2.1  –  Mode dalam Bahasa C Mode

Arti

“r”

Membuka file yang telah ada untuk dibaca. Jika file belum ada, pembuatan file tidak akan berhasil dan fungsi fopen akan bernilai

II-1

NULL. “w”

Membuat file baru untuk ditulis. Jika file telah ada maka file lama akan dihapus.

“a”

Membuka file yang telah ada untuk ditambah dengan data yang baru yang akan diletakkan di akhir file. Jika file belum ada akan dibuat file baru.

“r+”

Sama dengan “r” tetapi selain file dapat dibaca juga dapat ditulis.

“w+”

Sama dengan “w” tetapi selain file dapat ditulis juga dapat dibaca.

“a+”

Sama dengan “a” tetapi selain file dapat ditulis file juga dapat dibaca.

B. Menutup File

Menutup file umumnya dilakukan untuk tiga tujuan yaitu pertama menutup semua file yang masih terbuka sebelum program berakhir, kedua menutup file tertentu karena tidak diperlukan lagi dan ketiga menutup karena ingin membuka file lain. Fungsi pustaka yang digunakan untuk sebuah file adalah: int fclose(FILE * pointer-file);

C. Meletakkan Data ke Buffer

Bahasa C membedakan lima macam bentuk data untuk diletakkan di penyangga (buffer), yaitu karakter, integer, string, terformat, dan blok data. Untuk  masing-masing data ini fugnsi pustaka yang digunakan berbeda yaitu sebagai berikut: Tabel 2.2  –  Fungsi Pustaka Fungsi Pustaka fputc( )

Meletakkan sebuah nilai karakter ke buffer untuk direkam ke file.

fgetc( )

Membaca sebuah nilai karakter dari file untuk diletakkan di buffer.

putw( )

Meletakkan sebuah nilai integer ke buffer untuk direkam ke file.

getw( )

Membaca sebuah nilai integer dari file untuk diletakkan di buffer.

fputs( )

Meletakkan sebuah nilai string ke buffer untuk direkam ke file.

fgets( )

Membaca sebuah nilai string dari file untuk diletakkan di buffer.

Deskripsi

II-2

fprintf( )

Meletakkan sebuah data terformat di buffer untuk direkam ke file.

fscanf( )

Membaca sebuah data terformat dari file untuk diletakkan di buffer.

fwrite( )

Meletakkan sebuah blok data ke buffer untuk direkam ke file.

fread( )

Membaca sebuah struktur data dari file untuk diletakkan di buffer.

D. Manipulasi File

Bagian ini akan membahas bagian memanipulasi suatu file yang tidak  melibatkan proses I/O seperti: 1. Mengecek Keberadaan File

Seringkali diperlukan jika akan membuat suatu file baru untuk mengetahui file itu sudah ada atau tidak. Fungsi pustakanya adalah: int access ( const char * path, int amode);

const char * path menunjukkan letak file itu berada. Amode berbeda dengan mode operasi file. Di sini terdapat beberapa amode yaitu: •

Amode 0  hanya akan memeriksa keberadaan file di disk.



Amode 2  menunjukkan pemeriksaan apakah file dapat ditulis.



Amode 4  menunjukkan pemeriksaan apakah file dapat dibaca.



Amode 6  menunjukkan pemeriksaan apakah file dapat dibaca dan ditulis.

Fungsi pustaka access terdapat dalam prototype io.h, contoh penggalan programnya adalah: if((access( “c:\coba.txt”,0))= =0) { printf( “file sudah ada” );

}

Pada contoh penggalan program di atas dilakukan pengecekan apakah file yang dimaksud ada atau tidak, jika “ya” aka n dicetak nilai string yang ada dimana kondisinya bernilai 0. 2. Mengganti Nama File

Fungsi rename( ) digunakan untuk mengganti nama suatu file yang sudah ada di disk. Bentuk umumnya: int rename( const char * nama_lama, const char * nama_baru );

II-3

3. Menghapus File

Fungsi menghapus file dapat dilakukan dengan unlink( ). Bentuk lengkapnya adalah: int unlink( const char * path );

Selanjutnya semua fungsi yang telah diberikan dapat dikembangkan untuk  membuat suatu program bahasa C dalam operasi file yang lebih lengkap dan utuh.

III. Hasil dan Pembahasan

Program 2-1 #include main() { FILE * PF; PF = fopen( "coba.txt" , "r" ); if(PF==NULL) {printf( "terdapat kesalahan, file tidak dapat dibuka atau tak ada" );} else {printf( "file dapat dibuka" );} return 0; }

Program 2-1 ini bertujuan untuk membaca file dengan nama file “coba.txt”. Jika saat pembukaan file bernilai NULL (kosong) atau file belum ada maka akan ditampilkan di layar “terdapat kesalahan, file tidak dapat dibuka atau tak ada ” jika sudah ada maka maka akan ditampilkan “file dapat dibuka”. Di layar output ditampilkan pilihan yang pertama karena menggunakan fungsi “r” yang hanya berfungsi untuk membaca file yang sudah ada. Karena file belum ada, maka yang ditampilkan adalah yang pertama.

Program 2-2 #include main() { FILE *PF; PF = fopen( "coba.txt" , "r" ); if(PF==NULL) printf( "terdapat kesalahan, file tidak dapat dibuka atau

II-4

tak ada" ); else printf( "file dapat dibuka" ); return 0; if(fclose(PF)==EOF) printf( "tidak dapat menutup file" ); return 0; }

Program 2-2 ini merupakan tindak lanjut dari program 2-1. Setelah file dibuka biasanya file tidak digunakan lagi maka dilakukan penutupan file dengan fungsi pustaka fclose. Karena file belum ada, maka yang ditampilkan sama seperti program 2-1 yakni “terdapat kesalahan, file tidak dapat dibuka atau tak ada”.

Program 2-3 #include #include #include main() { FILE*PF; char C; if((PF=fopen("coba.txt","w"))==NULL) { printf("file tidak dapat dibuka"); exit(1); } while((C=getche())!=' \r') fputc(C,PF); fclose(PF); }

Program 2-3 bertujuan untuk membuat file baru yakni “coba.txt” untuk  ditulisi/diisi dengan fungsi “w”. Jika pembuatan file gagal atau bernilai NULL maka akan ditampilkan di layar “file tidak dapat dibuka”. Sedangkan jika berhasil dibuat, maka si user bisa mengetikkan kata atau data apa saja setelah program dirun. Data yang diinputkan oleh user akan disimpan di file “coba.txt”.

II-5

Program 2-4 #include #include #include main() { FILE*PF; char C; if((PF=fopen("coba.txt","r"))==NULL) { printf("file tidak dapat dibuka"); exit(1); } while((C=fgetc(PF))!=EOF) putchar(C); fclose(PF); }

Program 2-4 ini bertujuan untuk membaca file dari program 2-3 yakni file dengan nama “coba.txt”. Sehingga di layar outputan hanya ditampilkan data yang telah diinputkan oleh si user.

Program 2-5 //filedat.c //membaca dan menulis teks file //separator adalah blank //Data berupa string tidak boleh mengandung blank!!! #include int main () {//Kamus int n; char nama[21]; float persen; int retval; FILE *fileku; //Algoritma fileku = fopen ("filedat.txt","r"); retval = fscanf (fileku, "%d %s %f", &n, nama, &persen); while (retval != EOF) { printf("Data : %d %s %f \n", n, nama, persen); retval = fscanf (fileku, "%d %s %f", &n, nama, &persen); } printf ("\nbye..."); fclose (fileku);

II-6

return 0; }

Program 2-5 bertujuan untuk membaca file dengan nama “filedat.txt”. Karena file “filedat.txt” tidak ada atau gagal dibuat maka di layar output hanya ditampilkan tulisan “bye...”.

Studi Kasus 2-1 #include #include #include main() { FILE*PF; char C; if((PF=fopen("filedata.txt","w"))==NULL) { printf("file tidak dapat dibuka"); exit(1); } while((C=getche())!=' \r') fputc(C,PF); fclose(PF); }

Dalam studi kasus 2-1 ini hampir sama dengan program 2-3 yakni membuat file  baru dengan nama file “filedata.txt” kemudian diisi oleh user. Di sini user  mengisinya dengan data biodata probadinya.

Studi Kasus 2-2 #include #include #include main() { FILE*PF; char C; if((PF=fopen("filebiodata.dat","w"))==NULL) { printf("file tidak dapat dibuka"); exit(1); }

II-7

while((C=getche())!=' \n') fputc(C,PF); fclose(PF); } #include #include #include main() { FILE*PF; char C; if((PF=fopen("filebiodata.dat","r"))==NULL) { printf("file tidak dapat dibuka"); exit(1); } while((C=fgetc(PF))!=EOF) putchar(C); fclose(PF); }

Studi kasus 2-2 ini dibagi menjadi 2 bagian. Bagian pertama yaitu untuk  memasukkan data, kemudian yang kedua untuk menampilkan data yang telah dibuat oleh si user. Pada bagian pertama, dibuat file “filebiodata.dat” kemudian diisi dengan biodata teman sekelas user. Kemudian pada bagian kedua, data yang telah diinputkan tadi ditampilkan di layar output.

II.

II-8

MODUL III –  MESIN ABSTRAK I.

Tujuan Praktikum

Praktikan diharapkan dapat: 1. Mengenal mesin abstrak dalam program bahasa C 2. Memanfaatkan spesifikasi mesin abstrak untuk memecahkan masalah dalam bahasa C

II. Dasar Teori Mesin: mekanisme yang terdefinisi dan mengerti serta mampu untuk 

mengeksekusi aksi-aksi primitif yang terdefinisi untuk mesin tersebut. Mesin abstrak: mesin yang dianggap ada dan diasumsikan mampu

melakukan mekanisme yang didefinisikan untuk mesin tersebut. Mesin abstrak  memodelkan suatu semesta (universe) tertentu. Dalam pemrograman, mesin abstrak ini diciptakan pada tahap konseptual dan belum menjadi sesuatu yang riil. Perancang program seringkali harus mendefinisikan mesin-mesin abstrak untuk memecahkan masalah secara bertahap, sehingga pada akhirnya nanti seluruh primitif serta mekanisme dapat terdefinisi dengan baik. Setelah mesin abstrak ini terdefinisi dengan baik (termasuk fungsi dan prosedur yang terlibat), barulah kode-kode program dituliskan untuk  menerapkan sesuatu yang abstrak menjadi produk yang nyata (riil) yaitu yang disebut sebagai mesin riil.

A. Mesin Integer (Pencacah)

Merupakan sebuah mesin yang terdiri dari: 1. Satu buah tombol RESET 2. Satu buah tombol INC (singkatan dari increment yang berarti menambahkan) 3. Sebuah jendela yang menunjukkan angka integer yang sedang diingat, oleh karena itu angka yang sedang muncul di jendela disebut sebagai Current Integer (CI).

III-1

B. Mesin Karakter

Merupakan mesin abstrak yang di dalamnya terdiri dari beberapa komponen yaitu: 1. Pita yang berisi deretan karakter dan diakhiri dengan tanda titik ‘.’. 2. Pita yang hanya berisi tanda titik ‘.’ Akan disebut sebagai pita kososng. 3. Pita dalam mesin ini sebagai penggambaran dari array dengan tipe data char (karakter). Dalam lingkungan pemrograman dengan bahasa Pascal, tipe data ‘string’ dapat diperlakukan sama dengan dengan array dengan tipe data karakter. 4. Dua buah tombol yakni tombol START dan ADV (singkatan dari kata advance yang berarti memajukan). 5. Sebuah lampu EOP (End of Position). Lampu ini akan menyala jika tanda titik  ‘.’ sudah terbaca, artinya sudah berada pada posisi terakhir. Penggambaran lampu menyala adalah kondisi dimana status pada saat itu bernilai TRUE dan lampu padam adalah FALSE. 6. Sebuah “jendela“ yang ukurannya sebesar satu karakter saja. Hanya kara kter yang sedang berada di jendela disebut sebagai Current Character (CC) dan dapat dibaca sedangkan karakter lain tidak terlihat.

Studi Kasus Mesin Karakter: Palindrom

Palindrom adalah istilah yang digunakan untuk kata atau kalimat yang apabila dibaca dari depan ke belakang atau sebaliknya, memiliki arti yang sama. Contoh palindrom: KATAK KASUR RUSAK KASUR NABABAN RUSAK Untuk memeriksa apakah kata yang dimasukkan merupakan palindrom maka, dapat dibuat sebuah function yang memiliki tipe data boolean. Function ini akan mengembalikan

nilai

TRUE

jika

kata

termasuk

mengembalikan nilai FALSE untuk kondisi sebaliknya.

III-2

palindrom,

dan

akan

Algoritma Palindrom FUNCTION IsPalindrom (kt : string)

boolean

{akan

mengembalikan

palindrom} Kamus Data i, j : integer temp : string BEGIN temp = “ “ {mengisi temporer disingkat temp dengan kosong}

j = length(kt) {mengisi j dengan lebar kata} WHILE (j>0) DO {operasi konkatenasi} temp = temp + kt[j] j = j – 1 ENDWHILE if temp = kt THEN {membandingkan isi temporer dengan kt} return TRUE ELSE Return FALSE Endif ENDFUNCTION

Catatan: Operasi konkatenasi berfungsi untuk menggabungkan dua data bertipe string. Contoh: kata1 dan kata2 bertipe string. Bila kata1 berisi “algo” dan kata2  berisi “ritma” maka operasi kata1+kata2 akan menghasilkan kata “algoritma”.

III-3

III. Hasil dan Pembahasan

Program 3-1 #include #include #include "mesinkar.inc" //Menghitung banyaknya huruf dalam pita karakter int main() { START(); RESET(); while (!EOP) { INC(); ADVN(); } printf("Banyaknya huruf dalam pita = %d\n",ci); getche(); }

Sebelum ke program 3-1 ini, user membuat dulu file “boolean.h” dan kemudian membuat file “mesinkar.inc”. Setelah dibuat kemudian di header program ini diberikan  perintah #include “mesinkar.inc” agar file tersebut terbaca oleh program

ini.

Program

ini

bertujuan

untuk

menghitung

banyaknya

huruf/karakter dalam file mesinkar.inc, penghitungan dimulai dari karakter pertama sampai titik (.), jika tanda titik sudah dicapai maka program akan berhenti menghitung. Di layar output ditampilkan banyaknya huruf yang terdapat dalam mesinkar.inc sebanyak 553.

Program 3-2 #include #include #include "mesinkar.inc" //Menghitung banyaknya huruf A dalam pita karakter int main() { START(); RESET(); while (cc!='.') { if (cc=='A') { INC();} ADVN();} printf("Banyaknya huruf A dalam pita = %d\n",ci); getche(); }

III-4

Sama dengan program 3-1, program ini bertujuan untuk menghitung karakter dalam file mesinkar.inc, ditemukan 3 huruf ‘A’ dalam file tersebut.

Studi Kasus 3-1 #include #include #include "mesinkar.inc" //Menghitung banyaknya huruf i dalam pita karakter int main() { START(); RESET(); while (cc!='.') { if (cc=='i') { INC(); } ADVN(); } printf("hari ini hari libur.\n"); printf("Huruf vokal terbanyak yakni i = %d\n",ci); getche(); }

Pada studi kasus 3-1 ini, file mesinkar.inc kembali digunakan. Kalimat yang berada dalam file mesinkar.inc diganti dengan kalimat “hari ini hari libur.” Di layar output ditampilkan hruuf vokal terbanyak yakni i dengan jumlah karakter 5. Program ini sama dengan program 3-2.

Studi Kasus 3-2 #include #include #include void main() { char kata[50]; coutkata; cout
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF