BLOG'S DAMIR

TEKNIK KOMPUTER DAN JARINGAN

Sabtu, 25 September 2010

SOAL - SOAL TORBO PASCAL (TPW) BESERTA JAWABANNYA

1.Menghitung luas segi4
jawab:
Program luas_segi4;
uses wincrt;
var
panjang:integer;
lebar:integer;
luas:integer;
Begin
writeln('panjangnya');
readln(panjang);
writeln('lebarnya');
readln(lebar);
luas:=panjang*lebar;
writeln('luas segi4=',luas);
End.

2. Konversi jam ke detik
jawab :
program konversi_jam_ke_detik;
uses wincrt;
var
jam:real;
detik:real;
begin
write('masukkan jam=');
readln(jam);
detik:=jam*3600;
writeln('detik=',detik:10:2);
end.

3.Konversi dari detik ke jam
jawab :
program konversi_detik_ke_jam;
uses wincrt;
var
detik:real;
jam:real;
begin
write('masukkan detik=');
readln(detik);
jam:=detik/3600;
writeln('jam=',jam:10:2);
end.

4.Membuat program Segitiga bintang
jawab :
program segitiga_bintang;
uses wincrt;
var
i , j , N : longint;
begin
writeln('program segitiga bintang by ahmad dhamir salam');
writeln;
write('masukkan jumlah baris segitiga :');
readln(N);
for i:=1 to N do
begin
for j:=1 to i do
write('*');
writeln;
end;
end.

5.Program menghitung bilangan berpangkat dimana nilai bilangannya ditentukan oleh user
 jawab :
program pangkat;
uses wincrt;
var
hasil:longint;
a:longint;
n:integer;
m:integer;
k:integer;
begin
clrscr;
writeln('program pangkat by Ahmad Dhamir Salam');
writeln;
write('masukkan angka yang ingin dihitung: '); read(a);
write('pangkatnya: '); read(n);
if n < 0 then
m:=-n
else
m:=n;

hasil:=1;
for k:=1 to m do
hasil:=hasil*a;
if n<0 then
write(',1')
else
write('jadi hasil ',a,' dipangkatkan ',m,' = ',hasil);
readln;
readln;
end.

6. Program menghitung biangan Faktorial dimana nilaix di tentukan oleh user
jawab :
Program Faktorial_pascal;
uses wincrt;
function faktorial(a:integer):longint;
begin
if (A=1)then
Faktorial:=1
else
Faktorial:=a*faktorial(a-1);
end;
var
x:integer;
begin
writeln('Program Faktorial by Ahmad Dhamir Salam');
writeln;
write('masukkan nilai yang ingin dihitung faktorialnya :');readln(x);
writeln(x,'!','=',faktorial(x));
readln;
end.

7.Konversi Suhu
 Jawab:
program konversi_suhu;
uses wincrt;
var
farenheit:real;
celcius:real;
begin
writeln('masukkan program suhu farenheit ke celcius');
writeln('=============================================');
writeln;
write('masukkan suhu dalam farenheit=');readln(farenheit);
celcius:=5/9*(farenheit-32);
writeln;
writeln('jadi suhu dalam celcius adalah:',celcius:4:2);
end.

8.Konversi Celcius ke Farenheit
 jawab:
program konversi_celcius_ke_farenheit;
uses wincrt;
var
celcius:real;
farenheit:real;
begin
writeln('masukkan suhu dalam farenheit');
readln(farenheit);
celcius:=5/9*(farenheit-32);
writeln('jadi suhu dalam celcius=',celcius:4:2);
end.

9.progranm durasi telepon
jawab:
Program Durasi_Telepon;
uses wincrt;
var j1, j2, m1, m2, d1, d2, j, m, d, sisa, durasi:integer;
begin
write ('jam mulai=');read(j1,m1,d1);
write ('jam selesai =');readln(j2,m2,d2);
Durasi:=(j2-j1)*3600+(m2-m1)*60+(d2-d1);
j:=Durasi div 3600;
sisa:=Durasi mod 3600;
m:=sisa div 60;
d:=sisa mod 60;
writeln ('durasi jam=',j);
writeln ('durasi menit=',m);
writeln ('durasi detik=',d);
end.

Biaya telepon apabila diinput mulai telepon dan selesai telepon, dan biaya pulsa per Rp 200,- dan 1 pulsa adalah 5 detik ( sisa < 5 detik diabaikan).

11.Menghitung biaya telepon
jawab :
Program Menghitung_Biaya_Telepon;
Uses Wincrt;
Var
hh1,mm1,ss1,hh2,mm2,ss2,Total_Detik,Biaya_Telepon:longint;
Begin
Writeln ('Waktu mulai telepon:');
Write ('Jam =');read (hh1);
Write ('Menit=');read (mm1);
Write ('Detik=');read (ss1);
Writeln ('Waktu selesai telepon:');
Write ('Jam =');read (hh2);
Write ('Menit=');read (mm2);
Write ('Detik=');read (ss2);
Total_Detik:=(hh2-hh1)*3600+(mm2-mm1)*60+(ss2-ss1);
Biaya_Telepon:=(Total_Detik div 5)*200;
Writeln ('Lama Waktu Telepon dalam Detik adalah ',(Total_Detik), (' detik.'));
Writeln ('Biaya Telepon adalah Rp ',Biaya_Telepon);
End.

12.Konversi Suhu dari Celcius ke Kelvin dan Fahrenhet.
jawab :
Program suhu;
uses wincrt;
var
celcius,kelvin:integer;
fahrenheit:real;
begin
write('Masukkan suhu dalam celcius = ');readln(celcius);
fahrenheit:=(9/5*celcius)+32;
kelvin:=celcius+273;
writeln('Suhu dalam fahrenheit = ',fahrenheit:5:2);
writeln('Suhu dalam kelvin = ',kelvin);
end.

13.Menghitung umur seseorang apabila diasumsikan dalam 1 bulan ada 30 hari dan dalam 1 tahun ada 365 hari.
Jawab :
Program Menghitung_Umur_Seseorang;
uses wincrt;
var
d1,d2,m1,m2,y1,y2,H,I,J,K,L:integer;
begin
writeln('Menghitung umur seseorang');
write('Masukkan tanggal lahir = ');readln(d1,m1,y1);
write('Masukkan tanggal sekarang = ');readln(d2,m2,y2);
H:=(y2-y1)*365+(m2-m1)*30+(d2-d1);
I:=H div 365;
J:=H mod 365;
K:=J div 30;
L:=J mod 30;
write('umur anda sekarang adalah = ',I,' tahun ',K,' bulan ',L,' hari');
end.

14.Volum Kubus dan luas permukaan kubus.
Jawab :
Program Volume_Kubus_dan_Luas_Permukaan_Kubus;
uses wincrt;
var
alas, volume, luas_permukaan:real;
begin
write('masukkan alas =');readln(alas);
volume:=alas*alas*alas;
luas_permukaan:=6*(alas*alas);

writeln('volume=',volume:5:2);
writeln('luas_permukaan=',luas_permukaan:5:2);
end.

15.Luas daerah lingkaran dan keliling lingkaran.
Jawab :
Program Luas_Lingkaran_dan_Keliling_Lingkaran;
uses wincrt;
const
phi=3.142857;
var
r, Luas, Keliling:real;
begin
write ('masukkan jari-jari lingkaran: ');readln(r);
Luas:=(phi*r*r);
Keliling:=(phi*2*r);

writeln ('luas:', Luas:10:3);
writeln ('keliling:', Keliling:10:3);
end.

16.Mempertukarkan nilai A dan B, nilai A dan B diinput.
Jawab :
Program Mempertukarkan_Nilai;
uses wincrt;
var
A:integer;
B:integer;
temp:integer;
begin
write('masukkan nilai A =');readln(A);
write('masukkan nilai B =');readln(B);
temp:=A;
A:=B;
B:=temp;

writeln('A =',A);
writeln('B =',B);
end.

17. Luas permukaan tabung dan kerucut.
jawab :
Program Luas_Permukaan_Tabung_dan_Kerucut;
uses wincrt;
const
phi=3.142857;
var
r, t, s, luas_permukaan_tabung, luas_permukaan_kerucut:real;
begin
write('masukkan jari-jari =');readln(r);
write('masukkan tinggi =');readln(t);
write('masukkan selimut_kerucut =');readln(s);
luas_permukaan_tabung:=((2*phi*r*r)+(2*phi*r*t));
luas_permukaan_kerucut:=((phi*r*r)+(phi*r*s));
writeln('luas_permukaan_tabung=',luas_permukaan_tabung:5:2);
writeln('luas_permukaan_kerucut=',luas_permukaan_kerucut:5:2);
end.

