Anda di halaman 1dari 58

Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

PEMROGRAMAN KOMPUTER
DALAM HISAB DAN RUKYAT

 PENDAHULUAN
 SEKILAS TENTANG HISAB DAN RUKYAT
 PENGERTIAN DASAR TENTANG KOMPUTER
 ALGORITHME DAN BAHASA PEMROGRAMAN
 PEMROGRAMAN MACRO DALAM WINWORD DAN EXCEL
 PEMBUATAN PROGRAM KOMPUTER UNTUK HISAB DAN
RUKYAT

1
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

1. Pendahuluan
A. Umum

Teknologi komputer merupakan bagian dari kehidupan manusia dan masyarakat, bahkan
pada dasarnya teknologi secara umum dan komputer secara khusus adalah salah satu
sarana utama bagi manusia untuk meningkatkan kualitas hidupnya. Perkembangan
teknologi akhir-akhir ini berjalan sedemikian pesatnya, dan teknologi komputer termasuk
yang sangat cepat merambah sampai di hampir seluruh aspek kehidupan sehingga era
saat-saat ini para pakar menyebutnya sebagai era komputerisasi.

Gambar 1. Hilal yang dilihat di Mesir bisa segera diinformasikan lewat telpon ke Indonesia

Globalisasi yang demikian populer saat ini tidak terlepas dari pengaruh dorongan
percepatan perkembangan teknologi komputer, tidak luput pula tentunya pengaruhnya

Satelit

Hilal

Mesir
Indonesia
terhadap aspek kehidupan sosial masyarakat termasuk didalamnya umat Islam, yang
secara khusus dalam buku ini dibahas perihal komputerisasi di Bidang Hisab dan Rukyat.

Berkat kemajuan teknologi yang didukung perangkat komputer modern, hasil


hisab/rukyat yang dilakukan umat Islam di belahan bumi lain, dapat diketahui dengan
cepat atau bahkan dalam hitungan milidetik oleh umat Islam di belahan bumi yang
lainnya. Gambar 1. memperlihatkan arus informsai hilal yang terlihat di Mesir dapat
diberitakan lewat jalur telpon ke Indonesia melalui satelit. Di satu sisi perkembangan
teknologi ini mampu mempercepat arus informasi, disisi lain membawa dampak yang
cukup pelik karena umat Islam sekarang ini terkotak-kotak dalam negara yang berbeda-
beda sehingga tidak ada satu keputusan yang mengikat untuk seluruh umat.

Sisi positif lain, perkembangan komputer yang pesat diharapkan dapat mendukung
pelaksanaan hisab dan rukyat hilal, sedemikian rupa sehingga perbedaan-perbedaan
yang terjadi di masyarakat berkisar hasil hisab dan rukyat dapat diminimalkan. Dalam hal
ini, komputer ataupun teknologi bukan satu-satunya faktor yang dapat memecahkan
permasalahan perbedaan dalam kalender Islam. Teknologi komputer hanya merupakan
sarana bantu untuk memperkecil kesalahan-kesalahan manusiawi yang biasa terjadi.

B. Maksud Dan Tujuan

2
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Maksud penulisan buku ini adalah untuk memberikan introduksi tentang ilmu komputer
yang dapat dimanfaatkan untuk program hisab dan rukyat. Tujuan penulisan buku ini
adalah sebagai gagasan bagi pemutakhiran teknologi hisab dan rukyat dengan
memaksukkan komponen teknologi komputer didalamnya.

C. Konsep Komputerisasi Program Hisab dan Rukyat

Apa yang dimaksud dengan komputerisasi Program Hisab dan Rukyat? Apakah dengan
komputer permasalahan hisab dan rukyat dapat dipecahkan? Apakah program komputer
sesuai dengan Fiqh? Dan masih banyak pertanyaan-pertanyaan lain muncul tatkala kita
bicara masalah komputerisasi hisab dan rukyat.

Gambar 2. Konsep Komputerisasi Hisab dan Rukyat

Astronomi
Matematik
Statistik
dll
Komputer
Hisab
Hardware Hasil yang lebih akurat
Software
Brainware
Pengamat
Peralatan Rukyat
Lokasi
Prediksi
dll

Ketika kita bicara masalah komputerisasi dalam program hisab, maka kita bicara
bagaimana menghitung dengan cepat dan akurat yang mempertimbangkan berbagai
parameter baik itu dari astronomi, matematik, statistik dan lain-lain dengan
memanfaatkan komputer sedemikian rupa sehingga kesalahan manusia dapat
diminimalkan. Dengan komputer juga dimungkinkan untuk memasukkan semua
parameter-parameter perhitungan. Di lain hal, ketika kita bicara kompterisasi program
hilal, maka kita bicara bagaimana mengoptimalkan pengamatan hilal sedemikian rupa
hasil yang diperoleh lebih akurat. Dalam hal ini memperhitungkan unsur-unsur pengamat,
lokasi, peralatan dan prediksi serta paramater-parameter lain yang mendukung
keakuratan hasil pengamatan dengan memasukkan pemanfaatan komputer sebagai
sarana bantu untuk keberhasilan rukyat.

Gambar 2. menunjukkan konsep komputerisasi hisab dan rukyat yang diharapkan untuk
memunculkan hasil yang lebih akurat dibanding hisab dan rukyat tanpa pemanfaatan
teknologi komputer.

Selanjutnya dalam tulisan ini lebih menekankan bahasannya pada topik komputerisasi,
bukan pada hisab dan rukyat dengan segala macam pengertiannya.

3
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

2. SEKILAS MENGENAI HISAB DAN RUKYAT


Sebenarnya masalahnya obyektif. Sunnatullah (hukum alam) itu satu. Kalau hisab
(hitungan) dikerjakan teliti, dan rukyah (observasi) dilakukan dengan betul, maka
mustahil hisab dan rukyah bertentangan, sama mustahilnya matahari di Indonesia terbit
pukul 03:00 WIB, sekalipun ada orang yang mengaku telah melihatnya, dan berani
disumpah. Rukyah 1 Ramadhan harus dikerjakan pada tgl 29 Sya'ban. Namun karena
periode rembulan memutari bumi itu 'nanggung', yakni 29,5 hari lebih, maka bisa jadi dia
baru akan kelihatan pada 30 Sya'ban-nya. Maka tak heran Rasulullah bersabda:
"Bila rembulan tidak kelihatan, genapkan Sya'ban jadi 30 hari". Praktis sebenarnya.

Masalahnya, soal kelihatan apa tidak, terkadang tergantung oleh faktor non astronomis,
seperti cuaca, medan (topografi), maupun oleh pengalaman si pengamat. Jaman
sekarang ini, sudah jarang orang yang 'kenal langit', maklum sudah ada jam, kompas
atau radio. Makanya banyak yang tidak tahu sifat-sifat hilal, di mana letaknya,
mengamatinya jam berapa. Akibatnya ada yang keliru melihat pesawat atau awan dan
dikira hilal. Akibatnya rukyat bisa salah. Pada zaman Nabi, hampir setiap orang tahu sifat-
sifat hilal, karena mereka sehari-hari harus bernavigasi dengan melihat langit, sehingga
bila ada seorang Badui bersaksi telah melihatnya pun, Rasulullah mempercayainya, dan
menyatakan besok Ramadhan dimulai. Pada zaman sekarang ini, di beberapa negeri
muslim, saksi hilal diberi honor, akibatnya mereka berlomba-lomba adu cepat. Dan tak
jarang, mereka mengaku menyaksikan hilal, padahal rembulan belum ijtima' atau irtifa'
masih negatif. Ini ibarat mengatakan matahari di Indonesia terbit pukul 03:00 WIB. Lebih
dari itu, kapan 29 Sya'ban, ternyata sudah ditabulasi dalam suatu kalender, yang
tentunya dihitung dengan hisab jauh-jauh hari. Nah di sini ternyata bisa timbul kalender
yang berbeda-beda, karena terdapat berbagai definisi pergantian bulan. Kapan bulan
Rojab berganti ke bulan Sya'ban? Apakah bila rembulan mengalami ijtima' (conjunction),
atau bila irtifa'-nya (altitude) sudah lebih dari 2 derajat. Mungkin ada kalender lain yang
mensyaratkan
irtifa' 5 derajat, atau 7 derajat; atau tidak cuma irtifa' tapi juga tingkat kilau (illuminasi)
dll. Dan andaipun definisi astronomis ini diseragamkan, kalendernya masih juga lain-lain,
tergantung
dari posisi geografis mana ia dihitung. Irtifa' rembulan dari daerah tropis berbeda dengan
dari daerah sedang. Rembulan dengan irtifa' negatif adalah mustahil untuk dilihat, karena
ia masih
di bawah cakrawala. Jadi perbedaan ini bisa mencapai satu hari! Dan karena di dunia ini
ada 24 daerah waktu, maka total jenderal perbedaan kalender ini bisa mencapai 2 hari !

Pertanyaan selanjutnya, terus bagaimana agar seluruh dunia bersatu dalam 1 Ramadhan
dan satu dalam 1 Syawal? Mungkinkah muslim di seluruh dunia bisa serentak memulai 1
Ramadhan pada hari Jum'at 10 Januari 1997? Berita rukyatul hilal di suatu tempat bisa
disebarkan ke seluruh dunia
pada saat yang sama melalui radio.

Taruhlah di Samoa (179 W), Kamis ini kalender menunjukkan 29 Sya'ban, namun hilal bisa
dilihat. Maka segera diumumkan agar "besok", yakni hari Jum'at mulai puasa. Berita ini
dengan cepat akan mencapai Tuvalu (179 E) yang cuma satu "loncatan" saja dari Samoa.
Baik di Samoa maupun Tuvalu sama-sama senja. Tapi apa makna "besok" di Tuvalu?

Ketika "besok" bagi Samoa adalah hari Jum'at, pada saat yang sama di Tuvalu sudah
Jum'at, dan "besok" adalah Sabtu. Antara Samoa dan Tuvalu terletak garis batas tanggal
internasional. Untuk mengatasi hal ini jelaslah, bahwa dalam pembuatan kalender Islam
pun perlu diperhatikan adanya suatu konvensi global. Suatu konvensi global itu misalnya:
"bila ijtima' terjadi sebelum pukul 12:00 GMT, maka hari besok adalah permulaan bulan
baru". Hal ini karena pada pukul 12:00 GMT, hari di seluruh dunia masih sama. Namun
sepertinya persatuan ini belum mungkin tanpa adanya infrastruktur
yang mempersatukan ummat Islam di seluruh dunia, karena hanya suatu khilafah yang

4
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

berhak dan mampu memberlakukan satu definisi kalender Islam yang bisa berlaku global
dan mengikat, dan setelah itu rukyah dibangun di atas landasan kalender itu, dan
dikerjakan secara merata di seluruh dunia oleh ahlinya.

5
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

2. PENGERTIAN DASAR TENTANG KOMPUTER


A. Pengertian Komputer
Komputer adalah serangkaian ataupun
sekelompok mesin elektronik yang terdiri dari
ribuan bahkan jutaan komponen yang dapat
saling bekerja sama, serta membentuk sebuah
sistem kerja yang rapi dan teliti. Sistem ini
kemudian dapat digunakan untuk
melaksanakan serangkaian pekerjaan secara
otomatis, berdasar urutan instruksi ataupun
program yang diberikan kepadanya.

Definisi yang ada memberi makna bahwa


komputer memiliki lebih dari satu bagian yang
saling bekerja sama, dan bagian-bagain itu
baru bisa bekerja kalau ada aliran listrik yang
mengalir didalamnya. Istilah mengenai
sekelompok mesin, ataupun istilah mengenai
jutaan komponen kemudian dikenal sebagai
hardware komputer atau perangkat keras
komputer.

Hardware komputer juga dapat diartikan


sebagai peralatan fisik dari komputer itu
sendiri. Peralatan yang secara fisik dapat
dilihat, dipegang, ataupun dipindahkan.

Dalam hal ini, komputer tidak mungkin bisa


bekerja tanpa adanya program yang telah
dimasukkan kedalamnya. Program ini bisa
berupa suatu prosedur peng-operasian dari
komputer itu sendiri ataupun pelbagai prosedur
dalam hal pemrosesan data yang telah
ditetapkan sebelumnya. Dan program-program
inilah yang kemudian disebut sebagai
software komputer atau perangkat lunak
komputer.

Dalam arti yang paling luas, software komputer


bisa diartikan sebagai suatu prosedur
pengoperasian. Suatu acara yang ditayangkan
oleh TVRI misalnya, dapat dianggap sebagai

6
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

software dari suatu peralatan televisi. Demikian


pula halnya dengan musik yang telah direkam
diatas kaset, data diatas kertas, serta cerita
ataupun uraian yang ada didalam sebuah buku.

Secara prinsip, komputer hanyalah merupakan


sebuah alat; Alat yang bisa digunakan untuk
membantu manusia dalam menyelesaikan
pekerjaannya. Untuk bisa bekerja, alat tersebut
memerlukan adanya program dan manusia.
Pengertian manusia kemudian dikenal dengan
istilah brainware (perangkat manusia).

Konsep hardware - software - brainware adalah


merupakan konsep tri-tunggal yang tidak bisa
dipisahkan satu dengan lainnya. Untuk tahap
pertama, manusia harus memasukkan program
terlebih dahulu kedalam komputer. Setelah
Setelah program tersimpan didalam komputer,
maka komputer baru bisa bekerja untuk
membantu manusia dalam menyelesaikan
persoalan ataupun pekerjaannya.

7
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

B. Dari Generasi Ke-Generasi


Generasi pertama dari komputer, ditandai
dengan diketemukannya tabung hampa
udara sebagai alat penguat sinyal. Generasi
ini kemudian diganti dengan generasi
transistor, dan akhirnya timbul generasi
ketiga dengan munculnya IC-Chip. Kini
banyak diperdebatkan, apakah
Microprocessor yang merupakan
pengembangan dan peningkatan
kemampuan dari IC-Chip bisa dikatakan
sebagai pelopor generasi ke-empat,
ataukah masih tetap pada generasi ketiga.

Alasan yang mendukung adalah,


