Anda di halaman 1dari 69

A1Fungsi Write & writeln

Program pertama;
BEGIN
WRITE(Ketik);
Writeln(Lempar kebawah);
Readln; {stopan};
END.
A2 Mencari luas lingkaran dan luas segi-3
uses crt;
var a:real;c:string[3]; t,al:real; i:char;
begin { write('masukkan jari2 lingkaran');
readln(a);
writeln('Luas =',pi*a*a:6:2);
writeln('Luas =',pi*sqr(a):6:2);
writeln('Masukkan tinggi, alas'); readln(t,al);
writeln('Luas=',(t*al)/2:6:3);}
for i:='a' to 'm' do
writeln(i,' kode nya = ',ord(i):3,' ',upcase(i),' kodenya
',ord(upcase(i)));
writeln('Sudah ? '); readln;
for i:='n' to 'z' do
writeln(i,' kode nya = ',ord(i),' ',upcase(i),' kodenya
',ord(upcase(i)));
readln;
end.
A3 Penyelesaian Persamaan kuadrat a x2 +b x + c = 0 dgn syarat:
a ? 0
program persamaan_kuadrat;
uses crt;
var a,b,c,d,x1,x2:real;
begin clrscr;
writeln('Masukkan a b c');
readln(a,b,c);
d:=b*b-4*a*c; writeln(d:9:2);
if d=0 then Begin x1:=-b/(2*a); x2:=X1; Writeln(x1:8:2,'
',x2:8:2);
end
else if d>0 then begin x1:=(-b+sqrt(d))/(2*a); x2:=(-bsqrt(d))/(2*a);
Writeln(x1:8:2,' ',x2:8:2);
end
else Writeln(' Akar-akarnya imaginer');
readln;
end.
A4 Utk membilah-bilah menjadi GROSS, LUSIN DAN BATANG (BUAH)
uses crt;
var
a,g,l, b:integer;
1

BEGIN
Writeln('Masukkan berapa banyak barang ?');
readln(a);
g:=a div 144;
l:=(a mod 144) div 12;
b:=(a mod 144) mod 12; clrscr;
writeln (a,' bt terdiri dari: ',g,' gross , ',l,' lusin dan ',b,'
bt');
readln;
end.
A5 Penerimaan pegawai berdasarkan umur (di antara 20 th dan 40
tahun)
uses crt;
var u: integer; ket:string; syarat:boolean;
BEGIN
clrscr;
writeln('Berapa umur Anda ?');
readln(u);
if (u >=20)and (u<=40) then
Writeln('Anda diterima menjadi pegawai')
else writeln('Maaf Anda belum dapat kami terima jadi
pegawai');
readkey;
END.
A6 Untuk mengetahui segi tiga siku-siku dgn memasukkan ketiga
sisinya
uses crt;
var a,b,c:real;
BEGIN
clrscr;
writeln('Berapa sisi-sisi segi-3 nya ?');
readln(a,b,c);
if (a*a=b*b+c*c)or(b*b=a*a+c*c)or(c*c=b*b+a*a) then
Writeln('Segi-3 tersebut adalah siku-siku')
else writeln('Maaf Segi-3 itu tidak siku-siku ');
readkey;
END.
A7 Untuk mengetahui adanya pengetikan 2 huruf yg sama secara
berturutan
uses crt;
var baru,lama,c:char;
BEGIN
clrscr;
writeln('Masukkan huruf-hurup dan tiap kali di enter !');
readln(baru);
while baru <> '.' do
begin
2

lama := baru;
readln (baru);
if (baru <> ' ')and (baru = lama) then
Writeln('Ada 2 huruf yang sama');
end;
readkey;
END.
A8 Mencoba fungsi ORD(BOOLEAN) ==> ORD(TRUE) = 1 , ORD(FALSE) = 0
uses crt;
var tekan: integer;
BEGIN
clrscr;
writeln('Benarkah pernytaan ini ?');
Writeln('2=3 jika benar tekan 1, bila salah tekan 0');
readln(tekan);
if tekan = ord(2 = 3) then
Writeln('Anda benar .......')
else writeln ('Anda salah .................!!!');
readkey;
END.
A9 Mencari diskon dgn CASE OF
uses crt;
var harga, pot,diskon:longint;
bayar:real;
label ulang;
BEGIN
clrscr;
ulang:
writeln('barang yg dibeli seharga berapa ? ',maxlongint);
readln(harga);
pot:=harga div 1000;
case pot of
0,1:diskon:=1;
2:diskon:=2;
3..15:diskon:=5;
else diskon:=20;
end;
writeln('Anda dapat Diskon =
writeln('Harga barang
writeln('Kalau diuangkan
writeln('Anda cukup membayar
readln;
end.

',diskon,'%');
= Rp ',harga/1:9:2);
= Rp ',diskon/100*harga:9:2);
= Rp ',harga-diskon/100*harga:9:2);

A10 Mencari jumlah huruf a, i, u, o


enter. Diakhiri dgn titik
{$B-}
3

dari pemasukkan per huruf dan

uses crt;
var ba,bi,bu,bo:longint;
huruf:char;
BEGIN
clrscr;
ba:=0; bi:=0; bu:=0; bo:=0;
writeln('Ketiklah per huruf dan enter
textcolor(red);
readln(huruf);
while huruf <> '.' do
Begin
case huruf of
'A','a' :ba:=ba+1;
'I','i' :bi:=Bi +1;
'U','u' :bu:=Bu +1;
'O','o' :bo:=Bo +1;
end;
highvideo;
read(huruf);
end;
writeln(ba,' ',bi,' ',bu,' ',bo);
while not keypressed do
End.

!');

A11=A10 Mencari jumlah huruf a, i, u, o dari pemasukkan per huruf


dan enter. Diakhiri dgn titik
{$B-}
uses crt;
var ba,bi,bu,bo:longint;
huruf:char;
BEGIN
clrscr;
ba:=0; bi:=0; bu:=0; bo:=0;
writeln('Ketiklah per huruf dan enter !');
textcolor(red);
readln(huruf);
while huruf <> '.' do
Begin
case huruf of
'A','a' :ba:=ba+1;
'I','i' :bi:=Bi +1;
'U','u' :bu:=Bu +1;
'O','o' :bo:=Bo +1;
end;
highvideo;
read(huruf);
end;
4

writeln(ba,' ',bi,' ',bu,'


while not keypressed do
End.

',bo);

A12 Mencari nilai akhir suatu pembelajaran


var n,ab,prak,uji:real; lagi:char;
label ulang;
BEGIN
Ulang: writeln('Kita mulai ');
repeat
writeln('Masukkan nil absen, prak, ujian,');
read(ab,prak,uji);
n:=(6*ab+2*prak+uji)/9;
writeln('Nilai Akhir Anda adalah: ',n:9:3);
Writeln('Ada data lain lagi ? (Y/N)');
readln(lagi);
until lagi = 'N';
{belum jalan programnya}
writeln('Bila ingin mengulang tulis y');
readln(lagi);
if lagi = 'y' then goto ulang ;
readln;
end.
A13 Mencari penyelesaian persamaan kuadrat dgn segala
kemungkinannya
uses crt;
var a,b,c,d,r:real; lagi:byte;
label ulang;
BEGIN
ulang:
writeln('Masukkan a,b,c dgn antara spasi ');
readln(a,b,c);
if (a=0) and (b=0) then writeln('Tidak punya akar ')
else if a=0 then writeln('Punya akar tunggal, yaitu x = ',c/b:9:3)
else if c=0 then writeln('Akar x1 =',-b/a:9:3,'x2 = 0 ')
else begin
d:=b*b-4*a*c;if d=0 then
writeln('Akarnya kembar: x1=x2= ',-b/2*a:9:3)
else if d>0 then writeln('x1= ',(b+sqrt(d))/2*a:9:3,
'x2= ',(-bsqrt(d))/2*a:9:3)
else writeln('Punya akar komplex');
end;
writeln('Ada lagi ..? bila ada tekan 1 bila tidak tekan
0');readln(lagi);
if lagi =1 then goto ulang;
while not keypressed do;
END.

A14 Mencari jumlah titik, koma, spasi dan semua huruf dari suatu
kalimat
uses crt;
const tt='.';km=','; sp=' ';
var jt,jk,js,ja,j:byte; ak,lagi:char;
BEGIN
clrscr;
jt:=0; jk:=0; js:=0;ja:=0; j:=0;
writeln('Ketik kalimat dan akhiri dgn * ');
read(ak);
while ak <> '*' do
Begin
J:=j+1;
if ak=tt then jt:=jt +1
else if ak=km then jk:=jk +1
else if ak=sp then js:=js +1
else if (ak='a') or (ak='A') then ja:=ja+1;
read(ak);
End;
textcolor(15);
writeln('Banyak titik = ',jt:3);
writeln('Banyak koma = ',jk:3);
writeln('Banyak spasi = ',js:3);
writeln('Banyak semua = ',j:3);
writeln('banyak a V A =',ja:3);
readln;readln;
END.
A15 Membaca suatu kalimat huruf per huruf kemudian ditulis kembali
(hanya utk 5 huruf)
uses crt;
var i:integer; ak:char;
BEGIN
writeln('ketik kalimat');
for i:=1 to 5 do
begin
read(ak);
writeln('huruf= ',ak);
end;
readln;readln;
END.
A16 Menbuat daftar luas, kll lingkaran, luas permukaan, isi bola
dgn memasukkan jari-jari
uses crt;
var jari, jariA, jariB:integer;
BEGIN
clrscr;
textcolor(yellow+blink);
writeln('Jari-jari berapa s/d berapa ?');
normvideo; highvideo;
6

readln(jariA,jariB);
for jari:=jariA to jariB do
begin
textcolor(red+blink);
textbackground(15);
writeln('jari-jari =',jari,' cm');
normvideo;
writeln('------------------------------');
writeln('luas lingkaran= ',pi*jari*jari:9:1,' cm2');
writeln('Kll lingkaran= ',2*pi*jari:9:2,' cm2');
writeln('luas bola
= ',4*pi*jari*jari:9:0,' cm2');
writeln('isi bola
= ',4/3*pi*sqr(jari)*jari:9:2,' cm3');
writeln('==============================');
end;
while not keypressed do;
END.
A17 Mencari jumlah deret hitung jika diketahui a (suku awal),
b(beda), dan n (banyak suku)
PROGRAM CARI_JUMLAH_SUKU_DERET_(Sn);
uses crt;
var a,b:real; n:integer;
BEGIN
clrscr;
textcolor(yellow+blink);
writeln('Mencari jumlah deret hitung, berapa a, b, n ?');
normvideo; highvideo;
readln(a,b,n);
writeln('S',n,' = ',0.5*n*(2*a+(n-1)*b):10:2);
while not keypressed do;
END.
A18 Menghitung jumlah deret : 2+4+6+8+..
PROGRAM CARI_JUMLAH_DARI_DERET_2_4_6___;
uses crt;
var n,jml,i,suku:integer;
BEGIN
clrscr;
textcolor(yellow+blink);
writeln('Jumlah deret hitung, berapa suku (n) ?');
normvideo; highvideo;
readln(n);
suku:=0; jml:=0;
For i:=1 to n do
begin
suku:=suku+2;
jml:=jml+suku
end;
writeln('S',n,' = ',jml:10);
while not keypressed do;
END.

A19 Membuat daftar Kode ASCII


uses crt;
var c:integer; a,b:char;
begin
clrscr;
writeln('Masukkan huruf awal & akhir ?');
readln(a); readln(b);
writeln('DAFTAR KODE ASCII');
writeln('========================');
writeln(' Huruf
Kode ASCII ');
writeln('------------------------');
for c:=ord(a) to ord(b) do
writeln(chr(c):5,'
',c:9);
for c:=ord(upcase(a)) to ord(upcase(b)) do
writeln(chr(c):5,'
',c:9);
writeln('------------------------');
readln;
end.
A20 Membuat segi -3 dari bintang
uses crt;
var c,d:integer; a,b:char;
begin
clrscr;
for c:=1 to 5 do
begin
for d:=1 to c do
write('*');writeln;
end;
writeln;
readln;
end.
A21 Membuat Kotak segi empat
uses crt;
var c:integer;
begin
clrscr;
for c:=1 to 15 do
write('*');
for c:=1 to 10 do
writeln('*');
for c:=1 to 15 do
write('*');
for c:=1 to 11 do
begin
gotoxy(16,c);
writeln('*');
end;
readln;
end.
8

A22 Mencari Konversi antara Celsius, Fahrenheit dan Reamur


uses crt;
var aw,ar,i:integer; c,f,r:real;
begin
clrscr;
writeln('Masukkan celsius awal & akhir ?');
readln(aw); readln(ar);
writeln('KONVERSI CELSIUS, FAHEREHEIT DAN REAMUR');
writeln('=======================================');
writeln(' CELSIUS
FAHRENHEIT
REAMUR');
writeln('---------------------------------------');
for i:=aw to ar do
begin
c:=i; f:=9/5*c+32; r:=4*c/5;
writeln(c:8:2,' C
',f:10:2,' F ',r:7:2,' R');
end;
for i:=1 to 40 do
write(chr(220));
readln;
end.
A23 Mencari luas penampang , luas permukaan dan isi bola
uses crt;
var jari,pen,muka, vol:real;
Begin
writeln('Ketik panjang jari-jari bola');
readln(jari);
while jari >0 do
begin
writeln('Luas penampang bola = ',2*pi*jari*jari:9:2);
writeln('Luas permukaang bola= ',4*pi*jari*jari:9:2);
writeln('Luas volume bola
= ',4/3*pi*jari*jari*jari:9:2);
writeln('-------------------------------------------');
writeln('Bila ada lagi, langsung ketik berapa cm jari2nya ?');
writeln('Bila berhenti ketik nol');
readln(jari);
end;
readln;
End.
A24 Mengenai PROCEDURE
USES CRT;
PROCEDURE TAMBAH( X, Y:INTEGER; VAR HASIL,HAS :REAL);
BEGIN
HASIL:=X*Y;HAS:=X+2*Y
(*HARUS ADA VAR KALAU TDK DIISI VAR*)
END;
(* MAKA Z DAB S HASILNYA NOL=0
*)
VAR
Z,S:REAL;
BEGIN
CLRSCR;
9

TAMBAH(12,5,Z,S);
GOTOXY(12,5);WRITELN('HASILNYA = ',S:4:2,Z:15:2);
READLN;
END.
A25 Menjumlahkan bil yg diketik
uses crt;
var i,n,tot:integer;
begin
clrscr;
writeln('Ketik bil.brp akan dicari jumlahnya?');
readln(n);
tot:=0;
while n>0 do
begin
for i:=1 to n do
tot:=tot +1;
write('Tambah brp lagi ,bila negatif program berhenti');
readln(n);
end;
clrscr;
writeln('============================');
textcolor(white+blink);
writeln('Jml = ',tot:9);
normvideo;
writeln('----------------------------');
while(not keypressed) do;
end.
A26 Mencari jumlah bil genap & jumlah yg ganjil (yg di ketik)
uses crt;
var totjil,totnap,jil,nap,bil:integer;
cek:boolean;
BEGIN
clrscr;
totjil:=0; totnap:=0;
writeln('Masukkan data satu-satuy');
readln(bil);
{cek:=false;}
while bil <>0 do
Begin
{cek:=not cek;}
if bil mod 2 =0 then totnap:=totnap +1
else totjil:=totjil +1;
readln(bil);
End;
writeln('Yg genap= ',totnap:5,' yg ganjil= ',totjil:5);
readln;
END.
A27 Mencari nilai maksimum
10

uses crt;
var max,bil:real;
BEGIN
Max:=-9999.99 {sekecil2nya};
writeln('masukkan bil');
repeat
{memasukkan bil. boleh satu per satu}
read(bil);
{dan di enter, Atau pisahkan dgn
spasi}
if max<bil then max:=bil;
{12 34 1 23 0 lalu neter, atau:}
until bil <=0;
{12 enter 34 enter 1 enter 23
enter 0 enter}
writeln('Bil terbesar adalah= ',max:6:3);
readln;while not keypressed do;
END
{Bila ada REPEAT.hrs ada 2 stopan (readln; dan readln;)}
A28 Mencari akar suatu bilangan real
uses crt;
var bil:real;
BEGIN
repeat
writeln('Akar brp akan dicari ? kalo berhenti tekan nol');
readln(bil);
if bil >= 0 then writeln(sqrt(bil):9:2)
else writeln('Salah, bil hrs positif');
until bil =0;
write('tekan enter');
readln;
END.
A29 Mencari gaji pegawai
uses crt;
var nama:string[15];
banyak: integer;
jam,gaji,tarif,denda,bonus:real;
BEGIN
clrscr;
writeln('ketik banyak peg. '); readln(banyak);
writeln('ketik tarif/jam. '); readln(tarif);
writeln('ketik % bonus '); readln(bonus);
writeln('ketik % denda '); readln(denda);
clrscr;
repeat
if banyak =0 then exit;
writeln('ketik nama peg '); readln(nama);
writeln('ketik jam kerja '); readln(jam);
if jam > 40 then gaji:=(tarif+tarif*bonus/100)*jam
else if jam =40 then gaji:=tarif*jam
else if jam < 40 then gaji:= (tarif-tarif*denda/100)*jam;
writeln(nama,' ','Rp ',gaji:5:2,' ');
banyak:=banyak-1;
11

until banyak =0;


write('tekan enter');
readln;
END.
A30 Mencari rata-rata
uses crt;
var i:integer; sum,rata, bil:real;
BEGIN
i:=-1; sum:=0;
writeln('Masukkan bil dgn antara spasi & terakhir nol & enter');
repeat
read(bil);
i:=i+1;
sum:=sum+bil;
until bil =0;
rata:=sum/i;
clrscr;
writeln('rata-ratanya adalah= ',rata:5:2);
writeln('Banyak bil adalah: ',i:2,' Tekan Enter');
readln; readln;
END.
A31
Mencari permutasi (perputaran)
uses crt;
var i,a,b,c:integer;
procedure permutasi(var u,v,w:integer);
procedure tukar(Var x,y:integer);
var titip:integer;
begin
titip:=x;
x:=y;
y:=titip;
end;
begin
tukar(v,u);
tukar(u,w);
end;
BEGIN
clrscr;
writeln('Ketik 3 bh bilat A,B,C '); readln(a,b,c);
writeln('Sebelum ditukar
':11,a:5,b:5,c:5);
for i:=1 to 3 do
begin
permutasi(a,b,c);
writeln('Sesudah permutasi ':11,a:5,b:5,c:5);
end;
writeln('==================================');
readln;
END.

12

A32 Mencari permutasi 4 bilangan


uses crt;
var i,a,b,c,d:integer;
procedure permutasi(Var u,v,w,s:integer);
procedure tukar(Var x,y:integer);
var titip:integer;
begin
titip:=x;
x:=y;
y:=titip;
end;
begin
tukar(u,v);
tukar(v,w);
tukar(w,s);
end;
BEGIN
clrscr;
writeln('Ketik 4 bh bilat A,B,C,D '); readln(a,b,c,d);
writeln('Sebelum ditukar
':11,a:5,b:5,c:5,d:5);
for i:=1 to 8 do
begin
permutasi(a,b,c,d);
writeln('Sesudah permutasi ':11,a:5,b:5,c:5,d:5);
end;
writeln('=======================================');
readln;
END.
A33 Procedure Gambar
uses crt;
var i,j,k:integer;
d,f:string[5];
e:char;
procedure gambar;
begin
d:='*****';
e:='*';
f:=' ';
write(d);
writeln(d);
for i:=1 to 5 do
begin
write(e,f,e);
writeln(e,f,e);
end;
for i:=1 to 1 do
writeln;
end;
BEGIN
clrscr;
13

for k:=1 to 2 do
gambar;
readln;
END.
A34 Procedure gambar tanpa parameter
uses crt;
var i,n:integer;
procedure gambar;
begin
writeln('
*');
writeln('
***');
writeln('
*****');
writeln('
*******');
end;
BEGIN
writeln('Mau brp gambar ?'); readln(n);
for i:=1 to n do
gambar;
writeln('Ada ',n,'bh gambar');
readln;
END.
A35 Mencari pangkat dgn procedure
uses crt;
var a,z:real; b:integer;
procedure pangkat(x:real; n:integer;var y:real);
begin
if n=0 then y:=1
else if n>0 then begin
pangkat(x,n-1,y);
y:=y*x;
end
else begin
pangkat(x,n+1,y);
y:=y/x;
end;
end;
BEGIN
clrscr;
writeln('Ketik data A lalu enter'); readln(a);
writeln('Ketik data B lalu enter'); readln(b);
while (a<>0) or (b<>0) do
begin
write(a:5:2,' pangkat',b:3,' =');
pangkat(a,b,z);
writeln(z:8:2);
writeln('Ketik bil A lalu spasi bil B (ketik 0 keduanya utk
berhenti ');
readln(a,b);
end;
14

writeln('Tekan enter');
readln;
END.
A36 Membuat table pangkat
program tabell;
uses crt;
type tab=array[1..10,1..10] of real;
var b,j,i,l:integer;
p:real;
bil:tab;
procedure pangkat(a,n:integer; var p:real);
label habis;
var i,n1:integer;
begin
p:=1; n1:=abs(n);
if n=0 then goto habis;
for i:=1 to n1 do p:=p*a;
if n<0 then p:=1/p;
habis:
if n=0 then p:=1;
end;
BEGIN
writeln('Ketik lebar tabel (max=7)'); readln(b);
for j:=1 to b do
for i:=1 to b do
begin
pangkat(j,i,p);
bil[j,i]:=p;
end;
CLRSCR;
writeln('TABEL PANGKAT DARI ',b,' BILANGAN');
FOR J:=1 TO b DO write('===========');WRITELN;
write('|pangkat |');
for j:=1 to b do write(j:6,' |');writeln;
FOR J:=1 TO b DO write('-----------');WRITELN;;
for j:=1 to b do
begin
write('|',j:5,'
|');
for i:=1 to b do write(bil[j,i]:8:0,'|');
writeln;
end;
FOR J:=1 TO b DO write('~~~~~~~~~~~');WRITELN;
readln;
END.
A37 Memnfaatkan ord, succ, chr, dan ord(A)-2 dll.
uses crt;
var i:byte; ak:char;
BEGIN
writeln('Ketik sembarang aksara '); readln(ak);
15

clrscr;
FOR I:=1 TO 50 DO WRITE('=');{BUAT GARIS} writeln;
writeln('Aksara yg diketik adalah= ',ak);
writeln('Aksara sebelumnya adalah= ',pred(ak));
writeln('Aksara berikutnya adalah= ',succ(ak));
writeln('Kode internal aksara yg diketik adalah= ',ord(ak));
writeln('Kode internal aksara sebelumnya= ',ord(pred(ak)));
writeln('Kode internal aksara berikutnya= ',ord(succ(ak)));
writeln('Aksara sebelum-sebelumnya yg diketik adalah=
',Chr(ord(ak)-2));
writeln('Aksara berikut-berikutnya adalah= ',Chr(ord(succ(ak))
+1));
writeln('ORD dari boolean True= ',ord(true));
writeln('ORD dari boolean False= ',ord(false));
writeln('ORD dari aksara A = ',ord('A'));
FOR I:=1 TO 50 DO WRITE('=');{BUAT GARIS} writeln;
write('Tekan Enter 2X ');
readln;
while not keypressed do;
END.
A38 Mencari nilai ACKER dgn Function
uses crt;
var a,b:integer;
FUNCTION acker(m,n:integer):integer;
begin
if (m=0) and (n>=0) then Acker:=n+1
else if (m>0) and (n=0) then acker:=acker(m-1,1)
else if (m>0) and (n>0) then acker:=acker(n-1,acker(m,n-1));
end;
BEGIN
writeln('Ketik A=0 dan B=0 utk berhenti');
Write('Ketik data A '); readln(a);
Write('Ketik data B '); readln(b);
While (a<>0) or (b<>0) do
{pd contoh 'and'}
begin
Write('Hasilnya = ',acker(a,b));
Write('Ketik data A '); readln(a);
Write('Ketik data B '); readln(b);
end;
readln;
END.
a39 Mencari pangkat dgn function
uses crt;
var a:real; b,i:integer;
FUNCTION pangkat(x:real;n:integer):real;
BEGIN
16

if n=0 then pangkat:=1


else if n>0 then pangkat:=pangkat(x,n-1)*x
else pangkat:=pangkat(x,n+1)/x;
END;
Begin
clrscr;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
while (a<>0) or (b<>0) do
begin
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
write(a:5:1,' pangkat ',b:2,' adalah ');
writeln(pangkat(a,b):5:1);
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
end;
write('Tekan enter');
readln;
End.
A39 uses crt;
var a:real; b,i:integer;
FUNCTION pangkat(x:real;n:integer):real;
BEGIN
if n=0 then pangkat:=1
else if n>0 then pangkat:=pangkat(x,n-1)*x
else pangkat:=pangkat(x,n+1)/x;
END;
Begin
clrscr;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
while (a<>0) or (b<>0) do
begin
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
write(a:5:1,' pangkat ',b:2,' adalah ');
writeln(pangkat(a,b):5:1);
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
end;
write('Tekan enter');
readln;
End.
A40
uses crt;
var a:real; b,i:integer;
FUNCTION pangkat(x:real;n:integer):real;
BEGIN
17

if n=0 then pangkat:=1


else if n>0 then pangkat:=pangkat(x,n-1)*x
else pangkat:=pangkat(x,n+1)/x;
END;
Begin
clrscr;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
while (a<>0) or (b<>0) do
begin
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
write(a:5:1,' pangkat ',b:2,' adalah ');
writeln(pangkat(a,b):5:1);
FOR i:=1 TO 40 DO WRITE('*'); WRITELN;
writeln('Ketik suatu bil '); readln(a);
writeln('Ketik pangkatnya '); readln(b);
end;
write('Tekan enter');
readln;
End.
A41
uses crt;
type tabel=array[1..10] of integer;
var n,i,j:integer;
t:tabel;
BEGIN
clrscr;
lowvideo;
write('Ketik bilat yang ke I = '); readln(n);
normvideo;
i:=0;
while n <>0 do
begin
i:=i+1;
t[i]:=n;
write('Ketik bilat yg ke ',i,' = ');readln(n);
end;
writeln('Hasilnya ');
j:=1;
while j <=i do
begin
write(t[j]); write(' ');
j:=j+1;
end;
writeln;
writeln('Hasilnya terbalik');
i:=j-1;
textcolor(white);
while i>=1 do
begin
18

write(t[i]); write('
i:=i-1;
end;
highvideo;
readln;
END.

');

A42
uses crt;
type kur=record
namamhs:string[20];
nomhs:integer;
kodefak:string[5];
end;
var datamhs:array[1..100] of kur;
i,jmlmhs,norek:integer;
jawab:char;
BEGIN
writeln('Ada brp Mahasiswa ?'); readln(jmlmhs);
For i:=1 to jmlmhs do
begin
write('Siapa namanya ? '); readln(datamhs[i].namamhs);
write('Ketik No. Mhs nya '); readln(datamhs[i].nomhs);
write('Ketik Kode Fak nya '); readln(datamhs[i].kodefak);
end;
jawab:='y';
while (jawab ='y')or(jawab='Y') do
begin
write('Cari No brp ?'); readln(norek);
writeln('========================================');
writeln('Inilah dia
',datamhs[norek].namamhs);
writeln('No Mhs nya
',datamhs[norek].nomhs);
writeln('Kode Fak nya
',datamhs[norek].kodefak);
writeln('========================================');
writeln('Akan cari lagi (Y/N) ?'); readln(jawab);
end;
write('Tekan enter');
readln;
END.
A43
uses crt;
type kur=record
namamhs:string[20];
nomhs:integer;
kodefak:string[5];
end;
var datamhs:array[1..100] of kur;
i,jmlmhs,norek:integer;
jawab:char;
BEGIN
19

writeln('Ada brp Mahasiswa ?'); readln(jmlmhs);


For i:=1 to jmlmhs do
begin
write('Ketik No. Mhs nya '); readln(norek);
write('Siapa namanya ? '); readln(datamhs[norek].namamhs);
write('Ketik Kode Fak nya '); readln(datamhs[norek].kodefak);
end;
jawab:='y';
while (jawab ='y')or(jawab='Y') do
begin
write('Cari No brp ?(nomor tidak boleh sama'); readln(norek);
writeln('========================================');
writeln('Inilah dia
',datamhs[norek].namamhs);
writeln('No Mhs nya
',norek:2);
writeln('Kode Fak nya
',datamhs[norek].kodefak);
writeln('========================================');
writeln('Akan cari lagi (Y/N) ?'); readln(jawab);
end;
write('Tekan enter');
readln;
END.
A44
uses crt;
var datamhs:array[1..100] of record
namamhs:string[20];
nourt:integer;
nomhs:integer;
kodefak:string[5];
end;
jmlmhs,nu,i:integer;
jawab:char;
BEGIN
writeln('Ada brp Mahasiswa ? '); readln(jmlmhs);
For i:=1 to jmlmhs do
BEGIN {for}
with datamhs[i] do
begin
nourt:=i;
writeln('Nama Mhs ? '); readln(namamhs);
writeln('No Mhs ? '); readln(nomhs);
writeln('Kode Fakultas ? '); readln(kodefak);
end;
END; {for}
jawab:='Y';
while (jawab = 'Y') or (jawab='y') do
begin {while}
write('No brp akan dicari ?'); readln(nu); {hrs readln, jangan
read}
with datamhs[nu] do
20

begin
writeln('No Urut adalah
',nourt);
writeln('Nama Mhs adalah ',namamhs);
writeln('No Mhs adalah
',nomhs);
writeln('Kode Fakultas
',kodefak);
end;
write('Ada yg dicari lagi (Y/N) ?'); readln(jawab);
end; {while}
write('Tekan Enter');
readln;
END.
A44 B
uses crt;
var datamhs:array[1..100] of record
namamhs:string[20];
nourt:integer;
nomhs:integer;
kodefak:string[5];
end;
jmlmhs,nu,i:integer;
jawab, lagi:char;
cari:string;
label cetak;
BEGIN
clrscr;
writeln('Ada brp Mahasiswa ? '); readln(jmlmhs);
For i:=1 to jmlmhs do
BEGIN {for}
with datamhs[i] do
begin
nourt:=i;
writeln('Nama Mhs ? '); readln(namamhs);
writeln('No Mhs ? '); readln(nomhs);
writeln('Kode Fakultas ? '); readln(kodefak);
end;
END; {for}
lagi:= 'Y';
while (lagi='Y') or (lagi ='y') do
begin
write('Nama siapa akan dicari ?'); readln(cari);
For i:=1 to jmlmhs do
BEGIN {for}
with datamhs[i] do
begin
IF namamhs = cari then begin nu:=i; goto cetak;end;
end;
END;
cetak:
with datamhs[nu] do
begin
21

writeln('====================================');
nourt:=nu;
writeln('Nama Mhs
',namamhs);
writeln('No Mhs
',nomhs);
writeln('Kode Fakultas
',kodefak);
writeln('Nomor Urut
',nourt);
writeln('------------------------------------');
writeln('Cari lagi (Y/N) ? '); readln(lagi);
end;
end;
readln;
END.
A45
uses crt;
type pecahan=record
pembilang,penyebut:integer;
end;
var a,b,c:pecahan; JAWAB:CHAR;
procedure baca(var x:pecahan);
begin
read(x.pembilang,x.penyebut);
end;
procedure perkalian(x,y:pecahan; var hasil:pecahan);
begin
hasil.pembilang:=x.pembilang*y.pembilang;
hasil.penyebut:=x.penyebut*y.penyebut;
end;
procedure jumlah(x,y:pecahan; var jum:pecahan);
begin
jum.pembilang:=x.pembilang*y.penyebut+y.pembilang*x.penyebut;
jum.penyebut:=x.penyebut*y.penyebut;
end;
BEGIN
JAWAB:='y';
WHILE (JAWAB='Y') OR (JAWAB='y') DO
BEGIN
write('Brp pembilangnya dan penyebut dari pecahan A ? ');
baca(a);readln;
write('Brp pembilangnya dan penyebut dari pecahan B ? ');
baca(b);readln;
perkalian(a,b,c);
clrscr;
writeln('
Hasil Perkalian');
writeln('XXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
writeln(a.pembilang:1,'/',a.penyebut,' x ',
b.pembilang:1,'/',b.penyebut,' = ',
c.pembilang:1,'/',c.penyebut);
writeln('-----------------------------');
writeln;
jumlah(a,b,c);
22

writeln('
Hasil Penjumlahan');
writeln('+++++++++++++++++++++++++++++');
writeln(a.pembilang:1,'/',a.penyebut,' + ',
b.pembilang:1,'/',b.penyebut,' = ',
c.pembilang:1,'/',c.penyebut);
WRITELN('Ada lagi Y/N ? ');READLN(JAWAB);
writeln('-----------------------------');
END;
WRITE('TEKAN ENTER');
readln;
END.
A46
uses crt;
const banyak=100;
type nasabah=record
no:integer;
nama:packed array[1..10] of char;
alamat:packed array[1..10]of char;
simpanan :real;
end;
var datanas:array[1..banyak] of nasabah;
i,j,ban,no:integer;
BEGIN
writeln('Berapa banyak nasabahnya');readln(ban);
i:=1;
while i<=ban do
BEGIN
writeln('Ketik No enter');
writeln(' Nama=10, Alamat=11 spasi, Simpanan enter');
writeln('1234567890*-*-*-*-*-*_angka, enter');
with datanas[i] do
begin
read(no);READLN;
for j:=1 to 10 do read(nama[j]);
for j:=1 to 11 do read(alamat[j]);
read(simpanan);
readln;
end;
i:=i+1;
END;
ban:=i-1;
For i:=1 to ban do
with datanas[i] do
writeln(no:4,' ',nama:3,alamat:5,simpanan:5:2);
readln;
END.
A47
program Cara_memasukkan_data;
23

var
nama:packed array[1..5] of char;j,i,bil:integer;
alamat:packed array[1..6] of char;
begin
WRITELN('Ketik data contoh: sadiaBr.Buc=11 char, spasi 650
enter');
for j:=1 to 5 do read(nama[j]);
for i:=1 to 6 do read(alamat[i]);
read(bil);
for i:=1 to 6 do write(nama[i]); WRITELN;
for i:=1 to 6 do write(alamat[i]); writeln;
writeln(bil:3);
readln;
end.

readln;

A48
uses crt;
var rek1:record
a:string[10];
b:integer;
c:real;
end;
rek2:record
a:string[10]; {seharusnya a pd REK2 diganti dgn
identifier}
r1,r2:real;
{yang lain, misalnya d}
end;
BEGIN
clrscr;
with rek1 do
begin
a:='Yogya';
b:=1;
c:=123.45;
end;
with rek2 do
begin
a:='Solo'; {a harus diganti dgn d, supaya ada pengaruh thd}
r1:=20.0;
{nilai a pd REK1, jadi a pd REK2 tdk boleh}
r2:=10.0
{sama dgn a pd REK1}
end;
with rek1,rek2 do
begin
a:=a; {ganti a dari REK2 dgn d, baru ada perubahan}
c:=r1*r2;
{nilai dari a pd REK1}
end;
with rek1 do
begin
writeln('A = ',a:10);
24

writeln('B = ',b:5);
writeln('C = ',c:6:2);
end;
readkey;
END.
A49
program PENJUALAN;
uses crt;
const banyakjenis=20;
type rek=record
kode:string[8];
nama:string[15];
jum:integer;
sat:string[10];
hargasat:real;
end;
daftar=array[1..banyakjenis] of rek;
var barang:daftar;
jumbar:integer;
procedure pemasukkan(var jumbar:integer; var barang:daftar);
var indekbar:1..banyakjenis;
begin
clrscr;
write('Ada brp jenis barang ? '); readln(jumbar);
for indekbar:=1 to jumbar do
begin
clrscr;
writeln('Ketik barang ke ',indekbar);
write('Kode Barang'); readln(barang[indekbar].kode);
write('Nama Barang'); readln(barang[indekbar].nama);
write('Jumlah Barang'); readln(barang[indekbar].jum);
write('Ukuran/satuan'); readln(barang[indekbar].sat);
write('Harga Satuan'); readln(barang[indekbar].hargasat);
end;
end;
procedure sortirdata(Jumbar:integer;var barang:daftar);
var i,j:integer; titip:rek;
begin
for i:=1 to jumbar do
for j:=i+1 to jumbar do
if barang[i].kode>barang[j].kode then
begin
titip:=barang[i];
barang[i]:=barang[j];
barang[j]:=titip;
end;
end;
procedure cetak(var jumbar:integer;var barang:daftar);
var indekbar:integer;
25

totjual, totharga:real;
begin
clrscr;
writeln('Daftar Penjualan ');
write('No Kode Barang Nama Barang Banyak ');
writeln('Satuan Harga
Total');
{write('
');
write('Satuan
Unit');}
write('======================================');
writeln('=====================');
totjual:=0;
for indekbar:=1 to jumbar do
begin
totharga:=Barang[indekbar].hargasat*barang[indekbar].jum;
totjual:=totjual+totharga;
write(indekbar:2,barang[indekbar].kode:11);
write(barang[indekbar].nama:13,barang[indekbar].jum:8);
write(barang[indekbar].sat:8,barang[indekbar].hargasat:7:0);
writeln(totharga:8:0);
end;
write('======================================');
writeln('=====================');
writeln('Jumlah: ':40,totjual:18:2);
end;
begin
clrscr;
pemasukkan(jumbar,barang);
sortirdata(jumbar,barang);
cetak(jumbar,barang);
write('Tekan enter'); readln;
end.
A50
program Contoh_konstanta_A50;
const pot=5/100;
gapok=50000;
namaprus='PT GARUDA';
var
gaber:real;
begin
gaber:=gapok-gapok*pot;
writeln('Gaji Pokok = ','Rp ',gapok:5);
writeln('Potongan
= ','Rp ',pot*gapok:5:2);
writeln('Gaji Bersih= ','Rp ',gaber:5:2);
writeln('Nama Perusahaan: ',namaprus);
readln;
end.
A51
program konstanta_terdifinisi;
uses crt;
begin
26

writeln('Nilai
writeln('Nilai
writeln('Nilai
writeln('Nilai
readkey;
end.

logika benar
logika salah
Maxint
maxlongint

=
=
=
=

',true);
',false);
',maxint);
',maxlongint);

A52
var total,gaji,tunjangan:real;
menikah:boolean;
jmlanak:integer;
keterangan:string[20];
begin
gaji:=50000;
menikah:=true;
jmlanak:=3;
tunjangan:=0.25 * gaji + jmlanak * 30000;
total:=gaji + tunjangan;
keterangan:='Kariawan teladan';
writeln('Gaji Bulanan
= ','Rp ',gaji);
writeln('Tunjangan
= ','Rp ',tunjangan:5:2);
writeln('Total Gaji Bulanan= ','Rp ',total:6:2);
writeln('Sudah menikah
= ',menikah);
writeln('Jumlah anak
= ',jmlanak);
writeln('Keterangan
= ',keterangan);
readln;
end.
A53
program tipe; {tdk boleh memakai "type" karena merupakan kata
baku}
type pecahan=real; {memakai " = " bukan " : "}
logika=boolean;
bulat=integer;
kata=string[23];
huruf=char;
var total,gaji,tunjangan:pecahan;
menikah:logika;
jmlanak:bulat;
keterangan:kata;
kode:huruf;
begin
gaji:=50000;
menikah:=true;
jmlanak:=3;
tunjangan:=0.25 * gaji + jmlanak * 30000;
total:=gaji + tunjangan;
keterangan:='Kariawan teladan';
kode:='X';
writeln('Gaji Bulanan
= ','Rp ',gaji:5:2);
writeln('Tunjangan
= ','Rp ',tunjangan:5:2);
27

writeln('Total Gaji Bulanan=


writeln('Sudah menikah
=
writeln('Jumlah anak
=
writeln('Keterangan
=
writeln('Kode Keluarga
=
readln;
end.

','Rp ',total:6:2);
',menikah);
',jmlanak);
',keterangan);
',kode);

A54
program contoh_Label;
label 100, selesai;
begin
writeln('Bahasa');
goto 100;
writeln('Basic');
writeln('Cobol');
100:
writeln('PASCAL');
goto selesai;
writeln('FORTRAN');
selesai: readln;
end.
A55
program tabell;
uses crt;
type tab=array[1..10,1..10] of real;
var b,j,i,l:integer;
p:real;
bil:tab;
procedure pangkat(a,n:integer; var p:real);
label habis;
var i,n1:integer;
begin
p:=1; n1:=abs(n);
if n=0 then goto habis;
for i:=1 to n1 do p:=p*a;
if n<0 then p:=1/p;
habis:
if n=0 then p:=1;
end;
BEGIN
writeln('Ketik lebar tabel (max=7)'); readln(b);
for j:=1 to b do
for i:=1 to b do
begin
pangkat(j,i,p);
bil[j,i]:=p;
end;
CLRSCR;
writeln('TABEL PANGKAT DARI ',b,' BILANGAN');
28

FOR J:=1 TO b DO write('===========');WRITELN;


write('|pangkat |');
for j:=1 to b do write(j:6,' |');writeln;
FOR J:=1 TO b DO write('-----------');WRITELN;;
for j:=1 to b do
begin
write('|',j:5,'
|');
for i:=1 to b do write(bil[j,i]:8:0,'|');
writeln;
end;
FOR J:=1 TO b DO write('~~~~~~~~~~~');WRITELN;
readln;
END.
A56
uses crt;
var i:byte; ak:char;
BEGIN
writeln('Ketik sembarang aksara '); readln(ak);
clrscr;
FOR I:=1 TO 50 DO WRITE('=');{BUAT GARIS} writeln;
writeln('Aksara yg diketik adalah= ',ak);
writeln('Aksara sebelumnya adalah= ',pred(ak));
writeln('Aksara berikutnya adalah= ',succ(ak));
writeln('Kode internal aksara yg diketik adalah= ',ord(ak));
writeln('Kode internal aksara sebelumnya= ',ord(pred(ak)));
writeln('Kode internal aksara berikutnya= ',ord(succ(ak)));
writeln('Aksara sebelum-sebelumnya yg diketik adalah=
',Chr(ord(ak)-2));
writeln('Aksara berikut-berikutnya adalah= ',Chr(ord(succ(ak))
+1));
writeln('ORD dari boolean True= ',ord(true));
writeln('ORD dari boolean False= ',ord(false));
writeln('ORD dari aksara A = ',ord('A'));
FOR I:=1 TO 50 DO WRITE('=');{BUAT GARIS} writeln;
write('Tekan Enter 2X ');
readln;
while not keypressed do;
END.
A57
uses crt;
var a,b:integer;
FUNCTION acker(m,n:integer):integer;
begin
if (m=0) and (n>=0) then Acker:=n+1
else if (m>0) and (n=0) then acker:=acker(m-1,1)
else if (m>0) and (n>0) then acker:=acker(n-1,acker(m,n-1));
end;
BEGIN
29

writeln('Ketik A=0 dan B=0 utk berhenti');


Write('Ketik data A '); readln(a);
Write('Ketik data B '); readln(b);
While (a<>0) or (b<>0) do
{pd contoh 'and'}
begin
Write('Hasilnya = ',acker(a,b));
Write('Ketik data A '); readln(a);
Write('Ketik data B '); readln(b);
end;
readln;
END.
A58
uses crt;
var i,n:integer;
procedure gambar;
begin
writeln('
*');
writeln('
***');
writeln('
*****');
writeln('
*******');
end;
BEGIN
writeln('Mau brp gambar ?'); readln(n);
for i:=1 to n do
gambar;
writeln('Ada ',n,'bh gambar');
readln;
END.
A59
uses crt;
var a,z:real; b:integer;
procedure pangkat(x:real; n:integer;var y:real);
begin
if n=0 then y:=1
else if n>0 then begin
pangkat(x,n-1,y);
y:=y*x;
end
else begin
pangkat(x,n+1,y);
y:=y/x;
end;
end;
BEGIN
clrscr;
writeln('Ketik data A lalu enter'); readln(a);
writeln('Ketik data B lalu enter'); readln(b);
while (a<>0) or (b<>0) do
30

begin
write(a:5:2,' pangkat',b:3,' =');
pangkat(a,b,z);
writeln(z:8:2);
writeln('Ketik bil A lalu spasi bil B (ketik 0 keduanya utk
berhenti ');
readln(a,b);
end;
writeln('Tekan enter');
readln;
END.
A60
uses crt;
var a,b:char;
begin
clrscr;
a:=#10; {agar ganti baris}
b:=#13; {berfungsi sebagai enter. Coba hilangkan b}
writeln('Baris Pertama',a,b,'Baris kedua');
writeln('-------------------------------');
writeln('Baris Pertama',a,'Baris kedua');
writeln('Apakah Anda dengar ada bel 2 kali',#7,^G);
readln;
{#7 dan ^g adalah bel}
end.
A61
program OPERATOR_STRING_(TAMBAH);
uses crt;
type s=string[20];
{type string}
var nama1,nama2:s;
begin
clrscr;
nama1:='Drs. I Wayan Gede';
nama2:='Made Swecadana';
writeln(nama1 + nama2);
readln;
end.
A62
program JIKA_MAKA;
uses crt;
type pecah=real;
(*type real=pecahan*)
var nilai:pecah;
keterangan, komentar:string[20];
begin
clrscr;
keterangan:='TDK LULUS';
komentar:='Mengecewakan';
writeln('Ketik nilainya = '); readln(nilai);
if nilai >=6 then
31

begin
keterangan:='LULUS';
komentar:='Cukup';
end;
if(nilai>=7) and (nilai<=8) then
komentar:='Baik'
else
if nilai >8 then
komentar:='Memuaskan';
writeln('Anda dinyatakan ',keterangan,
' dengan predikat ',komentar);
readln;
end.
A63
PROGRAM TIPE;
VAR A:CHAR; {SATU KARAKTER}
B:STRING; {BEBERAPA KARAKTER(HURUF)}
C:STRING[3]; {MAKSIMUM 3 KARAKTER}
D:INTEGER; {-32768 s/d 32767 }
E:WORD; {0 s/d 65535 }
F:BYTE; {0 s/d 255 }
G:SHORTINT; {-128 s/d 127 }
H:LONGINT; {-2147483648 s/d 2147483647 }
R:REAL; { PECAHAN MAK 30 DIGIT TANPA TITIK DESIMAL}
BL,BOL:BOOLEAN; {PUNYA 2 ANGGOTA: TRUE & FALSE}
BEGIN
WRITELN('STRING, STRING[3], INTEGER, WORD, BYTE, SHORTINT');
WRITELN('LONGINT, REAL, BOOLEAN');
WRITELN('Ketik sesuai dgn urutan di atas A,B,C,...');
readln(A); readln(B); readln(C); readln(D); readln(E);
readln(F); readln(G); readln(H); readln(R); BL:=5>7;BOL:=TRUE;
WRITELN(A,'==',B,'==',C,'==',D,'==',E,'==',F,'==',G,'==',
H,'==',R,'==',BL,BOL);
READLN;
END.
A64
PROGRAM CELCIUS_FAHRENHEIT;
VAR C,F:REAL;
BEGIN
WRITELN('kETIK BRP DERAJAT CELCIUS ? ');READLN(C);
F:=1.8*C+32;
WRITELN('=============================================');
WRITELN(C:4:2,' derajat Celcius = ',F:4:2,' drj Fahrenheit');
readln;
end.
A65
PROGRAM cara_memasukkan_data_Boolean;
32

VAR jawab_c :char;


jawab_b :boolean;
BEGIN
WRITELN('Benar atau Salah (B/S) ?'); READLN(jawab_c);
jawab_b := (jawab_c ='B')or(jawab_c='b');
WRITELN('=============================================');
WRITELN('Yang Anda maksudkan adalah ',jawab_b);
readln;
end.
{ingat logika matematika}
A66
program cara_memformat;
uses crt;
var ket:char;
ket2:string[5];
bil:integer;
nilai:real;
bl:boolean;
BEGIN
clrscr;
ket:='c';
ket2:='string';
bil:=25;
nilai:=25.7;
bl:=(5<6);
writeln('format Char ',ket,' atau',ket:5);
writeln('format String ',ket2,' atau ',ket2:5);
writeln('format Integer ',bil,' atau',bil:5);
writeln('format Real ',nilai,' atau ',nilai:5,' atau
',nilai:5:1);
writeln('format Boolean ',bl,' atau ',bl:5);
writeln('Perhatikan tampilannya');
readln;
END.

A67
program Clrscr_gotoxy_procedure_CLREOL_DELLINE_INSLINE_DELAY;
uses crt;
var a,b:integer;
BEGIN
clrscr;
writeln('Belajar Turbo Pascal');
gotoxy(10,15);
writeln('Pindah ke koordinat (10,15)');
writeln('Ketik koordinat, pisahkan dgn spasi,enter ');
readln(a,b);
gotoxy(a,b);
writeln('pindah ke ','(',a,',',b,')');
33

writeln('text ini akan dihapus Belajar Turbo Pascal');


gotoxy(a+21,b+1);
clreol;
{sebagian text dihapus "Pascal"}
gotoxy(1,1); delline; {tulisan kiri atas dihapus}
gotoxy(a+1,b); delay(50000); insline; {INSLINE=menyisipkan baris
kosong pada (a+1,b)}
readln;
{DELAY(50000)=menunda waktu
selama}
END.
{1/1000 detik X 50000}
A68
program for_to_do;
uses crt;
var i:integer;
C,F:real;
begin
clrscr;
highvideo;
for i:=1 to 5 do
writeln('Diulang 5 kali');
readln;
textbackground(white);
textcolor(red+blink);
for i:=2 to 5 do
begin
writeln('Perlu di blok karena lebih dari 1 baris');
writeln('blok = begin....end;');
end;
readln;
normvideo;
writeln('=====================================');
writeln(' x
x2
x3
x4
x5');
writeln('-------------------------------------');
for i:=5 to 7 do
writeln(i:3,i*i:7,i*i*i:10,i*i*i*i:7,i*i*i*i*i:7);
writeln('-------------------------------------');
readln;
highvideo;
writeln('========================');
writeln(' No Celcius
Fahrenheit');
writeln('------------------------');
C:=1;
for i:=1 to 4 do
begin
F:=1.8*C+32;
writeln(i:2,C:9:2,F:12:2);
C:=C+2.5;
end;
writeln('-------------------------');
readln;

34

end.
A69/rabu4
program for_downto_do_dan_bersarang;
uses crt;
var i,j:integer;
C,F:real;
begin
clrscr;
highvideo;
writeln('========================');
writeln(' No Celcius
Fahrenheit');
writeln('------------------------');
C:=15;
for i:=4 downto 1 do
begin
F:=1.8*C+32;
writeln(i:2,C:9:2,F:12:2);
C:=C-2.5;
end;
writeln('-------------------------');
readln;
FOR I:=1 TO 5 DO
BEGIN
FOR J:=1 TO 3 DO
WRITE('INDEK ',I,',',J,'
');
WRITELN;
END;
READLN;
end.
A70/rabu5
program WHILE_DO;
uses crt;
var i:integer;
c,f:real;
begin
clrscr;
highvideo;
c:=0;
i:=0;
writeln(' Daftar Celcius & Fahrenheit');
writeln('-------------------------');
while i<=5 do
begin
F:=1.8*C+32;
writeln(i+1:2,C:9:2,F:12:2);
C:=C+2.5; i:=i+1
end;
writeln('-------------------------');
readln;
35

end.
A71/rabu6
program cari_rata;
uses crt;
var i,n:integer;
tot,bil,rata:real;
begin
clrscr;
tot:=0; i:=0;
writeln('Brp banyak data ? '); readln(n);
while i<n do
begin
i:=i+1;
writeln('Ketik bil yg ke ',i,' '); readln(bil);
tot:=tot+bil;
end;
rata:=tot/n;
writeln('Banyak data = ',n:3);
writeln('Jumlah data = ',tot:4:2);
writeln('Rata-rata = ',rata:4:2);
readln;
end.
A72
program sentinel_lagi_yes;
uses crt;
var i:integer;
tot,bil,rata:real;
lagi,mau:char;
begin
clrscr;
tot:=0; i:=1;bil:=0; mau:='Y';
while mau='Y' do
begin
writeln('Ketik bil yg ke ',i,' '); readln(bil);
tot:=tot+bil;
i:=i+1;
Writeln('Ada data lagi ?'); readln(lagi);
mau:=upcase(lagi);
end;
rata:=(tot)/(i-1);
writeln('Banyak data = ',i-1:3);
writeln('Jumlah data = ',tot:4:2);
writeln('Rata-rata = ',rata:4:2);
readln;
end.
A73
program sentinel_999;
uses crt;
36

var i:integer;
tot,bil,rata:real;
begin
clrscr;
tot:=0; i:=1;bil:=0;
while bil<>999 do
begin
writeln('Ketik bil yg ke ',i,' '); readln(bil);
tot:=tot+bil;
i:=i+1;
end;
rata:=(tot-999)/(i-2);
writeln('Banyak data = ',i-2:3);
writeln('Jumlah data = ',tot-999:4:2);
writeln('Rata-rata = ',rata:4:2);
readln;
end.
A74
program While_Do_bersarang;
uses crt;
var i,n:integer;
tot,bil,rata:real;
lagi,mau:char;
begin
clrscr;
lagi:='Y';
while lagi='Y' do
begin
tot:=0; i:=0;bil:=0;
write('Ketik banyak data '); readln(n);
while i<n do
begin
i:=i+1;
writeln('Ketik bil yg ke ',i,' '); readln(bil);
tot:=tot+bil;
end;
rata:=tot/i;
writeln('Banyak data = ',i:3);
writeln('Jumlah data = ',tot:4:2);
writeln('Rata-rata = ',rata:4:2);
writeln('Ada data lain lagi ? '); readln(mau);
lagi:=upcase(mau);
write('Tekan enter'); readln;
end;
end.
A75
program repeat_until;
uses crt;
37

var c,f:real;
i,n:integer;
begin
clrscr;
writeln('Brp nomor akan dicari ? '); readln(n);
writeln('DAFTAR KONVERSI CELCIUS & FAHRENHEIT');
writeln('=====================================');
writeln(' No
Celcius
Fahrenheit
');
writeln('=====================================');
i:=1; c:=2.5;
repeat
f:= c * 1.8 + 32;
{boleh pakai: BEGIN dan}
writeln(i:3,c:12:2,f:15:2);
i:=i+1; c:=c+2.5;
{END, artinya boleh di Blok}
until i= n+1;
writeln('=====================================');
readln;
end.
A76
program repeat_until_bersarang;
uses crt;
var c,f:real;
i,n:integer;
lagi, mau:char;
begin
clrscr;
REPEAT
writeln('Brp nomor akan dicari ? '); readln(n);
writeln('DAFTAR KONVERSI CELCIUS & FAHRENHEIT');
writeln('=====================================');
writeln(' No
Celcius
Fahrenheit
');
writeln('=====================================');
i:=1; c:=2.5;
repeat
f:= c * 1.8 + 32;
{boleh pakai: BEGIN dan}
writeln(i:3,c:12:2,f:15:2);
i:=i+1; c:=c+2.5;
{END, artinya boleh di Blok}
until i= n+1;
writeln('=====================================');
writeln('Ada lagi (Y/N) ? '); readln(mau);
lagi:=upcase(mau);
until lagi='N';
clrscr;
end.
A77
program if_THEN;
uses crt;
38

var prak,teori,sikap,tot,rata:real;
i:integer;
ket:string[11];
begin
clrscr;
ket:='Tidak Lulus';
writeln('Brp nilai prakteknya ? '); readln(prak);
writeln('Brp nilai teorinya ? '); readln(teori);
writeln('Brp nilai sikapnya ? '); readln(sikap);
tot:=prak+teori+sikap;
i:=1;
rata:=tot/3;
IF rata>=6.00 THEN ket:='Lulus Ujian';
writeln('DAFTAR NILAI UJIAN');
writeln('=========================================================
=====');
writeln(' No
Nilai
Nilai
Nilai Total RataKeterangan');
writeln('Urt
Prakt
Teori
Sikap Semua
rata');
writeln('=========================================================
=====');
writeln(i:3,prak:9:2,teori:9:2,sikap:9:2,tot:7:2,rata:7:2,ket:15);
i:=i+1;
writeln('=========================================================
=====');
readln;
end.
A78
program IF_THEN_dgn_GOTO;
uses crt;
var R,T,isi:real; lagi:char; i:integer;
label 10;
{nama Label boleh dgn angka atau String/huruf}
begin
10:
writeln('Brp Jari-jari Selinder ? '); readln(R);
writeln('Brp Tinggi Selinder ? '); readln(T);
isi:=pi*sqr(R)*T;
writeln;
for i:=1 to 50 do write('='); writeln;
writeln('Isi (Voluma) Selinder = ',isi:5:2);
writeln('Akan menghitung lagi (Y/N) ? '); readln(lagi);
if (lagi='Y') or (lagi='y') then goto 10;
end. {tidak perlu ada readln; lagi}
A79
program mengarahkan_kursor_gotoxy;
uses crt;
var pilih:byte; {byte = 0 s/d 255 }
R,aL,T,Luas:real;
39

Begin
clrscr;
gotoxy(10,2); writeln('Tekan No Urut utk memilih');
gotoxy(10,3); writeln('1.Menghitung Luas lingkaran');
gotoxy(10,4); writeln('2.Menghitung Luas segi-3');
gotoxy(10,5); writeln('3.Menghitung Luas bujur sangkar');
gotoxy(10,6); writeln('0. Selesai');
pilih:=9;
while (pilih <0)or (pilih>3) do
begin
gotoxy(10,8); writeln('Pilih Nomor 0 - 3 '); readln(pilih);
writeln('Salah, silakan ulang lagi dari 0,1,2,3 ');
end;
clrscr;
IF pilih=1 then
begin
write('Brp jari-jari lingkarannya ? '); readln(r);
luas:=pi*sqr(r);
gotoxy(10,3); Write('Jari-jari = ',r:5:1,' cm');
Writeln(' Luas Lingkarannya = ',luas:4:1,'
cm2');
end;
IF pilih=2 then
begin
write('Brp panjang alas segitiganya ? '); readln(al);
write('Brp panjang tinggi segitiganya ? '); readln(t);
luas:=al*t/2;
gotoxy(10,3); Write('Alas = ',al:5:1,' cm');
Writeln(' Tinggi = ',t:5:1,' cm');
Writeln(' Maka luas segitiganya = ',luas:4:1,'
cm2');
end;
IF pilih=3 then
begin
write('Brp panjang segi empatnya ? '); readln(al);
write('Brp lebar segi empatnya ? '); readln(t);
luas:=al*t;
gotoxy(10,3);Write('Panjang segi-4 = ',al:5:1,' cm');
Writeln(' Lebar segi-4 = ',t:5:1,' cm');
Writeln(' Maka luas segitiganya = ',luas:4:1,'
cm2');
end;
readln;
End.
A80
program IF_then_else;
var nul:real; {tidak boleh memakai var nil}
begin
writeln('Brp Anda memperoleh nilai ? '); readln(nul);
IF nul >=6 THEN
40

writeln('Anda dinyatakan LULUS ')


{jangan diisi titik koma ;}
ELSE
writeln('Belajar lagi, Anda TIDAK LULUS');
writeln('Tekan enter untuk ganti masalah '); readln;
writeln('Brp umur Anda sekarang ? '); readln(nul);
IF nul >=50 THEN
begin
writeln('Anda termasuk LANSIA, jaga kesehatan ! ');
writeln('Apakah selama ini ada keluhan tentang diri Anda ?');
end
{jangan diisi titik koma }
ELSE
writeln('Anda masih REMAJA, tenaga masih kuat');
readln;
end.
A81
program IF_then_else_utk_mencari_akar_persamaan_kuadrat;
uses crt;
var A,B,C,D,Z1,Z2,X1,X2:real; {tidak boleh memakai var nil}
lagi:char;
label ulang;
begin
ulang:
clrscr;
writeln('Brp nilai A B C ? '); readln(a,b,c);
IF a=0 THEN
begin
writeln('Coba ulang, sebab nilai A tidak boleh nol,
(enter)');readln;
goto ulang;
end
{jangan diisi titik koma ;}
ELSE
D:=b*b-4*a*c;
If D=0 then
writeln('Mempunyai akar kembar, yaitu: X1 = X2 = ',-b/2*a:5:2)
Else
{jangan diisi titik koma ; }
if D>0 then
begin
writeln('Punya 2 akar berlainan, yaitu: X1 = ',(b+sqrt(D))/2*a:5:2);
writeln('dan X2 = ',(-b-sqrt(D))/2*a:5:2);
end
{janagan diisi titik koma ;}
else
begin
write('Punya 2 akar imaginer, yaitu: X1 = ',-b/2*a:5:2,' + ');
writeln(sqrt(-D)/2*a:5:2,' i');
write('
X2 = ',-b/2*a:5:2,' - ');
writeln(sqrt(-D)/2*a:5:2,' i');
end;
writeln('Tekan enter untuk kembai ke program '); readln;
41

End.

A82
var nilai:char;
begin
writeln('Nilai huruf yang didapat ?'); readln(nilai);
nilai:=upcase(nilai);
case nilai of
'A':writeln('Sangat Baik');
'B':writeln('Baik');
'C':writeln('Cukup'); var nilai:integer;
'D':writeln('Kurang');
'E':writeln('Gagal');
end;
readln;
end.
A83
var nilai:integer;
begin
writeln('Nilai/angka 0 - 10 yang didapat ?'); readln(nilai);
case nilai of
10:writeln('Sangat Baik');
9,8:writeln('Baik');
7..5:writeln('Cukup');
4:writeln('Kurang');
3..0:writeln('Gagal');
end;
readln;
end.
A84
program case_Of;
uses crt;
var nilai1, nilai2, hasil:real;
operasi:char;
begin
clrscr;
hasil:=0;
lowvideo;
gotoxy(10,5); writeln('[
gotoxy(29,5); writeln('[ ]');
gotoxy(33,5); writeln('[
gotoxy(52,5); writeln('=');
gotoxy(55,5); writeln('[
highvideo;
gotoxy(11,5); readln(nilai1);

]');
]');
]');

42

gotoxy(30,5); readln(operasi);
gotoxy(34,5); readln(nilai2);
case operasi of
'+':hasil:=nilai1 + nilai2;
'-':hasil:=nilai1 - nilai2;
'*':hasil:=nilai1 * nilai2;
'/':hasil:=nilai1 / nilai2;
end;
gotoxy(56,5); Writeln(hasil:15:2);
readln;
end.
A85
program case_Of;
uses crt;
var beli, pot:integer;
begin
clrscr;
lowvideo;
gotoxy(10,5); write('Brp total pembelian ?'); readln(beli);
case beli of
0..1000:pot:=100;
1001..10000:pot:=500;
10001..30000:pot:=2000;
end;
writeln;
gotoxy(10,7); Writeln('Jumlah Pembelian = Rp ',beli:6);
gotoxy(10,8); Writeln('Potongan
= Rp ',pot:6);
gotoxy(10,9); Writeln('------------------------------- -');
gotoxy(10,10);Writeln('Pembayaran
= Rp ',beli-pot:6);
readln;
end.
A86
program Operasi_string;
uses crt;
const bhs='Bahasa'; nama='Turbo pascal';
begin
writeln('Pelajaran '+nama+' adalah ',bhs,' programan');
readln;
end.
A87
program Syarat_v_Kondisi_berupa_string;
uses crt;
var bhs, nama:string;
begin
writeln('Pemrograman apa yg dipelajari ? ');readln(nama);
writeln('Bahasa apa yg dipelajari ? ');readln(bhs);
if nama=bhs then
writeln('Benar....!!!')
43

else
writeln('Salah......???');
readln;
end.
A88
program Syarat_v_dgn_membandingkan_string;
uses crt;
var namaAnda, namaTeman:string;
begin
writeln('Ketik nama Anda ! ');readln(namaAnda);
writeln('Ketik nama Teman Anda ! ');readln(namaTeman);
if namaAnda=namaTeman then
writeln('Namanya sama....!!!');
if namaAnda<namaTeman then
writeln('Nama Anda urutannya lebih kecil')
else
writeln('Nama Anda urutannya lebih besar......???');
readln;
end.
A89
program Syarat_v_dgn_membandingkan_string;
uses crt;
var namaAnda, namaTeman:string;
begin
writeln('Ketik nama Anda ! ');readln(namaAnda);
writeln('Ketik nama Teman Anda ! ');readln(namaTeman);
if namaAnda=namaTeman then
writeln('Namanya sama....!!!');
if namaAnda<namaTeman then
writeln('Nama Anda urutannya lebih kecil')
else
writeln('Nama Anda urutannya lebih besar......???');
readln;
end.
A90
program Penyisipan_string_dgn_Insert;
uses crt;
const n=1;
var namaAnda, tampung,namaTeman:string;
begin
writeln('Ketik nama Anda ! ');readln(namaAnda);
writeln('Ketik nama Teman Anda ! ');readln(namaTeman);
Insert('XYZ',namaTeman,4); {artinya: namaTeman disisipi
mulai no 4}
Insert('Drs.',namaAnda,n);
{dgn huruf XYZ }
tampung:=namaAnda; writeln(tampung);
44

tampung:=namaTeman; writeln(tampung); {tampung type nya


hrs string}
readln;
{tdk boleh Char walaupun
1 huruf}
end.
A91
program merubah_status_bilangan_menjadi_string_dgn_Str;
var nilai1,nilai2:integer;
bil1, bil2:real;
x1,x2:string;
Begin
nilai1:=1234;
{integer}
nilai2:=567;
write('Nilai1 + Nilai2 = ');
writeln(nilai1+nilai2);
str(nilai1:4,x1);
str(nilai2:4,x2);
write('Operasi string =');
writeln(x1+x2);
bil1:=1234.5;
{real}
bil2:=567.56;
write('bil1 + bil2 = ');
writeln(bil1+bil2:9:2);
str(bil1:9:2,x1);
str(bil2:9:3,x2);
write('Operasi string =');
writeln(x1+x2);
readln;
end.
A92
program merubah_status_String_menjadi_bilangan_integer_real;
uses crt;
var posisiSalah:integer;
NilaiReal:real;
NilaiString:string[6];
Begin
clrscr;
{--Tidak ada kesalahan pd nilai String --------------------}
nilaiString:='123.476';
{string}
val(nilaiString,NilaiReal,PosisiSalah);
writeln('-----------------------------------------');
writeln('nilaiString = ',nilaiString);
writeln('nilaiString + nilaiString = ',nilaiString+nilaiString);
writeln('nilaiReal+ 100:9:2 = ',nilaiReal+100:9:2);
writeln('PosisiSalah = ',posisiSalah);
{--Lihat ada kesalahan----huruf A --------------------------}
nilaiString:='1A23.476';
{string ada kesalahan pd posisi 2}
val(nilaiString,NilaiReal,PosisiSalah);
45

writeln('------------------------------------------');
writeln('nilaiString = ',nilaiString);
writeln('nilaiString + nilaiString = ',nilaiString+nilaiString);
writeln('nilaiReal+ 100:9:2 = ',nilaiReal+100:9:2);
write('PosisiSalah = ',posisiSalah,' dari depan ada huruf A');
readln;
end.
A93
program mengcopy_String;
uses crt;
var
nilaiString:string[16];
Begin
clrscr;
nilaiString:='ABC4EFGHIJKL';
{string}
writeln('-----------------------------------------');
writeln('nilaiString = ',nilaiString);
writeln('Copy(nilaiString,4,3)= ',Copy(nilaiString,4,3));
{mulai no.4 di copy sebanyak 3 huruf}
writeln('Copy(nilaiString,5,6)= ',Copy(nilaiString,5,6));
{mulai no.5 dicopy sebanyak 6 huruf}
readln;
end.
A94
program mengcopy_String;
uses crt;
var
nilaiString:string[16];
huruf:string;
i,j:integer;
Begin
clrscr;
nilaiString:='ABCDEFGHIJKL';
{string}
For i:=1 to 12 do
begin
huruf:=Copy(nilaiString,i,1); {type dp huruf harus string,}
write(huruf,huruf);
For j:=35 downto 16+i do{79 downto 33+i do
{tidak boleh
CHAR }
begin
gotoxy(j*2,10);
writeln(huruf)
end;
end;
readln;
End.
A95
program mengcopy_String;
uses crt;
var
kalimat:string[13];
46

huruf:string;
i,j:integer;
Begin
clrscr;
kalimat:='TURBO Pascal';
{string}
For i:=1 to 13 do
begin
huruf:=Copy(kalimat,i,1); {type dp huruf harus string,}
For j:=30 downto 27 do
{tidak boleh CHAR }
begin
gotoxy(j,i);
writeln(huruf)
end;
end;
readln;
End.
A96
program ConCat_fungsinya_sama_dgn_tambah_yaitu_merangkai;
uses crt;
const kalimat='Pascal';
kata='dan Delphi';
aksara='adalah sekeluarga';
Begin
clrscr;
gotoxy(30,5);
writeln(concat('Bahasa ',kalimat,' ',kata,' ',aksara));
readln;
End.
A97
program ConCat_fungsinya_sama_dgn_tambah_yaitu_merangkai;
uses crt;
const kalimat='Bahasa Pascal dan Delphi adalah sekeluarga';
kata='dan Delphi';
aksara='adalah sekeluarga';
huruf='dna';
Begin
clrscr;
gotoxy(10,4);writeln('
1
2
3
4
5');
gotoxy(10,5);writeln(kalimat);
gotoxy(10,6);writeln('12345678901234567890123456789012345678901234
567890');
writeln;
writeln('"',kata,'" pada posisi ke: ',pos(kata,kalimat));
writeln('"',aksara,'" pada posisi ke: ',pos(aksara,kalimat));
writeln('"',huruf,'" pada posisi ke: ',pos(huruf,kalimat));
writeln('"dan" pada posisi ke: ',pos('dan',kalimat));
writeln('"Del" pada posisi ke: ',pos('Del',kalimat));
writeln('"del" pada posisi ke: ',pos('del',kalimat));
47

readln;
End.
A98
program kaki;
var feet,meter:real;
lagi:char;
begin
lagi:='Y';
while (lagi='Y') or (lagi='y') do
begin
write('Brp Feet ? '); readln(feet);
meter :=feet*3.281;
writeln(feet:7:2,' feet = ',meter:7:2,' meter');
lagi:=' ';
while pos(lagi,'YyNn')=0 do
begin
write('menghitung lagi ? '); readln(lagi);
writeln('Untuk mengecek pos',pos(lagi,'YyNn'));
end;
end;
readln;
end.
A99 program Panjang_kalimat_Length;
var NamaAnda:string;
lagi:char;
p:integer;
begin
lagi:='Y';
while (lagi='Y') or (lagi='y') do
begin
write('Ketik nama Anda ! '); readln(namaAnda);
p :=Length(namaAnda);
writeln('Panjang nama Anda adalah : ',p:7,' karakter');
lagi:=' ';
while pos(lagi,'YyNn')=0 do
begin
write('Ada lagi ? '); readln(lagi);
end;
end;
readln;
end.
A100
program Membuat_tulisan_simetris;
uses crt;
var NamaAnda:string[50];
huruf:string; {tidak mau type char}
i,j,panjang,tengah:integer;
begin
48

write('Ketik nama Anda ! '); readln(namaAnda);


panjang :=Length(namaAnda);
tengah:=40-panjang div 2;
clrscr;
For i:=1 to 24 do begin gotoxy(1,i);write('||');end;
For i:=1 to 24 do begin gotoxy(79,i);write('||');end;
For i:=1 to 79 do begin gotoxy(i,1);write('=');end;
For i:=1 to 79 do begin gotoxy(i,24);write('=');end;
i:=1;
For j:=tengah to Tengah+panjang do
begin
huruf:= copy(NamaAnda,i,1);
gotoxy(j,10);
write(huruf,' ');
i:=i+1;
end;
readln;
end.
A101
program Membuat_BEBERAP_tulisan_simetris;
uses crt;
var NamaAnda:string[50];
lagi,huruf:string; {tidak mau type char}
i,j,t,panjang,tengah:integer;
begin
clrscr;
For i:=1 to 22 do begin gotoxy(1,i);write('||');end;
For i:=1 to 22 do begin gotoxy(79,i);write('||');end;
For i:=1 to 79 do begin gotoxy(i,1);write('=');end;
For i:=1 to 79 do begin gotoxy(i,22);write('=');end;
i:=1;
t:=0;
lagi:='Y';
while (lagi='Y')or (lagi='y') do
begin
gotoxy(12,24);Write('Ketik nama Anda ! '); readln(namaAnda);
gotoxy(12,24); Delline;
panjang :=Length(namaAnda);
tengah:=40-panjang div 2;
For j:=tengah to tengah + panjang do
begin
huruf:= copy(NamaAnda,i,1);
gotoxy(J,10+t);
write(huruf);
i:=i+1;
end;
t:=t+1;
Gotoxy(12,24);write('Ada lagi ? '); readln(lagi);
Gotoxy(12,24);Delline;
i:=1;
end;
readln;
49

end.
A102
program mencari_faktorial;
var n,i:integer;
faktorial:longint;
lagi:char;
begin
lagi:='Y';
while (lagi='Y') or (lagi='y') do
begin
writeln('Brp faktorial yg dicari (max=12) ?'); readln(n);
faktorial:=1;
for i:=1 to n do
faktorial:=faktorial*i;
writeln;
writeln(n,' faktorial = ',faktorial);
write('Ada lagi (Y/N)? '); readln(lagi);
end;
write('Tekan enter');
readln;
end.
A103
program mencari_faktorial;
var n,i:integer;
faktorial:longint;
lagi:char;
begin
lagi:='Y';
while (lagi='Y') or (lagi='y') do
begin
writeln('Brp faktorial yg dicari (max=12) ?'); readln(n);
faktorial:=1;
for i:=1 to n do
begin
faktorial:=faktorial*i;
writeln;
writeln(i:2,' faktorial = ',faktorial);
end;
write('Ada lagi (Y/N)? '); readln(lagi);
end;
write('Tekan enter');
readln;
end.
A104
program ConCat_fungsinya_sama_dgn_tambah_yaitu_merangkai;
uses crt;
const kalimat='Pascal';
50

kata='dan Delphi';
aksara='adalah sekeluarga';
Begin
clrscr;
gotoxy(30,5);
writeln(concat('Bahasa ',kalimat,' ',kata,' ',aksara));
readln;
End.
A105
program mencari_faktorial;
var n,i:integer;
faktorial:longint;
lagi:char;
begin
lagi:='Y';
while (lagi='Y') or (lagi='y') do
begin
writeln('Brp faktorial yg dicari (max=12) ?'); readln(n);
faktorial:=1;
for i:=1 to n do
begin
faktorial:=faktorial*i;
writeln;
writeln(i:2,' faktorial = ',faktorial);
end;
write('Ada lagi (Y/N)? '); readln(lagi);
end;
write('Tekan enter');
readln;
end.
A106
program menunggu_penekanan_sembarang_tombol_enter_dll;
uses crt; {ini hrs dipakai}
var n:string[30];
begin
writeln('Siapa nama Anda ?'); readln(n);
writeln('Betul nama Anda ',n);
write('Tekan enter');
readln;
writeln('Tekan sembarang Tombol No:1');
readkey; {hrs melibatkan USES CRT}
writeln('Tekan sembarang Tombol No:2');
while not keypressed DO; {hrs melibatkan USES CRT
dan isi titik koma, agar tidak
pernyataan berikutnya dikerjakan
terus-menerus}
writeln('Tekan sembarang Tombol No:3'); {pernyataan ini tidak}
repeat until keypressed;
{terbaca karena ada }
end.
{While di atasnya}

51

A107
program mengetahui_apa_yg_ditekan;
uses crt;
var tekan,pres:char;
begin
writeln('Tekan tombol apa saja (dua kali),mis:W enter G ');
readln(pres);
tekan:=readkey;
writeln('Hasil dari "pres" ',pres);
writeln('Hasil dari "tekan" ',tekan);
readln;
end.
A108
program mengetahui_tombol_extended_code_yg_ditekan;
uses crt;
var tekan,pres:char;
begin
writeln('Tekan tombol apa saja (satu kali), mis: F1 ');
tekan:=readkey;
if tekan=#0 then
begin
tekan:=readkey;
if tekan=#59 then writeln('Yg ditekan F1 ')
else writeln('tombol Extended Code yg lain ditekan');
end
{ingat ini tidak boleh diisi titik koma}
else writeln('Yg ditekan "bukan" tombol extended code, yaitu:
',tekan);
readln;
end.
A109
program Jam_jaman;
uses crt;
var tekan : char;
terus : boolean;
jam, menit : byte;
detik : real;
Begin
clrscr;
gotoxy(15,10); write('F1 utk merubah jam');
gotoxy(15,11); write('F2 utk merubah menit');
gotoxy(15,12); write('F3 utk merubah detik');
gotoxy(15,13); write('F4 utk berhenti');
gotoxy(67,1);write('================');
gotoxy(67,3);write('****************');
textcolor(red+blink);
gotoxy(67,4);write('$$$$$$$$$$$$$$$$');
textcolor(white);
jam:=0; menit:= 0;
detik:=0; terus:= true;
52

while terus do {selama terus=true}


begin
detik:=detik+0.01; {mengapa 0.01 ?. Hubungannya dgn Delay(10)}
if detik > 59.99 then
begin
detik:=0;
menit:=menit +1;
end;
if menit > 59 then
begin
menit:=0;
jam:=jam +1
end;
if jam >23 then jam:=0;
gotoxy(67,2); write(jam:2,' :',menit:2,' : ',detik:5:2);
delay(10); {memberhentikan proses selama 1/1000 X10 detik}
{ =1/100 detik = 0.01 detik}
if keypressed then {keypressed = true, bila menekan tombol}
begin
tekan:=readkey; {tombol apa saja ditekan akan ditangkap}
if (tekan=#0) then
begin
tekan :=readkey; {menangkap nil II}
case tekan of
#59:begin
gotoxy(15,23);
write('Masukkan jam yg baru ? ');
readln(Jam);
gotoxy(15,23); delline;
end;
#60:begin
gotoxy(15,23);
write('Masukkan menit yg baru ? ');
readln(menit);
gotoxy(15,23); delline;
end;
#61:begin
gotoxy(15,23);
write('Masukkan detik yg baru ? ');
readln(detik);
gotoxy(15,23); delline;
end;
#62:begin
clrscr;
terus:=false;
end;
end;
end;
end;
end;
end.
53

A110
program jam_sederhana;
uses crt;
var jam,menit:integer;
terus:boolean;
tekan:char;
begin
terus:=true;
jam:=0; menit:=0;
while terus do
Begin
menit:=menit +1;
if menit>59 then
begin
menit:=0;
jam:=jam+1
end;
if jam >23 then
jam:=0;
gotoxy(60,5); write(jam:3,' ',menit:3);
delay(60000);
if keypressed then
begin
tekan:=readkey;
if tekan=#0 then terus :=false;
end;
End;
end.
A111
program menggerakkan_objek;
uses crt;
var x,y:word;{0..65535}
tekan:char;
begin
clrscr;
x:=40; y:=10;
gotoxy(x,y);write('*');
repeat
tekan:=readkey;
if tekan =#0 then
Begin
tekan:=readkey;
gotoxy(x,y); write(' ');
if tekan=#71 then
{tombol Home}
begin
if (x>1) and (y>1) then begin
x:=x-1; y:=y-1; end;
end;
if tekan=#72 then
{tombol panah ke atas pd keypad}
54

begin
if (y>1) then
y:=y-1;
end;
if tekan=#73 then
{tombol PgUp}
begin
if (x<79) and (y>1) then begin
x:=x+1; y:=y-1; end;
end;
if tekan=#75 then
{tombol Panah ke Kiri}
begin
if (x>1) then x:=x-1;
end;
if tekan=#77 then
{tombol Panah ke Kanan}
begin
if (x<79) then x:=x+1;
end;
if tekan=#79 then
{tombol End}
begin
if (x>1) and (y<23) then begin
x:=x-1; y:=y+1; end;
end;
if tekan=#80 then
{tombol panah ke Bawah}
begin
if (y<23) then y:=y+1;
end;
if tekan=#81 then
{tombol PgDn}
begin
if (x<79) and (y<23) then begin
x:=x+1; y:=y+1; end;
end;
gotoxy(x,y); write('*');
end;
until tekan=#27;
{tombol Esc untuk berhenti}
end.
A112
program agar_penampilannya_lebih_cepat;
uses crt;
var layar:text;
i:integer;
begin
clrscr;
assigncrt(layar);
rewrite(layar);
writeln(layar,'Akan ditampilkan 15 kalimat dgn cepat');
writeln(layar);
for i:=1 to 15 do
writeln(layar,'Saya Turbo Pascal');
close(layar);
readln;
55

end.
A113
program penampilan_berwarna_dan_cepat;
uses crt;
var layar:text;
i:integer;
begin
clrscr;
assigncrt(layar);
rewrite(layar);
textcolor(lightGray+128);writeln(layar,'Akan ditampilkan 15
kalimat dgn cepat');
writeln(layar);
for i:=1 to 15 do
begin textcolor(lightred);writeln(layar,'Saya Turbo Pascal');end;
close(layar);
readln;
end.
A114
program penampilan_berwarna_agak_muda_dan_cepat;
uses crt;
var layar:text;
i:integer;
begin
clrscr;
assigncrt(layar);
rewrite(layar);
textcolor(lightGray+128);writeln(layar,'Akan ditampilkan 15
kalimat dgn cepat');
writeln(layar);
for i:=1 to 7 do
begin textcolor(red);writeln(layar,'Turbo Pascal warna
merah');end;
for i:=1 to 7 do
begin textcolor(4+8);writeln(layar,'Turbo Pascal, merah muda');
writeln(layar,'karena ada + 8');end;
{warna 0 s/d 7 boleh
+8)
close(layar);
readln;
end.
A115 program warna_dan_intensitas_tinggi;
uses crt;
begin
textcolor(0);write('0=black');textcolor(14);writeln('0=hitam');
textcolor(1);writeln('1=Blue');
{textcolor hrs melibatkan uses
crt}
textcolor(2);writeln('2=green');
textcolor(3);writeln('3=cyan');
56

textcolor(4);write('4=red');
textcolor(4);highvideo;writeln('intensitas tinggi');
textcolor(5);normvideo;writeln('5=magenta, intensitas normal');
textcolor(6);writeln('6=brown');
textcolor(7);writeln('7=lightgray');
writeln('Dari 8 - 15 dapat dijadikan warna agak gelap');
writeln('dgn mengisi Lowvideo');
textcolor(yellow);writeln('Kuning');
Lowvideo;writeln('menjadi COKLAT');
readln;
end.
A116
program warna_dan_intensitas_tinggi;
uses crt;
begin
textcolor(0);write('0=black');textcolor(14);writeln('0=hitam');
textcolor(1);writeln('1=Blue');
{textcolor hrs melibatkan uses
crt}
textcolor(2);writeln('2=green');
textcolor(3);writeln('3=cyan');
textcolor(4);write('4=red');
textcolor(4);highvideo;writeln('intensitas tinggi');
textcolor(5);normvideo;writeln('5=magenta, intensitas normal');
textcolor(6);writeln('6=brown');
textcolor(7);writeln('7=lightgray');
writeln('Dari 8 - 15 dapat dijadikan warna agak gelap');
writeln('dgn mengisi Lowvideo');
textcolor(yellow);writeln('Kuning');
Lowvideo;writeln('menjadi COKLAT');
readln;
end.
A117
program warna_background;
uses crt;
begin
clrscr;
textcolor(yellow);textbackground(red);
writeln('tulisan KUNING, latar Merah');
textcolor(7);textbackground(0);
writeln('tulis putih, dasar hitam (normal)');
{MENGATUR LATAR DEPAN DAN LATAR BELAKANG}
TextAttr:=yellow + red *16; {tulisan kuning, dasar merah (selalu *
16)}
writeln('Tulisan Kuning, dasar merah');
TextAttr:=blue+green*16 +blink;{boleh juga: textAttr:= 1+ 2*16 +
128;}
writeln('Tulisan biru, dasar hijau dan berkedip');
readln;
end.
57

A118
program mode_layar_C40_C80;
uses crt;
begin
clrscr;
textmode(c40);
writeln('Mode layar menjadi 40 kolom');
repeat until keypressed;
textmode(c80);
writeln('Layar kembali 80 kolom');
readln;
textmode(C40);
writeln('Mode layar menjadi C40 kolom');
readln; {disini tidak boleh Repeat until keypressed}
textmode(C80);
writeln('Layar kembali C80 kolom');
readln;
end.
A119
program windows(x1_y1_x2_y2);
uses crt;
var warna:byte;
begin
warna:=1;
clrscr;
window(40,5,70,25);
repeat
textcolor(warna);
writeln('Drs. I Wayan Gede');
if warna>=255 then warna:=1
else warna:=warna+1;
until keypressed;
readln;
end.
A120
uses crt;
const nama='Drs. I Wayan Gede';
var i:byte;
begin
window(15,5,65,20);
textbackground(2);
i:=1;
repeat
write(copy(nama,i,1));
58

if i=14 then I:=1 else i:=i+1;


until (wherex=50) and (wherey=16);
readln;
end.
A121
uses crt;
var c,f:real;
tekan:char;
begin
textbackground(2);
gotoxy(25,4); write('
TABEL
');
gotoxy(25,5); write('CELCIUS
FAHRENHEIT');
gotoxy(15,21); write('tekan sembarang untuk baris selanjutnya');
gotoxy(15,22); write('tekan ESC untuk berheti
');
{mengapa write di atas hrs sama panjangnya? Untuk membuat agar
latar belakangnya sama panjang}
window(20,6,50,19);
textbackground(yellow);
clrscr;
{utk mengaktifkan latar belakang dalam window saja}
c:=0;
while true do {selama proses benar/true}
begin
c:=c+0.1;
f:=1.8*c+32;
writeln(c:10:2,F:15:5);
tekan :=readkey;
{utk menampung tekan sembarang}
if tekan= #27 then halt; {exit; = Halt; = keluar}
end;
readln;
end.
A122
uses crt;
var c,f:real;
tekan:char;
begin
textbackground(2);
gotoxy(25,4); write('
TABEL
');
gotoxy(25,5); write('CELCIUS
FAHRENHEIT');
gotoxy(16,21); write('tekan sembarang untuk baris selanjutnya');
gotoxy(16,22); write('tekan ESC untuk berheti
');
{mengapa write di atas hrs sama panjangnya? Untuk membuat agar
latar belakangnya sama panjang}
window(20,6,50,19);
textbackground(blue);
clrscr;
{utk mengaktifkan latar belakang dalam window saja}
c:=0;
while true do {selama proses benar/true}
begin
c:=c+0.1;
59

f:=1.8*c+32;
writeln(c:10:2,F:15:5);
tekan :=readkey;
{utk menampung tekan sembarang}
if tekan= #27 then halt; {exit; = Halt; = keluar}
end;
readln;
end.
A123
uses crt;
procedure garis;
begin
gotoxy(0,4);writeln('---------------------');
end;
procedure tanya_hitung;
var x,y :integer;
begin
writeln('Brp X ? ');readln(x);
y:=x*x;
writeln('X kuadrat = ',y);
end;
procedure nilai_akhir(x,y,z:byte;var hs:real);
begin
write('Brp x,y,z ? ');readln(x,y,z);
hs:=(x+y+z)/3;
writeln('Hasil = ',hs:3:1);
end;
var a,b,c:integer; hasil:real;
BEGIN
clrscr;
garis;
tanya_hitung;
garis;
nilai_akhir(a,b,c,hasil);
garis;
readln;
End.
A124
uses crt;
procedure cetak(nama:string;bilangan:integer);
{var nama:string[23]; bilangan:integer;}
begin
write('Brp bilangan nya ? '); readln(bilangan);
write('Siapa namanya ? '); readln(nama);
writeln(nama);
writeln(bilangan:3);
60

end;
var x:string; y:byte;
begin
clrscr;
cetak(x,y);
readln;
end.
A125
uses crt;
procedure tanya_hitung;
var x,y,z:real;
begin
writeln('Brp x dan y ? '); read(x,y);
z:=sqrt((2*x+3*y)/5);
writeln('Nilai akhir = ',z:5:1);
end;
begin
tanya_hitung;
{writeln('Nilai Akhir = ',z:5:2); tidak boleh memakai variabel
lokal Z}
readkey;
end.
A126
{Pengiriman nilai dari prog utama ke procedure}
uses crt;
procedure Hitung(a,b:integer);
var c:integer;
{di deklarasikan tersendiri }
begin
{karena bukan 'parameter'}
c:=a+b;
writeln('Nilai Penjumlahan = ',c:5);
end;
var x,y:integer;
begin
writeln('Nilai X = '); readln(x);
writeln('Nilai Y = '); readln(y);
hitung(x,y);
readkey;
end.
A127
{Pengiriman nilai dari prog utama ke procedure}
uses crt;
procedure Hitung(a,b,c:integer);
begin
c:=a+b;
writeln('Nilai A = ',a,' Nilai B = ',b,' Nilai C (jumlah) =
',c:5);
end;
var x,y,z:integer;
61

begin
write('Nilai X = '); readln(x);
write('Nilai Y = '); readln(y);
write('Nilai Z = '); readln(z);
clrscr;
writeln('Nilai X = ',x,' Nilai Y = ',y,' Nilai Z = ',z:5);
writeln('---------------------------------------------------');
hitung(x,y,z);
readkey;
end.
A128
{Pengiriman nilai dari prog utama ke procedure}
uses crt;
procedure Hitung(a,b,c:integer);
begin
c:=a+b;
writeln('Nilai A = ',a,' Nilai B = ',b,' Nilai C (jumlah) =
',c:5);
end;
var x,y,z:integer;
begin
write('Nilai X = '); readln(x);
write('Nilai Y = '); readln(y);
write('Nilai Z = '); readln(z);
clrscr;
writeln('Nilai X = ',x,' Nilai Y = ',y,' Nilai Z = ',z:5);
writeln('---------------------------------------------------');
hitung(x,y,z);
readkey;
end.
A129
{Pengiriman parameter secara ACUAN ke procedure}
uses crt;
procedure Hitung(var a,b,c:integer);
{ingat hrs isi VAR =acuan}
begin
c:=a+b; {biarpun hanya 1 baris hrs diisi Begin--End;}
end;
var x,y,z:integer;
begin
write('Nilai X = '); readln(x);
write('Nilai Y = '); readln(y);
clrscr;
hitung(x,y,z);
{ini hanya menghitung saja, tdk nyetak}
gotoxy(2,3);writeln('Nilai X = ',x,' Nilai Y = ',y,' Nilai Z =
',z:5);
readkey;
end.
62

A130
uses crt;
procedure Faktorial(var fak,has:integer);
{ingat hrs isi VAR
=acuan}
var i:integer;
begin
has:=1;
For i:=2 to fak do has:=has*i;
end;
var x,y:integer;
begin
write('Brp faktorial = '); readln(x);
Faktorial(x,y);
{ini hanya menghitung saja, tdk nyetak}
gotoxy(2,3);writeln(x,' faktorial = ',y:5);
readkey;
end.
A131
{Mencari combinasi C =N!/[(N-R)!R!]}
uses crt;
procedure Faktorial(var fak,has:integer);
{ingat hrs isi VAR
=acuan}
var i:integer;
begin
has:=1;
For i:=2 to fak do has:=has*i;
end;
var N,R,NR,N1,R1,NR1:integer; C:real;
begin
clrscr;
write('Brp nilai N = '); readln(N); {ingat R<N<6, integer}
write('Brp nilai R = '); readln(R);
NR:=N-R;
Faktorial(N,N1);
Faktorial(NR,NR1);
faktorial(R,R1);
C:=N1/(NR1*R1);
writeln('C(',N,',',R,') = ',C:6:2);
readkey;
end.
A132
{Pengiriman sebagian dgn ACUAN}
uses crt;
procedure Hitung(a,b:integer; Var c:integer);
begin
c:=a+b;
end;
var x,y,z:integer;
begin
63

writeln('Brp X, spasi, Y, enter '); readln(x,y);


Hitung(X,Y,Z);
writeln(X,' + ',Y,' adalah : ',Z:3);
readln;
end.
A133
program Harus_di_type_kan;
type huruf=string[100]; {hrs di type-kan, karena panjang sekali
100}
procedure hitungpanjang(nama:huruf;var panjang:integer);
begin
panjang:=length(nama);
end;
var n:integer;
namaAnda:string[30];
{boleh tidak sama [30] dgn [100]}
Begin
Write('Nama Anda ? '); readln(namaAnda);
hitungpanjang(namaAnda,n);
writeln('Panjang Nama Anda = ',n,' karakter');
readln;
end.
A134
{$V-} {Agar tdk salah, biarpun panjang string tdk sama}
type huruf=string[100]; {hrs di type-kan, karena panjang sekali
100}
procedure hitungpanjang(var nama:huruf;var panjang:integer);
begin
panjang:=length(nama);
end;
var n:integer;
namaAnda:string[30];
{hrs sama 100 & memakai Type
hr=string[100];
var namaAnda:hr; karena memakai
Var(acuan)
tapi boleh tidak sama [30] dgn [100]}
{karean sudah ada {$V-}
Begin
Write('Nama Anda ? '); readln(namaAnda);
hitungpanjang(namaAnda,n);
writeln('Panjang Nama Anda = ',n,' karakter');
readln;
end.
A135
{prosedur memanggil prosedur yg lain}
uses crt;
procedure pro1(x1:integer);
begin
writeln('Niali X*X = ',x1*x1,' Hasil dari procedure Pro1');
64

end;
procedure pro2(x2:integer);
begin
writeln('Niali X = ',x2,' Hasil dr
pro1(x2);
end;
var x:integer;
begin
clrscr;
X:=5;
Pro2(x);
readln;
end.

procedure Pro2');

A136
{procedure bersarang}
uses crt;
procedure satu;
procedure dua;
begin
writeln('Procedure dua ada di procedure satu');
end;
procedure tiga;
begin
writeln('Procedure tiga ada di procedure satu');
end;
begin
writeln('Ini procedure satu ');
writeln;
dua;
tiga;
end;
BEGIN
clrscr;
highvideo;
writeln('Ini program/modul Utama ');
writeln;
satu; {Dua dan tiga tdk bisa dipanggil dari prog Utama
karena tdk diketahui oleh prog Utama}
readln;
END.
A137
{prosedur memanggil dirinya sendiri(rekursif}
var i : integer;
Hr:char;
procedure rekursi;
begin
writeln(Hr,' Hallo saya Pascal ',i);
i:=i+1; Hr:=chr(ord(Hr)-1);
65

if i<=10 then rekursi;


end;
BEGIN
i:=1; Hr:='J';
rekursi;
readln;
END.
A138
{prosedur memakai repeat pengganti ekursif}
var i : integer;
Hr:char;
procedure halo;
begin
repeat
writeln(Hr,' $#Hallo saya Pascal#$ ',i);
i:=i+1; Hr:=chr(ord(Hr)-1);
until i=11
end;
BEGIN
i:=1; Hr:='J';
halo;
readln;
END.
A139
procedure Pro1(var t:integer);forward;
procedure Pro2(var u:integer);forward;
procedure pro2; {tdk perlu mendeklarasikan :procedure pro2(var
u:integer)}
Begin
{karena sudah di Forward-kan di atas}
writeln('Prosedur Pro 2 *', u);
end;
procedure pro1;{tdk perlu mendeklarasikan :procedure pro2(var
t:integer)}
begin
{karena sudah di Forward-kan di atas}
writeln('Prosedur PRO 1 *',t);
end;
{**program diatas dpt ditulis singkst: **
}
var x:integer;
{procedure pro2(var u:integer);
}
begin
{begin writeln('Prosedur Pro2 *',u); end;
}
x:=10;
{procedure pro1(var t:integer);
}
Pro1(x);
{begin writeln('Prosedur Pro1 *',t); end;
}
x:=20;
{var x:integer;
}
Pro2(x);
{begin
}
readln;
{x:=10; Pro1(x); x:=20; Pro2(x); readln; end.}
end.
A140
procedure faktor(fak:integer; var hasil:integer); forward;
procedure faktor;
66

var i:integer;
begin
hasil:=1;
if fak<0 then exit; {jika exit diganti dgn "Halt" maka prog
berhernti}
for i:=2 to fak do
{Jika Fak=1 atau 0, maka "for" tidak do}
hasil:=hasil*i;
writeln(fak,' faktorial = ',hasil);
end;
var f,hs:integer;
BEGIN
Write('Brp faktorial ?');readln(f);
faktor(f,hs);
{Bila terjadi "Exit", akan kembali ke baris dibawah ini}
writeln('Masukkan bilangan cacah 0,1,2,3,..');
readln;
END.
A141
{prosedur Move(sumber,tampung,banyaknya yg di move}
var sumber, tampung:string[20];
sebanyak: byte;
Begin
sumber:='ABCDEFGtidakdiambil';
tampung:='1234567sisaditindih';
sebanyak:=8;
{yg diambil 8-1, selalu dikurangi 1}
writeln('"tampung" sebelum di Move = ',tampung:20);
move(sumber,tampung,sebanyak);
writeln('Setelah di Move menjadi:');
writeln('Sumber tetap= ',sumber:19,' ','Sebanyak= ',sebanyak,
' ','Tampung = ',tampung:20);
readln;
end.
A142
{Prosedur FillChar}
uses crt;
var garis:string[20];
mistar:string[80]; {paling kecil [60] }
Begin
clrscr;
garis:='--------------';
writeln(garis);
FillChar(garis,sizeOf(mistar),'O'); {Ini = garis 80 x 'O')}
garis[0]:=#24; {garis diatur lagi isinya 24 x 'O'}
writeln(garis);
readln;
end.
A143
Function tambah(var a,b:integer):integer; {memakai acuan (var)}
67

begin
tambah:=a + b;
end;
var x,y:integer; {type hrs sama dgn di atas tidak boleh byte,
longint}
begin
writeln('Brp X '); readln(x);
writeln('Brp Y '); readln(y);
writeln(tambah(x,y));
writeln(3*tambah(x,y)); {boleh, yg tdk boleh: tambah(2*x,3*y)}
writeln(3*tambah(x,x)); {boleh}
readln;
end.
A144
Function tambah(a,b:integer):real; {tdk memakai acuan (var)}
begin
tambah:=a / b;
end;
var x,y:integer; {type hrs sama dgn di atas tidak boleh byte,
longint}
begin
writeln('Brp X '); readln(x);
writeln('Brp Y '); readln(y);
writeln(tambah(x,y):7:1);
writeln(3*tambah(x,y):7:2); {boleh, yg tdk boleh: tambah(2*x,3*y)}
writeln(3*tambah(x,x)); {boleh sebaiknya diformat karena real}
readln;
end.
A145
{Fungsi Spasi}
uses crt;
function spasi(x:byte):string;
var s:string[255];
begin
FillChar(s,SizeOf(s),' ');
s[0]:=char(x); {S[0]:=#16 artinya panjangnya constan 16}
spasi:=s;
{kalau char(x) artinya tergantung niali x }
end;
var r:byte;
BEGIN
clrscr;
writeln('Brp renggangnya ? ');readln(r);
writeln('Halo',spasi(r),'saya',spasi(12),'Pascal');
readln;
END.

68

DAFTAR PUSTAKA
Jogiyanto Prof. Dr., (2005). Turbo Pascal Versi 5.0 Jilid 1,
Penerbit ANDI yogyakarta, Yogyakarta..
Jogiyanto Prof. Dr., (2004). Bahasa Turbo Pascal Teori dan
Aplikasi Program Komputer Jilid 2, Penerbit ANDI yogyakarta,
Yogyakarta..
Abdul Kadir,(1999),Pemrograman Pascal Buku I, Andi Offset,
Yogyakarta.
Abdul Kadir,(2002),Pemrograman Pascal Buku II, Andi Offset,
Yogyakarta.

69

Anda mungkin juga menyukai