Anda di halaman 1dari 12

Program Zodiac dengan Pascal

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

Program untuk menentukan zodiac melatih penggunaan beberapa struktur pengambilan


keputusan dalam bahasa pemograman yaitu: struktur IF bersarang (If … Then … Else), dan
strukstur seleksi (Case Of). Karena kedua buah struktur ini boleh dikata merupakan ‘jantung’
dari bahasa pemograman. Baiklah, langsung saja kita ke pembahasan.

Pada program ini diterapkan beberapa prosedur dan fungsi, diantaranya:

Prosedur

Nama Prosedur Kegunaan


Tulis Menuliskan teks pada posisi tertentu. Prosedur ini juga disertai 3
(tiga) pilihan perataan teks (terhadap layar monitor) yaitu: rata kiri,
rata, rata tengah, dan rata kanan.
Window Membuat window (kotak) dengan ukuran tertentu dan pada lokasi
tertentu, window ini dilengkapi dengan bingkai dan dapat diarsir (diisi
bagian dalamnya), juga dapat ditentukan warna huruf dan warna
latarnya.
Keterangan Menentukan nama zodiac berdasarkan nilai yang diterima, kemudian
menampilkannya pada layar monitor.
Cek_Zodiak Menentukan id dari zodiac berdasarkan nilai tanggal dan bulan yang
diterima.
Komunitas eLearning IlmuKomputer.Com 1
Copyright © 2003-2006 IlmuKomputer.Com
Input_Tanggal Menerima nilai entri untuk mengisi nilai tanggal dan bulan.

Fungsi

Nama Prosedur Kegunaan


IntToStr Mengkonversi nilai bertipe LongInt menjadi String
Hari_Ini Mencetak nama hari dan bulan menurut data tanggal pada sistem

Baris Kode

PROGRAM ZODIAK;
USES CRT, DOS;

TYPE TANGGAL = RECORD


DD, MM, YY:INTEGER;
END;

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)
*)

FUNCTION INTTOSTR(I: LONGINT): STRING;


VAR
S: STRING[11];

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] =

Komunitas eLearning IlmuKomputer.Com 2


Copyright © 2003-2006 IlmuKomputer.Com
('JANUARI','PEBRUARI','MARET','APRIL',
'MEI','JUNI','JULI','AGUSTUS','SEPTEMBER',
'OKTOBER','NOPEMBER','DESEMBER');
VAR
Y, M, D, DOW : Word;

BEGIN
GETDATE(Y,M,D,DOW);

HARI_INI := 'HARI INI : ' + DAYS[DOW] + ', ' +


INTTOSTR(d) + ' ' + MONTHS[M] + ' ' + INTTOSTR(y);
END;

(*
PROSEDUR UNTUK MENULISKAN TEKS
PADA POSISI TERTENTU
*)

PROCEDURE TULIS(KIRI, ATAS, PILIH:INTEGER;


TEKS:STRING);
VAR PANJANG:INTEGER;

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;

TULIS(KIRI, ATAS, 1, CHAR(201));


TULIS(KIRI, ATAS+TINGGI, 1, CHAR(200));
TULIS(KIRI+LEBAR, ATAS, 1, CHAR(187));
TULIS(KIRI+LEBAR, ATAS+TINGGI, 1, CHAR(188));

FOR I:= KIRI+1 TO KIRI+LEBAR-1 DO


BEGIN
TULIS(I, ATAS, 1, 'Í');
TULIS(I, ATAS+TINGGI, 1, 'Í');
END;

Komunitas eLearning IlmuKomputer.Com 3


Copyright © 2003-2006 IlmuKomputer.Com
FOR I:= ATAS+1 TO TINGGI+ATAS-1 DO
BEGIN
TULIS(KIRI, I, 1,CHAR(186));
TULIS(KIRI + LEBAR, I, 1,CHAR(186));
END;

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);

IF (SJK) = 'L' THEN


TULIS(3,3,1,'MAS ' + NAMA)
ELSE
TULIS(3,3,1,'MBA ' + NAMA);

TULIS (3,4,1, 'TERNYATA ZODIAK ANDA ADALAH ...');

WINDOW((80-14) dIV 2,6,14,2,$21,$1C,0);