kemampuan dari Microprocessor jauh diatas
IC-Chip, sedang alasan yang menolak
pendapat tersebut mengatakan, bahwa
konsep dasar Microprocessor masih sama
dan itu hanya merupakan peningkatan dari
kemampuan dari IC-Chip belaka. Dengan
demikian, pada saat ini ada yang
berpendapat bahwa kita sudah memasuki
komputer generasi ke-empat dan bahkan
kelima, tetapi ada juga yang masih
berpendapat bahwa kita belum beranjak
dari generasi ketiga.

a. Generasi Pertama.

Tabung hampa udara sebagai penguat


sinyal, merupakan ciri khas komputer
generasi pertama. Pada awalnya, tabung
hampa udara (vacum-tube) digunakan
sebagai komponen penguat sinyal. Bahan
bakunya terdiri dari kaca, sehingga banyak
memiliki kelemahan, seperti: mudah pecah,
dan mudah menyalurkan panas. Panas ini
perlu dinetralisir oleh komponen lain yang
berfungsi sebagai pendingin.

Dan dengan adanya komponen tambahan,


akhirnya komputer yang ada menjadi besar,
berat dan mahal. Pada tahun 1946,
komputer elektronik didunia yang pertama
yakni ENIAC selesai dibuat. Pada komputer
tersebut terdapat 18.800 tabung hampa
udara dan berbobot 30 ton. begitu besar
ukurannya, sampai-sampai memerlukan
suatu ruangan kelas tersendiri.

8
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Pada gambar nampak komputer ENIAC,


yang merupakan komputer elektronik
pertama didunia yang mempunyai bobot
seberat 30 ton, panjang 30 M dan tinggi 2.4
M

b. Generasi Kedua.

Transistor merupakan ciri khas komputer


generasi kedua. Bahan bakunya terdiri
atas tiga lapis, yaitu: "basic", "collector"
dan "emmiter". Transistor merupakan
singkatan dari Transfer Resistor, yang
berarti dengan mempengaruhi daya tahan
antara dua dari tiga lapisan, maka daya
(resistor) yang ada pada lapisan berikutnya
dapat pula dipengaruhi. Dengan demikian,
fungsi transistor adalah sebagai penguat
sinyal. Sebagai komponen padat, tansistor
mempunyai banyak keunggulan seperti
misalnya: tidak mudah pecah, tidak
menyalurkan panas. dan dengan demikian,
komputer yang ada menjadi lebih kecil dan
lebih murah.

Beberapa contoh komputer generasi kedua


adalah: IBM Serie 1400, NCR Serie 304,
MARK IV dan Honeywell Model 800. Pada
gambar nampak sebuah papan rangkaian
yang menggunakan transistor dan
digunakan oleh Komputer MARK IV ditahun
1957 yang merupakan komputer pertama
yang diproduksi di- Jepang.

Pada tahun 1960-an, komputer komersial


yang memanfaatkan transistor dan
digunakan secara luas mulai beredar
dipasaran. Komputer IBM- 7090 buatan
Amerika Serikat merupakan salah satu
komputer komersial yang memanfaatkan
transistor.

9
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

c. Generasi Ketiga

Konsep semakin kecil dan semakin murah


dari transistor, akhirnya memacu orang
untuk terus melakukan pelbagai penelitian.
Ribuan transistor akhirnya berhasil
digabung dalam satu bentuk yang sangat
kecil. Secuil silicium yag mempunyai ukuran
beberapa milimeter berhasil diciptakan, dan
inilah yang disebut sebagai Integrated
Circuit atau IC-Chip yang merupakan ciri
khas komputer generasi ketiga. Contoh
komputer generasi ini adalah: Apple
Computer dan TRS Model 80 dan IBM S/360.

Pada gambar disebelah nampak, komputer


IBM S/360 yang menggunakan komponen
IC. Dinamakan IBM S/360 karena mampu
melakukan operasi satu lingkaran penuh
(360 derajat) yang maksudnya mampu
melakukan proses yang dibutuhkan oleh
aplikasi bisnis maupun teknik.

d. Generasi Keempat

Pada generasi ini ditandai dengan


munculnya: LSI (Large Scale Integration)
yang merupakan pemadatan ribuan IC
kedalam sebuah Chip. Istilah chip
digunakan untuk menunjukkan suatu
lempengan persegi empat yang memuat
rangkaian-rangkaian terpadu (integreted
circuits). LSI kemudian dikembangakan
dalam VLSI (Very Large Scale Integration).

Perkembangan berikutnya juga ditandai


dengan munculnya microprocessor dan
semi conductor. Perusahaan-perusahaan
yang membuat micro-processor
diantaranya adalah: Intel Corporation,
Motorola, Zilog dan lainnya lagi. Dipasaran
bisa kita lihat adanya microprocessor dari
Intel dengan model 4004, 8088, 80286,
80386, 80486, 80586 yang lebih dikenal
dengan nama: Pentium dan lainnya lagi.
Sedang pabrik Motorola mengeluarkan
model 6502, 6800 dan lainnya.

C. Pengertian Komputer Berdasar Golongan

10
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

a. General Purpose Computer

Komputer yang umum digunakan pada


setiap hari, juga bisa disebut sebagai
general-purpose computer, dimana bisa
digunakan untuk menyelesaikan pelbagai
variasi pekerjaaan. Komputer jenis ini
dapat menggunakan pelbagai software,
bermacam-macam langkah yang saling
menyempurnakan, termasuk didalamnya
penulisan dan perbaikan (word-
processing), manipulasi fakta-fata didalam
database, menyelesaikan pelbagai
perhitungan ilmiah, ataupun mengontrol
sistem keamanan organisasi, pembagian
daya listrik serta temperatur.

Walaupun general purpose computer


dapat diprogram untuk digunakan dalam
beberapa fungsi, tetap mempunyai
batasan-batasan dalam hal kemampuan,
ukuran ataupun persyaratan. Sebagai
contoh, general purpose computer tidak
bisa digunakan untuk memproses
perhitungan seluruh data statistik yang
dibutuhkan untuk peramalan cuaca
ataupun pengetesan pesawat terbang.

b. Special-purpose Computer

Special-purpose computer digunakan


untuk menyelesaikan pekerjaan ataupun
aplikasi khusus. Special purpose pada
awalnya merupakan general-purpose,
yang digunakan secara khusus dan
disesuaiakan dengan konfigurasi ataupun
peralatan didalamnya yang sudah
dimodifikasi sedemikian rupa.

Sebagai contoh konfigurasi dari special


purpose computer yang digunakan pada
sistem komputer berskala besar adalah
front-end processor; yang digunakan untuk
mengontrol fungsi input dan output dari
komputer utama. Contoh lain dari special
purpose computer adalah adalah back-end
processor, yang mengambil data dari
storage serta meletakkan dan
mengaturnya kembali kedalam storage.

11
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Dedicated processor juga merupakan


special purpose computer yang bagian
dalamnya telah dirubah sedemikian rupa
agar memiliki fungsi khusus. Dedicated
processor dirancang sedemikian rupa agar
bisa digunakan untuk menyelesaikan
langkah dan proses khusus, dimana hal ini
bisa ditemui pada: pelbagai robot yang
digunakan pada pabrik, mesin-mesin
kesehatan dipelbagai rumah sakit serta
aneka video game.

D. Pengertian Komputer Menurut Kapasitasnya


a. Komputer Mikro (Personal
Computer)

Pada awalnya, komputer jenis ini


diciptakan untuk memenuhi kebutuhan
per-orangan (personal). Kebutuhan per-
orangan dalam hal menyimpan ataupun
memproses data, tentunya tidak
sebanyak kebutuhan sebuah
perusahaan. Dikarenakan hal tersebut,
kemampuan dan teknologi yang dimiliki
oleh Personal Komputer pada awalnya
memang sangat terbatas.

Pada awalnya, memory yang dimiliki


oleh sebuah personal komputer hanya
berkisar antara 32 hingga 64 KB (Kilo
Byte). Tetapi dalam perkembangannya,
banyak personal komputer yang kini
memiliki memory hingga 8 ataupun 32
MB (Mega Byte). Komputer personal
model Apple II merupakan pelopor dari
kelahiran personal komputer yang ada
pada saat sekarang.

Karena harganya relatif murah,


bentuknya kecil dan teknologi yang
dimiliki diangap sudah memadai, maka
personal komputer menjadi begitu cepat
populer. Personal komputer kini tidak
hanya digunakan oleh perorangan tetapi
pada akhirnya banyak digunakan oleh
perusahaan untuk menyelesaikan
pelbagai masalah yang ada
diperusahaan.

12
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Pada umumnya personal komputer


hanya mampu bekerja untuk melayani
satu orang pemakai (single-user), tetapi
dalam perkem bangannya dengan
menggunakan konsep LAN (Local Area
Network) personal komputer juga dapat
digunakan untuk melayani banyak
pemakai dalam saat yang bersamaan
(konsep multi user).

Pada konsep LAN yang merupakan


sebuah jaringan, terdapat sebuah
otak/pengendali yang disebut sebagai
server dan beberapa anggota yang
disebut sebagai terminal. Secara pisik
bentuk server ataupun terminal tidak
berbeda dengan bentuk sebuah PC.
Hubungan server dan terminal, dilakukan
melalui sebuah kabel. Data yang berasal
dari pelbagai terminal, akan disimpan
secara terpusat oleh server.

Personal komputer pada saat ini juga


mampu melakukan komunikasi data
dengan personal komputer lainnya
ditempat yang saling berjauhan. Dengan
menggunakan sebuah modem, maka
data yang berasal dari komputer akan
dirubah menjadi gelombang suara, dan
suara inilah yang kemudian dikirim
melalui kabel telpon. Modem yang ada
ditempat lain, akan menangkap
gelombang suara ini dan merubah
bentuknya menjadi gelombang yang bisa
diproses oleh komputer.

Perbedaan konsep antara LAN dan


Modem adalah, LAN hanya bisa
digunakan untuk tempat yang tidak
terlalu jauh (saat ini diartikan sebagai:
tidak lebih dari 2.000 meter), dan
biasanya masih terbatas dalam satu
gedung. Selebihnya diperlukan modem.
Kabel yang digunakan pada LAN adalah
kabel digital, sehingga data bisa
langsung dikirim tanpa perlu merubah
bentuk seperti halnya yang dilakukan
oleh modem.

13
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Jenis PC lainnya yang tengah populer


pada saat ini adalah: note-book. Note-
book menggunakan silikon chip yang
sangat tipis yang merupakan lambang
kemajuan teknologi. Komputer jenis ini
mempunyai bentuk yang sangat kecil
apabila dibanding dengan jenis komputer
lainnya. Note-book biasanya dilengkapi
dengan portable battery-power,
sehingga tanpa adanya listrik-pun note-
book masih bisa dioperasikan. Dengan
demikian, komputer jenis ini sangat
cocok digunakan bagi para pemakai
yang sering berpergian.

Karena menggunakan monitor jenis LCD


(Liquid Cristal Display), note-book
mempunyai bentuk yang sangat tipis.
Disamping itu, note-book juga memiliki
fasilitas disket ataupun hard-disk seperti
hal-nya komputer PC pada umumnya.
Internal memory yang dimiliki juga
sangat besar, dimulai dari 4 MB yang
kemudian bisa dikembangkan hingga 64
MB.

Note-book juga mampu melakukan


komunikasi data dengan sesama note-
book ataupun dengan komputer lainnya
dilokasi yang saling berjauhan.

b. Komputer Mini

Komputer mini mempunyai kemampuan


berapa kali lebih besar jika dibanding
dengan personal komputer. Hal ini
disebabkan karena micro-pocessor yang
.
digunakan untuk memproses data
memang mempunyai kemampuan jauh
lebih unggul jika dibanding dengan
micropocessor yang digunakan pada
personal komputer. Ukuran pisiknya
dapat sebesar almari kecil.

Komputer mini pada umumnya dapat


digunakan untuk melayani lebih dari satu
pemakai (multi user). Dalam sistem multi
user ini, pada akhirnya personal
komputer banyak digunakan sebagai
terminal yang berfungsi untuk
memasukkan data. Contoh Komputer
mini: IBM AS-400

c. Komputer Mainframe

14
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Ciri utama yang membedakan


pengertian antara mini komputer dengan
mainframe adalah, mainframe memiliki
processor lebih dari satu. Dengan
demikian, dari segi kecepatan proses
mainframe jauh lebih cepat jika
dibanding dengan mini komputer.

Kecepatan kerja mainframe mencapai 1


milyar operasi perdetik (1 giga
operations per-seconds = 1 GOPS).
Kecepatan semacam ini sangatlah
diperlukan, karena mainframe biasanya
digunakan untuk memproses data-data
yang mempunyai kapasitas sangat
besar, dan disamping itu, mainframe
biasanya juga digunakan oleh puluhan
hingga ratusan pemakai yang bekerja
secara bersama-sama.

Suatu teknik atau cara yang


memungkinkan banyak orang pada
pelbagai terminal dapat meng-access
pada satu komputer pada saat yang
bersamaan, dikenal dengan time-
sharing. Didalam pengertian time
sharing sendiri, CPU dalam memberikan
perhatiannya sebenarnya hanya kepada
satu pemakai pada satu saat, dan
kemudian dilanjutkan dengan pemakai
berikutnya. Tetapi karena memiliki
kecepatan yang sangat tinggi, maka
jarak pemakaian waktu antara satu
pemakai dan lainnya tidaklah nampak
secara jelas.

Mainframe secara umum membutuhkan


ruangan khusus dimana faktor
lingkungan yang terdiri dari temperatur,
kelembaban udara ataupun gangguan
asap dapatlah dimonitor. Hal ini
disebabkan karena nilai komputer serta
nilai dari informasi yang tersimpan
didalamnya sangatlah mahal. Ruangan
yang ada biasanya juga dilengkapi
dengan pelbagai sistem pengamanan
elektronik.

15
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

d. Super-komputer

Sesuai dengan namanya, super


komputer memiliki ciri khas, yaitu
kecepatan proses yang tinggi serta
memiliki kemampuan menyimpan data
yang jauh lebih besar apabila dibanding
dengan main-frame. Harga super
komputer sangatlah besar dan mahal.
Salah satau contoh super komputer
adalah Cray-2. Pengguna super
komputer biasanya negara-negara yang
sudah maju ataupun perusahaan-
perusahaan yang sangat besar, seperti
misalnya industri pesawat terbang
Nurtanio.

