Modul Praktikum Algoritma Dan Struktur Data
April 26, 2019 | Author: Ahmar Taufik Safaat | Category: N/A
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