18.Penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil bagi dalam sebuah program.
jawab :
Program Operasi_Bilangan;
uses wincrt;
var
a,b,c,d,e,h:integer;
f,g:real;
begin
write('masukkan nilai pertama = ');readln(a);
write('masukkan nilai kedua = ');readln(b);
c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;
writeln('hasil penjumlahan = ',c);
writeln('hasil pengurangan = ',d);
writeln('hasil perkalian = ',e);
writeln('hasil pembagian = ',f:0:2);
writeln('hasil pembagian bulat = ',g:0:2);
writeln('sisa hasil bagi = ',h);
end.

19.Meghitung gaji karyawan apabila diinput nama orang, gaji pokok, tunjangan istri 15 % dari gaji pokok, tunjangan tiap anak 20 % dari gaji pokok, pajak 15 % dari gaji keseluruhan.
jawab :
Program Gaji_Karyawan;
uses wincrt;
var
nama_orang:string;
gaji_pokok:real;
tunjangan_istri:real;
tunjangan_tiap_anak:real;
n:integer;
pajak:real;
total_gaji:real;
begin
write ('masukkan nama orang =');readln(nama_orang);
write ('masukkan gaji pokok =');read(gaji_pokok);
write ('masukkan banyaknya anak =');readln(n);
tunjangan_istri:=(0.15*gaji_pokok);
tunjangan_tiap_anak:=(0.2*n*gaji_pokok);
pajak:=(0.15*(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak));
total_gaji:=(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak-pajak);
writeln('tunjangan_istri=',tunjangan_istri:10:2);
writeln('tunjangan_tiap_anak=',tunjangan_tiap_anak:10:2);
writeln('pajak=',pajak:10:2);
writeln('total_gaji=',total_gaji:10:2);
end.

20.Koordinat titik tengah dari kedua titik yang diketahui.
Jawab :
Program Koordinat_Titik_Tengah;
uses wincrt;
var
x1, x2, y1, y2, a, b, titik_tengah_x, titik_tengah_y:real;
begin
write('masukkan nilai x1 =');readln(x1);
write('masukkan nilai x2 =');readln(x2);
write('masukkan nilai y1 =');readln(y1);
write('masukkan nilai y2 =');readln(y2);
titik_tengah_x:=((x1+x2)/2);
titik_tengah_y:=((y1+y2)/2);
writeln('titik_tengah_x=',titik_tengah_x:10:2);
writeln('titik_tengah_y=',titik_tengah_y:10:2);
end.

21. Buatlah program untuk mengkonversi suhu dari Celcius menjadi Fahrenheit dan
Reamur ! ( 1 Fahrenheit = 9/5 x Celcius + 32, 1 Reamur = 4/5 x Celcius)
jawab:
program konversi_suhu;
uses crt;
var c,r,f:real'
begin
clrscr;
write('Masukkan suhu dalam celcius = ');readln(c);
f:=9/5*c+32;
r:=4/5*c;
writeln('Jadi suhu dalam Fahrenheit = ',f:4:2);
writeln('Jadi suhu dalam Reamur = ',r:4:2);
readln;
end.
22. Buatlah program untuk menghitung Luas dan keliling persegi panjang dengan
masukkan: panjang dan lebar !

jawab:

Uses crt;
Var p,l,Luas,Keliling:real;
Begin
Clrscr;
Write(‘Masukkan panjang persegi panjang = ‘);readln(p);
Write(‘Masukkan lebar persegi panjang = ‘);readln(l);
Luas:=p*l;
Keliling:=2*(p+l);
Writeln(‘Jadi luas persegi panjangnya adalah = ‘,Luas:4:2);
Writeln(‘Jadi keliling persegi panjangnya adalah = ‘,Keliling:4:2);
readln;
end.

23. Buatlah program untuk menghitung Luas dan keliling lingkaran dengan masukan jarijari
lingkaran !
jawab :
Program lingkaran;
Uses crt;
Var r,Luas,Keliling:real;
Begin
Clrscr;
Write(‘Masukkan jari-jari lingkaran= ‘);readln(r);
Luas:=22/7*r*r;
Keliling:=2*22/7*r*r;
Writeln(‘Jadi luas lingkarannya adalah = ‘,Luas:4:2);
Writeln(‘Jadi keliling lingkarannya adalah = ‘,Keliling:4:2);
readln;
end.

25: Gaji pegawai PT MAJU MUNDUR dihitung berdasarkan beberapa hal, yaitu: gaji
pokok, tunjangan pegawai dan upah lembur. Tunjangan pegawai adalah 16 % dari gaji
pokok. Upah lembur per jam adalah 0,5 % dari gaji pokok. Buatlah program untuk
menghitung gaji total yang diterima pegawai !

jawab :
program gajiku;
uses crt;
var gp,jl,tp,ul,gt:real;
begin
clrscr;
write('Input gaji pokok = ');readln(gp);
write('Input jumlah jam lembur = ');readln(jl);
tp:=16/100*gp;
ul:=0.5/100*gp*jl;
gt:=gp+tp+ul;
writeln('Jadi totalnya adalah = ',gt:4:2);
readln;
end.

MOHON KRITIKANNYA KALO ADA YG SALAH Y...

PASCAL

PASCAL

 Daftar ISI

-        Pengenalan
-        Tutor 1 (cara mencetak ke layar dan penggunaan variabel)
-        Tutor 2 (penggunaan kondisi)
-        Tutor 3 (looping)
-        Tutor 4 (prosedur dan fungsi)
-        Tutor 5 (array dan record)
-        Tutor 6 (Database)

Contoh Program

Program 1 menghitung luas/keliling bangunan
Program 2 menentukan bilangan ganjil, genap dan prima
Program 3 menentukan bilangan terbesar (dengan if)
Program 4 penggurutan angka (looping)
Program 5 bintang (looping)
Program 6 penggabungan program 1, 2 dan 4 dengan membuat menu (prosedur, fungsi)
Program 7 toko (record dengan array)
Program 8 Operasi String
Program 9 Contoh penggunaan teori di tutor 6

PENGENALAN

Pada bagian ini gua cuman ngejelasin secara garis besar tentang pascal dan tips penulisan program. Kita mulai, ok?

Rasanya gak lengkap kalo gak tahu sejarah pascal. Pascal adalah bahasa tingkat tinggi yang orientasinya pada segala tujuan, dirancang oleh Prof. Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosiphi terkenal abad 17 dari Prancis.

Profesor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan untuk membantu mengajar program komputer secara sistematis, khususnya pemrograman terstruktur. Pada perkembangannya banyak versi-versi pascal yang beredar, MS-Pascal, Apple Pascal, Turbo Pascal, dll. Gua pernah baca kalo pascal itu di buat karena bahasa C terlalu sulit untuk di pelajari untuk pemula.

Sekarang kita ngeliat bagaimana struktur program pascal. Pascal terdiri dari 2 bagian utama, yaitu pendeklarasian variabel dan programnya. Perhatikan contoh:

1: Program KaryaPertamaku;
2: uses crt;
3: var nama: string;
4: Begin
5:   write('Masukkan nama anda: '); readln(nama);
6:   clrscr;
7:   write('Hi ', nama, 'apakabar?');
8: End.

Gak usah dipikirin apa isi program itu. Tapi perhatikan strukturnya. Pada baris ke 3, itu yang disebut bagian pendeklarasian variabel. Sedangkan dari baris ke-4 s/d 8, disebut bagian pernyataan (tempat nulis program). Baris pertama itu hanya merupakan judul programnya doank, gak ditulis juga boleh. Judulnya adalah "KaryaPertamaku", jangan pake spasi loh nulisnya (gunakan garis bawah aja).

O iya, dalam pascal ada yang disebut unit-unit lain semacam librari lah... Misalnya pada baris kedua digunakan uses crt; (berfungsi untuk memanipulasi layar teks). Perhatikan baris 6, itu adalah salah satu fungsi dari unit crt yaitu untuk membersihkan layar (sama dengan perintah cls di dos).

Perhatikan cara penulisan programnya! Setiap baris selalu diakhiri dengan titik koma ";" (kecuali pada baris ke-4 dan 8, karena itu adalah tanda dari awal dan akhir program). Selain itu program pascal selalu dimulai dengan "begin" dan "end." (jangan lupa titiknya loh).

Bagaimana, mudah bukan? Gua kasih satu tips yang berguna. Kalo nulis program usahakan yang rapi. Ingat bila ada "Begin" pasti ada "end", nah penulisan program diantara begin dan end itu usahakan di kasih 2 spasi atau satu tab. Perhatikan baris ke-5 s/d 7. Itu akan memudahkan penelusuran program bila terjadi kesalahan.

MENCETAK KE LAYAR DAN PENGGUNAAN VARIABEL

Ok, sekarang kita bakal belajar cara menampilkan teks di layar dan penggunaan variabel. Perhatikan contoh dibawah ini:

1: Program KaryaPertamaku;
2: uses crt;
3: var nama: string;
4: Begin
5:   write('Masukkan nama anda: '); readln(nama);
6:   clrscr;
7:   write('Hi ', nama, 'apa kabar?');
8: End.