Dikarenakan kemampuannya yang


sangat luar biasa dan diantaranya
memiliki kemampuan untuk
membaca/menyadap pelbagai data dari
satelit, maka untuk pembelian sebuah
super komputer harus mendapat
persetujuan secara langsung dari
presiden. Permintaan Indonesia pernah
ditolak oleh presiden Amerika ketika
Nurtantio menginginkan untuk membeli
sebuah super komputer dari Amerika.

E. Pengertian Komputer Menurut Data Yang Diolah


Data yang diolah oleh komputer jenisnya
sangatlah banyak. Ada data yang berujut
gambar, suara, huruf, angka, keadaan,
simbol ataupun yang lainnya lagi. Dalam
hal ini, tidak setiap komputer bisa
mengolah seluruh data yang ada. Ada
komputer yang hanya bisa mengolah
suara, ataupun hanya bisa mengolah
gambar ataupun hanya mengolah huruf
dan angka saja. Walaupun demikian, ada
pula komputer yang bisa mengolah
beberapa data secara bersama-sama.

a. Digital Komputer

Merupakan suatu jenis komputer yang


bisa digunakan untuk mengolah data
yang bersifat kwantitatif (sangat banyak
jumlahnya). Data dari digital komputer
biasanya berupa simbol yang memiliki arti
tertentu, misalnya: simbol aphabetis yang
digambarkan dengan huruf A s/d Z
ataupun a s/d z, simbol numerik yang
digambarkan dengan angka 0 s/d 9
ataupun simbol-simbol khusus, seperti
halnya: ? / + * & !.

16
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

b. Komputer Analog.

Merupakan suatu jenis komputer yang


bisa digunakan untuk mengolah data
kualitatif. Data yang ada bukan
merupakan simbol, tetapi masih
merupakan suatu keadaan. Seperti
misalnya: keadaan suhu ataupun
kelembaban udara, ketinggian ataupun
kecepatan adalah merupakan suatu
keadaan yang oleh komputer kemudian
ditetapkan sehingga menjadi suatu
ukuran.

Analog banyak dipakai dipabrik-pabrik


yang tujuannnya untuk mengontrol
ataupun menghasilkan suatu produk.
Pengertian komputer analog lebih
mendekati dengan robotic ataupun mesin
otomatis.

c. Hibrid Komputer

Merupakan jenis komputer yang bisa


digunakan untuk mengolah data yang
bersifat kuantitatif ataupun kualitatif.
Hibrid komputer juga bisa dikatakan
sebagai gabungan dari analog dan digital
komputer. Komputer jenis ini banyak
digunakan oleh pelbagai rumah sakit
yang digunakan untuk memeriksa
keadaan tubuh dari pasien, yang pada
akhirnya, komputer bisa mengeluarkan
pelbagai analisa yang disajikan dalam
bentuk gambar, grafik ataupun tulisan.

F. Konsep Dasar Komputer


Dari apa yang telah diuraikan dapatlah
dilihat, bahwa pengertian komputer bisa
ditinjau dari bermacam-macam sudut,
seperti misalnya: tinjauan komputer dari
generasi ke-generasi, tinjauan komputer dari
sudut kapasitasnya, dan disamping itu,
komputer juga dapat ditinjau dari jenis data
yang diolahnya.

17
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Walaupun demikian, secara prinsip sebuah


komputer selalu memiliki sebuah konsep
dasar seperti yang nampak pada gambar.
Komputer apapun jenisnya, selalu memiliki
suatu peralatan yang disebut sebagai: Input
device, Central Processing Unit, Output
Device dan External memory.

a. Input Device

Input device bisa diartikan sebagai peralatan


yang berfungsi untuk memasukkan data ke-
dalam komputer. Jenis input device yang
dimiliki oleh komputer cukup banyak.

Dalam kehidupan sehari-hari, mata manusia


juga bisa diartikan sebagai salah satu input
device yang berfungsi untuk memasukkan
data kedalam otak manusia. Membaca bisa
diartikan sebagai memasukkan data
(kedalam otak manusia) melalui mata.

b. Central Processing Unit (CPU)

Bagian ini berfungsi sebagai pemegang


kendali dari jalannya kegiatan komputer, dan
dikarenakan itu, CPU juga disebut sebagai
otak dari komputer. Selain dari pada itu,
CPU juga berfungsi sebagai tempat untuk
melakukan pelbagai pengolahan data.
Pekerjaan pengolahan data diantaranya:
mencatat, melihat, membaca,
membandingkan, menghitung, mengingat,
mengurutkan maupun membandingkan.

Dalam bekerja, fungsi dari CPU


terbagi menjadi :

• Internal Memory/Main
Memory, berfungsi untuk me-
nyimpan data dan program.
• ALU (Arithmatic Logical Unit),
untuk melaksanakan perbagai

18
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

macam perhitungan.
• Control Unit, bertugas untuk
mengatur seluruh operasi komputer

CPU juga disebut sebagai microprocessor.


Dimana untuk bekerja microprocessor
dipengaruhi oleh kapasitas pemrosesan Bit-
nya dan juga frekwensi kerjanya. Kapasitas
bit untuk Microprocessor ada 8 bit, 16 bit, 32
bit dan 64 bit. Kemampuan CPU dilihat dari
bit-nya, bila suatu processor berkapasitas
pemrosesan 8 bit, dapat diartikan bahwa
pemrosesan tersebut memiliki 8 pintu masuk
untuk menerima bit-bit instruksi. Dengan
demikian, processor 16 bit, dapat
memproses kira-kira 2 kali lebih cepat dari
yang 8 bit.

Faktor lain yang mempengaruhi kecepatan


kerja microprocessor adalah frekwensi kerja
komputer. Ada CPU yang mempunyai
frekwensi 4.77 Mhz (mega hertz = juta
hertz), 8 Mhz, 16 Mhz, 40 Mhz, 50 Mhz dan
lain sebagainya. Semakin tinggi frekwensi
yang dimilikinya, semakin tinggi pula
kecepatan memprosesnya.

Microprocesor 8 bit adalah 8088, biasa


digunakan untuk komputer PC-XT dengan
frekwensi 4.77 Mhz. Microprocessor 16 bit
adalah 80286, dipasang untuk type PC-AT
dengan frekwensi antara 8 Mhz hingga 20
Mhz. Microprocessor 32 bit adalah 80386 dan
80486, kedua jenis microprocessor ini
dipasang pada jenis PC-ATgan frekwensi
antara 20 Mhz hingga 40 MHZ. Kini beredar
microprocessor jenis 80586 (pentium) dan
80686

Microprocessor 586 dikenal dengan nama


pentium, telah dirilis sejak bulan Maret 1993.
Banyak perubahan dan peningkatan pada
processor ini. Kecepatan yang dimiliki adalah
112 MIPS (Million Instruction PerSecond) atau
meningkat 5 kali lebih cepat dari generasi
486.

19
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

c. Output Device

Output device bisa diartikan sebagai


peralatan yang berfungsi untuk
mengeluarkan hasil pemrosesan ataupun
pengolahan data yang berasal dari CPU
kedalam suatu media yang dapat dibaca
oleh manusia ataupun dapat digunakan
untuk penyimpanan data hasil proses. Jenis
output device yang dimiliki oleh komputer
cukup banyak.

Dalam kehidupan sehari-hari, menulis, juga


bisa dikatakan sebagai suatu cara untuk
mengeluarkan hasil pemikiran kedalam
suatu media sehingga bisa dibaca oleh
manusia. Media yang dipergunakan untuk
menulis bisa berupa kertas ataupun bentuk
lainnya.

d. External Memory

External memory bisa diartikan sebagai


memory yang berada diluar CPU. Juga
disebut sebagai Secondary Storage
ataupun Backing Storage ataupun
Memory Cadangan yang berfungsi untuk
menyimpan data dan program. Data dan
program yang tersimpan didalam external
memory, agar bisa berfungsi data dan
program tersebut harus dipindahkan
terlebih dahulu kedalam internal memory.
Jenis external memory cukup banyak.

Dalam kehidupan sehari-hari, buku, kertas,


gambar foto, ataupun rekaman suara, juga
bisa dikatakan sebagai external memory dari
manusia. Dikatakan external memory karena
berfungsi sebagai tempat untuk menyimpan
data yang terletak diluar otak manusia.
Agar data-data yang ada didalam external
memory tersebut bisa berfungsi bagi
manusia, maka data-data tersebut, juga
harus dipindahkan terlebih dahulu kedalam
internal memory, misalnya dengan cara
membaca.

G. Pengertian Data dan Informasi

20
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Data adalah sesuatu yang belum


mempunyai arti bagi penerimanya dan
masih memerlukan adanya suatu
pengolahan. Data bisa berujut suatu
keadaan, gambar, suara, huruf, angka,
matematika, bahasa ataupun simbol-
simbol lainnya yang bisa kita gunakan
sebagai bahan untuk melihat lingkungan,
obyek, kejadian ataupun suatu konsep.

Informasi merupakan hasil pengolahan dari


sebuah model, formasi, organisasi,
ataupun suatu perubahan bentuk dari data
yang memiliki nilai tertentu, dan bisa
digunakan untuk menambah pengetahuan
bagi yang menerimanya. Dalam hal ini,
data bisa dianggap sebagai obyek dan
informasi adalah suatu subyek yang
bermanfaat bagi penerimanya. Informasi
juga bisa disebut sebagai hasil pengolahan
ataupun pemrosesan data.

Data bisa merupakan jam kerja bagi


karyawan perusahaan. Data ini kemudian
perlu diproses dan diubah menjadi
informasi.

Jika jam kerja setiap karyawan kemudian


dikalikan dengan nilai per-jam, maka akan
dihasilkan suatu nilai tertentu. Jika
gambaran penghasilan setiap karyawan
kemudian dijumlahkan, akan menghasilkan
rekapitulasi gaji yang harus dibayar oleh
perusahaan. Penggajian merupakan
informasi bagi pemilik perusahaan.
Informasi merupakan hasil proses dari data
yang ada, atau bisa diartikan sebagai data
yang mempunyai arti. Informasi akan
membuka segala sesuatu yang belum
diketahui

21
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

H. Hirarchi Penyajian Data

Pengertian data yang diolah oleh


komputer, cara penyajiannya dapat dibagi
dalam beberapa tingkatan / hirarchi, yaitu
:

a. Byte/Karacter

Merupakan satuan data paling kecil.


Karakter bisa berbentuk huruf (A s/d Z,
atau a s/d z), berbentuk angka (0 s/d 9),
ataupun berbentuk tanda baca lainnya
lagi.

b. Field

Merupakan kumpulan dari karakter-


karakter yang membentuk suatu arti
tertentu; Misalnya, Field untuk Nomor
Mahasiswa, Field untuk Nama Mahasiswa,
Field untuk Mata Pelajaran dan lainnya.

c. Record

Merupakan kumpulan dari field-


field yang membentuk sebuah arti.
Misalkan kumpulan field NIRM,
NAMA MATERI PENDIDIKAN pada
akhirnya membentuk sebuah
record.

d. File

File merupakan kumpulan dari


record-record . Dengan demikian,
hirarchi penyajian data dengan
urutan dari kecil kebesar adalah
sebagai berikut :

Byte/Character -> Field --> Record


--> File

I. Sistem Bilangan

22
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Pada dasarnya, komputer baru bisa


bekerja kalau ada aliran listrik yang
mengalir didalamnya. Dalam hal ini, aliran
listrik yang mengalir ternyata memiliki
dua kondisi, yaitu kondisi ON yang berarti
ada arus listrik, dan kondisi OFF yang
berarti tidak ada arus listrik. Berdasar hal
tersebut kemudian dibuat perjanjian,
bahwa kondisi ON diberi lambang 1
(angka satu), dan kondisi OFF diberi
lambang 0 (angka nol).

Seluruh data yang berupa angka, abjad


ataupun special character kemudian
ditulis dalam rangkaian kombinasi 0 dan
1, misal angka 5 ditulis dalam bentuk
000101 dan huruf D ditulis dalam 110100.
Pabrik komputer membuat seluruh
terjemahan ini dalam bentuk rangkaian
elektronik yang tersimpan didalamnya.

Dengan demikian, seandainya kita


kemudian memasukkan tulisan yang
berbunyi: I LOVE YOU melalui keyboard,
tulisan ini secara otomatis akan
diterjemahakan kedalam bentuk 1 dan 0
oleh komputer.

Agar bisa dibaca oleh manusia, hasil


terjemahan ini kemudian diterjemahkan
kembali kedalam bentuk dan huruf
ataupun angka seperti asalnya, dan
kemudian dikeluarkan melalui layar
monitor.

Karena hanya memiliki 2 angka dasar,


yaitu 0 dan 1, maka sistem bilangan
semacam ini kemudian dikenal sebagai
sistem bilangan biner (binary number).
Untuk perbandingan, sistem bilangan
yang telah kita kenal disebut sebagai
sistem bilangan desimal; Disebut desimal
karena memiliki angka dasar yang
berjumlah 10, yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8,
dan 9.

a. Sistem Bilangan Desimal

Sistem bilangan yang selama ini kita


kenal adalah sistem bilangan desimal,
dimana sistem bilangan desimal ini
memiliki angka dari 0 hingga 9, dengan
jumlah bilangan mencapai 10 buah.
Dalam contoh terlihat, bahwa angka 3675
bisa diartikan sebagai (5X101) + (7X101)

23
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

+ (6X102) + (3X103). Angka 10 merupakan


jumlah angka dasar yang dimiliki oleh
bilangan desimal.

b. Sistem Bilangan Binary

Karena sistem bilangan binary hanya


memiliki angka 0 dan 1 saja, maka nilai
11010 dalam bilangan biner dapat
diartikan sebagai: (0X20) + (1X21) +
(0X22) + (1X23) + (1X24) = 26. Angka 2
merupakan jumlah angka dasar yang
dimiliki oleh bilangan biner

Untuk mengkonversikan bilangan desimal


