51
Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 1 dari 44 IF-103 ALGORITMA DAN PEMROGRAMAN 2004 © All rights reserved. MODUL PRAKTIKUM

IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

  • Upload
    others

  • View
    35

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 1 dari 44

IF-103

ALGORITMA DAN PEMROGRAMAN

2004 © All rights reserved.

MODUL PRAKTIKUM

Page 2: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44

KATA PENGANTAR

Pada departemen Teknik Informatika dan Sistem Informasi, matakuliah IF-103 Algoritma dan Pemrograman memegang peranan yang sangat vital. Hal ini bukan saja hanya karena algoritam dan pemrograman merupakan bagian yang tidak terpisahkan pada disiplin ilmu system informasi dan keinformatikaan, namun juga karena matakuliah ini merupakan prasayarat untuk mengikuti perkuliahan IF-201 Struktur Data. Melihat begitu pentingnya matakuliah tersebut, maka dirasakan sangat perlu untuk menyediakan sebuah diktat yang berisikan modul-modul praktikum sepanjang perkuliahan berlangsung. Modul praktikum sudah dirancang sejak awal perkuliahan dan diberikan kepada peserta kuliah dengan tujuan agar para peserta kuliah bias mempersiapakan diri masing-masing jauh sebelum praktikum dimulai. Diktat Modul ini dirancang sedemikian rupa untuk memberikan pemahaman yang kokoh akan prinsip-prinsip dasar algotritma dan pemrograman. Latihan dimulai bab demi bab dan dipastikan memiliki kontinuitas yang dalam materi sehingga peserta kuliah pada akhir semester akan memiliki ilmu dan keahlian yang sempurna. adalah hasil kompilasi dari dua buku yang populer dan basis data. Dengan informasi yang terkini, serta penyajian yang baik diharapakan buku ini dijadikan diktat pada perkuliahan Desain dan Manajemen Basis Data. Banyak buku yang bisa dijadikan sumber penambah wawasan dalam memperlajari algoritma dan pemrograman. Diktat ini masih sangat jauh dari sempurna, dan masih banyak bagian-bagian yang belum dilengkapi. Setiap bagian akan diberikan seutuhnya pada saaat perkuliahan berlangsung, dan diharapkan diktat ini akan rampung di penghujug perkuliahan. Namun demikian bukan berarti diktat ini tidak berguna sama sekali, sebab banyak bagian yang bisa dipakai. Sebagai pelengkapnya diharapkan para peserta kuliah aktif menggali informasi dari sumber referenasi. Penulis menerima segala masukan dan kritik yang bersifat membangun. Akhir kata semoga diktat ini bisa membantu dalam memahami perkuliahan Desain dan Manajemen Basis Data. Selamat menggunakan.

ITHB, 2004

Ivan Michael Siregar

Page 3: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 3 dari 44

DAFTAR ISI

KATA PENGANTAR.................................................................................................... 2 DAFTAR ISI .................................................................................................................. 3 PRAKTIKUM 1 ............................................................................................................. 4 PRAKTIKUM 2 ............................................................................................................. 7 PRAKTIKUM 3 ........................................................................................................... 10 PRAKTIKUM 4 ........................................................................................................... 13 PRAKTIKUM 5 ........................................................................................................... 16 PRAKTIKUM 6 ........................................................................................................... 20 PRAKTIKUM 7 ........................................................................................................... 25 PRAKTIKUM 8 ........................................................................................................... 31 PRAKTIKUM 9 ........................................................................................................... 38 PRAKTIKUM 10 ......................................................................................................... 40 PRAKTIKUM 11 ......................................................................................................... 43

Page 4: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 4 dari 44

PRAKTIKUM 1

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1 : Program Hello Petunjuk Tulisakan potongan program di bawah ini pada editor Turbo Pascal. Simpanlah dengan nama file 0101XXXX.PAS (*================================================================= File : 0101XXXX.PAS Program : Hello Programmer : Ivan Michael Siregar Tanggal : 10 Sepetember 2003 Deskripsi : - Ini adalah program pertama saya - Hanya menuliskan pesan ke output (monitor) ===============================================================*) Program Hello; Uses crt; (* unit output monitor *) Begin (* Awal program utama *) Clrscr; (* Membersihkan layar tampilan *) Writeln(‘Hallo, selamat datang di praktikum IF-103’); Writeln(‘Selamat bekerja’); End. (* Akhir program utama *)

Kasus 2 : Program Pemakaian Internet Petunjuk Tulisakan potongan program di bawah ini pada editor Turbo Pascal. Simpanlah dengan nama file 0102XXXX.PAS (*================================================================= Program : 0102XXXX.PAS Programmer : Ivan Michael Siregar

Page 5: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 5 dari 44

Tanggal : 10 Sepetember 2003 Deskripsi : - Menggunakan variabel - Hanya menuliskan pesan ke output (monitor) =================================================================*) Program HelloNama; Uses crt; Const int_Biaya = 60; (* Biaya intenet per menit *) Var str_Nama : string; (* Menyimpan nama pengguna *) int_Durasi : integer; (* Menyimpan durasi pemakaian *) int_Total : integer; (* Menyimpan Total biaya *) Begin (* Awal program utama *) Clrscr; (* Membersihkan layar tampilan *) Write(‘Nama Anda : ‘); Readln(str_Nama); Write(‘Lama pemakaian internet [menit] : ‘); Readln(int_Durasi); int_Total := int_Durasi * int_Biaya; Writeln(‘=====================================’); Writeln(‘ Nama pelanggan : ‘, str_Nama); Writeln(‘ Lama pemakaian : ‘, int_Durasi); Writeln(‘ Biaya per menit : ‘, int_Biaya); Writeln(‘ Total pembayaran : Rp ‘, int_Total); Writeln; Writeln(‘Terimakasih’); Writeln(‘=====================================’); End. (* Akhir program utama *)

Kasus 3 : Program Toyota Soluna Petunjuk Simpanlah dengan nama file 0103XXXX.PAS Tidak perlu membuat algoritma. Tentukan sendiri constant dan variable Buatlah program dengan Turbo Pascal untuk menghitung konsumsi bensin sebuah mobil Toyota Soluna. Ikuti ketentuan berikut: Pemakaian 1 lt bensin untuk menempuh 20 km. Kecepatan rata-rata mobil 80 km/jam. Harga bensin Rp. 1800 / liter Input : Jumlah bensin yang dibeli dalam satuan liter Output : Harga pembelian, lama perjalanan

Page 6: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 6 dari 44

Kasus 4 : Program Menghitung Luas Lingkaran dan Persegi Petunjuk Implementasikan notasi algoritma berikut ke dalam bahasa Turbo Pascal Simpanlah dengan nama file 0104XXXX.PAS Tentukan sendiri constant dan variable Algoritma LuasLingkaranDanPersegi {menghitung luas lingkaran dan persegi luas lingkaran = π * r^2 dan luas persegi = panjang * lebar } DEKLARASI {nama konstanta} constant rl_PI : real = 3.1415 (* konstanta matematik π *) {nama variabel} int_Jejari : integer (* Jari-jari *) int_Panjang : integer (* Panjang persegi *) int_Lebar : integer (* Lebar persegi *) rl_LuasLingkaran : real (* Luas lingkaran *) rl_LuasPersegi : real (* Luas persegi *) DESKRIPSI read(int_Jejari) read(int_Panjang) read(int_Lebar) rl_LuasLingkaran ← PI * int_Jejari ^ 2 rl_LuasPersegi ← int_Panjang * int_Lebar write(rl_LuasLingkaran) write(rl_LuasPersegi)

Page 7: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 7 dari 44

PRAKTIKUM 2

T Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Program Matematik File 0201XXXX.PAS Pada kasus ini, praktikan akan diperkenalkan dengan fungsi-fungsi matematika built in. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut belum benar sacara sintax. Program Matematik Uses crt; Var int_bilangan : integer Begin Textcolor(25); Writeln(‘Masukkan sebuah nilai = ‘); Readln(int_bilangan); Writeln(‘Cosinus dari ‘,int_bilangan,’ =’, cos(int_bilangan):5:2); Writeln(‘Sinus dari ‘,int_bilangan,’ =’, sin(int_bilangan):5:2); Writeln(‘Tangen dari ‘,int_bilangan) Writeln(‘Kuadrat dari ‘,int_bilangan,’ =, SQR(int_bilangan):5:2); Writeln(‘Akar kuadrat dari ‘,int_bilangan,’ =’, SQRT(int_bilangan):5:2); Writeln(‘Log natural dari ‘,int_bilangan:5:2,’ =’, LN(int_bilangan):5:2); End.