WINDOW(2,10,77,13,$21,$1C,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;

Komunitas eLearning IlmuKomputer.Com 4


Copyright © 2003-2006 IlmuKomputer.Com
'2': BEGIN
TULIS(1,7,2,'AQUARIUS')
{TULIS(3,19,1,'')}
END;
'3' : BEGIN
TULIS(1,7,2,'PISCES')
{TULIS(3,19,1,'')}
END;
'4': BEGIN
TULIS(1,7,2,'ARIES')
{TULIS(3,19,1,'')}
END;
'5' : BEGIN
TULIS(1,7,2,'TAURUS')
{TULIS(3,19,1,'')}
END;
'6': BEGIN
TULIS(1,7,2,'GEMINI')
{TULIS(3,19,1,'')}
END;
'7' : BEGIN
TULIS(1,7,2,'CANCER')
{TULIS(3,19,1,'')}
END;
'8': BEGIN
TULIS(1,7,2,'LEO')
{TULIS(3,19,1,'')}
END;
'9' : BEGIN
TULIS(1,7,2,'VIRGO')
{TULIS(3,19,1,'')}
END;
'A': BEGIN
TULIS(1,7,2,'LIBRA')
{TULIS(3,19,1,'')}
END;
'B' : BEGIN
TULIS(1,7,2,'SCORPIO')
{TULIS(3,19,1,'')}
END;
'C': BEGIN
TULIS(1,7,2,'SAGITARIUS')
{TULIS(3,19,1,'')}
END;
END;
END;

(*
PROSEDUR UNTUK MENENTUKAN IDX BERDASARKAN TANGGAL DAN BULAN
YANG DIINPUTKAN
*)

PROCEDURE CEK_ZODIAK(TANGGAL, BULAN:WORD);


VAR NAMA_ZODIAK:STRING;

Komunitas eLearning IlmuKomputer.Com 5


Copyright © 2003-2006 IlmuKomputer.Com
BEGIN
CLRSCR;

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

ELSE IF BULAN = 5 THEN


BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '6'
ELSE
IDX := '5'
END
ELSE IF BULAN = 6 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '7'
ELSE
IDX := '6'
END
ELSE IF BULAN = 7 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '8'
ELSE
IDX := '7'
END
ELSE IF BULAN = 8 THEN
BEGIN

Komunitas eLearning IlmuKomputer.Com 6


Copyright © 2003-2006 IlmuKomputer.Com
IF (TANGGAL) >= 23 THEN
IDX := '9'
ELSE
IDX := '8'
END
ELSE IF BULAN = 9 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := 'A'
ELSE
IDX := '9'
END
ELSE IF BULAN = 10 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := 'B'
ELSE
IDX := 'A'
END
ELSE IF BULAN = 11 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := 'C'
ELSE
IDX := 'B'
END
ELSE IF BULAN = 12 THEN
BEGIN
IF (TANGGAL) >= 23 THEN
IDX := '1'
ELSE
IDX := 'C'
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;

WHILE (HURUF <> #13) AND (LENGTH(STANGGAL) < 8) DO


BEGIN
REPEAT
HURUF:=READKEY;

(* PEMBATASAN AGAR TOMBOL KEYBOARD YG BERFUNGSI


HARUSLAH TOMBOL ANGKA DAN ENTER SAJA *)

Komunitas eLearning IlmuKomputer.Com 7


Copyright © 2003-2006 IlmuKomputer.Com
UNTIL HURUF IN ['1','2','3','4','5',
'6','7','8','9','0',#13];
IF HURUF <> #13 THEN
BEGIN
STANGGAL := STANGGAL + HURUF;
WRITE(HURUF);

IF (LENGTH(STANGGAL)=2) OR
(LENGTH(STANGGAL)=5) THEN
BEGIN
STANGGAL := STANGGAL + '/';
WRITE('/');
END;
END;
END;

TULIS(39,7, 1, STANGGAL);

(* MENGISI NILAI-NILAI VARIABEL (TANGGAL,


BULAN DAN TAHUN) BERDASARKAN STRING
YANG DIINPUTKAN *)

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');

Komunitas eLearning IlmuKomputer.Com 8


Copyright © 2003-2006 IlmuKomputer.Com
READKEY;

CLRSCR;
WINDOW(1,1,79,23,$1D,$7F,1);
WINDOW(15,3,50,8,$2A,$6B,0);

TULIS (20,5,1,'NAMA ANDA : ');


GOTOXY(39,5);READLN(NAMA);
TULIS (20,7,1,'TANGGAL LAHIR : ');

INPUT_TANGGAL;

TULIS (20,9,1,'J. KELAMIN (L/K) : ');

WHILE (HURUF <> #13) AND (LENGTH(SJK) < 2) DO


BEGIN
REPEAT
HURUF := READKEY;
UNTIL HURUF IN ['L', 'l', 'p', 'P', #13];
IF HURUF <> #13 THEN
BEGIN
SJK := SJK + HURUF;
WRITE (HURUF);
END;
END;

(* 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

Pada tampilan muka dilihatkan keterangan mengenai program.

Komunitas eLearning IlmuKomputer.Com 9


Copyright © 2003-2006 IlmuKomputer.Com
Tampilan Input

Tampilan input adalah tampilan permintaan input data yang akan diproses.

Komunitas eLearning IlmuKomputer.Com 10


Copyright © 2003-2006 IlmuKomputer.Com
Tampilan Hasil

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

Komunitas eLearning IlmuKomputer.Com 11


Copyright © 2003-2006 IlmuKomputer.Com
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 12


Copyright © 2003-2006 IlmuKomputer.Com

Anda mungkin juga menyukai