ke-binary, maka langkah yang bisa
dilakukan adalah : a. Apabila bilangan
tersebut bisa dibagi dengan 2, maka
hasilnya ditulis 0 pada sisi sebelah kanan
(lihat gambar disebelah).Tetapi apabila
tidak, maka angka 1 yang ditulis.

Untuk melakukan penambahan pada


bilangan binary, langkah yang dilakukan
adalah sama dengan langkah
penambahan pada bilangan desimal.
Karena angka tertinggi yang dimiliki
hanyalah angka 1, maka seandainya pada
penjumlahan tersebut mehasilkan angka
2, maka akan ditulis 0 dengan catatan
masih menyimpan 1. Seandainya pada
penjumlahan menghasilkan angka 3,
maka akan ditulis 1 dan masih
menyimpan 1 (lihat contoh).

Apabila dalam melakukan pengurangan


ternyata angka yang dimiliki masih
kurang nilainya, maka bisa diambil
langkah dengan cara meminjam angka
yang berada disebelah kiri. 1 angka
apabila dipinjam/dipindah keposisi kanan,
akan mempunyai nilai 2 (lihat contoh).

Langkah yang dilakukan pada saat


perkalian pada bilangan binary juga sama
dengan langkah yang dilakukan pada
bilangan desimal. Hal ini bisa dilihat pada
contoh yang ada.

24
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Prinsip pembagian pada bilangan binary


juga tidak berbeda dengan prinsip
pembagian pada bilangan desimal. Hal ni
bisa terlihat pada contoh yang ada.

c. Sistem Bilangan Octal dan


Hexadesimal

Selain menggunakan sistem binary,


komputer juga menggunakan sistem
bilangan octal, dimana mempunyai
jumlah bilangan dasar sebanyak 8 dan
sistem bilangan hexa-desimal yang
mempunyai bilangan dasar sejumlah 16.
Susunan angka yang dimiliki kedua
bilangan, seperti yang nampak pada
gambar.

Walaupun demikian, komputer tetap


bekerja dengan menggunakan sistem
binary. Angka dasar 8 dan 16 hanya
dibutuhkan saat mengubah dari atau
menjadi binary, dan dengan cara ini
memungkin penulisan menjadi lebih
ringkas dari nilai sebenarnya yang ada
didalam memory komputer. Octal
senantiasa ditulis dalam tiga angka dan
hexa desimal dalam empat angka.

Sistem bilangan Octal memiliki angka


sebanyak 8 buah, yaitu dari angka 0
hingga 7. Untuk membuat konversi
bilangan dari Oktal ke-desimal, digunakan
angka dasar 8, karena sesuai dengan
jumlah angka yang dimilikinya.

Karena jumlah angka yang dimiliki oleh


bilangan ini jumlahnya 16, maka angka 16
inilah yang dijadikan dasar untuk konversi
ataupun perhitungan-perhitungan lainnya.

d. System BCD

Pada awalnya, system BCD (Binary Coded


Decimal), menggunakan 4-bit guna
menyajikan bilangan desimal. Setiap digit
didalam bilangan desimal, akan dirubah
kedalam bentuk 4-bit binary. sebagai
contoh, bilangan 3752 didalam bilangan
desimal, akan diubah menjadi 0011 0111
0101 0010.

25
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Karena dianggap tidak efisien, yaitu


hanya sanggup menampung data
sebanyak 24 atau 16 karakter yang
berbeda, maka sistem BCD ini kemudian
disempurnakan dengan menggunakan 6-
bit guna menyajikan data yang ada.
Dengan demikian, data yang disajikan
akan menjadi lebih banyak lagi, yaitu 26
atau sejumlah 64 karakter yang berbeda-
beda.

f. System EBCDIC

EBCDIC (Extended Binary Coded Decimal


Interchange Code) menggunakan 8-bit
guna menyajikan data yang ada. Dengan
adanya 8-bit ini, tentu saja jumlah data
yang disajikan menjadi lebih besar, yaitu
sebanyak 28 atau 256 kombinasi. 4
karakter yang berada disebelah kiri
disebut sebagai zone-bits, dan 4 karakter
sisanya disebut sebagai numerik bits.
Kode-kode ini banyak digunakan oleh
komputer IBM ataupun peralatan yang
menggunakan standart IBM.

g. System ASCII

ASCII (American Standart Code for


Informa tion Interchange), menggunakan
7-bit guna menyajikan beberapa data.
Sistem ini digunakan oleh beberapa
pabrik komputer secara bersama-sama
sehingga menghasilkan suatu standart
yang baku untuk semua jenis komputer.
Walaupun ASCII menggunakan kode 7-bit ,
tetapi dalam pelaksanaannya tetaplah 8-
bit yang digunakan. Sebab masih
menggunakan extra bit yang digunakan
untuk mendeteksi pelbagai kesalahan
yang timbul.

Pertanyaan Ulangan :

1.Bagaimana definisi/pengertian saudara mengenai komputer ?


2.Kenapa komputer memerlukan adanya program dan apakah yang dimaksud
dengan program itu sendiri ?
3.Apa fungsi brianware pada pengertian komputer ?

26
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

4.Komputer generasi keberapakah yang ada pada saat ini, dan berikan alasan
kenapa saudara memberikan jawaban tersebut.
5.Sebutkan contoh komputer generasi kedua berikut teknologi yang
digunakan.
6.Dibanding dengan tabung hampa udara, maka transistor memiliki banyak
keunggulan, sebutkan keunggulan-keunggulan tersebut.
7.Sebuah komputer bisa disebut sebagai PC, MINI ataupun MAINFRAME karena
faktor apa ?
8.Apa yang dimaksud dengan single user dan multi user ?
9.Komputer PC yang ada dilaboratorium dan digunakan untuk praktikum para
mahasiswa, bisa dikatagorikan sebagai single ataukah multi user ?, berikan
alasan saudara.
10.Dibanding dengan Mini ataupun Mainframe, komputer PC ternyata
mempunyai banyak keunggulan, sebutkan tiga keunggulan tersebut.
11.Apa kelemahan PC yang paling mendasar jika dibanding dengan Mini
ataupun Mainframe ?
12.Data didalam kehidupan sehari-hari sebenarnya sangat banyak dan
beragam, bisakah saudara menceritakan pengertian data tersebut ?
13.Jenis data yang bagaimana yang bisa diolah oleh komputer, dan sebutkan
pula jenis komputer yang harus digunakan untuk mengolah data-data
tersebut.
14.Konsep robot itu merupakan perkembangan dari komputer jenis apa dan
biasanya digunakan untuk apa ?
15.Sebutkan bagian-bagian yang paling mendasar dari sebuh komputer.
16.Sebutkan pula bagian-bagian dari Central Processing Unit.
17.Arithmatic Logical Unit itu berfungsi untuk apa ?
18.Media disket yang biasa kita gunakan, termasuk input, output ataukah
input/output device ?, berikan alasan saudara.
19.Kenapa disket diperlukan oleh sistem komputer ?
20.Dapatkah saudara menerangkan tentang perbedaan pengertian antara
Field dan File, Bit dan Byte ?
21.Terangkan, kenapa konsep binary, oktal dan hexa desimal digunakan dalam
sistem komputer.
22.Dapatkah saudara mengkonversikan bilangan 125 (desimal) kedalam
binary ?
23.Kenapa 4-bit BCD dikatakan tidak efisien ?
24.Dapatkah saudara menceritakan tentang pengertian dari ASCII dan EBCDIC
?
25.Dimana letak perbedaan antara ASCII dan EBCDIC ?

27
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

3. ALGORITHME DAN PEMROGRAMAN

28
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

A. SISTEM KOMPUTER
Komputer adalah suatu alat elektronika yang mempunyai kemampuan untuk melakukan
perhitungan dan membuat keputusan logika dengan waktu yang jauh lebih cepat dari
yang dapat dilakukan oleh manusia. Menurut data, pada saat ini sebuah komputer pribadi
dapat melakukan sekitar sepuluh juta penjumlahan dalam waktu satu detik.
Komputer memproses data dengan menggunakan kendali dari sekumpulan instruksi yang
disebut dengan program komputer. Program komputer ini memandu kerja dari komputer
yang secara berstruktur disusun oleh orang yang disebut denganprogrammer. Berbagai
peralatan terdapat di dalam suatu sistem komputer yang disebut dengan perangkat keras
(hardware, atau sering disingkat dengan h/w), di antaranya adalah papan ketik
(keyboard), layar (monitor), disk, memori, dan unit pemroses (CPU=Central
ProcessingUnit). Sedangkan program untuk menjalankan suatu komputer disebut dengan
perangkat lunak (software, atau sering disingkat dengan s/w). Dengan demikian, sistem
komputer terdiri dari perangkat keras dan perangkat lunak, serta manusia yang
mengoperasikan maupun memrogram (brainware, atau sering disingkat dengan b/w).

Perangkat keras komputer terdiri dari enam unit (logika) yang saling terpadu membentuk
suatu organisasi komputer, yaitu:

• Unit input, yang bertugas untuk menerima masukan informasi (data dan/atau
program komputer) dari berbagai alat masukan (input devices) dan
menempatkannya ke unit lain sedemikian rupa sehingga dapat diproses.
• Unit output, yang mengambil informasi yang telah diproses oleh komputer dan
menempatkannya pada berbagai alat output (output devices) sehingga dapat
digunakan oleh pengguna.
• Unit memori, yang menampung masukan dari unit input, sehingga informasi
tersebut selalu tersedia untuk diproses pada saat dibutuhkan. Unit ini juga
menampung hasil proses komputer sampai diperlukan oleh unit output. Unit
memori ini sering disebut dengan memori utama.
• ALU=Arithmetic and Logic Unit, yang bertanggung jawab untuk melakukan
perhitungan seperti penjumlahan, pengurangan, perkalian, dan pembagian. Unit
ini juga berisi mekanisme untuk mengambil keputusan yang harus dilakukan oleh
komputer, misalnya membandingkan dua item (nilai), dan sebagainya.
• CPU=Central Processing Unit, yang merupakan koordinator dan penanggung
jawab bagi operasi unit-unit lainnya. CPU menyampaikan pada unit input, kapan
informasi harus dibaca ke dalam unit memori, dan pada unit output, kapan harus
mengirim informasi dari memori ke alat-alat output.
• Secondary storage unit, yaitu unit dengan kapasitas yang sangat luas untuk
menyimpan program dan/atau data (misalnya disk).

B. ALGORITME DAN PEMROGRAMAN KOMPUTER

Pemrograman komputer sangatlah sulit dilakukan, terutama bagi orang yang baru
pertama kali melakukannya. Oleh karena itu, pemrograman komputer dilakukan secara
sistematis, yang dimulai dengan merancang atau mendisain langkah-langkah yang tepat
yang menjelaskan jawaban dari suatu masalah yang diberikan. Langkah-langkah yang
disusun secara berstruktur dan terurut untuk menjawab suatu persoalan dengan
menggunakan bahasa manusia inilah yang sering disebut dengan algoritme. Karena
langkah-langkah atau instruksi dalam bentuk algoritme ini akan diberikan kepada
komputer untuk diproses, maka harus dibuat dengan menggunakan bahasa
pemrograman komputer tertentu, yang hasilnya disebut dengan program komputer.

Sebuah algoritme dicatat dalam bentuk narasi (narrative description) atau diagram alir
(flowchart). Metode narasi sangat sederhana dimana setiap langkah-langkah
penyelesaian masalah dalam suatu algoritme ditulis dengan menggunakan kalimat-
kalimat yang mudah dipahami. Berikut adalah contoh algoritme untuk menjumlahkan dua
buah bilangan bulat yang dituliskan dalam bentuk narasi:

ALGORITME 1a. MENJUMLAHKAN DUA BILANGAN BULAT


29
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

C. BAHASA PEMROGRAMAN KOMPUTER


- PEMROGRAMAN C

SEJARAH C

Bahasa pemrograman C disusun berdasarkan dua bahasa terdahulu, yaitu BCPL dan B.
BCPL dikembangkan pada tahun 1967 oleh Martin Richards sebagai bahasa untuk
menulis perangkat lunak sistem operasi dan kompilator (compiler). Ken Thompson
memodelkan beberapa fitur di dalam bahasa B bersama-sama dengan rekan-rekannya
yang menggunakan bahasa BCPL untuk membuat sistem operasi UNIX yang pertama di
Bell Laboratories pada tahun 1970 dengan menggunakan komputer DEC PDP-7.

Bahasa C dikembangkan lebih lanjut dari bahasa B oleh Dennis Ritchi di Bell Laboratories
dan pertama kali diimplementasikan dalam komputer DEC PDP-11 pada tahun 1972 yang
menggunakan sistem operasi UNIX. Pada perkembangannya saat ini, hampir semua
sistem operasi baru ditulis dalam C atau C++, dan telah menjadi bahasa pemrograman
yang populer. C yang pertama kali muncul ini saat ini dikenal dengan nama "C
tradisional" yang dipublikasikan oleh Kernighan dan Ritchi pada tahun 1978. Dalam
perkembangannya telah muncul C dalam berbagai versi, antara lain ANSI C, Borland C,
Turbo C, dan sebagainya.

TAHAPAN PEMROGRAMAN C

Pemrosesan program C umumnya melalui lima tahapan, yaitu edit,


preprocess/compile,link, load, dan execute. Setiap tahap dilakukan satu per satu (bila
menggunakan UNIX), atau ada beberapa tahap yang dapat digabungkan (misalnya
menggunakan Turbo C dimana empat tahap terakhir dapat dilakukan dalam satu waktu
sekaligus). Berikut adalah penjelasan dari setiap tahapan:

1. Tahap edit adalah proses penulisan program dengan menggunakan program