Kasus 2: Program KonversiDetik File 0202XXXX.PAS Tulislah program untuk menampilkan jumlah hari, jam, menit, dan detik dari sebuah masukan bertipe longint berupa lamanya waktu dalam satuan detik. Contoh 100000 detik = 1 hari, 3 jam, 46 menit, 40 detik. Gunakan mod dan div. Kasus 3: Wujud Air File 0202XXXX.PAS Implementasikan algoritma berikut. Ingatlah untuk selalu memberikan header, dan komentar.

Page 8: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 8 dari 44

Algoritma WujudAir {Menerima masukan berupa suhu air, dan menuliskan pesan wujud air. Es(suhu < 0), cair (0 <= suhu < 100), uap (suhu >= 100) } DEKLARASI {nama variabel} pesan : string; suhu : integer; DESKRIPSI Read(suhu) if (suhu < 0) then Pesan ← ‘es’ else if (0 <= suhu < 100) then Pesan ← ‘cair’ Else {suhu >= 100} Pesan ← ‘uap’ Write(pesan)

Kasus 4: Bulan Integer dan Tahun Kabisat File 0203XXXX.PAS Buatlah program untuk menerima masukan bulan berupa bilangan integer [1..12] dan menulisakan nama bulan yang bersesuaian, dan tahun kemudian menuliskan kabisat atau bukan. Contoh: 5 2000 untuk bulan Mei dan Kabisat. Kasus 5: Indeks Nilai File 0205XXXX.PAS Buatlah sebuah program untuk menentukan indeks nilai seorang mahasiswa. Masukan berupa persentasi kehadiran dan NA. Bila persentasi kehadiran kurang dari 80 % maka indeks nilai tidak bisa ditampilkan, sebaliknya indeks nilai ditampilkan dengan kriteria berikut. Indeks A (NA >=80), B (70 <= NA < 80), C (55 <= NA < 70), D (45 <= NA < 55), E (NA <= 55). Berikan pesan-pesan yang interaktif. Kasus 6: TeleponSLJJ File 0206XXXX.PAS Buatlah program penggunakaan telepon SLJJ sehingga pengguna telepon akan mendapatkan diskon pada jam-jam tertentu sesuai dengan ketentuan:

Bayar 25 % : 23.01 – 06.00 Bayar 50 % : 06.01 – 07.00 Bayar 75 % : 07.01 – 08.00 Bayar 100 % : 08.01 – 09.00 Bayar 125 % : 09.01 – 16.00 Bayar 100 % : 16.01 – 18.00 Bayar 75% : 18.01 – 20.00 Bayar 50% : 20.01 – 23.00

Masukan berupa lama penggunaan dalam satuan detik, dan uang pembayaran. Setiap 10 detik dikenakan biaya normal Rp. 400,- Beban biaya hanya tergantung pada lama penggunaan dan tarif diskon, dan bukan pada jarak panggilan yang dituju. Keluaran berupa jumlah biaya pemakaian dan besar uang kembalian.

Page 9: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 9 dari 44

Kasus 7: Penampil Tujuh Segmen File 0207XXXX.PAS Buatlah sebuah program untuk menampilkan bilangan dalam format digital tujuh segmen untuk sebuah bilangan integer. Gunakan karakter ‘|’ dan ‘–‘ untuk menggambarkannya. Kasus 8: Persamaan Kuadrat File 0208XXXX.PAS Tulisakan program untuk menghitng akar-akar persamaan ax2 + bx + c = 0 Masukan untuk program ini berupa bilangan bulat untuk nilai a, b, dan c. Kasus 9: Kalkulator Sederhana File 0209XXXX.PAS Buatlah sebuah program kalkulator untuk melakukan operasi +,-,*,/ untuk dua buah bilangan. Hasil operasi tergantung pada operator yang digunakan. Gunakan case. Kasus 10: Menu Utama Buatlah sebuah program yang akan menggabungkan semua hasil pekerjaan anda dari praktikum yang terdahulu hingga sekarang. Buatalah sebuah menu utama seperti tampilan berikut. Gunakan case. ============================================== Selamat datang di Mesin Pintar Hello Warnet ITHB Toyota Soluna Lingkaran dan Persegi Matematik Konversi Detik Wujud Air Bulan Integer dan Tahun Kabisat Indeks Nilai Telepon SLJJ Penampilan Tujuh Segmen Persamaan Kuadrat Kalkulator Sederhana Keluar Anda dipersilahkan memilih menu [1-14] : _ ==============================================

Page 10: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 10 dari 44

PRAKTIKUM 3

T Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Program Matematik File 0301XXXX.PAS Di bawah ini adalah contoh program sederhana yang menghasilkan deret aritmatika dengan menggunakan loop. Ketikan contoh program di bawah ini dan jalankan. Program ContohPenggunaan ForToDo; Uses crt; Var Int_SukuAwal : integer; Int_Beda : integer; Int_banyak : integer; Int_Suku : integer; Begin Clrscr; Writeln(‘berikut ini adalah contoh 10 buah suku deret aritmatika’); Writeln; Sukuawal:=10; Suku:=sukuawal; Beda:=5; Banyak:=10; For no:=1 to banyak do Begin Writeln(“suku ke –‘,n,’=’,suku:10); Suku:=suku+beda; End; End.

Kasus 2: Pola bintang File 0302XXXX.PAS Tuliskan program yang menampilkan pola-pola bintang seperti berikut: * * * ** ** ** *** *** **** untuk n=4 untuk n=3 untuk n=2

Page 11: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 11 dari 44

masukan dari program ini adalah nilai n, dimana 1< n < 255. keluaran dari program ini adalah pola bintang yang diharapkan. Kasus 3: Maksimum dan Minimun File 0303XXXX.PAS Tuliskan program untuk mencari nilai maksimun dan minimum dari sekumpulan data yang dimasukkan pengguna. Masukan dari program ini adalah satu bilangan bulat yang menyatakan jumlah data(misalnya sebanyak N) serta bilangan real sejumlah N. keluaran dari program ini adalah nilai maksimum dan minimum dari masukan atas. Kasus 4: Ganjil atau Genap File 0304XXXX.PAS Buatlah program yang bisa menghitung faktorial sebuah bilangan bulat. Masukkannya adalah N(misalnya), keluarannya N!.(misalnya). Perhatikan nilai faktorialnya akan cepat sekali membesar. Kasus 5: Faktorial File 0305XXXX.PAS Buatlah program yang bisa menghitung faktorial sebuah bilangan bulat. Masukkannya adalah N(misalnya), keluarannya N!.(misalnya). Perhatikan nilai faktorialnya akan cepat sekali membesar. Kasus 6: Pangkat File 0306XXXX.PAS Buatlah program yang bisa menghitung pangkat dari sebuah bilangan bulat. Masukkannya adalah A(misalnya suatu bilangan bulat) dan B(misalnya suatu bilangan bulat utuk pangkatnya), keluarannya AB. Kasus 7: Segitiga Pascal File 0307XXXX.PAS Tuliskan program untuk menampilkan N segitiga pascal pertama. Sebagi contoh, jika pengguna memasukkan 5, program harus menampilkan segitiga pascal berikut: 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 masujan dari program ini adalah bilangan bulat N, dimana 1 < N < 100 keluaran dari program ini adalah Nsegitiga pascal pertama seperti terlihat diatas. Kasus 8: Segitiga Angka File 0308XXXX.PAS Buatlah program yang menyesusun angka – angka sebagai berikut: 1 2 1 3 2 1

Page 12: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 12 dari 44

4 3 2 1 5 4 3 2 1 masukkannya ialah 5, keluaranya seperti segitga angka diatas.

