Agung Novian
viansastra@telkom.net
vian_sastra@yahoo.co.id
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.
Membangun program untuk menentukan zodiac memang terlalu lazim dan mudah, di semua
jenis bahasa pemogramman. Banyak sekolah-sekolah computer atau kursus-kursur yang
mengambil program zodiac sebagai bahan latihan awal. Tapi pembahasan mengenai program
zodiac dengan Pascal kali ini mungkin akan lebih spesial. Karena di sini diterapkan trik-trik
menarik dan penggunaan prosedur dan fungsi.
Desain Program
Prosedur
Fungsi
Baris Kode
PROGRAM ZODIAK;
USES CRT, DOS;
VAR I, J, X, Y:INTEGER;
TOMBOL, HURUF:CHAR;
STANGGAL:STRING;
NAMA:STRING;
SALAH:INTEGER;
MYTANGGAL:TANGGAL;
IDX:CHAR;
SJK:STRING;
(*
FUNGSI UNTUK MENGKONVERSI NILAI LONGINT
MENJADI STRING (TEKS)
*)
BEGIN
STR(I, S);
INTTOSTR := S;
END;
(*
FUNGSI UNTUK MENENTUKAN NAMA HARI DAN BULAN
MENURUT TANGGAL PADA SISTEM
*)
FUNCTION HARI_INI:STRING;
CONST
DAYS : ARRAY [0..6] OF STRING[9] =
('MINGGU','SENIN','SELASA',
'RABU','KAMIS','JUMAT',
'SABTU');
MONTHS : ARRAY [1..12] OF STRING [10] =
BEGIN
GETDATE(Y,M,D,DOW);
(*
PROSEDUR UNTUK MENULISKAN TEKS
PADA POSISI TERTENTU
*)
BEGIN
PANJANG := LENGTH(TEKS);
IF PILIH = 1 THEN
GOTOXY(KIRI, ATAS)
ELSE IF PILIH = 2 THEN
(* AGAR POSISI KURSOR DITENGAH-TENGAH LAYAR *)
GOTOXY((80 - PANJANG) DIV 2, ATAS)
ELSE IF PILIH = 3 THEN
GOTOXY((80 - PANJANG), ATAS);
WRITE(TEKS);
END;
(*
PROSEDUR UNTUK MEMBUAT KOTAK/WINDOW
*)
PROCEDURE WINDOW(KIRI, ATAS, LEBAR, TINGGI,
WARNA1, WARNA2:INTEGER;
ARSIR:BYTE);
BEGIN
TEXTATTR:=WARNA1;
TEXTATTR:=WARNA2;
IF ARSIR = 1 THEN
BEGIN
FOR I:= ATAS + 1 TO TINGGI + ATAS - 1 DO
FOR J:= KIRI + 1 TO KIRI + LEBAR - 1 DO
TULIS(J, I, 1, CHAR(176));
END
ELSE
BEGIN
FOR I:= ATAS + 1 TO TINGGI + ATAS - 1 DO
FOR J:= KIRI + 1 TO KIRI + LEBAR - 1 DO
TULIS(J, I, 1, ' ');
END;
TEXTATTR:=WARNA2;
END;
(*
PROSEDUR UNTUK MENENTUKAN NAMA ZODIAK
MENURUT NILAI DARI VARIABEL IDX
*)
PROCEDURE KETERANGAN;
BEGIN
CLRSCR;
WINDOW(1,1,79,23,$4A,$5B,0);
TEXTCOLOR(YELLOW);
TULIS(3,11,1,'SIFAT :');
TULIS(3,18,1,'CIRI KHAS :');
TEXTCOLOR(GREEN);
CASE IDX OF
'1' : BEGIN
TULIS(1,7,2,'CAPRICORNUS')
{TULIS(3,19,1,'')}
END;
(*
PROSEDUR UNTUK MENENTUKAN IDX BERDASARKAN TANGGAL DAN BULAN
YANG DIINPUTKAN
*)
IF BULAN = 1 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '2'
ELSE
IDX := '1'
END
ELSE IF BULAN = 2 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '3'
ELSE
IDX := '2'
END
ELSE IF BULAN = 3 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '4'
ELSE
IDX := '3'
END
ELSE IF BULAN = 4 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '5'
ELSE
IDX := '4'
END
KETERANGAN;
END;
(*
PROSEDUR UNTUK MENGINPUTKAN TANGGAL
*)
PROCEDURE INPUT_TANGGAL;
BEGIN
TULIS(39,7,1,' / / ');
GOTOXY(39,7);
I:=34; J:=7;
STANGGAL := '';
HURUF := #0;
IF (LENGTH(STANGGAL)=2) OR
(LENGTH(STANGGAL)=5) THEN
BEGIN
STANGGAL := STANGGAL + '/';
WRITE('/');
END;
END;
END;
TULIS(39,7, 1, STANGGAL);
VAL(COPY(STANGGAL,1,2),MYTANGGAL.DD,SALAH);
VAL(COPY(STANGGAL,4,2),MYTANGGAL.MM,SALAH);
VAL(COPY(STANGGAL,7,2),MYTANGGAL.YY,SALAH);
END;
(* PROGRAM UTAMA *)
BEGIN
CLRSCR;
(* MEMPERCANTIK TAMPILAN *)
WINDOW(1,1,79,23,$4A,$5B,1);
WINDOW(20,2,41,3,$1A,15,0);
TULIS(0,3,2,'SELAMAT DATANG');
TULIS(0,4,2,'DI RAMALAN ZODIAK INOCHIS' +
CHAR(147) + 'ftware');
WINDOW(18,8,45,4,$3B,$6F,0);
TULIS (0, 9, 2, 'DIBUAT OLEH : KI AGUNG NOVIAN');
TULIS (0, 10, 2, 'TEAM PROGRAMMER');
TULIS (0, 11, 2, 'INOCHI COMPUTER CIREBON');
TEXTATTR:=$1F;
TULIS (0, 15, 2, HARI_INI);
TEXTATTR:=$8F;
TULIS (0, 17, 2, 'INOCHIS' + CHAR(147) + 'ftware');
TULIS (0, 18, 2,
'Jl. P. Drajat Gg. Jepun No. 48 '
+ 'Telp. (0231) 210178 Cirebon');
WINDOW(19,21,43,2,$1A,15,0);
TULIS(0,22,2,'TEKAN SEMBARANG TOMBOL UNTUK MELANJUTKAN');
CLRSCR;
WINDOW(1,1,79,23,$1D,$7F,1);
WINDOW(15,3,50,8,$2A,$6B,0);
INPUT_TANGGAL;
(* PEMANGGILAN PROSEDUR *)
CEK_ZODIAK(MYTANGGAL.DD, MYTANGGAL.MM);
READLN;
END.
Tampilan (Lay-Out)
Program ini nantinya mempunyai tiga tampilan yaitu: tampilan muka, tampilan input dan
tampilan hasil.
Tampilan Muka
Tampilan input adalah tampilan permintaan input data yang akan diproses.
Pada tampilan hasil dilihatkan hasil proses dari data yang telah diinputkan.
Penutup
Ada bagian-bagian yang belum dilengkapi pada program ini yaitu definisi dari tiap-tiap zodiac.
Nah, ini tugas Anda untuk melengkapinya. Anda bias melengkapinya pada bagian struktur
prosedur: Keterangan