editor dan kemudian disimpan ke dalam penyimpanan sekunder, misalnya disk.
File program C diberi nama dengan menambahkan ekstensi .c. Dua program
editor tersedia di dalam UNIX, yaitu vi dan emacs; sedangkan jika menggunakan
Borland, Turbo, atau yang sejenis, program editor telah tersedia di dalamnya
dalam satu paket.
2. Tahap selanjutnya adalah mengkompilasi program, dimana kompilator akan
menerjemahkan program C yang telah ditulis ke dalam kode bahasa mesin
(sering disebutobject code = .obj). Di dalam sistem C, bagian program yang
disebut preprocessor (dipanggil melalui preprocessor directives) secara otomatis
diproses sebelum tahap penerjemahan dimulai.
3. Proses link dilakukan untuk mengkombinasikan kode obyek (obj) dengan pustaka
C yang tersedia agar menghasilkan file program lengkap yang dapat dieksekusi
oleh komputer. Di dalam UNIX, proses kompilasi dan link dilakukan bersamaan
dengan menggunakan program yang bernama cc dan menghasilna file dengan
ekstensi .out. Pada IBM PC, file yang dihasilkan mempunyai ekstensi .exe.
4. Tahap selanjutnya adalah memanggil file program hasil langkah (3) ke dalam
memori untuk dapat dijalankan oleh komputer.

5. Tahap terakhir adalah mengeksekusi program tersebut.

STRUKTUR PROGRAM C

Perhatikan contoh program C di bawah ini.

/* PROGRAM MENCARI BILANGAN TERBESAR DARI 2 BILANGAN BULAT */

30
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

#include <stdio.h> /* preprocessor directives */


int maksimum(int, int); /* prototype functions */
void tulis(int);

main() { /* main function */


int Nilai1, Nilai2, NilaiMaks; /* symbolic variables */
printf("\nKetikkan dua bilangan bulat : ");
scanf("%d %d", &Nilai1, &Nilai2);

NilaiMaks = maksimum(Nilai1, Nilai2); /* function call */

tulis (NilaiMaks);
return 0;
}

int maksimum(int x1, int x2) { /* user defined function */


if (x1>x2)
return x1;
else
return x2;
}

void tulis (int x) { /* user defined function */


printf("\nHasilnya adalah : %d", x);
}

Di dalam program C, suatu aksi dilakukan dengan suatu ekspresi (expression), misalnya
'hasil = 9'. Ekspresi yang diakhiri dengan titik-koma (;) membentuk pernyataan
(statement) seperti contoh berikut:

int Nilai; /* declaration statement */


Nilai = 4 + 5; /* assignment statement */

Pernyataan-pernyataan dapat dikelompokkan secara logika menjadi suatu fungsi


(function). Setiap program C harus mengandung sedikitnya sebuah fungsi, yang disebut
dengan main(). Pernyataan pertama yang dieksekusi oleh program adalah main().
Sebuah fungsi terdiri dari empat bagian, yaitu tipe kembali (return type), nama fungsi
(function name), daftar argumen (argument list), dan tubuh fungsi (function body). Tiga
bagian pertama membentuk apa yang disebut dengan fungsi prototipe (prototype
function). Daftar argumen dibatasi oleh sepasang kurung biasa ( … ), yang dapat terdiri
dari nol atau lebih argumen yang masing-masing dipisahkan oleh tanda koma (,).
Sedangkan tubuh fungsi dibatasi oleh sepasang kurung kurawal { … } dan terdiri dari
baris-baris pernyataan.

PREPROCESSOR DIRECTIVES

Pada contoh program C sebelumnya, terdapat baris perintah sebagai berikut:


#include <stdio.h>
File stdio.h disebut file header yang mengandung informasi berupa variabel-variabel dan
fungsi-fungsi yang diperlukan untuk penggunaan librari standard (standard library). Untuk
mengakses variabel atau fungsi yang ada di dalam librari standard, kita harus
menyertakan file header yang sesuai ke dalam program, yaitu dengan menggunakan apa
yang disebut dengan include directive. Sedangkan program yang memproses directive
tersebut disebut dengan preprocessor directives.
Perhatikan contoh-contoh berikut:
#include <stdio.h> /* file header tersimpan di default directory */
#include <stdlib.h>
#include "a:myfile.h" /* file header tersimpan di drive a: */

KATA KUNCI
Kata kunci (keywords) adalah kata di dalam pemrograman yang tidak dapat digunakan
untuk kepentingan lain kecuali yang telah ditetapkan oleh kompilator. Dengan demikian

31
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

kita tidak dapat membuat variabel dengan nama seperti yang tercantum pada kata kunci,
atau kepentingan-kepentingan lainnya. Ada 32 kata kunci di dalam C, yaitu:

auto, double, int, struct, break, else, long, switch, case, enum, register, typedef, char,
extern, return, union, const, float, short, insigned, continue, for, signed, void, default,
goto, sizeof, volatile, do, if, static, while

TIPE DATA
Setiap program umumnya mempunyai data, dan setiap data memiliki tipe tertentu. Di
dalam program C terdapat dua kelompok besar tipe data, yaitu integral types (terdiri dari
char, short, int, dan long) dan non-integral types (yaitu float dan double ). Penjelasan
masing-masing tipe ini seperti yang diuraikan pada tabel berikut:
No. Tipe Keterangan

1. berisi sebuah karakter atau kode ASCII : -128 hingga +127


char

2. bilangan bulat : -32768 hingga 32767


int

3. sama dengan int


short

4. bilangan riil dengan ketelitian 10-38 hingga 10+38


float

5. bilangan riil dengan ketelitian 10-308 hingga 10+308


double

6. untuk meningkatkan kapasitas, misalnya:


long
long int → -2147483648 hingga +2147483647

Tipe data short dan int dapat berbentuk signed maupun unsigned.

LITERAL CONSTANT
Suatu nilai data dalam program kadang-kadang berbentuk literal (hanya berupa nilai,
misalnya 3, 4.15, dan sebagainya) dan bersifat constant (tidak dapat diubah). Setiap
literal mempunyai tipe, misalnya: 3 bertipe int, 4.15 bertipe float, dan sebagainya. Nilai
literal juga bersifat nonaddressable karena alamatnya tidak dapat diakses.
Ada empat tipe literal constant ini, yaitu:

1. literal integer constants, untuk menuliskan konstanta bilangan bulat. Konstanta ini
dapat dituliskan dalam notasi desimal (misalnya 20, -5), oktal yang dimulai
dengan karakter '0' (misalnya 024), dan heksadesimal yang dimulai dengan
karakter '0X' (misalnya 0X14). Jika tidak menggunakan deklarasi tipe apapun,
otomatis konstanta yang dituliskan bertipe integer bertanda (signed int). Tipe long
dan unsigned dapat ditambahkan di belakang konstanta, misalnya 123U, 325UL,
2L, dan sebagainya.
2. literal floating point constants, yaitu nilai konstanta jenis bilangan riil yang dapat
dituliskan dalam notasi ilmiah (misalnya 1.0E-3 yang berarti 1.0 x 10-3), dan
notasi desimal (misalnya 3.14F, 0.0).
3. literal character constants, yaitu konstanta karakter yang ditulis di dalam tanda
kutip ('..'), misalnya 'a', '2', ',', '' (empty character), dan sebagainya. Disamping
itu, terdapat karakter yang bersifat nonprintable character (tidak dapat dicetak,
melainkan hanya sebagai kode operasi tertentu), yang ditulis dengan escape
sequences, seperti yang diuraikan pada tabel berikut.

32
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

No. Karakter Penjelasan

1. \n new line

2. \t horizontal tab

3. \r carriage return

4. \a alert, sound bell system

5. \\ backslash

6. \" double quote

1. string literal constants, yang terdiri dari nol atau lebih karakter, dan ditulis di
dalam tanda kutip dobel (double quotes), yaitu "…..", misalnya "" (null string='\0'),
"a" (sama dengan 'a','\0') , "komputer" (sama dengan 'k','o','m','p','u','t','e','r','\0'),
dan sebagainya.

SYMBOLIC VARIABLE
Setiap program umumnya mengandung satu atau lebih variabel untuk menyimpan suatu
nilai, misalnya 'Nilai1', 'Nilai2', 'NilaiMaks', 'x1', dan 'x2' contoh program C sebelumnya.
Identifikasi variabel ini dibuat oleh pengguna sendiri dan bersifat addressablekarena
alamatnya dapat diakses melalui program.
Ada dua nilai yang berkaitan dengan sebuah variabel, yaitu Rvalue dan Lvalue. Rvalue
adalah nilai data yang disimpan pada lokasi memori, sedangkan Lvalue adalah alamat
dari lokasi memori dimana nilai data itu disimpan. Perhatikan contoh berikut:
x = a;
x = x + 1;
maka x sebelah kiri disebut Lvalue, dan a serta x di sebelah kanan disebut Rvalue. Di
dalam sebuah program, setiap variabel yang dibuat harus dideklarasikan dengan
menentukan tipe variabel yang bersangkutan. Berikut adalah contoh deklarasi variabel:
int hari, bulan, tahun;
unsigned long jarak;
int nilai = 0;
double harga = 15.9, potongan = 0.2;
float gaji;
unsigned x = abs(-108);

MENULIS DAN MEMBACA


Fungsi standard yang sering digunakan di dalam program C untuk menuliskan nilai ke
layar dan membaca nilai dari papan ketik adalah printf dan scanf. Kedua fungsi ini
dapat dilihat penggunaannya pada contoh program C sebelumnya, yaitu:

printf("\nKetikkan dua bilangan bulat : ");


printf("\nHasilnya adalah : %d", x);
scanf("%d %d", &Nilai1, &Nilai2);

Fungsi printf yang pertama mempunyai satu argumen, yang bertujuan untuk menuliskan
suatu string kalimat 'Ketikkan dua bilangan bulat :' di layar. Kalimat ini diawali dengan
dengan karakter '\n' yang berarti bahwa kursor terlebih dahulu dipindahkan ke baris baru
sebelum menuliskan kalimat tersebut. Sedangkan fungsi printf yang kedua mempunyai
dua argumen, dimana argumen pertama adalah string kalimat yang akan ditulis ke layar,
dan argumen kedua adalah nilai suatu variabel yang akan ditulis (x). Nilai x ini ditulis
dengan menggunakan notasi desimal (karakter '%d' pada argumen pertama).
Fungsi kedua adalah scanf yang digunakan untuk membaca nilai suatu variabel yang
diketikkan dari papan ketik saat program diproses. Pada contoh ini, nilai yang dibaca

33
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

terdiri dari dua buah dan masing-masing akan dimasukkan ke dalam variabel Nilai1 dan
Nilai2. Karakter '%d' menunjukkan bahwa nilai yang diketik harus dalam notasi desimal,
sedangkan karakter '&' menunjukkan bahwa argumen fungsi scanf berupa reference
variable (akan dibahas pada bab selanjutnya).

OPERATOR ARITMATIKA
Program komputer banyak melakukan perhitungan aritmatika, yang terdiri dari operator
(+, -, *, /, dan %) dan operand . Misalnya ekspresi 3 + 7 terdiri dari operator + dan dua
buah operand (disebut binary), yaitu 3 dan 7. Disamping itu, ada pula operator yang
hanya diterapkan pada sebuah operand (disebut unary), misalnya -5, +12.7, dan
sebagainya. Operator aritmatika beserta notasinya seperti tercantum pada tabel berikut:
Operasi Operator Ekspresi Aljabar Ekspresi C

Penjumlahan + f+7 f+7

Pengurangan - p-c p-c

Perkalian * bm b*m

Pembagian / x:y x/y

Modulo % r mod s r%s


Tanda kurung '( …)' digunakan untuk memberi peringkat lebih tinggi dari proses
pengolahannya, misalnya a*(b+c)+c*(d-e). Untuk suatu ekspresi yang mempunyai
banyak operator, maka operator yang mana yang akan diproses terlebih dahulu
tergantung pada dua hal, yaitu precedence dan associativity . Precendence
menentukan urutan operasi dari operator-operator dalam ekspresi majemuk. Operator
dengan tingkat precedence lebih tinggi akan dievaluasi terlebih dahulu. Sedangkan
associativity menentukan arah evaluasi dari operator bila mempunyai precedence yang
sama, apakah dari kiri ke kanan (disimbolkan LR), atau sebaliknya (disimbolkan RL).
Tabel lengkap yang memuat precedence dan associativity dari semua operator yang
dikenal di dalam program C akan dicantumkan pada bagian akhir dari bab ini.

OPERATOR LOGIKA, RELASIONAL, DAN KESAMAAN


Disamping operator aritmatika, juga dikenal operator logika, relasional, dan kesamaan,
dimana ekspresi yang dibentuk menghasilkan dua nilai khas, yaitu salah (false, dalam C
diberi nilai 0) dan benar (true, dalam C bernilai 0). Operator yang dimaksud seperti
terlihat pada tabel berikut:

34
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Aljabar Operator C Contoh Arti

KESAMAAN

= == x==y x sama dengan y ?

!= x != y x tidak sama dengan y ?

LOGIKA

> > x>y x lebih besar dari y ?

< < x<y x lebih kecil dari y ?

>= x >= y x lebih besar atau sama dengan y ?

<= x <= y x lebih kecil atau sama dengan y ?

RELATIONAL

&& (x>0) && x > 0 dan x < 3


(x<3)

|| (x<0) | (x>3) x < 0 atau x > 3

~ ! ! (x < 0) x tidak lebih kecil dari 0

OPERATOR PENUGASAN (ASSIGNMENT OPERATOR)


Pemberian suatu nilai konstanta dan/atau ekspresi ke dalam suatu variabel
dibuat dengan menggunakan operator penugasan, yaitu sama dengan
('='). Operand sebelah kiri dari operator penugasan ini haruslah suatu
Lvalue, dan tipe dari hasil adalah tipe dari operand sebelah kirinya. Contoh
untuk hal ini adalah:

a = 5;
b = a = 10;
c = c + 5;

COMPOUND ASSIGNMENT OPERATOR


Pernyataan 'c = c + 5' di atas di dalam program C dapat disederhanakan menjadi c += 5.
Operator '+=' yang digunakan untuk menyederhanakan tersebut disebut dengan
compound assignment operator. Semua operator aritmatika dapat digunakan untuk
model seperti ini, yaitu +, -, *, /, dan %. Disamping itu juga operator lainnya seperti <<,
>>, &, dan ^ dapat digunakan dengan cara yang sama. Perhatikan contoh berikut:

c += 5; /* artinya c = c + 5 */
x /= 2; /* artinya x = x / 2 */
jumlah %= 2; /* artinya jumlah = jumlah % 2 */

OPERATOR INCREMENT DAN DECREMENT


