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);
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.
!');
',bo);
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.
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
12
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
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
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
','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
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
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
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
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
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
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
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
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
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
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