Kasus 9: Kombinasi File 0309XXXX.PAS Buatlah program yang dapat menghitung kombinasi. Sebagai contoh ialah aCb, a dan b ialah masukan berupa bilangan integer. Keluarannya ialah hasil dari kombinasinya. Kasus 10: Anak Ayam File 0310XXXX.PAS Buatlah program yang menghasilkan sejumlah anak ayam yang mati satu persatu. Contoh : 03 Anak Ayam mati satu tinggal 02 Anak Ayam 02 Anak Ayam mati satu tinggal 01 Anak Ayam 01 Anak Ayam mati satu, mati semua. Masukan dari program ini ialah sejumlah Anak Ayam(contoh diatas adalah 3).

Page 13: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 13 dari 44

PRAKTIKUM 4

T Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: While Do File 0401XXXX.PAS Pada kasus ini, praktikan akan diperkenalkan dengan skema perulangan while d0. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut belum benar sacara sintaks. Kenali kegunaan fungsi built in yang baru anda temukan. Program PerulanganEksekusi Uses crt; Var chr_Ulang : char bln_Ulang : boolean; Begin clrscr; bln_Ulang := True; while bln_Ulang do begin clrscr; Writeln('Haloooooooo....'); writeln('Mau coba lagi [Y/T] = '); readln(chr_Ulang); if Upcase(chr_Ulang) = 'Y' then begin bln_Ulang := True end else begin bln_Ulang : False; end; end; end.

Kasus 2: While Do File 0402XXXX.PAS

Page 14: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 14 dari 44