Program C memberikan kemudahan notasi untuk menambah atau mengurangi satu nilai
pada suatu variabel bilangan bulat (int). Bentuk operator yang dapat digunakan ada dua,
yaitu bentuk prefix (++var atau --var) yang berarti bahwa nilai ekspresinya sama
dengan nilai variabel setelah diubah; dan bentuk postfix (var++ atau var--) yang berarti

35
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

bahwa nilai ekspresinya sama dengan nilai variabel sebelum diubah. Perhatikan
penjelasan pada contoh berikut:

c = 5; /* c bernilai 5 */

c++; /* c++ tetap bernilai 5, sedangkan c selanjutnya bernilai 6 */

++c; /* ++c dan c itu sendiri bernilai 7 */

Untuk lebih jelasnya, proses program berikut dan perhatikan keluarannya.

#include <stdio.h>
main() {
int a = 10;
printf("\n%d", a += 3);
printf("\n%d", a -= 3);
printf("\n%d", a *= 3);
printf("\n%d", a /= 3);
printf("\n%d", a %= 3);
printf("\n%d", a);
printf("\n%d", ++a);
printf("\n%d", a);
printf("\n%d", a++);
printf("\n%d", a);
printf("\n%d", --a);
printf("\n%d", a);
printf("\n%d", a--);
printf("\n%d", a);
return 0;

Pemrograman Macro dalam Winword dan Excel

Apa itu macro?

Jika anda melakukan pekerjaan yang berulang-ulang dengan winword, maka anda dapat
mengotomatisasinya dengan MACRO. Sebuah macro adalah serangkaian komando dalam
Word dan intruksi-intruksi yang anda dapat mengelompokkannya dalam satu group
sebagai satu intruksi baru. Cara ini untuk memudahkan anda untuk melakukan
serangkaian kerja dengan cukup sekali klik, untuk menghemat waktu.

Macro biasanya digunakan untuk merekam urutan keyboard atau aksi lainnya yang
diperlu dilakukan secara berulang oleh pemakai dalam tugas sehari-hari. Misal, jika
profesi anda adalah peneliti, anda akan mendapatkan bahwa sejumlah publikasi harus
ditulis mengikuti aturan-aturan tertentu. Maka jika anda sangat sering menulis dalam
format yang sama, maka cara yang paling elegan yang perlu anda lakukan adalah
dengan mengotomatisasinya menggunakan macro.

Keuntungan menggunakan Macro adalah :


 Mempercepat pekerjaan rutin untuk mengedit dan memformat ulang dokumen.
 Mengkombinasikan sejumlah komando dalam satu group. Misal: untuk membuat
tabel dengan format-format garis tertentu, jenis huruf dan sebagainya, anda dapat
mengunpulkan sejumlah perintah menjadi satu perintah.
 Untuk mengotomatisasi sejumlah pekerjaan yang kompleks dan untuk
menghindarka kesalahan manusiawi.

36
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

 Mengoptimalkan boks dialog untuk bekerja secara interaktif.

Bagaimana membuat macro?

Cara yang paling mudah untuk membuat macro dalam winword adalah dengan fasilitas
“macro recorder” untuk merekam sejumlah perintah atau aksi-aksi yang kita susun. Jika
anda sedang merekam macro, maka anda dapat menggunakan mouse dan menklik
command dan opsi-opsi yang ada. Sebagai catatan, bahwasannya “macro recorder” tidak
merekam gerakan mouse dalam jendela dokumen.

Beberapa catatan dalam merekam macro


• Sebelum anda merekam macro, rencanakan langkah-langkah apa saja yang akan
anda rekam dalam macro. Mengapa demikian? Karena ketika anda melakukan
langkah yang salah dan kemudian mengkoreksinya, maka langkah-langkah yang
salahpun akan ikut terekam, demikian juga dengan koreksi yang anda lakukan
juga ikut terekam.
• Antisipasi kemungkinan-kemungkinan message yang akan muncul. Sebagai
contoh, jika dalam macro anda berisikan perintah menutup dokumen maka word
akan bertanya: apakah dokumen akan disimpan atau tidak?
• Jika macro berisikan perintah dalam menu Edit menu, maka antisipasi dengan
search ke seluruh dokumen.
• Jika anda menginginkan bahwa macro tersebut berlaku juga untuk dokumen lain,
perhitungkan bahwa macro tidak boleh bergantung hanya pada dokumen yang
anda sedang pakai untuk merekamnya.

Merekam Macro dalam Winword

Klik pada menu Tools, kemudian arahkan kursor ke Macro kemudian kik record new Macro.
1. Di bagian boks Macro name, ketikkan nama macro yang anda inginkan.
2. Dalam Boks Store macro in, klik template atau dokumen yang anda akan pakai
untuk menyimpan macro.
3. Di boks Description, ketikkan uraian secukupnya tentang macro tersebut.
4. Jika anda tidak menginginkan macro ini tampil dalam toolbar, menu atau
shortcut maka klik OK untuk memulai merekam macro.
Untuk menempatkan macro dalam toolbar atau menu, maka klik Toolbars. Di
boks Commands, klik macro yang sedang anda rekam, dan tempatkan ke
toolbar atau menu yang anda inginkan. Klik Close untuk memulai perekaman.
5. Lakukan langkah-langkah yang sudah anda rencanakan untuk direkam dalam
macro.
Anda dapat menggunakan mouse untuk mengklik perintah dan opsi-opsi yanga
ada, tetapi macro tidak merekam gerakan mouse dalam jendela dokumen.
6. Untuk menyudahi perekaman, klik Stop Recording

Catatan Jika anda memberi nama macro baru dengan nama macro yang sudah ada
dalam winword, maka macro baru tersebut akan menggantikan macro winword yang asli.
Contoh: Dalam menu File terdapat perintah Close yang mengacu pada macro FileClose.
Jika anda membuat macro baru dengan nama sama dengan macro tersebut, maka macro
anda akan menggantikan macro winword yang asli.

Dimana macro disimpan?

Anda dapat menyimpan macro dalam templates (*.dot) atau dalam dokumen (*.doc). Jika
anda tidak memilih secara spesifik, maka macro akan disimpan dalam Normal template
(normal.dot) sedemikian rupa sehingga dapat dimanfaatkan oleh setiap dokumen word.
Jika anda menginginkan menggunakan macro hanya untuk dokumen tertentu, maka
simpan macro tersebut dalam dokumen bersangkutan.

37
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Virus Macro

Fasilitas longgar yang diberikan oleh winword untuk penggunanya melalui macro,
ternyata dimanfaatkan dengan tujuan tidak baik oleh oknum-oknum yang tidak
bertanggung-jawab.

Sebuah virus macro adalah tipe virus komputer yang disimpan dalam macro yang
tersimpan dalam dokumen atau template. Jika anda membuka sebuah dokumen maka
yang terkena virus, maka virus macro tersebut dengan sendirinya ikut aktif dan
disebarkan dalam komputer anda melalui penyimpanan virus macro tersut ke Normal
template. Sekali normal template berisikan virus, maka semua dokumen yang dibuka
akan terinfeksi oleh virus tersebut.

Word tidak dapat menscan floppy disk, hard disk, or network drive untuk menemukan
atau membuang virus macro. Untuk melakukan hal tersebut, anda memerlukan software
anti virus. Yang dapat dilakukan oleh Word adalah sekedar memberikaan peringatan
kemungkinan-kemungkinan macro yang mengandung virus. Selanjutnya anda dapat
membuka sebua dokumen dengan atau tanpa macro.

38
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Visual Basic For Applications

Visual Bsic Applications (VBA) merupakan bahasa terbaru dalam deretan panjang bahasa
pemrograman. Peralihan mendasar sedang terjadi dalam cara orang menggunakan
komputer sekarang ini. Beberapa teknologi terkait yang muncul dari Mcrosot dan
perusahaan lain membuat komputer dapat dipakai dengan efisien dan lebih mudah.

Teknologi ini – dengan nama seperti Dynamic Dta Exchange (DDE), Object Linking and
Embedding (OLE) dan Visual Basic For Applications (VBA) – bekerja bersama-sama untuk
membantu pemakai menyelesaikan tugas komputasi yang umum, seperti customizing
aplikasi dan manipulasi informasi dengan cara yang lebih efektif.

Gambar 1. Contoh MengEdit aplikasi Visual Basic dalam Winword

Untuk memahami VBA, pertama kita harus menengok pendahulunya, bahasa BASIC
(Beginners All Purposes Symbolic Instruction Code) elakangan ini, bahasa macro telah
dibangun untuk membantu pemakai mengcustomize aplikasi agar sesuai dengan
kebutuhan khusus mereka.

Dengan Visual Basic, bahasa BASIC, memiliki kemampuan menayangkan dan mengelola
grafik, dan menghasilkan program Windows yang tidak bisa dibedakan dari aplikasi
profesional. Dengan window dialog VBA, tugas embuatan program menjadi jauh lebih
mudah. Apa itu Visual? Kata Visual menunjukkan cara yang digunakan untuk membuat
graphical user interface (GUI). Dengan cara ini, anda tidak lagi perlu menuliskan sederet
instrtuksi pemrograman dalam kode-kode baris yang rumit dan susah dihafal, tetapi
secara mudah anda dapat melakukan drag anda drop obyek-obyek yang akan anda
gunakan.

39
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

C/C++

Layaknya dalam bahasa percakapan sehari-hari, pada prinsipnya semua bahasa


berfungsi untuk mengungkapkan buah pikiran, isi hati kepada lawan bicara. Satu bahasa
kelihatannya lebih kompleks dari bahasa yang lainnya. Untuk hal-hal tertentu mungkin
kita lebih cepat dan lebih mudah menggunakan bahasa X daripada Y. Demikian juga
dengan bahasa pemrograman komputer, dalam perkembangannya banyak bermunculan
dari yang sederhan samapi pada yang kompleks.

Pada hakikatnya yang terpenting dalam hal memprogram komputer adalah algorithm dan
struktur diagram cara berfikir kita untuk mengungkapkan dalam deretan atuaran syntax
yang sudah ditentukan. Memprogram dengan Visual Basic, Visual C, Borland C, Fortran
dsbnya adalah sama. Hal ini dapat diidentikkan ketika kita menuliskan makalah dalam
bahasa Indonesia, Inggris, Jerman ataupun yang lainnya adalah sama. Pembedanya
adalah aturan main dalam penggunaan bahasa tersebut. Kompleks tidaknya suatu
bahasa pemrograman seringkali tergantung dari kebiasaan kita memrogram.

Gambar 2. Pembuatan Aplikasi dengan Borland C/C++

Sebagai contoh, dari pengalaman penulis, bahasa pemrograman Borland C/C++ adalah
sangat kompleks. Anda membutuhkan waktu panjang untuk mampu menguasainya
dengan baik. Kerumitan ini akan segera hilang begitu anda sudah fasih untuk mengklik
dan mengetahui seluruh seluk beluk dalam bahasa pemrograman ini.

Catatan: Pada prinsipnya setiap bahasa pemrograman dapat dipakai untuk membantu
proses otomatisasi dengan Winword dan excel. Keuntungan utama, jika anda
menggunakan Visual Basic adalah terintegrasinya fasilitas-fasilitas ini secara langsung
dalam Winword dan Excel.

Contoh: Mawaqit 2000 for Word

40
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Pada tahun 1999/2000 dilaksanakan kegiatan Penelitian dan Pengembangan Metode


Astro-Geodesi Modern Untuk Perhitungan dan Pemetaan Kalender Islam. Salah satu
produk dari kegiatan ini adalah diterbitkannya buku garis tanggal kalender Islam setebal
kira-kira 300 halaman. Buku ini direalisasikan dengan program Mawaaqit 2000 for Word.

Tujuan dari otomatisasi dengan Mawaaqit for Word adalah:


 Terciptanya standard format buku-buku kalender Islam yang akan diterbitkan di
tahun-tahun mendatang.
 Mempercepat proses pembuatan dan editing.
 Menghindari kesalahan ketik dan semcamnya yang bersifat manusiawi.

Gambar 5. Contoh Mawaaqit 2000 for Word

Software ditulis dengan bahasa pemrograman, C/C++, Visual Basic dengan kombinasi
dengan macro winword. Komponen-komponen dalam program ini adalah:
Mwqt4word.doc : dokumen yang berisikan macro program Mawaaqit 2000 untuk
winword.
MwqtInputs.frm : frame atau boks dialog untuk memasukkan input secara
interaktif.

41
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

MMwqt2000.bas : module atau bagian program inti yang ditulis dengan Visual
Basic.
Mwqt4word.exe : program yang ditulis dengan C/C++ untuk membuat input-input
yang akan dimasukkan dalam tabel atau untuk membuat peta
dengan kontur-kontur yang diinginkan.

Berikut ini adalah source code dari pengembangan software tersebut. Source Code ini
pada umumnya dibuat dengan fasilitas “macro recorder” di winword.

MwqtInputs.frm

VERSION 5.00

Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} MwqtInputs


Caption = "Inputs"
ClientHeight = 2880
ClientLeft = 4050
ClientTop = 4395
ClientWidth = 4710
OleObjectBlob = "MwqtInputs.frx":0000
StartUpPosition = 0 'Manual
End
Attribute VB_Name = "MwqtInputs"
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim TableFile, JudulText, StrCode, MapsFileName, MyStringTgl, MapsFrame, DirectoryData
Dim DirectoryHasilPeta, DirectoryHasilTabel, DirectoryHasilJudul
Dim DirectoryIjtima, DirectoryProgram

Sub SettingDirectory()
DirectoryData = "c:\mwqt4word\data\"
DirectoryHasilPeta = "c:\mwqt4word\Results\Maps\"
DirectoryHasilTabel = "c:\mwqt4word\Results\Tables\"
DirectoryHasilJudul = "c:\mwqt4word\Results\Titles\"
DirectoryIjtima = "c:\mwqt4word\Results\IjtimaTime\"
DirectoryProgram = "c:\mwqt4word\"
End Sub

Private Sub ComputeBtn_Click()


SettingDirectory
MyFile = Dir(DirectoryHasilTabel & "TableCompleted")
If (MyFile <> "") Then
Kill DirectoryHasilTabel & "TableCompleted"
End If
Create2NewBlankPage
BoxOn
InsertMonthName
ComputeIjtimaTime
Goto2NextPage

