Anda di halaman 1dari 20

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 (atabase)
Contoh Program
Program 1 meng!itung luas"keliling bangunan
Program 2 menentukan bilangan gan#il$ 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 % toko (record dengan array)
Program & 'perasi (tring
Program ) *onto! penggunaan teori di tutor 6
Dijas/edit by ww
PENGENALAN
Pada bagian ini gua cuman nge#elasin secara garis besar tentang pascal dan tips
penulisan program+ ,ita mulai$ ok-
.asanya gak lengkap kalo gak ta!u se#ara! pascal+ Pascal adala! ba!asa tingkat tinggi
yang orientasinya pada segala tu#uan$ dirancang ole! Prof+ /iklaus 0irt! dari
Tec!nical 1niversity di 2uric!$ (3it4erland+ /ama pascal diambil sebagai
peng!argaan ter!adap 5laise Pascal$ a!li matematik dan p!ilosip!i terkenal abad 1%
dari Prancis+
Profesor /iklaus 0irt! memperkenalkan kompiler ba!asa Pascal pertama kali untuk
komputer ** 6666 (*ontrol ata *orporation) yang dipublikasikan pada ta!un
1)%1 dengan tu#uan untuk membantu menga#ar program komputer secara sistematis$
k!ususnya pemrograman terstruktur+ Pada perkembangannya banyak versi7versi
pascal yang beredar$ 8(7Pascal$ 9pple Pascal$ Turbo Pascal$ dll+ :ua perna! baca
kalo pascal itu di buat karena ba!asa * terlalu sulit untuk di pela#ari untuk pemula+
(ekarang kita ngeliat bagaimana struktur program pascal+ Pascal terdiri dari 2 bagian
utama$ yaitu pendeklarasian variabel dan programnya+ Per!atikan conto!;
1; Program ,aryaPertamaku<
2; uses crt<
3; var nama; string<
4; 5egin
5; 3rite(=8asukkan nama anda; =)< readln(nama)<
6; clrscr<
%; 3rite(=>i =$ nama$ =apakabar-=)<
&; ?nd+
:ak usa! dipikirin apa isi program itu+ Tapi per!atikan strukturnya+ Pada baris ke 3$
itu yang disebut bagian pendeklarasian variabel+ (edangkan dari baris ke74 s"d &$
disebut bagian pernyataan (tempat nulis program)+ 5aris pertama itu !anya
merupakan #udul programnya doank$ gak ditulis #uga bole!+ @udulnya adala!
A,aryaPertamakuA$ #angan pake spasi lo! nulisnya (gunakan garis ba3a! a#a)+
' iya$ dalam pascal ada yang disebut unit7unit lain semacam librari la!+++ 8isalnya
pada baris kedua digunakan uses crt< (berfungsi untuk memanipulasi layar teks)+
Per!atikan baris 6$ itu adala! sala! satu fungsi dari unit crt yaitu untuk membersi!kan
layar (sama dengan perinta! cls di dos)+
Per!atikan cara penulisan programnyaB (etiap baris selalu diak!iri dengan titik koma
A<A (kecuali pada baris ke74 dan &$ karena itu adala! tanda dari a3al dan ak!ir
program)+ (elain itu program pascal selalu dimulai dengan AbeginA dan Aend+A (#angan
lupa titiknya lo!)+
5agaimana$ muda! bukan- :ua kasi! satu tips yang berguna+ ,alo nulis program
usa!akan yang rapi+ Cngat bila ada A5eginA pasti ada AendA$ na! penulisan program
Dijas/edit by ww
diantara begin dan end itu usa!akan di kasi! 2 spasi atau satu tab+ Per!atikan baris ke7
5 s"d %+ Ctu akan memuda!kan penelusuran program bila ter#adi kesala!an
MENCETAK KE LAYAR DAN PENGGUNAAN VARIABEL
'k$ sekarang kita bakal bela#ar cara menampilkan teks di layar dan penggunaan
variabel+ Per!atikan conto! diba3a! ini;
1; Program ,aryaPertamaku<
2; uses crt<
3; var nama; string<
4; 5egin
5; 3rite(=8asukkan nama anda; =)< readln(nama)<
6; clrscr<
%; 3rite(=>i =$ nama$ =apa kabar-=)<
&; ?nd+
Pada baris ke73 dideklarasikan variabel nama dengan tipe string+ ,arena berupa
string$ variabel nama bisa menampung input dari user berupa kata dan angka+ 1ntuk
lebi! #elas tentang #enis tipe data li!at tabel di ba3a!+ @angan sampai sala!
mendeklarasikan #enis variabelnya loo!!+++
(ekarang per!atikan baris ke75+ Dungsi 3rite adala! mencetak kalimat atau isi
variabel yang ada ke layar+ @adi yang tercetak adala! A8asukkan nama anda; A+
(elan#utnya ada perinta! readln+ 9pa fungsinya- readln itu berfungsi untuk
menampung (menyimpan !asil input user) dan disimpan pada variabel nama+ @adi
sekarang variabel nama bernilai sama yang kamu ketikan+
Pada baris ke7% di layar akan tercetak A >i di#as apa kabar-A (itu kalo nama yang
dimasukan di#as)+ 1ntuk menampilkan isi variabel cukup ditulis; A3rite(nama)<A+
(edangkan bila berupa teks yang fiEed$ conto!nya sama seperti baris ke75
(mengunakan = (kutip) )+
9pa si! beda 3rite dan 3riteln- 3rite fungsinya mencetak di layar dan posisi kursor
masi! dibaris itu #uga+ (edangkan 3riteln akan pinda! kebaris yang baru+ Per!atikan
*onto!
1; 5egin
2; 3rite(=>i+++=)< 3rite(= 9pa kabar-=)<
3; 3riteln<
4; 3riteln(=>i++ =)< 3riteln(=9pa kabar-=)<
5; ?nd+
8aka output yang tampil adala!;
>i+++ 9pa kabar-
>i+++
9pa kabar -
@elas bukan- @adi fungsi AlnA pada 3riteln adala! untuk pinda! kebaris yang baru+
Dungsinya akan sama bila ditaru! di read+ Fup tutorial pertama kelar #uga+++
Dijas/edit by ww
Tipe ata yang (ering igunakan di Pascal
*!ar 7G !anya menampung satu karakter
string 7G menampung lebi! dari satu karakter
5oolean 7G !anya mempunyai dua nilai True atau Dalse
Cnteger 7G 732+%6& s"d 32+%6% (gak bisa bilangan desimal)
longint 7G 72+14%+4&3+64& s"d 72+14%+4&3+64&(gak bisa bilangan desimal)
read 7G 2$) E 1673) s"d 1$% E 163& (untuk menampung bilangan desimal)
PENGGUNAAN KONDISI
Tutorial yang kedua ini akan diba!as mengenai pernyataan kondisi$ if dan case+
1; Program Tutorial2Hif<
2; var pili!; Cnteger<
3; 5egin
4; 3rite(=Pili! 1 atau 2=)< readln(pili!)<
5; if pili!I1 t!en 3rite(=9nda memili! 1=)
6; elseif pili!I2 t!en 3rite(=Pili!an anda 2=)
%; else 3rite(=9nda memili! yang lain=)
&; ?nd+
Per!atikan baris 5$ 6 dan %+ i situ ada 3 pernyataan kondisi if+ 9pabila pili!an yang
kita ketik ada di satu kondisi$ maka yang lain akan diabaikan+ 5ingung- gini
maksudnya+++ 8isal pada program di atas kita pili! 2+ Pada saat program di#alankan$
baris ke75 akan di eksekusi+ 5er!ubung pili!an kita 2 bukan 1$ maka akan langsung
pinda! kebaris selan#utnya+ Ternyata pada baris ke76 kondisi itu terpenu!i$ maka yang
tercetak dilayar adala! APili!an anda 2A+ 5aris ke7% tidak diperiksa lagi karena baris
ke 6 suda! memenu!i syarat+
5ila kita memili! 3$ maka baris ke75 dan ke76 tidak memenu!i konsisi tersebut$ maka
yang tercetak adala! A9nda memili! yang lainA+
(elain dengan if$ pernyataan kondisi di atas bisa #uga menggunakan case+ Per!atikan
conto!;
1; Program Tutorial2Hcase<
2; var pili!; c!ar<
3; 5egin
4; 3rite(=Pili! 1 atau 2=)< readln(pili!)<
5; case pili! of
6; =1=; 3rite(=9nda memili! 1=)<
%; =2=; 3rite(=Pili!an anda 2=)<
&; else 3rite(=9nda memili! yang lain=)<
); end<
16; ?nd+
,eterangannya gak #au! beda dengan kondisi if kok+ *oba amati pada baris ke )$ di
sana ada pernyataan Aend<A+ Pernyataan itu berfungsi untuk menutup pernyataan case
Dijas/edit by ww
yang dimulai pada baris ke75+ Perlu diingat AendA disertai dengan titik !anya untuk
diak!ir program+
LOOPING
Jooping- apa !ayoo+++- masi! ingatkan pela#aran fisika (81$ adakan pela#aran
tentang looping dirangkaian elektronik+ Jooping adala! proses pengulangan !ingga
kondisi syarat yang ditentukan tercapai+ (ekarang kita ngeba!as 3 #enis looping$ for$
3!ile dan repeat+ Per!atikan conto! di ba3a! ini;
1; Program Tutorial3Hfor<
2; var i; Cnteger<
3; 5egin
4; Dor i;I1 to 5 do
5; 3riteln(=ini yang ke =$ i)<
6; ?nd+
Per!atikan baris 4 dan 5+ i sana ada satu persyaratan$ yaitu baris ke75 akan
dieksekusi bila nilai i antara 1 sampai 5+ 9pa output yang tercetak dilayar-
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
ini yang ke 5
5agaimana kalo mau pake 3!ile- Per!atikan conto!;
1; Program Tutorial3H3!ile<
2; var i; Cnteger<
3; 5egin
4; i;I1<
5; 3!ile i K 5 do
6; begin
%; 3riteln(=ini yang ke =$ i)<
&; i;IiL1<
); end<
16; ?nd+
9pa perbedaan mendasar 3!ile dengan for- yup$ di 3!ile dibutu!kan counter
(diprogram ini adala! i)+ @adi$ baris ke7% dan & akan dieksekusi (di#alankan) apabila
nilai i K 5+ *oba liat baris ke 6$ di sana ada AbeginA dan Aend<A sebagai pasangannya
(dibaris ke ))+ 5ila ada lebi! dari satu pernyataan !arus di mulai dengan begin untuk
kondisi if$ case$ looping+ @ika tidak !anya baris pertama sa#a yang dieksekusi+ 9pa
outputnya-
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
Dijas/edit by ww
*oba baris ke & kamu ganti dengan Ai;Ii71<A apa yang ter#adi- *oba #alankan+ 9kan
ter#adi looping terus menerus karena kondisinya memenu!i syarat terus (i selalu
kurang dari lima)+ Tekan control break untuk meng!entikannya+ >al inila! yang
disebut invinitive loop+ (ekarang kita coba dengan repeat+
1; Program Tutorial3H3!ile<
2; var pili!; c!ar<
3; 5egin
4; i;I1<
5; repeat
6; 3riteln(=ini yang ke =$i)<
%; i;IiL1<
&; until iK6<
); ?nd+
9pa outputnya- cuman 1$ Aini yang ke 1A+ Jo! kok bisa$ kan pada baris ke & tidak
memenu!i persyaratan iK6 - 8emang nggak memenu!i persyaratan itu$ tapi ini
adala! keisteme3aan repeat+ Ca akan mengeksekusi sekali dulu baru dicek persyaratan
yang ada diba3a!+
,elar #uga ngeba!as looping+ :unakan #enis looping yang ada seseuai kebutu!an+ '
iya$ apa yang dilakukan bila tertulis seperti ini- ADor i;I16 do3nto 1 doA+ Pernyataan
itu akan meng!itung mundur dari 16 sampai 1+
PROSEDUR DAN FUNGSI
8isalnya kita punya rumus meng!itung 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 si! diperbanyak dengan yang gituan$ tapi boros memori dan
berabe kalo rumus yang kita tulis ternyata sala!$ berarti kita !arus betulin di tiga
tempat #uga+ 1ntuk mempermuda!nya gunakan Prosedur atau Dungsi+
1; Program Tutorial4HProsedur<
2;
3; Procedure Tampil<
4; begin
5; 3riteln(=>i+++=)<
6; 3riteln(=9pakabar=)<
%; end<
&; 5egin
); Tampil<
16; 3riteln(=yang di atas menggunakan prosedur loo!!+++=)<
11; ?nd+
9pa yang dilakukan program di atas- *oba li!at baris ke73 sampai %+ Ctula! yang
disebut prosedur+ Program utamanya mulai dari baris ke & sampai 11+ Pada baris ke )
prosedur yang kita buat sebelumnya dipanggil dan dieksekusi+ Cni outputnya
>i+++
Dijas/edit by ww
9pakabar
yang di atas menggunakan prosedur loo!!+++
(elain itu prosedur dan fungsi bisa di taru! variabel lo!!+++ Per!atikan conto!
penggunaan fungsi di ba3a! ini;
1; Program Tutorial4HDungsi<
2; var !asil; integer<
3; Dunction Ctung(a$ b ; integer) ; integer<
4; begin
5; itung;IaLb<
%; end<
&; 5egin
); !asil;Iitung(%$ ))<
16; 3riteln(=>asil % L ) sama dengan =$ !asil)<
11; ?nd+
5aris 3 sampai % adala! fungsi+ Tapi per!atikan bentuk fungsinya$ ada pendeklarasian
variabel a dan b+ *oba liat baris ke ) ketika fungsi itung dipanggil+ i sana tertulis
Aitung(%$ ))A$ secara otomatis a akan mendapat nilai % dan b mendapat )+ 5agaimana
#ika ditulis Aitung(3$5$6)A- @elas gak bisa karena dialokasikan !anya 2 variabel+ >asil
pen#umla!an a L b ditampung di fungsi itung (li!at baris ke75) dan !asil itu diberikan
ke variabel !asil (baris ))+
Jalu apa perbedaan prosedur dan fungsi- Prosedur !anya bisa men#alankan perinta!
dan tidak mengembalikan nilai (li!at kembali conto! program prosedur sebelumnya)+
(edangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau diola!
lagi+ 5ila kita punya fungsi yang bernama *ek(aldo$ maka *ek(aldo bisa berfungsi
seperti variabel sama seperti pada fungsi Ctung di atas+
5agaimana- muda! bukan- gunakan prosedur dan fungsi sesuai kebutu!an+
Terkadang fungsi lebi! berguna dan efisien dibandingkan dengan prosedur+
ARRAY DAN RECORD
Perna!ka! kamu membayangkan bila kita mau membuat program toko bua!7bua!an+
@ika ada 3 #enis bua!7bua!an (melon$ duku dan mangga) berarti kita !arus mempunyai
tiga variabel untuk masing7masing #enis bua!+ Tetapi betapa sulitnya #ika toko itu
punya 16 atau 26 #enis yang berbeda+ (olusinya adala! gunakan array+ 9rray itu
adala! tipe data terstuktur yang berguna untuk menyimpan se#umla! data yang bertipe
sama+ 5agaimana cara ker#anya- yaitu dengan menggunakan indeE (semacam
penanda)+ Per!atikan conto!;
1; Program Tutorial5H9rray<
2; var bua!; array M1++3N of string<
3; i; integer<
4; 5egin
5; Dor i;I1 to 3 do
Dijas/edit by ww
6; begin
%; 3rite(=8asukkan bua!7bua!an ke =$i $ = ; =)<readln(bua!MiN)<
&; end<
); 3riteln<3riteln(=Csi bua!7bua!an yang dimasukkan tadi adala! ; =)<
16; Dor i;I 1 to 3 do
11; 3riteln(=bua! ke=$ i $= ; =$ bua!MiN)<
12; ?nd+
Ji!at pada baris ke %+ engan !anya menggunakan satu nama variabel yaitu bua!$
kita bisa menyimpan 3 nilai yang berbeda+ 8isalkan yang kita masukkan adala!
melon$ duku dan mangga+ maka bua!M1N bernilai melon$ bua!M2N bernilai duku dan
bua!M3N bernilai mangga+ 1ntuk mencetak isi variabel yang suda! disimpan di array
tadi caranya bisa dili!at di baris ke 11+
5agaimana$ gampangkan- setela! mengeta!ui cara menggunakan array$ sekarang kita
bela#ar menggunakan record+ Tidak seperti array$ record adala! #enis tipe data
terstruktur yang berisi beberapa data$ yang masing7masing dapat berlainan tipe+
Per!atikan conto!;
1; Program Tutorial5H.ecord<
2; type bua! I record
3; nama; string<
4; !arga; longint<
5; end<
6; var data;bua!<
%; 5egin
&; 3rite(=nama bua!; =)<readln(data+nama)<
); 3rite(=!arga bua!; =)<readln(data+!arga)<
16; 3rite(=ditampilkan=)<
11; 3rite(=nama=)<readln(data+nama)<
12; 3riteln(=!arga=)<readln(data+!arga)<
13; ?nd+
9pa yang bisa kamu ambil kesimpulan dari program di atas- 5ingung- @adi gini$
dengan menggunakan record (di sini bernama bua!) kita bisa membuat tipe data yang
berisi beberapa data yang berlainan tipe (nama dengan #enis string$ dan !arga dengan
#enis long integer) yang ini disebut field+
Per!atikan baris ke 6$ di situ dideklarasikan ba!3a variabel data bertipe bua!+
'tomatis yang dimiliki bua! (nama dan !arga) dimiliki #uga ole! data+ (etela! itu
li!at baris ke & dan )+ /ama bua! disimpan dalam field nama dan !arga bua!
disimpan di dalam field !arga+ 1ntuk bisa menyimpan data di field$ urutannya !arus
variabel+field (conto!nya di sini data+nama atau data+!arga)+ 5egitu #uga bila kita
ingin menampilkan isi field tersebut+
Tipe data seperti ini sangat berguna kedepannya loo!!+++ 9palagi #ika digabungkan
dengan array+
Dijas/edit by ww
DATABASE
.asanya gak lengkap kalo buat program tapi gak bisa nyimpen data+ Fang bakal
di#elasin di sini adala! file bertipe$ artinya !arus disebutkan dulu tipe file tersebut$
apaka! integer$ long integer$ string$ c!ar atau ba!kan record+ 5erikut ini adala! daftar
prosedur dan fungsi yang ber!ubungan dengan program database file bertipe (no 12
sampai 16 !anya untuk file teks)+
Procedure 9ssign (var f$ /amaDile; string)<
Procedure .e3rite (var f)<
Procedure .eset(var f)<
Procedure *lose(var f)<
Procedure 0rite(var f$ var1 M$ var2$ +++$ varnN)<
Procedure .ead(var f$ var1 M$ var2$ +++$ varnN)<
Dunction ?of(var f); 5oolean<
Dunction DilePos(var f); longint<
Dunction Dile(i4e(var f); longint<
Procedure (eek(var f$ /; longint)<
Procedure Truncate(var f)<
Dunction ?oln(var f;teEt);boolean<
Dunction (eek?oln(var f;teEt);boolean<
Dunction (eek?of(var f;teEt);boolean<
Procedure Dlus!(var f;teEt)<
Procedure (etTeEt5uf(var f;teEt$ var bufM$ ukuran; 3ordN)<
Pen#elasannya di ba3a! ini;
Pengacuan suatu file melalui variabel file+ (etiap ingin melakukan manipulasi atau
yang lainya$ !arus melakukan ini dulu
9pabila file tidak ada$ maka file itu akan terbentuk+ Tetapi bila ada$ maka isi file itu
akan !ilang+
8embuka file yang suda! ada$ tetapi tidak meng!apus isinya
8enutup suatu file (lakukan setela! setela! file itu di manipulasi)
8engisi file dengan data+ (apabila filenya bertipe teEt$ maka 3riteln bisa digunakan)
8embaca isi file+ (apabila filenya bertipe teEt$ maka readln bisa digunakan untuk
membaca perbaris)
8emeriksa ak!ir file+ >asilnya akan True bila posisinya diak!ir dan Dalse apabila
tidak diak!ir+ 5iasa digunakan untuk membaca"menguba! data+
8engeta!ui posisi file sekarang+ Penomoran data mulai dari 6+
8engeta!ui #umla! data yang ada+
8eminda!kan posisi file+ ata pertama bernilai 6+
8eng!apus data dari posisi sekarang sampai ak!ir file
8eng!asilkan status ak!ir baris file teks+ /ilainya akan true kalau diak!ir baris atau
?of memberikan nilai True+
(ama seperti ?oln$ tetapi spasi dan tab diabaikan+
(ama seperti ?of$ tetapi mengabaikan spasi$ tab ataupun tanda ak!ir baris
8engosongkan penyangga (buffer) file teks yang dibuka untuk keluaran (perekaman)+
Prosedur ini men#amin ba!3a data yang direkam benar7benar tela! disimpan ke file
(normalnya$ data akan disimpan ke file kalau penyangga file suda! penu!)
Dijas/edit by ww
8enentukan ukuran penyangga yang digunakan file+ ipanggil setela! assign+
(emakin besar semakin cepat pemrosesannya$ defaultnya 12& byte+
5ila ada tulisan var f$ itu artinya variabel file+ /amaDile artinya nama databasenya
(bila perlu pat!nya)+ var1 artinya variabel yang bersesuaian dengan tipe filenya+ /
artinya data ke7/+ 5ila dalam bentuk fungsi$ maka ia akan mengembalikan nilai
tergantung #enisnya (apabila boolean maka akan mengembalikan True atau Dalse$ bila
longint akan mengembalikan angka)+
0aa!!!+++ banyak yac!- emang gitula!+++ 5a!kan ada lagi yang lain lo! untuk file tak
bertipe+ Prosedur dan fungsi di atas gua ambil dari bukunya pak Cr+ 9bdul ,adir$
Pemrograman Pascal+ 5ukunya bagus #uga$ ada 2 #ilid tebel7tebel tapinya ;+ ' iya$ di
sini gua gak ngasi! conto!nya lo!+++ abis kepan#angan kalo ditulis di sini+1ntuk
conto!7conto! penggunaan prosedur dan fungsi di atas bisa di li!at di Program )+
CONTOH PROGRAM
Program ! m"ngh#t$ng %$a&'("%#%#ng )ang$nan
Fup+++ sekarang kita buat program yang pertama$ meng!itung luas dan keliling
bangunan+ 5angunan yang di#adikan conto! adala! segitiga+ Per!atikan conto! di
ba3a! ini;
1; Program 8eng!itungHJuasHdanH,eliling<
2; var alas$ tinggi$ sisimiring$ luas$ keliling; real<
3; 5egin
4; 3riteln(=8?/:>CT1/: J19( 9/ ,?JCJC/: (?:CTC:9=)<
5; 3riteln(=7777777777777777777777777777777777777=)<
6; 3rite(=8asukkan alas ; =)<readln(alas)<
%; 3rite(=8asukkan tinggi ; =)<readln(tinggi)<
&; luas;I 6+5OalasOtinggi<
); sisimiring;IsPrt(sPr(alas)LsPr(tinggi))<
16; keliling;I alasLtinggiLsisimiring<
11; 3riteln<
12; 3riteln(=luas segitiga ; =$ luas;6;2)<
13; 3riteln(=keliling segitiga ; =$ keliling;6;2)<
14; readln<
15; end+
Pada baris 6 dan % adala! tempat memasukkan alas dan tinggi segitiga yang akan
diproses di baris & sampai 16+ Cngat kan rumus meng!itung sisi miring segitiga- yaitu
akar dari #umla! kuadrat sisi7sisinya+ Dungsi AsPrtA adala! untuk mengakarkan dan sPr
untuk mengkuadratkan+
(ekarang kebaris 12 dan 13+ 9pa yang beda !ayoo+++- betul++ setela! variabel luas dan
keliling dicetak ke layar ada tamba!an A;6;2A+ Ctu artinya ;banyaknya alokasi
angka;#umla! desimal+
Dijas/edit by ww
:ampangkan- iya donk$ kan tinggal maen logika+++ ;
Program * ! m"n"nt$(an )#%angan gan+#%, g"na- .an -r#ma
Perna! kan pas di ( kita disuru! nentuin bilangan ini gan#il apa genap$ prima apa
bukan+ (ekarang kita #adiin program+
1; Program @enis5ilangan<
2; var bil; longint<
3; begin
4; 3riteln(=8?/?/T1,9/ @?/C( 5CJ9/:9/=)<
5; 3riteln(=7777777777777777777777777=)<
6; 3rite(=8asukkan angka; =)<readln(bil)<
%; if ((bilI2) or (bilI3) or (bilI5) or (bilI%)) t!en
&; 3rite(=bilangan prima=)
); else if ((bil mod 2 KG 6) and (bil mod 3 KG 6) and
(bil mod 5 KG 6) and (bil mod % KG 6)) t!en
16; 3rite(=bilangan prima=)
11; else 3rite(=bukan bilangan prima=)<
12; if bil mod 2 I 6 t!en
13; 3riteln(= dan genap=)
14; else
15; 3riteln(= dan gan#il=)<
16; readln<
1%; end+
Pada baris ke7% sampai 12 adala! tempat menentukan bilangan prima atau bukan+
8asi! ingat kan karateristik bilangan prima- bilangan yang !anya bisa dibagi 1 dan
dirinya sendiri dan #uga !ampir semuanya gan#il+ 5er!ubung bilangan prima diba3a!
16 adala! persyaratan untuk bilangan diatas 16 (per!atikan baris ke % dan ))$ #adi
bilangan prima diba3a! 16 ditulis manual+ Dungsi AmodA pada baris ) dan 13 adala!
sebagai sisa dari pembagian+ @ika ditulis A% mod 3A maka !asilnya adala! 1$ artinya
sisa dari %"3 (tu#u! dibagi tiga) adala! 1+
:imana- Tinggal maen logika+++ kan- ;P
Program / ! m"n"nt$(an )#%angan t"r)"&ar 0."ngan #f1
Cni adala! program terak!ir untuk mematangkan penggunaan kondisi if+ Perna! ka!
kalian membuat program dengan susa! paya! tetapi setela! ditun#ukkan dengan orang
lain$ mereka bilang A>anya gitu doank ker#anya-A+ >e !e !e+++ sakit !ati emang ;7($
kalo bisa rasanya pengen nimpuk tu orang dengan !ardisk (?9:9T? 59.9*19
&6 giga lima bi#i ;))+ Cni sala! satu program yang pan#ang$ tapi fungsinya+++ yaa+++
gitula! ;
1; Program 5ilanganTerbesar<
2; Qar bil1$ bil2$ bil3 ;real<
3; 5egin
Dijas/edit by ww
4; 0rite(=8asukkan 5ilangan Pertama ; =)<.eadln(bil1)<
5; 0rite(=8asukkan 5ilangan ,edua ; =)<.eadln(bil2)<
6; 0rite(=8asukkan 5ilangan ,etiga ; =)<.eadln(bil3)<
%; Cf (bil1Ibil2) and (bil2Ibil3) t!en
&; 0riteln(=(emua bilangan yang anda masukkan sama
besar =$bil1;6;6)
); ?lse Cf (bil1Ibil2) or (bil1Ibil3) or (bil2Ibil3) t!en
16; 5egin
11; Cf bil1Ibil2 t!en
12; 5egin
13; 0riteln(=5ilangan Pertama dan ,edua 9dala! (ama=)<
14; Cf 5il1 K bil3 t!en
15; 0riteln(=5ilangan Terbesar 9dala! =$bil3;6;6)
16; ?lse
1%; 0riteln(=5ilangan Terbesar 9dala! =$bil1;6;6)
1&; ?nd
1); ?lse Cf bil1Ibil3 t!en
26; 5egin
21; 0riteln(=5ilangan Pertama dan ,etiga 9dala! (ama=)<
22; Cf 5il1 K bil2 t!en
23; 0riteln(=5ilangan Terbesar 9dala! =$bil2;6;6)
24; ?lse
25; 0riteln(=5ilangan Terbesar 9dala! =$bil1;6;6)
26; ?nd
2%; ?lse Cf bil2Ibil3 t!en
2&; 5egin
2); 0riteln(=5ilangan ,edua dan ,etiga 9dala! (ama=)<
36; Cf 5il1 K bil3 t!en
31; 0riteln(=5ilangan Terbesar 9dala! =$bil3;6;6)
32; ?lse
33; 0riteln(=5ilangan Terbesar 9dala! =$bil1;6;6)
34; ?nd
35; ?nd
36; ?lse Cf bil1 G bil2 t!en
3%; 5egin
3&; Cf bil1 G bil3 t!en
3); 0riteln(=5ilangan terbesar adala! =$bil1;6;6)
46; ?lse
41; 0riteln(=5ilangan terbesar adala! =$bil3;6;6)<
42; ?nd
43; ?lse Cf bil1 K bil2 t!en
44; 5egin
45; Cf bil2 G bil3 t!en
46; 0riteln(=5ilangan terbesar adala! =$bil2;6;6)
4%; ?lse
4&; 0riteln(=5ilangan terbesar adala! =$bil3;6;6)<
4); ?nd<
56; readln<
51; ?nd+
Dijas/edit by ww
>ue !e !e+++ keren kan- dengan bermodalkan if kita bisa menentukan bilangan mana
yang terbesar dari 3 bilangan yang dimasukkan+ (elain itu program ini bisa
mendekteksi #ika ada bilangan yang sama+ Fup$ !anya itu intinya+ Prinsip utama
program ini !anya membandingkan bilangan satu dengan yang lain+ 8uda! bukan-
lebi! baik kalian nger#ain yang ini tanpa ngeliat tu program$ biar logikanya #alan+++
Program 2 ! -"ngg$r$tan ang(a 0%oo-#ng1
Perna!ka! kalian dikasi! nilai ulangan sis3a lalu disuru! ngurutin dari yang kecil ke
gede- ,alo #umla!nya diba3a! 16 si! gak masala!$ la! kalo ada 166 bi#i kan berabe+++
Cni solusinya;
1; Program Pengurutan<
2; var i$ #; integer<
3; k ; longint<
4; a; arrayM1++5N of longint<
5; begin
6; 3riteln(=P.':.98 8?/::1.1T,9/ 9/:,9=)<
%; 3riteln(=77777777777777777777777777=)<
&; for i;I1 to 4 do
); begin
16; 3rite(=8asukkan bilangan ke7 =$ i$ = ; =)<readln(aMiN)
11; end<
12; for #;I2 to 4 do
13; begin
14; k;IaM#N<
15; i;I#71<
16; 3!ile (iG6) and (aMiNGk) do
1%; begin
1&; aMiL1N;IaMiN<
1); i;Ii71<
26; end<
21; aMiL1N;Ik
22; end<
23; for i;I1 to 4 do
24; 3riteln(aMiN)<
25; readln<
26; end+
>!mmm+++ sebenarnya gak perlu di#elasin lagi yac! tu program$ gua !arap kalian bisa
nge7trace (menelusuri) algoritma programnya+ Program ini dibatasi untuk 4 angka
sa#a$ bisa diuba! sesuai keinginan+ Pada prinsipnya program ini memasukkan input ke
dalam array$ kemudian membandingkannya$ bila ternyata angka sebelumnya lebi!
besar$ maka dipinda! posisinya (coba dec! di trace$ pasti ngerti)+
Program ini berguna banget buat kalian yang !obi ngitung$ apa lagi buat anak smu+
1ntuk pengembanganya kalian bisa meng!itung mean$ modus dan median
Dijas/edit by ww
Program 3 ! )#ntang 0%oo-#ng1
(etela! sebelumnya kita bermain dengan if$ sekarang ke for+ Program di ba3a! ini
akan memunculkan output berupa sekumpulan bintang yang membentuk tangga
1; Program 5intangTangga<
2; const ak!irI1&<
3; var baris$ kolom; integer<
4; begin
5; for baris;I1 to ak!ir do
6; begin
%; for kolom;I1 to baris do
&; 3rite(=O=)<
); 3riteln<
16; end<
11; readln<
12; end+
*oba dec! di#alankan$ gimana !asilnya- menarik bukan-+ (ekarang kita coba
menampilkan sekumpulan bintang yang membentuk kubus+
1; Program 5intang,ubus<
2; uses crt<
3; Qar i$ #$ E$ y;integer<
4; 5egin
5; clrscr<
6; 0rite(=8asukkan imensi ,ubus; =)<.eadln(E)<
%; y;I6<
&; Dor i;I1 to E do
); 5egin
16; for #;I1 to E do
11; 5egin
12; y;IyL1<
13; 3rite(y;4)<
14; if y mod EI6 t!en
15; 0riteln<
16; ?nd<
1%; ?nd<
1&; readkey<
1); ?nd+
:imana- baguskan- (ekarang tugas kamu membuat sekumpulan bintang berbentuk
piramida dan berbentuk tangga terbalik (seperti program pertama di atas tetapi
terbalik)
Dijas/edit by ww
Program 4 ! -"ngga)$ngan -rogram , * .an 2 ."ngan m"m)$at m"n$
0-ro&".$r, f$ng&#1
(etela! dari tadi bela#ar logika$ sekarang kita menggabungkan beberapa program
sebelumnya dan dibuat menu+ 1ntuk conto! ini kita memanfaatkan repeat+
1; Program :abung<
2; uses crt<
3; var pili!; integer<
4; Procedure luas<
5; Rcopy dan paste program 1S
6; end<
%; Procedure @enis5ilangan<
&; Rcopy dan paste program 2S
); end<
16; Procedure Pengurutan<
11; Rcopy dan paste program 4S
12; ?nd<
13; begin Rprogram utamaS
14; repeat
15; clrscr<
16; 3riteln(= PCJC>9/=)<
1%; 3riteln(=7777777777777777777777777777777777777777777=)<
1&; 3riteln(= 1+ 8eng!itung Juas=)<
1); 3riteln(= 2+ @enis 5ilangan=)<
26; 3riteln(= 3+ Pengurutan=)<
21; 3riteln(= 4+ ?Eit=)<
22; 3riteln(=7777777777777777777777777777777777777777777=)<
23; 3riteln<
24; 3riteln<
25; 3rite(= Pili! 9ngka untuk 8emili! Pili!an ; =)<
26; readln(pili!)<
2%; case pili! of
2&; 1 ; luas<
2); 2 ; @enis5ilangan<
36; 3 ; Pengurutan<
31; 4 ; eEit<
32; end<
33; until pili! I 4<
34; end+
/gertikan prisip ker#anya- @adi program ini !anya akan berak!ir #ika user memili! no
4+
Dijas/edit by ww
Program 5 ! to(o 0r"6or. ."ngan arra71
Pada tutorial 5 tela! di#elaskan cara penggunaan array dan record+ (ekarang kita akan
menggabungkan array dan record tersebut+ Per!atikan program di ba3a! ini;
1; Program 9rrayHdanH.ecord<
2; type dm!sIrecord
3; nrp;stringM16N<
4; nama;stringM25N<
5; alamat;stringM56N<
6; end<
%; var data;arrayM1++3N of dm!s<
&; i;integer<
); begin
16; for i;I1 to 3 do
11; begin
12; 3rite(=nrp ; =)<readln(dataMiN+nrp)<
13; 3rite(=nama ; =)<readln(dataMiN+nama)<
14; 3rite(=alamat ; =)<readln(dataMiN+alamat)<
15; end<
16; 3riteln<
1%; 3riteln(=ata ditampilkan=)<
1&; for i;I1 to 3 do
1); begin
26; 3riteln(=nrp ; =$ dataMiN+nrp)<
21; 3riteln(=nama ; =$ dataMiN+nama)<
22; 3riteln(=alamat ; =$ dataMiN+alamat)<
23; end<
24; readln<
25; end+
i dalam program tersebut dideklarasikan ba!3a dm!s (data ma!asis3a) itu adala!
record yang mempunyai field nrp$ nama dan alamat (li!at baris 2 sampai 6)+
(elan#utnya variabel data dideklarasikan bertipe dm!s yang berbentuk array (baris ke
%)+ ,emudian seperti biasa untuk memasukkan data ke field digunakan
Areadln(dataMiN+nrp)A$ dst (baris 16 sampai 15)+ 1ntuk menampilkannya bisa dili!at
dibaris ke 1& sampai 23+
Dijas/edit by ww
Program 8 ! O-"ra&# Str#ng
Fang ini sebenarnya program tamba!an$ !abis program7program sebelumnya kan
kebanyakan bermain logika matematik (tentang angka melulu)+ ?!!+++ dipikir7pikir$
operasi tentang string kok gak ada- Tenaaannggg++++ sekarang uda! ada kok ;p
1; var nama ; string<
2; urutan$ posisi; integer<
3; begin
4; nama;I=i#as ,eren=<
5; 3riteln(=Fang ini delete=)<
6; for urutan;I1 to 11 do
%; begin
&; posisi;I 13 7 urutan<
); delete(nama$ posisi$ 1)<
16; 3riteln(nama)<
11; end<
12; 3riteln<
13; nama;I=i#as,eren=<
14; 3riteln(=Fang ini insert=)<
15; 3riteln(=(ebelum di Cnsert ; =$ nama)<
16; insert(=7=$ nama$ 6)<
1%; 3riteln(=(etela! di Cnsert ; =$ nama)<
1&; readln<
1); end+
'utputnya seperti di ba3a! ini
Fang ini delete
i#as ,eren
i#as ,ere
i#as ,er
i#as ,e
i#as ,
i#as
i#as
i#a
i#
i

Fang ini insert


(ebelum di Cnsert ; i#as,eren
(etela! di Cnsert ; i#as7,eren
Dijas/edit by ww
@adi isi penggunaan delete itu IG delete(string$ posisinya$ #umla! yang di !apus)+
(edangkan insert IG insert(yang mau disisipkan$ string$ posisinya)+ :ampang kan-
engan ini bisa dibuat kayak Program 5 lo! (tentang bintang)+
5agaimana #ika suatu saat kamu pengen ngeruba! string #adi numerik atau numerik
#adi string-
str(angkanya;desimal yang diambil$ variabel string tempat !asilnya disimpan)
prosedur ini untuk menguba! numerik ke string
val(string$ variabel numerik tempat !asilnya disimpan$ posisi sala!)
prosedur ini untuk menguba! string ke numerik+ ,!usus posisi sala!$ yang dideteksi
adala! posisi sala! yang pertama (3alaupun ada 5 bi#i yang sala!$ yang ke tangkap
yang pertama)
*oncat(string$ string$ string) ; string
Fang ini untuk menggabungkan string$ ini fungsi loo!!++ #adi !asil penggabungannya
ditampung di *oncat
Cni program terak!ir tentang operasi string$ program pembalik kata
1; program pembalikHkata<
2; var kata$!asil$tmp;string< i;integer<
3; begin
4; 3rite(=,ata ; =)<readln(kata)<
5; !asil;I==<
6; for i ;Ilengt!(kata) do3nto 1 do
%; begin
&; tmp;Icopy(kata$i$1)<
); !asil;I!asilLtmp<
16; end<
11; 3rite(=ibalik =$!asil)<
12; readln<
13; end+
i program ini ada dua fungsi operasi string baru yang digunakan+
lengt!(string) ; integer
Dungsi ini untuk meng!itung pan#ang atau #umla! karakter+
copy(string$ posisinya$ #umla! yang akan diambil)
Dungsi ini untuk mengambil se#umla! !uruf dari sting yang dimasukkan
Pos(string"!uruf yang akan dicari posisinya$ string a3al);byte
Dungsi ini untuk mengeta!ui posisi dari string"!uruf dari kata"kalimat yang dimaksud+
5ila bernilai nol berarti nilai string yang dicari tidak ada+
Dijas/edit by ww
Program 9 ! Contoh -"ngg$naan t"or# .# t$tor 4
Program database ini adala! conto!7conto! penggunaan fungsi dan prosedur dari
Tutorial 6+ Per!atikan conto! berikut;
1; Program 5uatDile<
2; var fTeEt ; teEt< data; string<
3; begin
4; 3riteln(=8?/:C(C 9T9=)<
5; 3riteln(=777777777777=)<
6; assign(fTeEt$ =nama+tEt=)<
%; re3rite(fTeEt)< Rgunakan reset(fTeEt) bila file suda! adaS
&; 3riteln(fTeEt$ =di#as=)<
); 3riteln(fTeEt$ =dian=)<
16; 3riteln(fTeEt$ =cecep=)<
11; close(fTeEt)<
12; readln<
13; end+
Prosedur yang digunakan di atas adala! prosedur no+ 1 sampai 5 yang ada di Tutorial
6+ 1ntuk membaca databasenya gunakan reset (#angan re3rite) dan gunakan prosedur
no 6+ Per!atikan conto! di ba3a! ini;
assign(fTeEt$ =bil+dat=)<
reset(fTeEt)<
read(fTeEt$ data)<
3riteln(data)<
(ekarang kita gunain fungsi nomor % yac!!+++ Dungsi ini biasa digunakan untuk
membaca data yang ada dari a3al"posisi tertentu sampai ak!ir+ eof kepan#angan end
of file
3!ile not eof(fTeEt) do
begin
readln(fTeEt$ data)<
3riteln(data)<
end<
5agaimana caranya #ika ingin mengedit data yang suda! ada- :unakan prosedur seek$
perinta!nya; (eek(fTeEt$ filesi4e(fTeEt))<+ (etela! menempatkan kursor ditempat yang
diinginkan$ gunakan perinta! 3rite untuk mengedit atau prosedur Truncate untuk
meng!apus (perinta!nya Truncate(fTeEt))+ Tapi !ati7!ati mengunakan Truncate$
soalnya mulai dari posisi yang dimaksud sampai ak!ir file akan di!apus+ Dungsi dan
prosedur lainnya bisa dicoba7coba sendiri yaaa++++
Dijas/edit by ww
>uuff+++ ak!irnya kelar #uga ngeba!as dasar7dasar pascal+ ,alo kalian uda! pa!am
seluru! tutorial dan program yang ada di sini$ berarti kalian suda! mele3ati level
basic+ 1ntuk pengembangannya coba cari program7program open source$ terutama
mengenai database+ (elamat mencoba+T
Dijas/edit by ww

Anda mungkin juga menyukai