Tuliskan potongan program di bawah ini. Perhatikan bahwa program tersebut belum benar sacara sintaks. Program Uses crt; Var chr_Ulang : char bln_Ulang : boolean; Begin clrscr; int_j := 1; writeln('Masukkan bilangan ke ',int_j); readln(int_Bilangan); while int_Bilangan != 9999 begin int_j := int_j + 1; int_Total := int_Total + int_Bilangan; writeln('Masukkan bilangan ke ,int_j); readln(int_Bilangan); end writeln('Rataan = ',(int_Total/int_j):5:2); end;

Kasus 3: While Do File 0403XXXX.PAS Coba gabungkan kasus 1 dan kasus 3 menjadi sebuah potongan program yang lengkap. Kasus 4: Repeat Until File 0404XXXX.PAS Buatlah sebuah program sederhana untuk memeriksa login dan password seorang pengguna komputer. Praktikan menentukan sendiri login dan password yang valid, dan memilih skema perulangan yang paling baik. Kasus 5: Repeat Until File 0405XXXX.PAS Buatlah sebuah program sederhana untuk menuliskan N bilangan genap yang pertama dan menuliskan jumlah dan rata-ratanya. Contoh: 2 + 4 + 6 + 8 + 10 + 12 = 52 rata-rata :52 / 6 = 8.66 Kasus 6: Repeat Until File 0406XXXX.PAS Buatlah sebuah program sederhana untuk memberikan interface seperti di bawah ini, dan memastikan bahwa masukan hanya akan diproses bisa menu pilihan sesuai. Bila user telah berhasil masuk ke dalam sebuah menu, maka akan menampilkan pesan. Praktikan meniliskan pesan yang dipilih sendiri.

Page 15: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 15 dari 44

Menu Utama [1] Lingkaran [2] Bujursangkar [3] Segitiga [4] Trapesium [5] Keluar. Masukan pilihan anda [1..5] : _ Contoh: Pilihan = 2 Anda memilih bujursangkar Mau coba lagi [Y/T] Bila pilihan ‘Y’ maka kembali muncul tulisan ‘Anda memilih bujursangkar’ Bila pilihan ‘T’ maka kembali ke menu utama.

Page 16: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 16 dari 44

PRAKTIKUM 5

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Pemanggilan Fungsi File 0501XXXX.PAS Pada kasus ini, praktikan akan diperkenalkan dengan skema fungsi. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut belum benar sacara sintaks. Program PanggilFungsi; (*Program utama akan memanggil sebuah fungsi yang mencari nilai faktorial sebuah bilangan yang dibaca lewat keyboard *) Uses crt; var (*nama variabel*) lint_Bilangan : integer; rl_Hasil : real; (*nama fungsi*) (*============================================================*) function func_Fak(n:longint):longint; (* mengembalikan faktorial dari sebuah bilangan *) var lint_Total : longint; i : longint; begin (* awal fungsi *) lint_Total := 1; for i:=n downto 1 do begin lint_Total := lint_Total * i; end; func_Fak := lint_Total; end (* akhir function *) begin clrscr write('Masukan sebuah bilangan = ');

Page 17: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 17 dari 44

readln(lint_Bilangan);

rl_Hasil = func_Fak(lint_Bilangan);

write(rl_Hasil); readln; end;

Kasus 2: Memanggil Fungsi Berulang File 0502XXXX.PAS Anda akan melakukan seditkit modifikasi program pada kasus 1, sehingga program bisa mencari nilai kombinasi sesuai rumus nCp = n! / [(n-p)! * p!] Program Kombinasi; (*Program utama akan memanggil sebuah fungsi yang mencari nilai faktorial sebuah bilangan yang dibaca lewat keyboard. Fungsi akan dipanggil berulang-ulang untuk mencari nilai kombinasi *) Uses crt; var (*nama variabel*) lint_Bilangan : integer; rl_Hasil : real; (*nama fungsi*) (*============================================================*) function func_Fak(n:longint):longint; (* mengembalikan faktorial dari sebuah bilangan *) var lint_Total : longint; i : longint; begin (* awal fungsi *) lint_Total := 1; for i:=n downto 1 do begin lint_Total := lint_Total * i; end; func_Fak := lint_Total; end (* akhir function *) begin clrscr write('Masukan nilai n = '); readln(lint_n); write('Masukan nilai p = '); readln(lint_p); rl_Hasil:=func_Fak(lint_n)/(func_Fak(lint_n–lint_p)*func_Fak(lint_n – lint_p)) ; write(rl_Hasil); readln; end;

Page 18: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 18 dari 44

Kasus 3: Fungsi Memanggil Fungsi File 0503XXXX.PAS Anda akan melakukan sedikit modifikasi terhadap kasus 2, sehingga akan terdapat 2 buah fungsi yaitu fungsi func_Fak dan fungsi func_Kom. Program CobaFungsi; Uses crt; var (*nama variabel*) lint_Bilangan : integer; rl_Hasil : real; int_n, int_p : integer; (*nama fungsi*) function func_Fak(n:longint):longint; (*menghitung faktorial dari sebuah bilangan*) var lint_Total : longint; i :longint; begin lint_Total := 1; for i:=n downto 1 do begin lint_Total := lint_Total * i; end; func_Fak := lint_Total; end; function func_Kom(n,p:longint):real; (*mengembalikan kombinasi dari nCp*) var real_Total : real; i :longint; begin writeln('Hasil Faktorial (',n,') = ',func_Fak(n)); writeln('Hasil Faktorial (',n-p,') = ',func_Fak(n-p)); writeln('Hasil Faktorial (',p,') = ',func_Fak(p)); real_Total := func_Fak(n) / (func_Fak(n-p) * func_Fak(p)); end; begin clrscr; writeln('Masukkan nilai n = '); readln(int_n); writeln('Masukkan nilai p = '); readln(int_p); rl_Hasil := func_Kom(int_n,int_p); write(rl_Hasil); readln; end.

Page 19: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 19 dari 44

Kasus 4: Konversi Nilai ke Terbilang File 0504XXXX.PAS Tuliskan fungsi untuk mengkonversikan suatu nilai ke bentuk terbilangnya. Misalnya jika pengguna memasukkan 12345, fungsi ini mengembalikan ‘duabelas ribu tiga ratus empat puluh lima’. Fungsi ini menerima string yang pangjangnya antara 1 sampai dengan 15 karakter. Fungsi ini mengembalikan tipe string yang merupakan bentuk terbilang dari parameter. (batas bilangan 0 sampai 99.999(5 digit)) Kasus 5: Real To Integer File 0505XXXX.PAS Tuliskan fungsi untuk memindahkan bilangan real ke bilangan integer. Contoh bilangan real 12.3 dijadikan bilangan integer 12. (gunakan round). Kasus 6: Kuadran Titik File 0506XXXX.PAS Tuliskan fungsi untuk mengetahui sebuah nilai kuadran dari sebuah titik. Misalkan titik p(-1,-1), maka fungsi tersebut menghasilkan nilai III (harus bilangan romawi). Kasus 7: X Pangkat Y File 0507XXXX.PAS Tuliskan fungsi pangkat untuk memangkatkan bilangan integer Xy. Contoh bilangan 53 maka hasil dari fungsi tersebut adalah 125.

Page 20: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 20 dari 44

PRAKTIKUM 6

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Pemanggilan Prosedur File 0601XXXX.PAS Pada kasus ini, praktikan akan diperkenalkan dengan skema prosedur. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut mungkin belum benar sacara sintaks. Program PanggilProsedur_1; (*Program utama akan memanggil beberapa prosedur *) Uses crt; int_pil : integer; {nama procedure} {=========================================================} procedure proc_Garis(n : integer); {prosedur mencetak garis I.S : n terdefinisi F.S : Garis '=' tercetak pada perangkat output } var i : integer; begin for i:= 1 to n do begin write('='); end; writeln; end; {=========================================================} procedure proc_BarisBaru(n:integer); {membuat baris baru I.S : n terdefinisi dan mempunyai nilai F.S : baris baru tercetak sebanyak n } var i : integer;

Page 21: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 21 dari 44

begin for i:=1 to n do begin writeln; end; end; {=========================================================} procedure proc_Lingkaran; {mencari luas lingkaran I.S : sembarang F.S : menerima masukan jari-jari lingkaran, dan menghitung dan menuliskan luas lingkaran } var jari : integer; begin write('Masukkan Jari-jari : '); readln(jari); write('Luas Lingkaran adalah : ', 3.1415 * jari * jari); end; {=========================================================} procedure proc_Segitiga; {mencari luas segitia I.S : sembarang F.S : menerima masukan alas dan tinggi, dan menghitung dan menuliskan luas segitiga } var a,t : integer; begin write('Masukkan Alas : '); readln(a); write('Masukkan Tinggi : '); readln(t); write('Luas Segiti adalah : ', a * t / 2); end; {=========================================================} procedure proc_Persegi; { I.S : F.S : } var p,l : integer; {panjang dan lebar persegi} begin write('Masukkan Panjang : '); readln(l); write('Masukkan Lebar : '); readln(p); write('Luas Persegi adalah : ', p * l); end; {=========================================================} procedure proc_Menu;

Page 22: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 22 dari 44

{mencetak tampilan menu

I.S :

F.S : } begin writeln('| |'); writeln('| [1] Lingkaran |'); writeln('| [2] Persegi |'); writeln('| [3] Segitiga |'); writeln('| [4] Keluar |'); writeln('| |'); end; begin {begin of program utama} repeat clrscr; proc_Garis(32); proc_Menu; proc_Garis(32); proc_BarisBaru(1); write('Masukkan pilihan Praktikan [1..4] : '); read(int_pil); until int_pil in [1..4]; case int_pil of 1 : proc_Lingkaran; 2 : proc_Persegi; 3 : proc_Segitiga; 4 : exit; end; end. {end of program utama}

Kasus 2: Prosedur Memanggil Prosedur File 0602XXXX.PAS Praktikan akan melakukan seditkit modifikasi program pada kasus 1, sehingga ada prosedur yang akan memanggil prosedur. Simpanlah file 0601XXXX.PAS menjadi 0602XXXX.PAS, kemudian lakukan perubahan pada bagian procedure proc_Menu dan program utamanya saja, sehingga menjadi seperti di bawah ini: Program PanggilProsedur_2; (*Program utama akan memanggil prosedur yang menggunakan prosedur lainnya*) {bagian sebelumnya dihapus untuk mempersingkat modul} {=========================================================} procedure proc_Menu; {mencetak tampilan menu I.S : F.S : }

Page 23: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 23 dari 44

begin proc_Garis(32);

writeln('| |');

writeln('| [1] Lingkaran |'); writeln('| [2] Persegi |'); writeln('| [3] Segitiga |'); writeln('| [4] Keluar |'); writeln('| |'); proc_Garis(32); proc_BarisBaru(1); end; begin {begin of program utama} repeat clrscr; proc_Menu; write('Masukkan pilihan Praktikan [1..4] : '); read(int_pil); until int_pil in [1..4]; case int_pil of 1 : proc_Lingkaran; 2 : proc_Persegi; 3 : proc_Segitiga; 4 : exit; end; end. {end of program utama}

Kasus 3: Prosedur Memanggil Fungsi Yang Memanggil Fungsi File 0603XXXX.PAS Praktikan akan melakukan sedikit modifikasi terhadap kasus 2, sehingga akan terdapat 2 buah fungsi yaitu fungsi func_Fak dan fungsi func_Kom. Kemudian buatlah sebuah prosedur yang enerima masukan dua bilangan integer kemudian mencari kombinasinya dengan memanggail fungsi func_Kom. Prakitikan dapat melakukan copy-paste dari hasil praktikum 5. Ikuti skema yang diberikan pada bagian berikut: Program PanggilProsedur_3; (*Program utama akan memanggil prosedur yang menggunakan fungsi yang memanggil fungsi lainnya*) var int_pil : integer; {nama function} {=========================================================} function func_Fak(n:longint):longint; (*menghitung faktorial dari sebuah bilangan*) {=========================================================} function func_Kom(n,p:longint):real;

Page 24: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 24 dari 44

(*mengembalikan kombinasi dari nCp*) {nama procedure}

{=========================================================}

procedure proc_Garis(n : integer); {prosedur mencetak garis I.S : n terdefinisi F.S : Garis '=' tercetak pada perangkat output } {=========================================================} procedure proc_BarisBaru(n:integer); {membuat baris baru I.S : n terdefinisi dan mempunyai nilai F.S : baris baru tercetak sebanyak n } {=========================================================} procedure proc_Lingkaran; {mencari luas lingkaran I.S : sembarang F.S : menerima masukan jari-jari lingkaran, dan menghitung dan menuliskan luas lingkaran } {=========================================================} procedure proc_Segitiga; {mencari luas segitia I.S : sembarang F.S : menerima masukan alas dan tinggi, dan menghitung dan menuliskan luas segitiga } {=========================================================} procedure proc_Persegi; {mencari luas persegi I.S : sembarang F.S : menerima masukan panjang dan lebar, kemudian mencari dan Menampilkan luas Persegi } {=========================================================} procedure proc_HitungKombinasi; {mencari nilai kombinasi dua bilangan I.S : sembarang F.S : mencari kombinasi dari dua bilangan danmenuliskan hasilnya var n,p : integer; begin writeln('Masukkan nilai n = '); readln(int_n); writeln('Masukkan nilai p = '); readln(int_p); rl_Hasil := func_Kom(int_n,int_p); write(rl_Hasil); end; }

Page 25: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 25 dari 44

{=========================================================} procedure proc_Menu; {mencetak tampilan menu I.S :

F.S :

} begin {begin of program utama} repeat {deleted} until int_pil in [1..?]; case int_pil of {deleted} end; end. {end of program utama}

Kasus 4: Prosedur Parameter Input Output File 0604XXXX.PAS Diberikan algoritma berikut (belum lengkap), implementasikan dengan Pascal. Untuk implementasi parameter output dalam Paskal gunakan var, contoh Procedure proc_TukarAB(var A,B : integer);

procedure proc_TukarAB(input: A,B integer, output: A,B : integer) {menukar dua bilangan integer I.S : A dan B terdefinisi dan mempunyai nilai F.S : nilai A dan B bertukar Contoh input: A=5, B=10 ouput A=10, B=5 DEKLARASI lokal DESKRIPSI lokal } Algoritma PaggilTukar { } DEKLARASI DESKRIPSI read(x,y) write(x,y) proc_TukarAB(x,y) write(x,y)

Page 26: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 26 dari 44

PRAKTIKUM 7

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Penggunaan Include dan Case File 0701XXXX.C Pada kasus ini, praktikan akan diperkenalkan dengan bahasa C skema analisa kasus. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut mungkin belum benar sacara sintaks. /*==================================================================== File : 0701XXXX.C Program : Luas dan Keliling Bangun Ruang Programmer : Ivan Michael Siregar Tanggal : 03 Nopember 2003 Deskripsi : ====================================================================*/ #include <stdio.h> #include <conio.h> #define phi 3.14 /* konstanta phi untuk Lingkaran */ int main() { /* DEKLARASI */ int pil; /* nomor pilihan menu */ int p, l; /* panjang dan lebar Persegipanjang */ float a, t; /* alas dan tinggi Segitiga */ int r; /* jejari untuk Lingkaran */ int s; /* sisi untuk Bujursangkar */ /* DESKRIPSI */ printf("================================\n"); printf(" Pilihan Menu \n"); printf(" [1] Persegipanjang \n"); printf(" [2] Segitiga \n"); printf(" [3] Lingkaran \n"); printf(" [4] Bujursangkar \n");

Page 27: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 27 dari 44

printf(" [5] Keluar \n"); printf(" Masukkan pilihan [1..5] "); scanf ("%d",&pil); printf("\n================================\n");

switch (pil) { case 1 : printf("Menghitung Luas Persegi Panjang\n"); printf("Panjang : "); scanf ("%d",&p); printf("Lebar : "); scanf ("%d",&l); printf("Luas : %d",p*l); break; case 2 : printf("Menghitung Luas Segitiga\n"); printf("Alas : "); scanf ("%f",&a); printf("Tinggi : "); scanf ("%f",&t); printf("Luas : %f",a*t/2); break; case 3 : printf("Menghitung Lingkaran\n"); printf("Alas : "); scanf ("%f",&a); printf("Tinggi : "); scanf ("%f",&t); printf("Luas : %f",a*t/2); break; case 4 : printf("Menghitung Bujursangkar\n"); printf("Sisi : "); scanf ("%d",&s); printf("Luas : %f",s*s); break; case 5 : printf("Keluar\n"); printf("Tekan sebarang tombol"); break; } getch(); return 0; }