' Inserting Tables


'
Dim TextTemp, StrBulan, NyFile, StrTahun

MyFile = Dir(DirectoryHasilTabel & "TableCompleted")


If (MyFile <> "") Then
Kill DirectoryHasilTabel & "TableCompleted"
End If

StrBulan = Format(MwqtInputs.BulanHijriyah.ListIndex + 1)
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
If (MwqtInputs.BulanHijriyah.ListIndex < 9) Then
StrBulan = "0" & StrBulan
End If
TextTemp = StrBulan & StrTahun
If (MwqtInputs.TahunHijriyah.SelText = "") Then
TextTemp = StrBulan & "1420"
End If

ComputeTableData
TableFile = DirectoryHasilTabel & "Global" & TextTemp & "a.tbl"
JudulText = DirectoryHasilJudul & "Global" & TextTemp & "a.ttl"

42
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

InsertTable
InsertTableData
MyFile = Dir(TableFile)
If (MyFile <> "") Then
Kill TableFile
End If
MyFile = Dir(JudulText)
If (MyFile <> "") Then
Kill JudulText
End If

TableFile = DirectoryHasilTabel & "Ina" & TextTemp & "a.tbl"


JudulText = DirectoryHasilJudul & "Ina" & TextTemp & "a.ttl"
InsertTable
InsertTableData
MyFile = Dir(TableFile)
If (MyFile <> "") Then
Kill TableFile
End If
MyFile = Dir(JudulText)
If (MyFile <> "") Then
Kill JudulText
End If

TableFile = DirectoryHasilTabel & "Global" & TextTemp & "b.tbl"


JudulText = DirectoryHasilJudul & "Global" & TextTemp & "b.ttl"
InsertTable
InsertTableData
MyFile = Dir(TableFile)
If (MyFile <> "") Then
Kill TableFile
End If
MyFile = Dir(JudulText)
If (MyFile <> "") Then
Kill JudulText
End If

TableFile = DirectoryHasilTabel & "Ina" & TextTemp & "b.tbl"


JudulText = DirectoryHasilJudul & "Ina" & TextTemp & "b.ttl"
InsertTable
InsertTableData
MyFile = Dir(TableFile)
If (MyFile <> "") Then
Kill TableFile
End If
MyFile = Dir(JudulText)
If (MyFile <> "") Then
Kill JudulText
End If
MyFile = Dir(DirectoryHasilTabel & "TableCompleted")
If (MyFile <> "") Then
Kill DirectoryHasilTabel & "TableCompleted"
End If
Selection.InsertBreak Type:=wdPageBreak
End Sub

Sub Create2NewBlankPage()
Selection.InsertBreak Type:=wdPageBreak
Selection.InsertBreak Type:=wdPageBreak
Selection.MoveLeft Unit:=wdCharacter, Count:=2
End Sub

Sub InsertMonthName()
Dim Hgh
Hgh = Array(3, 3, 3, 3, 3, 3, 3.82, 3.82, 3, 3.82, 3, 3.82)
If (MwqtInputs.BulanHijriyah.SelText = "") Then
ActiveDocument.Shapes.AddTextEffect(msoTextEffect16, "Muharram", _
"Arial Black", 60#, msoFalse, msoFalse, 255.8, 196.5).Select
Else
ActiveDocument.Shapes.AddTextEffect(msoTextEffect16, MwqtInputs.BulanHijriyah.SelText, _
"Arial Black", 60#, msoFalse, msoFalse, 255.8, 196.5).Select
End If
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Height = CentimetersToPoints(Hgh(MwqtInputs.BulanHijriyah.ListIndex))

43
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Selection.ShapeRange.Left = (CentimetersToPoints(25.5) - Selection.ShapeRange.Width) * 0.5


Selection.ShapeRange.Top = CentimetersToPoints(5)
End Sub

Sub ComputeIjtimaTime()
Dim MyFile, MyString, RetVal, MyProgram, ResFile, FileName, StrBulan, StrTahun
StrBulan = Format(MwqtInputs.BulanHijriyah.ListIndex + 1)
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
If (MwqtInputs.BulanHijriyah.ListIndex < 9) Then
StrBulan = "0" & StrBulan
End If

MyProgram = DirectoryProgram & "Mwqt4Word.exe 1 " & _


Str(MwqtInputs.BulanHijriyah.ListIndex + 1) & " " & MwqtInputs.TahunHijriyah.SelText
ResFile = DirectoryIjtima & StrBulan & StrTahun & ".out"
FileName = StrBulan & StrTahun & ".out"
If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryIjtima & StrBulan & "1420.out"
MyProgram = MyProgram & " 1420"
FileName = StrBulan & "1420.out"
End If

RetVal = Shell(MyProgram, 1)
Do While MyFile <> FileName
MyFile = Dir(ResFile)
Loop

Open ResFile For Input As #1


Input #1, MyString
Close #1
MyFile = Dir(ResFile)
If (MyFile <> "") Then
Kill ResFile
End If

Dim IjtimaText As String


ActiveDocument.Shapes.AddTextEffect(msoTextEffect1, MyString, _
"Arial Black", 32#, msoFalse, msoFalse, 255.8, 196.5).Select
Selection.ShapeRange.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
Selection.ShapeRange.RelativeVerticalPosition = wdRelativeVerticalPositionPage
Selection.ShapeRange.Width = CentimetersToPoints(23.5)
Selection.ShapeRange.Left = CentimetersToPoints(3.55)
Selection.ShapeRange.Top = CentimetersToPoints(12)
Selection.ShapeRange.LockAnchor = True

End Sub

Sub ComputeTableData()
Dim MyFile, MyString, RetVal, MyProgram
MyProgram = DirectoryProgram & "Mwqt4Word.exe 2 " & _
Str(MwqtInputs.BulanHijriyah.ListIndex + 1) & " " & MwqtInputs.TahunHijriyah.SelText
If (MwqtInputs.TahunHijriyah.SelText = "") Then
MyProgram = MyProgram & " 1420"
End If
RetVal = Shell(MyProgram, 1)
Do While MyFile <> "TableCompleted"
MyFile = Dir(DirectoryHasilTabel & "TableCompleted")
Loop
End Sub

Sub BoxOn()
ActiveDocument.Shapes.AddShape(msoShapeRectangle, 70.75, 57.1, 721.25, 480.4).Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.Weight = 1.5
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Shadow.Type = msoShadow6
End Sub

Sub Goto2NextPage()
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""

44
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
End Sub

Sub InsertTable()
Selection.InsertFile FileName:=DirectoryData & "table.doc", Range:="", ConfirmConversions
_
:=False, Link:=False, Attachment:=False
ActiveWindow.ActivePane.SmallScroll Down:=-15
ActiveWindow.ActivePane.SmallScroll Down:=3
End Sub

Sub InsertTableData()
Selection.InsertFile FileName:=TableFile, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveUp Unit:=wdLine, Count:=28, Extend:=wdExtend
Selection.ConvertToTable Separator:=wdSeparateByCommas, NumColumns:=13, _
NumRows:=28, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False
Selection.Cut
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.MoveRight Unit:=wdCharacter, Count:=12
Selection.MoveLeft Unit:=wdCharacter, Count:=12, Extend:=wdExtend
Selection.MoveUp Unit:=wdLine, Count:=27, Extend:=wdExtend
Selection.Paste
Selection.MoveDown Unit:=wdLine, Count:=27, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=12, Extend:=wdExtend
Selection.Font.Name = "Courier New"
Selection.Font.Size = 9
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.SpaceBefore = 1
.SpaceAfter = 2
End With
Selection.MoveLeft Unit:=wdCharacter, Count:=10, Extend:=wdExtend
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Selection.MoveLeft Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.25)
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Selection.MoveUp Unit:=wdLine, Count:=3
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.InsertFile FileName:=JudulText, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Name = "Arial"
Selection.Font.Size = 14
Selection.Font.Bold = wdToggle
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 0
.SpaceAfter = 0
.LineSpacingRule = wdLineSpace1pt5
.Alignment = wdAlignParagraphCenter
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
End With

45
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Selection.MoveDown Unit:=wdLine, Count:=1


Selection.Delete Unit:=wdCharacter, Count:=1
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
End Sub

Private Sub CreateMaps_Click()


SettingDirectory
MyFile = Dir(DirectoryHasilPeta & "MapsCompleted")
If (MyFile <> "") Then
Kill DirectoryHasilPeta & "MapsCompleted"
End If

'CreateGlobalMaps

Dim StrBulan, StrTahun, TextTemp


StrBulan = Format(MwqtInputs.BulanHijriyah.ListIndex + 1)
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
If (MwqtInputs.BulanHijriyah.ListIndex < 9) Then
StrBulan = "0" & StrBulan
End If
TextTemp = StrBulan & StrTahun
If (MwqtInputs.TahunHijriyah.SelText = "") Then
TextTemp = StrBulan & "1420"
End If

' ----------------------------
StrCode = "a"
MapsFrame = DirectoryData & "GlobalAltitude.doc"
MapsFileName = DirectoryHasilPeta & "AltitudeGlobal" & TextTemp & "a" & ".gif"
InsertGlobalMaps

StrCode = "a"
MapsFrame = DirectoryData & "InaAltitude.doc"
MapsFileName = DirectoryHasilPeta & "AltitudeIna" & TextTemp & "a" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "b"
MapsFrame = DirectoryData & "GlobalAltitude.doc"
MapsFileName = DirectoryHasilPeta & "AltitudeGlobal" & TextTemp & "b" & ".gif"
InsertGlobalMaps

StrCode = "b"
MapsFrame = DirectoryData & "InaAltitude.doc"
MapsFileName = DirectoryHasilPeta & "AltitudeIna" & TextTemp & "b" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "a"
MapsFrame = DirectoryData & "GlobalMoonsAge.doc"
MapsFileName = DirectoryHasilPeta & "MoonsAgeGlobal" & TextTemp & "a" & ".gif"
InsertGlobalMaps

StrCode = "a"
MapsFrame = DirectoryData & "InaMoonsAge.doc"
MapsFileName = DirectoryHasilPeta & "MoonsAgeIna" & TextTemp & "a" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "b"
MapsFrame = DirectoryData & "GlobalMoonsAge.doc"

46
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

MapsFileName = DirectoryHasilPeta & "MoonsAgeGlobal" & TextTemp & "b" & ".gif"
InsertGlobalMaps

StrCode = "b"
MapsFrame = DirectoryData & "InaMoonsAge.doc"
MapsFileName = DirectoryHasilPeta & "MoonsAgeIna" & TextTemp & "b" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "a"
MapsFrame = DirectoryData & "GlobalIllumination.doc"
MapsFileName = DirectoryHasilPeta & "IlluminationGlobal" & TextTemp & "a" & ".gif"
InsertGlobalMaps

StrCode = "a"
MapsFrame = DirectoryData & "InaIllumination.doc"
MapsFileName = DirectoryHasilPeta & "IlluminationIna" & TextTemp & "a" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "b"
MapsFrame = DirectoryData & "GlobalIllumination.doc"
MapsFileName = DirectoryHasilPeta & "IlluminationGlobal" & TextTemp & "b" & ".gif"
InsertGlobalMaps

StrCode = "b"
MapsFrame = DirectoryData & "InaIllumination.doc"
MapsFileName = DirectoryHasilPeta & "IlluminationIna" & TextTemp & "b" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "a"
MapsFrame = DirectoryData & "GlobalSMDiffer.doc"
MapsFileName = DirectoryHasilPeta & "SMDifferGlobal" & TextTemp & "a" & ".gif"
InsertGlobalMaps

StrCode = "a"
MapsFrame = DirectoryData & "InaSMDiffer.doc"
MapsFileName = DirectoryHasilPeta & "SMDifferIna" & TextTemp & "a" & ".gif"
InsertInaMaps
' ----------------------------

' ----------------------------
StrCode = "b"
MapsFrame = DirectoryData & "GlobalSMDiffer.doc"
MapsFileName = DirectoryHasilPeta & "SMDifferGlobal" & TextTemp & "b" & ".gif"
InsertGlobalMaps

StrCode = "b"
MapsFrame = DirectoryData & "InaSMDiffer.doc"
MapsFileName = DirectoryHasilPeta & "SMDifferIna" & TextTemp & "b" & ".gif"
InsertInaMaps
' ----------------------------

MyFile = Dir(DirectoryHasilPeta & "MapsCompleted")


If (MyFile <> "") Then
Kill DirectoryHasilPeta & "MapsCompleted"
End If
End Sub

Sub InsertInaMaps()
Selection.InsertFile FileName:=MapsFrame, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.GoTo What:=wdGoToPage, Which:=wdGoToPrevious, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = "_$$$_"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False

47
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.MoveDown Unit:=wdLine, Count:=3
Selection.InlineShapes.AddPicture FileName:= _
MapsFileName, LinkToFile:=False, _
SaveWithDocument:=True
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.InlineShapes(1)
With .Borders(wdBorderLeft)
.LineStyle = wdLineStyleThinThickSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderRight)
.LineStyle = wdLineStyleThickThinSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderTop)
.LineStyle = wdLineStyleThinThickSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleThickThinSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
.Borders.Shadow = False
End With
With Options
.DefaultBorderLineStyle = wdLineStyleThinThickSmallGap
.DefaultBorderLineWidth = wdLineWidth150pt
.DefaultBorderColorIndex = wdAuto
End With
ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitBestFit
ActiveWindow.ActivePane.SmallScroll Down:=11
ReplaceTanggal
End Sub

Sub InsertGlobalMaps()
Selection.InsertBreak Type:=wdPageBreak
Selection.GoTo What:=wdGoToPage, Which:=wdGoToPrevious, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.InsertFile FileName:=MapsFrame, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.InlineShapes.AddPicture FileName:= _
MapsFileName, LinkToFile:=False, _
SaveWithDocument:=True
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.InlineShapes(1)
With .Borders(wdBorderLeft)
.LineStyle = wdLineStyleThinThickSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderRight)
.LineStyle = wdLineStyleThickThinSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderTop)
.LineStyle = wdLineStyleThinThickSmallGap

