Hitung Sewa dengan Pascal Agung Novian
[email protected] [email protected]
Lisensi Dokumen: Copyright © 2003-2006 IlmuKomputer.Com Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.
Pembahasan ini adalah contoh program dengan menggunakan bahasa Pascal untuk menghitung besar sewa seorang penyewa komputer pada sebuah rental komputer dengan ketentuan sebagai berikut: • Harga sewa sebesar Rp. 1.000,- per jam • Tarif sewa flat, dihitung per 15 menit A.
Penjelasan Kasus
Belajar Pascal berarti belajar Algoritma. Dan belajar algoritma tidak akan lepas dari deskripsi cerita. Oleh karenanya, sebelum ke bahasan lebih lanjut, saya ingin bercerita lebih dulu. Begini ceritanya: Di Kota Cirebon tersebutlah sebuah rental computer yang bernama INOCHI Computer. Rental ini baru beberapa hari saja dibuka, namun langsung memiliki banyak pelangan, sang pengelola sebut saja namanya Ajat, sedikit merasa kewalahan, karena INOCHI Computer bukan hanya melayani jasa rental saja, tetapi juga melayani kursus, perbaikan PC, penjualan, pemograman sampai ke video shooting dan video editing. Akhirnya tercetuslah ide untuk membuat program yang dapat mengelola layanan rental ini. Dipanggillah programmer yang masih merupakan tim dari INOCHI Computer, sebut saja namanya Agung. Mulailah Agung bekerja mengumpulkan data yang diperlukan. Akhirnya terkumpullah data sebagai berikut: Harga sewa PC per jam adalah Rp. 1.000,Harga sewa dihitung per 15 menit, artinya INOCHI Computer memberlakukan tarff flat sebesar Rp. 250 per 15 Menit. Agung pun mulai merencanakan membuat program. Dipilihlah Pascal sebagai bahasa yang mudah dan murah (dengan artian, mudah dalam kompilasi dan murah untuk ukuran file yang relative kecil).
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
1
B.
Pengkodean
Tahap awal, Agung merumuskan kode-kode perintah dalam bahasa Pascal, berikut ini kodekode tersebut: Program Menghitung_Sewa; Uses Dos, Crt; Type JAM = Record HH, MM, SS : Word; End; Var I : Integer; J : LongInt; JamSekarang, JamMulai, JamSelesai, JamSewa : JAM; NamaUser : String; TotalDetikMulai, TotalDetikSewa, TotalDetikSekarang,HargaSewa : Word; DD, MM, YY, DOW : Word; Const HargaSewaPerJam = 1000; FixMenit = 15; Hari : Array [0..6] of String[9] = ('Minggu','Senin','Selasa', 'Rabu','Kamis','Jum' + #39 + 'at', 'Sabtu'); Bulan : Array [1..12] of String[10] = ('Jan', 'Peb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okto', 'Nop', 'Des'); Procedure Tulis(X, Y: Integer; Teks : String); Begin GoToXY (X, Y); Write (Teks); End; Procedure Banner; Var TeksJudul : String; Panjang : Integer; Begin TextAttr :=$17; ClrScr; TeksJudul := 'Rental Komputer INOCHI Computer'; Panjang := Length (TeksJudul); For I:= 1 to 79 Do Begin Tulis (I, 1, #205); Tulis (I, 5, #205); End; Tulis (1, 1, #201); Tulis (80, 1, #187); For I := 2 to 5 Do Begin Tulis (1, I, #178); Tulis (80, I, #178); End; Tulis (1, 5, #200); Tulis (80, 5, #188); Tulis ((80-Panjang) Div 2, 2, TeksJudul); TeksJudul := 'Jl. P. Drajat Gg. Jepun No. 48 ' +
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
2
'Cirebon 45133'; Panjang := Length (TeksJudul); Tulis ((80-Panjang) Div 2, 4, TeksJudul); End; Function FormatWaktu(W : Word) : String; Var S : String; Begin Str(W:0,s); If Length(S) = 1 then S := '0' + S; FormatWaktu := S; End; Procedure PutarJam; Var pX, pY : Integer; Begin GetDate(YY, MM, DD, DOW); {-----------------------------------------} Window (1, 11, 80, 25); TextAttr := $30; For pX := 1 to 80 Do Begin For pY := 1 to 14 Do Begin GotoXY (pX, pY); Write(#177); {179} End; End; {-----------------------------------------} Tulis (28, 2, ' Jam Mulai : ' + FormatWaktu(JamMulai.HH)+':'+ FormatWaktu(JamMulai.MM)+':'+ FormatWaktu(JamMulai.SS) + ' '); {-----------------------------------------} Repeat GetTime(JamSekarang.HH,JamSekarang.MM, JamSekarang.SS,JamSekarang.SS); {-----------------------------------------} TotalDetikSekarang := (JamSekarang.SS) + (JamSekarang.MM * 60) + (JamSekarang.HH * 3600); {-----------------------------------------} TotalDetikMulai := (JamMulai.SS) + (JamMulai.MM * 60) + (JamMulai.HH * 3600); TotalDetikSewa := TotalDetikSekarang - TotalDetikMulai; {-----------------------------------------------} JamSewa.HH := TotalDetikSewa div 3600; JamSewa.MM := (TotalDetikSewa Mod 3600) Div 60; JamSewa.SS := (TotalDetikSewa Mod 3600) Mod 60; {-----------------------------------------------} HargaSewa := (HargaSewaPerJam div (3600 div (60 * FixMenit))) * (1 + (TotalDetikSewa div (60 * FixMenit))); Window (43, 8, 80, 8); TextAttr := $40; ClrScr; {-----------------------------------------} GoToXy (3, 1); Write(HARI[DOW],', ', DD:0, ' ', BULAN[MM],' ', YY:0, ' ');
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
3
Tulis(27, 1, #16 + ' ' + FormatWaktu(JamSekarang.HH)+':'+ FormatWaktu(JamSekarang.MM)+':'+ FormatWaktu(JamSekarang.SS)); {-----------------------------------------} Window (25,16,55,19); TextAttr := $67; TextBackGround(4); For I:= 1 to 29 Do Begin Tulis (I, 1, #205); Tulis (I, 4, #205); End; Tulis (1, 1, #201); Tulis (30, 1, #187); For I := 2 to 3 Do Begin Tulis (1, I, #178); Tulis (30, I, #178); End; Tulis (1, 4, #200); Tulis (30, 4, #188); Tulis (2, 2, ' Lama Sewa : ' + FormatWaktu(JamSewa.HH)+':'+ FormatWaktu(JamSewa.MM)+':'+ FormatWaktu(JamSewa.SS)+ ' '); {-----------------------------------------} Tulis (2, 3, ' Harga Sewa : Rp. '); GoToXY(22, 3); Write(HargaSewa:7, ' '); For j := 0 To 10000000 Do; Window (57,25,79,25); TextAttr := $89; ClrScr; Tulis (1, 1, ' Created By Viansastra'); Until KeyPressed; End; Procedure CetakDataPenyewa; Var pX, pY : Integer; Begin Window (1, 6, 80, 25); TextAttr := 15; ClrScr; Window (1, 7, 41, 9); TextAttr := $20; ClrScr; Tulis (1, 1, #214); Tulis (40, 1, #183); For I:= 2 to 39 Do Begin Tulis (I, 1, #205); Tulis (I, 3, #205); End; Tulis (1, 3, #211); Tulis (40, 3, #189); Tulis (1, 2, #186); Tulis (40, 2, #186); Tulis (4,2, 'Nama Penyewa : '); Window (20, 8, 38, 8); TextAttr := $61; ClrScr; Repeat ReadLn(NamaUser); Until NamaUser <> ''; Write (NamaUser); GetTime(JamMulai.HH,JamMulai.MM, JamMulai.SS, JamMulai.SS); PutarJam; End; (* Program Utama *) Begin Banner; CetakDataPenyewa; end.
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
4
C.
Pengujian
Setelah pengkodean selesai, dilakukanlah pengujian. Dijalankannya program dengan menklik menu: Run Run Ctrl + F9. Tampilan program tersebut seperti pada gambar ilustrasi berikut ini.
Pertama-tama Agung mengetikkan “Nama Penyewa”, kemudian dilanjutkan dengan menekan tombol Enter pada keyboard. Setelah menekan Enter, tampilan program berubah menjadi seperti gambar ilustrasi di bawah ini dan penghitunganpun dimulai.
Sekarang Agung tinggal berfikir bagaimana mencetak data hasil penyewaan menjadi sebuah laporan. Bagaimana mencetak data menjadi laporan? Akan diuraikan pada artikel berikutnya.
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
5
Biografi Penulis Agung Novian. Kelahiran Cirebon, 9 September 1982. Menyelesaikan D1 Manajemen Informatika di CIC Cirebon dan S1 Teknik Informatika di STMIK Tasikmalaya. Pernah menjadi programmer di PT. Mekraindo – Majalengka, pernah mengajar di STM PUI Cirebon, Penulis buku seri pemogramman dengan judul “Ms. Visual Basic 6.0 – Anda Pasti Bisa”, terbitan ANDI Offset Yogyakarta tahun 2004. Sekarang aktif membuat program-program aplikasi berbasis database, menjadi instruktur hardware dan software computer, dan penulis lepas di IlmuKomputer.Com, serta masih menganggur he… he…
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2006 IlmuKomputer.Com
6