Kasus 2: File 0702XXXX.C Pada kasus ini praktikan akan diperkenalkan dengan array 2 dimensi. Array sangat sering dipergunakan untuk memproses Matriks. Praktikan akan diperkenalkan untuk melakukan perkalian matriks 2x2. Tuliskan potogan program di bawah ini. /*==================================================================== File : 0702XXXX.C Program : Perkalian Matriks 2D Programmer : Ivan Michael Siregar

Page 28: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 28 dari 44

Tanggal : 03 Nopember 2003 Deskripsi : ======================================================================*/

#include <stdio.h> #include <conio.h> #define idx_Max 2 /* Indeks maksimum untuk matriks */ typedef int Matriks[idx_Max][idx_Max]; int main() { /* DEKLARASI */ Matriks A,B,C; /* Matriks A, B, dan C */ int i,j; /* kendali perulangan */ /* DESKRIPSI */ /* Mengisi Matriks A */ for (i=1; i<=idx_Max; i++) { for (j=1; j<=idx_Max; j++) { printf("A[%d,%d] = ",i,j); scanf("%d",&(A[i][j])); } } /* Mengisi Matriks B */ for (i=1; i<=idx_Max; i++) { for (j=1; j<=idx_Max; j++) { printf("B[%d,%d] = ",i,j); scanf("%d",&(B[i][j])); } } /* Memproses Matriks C */ for (i=1; i<=idx_Max; i++) { printf("%d",C[1][1]); for (j=1; j<=idx_Max; j++) { C[i][j] = A[i][1]*B[1][j] + A[i][2]*B[2][j]; printf("C[%d,%d] = %d\n",i,j,C[i][j]); } } getch(); return 0; }

Kasus 3: Penggunaan Array dan Record secara bersaamaan untuk kasus Data Mahasiswa

Page 29: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 29 dari 44

File 0703XXXX.C Praktikan melakukan implementasi penyimpanan data mahasiswa ke dalam array dan record. /*==================================================================== File : 0703XXXX.C Program : Data Mahasiswa Programmer : Ivan Michael Siregar Tanggal : 03 Nopember 2003 Deskripsi : ====================================================================*/ #include <stdio.h> #include <conio.h> #define idx_Mhs 2 /* Indeks maksimum untuk matriks */ #define idx_MK 2 /* Indeks maksimum untuk mata kuliah */ typedef struct { /* type data terstruktur */ char NIM[7]; /* Nomor Induk Mahasiswa */ char Nama[20]; /* nama */ char Alamat[40]; /* alamat mahasiswa */ char MK[idx_MK]; /* array mata kuliah yg diambil */ } Mahasiswa; typedef Mahasiswa Mhs[idx_Mhs]; /* array Mahasiswa */ int main() /* program utama */ { /* DEKLARASI */ Mhs TabMhs; int i,j; /* kendali perulangan */ /* DESKRIPSI */ for (i=1; i<=idx_Mhs; i++) { printf("Mahasiswa ke %d\n",i); printf("NIM = "); scanf ("%s",TabMhs[i].NIM); printf("Nama = "); scanf ("%s",TabMhs[i].Nama); printf("Alamat = "); scanf ("%s",TabMhs[i].Alamat); for (j=1; j<=idx_MK; j++) { printf("Mata Kuliah %d ",j); scanf ("%s",&(TabMhs[i].MK[j])); } } for (i=1; i<=idx_Mhs; i++) { printf("Mahasiswa ke %d\n",i); printf("NIM = %s \n",TabMhs[i].NIM); printf("Nama = %s \n",TabMhs[i].Nama); printf("Alamat = %s \n",TabMhs[i].Alamat);

Page 30: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 30 dari 44

for (j=1; j<=idx_MK; j++) { printf("Mata Kuliah %d = %s ",j,TabMhs[i].MK[j]); } }

getch(); return 0; }

Kasus 4: Palindrom File 0704XXXX.C Buatlah sebuah array untuk membaca kata. Kemudian lakukan pemeriksaan untuk menguji apakah kata terebut adalah palindrom. Contoh palindrom KASUR NABABAN RUSAK. Tugas Praktikum yang akan dikumpul. 1. #1 #2 #3 implementasikan dalam bahasa Pascal 2. #4 implementasikan dalam bahasa C

Page 31: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 31 dari 44

PRAKTIKUM 8

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Mesin Kata File 0801XXXX.C Pada kasus ini, praktikan akan diperkenalkan dengan Mesin Kata. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Perhatikan bahwa program tersebut mungkin belum benar sacara sintaks. /*==================================================================== File : 0801.C Program : Mesin Kata Programmer : Ivan Michael Siregar Tanggal : 10 Nopember 2003 Deskripsi : ======================================================================*/ #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> //#include <boolean.h> typedef enum {false,true} boolean; /* Deklarasi global */ char C; /* Karakter yang ditunjuk pointer */ FILE *T; /* File teks */ int pil; /* hasil pilihan menu */ int nChar; /* jumlah karakter dalam file teks */ int nX; /* jumlah banyaknya karekter 'x' */ int nCouple; /* jumlah banyaknya pasangan karakter */ char fWord[30]; /* kata yang dicari */ int nWord; /* jumlah kata */ boolean ketemu; /* PROTOTYPE */ /*============================================*/

Page 32: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 32 dari 44

/* prosedur menuliskan menu */ void v_Menu(); /* I.S : sembarang F.S : Menu tertulis di layar */ /*============================================*/ /* prosedur melakukan reset terhadap teks */ void v_ResetTeks(); /* I.S : F.S : */ /*============================================*/ /* prosedur abaikan spasi */ void v_IgnoreSpace(); /* I.S : F.S : */ /*============================================*/ /* prosedur cari kata */ void v_FindWord(char s[30], boolean *ketemu); /* I.S : F.S : */ /*============================================*/ void v_CountWord(int *nWord); /* I.S : F.S : */ /*============================================*/ void v_CountCouple(int *nCouple); /* I.S : F.S : */ /*============================================*/ void v_CountCharacter(int *nKar); /* I.S : F.S : */ /*============================================*/ void v_CountCharacterX(int *nX); /* I.S : F.S : */ /*============================================*/ /* PRGRAM UTAMA */ int main()