48
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleThickThinSmallGap
.LineWidth = wdLineWidth150pt
.ColorIndex = wdAuto
End With
.Borders.Shadow = False
End With
With Options
.DefaultBorderLineStyle = wdLineStyleThinThickSmallGap
.DefaultBorderLineWidth = wdLineWidth150pt
.DefaultBorderColorIndex = wdAuto
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
ReplaceTanggal
End Sub

Sub CreateGlobalMaps()
Dim MyFile, MyString, RetVal, MyProgram
MyProgram = DirectoryProgram & "Mwqt4Word.exe 3 " & _
Str(MwqtInputs.BulanHijriyah.ListIndex + 1) & " " & MwqtInputs.TahunHijriyah.SelText
If (MwqtInputs.TahunHijriyah.SelText = "") Then
MyProgram = MyProgram & " 1420"
End If
RetVal = Shell(MyProgram, 1)
Do While MyFile <> "MapsCompleted"
MyFile = Dir(DirectoryHasilPeta & "MapsCompleted")
Loop
End Sub

Private Sub Image7_Click()


SettingDirectory
Selection.HomeKey Unit:=wdStory
With Selection.Sections(1).Headers(1).PageNumbers
.NumberStyle = wdPageNumberStyleArabic
.HeadingLevelForChapter = 0
.IncludeChapterNumber = False
.ChapterPageSeparator = wdSeparatorHyphen
.RestartNumberingAtSection = True
.StartingNumber = 22 * MwqtInputs.BulanHijriyah.ListIndex + 33
End With
Selection.Sections(1).Footers(1).PageNumbers.Add PageNumberAlignment:= _
wdAlignPageNumberOutside, FirstPage:=True
Dim ResFile, StrTahun, StrBulan, TxtBulan
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
If (MwqtInputs.TahunHijriyah.SelText = "") Then
StrTahun = "1420"
End If
StrBulan = Format(MwqtInputs.BulanHijriyah.ListIndex + 1)
If (MwqtInputs.BulanHijriyah.ListIndex < 9) Then
StrBulan = "0" & StrBulan
End If

TxtBulan = MwqtInputs.BulanHijriyah.SelText
If (MwqtInputs.BulanHijriyah.SelText = "") Then
TxtBulan = "Muharram"
End If

ResFile = "f:\" & StrTahun & "H\" & StrBulan & "_" & TxtBulan & ".doc"

ActiveDocument.SaveAs FileName:=ResFile, FileFormat:= _


wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _

49
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _


False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End Sub

Private Sub PutArticle_Click()


Dim TitleText
SettingDirectory
TitleText = "Kalender Islam " & MwqtInputs.TahunHijriyah.SelText & " H"
If (MwqtInputs.TahunHijriyah.SelText = "") Then
TitleText = "Kalender Islam 1420 H"
End If
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
Selection.Find.ClearFormatting
Selection.InsertFile FileName:=DirectoryData & "Article.doc", Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.InsertBreak Type:=wdPageBreak
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
Selection.Find.ClearFormatting
ActiveDocument.Shapes.AddTextEffect(msoTextEffect13, _
TitleText, "Impact", 52#, msoFalse, msoFalse, 154.25, 324.55).Select
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.Height = 73.4
Selection.ShapeRange.Width = 500#
Selection.ShapeRange.Rotation = 0#
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Selection.ShapeRange.Fill.BackColor.RGB = RGB(0, 128, 0)
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Fill.TwoColorGradient msoGradientFromCenter, 1
Selection.ShapeRange.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
Selection.ShapeRange.RelativeVerticalPosition = wdRelativeVerticalPositionPage
Selection.ShapeRange.Left = CentimetersToPoints(10)
Selection.ShapeRange.Top = CentimetersToPoints(3.5)
Selection.ShapeRange.LockAnchor = True
ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 69.35, _
505.8, 72#, 72#).Select
Selection.ShapeRange.TextFrame.TextRange.Select
Selection.Collapse

Dim TextTemp, StrBulan, NyFile, StrTahun

Dim MyFile, MyString, RetVal, MyProgram, ResFile, FileName


StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)

MyProgram = DirectoryProgram & "Mwqt4Word.exe 0 1 " & MwqtInputs.TahunHijriyah.SelText


ResFile = DirectoryHasilJudul & "calyear" & StrTahun & ".out"
FileName = "calyear" & StrTahun & ".out"
If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilJudul & "calyear" & "1420.out"
MyProgram = MyProgram & " 1420"
FileName = "calyear1420.out"
End If

RetVal = Shell(MyProgram, 1)
Do While MyFile <> FileName
MyFile = Dir(ResFile)
Loop

Selection.InsertFile FileName:=ResFile, Range:="", _


ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.WholeStory
With Selection.Font
.Name = "Technical"
.Size = 28
.Bold = True
.Italic = False
.Underline = wdUnderlineNone
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.ColorIndex = wdWhite

50
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.Engrave = False
.Superscript = False
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 0
.Animation = wdAnimationNone
End With
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.Height = 72#
Selection.ShapeRange.Width = 255.1
Selection.ShapeRange.TextFrame.MarginLeft = 7.09
Selection.ShapeRange.TextFrame.MarginRight = 7.09
Selection.ShapeRange.TextFrame.MarginTop = 3.69
Selection.ShapeRange.TextFrame.MarginBottom = 3.69
Selection.ShapeRange.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
Selection.ShapeRange.RelativeVerticalPosition = wdRelativeVerticalPositionPage
Selection.ShapeRange.Left = CentimetersToPoints(0)
Selection.ShapeRange.Top = CentimetersToPoints(16.5)
Selection.ShapeRange.LockAnchor = True
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
UpdateYear
InsertDataIjtimaTahunA
InsertDataIjtimaTahunB
ShadowedCellB
ShadowedCellA
End Sub

Sub UpdateYear()
Dim StrTahun, ResFile
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
ResFile = DirectoryHasilJudul & "calyear" & StrTahun
If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilJudul & "calyear" & "1420"
StrTahun = "1420"
End If

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"


Selection.Find.ClearFormatting
With Selection.Find
.Text = "%#$"
.Replacement.Text = StrTahun & " H"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Find.Execute Replace:=wdReplaceOne

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"


Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_A"
End With
Selection.Find.Execute
Selection.InsertFile FileName:=ResFile & "a.out", Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.TypeBackspace
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.TypeBackspace
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.Font.Size = 14
Selection.Font.Name = "Arial"
Selection.Font.Bold = wdToggle
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)

51
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 2
.SpaceAfter = 2
.LineSpacingRule = wdLineSpaceSingle
.Alignment = wdAlignParagraphCenter
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
End With
Selection.Find.Execute
Selection.InsertFile FileName:=ResFile & "b.out", Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.TypeBackspace
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.TypeBackspace
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.Font.Size = 14
Selection.Font.Name = "Arial"
Selection.Font.Bold = wdToggle
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 2
.SpaceAfter = 2
.LineSpacingRule = wdLineSpaceSingle
.Alignment = wdAlignParagraphCenter
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
End With
End Sub

Sub GetDateFile()
Dim StrBulan, StrTahun, TextTemp
StrBulan = Format(MwqtInputs.BulanHijriyah.ListIndex + 1)
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
If (MwqtInputs.BulanHijriyah.ListIndex < 9) Then
StrBulan = "0" & StrBulan
End If
TextTemp = StrBulan & StrTahun
If (MwqtInputs.TahunHijriyah.SelText = "") Then
TextTemp = StrBulan & "1420"
End If

MyStringTgl = DirectoryHasilPeta & TextTemp & StrCode & ".tgl"

End Sub

Sub ReplaceTanggal()
GetDateFile
Selection.Find.ClearFormatting
With Selection.Find
.Text = "_$$$_"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False

52
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.InsertFile FileName:=MyStringTgl, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
With Selection.Font
.Name = "Arial"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineNone
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.ColorIndex = wdAuto
.Engrave = False
.Superscript = False
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 0
.Animation = wdAnimationNone
End With
Selection.Range.Case = wdUpperCase
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 0
.SpaceAfter = 0
.LineSpacingRule = wdLineSpaceMultiple
.LineSpacing = LinesToPoints(1.4)
.Alignment = wdAlignParagraphCenter
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = "_$$$_"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
End Sub

Sub InsertDataIjtimaTahunA()
Dim ResFile, StrTahun
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)

ResFile = DirectoryHasilTabel & "calyear" & StrTahun & "a.tbl"


If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilTabel & "calyear" & "1420a.tbl"
End If

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="32"

53
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
.Replacement.Text = "1420 H"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.InsertFile FileName:=ResFile, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveUp Unit:=wdLine, Count:=13, Extend:=wdExtend
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.ConvertToTable Separator:=wdSeparateByCommas, NumColumns:=5, _
NumRows:=13, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False
Selection.Font.Name = "Arial"
Selection.Font.Size = 11
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.SpaceBefore = 1
.SpaceAfter = 1
End With
Selection.Cut
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
.Replacement.Text = "1420 H"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.MoveDown Unit:=wdLine, Count:=4
Selection.MoveLeft Unit:=wdCharacter, Count:=3
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
Selection.Paste
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.31)
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.Font.Italic = wdToggle
End Sub

Sub InsertDataIjtimaTahunB()
Dim ResFile, StrTahun
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)

ResFile = DirectoryHasilTabel & "calyear" & StrTahun & "b.tbl"


If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilTabel & "calyear" & "1420b.tbl"
End If

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="32"


Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue

54
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.InsertFile FileName:=ResFile, Range:="", _
ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.MoveUp Unit:=wdLine, Count:=13, Extend:=wdExtend
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.ConvertToTable Separator:=wdSeparateByCommas, NumColumns:=5, _
NumRows:=13, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False
Selection.Font.Name = "Arial"
Selection.Font.Size = 11
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.SpaceBefore = 1
.SpaceAfter = 1
End With
Selection.Cut
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
.Replacement.Text = "1420 H"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.MoveDown Unit:=wdLine, Count:=3
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
Selection.Paste
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.31)
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.Font.Italic = wdToggle
End Sub

Sub ShadowedCellB()
Dim MyFile, MyString, ResFile, FileName, StrTahun, StrTahunN
StrTahunN = Format(MwqtInputs.TahunHijriyah.ListIndex + 1301)
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
ResFile = DirectoryHasilTabel & "shift" & StrTahun & "b.out"
FileName = "shift" & StrTahun & "b.out"
If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilTabel & "shift" & "1420b.out"
FileName = "shift" & "1420b.out"
End If

Open ResFile For Input As #1


Input #1, MyString
Close #1

55
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

MyFile = Dir(ResFile)
If (MyFile <> "") Then
Kill ResFile
End If

Selection.MoveUp Unit:=wdLine, Count:=1


Selection.MoveDown Unit:=wdLine, Count:=Val(MyString)
Selection.MoveDown Unit:=wdLine, Count:=13 - Val(MyString), Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=13 - Val(MyString), Extend:=wdExtend
Selection.Cells.Merge
Selection.Font.Italic = wdToggle
Selection.Font.Size = 16
Selection.TypeText Text:=StrTahunN
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
Selection.MoveRight Unit:=wdCharacter, Count:=1

End Sub

Sub ShadowedCellA()
Dim MyFile, MyString, ResFile, FileName, StrTahun, StrTahunP
StrTahun = Format(MwqtInputs.TahunHijriyah.ListIndex + 1300)
StrTahunP = Format(MwqtInputs.TahunHijriyah.ListIndex + 1299)
ResFile = DirectoryHasilTabel & "shift" & StrTahun & "a.out"
FileName = "shift" & StrTahun & "a.out"
If (MwqtInputs.TahunHijriyah.SelText = "") Then
ResFile = DirectoryHasilTabel & "shift" & "1420a.out"
FileName = "shift" & "1420a.out"
End If

Open ResFile For Input As #1


Input #1, MyString
Close #1
MyFile = Dir(ResFile)
If (MyFile <> "") Then
Kill ResFile
End If

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="31"


Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
.Replacement.Text = "1420 H"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.MoveDown Unit:=wdLine, Count:=3
Selection.MoveRight Unit:=wdCell
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=Val(MyString) - 2, Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=Val(MyString) - 2, Extend:=wdExtend
Selection.Cells.Merge
Selection.TypeText Text:=StrTahunP
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Italic = wdToggle
Selection.Font.Bold = wdToggle
Selection.Font.Size = 16
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine

56
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

Selection.MoveLeft Unit:=wdCharacter, Count:=1


Selection.HomeKey Unit:=wdLine
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=12, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=9, Extend:=wdExtend
With Selection.ParagraphFormat
.SpaceBefore = 2
.SpaceAfter = 2
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Selection.Find.ClearFormatting
With Selection.Find
.Text = "YEAR_B"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
End Sub

MMwqt2000.bas

Attribute VB_Name = "MMwqt2000"


Sub Mwqt2000()
Dim TahunH, BulanH
Dim NamaBulan
NamaBulan = Array("Muharram", "Safar", "Rabi ul-Awal", _
"Rabi ul-Akhir", "Jumadil-Awal", "Jumadil-Akhir", _
"Rajab", "Syaban", "Ramadhan", _
"Syawal", "Dzul Qidah", "Dzul Hijjah")
PageSetup
For BulanH = 0 To 11
MwqtInputs.BulanHijriyah.AddItem (NamaBulan(BulanH))
Next BulanH
MwqtInputs.BulanHijriyah.ListIndex = 0

For TahunH = 1300 To 1500


MwqtInputs.TahunHijriyah.AddItem (Str(TahunH))
Next TahunH
MwqtInputs.TahunHijriyah.ListIndex = 120
MwqtInputs.Show
End Sub

Sub PageSetup()
With ActiveDocument.PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientLandscape
.TopMargin = CentimetersToPoints(2)
.BottomMargin = CentimetersToPoints(2)
.LeftMargin = CentimetersToPoints(2.5)
.RightMargin = CentimetersToPoints(1.7)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.27)
.FooterDistance = CentimetersToPoints(1.27)
.PageWidth = CentimetersToPoints(29.7)
.PageHeight = CentimetersToPoints(21)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = True
End With
End Sub

57
Surabaya, 11 – 12 Oktober 2002
Kuliah Umum : Komputerisasi Program Hisab dan Rukyat

58
Surabaya, 11 – 12 Oktober 2002

Anda mungkin juga menyukai