Pada baris ke-3 dideklarasikan variabel nama dengan tipe string. Karena berupa string, variabel nama bisa menampung input dari user berupa kata dan angka. Untuk lebih jelas tentang jenis tipe data lihat tabel di bawah. Jangan sampai salah mendeklarasikan jenis variabelnya loohh...

Sekarang perhatikan baris ke-5. Fungsi write adalah mencetak kalimat atau isi variabel yang ada ke layar. Jadi yang tercetak adalah "Masukkan nama anda: ". Selanjutnya ada perintah readln. Apa fungsinya? readln itu berfungsi untuk menampung (menyimpan hasil input user) dan disimpan pada variabel nama. Jadi sekarang variabel nama bernilai sama yang kamu ketikan.

Pada baris ke-7 di layar akan tercetak " Hi dijas apa kabar?" (itu kalo nama yang dimasukan dijas). Untuk menampilkan isi variabel cukup ditulis: "write(nama);". Sedangkan bila berupa teks yang fixed, contohnya sama seperti baris ke-5 (mengunakan ' (kutip) ).

Apa sih beda write dan writeln? write fungsinya mencetak di layar dan posisi kursor masih dibaris itu juga. Sedangkan writeln akan pindah kebaris yang baru. Perhatikan Contoh

1: Begin
2:   write('Hi...'); write(' Apa kabar?');
3:   writeln;
4:   writeln('Hi.. '); writeln('Apa kabar?');
5: End.

Maka output yang tampil adalah:
Hi... Apa kabar?
Hi...
Apa kabar ?

Jelas bukan? Jadi fungsi "ln" pada writeln adalah untuk pindah kebaris yang baru. Fungsinya akan sama bila ditaruh di read. Yup tutorial pertama kelar juga...

Tipe Data yang Sering Digunakan di Pascal
Char -> hanya menampung satu karakter
string -> menampung lebih dari satu karakter
Boolean -> hanya mempunyai dua nilai True atau False
Integer -> -32.768 s/d 32.767 (gak bisa bilangan desimal)
longint -> -2.147.483.648 s/d -2.147.483.648(gak bisa bilangan desimal)
read -> 2,9 x 10-39 s/d 1,7 x 1038 (untuk menampung bilangan desimal)

PENGGUNAAN KONDISI

Tutorial yang kedua ini akan dibahas mengenai pernyataan kondisi, if dan case.

1: Program Tutorial2_if;
2: var pilih: Integer;
3: Begin
4:   write('Pilih 1 atau 2'); readln(pilih);
5:   if pilih=1 then write('Anda memilih 1')
6:   elseif pilih=2 then write('Pilihan anda 2')
7:   else write('Anda memilih yang lain')
8: End.

Perhatikan baris 5, 6 dan 7. Di situ ada 3 pernyataan kondisi if. Apabila pilihan yang kita ketik ada di satu kondisi, maka yang lain akan diabaikan. Bingung? gini maksudnya... Misal pada program di atas kita pilih 2. Pada saat program dijalankan, baris ke-5 akan di eksekusi. Berhubung pilihan kita 2 bukan 1, maka akan langsung pindah kebaris selanjutnya. Ternyata pada baris ke-6 kondisi itu terpenuhi, maka yang tercetak dilayar adalah "Pilihan anda 2". Baris ke-7 tidak diperiksa lagi karena baris ke 6 sudah memenuhi syarat.

Bila kita memilih 3, maka baris ke-5 dan ke-6 tidak memenuhi konsisi tersebut, maka yang tercetak adalah "Anda memilih yang lain".

Selain dengan if, pernyataan kondisi di atas bisa juga menggunakan case. Perhatikan contoh:

1: Program Tutorial2_case;
2: var pilih: char;
3: Begin
4:   write('Pilih 1 atau 2'); readln(pilih);
5:   case pilih of
6:     '1': write('Anda memilih 1');
7:     '2': write('Pilihan anda 2');
8:     else write('Anda memilih yang lain');
9:   end;
10: End.

Keterangannya gak jauh beda dengan kondisi if kok. Coba amati pada baris ke 9, di sana ada pernyataan "end;". Pernyataan itu berfungsi untuk menutup pernyataan case yang dimulai pada baris ke-5. Perlu diingat "end" disertai dengan titik hanya untuk diakhir program.

LOOPING

Looping? apa hayoo...? masih ingatkan pelajaran fisika SMU, adakan pelajaran tentang looping dirangkaian elektronik. Looping adalah proses pengulangan hingga kondisi syarat yang ditentukan tercapai. Sekarang kita ngebahas 3 jenis looping, for, while dan repeat. Perhatikan contoh di bawah ini:

1: Program Tutorial3_for;
2: var i: Integer;
3: Begin
4:   For i:=1 to 5 do
5:     writeln('ini yang ke ', i);
6: End.

Perhatikan baris 4 dan 5. Di sana ada satu persyaratan, yaitu baris ke-5 akan dieksekusi bila nilai i antara 1 sampai 5. Apa output yang tercetak dilayar?

ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
ini yang ke 5

Bagaimana kalo mau pake while? Perhatikan contoh:

1: Program Tutorial3_while;
2: var i: Integer;
3: Begin
4: i:=1;
5:   while i < 5 do
6:     begin
7:       writeln('ini yang ke ', i);
8:       i:=i+1;
9:     end;
10: End.

Apa perbedaan mendasar while dengan for? yup, di while dibutuhkan counter (diprogram ini adalah i). Jadi, baris ke-7 dan 8 akan dieksekusi (dijalankan) apabila nilai i < 5. Coba liat baris ke 6, di sana ada "begin" dan "end;" sebagai pasangannya (dibaris ke 9). Bila ada lebih dari satu pernyataan harus di mulai dengan begin untuk kondisi if, case, looping. Jika tidak hanya baris pertama saja yang dieksekusi. Apa outputnya?

ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4

Coba baris ke 8 kamu ganti dengan "i:=i-1;" apa yang terjadi? Coba jalankan. Akan terjadi looping terus menerus karena kondisinya memenuhi syarat terus (i selalu kurang dari lima). Tekan control break untuk menghentikannya. Hal inilah yang disebut invinitive loop. Sekarang kita coba dengan repeat.

1: Program Tutorial3_while;
2: var pilih: char;
3: Begin
4:   i:=1;
5:   repeat
6:     writeln('ini yang ke ',i);
7:     i:=i+1;
8:     until i<0;
9: End.

Apa outputnya? cuman 1, "ini yang ke 1". Loh kok bisa, kan pada baris ke 8 tidak memenuhi persyaratan i<0 ? Memang nggak memenuhi persyaratan itu, tapi ini adalah keistemewaan repeat. Ia akan mengeksekusi sekali dulu baru dicek persyaratan yang ada dibawah.

Kelar juga ngebahas looping. Gunakan jenis looping yang ada seseuai kebutuhan. O iya, apa yang dilakukan bila tertulis seperti ini? "For i:=10 downto 1 do". Pernyataan itu akan menghitung mundur dari 10 sampai 1.

 PROSEDUR DAN FUNGSI

Misalnya kita punya rumus menghitung luas segita, apa yang kamu lakukan bila rumus itu ingin kamu tulis ditiga tempat yang berbeda? apa kamu akan ccp (copy, cut dan paste)? emang bisa sih diperbanyak dengan yang gituan, tapi boros memori dan berabe kalo rumus yang kita tulis ternyata salah, berarti kita harus betulin di tiga tempat juga. Untuk mempermudahnya gunakan Prosedur atau Fungsi.

  1: Program Tutorial4_Prosedur;
  2:
  3: Procedure Tampil;
  4: begin
  5:   writeln('Hi...');
  6:   writeln('Apakabar');
  7: end;
  8: Begin
  9:   Tampil;
10:   writeln('yang di atas menggunakan prosedur loohh...');
11: End.

Apa yang dilakukan program di atas? Coba lihat baris ke-3 sampai 7. Itulah yang disebut prosedur. Program utamanya mulai dari baris ke 8 sampai 11. Pada baris ke 9 prosedur yang kita buat sebelumnya dipanggil dan dieksekusi. Ini outputnya

Hi...
Apakabar
yang di atas menggunakan prosedur loohh...

Selain itu prosedur dan fungsi bisa di taruh variabel lohh... Perhatikan contoh penggunaan fungsi di bawah ini:

1: Program Tutorial4_Fungsi;
  2: var hasil: integer;
  3: Function Itung(a, b : integer) : integer;
  4: begin
  5:   itung:=a+b;
  7: end;
  8: Begin
  9:   hasil:=itung(7, 9);
10:   writeln('Hasil 7 + 9 sama dengan ', hasil);
11: End.

Baris 3 sampai 7 adalah fungsi. Tapi perhatikan bentuk fungsinya, ada pendeklarasian variabel a dan b. Coba liat baris ke 9 ketika fungsi itung dipanggil. Di sana tertulis "itung(7, 9)", secara otomatis a akan mendapat nilai 7 dan b mendapat 9. Bagaimana jika ditulis "itung(3,5,6)"? Jelas gak bisa karena dialokasikan hanya 2 variabel. Hasil penjumlahan a + b ditampung di fungsi itung (lihat baris ke-5) dan hasil itu diberikan ke variabel hasil (baris 9).

Lalu apa perbedaan prosedur dan fungsi? Prosedur hanya bisa menjalankan perintah dan tidak mengembalikan nilai (lihat kembali contoh program prosedur sebelumnya). Sedangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau diolah lagi. Bila kita punya fungsi yang bernama CekSaldo, maka CekSaldo bisa berfungsi seperti variabel sama seperti pada fungsi Itung di atas.

Bagaimana? mudah bukan? gunakan prosedur dan fungsi sesuai kebutuhan. Terkadang fungsi lebih berguna dan efisien dibandingkan dengan prosedur.

ARRAY DAN RECORD

Pernahkah kamu membayangkan bila kita mau membuat program toko buah-buahan. Jika ada 3 jenis buah-buahan (melon, duku dan mangga) berarti kita harus mempunyai tiga variabel untuk masing-masing jenis buah. Tetapi betapa sulitnya jika toko itu punya 10 atau 20 jenis yang berbeda. Solusinya adalah gunakan array. Array itu adalah tipe data terstuktur yang berguna untuk menyimpan sejumlah data yang bertipe sama. Bagaimana cara kerjanya? yaitu dengan menggunakan index (semacam penanda). Perhatikan contoh:

  1: Program Tutorial5_Array;
  2: var buah: array [1..3] of string;
  3:     i: integer;
  4: Begin
  5:   For i:=1 to 3 do
  6:     begin
  7:       write('Masukkan buah-buahan ke ',i , ' : ');readln(buah[i]);
  8:     end;
  9:   writeln;writeln('Isi buah-buahan yang dimasukkan tadi adalah : ');
10:   For i:= 1 to 3 do
11:     writeln('buah ke', i ,' : ', buah[i]);
12: End.

Lihat pada baris ke 7. Dengan hanya menggunakan satu nama variabel yaitu buah, kita bisa menyimpan 3 nilai yang berbeda. Misalkan yang kita masukkan adalah melon, duku dan mangga. maka buah[1] bernilai melon, buah[2] bernilai duku dan buah[3] bernilai mangga. Untuk mencetak isi variabel yang sudah disimpan di array tadi caranya bisa dilihat di baris ke 11.

Bagaimana, gampangkan? setelah mengetahui cara menggunakan array, sekarang kita belajar menggunakan record. Tidak seperti array, record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. Perhatikan contoh:

  1: Program Tutorial5_Record;
  2: type buah = record
  3:      nama: string;
  4:      harga: longint;
  5: end;
  6: var data:buah;
  7: Begin
  8:   write('nama buah: ');readln(data.nama);
  9:   write('harga buah: ');readln(data.harga);
10:   write('ditampilkan');
11:   write('nama');readln(data.nama);
12:   writeln('harga');readln(data.harga);
13: End.

Apa yang bisa kamu ambil kesimpulan dari program di atas? Bingung? Jadi gini, dengan menggunakan record (di sini bernama buah) kita bisa membuat tipe data yang berisi beberapa data yang berlainan tipe (nama dengan jenis string, dan harga dengan jenis long integer) yang ini disebut field.

Perhatikan baris ke 6, di situ dideklarasikan bahwa variabel data bertipe buah. Otomatis yang dimiliki buah (nama dan harga) dimiliki juga oleh data. Setelah itu lihat baris ke 8 dan 9. Nama buah disimpan dalam field nama dan harga buah disimpan di dalam field harga. Untuk bisa menyimpan data di field, urutannya harus variabel.field (contohnya di sini data.nama atau data.harga). Begitu juga bila kita ingin menampilkan isi field tersebut.

Tipe data seperti ini sangat berguna kedepannya loohh... Apalagi jika digabungkan dengan array.

DATABASE

Rasanya gak lengkap kalo buat program tapi gak bisa nyimpen data. Yang bakal dijelasin di sini adalah file bertipe, artinya harus disebutkan dulu tipe file tersebut, apakah integer, long integer, string, char atau bahkan record. Berikut ini adalah daftar prosedur dan fungsi yang berhubungan dengan program database file bertipe (no 12 sampai 16 hanya untuk file teks).
Procedure Assign (var f, NamaFile: string);
Procedure Rewrite (var f);
Procedure Reset(var f);
Procedure Close(var f);
Procedure Write(var f, var1 [, var2, ..., varn]);
Procedure Read(var f, var1 [, var2, ..., varn]);
Function Eof(var f): Boolean;
Function FilePos(var f): longint;
Function FileSize(var f): longint;
Procedure Seek(var f, N: longint);
Procedure Truncate(var f);
Function Eoln(var f:text):boolean;
Function SeekEoln(var f:text):boolean;
Function SeekEof(var f:text):boolean;
Procedure Flush(var f:text);
Procedure SetTextBuf(var f:text, var buf[, ukuran: word]);

Penjelasannya di bawah ini:
Pengacuan suatu file melalui variabel file. Setiap ingin melakukan manipulasi atau yang lainya, harus melakukan ini dulu
Apabila file tidak ada, maka file itu akan terbentuk. Tetapi bila ada, maka isi file itu akan hilang.
Membuka file yang sudah ada, tetapi tidak menghapus isinya
Menutup suatu file (lakukan setelah setelah file itu di manipulasi)
Mengisi file dengan data. (apabila filenya bertipe text, maka writeln bisa digunakan)
Membaca isi file. (apabila filenya bertipe text, maka readln bisa digunakan untuk membaca perbaris)
Memeriksa akhir file. Hasilnya akan True bila posisinya diakhir dan False apabila tidak diakhir. Biasa digunakan untuk membaca/mengubah data.
Mengetahui posisi file sekarang. Penomoran data mulai dari 0.
Mengetahui jumlah data yang ada.
Memindahkan posisi file. Data pertama bernilai 0.
Menghapus data dari posisi sekarang sampai akhir file
Menghasilkan status akhir baris file teks. Nilainya akan true kalau diakhir baris atau Eof memberikan nilai True.
Sama seperti Eoln, tetapi spasi dan tab diabaikan.
Sama seperti Eof, tetapi mengabaikan spasi, tab ataupun tanda akhir baris
Mengosongkan penyangga (buffer) file teks yang dibuka untuk keluaran (perekaman). Prosedur ini menjamin bahwa data yang direkam benar-benar telah disimpan ke file (normalnya, data akan disimpan ke file kalau penyangga file sudah penuh)
Menentukan ukuran penyangga yang digunakan file. Dipanggil setelah assign. Semakin besar semakin cepat pemrosesannya, defaultnya 128 byte.

Bila ada tulisan var f, itu artinya variabel file. NamaFile artinya nama databasenya (bila perlu pathnya). var1 artinya variabel yang bersesuaian dengan tipe filenya. N artinya data ke-N. Bila dalam bentuk fungsi, maka ia akan mengembalikan nilai tergantung jenisnya (apabila boolean maka akan mengembalikan True atau False, bila longint akan mengembalikan angka).

Waahhh... banyak yach? emang gitulah... Bahkan ada lagi yang lain loh untuk file tak bertipe. Prosedur dan fungsi di atas gua ambil dari bukunya pak Ir. Abdul Kadir, Pemrograman Pascal. Bukunya bagus juga, ada 2 jilid tebel-tebel tapinya :D. O iya, di sini gua gak ngasih contohnya loh... abis kepanjangan kalo ditulis di sini.Untuk contoh-contoh penggunaan prosedur dan fungsi di atas bisa di lihat di Program 9.

CONTOH PROGRAM
  
Program 1 : menghitung luas/keliling bangunan

Yup... sekarang kita buat program yang pertama, menghitung luas dan keliling bangunan. Bangunan yang dijadikan contoh adalah segitiga. Perhatikan contoh di bawah ini:

  1: Program Menghitung_Luas_dan_Keliling;
  2: var alas, tinggi, sisimiring, luas, keliling: real;
  3: Begin
  4:   writeln('MENGHITUNG LUAS DAN KELILING SEGITIGA');
  5:   writeln('-------------------------------------');
  6:   write('Masukkan alas : ');readln(alas);
  7:   write('Masukkan tinggi : ');readln(tinggi);
  8:   luas:= 0.5*alas*tinggi;
  9:   sisimiring:=sqrt(sqr(alas)+sqr(tinggi));
10:   keliling:= alas+tinggi+sisimiring;
11:   writeln;
12:   writeln('luas segitiga : ', luas:0:2);
13:   writeln('keliling segitiga : ', keliling:0:2);
14:   readln;
15: end.

Pada baris 6 dan 7 adalah tempat memasukkan alas dan tinggi segitiga yang akan diproses di baris 8 sampai 10. Ingat kan rumus menghitung sisi miring segitiga? yaitu akar dari jumlah kuadrat sisi-sisinya. Fungsi "sqrt" adalah untuk mengakarkan dan sqr untuk mengkuadratkan.

Sekarang kebaris 12 dan 13. Apa yang beda hayoo...? betul.. setelah variabel luas dan keliling dicetak ke layar ada tambahan ":0:2". Itu artinya :banyaknya alokasi angka:jumlah desimal.

Gampangkan? iya donk, kan tinggal maen logika... :D
  
Program 2 : menentukan bilangan ganjil, genap dan prima

Pernah kan pas di SD kita disuruh nentuin bilangan ini ganjil apa genap, prima apa bukan. Sekarang kita jadiin program.

  1: Program JenisBilangan;
  2: var bil: longint;
  3: begin
  4:   writeln('MENENTUKAN JENIS BILANGAN');
  5:   writeln('-------------------------');
  6:   write('Masukkan angka: ');readln(bil);
  7:   if ((bil=2) or (bil=3) or (bil=5) or (bil=7)) then
  8:     write('bilangan prima')
  9:   else if ((bil mod 2 <> 0) and (bil mod 3 <> 0) and
(bil mod 5 <> 0) and (bil mod 7 <> 0)) then
10:     write('bilangan prima')
11:   else write('bukan bilangan prima');
12:   if bil mod 2 = 0 then
13:     writeln(' dan genap')
14:   else
15:     writeln(' dan ganjil');
16:   readln;
17: end.

Pada baris ke-7 sampai 12 adalah tempat menentukan bilangan prima atau bukan. Masih ingat kan karateristik bilangan prima? bilangan yang hanya bisa dibagi 1 dan dirinya sendiri dan juga hampir semuanya ganjil. Berhubung bilangan prima dibawah 10 adalah persyaratan untuk bilangan diatas 10 (perhatikan baris ke 7 dan 9), jadi bilangan prima dibawah 10 ditulis manual. Fungsi "mod" pada baris 9 dan 13 adalah sebagai sisa dari pembagian. Jika ditulis "7 mod 3" maka hasilnya adalah 1, artinya sisa dari 7/3 (tujuh dibagi tiga) adalah 1.

Gimana? Tinggal maen logika... kan? :P
  
Program 3 : menentukan bilangan terbesar (dengan if)

Ini adalah program terakhir untuk mematangkan penggunaan kondisi if. Pernah kah kalian membuat program dengan susah payah tetapi setelah ditunjukkan dengan orang lain, mereka bilang "Hanya gitu doank kerjanya?". He he he... sakit hati emang :-(, kalo bisa rasanya pengen nimpuk tu orang dengan hardisk SEAGATE BARACUDA 80 giga lima biji :)). Ini salah satu program yang panjang, tapi fungsinya... yaa... gitulah :D

  1: Program BilanganTerbesar;
  2: Var bil1, bil2, bil3 :real;
  3: Begin
  4:   Write('Masukkan Bilangan Pertama : ');Readln(bil1);
  5:   Write('Masukkan Bilangan Kedua : ');Readln(bil2);
  6:   Write('Masukkan Bilangan Ketiga : ');Readln(bil3);
  7:   If (bil1=bil2) and (bil2=bil3) then
  8:     Writeln('Semua bilangan yang anda masukkan sama
besar ',bil1:0:0)
  9:   Else If (bil1=bil2) or (bil1=bil3) or (bil2=bil3) then
10:     Begin
11:       If bil1=bil2 then
12:         Begin
13:           Writeln('Bilangan Pertama dan Kedua Adalah Sama');
14:           If Bil1 < bil3 then
15:             Writeln('Bilangan Terbesar Adalah ',bil3:0:0)
16:           Else
17:             Writeln('Bilangan Terbesar Adalah ',bil1:0:0)
18:         End
19:       Else If bil1=bil3 then
20:         Begin
21:           Writeln('Bilangan Pertama dan Ketiga Adalah Sama');
22:           If Bil1 < bil2 then
23:             Writeln('Bilangan Terbesar Adalah ',bil2:0:0)
24:           Else
25:             Writeln('Bilangan Terbesar Adalah ',bil1:0:0)
26:         End
27:       Else If bil2=bil3 then
28:         Begin
29:           Writeln('Bilangan Kedua dan Ketiga Adalah Sama');
30:           If Bil1 < bil3 then
31:             Writeln('Bilangan Terbesar Adalah ',bil3:0:0)
32:           Else
33:             Writeln('Bilangan Terbesar Adalah ',bil1:0:0)
34:         End
35:     End
36:   Else If bil1 > bil2 then
37:     Begin
38:       If bil1 > bil3 then
39:         Writeln('Bilangan terbesar adalah ',bil1:0:0)
40:       Else
41:         Writeln('Bilangan terbesar adalah ',bil3:0:0);
42:     End
43:   Else If bil1 < bil2 then
44:     Begin
45:       If bil2 > bil3 then
46:         Writeln('Bilangan terbesar adalah ',bil2:0:0)
47:       Else
48:         Writeln('Bilangan terbesar adalah ',bil3:0:0);
49:     End;
50:   readln;
51: End.

Hue he he... keren kan? dengan bermodalkan if kita bisa menentukan bilangan mana yang terbesar dari 3 bilangan yang dimasukkan. Selain itu program ini bisa mendekteksi jika ada bilangan yang sama. Yup, hanya itu intinya. Prinsip utama program ini hanya membandingkan bilangan satu dengan yang lain. Mudah bukan? lebih baik kalian ngerjain yang ini tanpa ngeliat tu program, biar logikanya jalan...
  
Program 4 : penggurutan angka (looping)

Pernahkah kalian dikasih nilai ulangan siswa lalu disuruh ngurutin dari yang kecil ke gede? Kalo jumlahnya dibawah 10 sih gak masalah, lah kalo ada 100 biji kan berabe... Ini solusinya:

  1: Program Pengurutan;
  2: var i, j: integer;
  3:   k : longint;
  4:   a: array[1..5] of longint;
  5: begin
  6:   writeln('PROGRAM MENGGURUTKAN ANGKA');
  7:   writeln('--------------------------');
  8:   for i:=1 to 4 do
  9:     begin
10:       write('Masukkan bilangan ke- ', i, ' : ');readln(a[i])
11:     end;
12:   for j:=2 to 4 do
13:     begin
14:       k:=a[j];
15:       i:=j-1;
16:       while (i>0) and (a[i]>k) do
17:         begin
18:           a[i+1]:=a[i];
19:           i:=i-1;
20:         end;
21:       a[i+1]:=k
22:     end;
23:   for i:=1 to 4 do
24:     writeln(a[i]);
25:   readln;
26: end.

Hhmmm... sebenarnya gak perlu dijelasin lagi yach tu program, gua harap kalian bisa nge-trace (menelusuri) algoritma programnya. Program ini dibatasi untuk 4 angka saja, bisa diubah sesuai keinginan. Pada prinsipnya program ini memasukkan input ke dalam array, kemudian membandingkannya, bila ternyata angka sebelumnya lebih besar, maka dipindah posisinya (coba dech di trace, pasti ngerti).

Program ini berguna banget buat kalian yang hobi ngitung, apa lagi buat anak smu. Untuk pengembanganya kalian bisa menghitung mean, modus dan median

Program 5  : bintang (looping)

Setelah sebelumnya kita bermain dengan if, sekarang ke for. Program di bawah ini akan memunculkan output berupa sekumpulan bintang yang membentuk tangga

  1: Program BintangTangga;
  2: const akhir=18;
  3: var baris, kolom: integer;
  4: begin
  5:   for baris:=1 to akhir do
  6:   begin
  7:     for kolom:=1 to baris do
  8:     write('*');
  9:   writeln;
10:   end;
11: readln;
12: end.

Coba dech dijalankan, gimana hasilnya? menarik bukan?. Sekarang kita coba menampilkan sekumpulan bintang yang membentuk kubus.

  1: Program BintangKubus;
  2: uses crt;
  3: Var i, j, x, y:integer;
  4: Begin
  5:   clrscr;
  6:   Write('Masukkan Dimensi Kubus: ');Readln(x);
  7:   y:=0;
  8:   For i:=1 to x do
  9:   Begin
10:     for j:=1 to x do
11:       Begin
12:         y:=y+1;
13:         write(y:4);
14:         if y mod x=0 then
15:           Writeln;
16:       End;
17:     End;
18: readkey;
19: End.

Gimana? baguskan? Sekarang tugas kamu membuat sekumpulan bintang berbentuk piramida dan berbentuk tangga terbalik (seperti program pertama di atas tetapi terbalik).

Program 6 : penggabungan program 1, 2 dan 4 dengan membuat menu (prosedur, fungsi)

Setelah dari tadi belajar logika, sekarang kita menggabungkan beberapa program sebelumnya dan dibuat menu. Untuk contoh ini kita memanfaatkan repeat.

  1: Program Gabung;
  2: uses crt;
  3: var pilih: integer;
  4: Procedure luas;
  5:   {copy dan paste program 1}
  6: end;
  7: Procedure JenisBilangan;
  8:   {copy dan paste program 2}
  9: end;
10: Procedure Pengurutan;
11:   {copy dan paste program 4}
12: End;
13: begin {program utama}
14:   repeat
15:     clrscr;
16:     writeln(' PILIHAN');
17:     writeln('-------------------------------------------');
18:     writeln(' 1. Menghitung Luas');
19:     writeln(' 2. Jenis Bilangan');
20:     writeln(' 3. Pengurutan');
21:     writeln(' 4. Exit');
22:     writeln('-------------------------------------------');
23:     writeln;
24:     writeln;
25:     write(' Pilih Angka untuk Memilih Pilihan : ');
26:     readln(pilih);
27:     case pilih of
28:       1 : luas;
29:       2 : JenisBilangan;
30:       3 : Pengurutan;
31:       4 : exit;
32:     end;
33:   until pilih = 4;
34: end.

Ngertikan prisip kerjanya? Jadi program ini hanya akan berakhir jika user memilih no 4.
  
Program 7 : toko (record dengan array)

Pada tutorial 5 telah dijelaskan cara penggunaan array dan record. Sekarang kita akan menggabungkan array dan record tersebut. Perhatikan program di bawah ini:

  1: Program Array_dan_Record;
  2: type dmhs=record
  3:   nrp:string[10];
  4:   nama:string[25];
  5:   alamat:string[50];
  6: end;
  7: var data:array[1..3] of dmhs;
  8:     i:integer;
  9: begin
10:   for i:=1 to 3 do
11:     begin
12:       write('nrp : ');readln(data[i].nrp);
13:       write('nama : ');readln(data[i].nama);
14:       write('alamat : ');readln(data[i].alamat);
15:     end;
16:   writeln;
17:   writeln('Data ditampilkan');
18:   for i:=1 to 3 do
19:     begin
20:       writeln('nrp : ', data[i].nrp);
21:       writeln('nama : ', data[i].nama);
22:       writeln('alamat : ', data[i].alamat);
23:     end;
24:   readln;
25: end.

Di dalam program tersebut dideklarasikan bahwa dmhs (data mahasiswa) itu adalah record yang mempunyai field nrp, nama dan alamat (lihat baris 2 sampai 6). Selanjutnya variabel data dideklarasikan bertipe dmhs yang berbentuk array (baris ke 7). Kemudian seperti biasa untuk memasukkan data ke field digunakan "readln(data[i].nrp)", dst (baris 10 sampai 15). Untuk menampilkannya bisa dilihat dibaris ke 18 sampai 23.

Program 8 : Operasi String

Yang ini sebenarnya program tambahan, habis program-program sebelumnya kan kebanyakan bermain logika matematik (tentang angka melulu). Ehh... dipikir-pikir, operasi tentang string kok gak ada? Tenaaannggg.... sekarang udah ada kok :p

  1: var nama : string;
  2:     urutan, posisi: integer;
  3: begin
  4:   nama:='Dijas Keren';
  5:   writeln('Yang ini delete');
  6:   for urutan:=1 to 11 do
  7:     begin
  8:       posisi:= 13 - urutan;
  9:       delete(nama, posisi, 1);
10:       writeln(nama);
11:     end;
12:   writeln;
13:   nama:='DijasKeren';
14:   writeln('Yang ini insert');
15:   writeln('Sebelum di Insert : ', nama);
16:   insert('-', nama, 6);
17:   writeln('Setelah di Insert : ', nama);
18:   readln;
19: end.

Outputnya seperti di bawah ini

Yang ini delete
Dijas Keren
Dijas Kere
Dijas Ker
Dijas Ke
Dijas K
Dijas
Dijas
Dija
Dij
Di
D

Yang ini insert
Sebelum di Insert : DijasKeren
Setelah di Insert : Dijas-Keren

Jadi isi penggunaan delete itu => delete(string, posisinya, jumlah yang di hapus). Sedangkan insert => insert(yang mau disisipkan, string, posisinya). Gampang kan? Dengan ini bisa dibuat kayak Program 5 loh (tentang bintang).

Bagaimana jika suatu saat kamu pengen ngerubah string jadi numerik atau numerik jadi string?
str(angkanya:desimal yang diambil, variabel string tempat hasilnya disimpan)
prosedur ini untuk mengubah numerik ke string
val(string, variabel numerik tempat hasilnya disimpan, posisi salah)
prosedur ini untuk mengubah string ke numerik. Khusus posisi salah, yang dideteksi adalah posisi salah yang pertama (walaupun ada 5 biji yang salah, yang ke tangkap yang pertama)
Concat(string, string, string) : string
Yang ini untuk menggabungkan string, ini fungsi loohh.. jadi hasil penggabungannya ditampung di Concat

Ini program terakhir tentang operasi string, program pembalik kata

  1: program pembalik_kata;
  2: var kata,hasil,tmp:string; i:integer;
  3: begin
  4:   write('Kata : ');readln(kata);
  5:   hasil:='';
  6:   for i :=length(kata) downto 1 do
  7:     begin
  8:       tmp:=copy(kata,i,1);
  9:       hasil:=hasil+tmp;
10:     end;
11:   write('Dibalik ',hasil);
12:   readln;
13: end.

Di program ini ada dua fungsi operasi string baru yang digunakan.
length(string) : integer
Fungsi ini untuk menghitung panjang atau jumlah karakter.
copy(string, posisinya, jumlah yang akan diambil)
Fungsi ini untuk mengambil sejumlah huruf dari sting yang dimasukkan
Pos(string/huruf yang akan dicari posisinya, string awal):byte
Fungsi ini untuk mengetahui posisi dari string/huruf dari kata/kalimat yang dimaksud. Bila bernilai nol berarti nilai string yang dicari tidak ada.

Program 9  : Contoh penggunaan teori di tutor 6

Program database ini adalah contoh-contoh penggunaan fungsi dan prosedur dari Tutorial 6. Perhatikan contoh berikut:

  1: Program BuatFile;
  2: var fText : text; data: string;
  3: begin
  4:   writeln('MENGISI DATA');
  5:   writeln('------------');
  6:   assign(fText, 'nama.txt');
  7:   rewrite(fText); {gunakan reset(fText) bila file sudah ada}
  8:   writeln(fText, 'dijas');
  9:   writeln(fText, 'dian');
10:   writeln(fText, 'cecep');
11:   close(fText);
12:   readln;
13: end.

Prosedur yang digunakan di atas adalah prosedur no. 1 sampai 5 yang ada di Tutorial 6. Untuk membaca databasenya gunakan reset (jangan rewrite) dan gunakan prosedur no 6. Perhatikan contoh di bawah ini:

assign(fText, 'bil.dat');
reset(fText);
read(fText, data);
writeln(data);

Sekarang kita gunain fungsi nomor 7 yachh... Fungsi ini biasa digunakan untuk membaca data yang ada dari awal/posisi tertentu sampai akhir. eof kepanjangan end of file

while not eof(fText) do
  begin
    readln(fText, data);
    writeln(data);
  end;

Bagaimana caranya jika ingin mengedit data yang sudah ada? Gunakan prosedur seek, perintahnya: Seek(fText, filesize(fText));. Setelah menempatkan kursor ditempat yang diinginkan, gunakan perintah write untuk mengedit atau prosedur Truncate untuk menghapus (perintahnya Truncate(fText)). Tapi hati-hati mengunakan Truncate, soalnya mulai dari posisi yang dimaksud sampai akhir file akan dihapus. Fungsi dan prosedur lainnya bisa dicoba-coba sendiri yaaa....

Huuff... akhirnya kelar juga ngebahas dasar-dasar pascal. Kalo kalian udah paham seluruh tutorial dan program yang ada di sini, berarti kalian sudah melewati level basic. Untuk pengembangannya coba cari program-program open source, terutama mengenai database. Selamat mencoba.…

PEMOGRAMAN WEB 1

Pendahuluan

Sebelum kita melangkah lebih jauh ada baiknya Anda tahu apa itu HTML. HTML atau Hypertext Markup Language merupakan protokol yang digunakan untuk mentransfer data atau document dari web server ke browser kita (Internet Explorer, Netscape Navigator, NeoPlanet, dll). Nah, HTML inilah yang memungkinkan Anda menjelajah internet dan melihat halaman web yang menarik.
Sekarang ini di pasaran terdapat banyak sekali HTML authoring (software yang digunakan untuk membuat atau mendesain halaman web). Macromedia Dreamweaver, Adobe GoLive, MS FrontPage sekedar contohnya. Tetapi tanpa mengetahui dasar-dasarnya Anda tidak akan memperoleh hasil yang maksimal. Mengapa ? Karena walaupun software-software tersebut semakin menawarkan kemudahan dalam membuat halaman web, tetapi biasanya seseorang masih perlu untuk mengedit halaman web tersebut secara manual. Terutama untuk halaman web yang sangat komplek.
Dalam tutorial ini Anda akan kami ajak untuk mengetahui dasar-dasar dari desain web. Yang dibutuhkan hanya sebuah word processor. Anda bisa menggunakan Notepad, WordPad, MS Word atau yang lainnya. Tapi yang paling mudah adalah menggunakan Notepad.

Struktur dasar HTML
HTML (Hypert Text Markup Language) merupakan bahasa pemrograman yang digunakan dalam pembuatan halaman web. Dalam penggunaannya sebagian besar kode HTML tersebut harus terletak di antara tag kontainer. Yaitu diawali dengan <namatag> dan diakhiri dengan </namatag> (terdapat tanda "/").

Sebuah halaman web minimal mempunyai empat buat tag, yaitu :
<HTML> Sebagai tanda awal dokumen HTML.
<HEAD> Sebagai informasi page header. Di dalam tag ini kita bisa meletakkan tag-tag TITLE, BASE, ISINDEX, LINK, SCRIPT, STYLE & META.
<TITLE> Sebagai titel atau judul halaman. Kalimat yang terletak di dalam tag ini akan muncul pada bagian paling atas browser Anda (pada title bar).
Contoh :
<TITLE>Tips HTML -- www.klik-kanan.com</TITLE>
<BODY> Di dalam tag ini bisa diletakkan berbagai page attribute seperti warna latar belakang, warna teks, warna link, warna visited link, warna active link dan lain-lain.
Atribut :
BGCOLOR, BACKGROUND, TEXT, LINK, VLINK, ALINK, LEFTMARGIN & TOPMARGIN.
Contoh :
<BODY bgcolor="#000000" background="images/pcb.gif" text="#FFFFFF" link="#FF0000" vlink="FFFF00" alink="#0000FF">
Sebuah contoh sederhana dokumen HTML :
<HTML>
<HEAD>
<TITLE>Halaman pembuka
</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF" background="images/gambar1.gif"
text="#FF0000">
Letakkan text, images, dan link Anda di sini
</BODY>
</HTML>

Pengaturan Teks
Untuk mendapatkan halaman web yang baik Anda harus melakukan pengaturan terhadap teks seperti memilih jenis dan ukuran huruf, perataan, dll. Tag-tag di bawah ini yang biasa digunakan dalam pengaturan teks :
Headers: <Hn>..</Hn> Digunakan untuk mengatur ukuran huruf pada header. "n" mempunyai nilai antara 1 - 6 atau antara <H1> sampai <H6>, dengan <H1> merupakan ukuran terbesar dan <H6> merupakan ukuran terkecil.
Contoh :
<H2>Tutorial Html</H2>

Tutorial Html

Paragraph Baru: <P> Digunakan untuk pindah alinea atau paragraf. Tag ini bisa diberi akhiran </P> tapi juga bisa tidak diberi.
Line Break: <BR> Digunakan untuk pindah ke baris baru.
No Line Break: <NOBR> Bila digunakan tag ini maka teks yang panjang tidak secara otomatis pindah baris bawahnya bila baris pertama sudah terlalu panjang.
Font <FONT> Untuk mendefinisikan berbagai attribut FONT, yaitu : SIZE, FACE, COLOR.
SIZE: Ukuran font yang digunakan, berkisar antara 1 - 7 dengan 1 merupakan ukuran terkecil dan 7 merupakan ukuran terbesar.

FACE: Jenis atau nama font. Anda bisa memilih maksimal 3 jenis font yang masing-masing dipisahkan oleh koma. Bila terdapat spasi yang terletak pada nama font maka harus digunakan tanda garis bawah ( _ ). Dalam memilih jenis font ini harus dipertimbangkan apakah font yang kita gunakan pada halaman web kita nantinya akan terdapat pada komputer pengguna yang lain (pengakses web kita). Pendeknya kita tidak usah menggunakan font-font yang bentuknya aneh-aneh, gunakan saja font standar. Tapi bila Anda ingin menggunakan font yang sedikit "aneh" Anda bisa menggunakan graphic.

COLOR: Warna font, didefinisikan dengan menggunakan nilai RGB/HEX atau bisa juga langsung menggunakan nama warna (red misalnya).
Contoh :
<FONT SIZE=4 FACE="Verdana, Arial, Helvetica" COLOR="#FF0000">Contoh teks yang berwarna merah</FONT>
Hasilnya akan terlihat seperti :
Contoh teks yang berwarna merah
Contoh lainnya :
<FONT SIZE=2 FACE="Times_New_Roman" COLOR="#0066CC">
Base Font: <BASEFONT> Digunakan untuk mendefinisikan "default text". Attribut sama dengan attribut FONT. Tag FONT akan mengoverwrite setting pada BASEFONT.
Contoh :
<BASEFONT SIZE=2 FACE="Arial,Helvetica" COLOR="#FF0000">
Selain tag dan atribut di atas, masih terdapat lagi tag-tag yang berhubungan dengan pengaturan teks, yaitu :
Perhatian : Semua tag di bawah ini membutuhkan tap penutup.
<B> Bold text
<I> Italic text
<U> Underscore
<TT> Typewriter
<S> Strikeout - draws a line through the text
<PRE> Preformatted Text <DFN> Definition
<BLINK> Text berkedip (lebih baik jangan digunakan)
<STRONG> Strong
<ADDRESS>  Italic
<CITE> Digunakan untuk quoting text
<CODE> Monospaced font (digunakan bila Anda ingin meletakkan (memperlihatkan)
kode HTML pada dokumen HTML Anda)
<SAMP> Monospaced font (digunakan bila Anda ingin meletakkan (memperlihatkan)
kode HTML pada dokumen HTML Anda)
<KBD> Monospaced font (digunakan bila Anda ingin meletakkan (memperlihatkan)
kode HTML pada dokumen HTML Anda)
<BIG> Ukuran teks akan lebih besar satu ukuran
<SMALL> Ukuran teks akan lebih kecil satu ukuran
<SUP> Membuat tekssuperscript
<SUB> membuat tekssub script
<ABBREV> Abbreviations
<ACRONYM> Untuk akronim
<PERSON> Digunakan untuk indexing
<Q> Membuat short inline quotation
<VAR> Membuat variable name, selalu dalam italics.


Lists

Terdapat tiga tipe list yang dapat digunakan, yaitu :
Unordered Lists: <UL> Untuk membuat daftar item dengan tanda bullet. List entries didefinisikan dengan tag <LI>.
Contoh :

<UL>
<LI> Item nomer 1
<LI> Item nomer 2
<LI> Item nomer 3
</UL>

Hasil dari kode di atas adalah:

  • Item nomer 1
  • Item nomer 2
  • Item nomer 3

Dengan atribut TYPE Anda dapat mendefinisikan bentuk disc, circle atau square bullet point.

Contoh :
<UL COMPACT TYPE=square> …

Ordered Lists: <OL> Juga digunakan untuk membuat daftar item, dengan tiap item dapat menggunakan angka arab atau romawi. List entries juga didefinisikan dengan <LI> tag.
Contoh :

<OL TYPE=I>
<LI> Item nomer 1
<LI> Item nomer 2
<LI> Item nomer 3
</OL>

Hasil dari kode di atas adalah :

  1. Item nomer 1
  2. Item nomer 2
  3. Item nomer 3

Untuk TYPE Anda dapat juga menggunakan :

1- Default numbers, 1, 2, 3, etc.
A- Huruf besar. A, B, C, etc.
a- Huruf kecil. a, b, c, etc.
I- Romawi huruf besar. I, II, III, etc.
i- Romawi huruf kecil , i, ii, iii, etc.

Definition Lists: <DL>
Contoh :


<DL>
<DT> Item pertama.
<DD> Penjelasan tentang item pertama.
<DT> Item kedua.
<DD> Penjelasan tentang item kedua
</DL>

Hasil dari kode di atas adalah :

Item pertama.
Penjelasan tentang item pertama.
Item kedua.
Penjelasan tentang item kedua


Images
Images :
Digunakan untuk menampilkan image atau animasi gif pada halaman web Anda.
Atribut : alt, align=(center, left, right), hspave, vspace, border, width & height
Contoh :
<IMG SRC="logo.gif" alt="Ini adalah logo halaman pembuka" width=200 height=100>

<IMG SRC="logo.gif" hspace=10 vspace=5 align=right border=2>
Links :

Digunakan untuk membuat link ke halaman lain. Tulisan yang terletak antara <A> dan </A> akan terdapat garis bawah.
Contoh :

<A HREF="halaman2.html">Klik di sini</A> Untuk membuat link ke halaman lain.
<A HREF="mailto:webmaster@klik-kanan.com">Klik di sini</A> Untuk membuat link pada alamat e-mail.
<A HREF="#aplikasi">Klik di sini</A> Untuk membuat link ke bagian lain pada halaman yang sama.
<A HREF="halamanlain.html#aplikasi">Klik di sini</A> Untuk membuat link kebagian lain pada halaman yang berbeda.
<A HREF="halaman2.html"><IMG SRC="gambar.gif"></A> Untuk membuat link dengan menggunakan gambar.

Tabel
Tabel sangat penting artinya dalam desain web. Karena dengan menggunakan tag table Anda dapat membuat halaman web "terbagi" pada beberapa kolom atau baris. Contohnya seperti pada halaman web yang sedang Anda baca ini.
Terdapat tiga tag atau elemen utama yang digunakan dalam pembuatan table : <TABLE>, <TR>, dan <TD>. Yang perlu diingat adalah bahwa tab <TR> dan <TD> harus terletak di antara tag <TABLE> dan </TABLE>
<TABLE>
Terdiri dari atribut :
  • align - perataan : rata kiri (left), tengah (center) atau kanan (right).
  • bgcolor - warna latar belakang (background) dari tabel.
  • border - ukuran lebar border tabel (dalam pixel).
  • cellpadding - jarak antara isi cell dengan batas cell (dalam pixel).
  • cellspacing - jarak antar cell (dalam pixel).
  • width - ukuran tabel dalam pixel atau percent.
Contoh :

<TABLE align="center" bgcolor="#0000FF" border="2" cellpadding="5" cellspacing="2" width="90%">
<TR>
Tag ini digunakan untuk membuat baris baru (pada tabel). Terdiri dari atribut:
  • align - perataan : rata kiri (left), tengah (center) atau kanan (right).
  • bgcolor - warna latar belakang dari baris.
  • valign - perataan vertikal : top, middle atau bottom.
Contoh :

<TR align="right" bgcolor="#0000FF" valign=top>
<TD>
Tag ini digunakan untuk membuat kolom baru pada tabel.
  • align - perataan
  • background - image yang digunakan sebagai latar belakang dari kolom.
  • bgcolor - warna latar belakang
  • colspan - lihat gambar contoh
  • height - ukuran tinggi cell dalam pixels.
  • nowrap - membuat supaya isi dari kolom tetap berada pada satu baris.
  • rowspan - lihat gambar contoh
  • valign - perataan vertikal :top, middle atau bottom.
  • width - ukuran kolom dalam pixel atau percen.
Contoh :

<TD align="right" background="back.gif" bgcolor="#0000FF" colspan="3" height="200" nowrap rowspan="2" valign="bottom" width="300">





<table width="100" border="1" cellspacing="2" cellpadding="2">
<tr>
<td bgcolor="#0000FF"> &nbsp;</td>
<td bgcolor="#FFFF66">&nbsp;</td>
<td rowspan="2" bgcolor="#FF3366">&nbsp;</td>
</tr>
<tr>
<td colspan="2" bgcolor="#33CC66">&nbsp;</td>
</tr>
<tr>
<td colspan="3" bgcolor="#FFCC99">&nbsp;</td>
</tr>
</table>
 




<table width="100" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#0000FF">&nbsp; </td>
<td bgcolor="#FFFF66">&nbsp;</td>
<td rowspan="2" bgcolor="#FF3366">&nbsp;</td>
</tr>
<tr>
<td colspan="2" bgcolor="#33CC66">&nbsp;</td>
</tr>
<tr>
<td colspan="3" bgcolor="#FFCC99">&nbsp;</td>
</tr>
</table>


Frames
1
<FRAMESET cols="*,140">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAME SRC="menu.htm" NAME="Frame2">
</FRAMESET>

2
<FRAMESET cols="100,*">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAME SRC="menu.htm" NAME="Frame2">
</FRAMESET>

3
<FRAMESET rows="100,*">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAME SRC="menu.htm" NAME="Frame2">
</FRAMESET>

4
<FRAMESET rows="*,60">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAME SRC="menu.htm" NAME="Frame2">
</FRAMESET>

5
<FRAMESET rows="*,60">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAMESET cols="50%,50%">
<FRAME SRC="menu.htm" NAME="Frame2">
<FRAME SRC="menu2.htm" NAME="Frame3">
</FRAMESET></FRAMESET>

6
<FRAMESET cols="*,50%">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAMESET rows="15%,15%,70%">
<FRAME SRC="menu.htm" NAME="Frame2">
<FRAME SRC="menu2.htm" NAME="Frame3">
<FRAME SRC="menu3.htm" NAME="Frame4">
</FRAMESET></FRAMESET>

7
<FRAMESET cols="50%,50%">
<FRAMESET rows="50%,50%">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAME SRC="homepage2.htm" NAME="Frame2">
</FRAMESET>
<FRAMESET rows="50%,50%">
<FRAME SRC="menu.htm" NAME="Frame3">
<FRAME SRC="menu2.htm" NAME="Frame4">
</FRAMESET></FRAMESET>

8
<FRAMESET rows="15%,70%,15%">
<FRAME SRC="homepage.htm" NAME="Frame1">
<FRAMESET cols="15%,70%,15%">
<FRAME SRC="menu.htm" NAME="Frame2">
<FRAME SRC="menu2.htm" NAME="Frame3">
<FRAME SRC="menu3.htm" NAME="Frame4">
</FRAMESET>
<FRAME SRC="homepage.htm" NAME="BIG">
</FRAMESET></FRAMESET>



Kumpulan Tag HTML
<!--    -->
Memberi komentar atau keterangan. Kalimat yang terletak pada tag kontiner ini tidak akan terlihat pada browser
<a href>
Membuat link ke halaman lain atau ke bagian lain dari halaman tersebut
<a name>
Membuat nama bagian yang didefinisikan pada link pada halaman yang sama
<applet>
Sebagai awal dari Java applets
<area>
Mendefinisikan daerah yang dapat diklik (link) pada image map
<b>
Membuat teks tebal
<basefont>
Membuat atribut teks default seperti jenis, ukuran dan warna font
<bgsound>
Memberi (suara latar) background sound pada halaman web
<big>
Memperbesar ukuran teks sebesar satu point dari defaultnya
<blink>
Membuat teks berkedip
<body>
Tag awal untuk melakukan berbagai pengaturan terhadap text, warna link & visited link
<br>
Pindah baris
<caption>
Membuat caption pada tabel
<center>
Untuk perataan tengah terhadap teks atau gambar
<comment>
Meletakkan komentar pada halaman web tidak tidak akan nampak pada browser
<dd>
Indents teks
<div>
Represents different sections of text.
<embed>
Menambahkan sound or file avi ke halaman web
<fn>
Seperti tag <a name>
<font>
Mengganti jenis, ukuran, warna huruf yang akan digunakan utk teks
<form>
Mendefinisikan input form
<frame>
Mendefinisikan frame
<frameset>
Mendefinisikan attribut halaman yang akan menggunakan frame
<h1> ... <h6>
Ukuran font
<head>
Mendefinisikan head document.
<hr>
Membuat garis horizontal
<html>
Bararti dokumen html
<i>
Membuat teks miring
<img>
Image, imagemap atau an animation
<input>
Mendefinisikan input field pada form
<li>
Membuat bullet point atau baris baru pada list (berpasangan dengan tag <dir>, <menu>, <ol> and <ul> )
<map>
Mendefinisikan client-side map
<marquee>
Membuat scrolling teks (teks berjalan) - hanya pada MS IE
<nobr>
Mencegah ganti baris pada teks atau images
<noframes>
Jika browser user tidak mendukung frame
<ol>
Mendefinisikan awal dan akhir list
<p>
Ganti paragraf
<pre>
Membuat teks dengan ukuran huruf yg sama
<script>
Mendefinisikan awal script
<table>
Membuat tabel
<td>
Kolom pada tabel
<title>
Mendefinisikan title
<tr>
Baris pada tabel
<u>
Membuat teks bergaris bawah
Kode untuk karakter khusus
Simbol
Karakter yg ditampilkan
&quot;
"
&amp;
&
&lt;
< 
&gt;
> 
&OElig;
Œ
&oelig;
œ
&Scaron;
Š
&scaron;
š
&Yuml;
Ÿ
&circ;
ˆ
&tilde;
˜
&ensp;
&emsp;
&thinsp;
&zwnj;
&zwj;
&lrm;
&rlm;
&ndash;
&mdash;
&lsquo;
&rsquo;
&sbquo;
&ldquo;
&rdquo;
&bdquo;
&dagger;
&Dagger;
&permil;
&lsaquo;
&rsaquo;
&euro;