Page 33: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 33 dari 44

{

clrscr();

v_Menu(); getch(); return 0; } /*============================================*/ /* prosedur menuliskan menu */ void v_Menu() /* I.S : sembarang F.S : Menu tertulis di layar */ { printf(" ================== MENU ==================\n"); printf(" [1] Hitung jumlah karakter di dalam teks \n"); printf(" [2] Hitung jumlah sebuah huruf \n"); printf(" [3] Hitung jumlah pasangan huruf \n"); printf(" [4] Hitung jumlah kata \n"); printf(" [5] Cari kata \n"); printf(" [6] Q u i t \n"); do { gotoxy(10,10); printf(" Masukkan pilihan anda [1..5] = "); scanf ("%d",&pil); } while (pil < 1 || pil > 6); /* Melakukan analisa kasus terhadap pil */ switch (pil) { case 1 : { v_CountCharacter(&nChar); printf("Jumlah keseluruhan karakter = %d",nChar); break; } case 2 : { v_CountCharacterX(&nX); printf("Jumlah keseluruhan karakter = %d",nX); break; } case 3 : { v_CountCouple(&nCouple); printf("Jumlah keseluruhan pasangan = %d",nCouple); break; } case 4 : { v_CountWord(&nWord); printf("Jumlah keseluruhan kata = %d",nWord); break; } case 5 : { stpcpy(fWord," "); printf("Masukkan kata yang dicari = "); scanf ("%s",&fWord); v_FindWord(fWord, &ketemu); break; } case 6 : { break; } }

Page 34: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 34 dari 44

}

/*============================================*/ void v_CountCharacter(int *nChar) /* I.S : F.S : */ { *nChar = 0; v_ResetTeks(); C = fgetc(T); while (C != '.') { (*nChar)++; C = fgetc(T); } /* C = '.' */ } /*============================================*/ void v_CountCharacterX(int *nX) /* I.S : F.S : */ { char c_masuk; *nX = 0; v_ResetTeks(); C=fgetc(T); printf (" \n Huruf apa yg mau dihitung ? "); c_masuk = getch(); printf ("%c",c_masuk); printf ("\n "); while (C !='.') { if (C==c_masuk) (*nX)++; /*endif*/ C=fgetc(T); /*baca karakter berikutnya */ } /* C='.' */ } /*============================================*/ /* prosedur cari kata */ void v_FindWord(char s[30], boolean *ketemu) /* I.S : F.S : */ { char c_word[30]; char *help; int i,i_lenm, i_count;

Page 35: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 35 dari 44

boolean b_ketemu; *ketemu = false;

/* Inialisasi string c_word */ for (i=0; i<30; i++) c_word[i] = ' '; i_lenm = strlen(fWord); v_ResetTeks(); C = getc (T); while (C != '.' && !*ketemu) { v_IgnoreSpace(); i=0; /* baca terus teks selama belum mencapai spasi atau belum '.' */ strcpy(c_word,""); while (C != ' ' && C != '.') { c_word[i] = C; C = fgetc(T); i++; } /* C = ' ' || C = '.' , satu kata ditemukan */ for (i=i;i<=30;i++) { c_word[i] = ' '; } b_ketemu = false; for (i_count=0;i_count<i_lenm;i_count++) { if (fWord[i_count] != c_word[i_count]) { b_ketemu = true; } } if (!b_ketemu) { *ketemu = true; } /* endif */ v_IgnoreSpace(); } /* C = '.' or ketemu */ if (!b_ketemu) { printf (" Ketemu ! ");

Page 36: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 36 dari 44

} else { printf (" Tdk ketemu ! ");

}

} /*============================================*/ void v_IgnoreSpace() /* I.S : F.S : */ { while (C == ' ' && C != '.') { C = getc(T); } /* C <> ' ' || C = '.' */ } /*============================================*/ void v_CountCouple(int *nCouple) { char C_yang_lalu; char c_masuk1,c_masuk2; v_ResetTeks(); C=getc(T); printf (" Huruf pasangan ke satu : "); c_masuk1 = getch(); printf ("%c \n",c_masuk1); printf (" Huruf pasangan ke dua : "); c_masuk2 = getch(); printf ("%c \n",c_masuk2); if (C == '.') *nCouple=-99; else { *nCouple=0; C_yang_lalu=' '; do { if (C_yang_lalu == c_masuk1 && C==c_masuk2) (*nCouple)++; C_yang_lalu=C; C=getc(T); } while (C != '.'); } } /*=============================================*/ void v_CountWord(int *nWord) { char C_yang_lalu; *nWord=0; C_yang_lalu=' ';

Page 37: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 37 dari 44

v_ResetTeks(); C=getc(T); while (C != '.') { if (C_yang_lalu != ' ' && C==' ')

(*nWord)++;

C_yang_lalu=C; /* C sekarang disimpan di dalam C_yang_lalu */ C=getc(T); } /* C = '.' */ /* kata terakhir diproses khusus */ if (C_yang_lalu != ' ') /* and C = '.' */ (*nWord)++; } /*=====================================================*/ void v_ResetTeks() { T = fopen ("text.txt", "r"); } /*=====================================================*/

Tugas yang dikumpulkan: 1. Implementasi dalam bahasa Pascal

Page 38: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 38 dari 44

PRAKTIKUM 9

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Penggunaan Unit File 0901XXXX.PAS Unit standar adalah unit yang siap dipakai, contohnya System, Graph, Dos, Printer, Overlay. Pada kasus ini, praktikan akan diperkenalkan dengan cara membuat unit. Tuliskan potongan program di bawah ini, jangan lupa memberikan header dan komentar. Berikan tampilan sebaik mungkin. Petunjuk I.

1. Tuliskan potongan program ini, dan simpan dengan nama u0901XXXX.PAS 2. Lakukan compilasi [CTRL+F9] 3. Pastikan bahwa hasil kompilasi adalah file u0901XXXX.TPU

(*=================================================================*) File : u0901.PAS Program : unit Progrmmer : Ivan Michael Siregar Tanggal : 18 Nopember 2003 Deskripsi : - Membuat unit sendiri - Melakukan kompilasi [Alt+F9] secara terpisah - Hasil kompilasi adalah u0901.TPU - Program pemanggil adalah u0901.EXE (*=================================================================*) Unit u0901; Interface type warnaset = (Merah, Hijau, Biru); desimal = 0..9; const nama = 'Ivan Michael Siregar'; var nama_perusahaan : string[25]; function Mutlak(nilai : real): real; implementation function Mutlak(nilai:real):real; begin if (nilai >= 0) then Mutlak := nilai

Page 39: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 39 dari 44

else Mutlak := -nilai; end; end.

Petunjuk II.

1. Tuliskan potongan program di bawah ini, file 0901XXXX.PAS 2. Lakukan compilasi [CTRL+F9] 3. Pastikan bahwa hasil kompilasi adalah file u0901XXXX.EXE 4. Unit dan pemanggil harus berada pada direktori yang sama

