Source code program pertama yang gw rilis di internet. Bagi yang berminat mendapatkan source code dalam format lebih rapi, silakan hubungi saya melalui email.
1. {Program ini ditulis oleh Tri R.A Wibowo dengan data dari buku quot;Misteri Namaquot;
karya Abdul Hadi Sudiro. Source code bisa dipublikasikan dengan bebas tanpa
izin tertulis dari penulis, tapi nama penulis harus disebutkan dalam setiap
publikasi kode}
Program Misteri_Nama;
uses wincrt,strings,windos,wintypes,winprocs;
type
TPoint = record {Tpoint masuk ke dalam wintypes}
x: Integer;
y: Integer;
end;
var
nama,jml,tot,tots : string;
resp,lagi: char;
ii,jj,kk,total,a,b,tot1,tot2,sum: integer;
ni: array[1..50] of integer;
poin:array[1..4] of integer;
const
text = 'Tidak bernilai';
nilh:array[1..26] of integer=(1,2,3,4,5,6,7,8,9,600,10,20,30,40,50,60,70,80,90,100,200,700,1400,300,400,500);
teks:array[1..78] of string=('Kegemaran;bernafsu;nafsu mengejar
kehormatan','Kerusakan;kebinasaan;mati',
'Agama;kepercayaan;tujuan pada
roh','Keteguhan;kebijaksanaan;pengaruh;kekuasaan;tetap',
'Kebahagiaan;kehormatan;pernikahan','Pekerjaa
n;sempurna',
'Jalannya
penghidupan;ketentraman;kemerdekaan;kebahagiaan;kesempurnaan',
'Perasaan kepada
perikeadilan','Kesedihan;kekurangsempurnaan',
'Berhasil;kepandaian;keberuntungan di
kemudian hari',
'Cacat;keributan;hukuman;melupakan
kewajiban;sakit;pengharapan',
'Alamat baik','Durjana dan tidak
beribadat','Pengorbanan','Ibadah;kebaikan;kesopanan',
'Kecintaan dan kebahagiaan','Kecelakaan dan
tabiat pelupa','Kekejaman','Kebodohan',
'Bengis;ketus;kedukaan','Kebijaksanaan;pencipt
aan;kegaiban','Hukuman;pembalasan tuhan',
'Tidak berpengetahuan tentang agama','Satu
perjalanan melancong',
'Kecerdasan;pikiran;satu kelahiran','Pertanda
baik dan berfaidah','Gagah dan tabah',
'Semboyan dan sifat
kecintaan','Surat','Kemasyhuran dan pernikahan',
'Nafsu gemar kemasyhuran dan
kebajikan','Pernikahan','Ketelitian yang melewati batas',
'Sengsara;sakit;penyakit otak miring','Kesehatan
dan rukun',
'Kepandaian luar biasa;otak
cemerlang;pengetahuan luas','Hidup manis dalam rumah tangga',
'Cacat;tidak sempurna;pelit;pecemburu','Gemar
pujian',
'Pesta;keramaian;sukacita;pernikahan','Kenistaa
n umum','Umur pendek;hidup tak bahagia',
'Upacara;agama;pendeta','Pengaruh;kekuasaan
;kebagusan','Isi negeri','Kemakmuran',
2. 'Hidup lama dan
bahagia','Pengadilan;hakim;vonis','Serakah akan uang',
'Pengampunan;pelepasan;kemerdekaan','Tercer
ai dari pasangan',
'Semangat
bergerak;pengetahuan;keindahan','Dunia','Pengampunan;penyesalan;pertobatan',
'Kesembuhan','Ahli dalam ilmu
seni','Silau;kesesatan;kedukaan','Berkah dari yang maha agung',
'Semangat patriot;gemar akan
kebagusan','Ragu-ragu','Kesengsaraan',
'Sentosa;kepercayaan;menyukai ilmu
pengetahuan','Titah utusan tuhan',
'Pengharapan dan
keadilan','Rumah;rombongan;berkawan','Menyukai ilmu perbintangan',
'Perjalanan yang lama dan
melelahkan','Pendeta dan agama','Kesucian','Sempurna dan baik',
'Kejahatan;persekutuan;permusuhan','Tenaga
dan kekuatan',
'Keangkeran;pengaruh;pemerintahan;kekuasaa
n','Peperangan;pertempuran;pergulatan',
'Sifat pengasih dan
pengampun','Pendiam','Gangguan','Pengejaran dan pendakwaan');
function kapital(nama:string):string;
begin
if (nama[1] >= 'a') and (nama[1] <= 'z') then {Ini mengapitalkan huruf kecil}
dec(nama[1],32);
for ii:=2 to length(nama) do
begin
if (nama[ii] >= 'A') and (nama[ii] <= 'Z') then {Ini mengecilkan huruf kapital}
inc(nama[ii],32);
end;
for ii:=2 to (length(nama) - 1) do
begin
if (nama[ii] = ' ') then
begin
jj:=ii;
if (nama[jj + 1] >= 'a') and (nama[jj + 1] >= 'z') then
dec(nama[jj + 1],32);
end;
end;
kapital:=nama;
end;
procedure reckoner(var total:integer);
begin
if total > 1390 then
begin
str(total,jml); {total:integer; jml:string}
kk:=length(jml);
tot:=copy(jml,kk-2,3);
val(tot,total,a);
writeln(' => ',total);
end;
end;
procedure list(total:integer);
begin
clrscr;
3. str(total,jml);
kk:=length(jml);
val(jml,total,a);
writeln('Hasil dari nama ',kapital(nama),' adalah sebagai berikut:');
writeln;
if kk = 1 then
begin
case total of
1: writeln('1 = ',teks[1]);
2: writeln('2 = ',teks[2]);
3: writeln('3 = ',teks[3]);
4: writeln('4 = ',teks[4]);
5: writeln('5 = ',teks[5]);
6: writeln('6 = ',teks[6]);
7: writeln('7 = ',teks[7]);
8: writeln('8 = ',teks[8]);
9: writeln('9 = ',teks[9]);
end;
end
else if kk = 2 then
begin
tot:=copy(jml,2,1);
val(tot,sum,a);
case sum of
1: begin
writeln('1 = ',teks[1]);
poin[2]:=1; {digit sebelah kanan. Contoh: 5[1]}
end;
2: begin
writeln('2 = ',teks[2]);
poin[2]:=2;
end;
3: begin
writeln('3 = ',teks[3]);
poin[2]:=3;
end;
4: begin
writeln('4 = ',teks[4]);
poin[2]:=4;
end;
5: begin
writeln('5 = ',teks[5]);
poin[2]:=5;
end;
6: begin
writeln('6 = ',teks[6]);
poin[2]:=6;
end;
7: begin
writeln('7 = ',teks[7]);
poin[2]:=7;
end;
8: begin
writeln('8 = ',teks[8]);
poin[2]:=8;
end;
9: begin
writeln('9 = ',teks[9]);
poin[2]:=9;
4. end;
0: begin
writeln('0 = ',text);
poin[2]:=0;
end;
end;
for ii:=1 to 2 do
begin
tot:=copy(jml,1,ii);
val(tot,sum,a);
case sum of
1: begin
writeln('10 = ',teks[10]);
poin[ii]:=1; {digit sebelah kiri. Contoh: [5]1}
end;
2: begin
writeln('20 = ',teks[20]);
poin[ii]:=2;
end;
3: begin
writeln('30 = ',teks[30]);
poin[ii]:=3;
end;
4: begin
writeln('40 = ',teks[40]);
poin[ii]:=4;
end;
5: begin
writeln('50 = ',teks[50]);
poin[ii]:=5;
end;
6: begin
writeln('60 = ',teks[51]);
poin[ii]:=6;
end;
7: begin
writeln('70 = ',teks[52]);
poin[ii]:=7;
end;
8: begin
writeln('80 = ',teks[55]);
poin[ii]:=8;
end;
9: begin
writeln('90 = ',teks[57]);
poin[ii]:=9;
end;
11: writeln('11 = ',teks[11]);
12: writeln('12 = ',teks[12]);
13: writeln('13 = ',teks[13]);
14: writeln('14 = ',teks[14]);
15: writeln('15 = ',teks[15]);
16: writeln('16 = ',teks[16]);
17: writeln('17 = ',teks[17]);
18: writeln('18 = ',teks[18]);
19: writeln('19 = ',teks[19]);
21: writeln('21 = ',teks[21]);
22: writeln('22 = ',teks[22]);
23: writeln('23 = ',teks[23]);
5. 24: writeln('24 = ',teks[24]);
25: writeln('25 = ',teks[25]);
26: writeln('26 = ',teks[26]);
27: writeln('27 = ',teks[27]);
28: writeln('28 = ',teks[28]);
29: writeln('29 = ',teks[29]);
31: writeln('31 = ',teks[31]);
32: writeln('32 = ',teks[32]);
33: writeln('33 = ',teks[33]);
34: writeln('34 = ',teks[34]);
35: writeln('35 = ',teks[35]);
36: writeln('36 = ',teks[36]);
37: writeln('37 = ',teks[37]);
38: writeln('38 = ',teks[38]);
39: writeln('39 = ',teks[39]);
41: writeln('41 = ',teks[41]);
42: writeln('42 = ',teks[42]);
43: writeln('43 = ',teks[43]);
44: writeln('44 = ',teks[44]);
45: writeln('45 = ',teks[45]);
46: writeln('46 = ',teks[46]);
47: writeln('47 = ',teks[47]);
48: writeln('48 = ',teks[48]);
49: writeln('49 = ',teks[49]);
75: writeln('75 = ',teks[53]);
77: writeln('77 = ',teks[54]);
81: writeln('81 = ',teks[56]);
end;
end;
writeln;
writeln(poin[1],' + ',poin[2],' = ',poin[1] + poin[2],' => ',teks[poin[1] + poin[2]]);
str(poin[1] + poin[2],jml);
if length(jml) = 2 then {misalkan jml = '14'}
begin
tot:=copy(jml,1,1); {berarti tot = '1'}
tots:=copy(jml,2,1); {dan tots = '4'}
val(tot,tot1,a); {Fungsi val mengubah tot & tots yang merupakan string menjadi tot1 &
tot2 yang merupakan integer}
val(tots,tot2,a);
writeln(tot1,' + ',tot2,' = ',tot1 + tot2,' => ',teks[tot1 + tot2]);
end;
end
else if kk = 3 then
begin
tot:=copy(jml,3,1);
val(tot,sum,a);
case sum of
1: begin
writeln('1 = ',teks[1]);
poin[3]:=1; {digit sebelah kanan. Contoh: 39[1]}
end;
2: begin
writeln('2 = ',teks[2]);
poin[3]:=2;
end;
3: begin
writeln('3 = ',teks[3]);
poin[3]:=3;
end;
6. 4: begin
writeln('4 = ',teks[4]);
poin[3]:=4;
end;
5: begin
writeln('5 = ',teks[5]);
poin[3]:=5;
end;
6: begin
writeln('6 = ',teks[6]);
poin[3]:=6;
end;
7: begin
writeln('7 = ',teks[7]);
poin[3]:=7;
end;
8: begin
writeln('8 = ',teks[8]);
poin[3]:=8;
end;
9: begin
writeln('9 = ',teks[9]);
poin[3]:=9;
end;
0: begin
writeln('0 = ',text);
poin[3]:=0;
end;
end;
tot:=copy(jml,2,1);
val(tot,sum,a);
case sum of
1: begin
writeln('10 = ',teks[10]);
poin[2]:=1; {digit di tengah. Contoh: 3[9]1}
end;
2: begin
writeln('20 = ',teks[20]);
poin[2]:=2;
end;
3: begin
writeln('30 = ',teks[30]);
poin[2]:=3;
end;
4: begin
writeln('40 = ',teks[40]);
poin[2]:=4;
end;
5: begin
writeln('50 = ',teks[50]);
poin[2]:=5;
end;
6: begin
writeln('60 = ',teks[51]);
poin[2]:=6;
end;
7: begin
writeln('70 = ',teks[52]);
poin[2]:=7;
7. end;
8: begin
writeln('80 = ',teks[55]);
poin[2]:=8;
end;
9: begin
writeln('90 = ',teks[57]);
poin[2]:=9;
end;
0: begin
writeln('0 = ',text);
poin[2]:=0;
end;
end;
tot:=copy(jml,1,1);
val(tot,sum,a);
case sum of
1: begin
writeln('100 = ',teks[58]);
poin[1]:=1; {digit sebelah kiri. Contoh: [3]91}
end;
2: begin
writeln('200 = ',teks[60]);
poin[1]:=2;
end;
3: begin
writeln('300 = ',teks[62]);
poin[1]:=3;
end;
4: begin
writeln('400 = ',teks[67]);
poin[1]:=4;
end;
5: begin
writeln('500 = ',teks[69]);
poin[1]:=5;
end;
6: begin
writeln('600 = ',teks[70]);
poin[1]:=6;
end;
7: begin
writeln('700 = ',teks[72]);
poin[1]:=7;
end;
8: begin
writeln('800 = ',teks[73]);
poin[1]:=8;
end;
9: begin
writeln('900 = ',teks[74]);
poin[1]:=9;
end;
end;
case total of
100:writeln('100 = ',teks[58]);
120:writeln('120 = ',teks[59]);
200:writeln('200 = ',teks[60]);
215:writeln('215 = ',teks[61]);
8. 300:writeln('300 = ',teks[62]);
318:writeln('318 = ',teks[63]);
350:writeln('350 = ',teks[64]);
360:writeln('360 = ',teks[65]);
365:writeln('365 = ',teks[66]);
400:writeln('400 = ',teks[67]);
490:writeln('490 = ',teks[68]);
500:writeln('500 = ',teks[69]);
600:writeln('600 = ',teks[70]);
666:writeln('666 = ',teks[71]);
700:writeln('700 = ',teks[72]);
800:writeln('800 = ',teks[73]);
900:writeln('900 = ',teks[74]);
end;
writeln;
writeln(poin[1],' + ',poin[2],' + ',poin[3],' = ',poin[1] + poin[2] + poin[3],' => ',teks[poin[1] + poin[2] +
poin[3]]);
str(poin[1] + poin[2] + poin[3],jml);
if length(jml) = 2 then {misalkan jml = '27'}
begin
tot:=copy(jml,1,1); {berarti tot = '2'}
tots:=copy(jml,2,1); {dan tots = '7'}
val(tot,tot1,a); {Fungsi val mengubah tot & tots yang merupakan string menjadi tot1 &
tot2 yang merupakan integer}
val(tots,tot2,a);
writeln(tot1,' + ',tot2,' = ',tot1 + tot2,' => ',teks[tot1 + tot2]);
end;
end
else {Jika kk bukan 1, 2, ataupun 3}
begin
tot:=copy(jml,4,1); {Digit sebelah kanan. Contoh: 139[0]}
val(tot,sum,a);
case sum of
1: begin
writeln('1 = ',teks[1]);
poin[4]:=1;
end;
2: begin
writeln('2 = ',teks[2]);
poin[4]:=2;
end;
3: begin
writeln('3 = ',teks[3]);
poin[4]:=3;
end;
4: begin
writeln('4 = ',teks[4]);
poin[4]:=4;
end;
5: begin
writeln('5 = ',teks[5]);
poin[4]:=5;
end;
6: begin
writeln('6 = ',teks[6]);
poin[4]:=6;
end;
7: begin
writeln('7 = ',teks[7]);
9. poin[4]:=7;
end;
8: begin
writeln('8 = ',teks[8]);
poin[4]:=8;
end;
9: begin
writeln('9 = ',teks[9]);
poin[4]:=9;
end;
0: begin
writeln('0 = ',text);
poin[4]:=0;
end;
end;
tot:=copy(jml,3,1); {digit kedua dari kanan. Contoh: 13[9]0}
val(tot,sum,a);
case sum of
1: begin
writeln('10 = ',teks[10]);
poin[3]:=1;
end;
2: begin
writeln('20 = ',teks[20]);
poin[3]:=2;
end;
3: begin
writeln('30 = ',teks[30]);
poin[3]:=3;
end;
4: begin
writeln('40 = ',teks[40]);
poin[3]:=4;
end;
5: begin
writeln('50 = ',teks[50]);
poin[3]:=5;
end;
6: begin
writeln('60 = ',teks[51]);
poin[3]:=6;
end;
7: begin
writeln('70 = ',teks[52]);
poin[3]:=7;
end;
8: begin
writeln('80 = ',teks[55]);
poin[3]:=8;
end;
9: begin
writeln('90 = ',teks[57]);
poin[3]:=9;
end;
0: begin
writeln('0 = ',text);
poin[3]:=0;
end;
end;
10. tot:=copy(jml,2,1); {digit kedua dari kiri. Contoh: 1[3]90}
val(tot,sum,a);
case sum of
1: begin
writeln('100 = ',teks[58]);
poin[2]:=1;
end;
2: begin
writeln('200 = ',teks[60]);
poin[2]:=2;
end;
3: begin
writeln('300 = ',teks[62]);
poin[2]:=3;
end;
4: begin
writeln('400 = ',teks[67]);
poin[2]:=4;
end;
5: begin
writeln('500 = ',teks[69]);
poin[2]:=5;
end;
6: begin
writeln('600 = ',teks[70]);
poin[2]:=6;
end;
7: begin
writeln('700 = ',teks[72]);
poin[2]:=7;
end;
8: begin
writeln('800 = ',teks[73]);
poin[2]:=8;
end;
9: begin
writeln('900 = ',teks[74]);
poin[2]:=9;
end;
0: begin
writeln('0 = ',text);
poin[2]:=0;
end;
end;
writeln('1000 = ',teks[75]); {digit sebelah kiri. Contoh: [1]390}
poin[1]:=1;
case total of
1095:writeln('1095 = ',teks[76]);
1260:writeln('1260 = ',teks[77]);
1390:writeln('1390 = ',teks[78]);
end;
writeln;
b:=poin[1] + poin[2] + poin[3] + poin[4];
writeln(poin[1],' + ',poin[2],' + ',poin[3],' + ',poin[4],' = ',b,' => ',teks[b]);
str(b,jml);
if length(jml) = 2 then {misalkan jml = '27'}
begin
tot:=copy(jml,1,1); {berarti tot = '2'}
tots:=copy(jml,2,1); {dan tots = '7'}
11. val(tot,tot1,a); {Fungsi val mengubah tot & tots yang merupakan string menjadi tot1 &
tot2 yang merupakan integer}
val(tots,tot2,a);
writeln(tot1,' + ',tot2,' = ',tot1 + tot2,' => ',teks[tot1 + tot2]);
end;
end;
end;
procedure seleksi;
begin
jj:=length(nama);
for ii:=1 to jj do
begin
case upcase(nama[ii]) of
'A':begin
writeln('A: ',nilh[1]);
ni[ii]:=nilh[1];
end;
'B':begin
writeln('B: ',nilh[2]);
ni[ii]:=nilh[2];
end;
'C':begin
writeln('C: ',nilh[3]);
ni[ii]:=nilh[3];
end;
'D':begin
writeln('D: ',nilh[4]);
ni[ii]:=nilh[4];
end;
'E':begin
writeln('E: ',nilh[5]);
ni[ii]:=nilh[5];
end;
'F':begin
writeln('F: ',nilh[6]);
ni[ii]:=nilh[6];
end;
'G':begin
writeln('G: ',nilh[7]);
ni[ii]:=nilh[7];
end;
'H':begin
writeln('H: ',nilh[8]);
ni[ii]:=nilh[8];
end;
'I':begin
writeln('I: ',nilh[9]);
ni[ii]:=nilh[9];
end;
'J':begin
writeln('J: ',nilh[10]);
ni[ii]:=nilh[10];
end;
'K':begin
writeln('K: ',nilh[11]);
ni[ii]:=nilh[11];
end;
'L':begin
13. ' ':writeln;
else
begin
sum := messagebox(0,'Nama Anda mengandung karakter selain huruf',nil,
mb_iconexclamation);
ii:=jj;
end;
end;
total:=total + ni[ii];
end;
writeln('--------------- +');
write('Total: ',total);
end;
procedure tanggal;
const
hari: array [0..6] of string = ('Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu');
bulan:array [1..12] of string = ('Januari','Februari','Maret','April','Mei','Juni','Juli',
'Agustus','September','Oktober','Novemb
er','Desember');
var
y,m,d,dow:word;
tgl,bln,thn:string;
begin
getdate(y,m,d,dow);
str(d:0,tgl);
str(y:0,thn);
case m of
1: bln:=bulan[1];
2: bln:=bulan[2];
3: bln:=bulan[3];
4: bln:=bulan[4];
5: bln:=bulan[5];
6: bln:=bulan[6];
7: bln:=bulan[7];
8: bln:=bulan[8];
9: bln:=bulan[9];
10: bln:=bulan[10];
11: bln:=bulan[11];
12: bln:=bulan[12];
end;
writeln('Hari : ',hari[dow]);
writeln('Tanggal: ',tgl,' ',bln,' ',thn);
end;
procedure jam;
var
h, m, s, hund : Word;
function LeadingZero(w : Word) : String;
var
s : String;
begin
Str(w:0,s);
if Length(s) = 1 then
s := '0' + s;
LeadingZero := s;
end;
begin
GetTime(h,m,s,hund);
14. Writeln('Pukul : ',LeadingZero(h),':',LeadingZero(m),':',LeadingZero(s),'.',LeadingZero(hund));
end;
{PROGRAM UTAMA}
begin
strcopy(windowtitle,'Misteri Nama');
screensize.x:=90; {kolom/vertikal}
screensize.y:=55; {baris/horisontal}
initwincrt;
messagebox(0,'Program ini dibuat berdasarkan buku quot;Misteri Namaquot; karya Abdul Hadi
Sudiro','Informasi',
mb_iconinformation);
lagi:='Y';
while upcase(lagi)='Y' do
begin
clrscr;
total:=0; sum:=0;
writeln('Misteri Nama (c) 2009 Tri R.A Wibowo. All Rights Reserved.');
writeln;
tanggal; jam;
writeln;
writeln('Silakan ketikkan nama lengkap Anda.');
readln(nama);
writeln;
clrscr;
writeln('*Perhitungan Nilai*'); writeln;
seleksi;
if sum = 0 then
begin
reckoner(total);
resp:=readkey;
list(total);
for ii:=1 to 50 do ni[ii]:=0;
write('Lagi? (Y/T)');
lagi:=readkey;
end
else
lagi := 'Y';
end;
messagebox(0,'Email: im3_aja56@yahoo.co.id','Contacting The Author',
mb_iconinformation);
donewincrt;
end.