(*=================================================================== File : 0901.PAS Program : Pemanggil Unit u0901.TPU Progrmmer : Ivan Michael Siregar Tanggal : 18 Nopember 2003 Deskripsi : - Membuat unit sendiri - Melakukan kompilasi [Alt+F9] secara terpisah - Program pemanggil adalah 0901.EXE (*=================================================================*) Program Memanggil_Unit; Uses WinCrt, u0901; var nilai : real; i : desimal; warna : warnaset; begin clrscr; nilai := 5; nama_perusahaan := 'PT. AplysIT'; writeln(nama); writeln('Nilai mutlak',nilai:5:2,' =',Mutlak(nilai):5:2); writeln; for i:=1 to 2 do begin for warna := merah to biru do begin writeln(nama_perusahaan); end; end; end.

Tugas Praktikum yang akan dikumpul.

a. Buatlah sebuah unit untuk Kombinasi bilangan b. Buatlah sebuah unit untuk Pemakaian Internet (Praktikan mengacu kepada praktikum terdahulu)

Lakukan implementasi kedalam bahasa Pascal

Page 40: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 40 dari 44

PRAKTIKUM 10

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Bubble Sort File 1001XXXX.PAS Algoritma pengurutan sangat kaya akan solusi. Pada praktikum kali ini, seluruh praktikan akan melakukan implementasi beberapa solusi yang sangat umum dipergunakan dalam pengurutan. {==================================================================== File : 1001xxxx.PAS Program : Bubble Sort Programmer : Ivan Michael Siregar Tanggal : 02 Desember 2003 Deskripsi : 1. Mengurutkan elemen matriks dengan Bubble Sort 2. Bubble sort adalah metoda pengurutan yang paling sederhana 3. Prinsipnya sesuai dengan namanya (bubble=gelembung) yaitu memindahkan nilai yang paling kecil(ringan) ke urutan pertama 4. Bubble sort memiliki kelemahan, karena selalu melakukan pertukaran sehingga membuat proses algoritmik lebih lambat. ====================================================================} Program Bubble_Sort; {Program ini akan melakukan pengurutan dengan metoda Bubble Sort Lihat deskripsi untuk mendapatkan informasi detil } uses wincrt; {pendefinisian konstanta} const N = 6; {maksimum elemen array} {pendefinisian type} type Bilangan = array[1..6] of integer; {pendefinisian variabel} var Bil : Bilangan; {*********** pendefinisian procedure **********}

Page 41: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 41 dari 44

procedure Baca; {I.S : sembarang F.S : nilai elemen array Bil sudah diisi lewat masukan } var i : integer; {pencacah, mengisi elemen array [1..6]} begin {begin of procedure Baca} writeln('Isikan elemen array berikut [1..6]'); for i:=1 to 6 do begin write('Elemen [',i,'] = '); readln(Bil[i]); end; end; {end of provedure Baca} procedure Tukar(var Bil_1:integer;var Bil_2:integer); {I.S : Elemen array Bil sudah terdefinisi F.S : Elemen array Bil terurut menaik sehingga Bil[1]<=Bil[2]<=..<=Bil[N] } var temp : integer; {penampung nilai sementara pada saat pertukaran} begin {begin of procedure Tukar} temp := Bil_1; Bil_1 := Bil_2; Bil_2 := temp; end; {end of procedure Tukar} procedure Urut_Menaik;{(var B:Bilangan;N:integer); {I.S : elemen array B terdefinisi F.S : elemen array B terurut menaik } var i : integer; j : integer; begin {begin of procedure Urut_Menaik} for i:=1 to N-1 do begin for j:=N downto i+1 do begin if (Bil[j] < Bil[j-1]) then begin {begin if] {lakukan pertukaran} Tukar(Bil[j],Bil[j-1]); end; {end if} end; {end of for j} end; end; {end of procedure Urut_Menail} procedure Tulis; {I.S : sembarang F.S : nilai elemen array Bil sudah diisi lewat masukan } var

Page 42: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 42 dari 44

i : integer; {pencacah, mengisi elemen array [1..6]}

begin {begin of procedure Baca}

writeln('Elemen array yang baru'); for i:=1 to 6 do begin writeln('Bil [',i,'] = ',Bil[i]); end; end; {end of provedure Baca} {*********** PROGRAM UTAMA **********} BEGIN {begin of program utama} clrscr; {bersihkan monitor} Baca; {menerima masukan elemen array} Urut_Menaik; {mengurutkan elemen array menaik dengan Bubble Sort} Tulis; {menuliskan elemen array yang sudah terurut} END. {end of program utama}

Tugas praktikum yang akan dikumpul. Implementasi Selection Sort

a. Menaik : Pascal b. Menurun : C

Gunakan panduan pada buku Allgoritma dan Pemrograman Jilid 2

Page 43: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 43 dari 44

PRAKTIKUM 11

Tujuan Mengenal lingkungan program Turbo Pascal. Membuat program sederhana dengan Turbo Pascal. Melakukan implementasi perintah yang diajarkan di kelas seperti read, write, assignment. Kegiatan Praktikan tidak perlu menuliskan algoritma. Pemberian nama/judul program harus representatif. Pemberian nama constant dan variable dengan format yang baik. Pemberian komentar program. Pemberian nama file harus sesuai format. Kasus 1: Rekursi File 1101XXXX.PAS Rekursi adalah fungsi yang memanggil diri sendiri. Pada kasus 1 praktikan akan melakukan implementasi fungsi rekursi untuk mencari nilai faktorial sebuah bilangan. {************************************************************************* File : 1101xxxx.PAS Program : Rekursi Programmer : Ivan Michael Siregar Tanggal : 09 Desember 2003 Deskripsi : Rekursi adalah fungsi yang memanggil diri sendiri *************************************************************************} program rekursi; uses wincrt; var total : integer; bilangan : integer; function f_fac (n:integer):integer; var hasil : integer; begin if n=1 then hasil := 1 else hasil := n * f_fac(n-1); f_fac := hasil; end; {end of function f_fac} BEGIN {begin of program utama}

Page 44: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 44 dari 44

write('Masukkan sebuah bilangan yang akan dicari faktorialnya = '); readln(bilangan); total := f_fac(bilangan); writeln(total); readln; END. {end of program utama}

Kasus 2: Binary Search File 1102XXXX.PAS Searching atau pencarian yang dipelajari pada matakuliah ini ada dua, yaitu sequential search dan binary search. Pada kasus 2 ini praktikan akan melakukan implementasi binary search. Kasus 3: ADT Jam File 1103XXXX.C Pada kasus ini praktikan akan diajarkan cara membuat Absract Data Type Jam. Jam.H dan Jam.C adalah file yang berbeda. /********************************************************************* File : 1103XXXX.C Prgrammer : Ivan Michael Siregar Tanggal : 9 Desember 2003 Deskripsi : Deklarasi primitif untuk ADT Jam **********************************************************************/ #include "JAM.H" #include "JAM.C" int main() { JAM J1; JAM J2; int dt=1000; printf("Hellooo\n"); ResetJam(&J1); BacaJam(&J1); TulisJam(J1); printf("Konversi Jam ke Detik : %d\n",JamToDetik(J1)); J2=DetikToJam(dt); TulisJam(J2); return 0; } /********************************************************************* File : JAM.H Prgrammer : Ivan Michael Siregar Tanggal : 9 Desember 2003 Deskripsi : Deklarasi primitif untuk ADT Jam

Page 45: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 45 dari 44

**********************************************************************/ #ifndef JAM_H #define JAM_H #include <stdio.h> #include <conio.h> typedef int Hour; typedef int Minute; typedef int Second; typedef enum { false,true } boolean; typedef struct { Hour HH; Minute MM; Second SS; } JAM; /******************************************************************** DEFINISI PRIMITIF ********************************************************************/ /******************************************************************** KELOMPOK VALIDASI TERHADAPTYPE *********************************************************************/ boolean Valid(int H, int M, int S); /* Mengirimkan True jika H,M,S dapat membentuk Jam yang valid */ JAM MakeJam(int HH, int MM,int SS); /* Membentuk sebuah Jam dari komponen yang valid */ int HHour(JAM J); /* Mengirimkan bagian HH dari JAM */ int MMinute(JAM J); /* Mengirimkan bagian MM dari JAM */ int SSecond(JAM J); /* Mengirimkan bagian SS dari JAM */ /******************************************************************** KELOMPOK BACA TULIS *********************************************************************/ void BacaJam(JAM *J);

Page 46: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 46 dari 44

/* I.S : J tidak terdefinisi, data yang dibaca selalu valid F.S : J terdefinisi dan merupakan jam yang valid Proses : Mengulangi membaca jam hingga valid */ void TulisJam(JAM J); /* I.S : J sembarang F.S : Nilai J ditulis dengan format HH:MM:SS Proses : - */ /******************************************************************** KELOMPOK RESET *********************************************************************/ void ResetJam(JAM *J); /* I.S : Sembarang F.S : Jam J terisi dengan format 00:00:00 Proses : Mengisi Jam J dengan 00:00:00 */ /******************************************************************** KELOMPOK KONVERSI TERHADAP TYPE *********************************************************************/ long JamToDetik (JAM J); /* Diberikan sebuah jam lalu melakukan konversi ke detik Rumus : detik = 3600 * Hour + Menit * 60 + Detik */ JAM DetikToJam (int N); /* Mengirimkan konversi detik ke Jam */ /******************************************************************** KELOMPOK OPERASI TERHADAP TYPE *********************************************************************/ boolean JEQ(JAM J1, JAM J2); /* Mengirimkan True jika J1=J2, dan False jika sebaliknya */ boolean JNEQ(JAM J1, JAM J2); /* Mengirimkan True jika J1!=J2, dan False jika sebaliknya */ boolean JLT(JAM J1, JAM J2); /* Mengirimkan True jika J1<J2, dan False jika sebaliknya */ boolean JGT(JAM J1, JAM J2); /* Mengirimkan True jika J1>J2, dan False jika sebaliknya */ JAM JPlus(JAM J1, JAM J2); /* Mengirimkan J1+J2 dalam bentuk JAM */ JAM JMinus(JAM J1, JAM J2);

Page 47: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 47 dari 44

/* Mengirimkan J1-J2 dalam bentuk JAM */ JAM NextDetik(JAM J); /* Mengirimkan 1 detik setelah J dalam bentuk JAM */ JAM NextNDetik(JAM J, int N); /* Mengirimkan N detik setelah J dalam bentuk JAM */ JAM PrevDetik(JAM J); /* Mengirimkan 1 detik sebelum J dalam bentuk JAM */ JAM PrevNDetik(JAM J, int N); /* Mengirimkan N detik sebelum J dalam bentuk JAM */ long Durasi(JAM J1, JAM J2); /* Mengirimkan JAk - JAw dalam detik, hasilnya negatif bila JAk<JAw */ #endif /********************************************************************* File : JAM.C Prgrammer : Ivan Michael Siregar Tanggal : 9 Desember 2003 Deskripsi : Deklarasi primitif untuk ADT Jam **********************************************************************/ #include "JAM.H" /******************************************************************** IMPLEMENTASI PRIMITIF ********************************************************************/ /******************************************************************** KELOMPOK VALIDASI TERHADAPTYPE *********************************************************************/ boolean Valid(int H, int M, int S); /* Mengirimkan True jika H,M,S dapat membentuk Jam yang valid */ JAM MakeJam(int HH, int MM,int SS); /* Membentuk sebuah Jam dari komponen yang valid */ int HHour(JAM J); /* Mengirimkan bagian HH dari JAM */ int MMinute(JAM J); /* Mengirimkan bagian MM dari JAM

Page 48: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 48 dari 44

*/ int SSecond(JAM J); /* Mengirimkan bagian SS dari JAM */ /******************************************************************** KELOMPOK RESET *********************************************************************/ void ResetJam(JAM *J) /* I.S : Sembarang F.S : Jam J terisi dengan format 00:00:00 Proses : Mengisi Jam J dengan 00:00:00 */ { (*J).HH = 0; (*J).MM = 0; (*J).SS = 0; } /******************************************************************** KELOMPOK BACA TULIS *********************************************************************/ void BacaJam(JAM *J) /* I.S : J tidak terdefinisi, data yang dibaca selalu valid F.S : J terdefinisi dan merupakan jam yang valid Proses : Mengulangi membaca jam hingga valid */ { printf("Masukkan Jam : "); scanf("%d",&(*J).HH); printf("Masukkan Menit : "); scanf("%d",&(*J).MM); printf("Masukkan Detik : "); scanf("%d",&(*J).SS); } void TulisJam(JAM J) /* I.S : J sembarang F.S : Nilai J ditulis dengan format HH:MM:SS Proses : - */ { printf("Jam = %2d:%2d:%2d\n", J.HH, J.MM, J.SS); } /******************************************************************** KELOMPOK KONVERSI TERHADAP TYPE *********************************************************************/ long JamToDetik (JAM J) /* Diberikan sebuah jam lalu melakukan konversi ke detik Rumus : detik = 3600 * Hour + Menit * 60 + Detik */ { return(J.HH * 3600 + J.MM * 60 + J.SS); }

Page 49: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 49 dari 44

JAM DetikToJam (int N) /* Mengirimkan konversi detik ke Jam */ { JAM J; int sisa; J.HH = N / 3600; sisa = N % 3600; J.MM = sisa / 60; J.SS = sisa % 60; return J; } /******************************************************************** KELOMPOK OPERASI TERHADAP TYPE *********************************************************************/ boolean JEQ(JAM J1, JAM J2) /* Mengirimkan True jika J1=J2, dan False jika sebaliknya */ { return (J1.HH == J2.HH && J1.MM == J2.MM && J1.SS == J2.SS); } boolean JNEQ(JAM J1, JAM J2) /* Mengirimkan True jika J1!=J2, dan False jika sebaliknya */ { return (!(J1.HH == J2.HH && J1.MM == J2.MM && J1.SS == J2.SS)); } boolean JLT(JAM J1, JAM J2) /* Mengirimkan True jika J1<J2, dan False jika sebaliknya */ { long detikJ1,detikJ2; detikJ1 = JamToDetik (J1); detikJ2 = JamToDetik (J2); return (detikJ1 < detikJ2); } boolean JGT(JAM J1, JAM J2) /* Mengirimkan True jika J1>J2, dan False jika sebaliknya */ { long detikJ1,detikJ2; detikJ1 = JamToDetik (J1); detikJ2 = JamToDetik (J2); return (detikJ1 > detikJ2); } JAM JPlus(JAM J1, JAM J2) /* Mengirimkan J1+J2 dalam bentuk JAM */ { long detikJ1,detikJ2,detikJ3; JAM J3; detikJ1 = JamToDetik (J1); detikJ2 = JamToDetik (J2);

Page 50: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 50 dari 44

detikJ3 = detikJ1 + detikJ2; J3 = DetikToJam (detikJ3); return (J3); } JAM JMinus(JAM J1, JAM J2) /* Mengirimkan J1-J2 dalam bentuk JAM */ { long detikJ1,detikJ2,detikJ3; JAM J3; detikJ1 = JamToDetik (J1); detikJ2 = JamToDetik (J2); detikJ3 = detikJ1 - detikJ2; J3 = DetikToJam (detikJ3); return (J3); } JAM NextDetik(JAM J) /* Mengirimkan 1 detik setelah J dalam bentuk JAM */ { long detikJ1; JAM J2; detikJ1 = JamToDetik (J); detikJ1 += 1; J2 = DetikToJam (detikJ1); return (J2); } JAM NextNDetik(JAM J, int N) /* Mengirimkan N detik setelah J dalam bentuk JAM */ { long detikJ1; JAM J2; detikJ1 = JamToDetik (J); detikJ1 += N; J2 = DetikToJam (detikJ1); return (J2); } JAM PrevDetik(JAM J) /* Mengirimkan 1 detik sebelum J dalam bentuk JAM */ { long detikJ1; JAM J2; detikJ1 = JamToDetik (J); detikJ1 -= 1; J2 = DetikToJam (detikJ1); return (J2); } JAM PrevNDetik(JAM J, int N) /* Mengirimkan N detik sebelum J dalam bentuk JAM

Page 51: IF-103 ALGORITMA DAN PEMROGRAMAN · IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 2 dari 44 Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini

Dilarang memperbanyak dan/atau mengcopy sebagian atau seluruh isi dokumen ini tanpa persetujuan tertulis dari Institut Teknologi Harapan Bangsa

IF-103 Algoritma dan Pemrograman: Modul Praktikum Halaman 51 dari 44

*/ { long detikJ1; JAM J2; detikJ1 = JamToDetik (J); detikJ1 -= N; J2 = DetikToJam (detikJ1); return (J2); } long Durasi(JAM J1, JAM J2) /* Mengirimkan JAk - JAw dalam detik, hasilnya negatif bila JAk<JAw */ { long detikJ1,detikJ2; detikJ1 = JamToDetik (J1); detikJ2 = JamToDetik (J2); return (detikJ2-detikJ1); }

Tugas praktikum yang akan dikumpul. Implementasi No.1, 2, 3 dalam bahasa C. Gunakan panduan pada buku Allgoritma dan Pemrograman Jilid 2 Untuk yang nomor 3 berikan implementasi menu bagi user untuk melakukan proses pemanggilan proseder/fungsi yang telah diimplementasikan.