1: begin 2: write('hi'); write(' apa kabar?'); 3: writeln; 4: · pdf...

33
file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/01.txt 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... 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) 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... file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/01.txt [10/16/2008 8:25:58 PM]

Upload: truongmien

Post on 08-Mar-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/01.txt

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: Begin5: 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...

Tipe Data yang Sering Digunakan di PascalChar -> hanya menampung satu karakterstring -> menampung lebih dari satu karakterBoolean -> hanya mempunyai dua nilai True atau FalseInteger -> -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)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: Begin2: 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...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/01.txt [10/16/2008 8:25:58 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/02.txt

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

1: Program Tutorial2_if;2: var pilih: Integer;3: Begin4: 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.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/02.txt [10/16/2008 8:25:59 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/03%20luas-keliling.txt

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

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/03%20luas-keliling.txt [10/16/2008 8:26:00 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/04%20ganjil_genap_prima.txt

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)) then10: write('bilangan prima')11: else write('bukan bilangan prima');12: if bil mod 2 = 0 then13: writeln(' dan genap')14: else15: 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

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/04%20ganjil_genap_prima.txt [10/16/2008 8:26:00 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/05%20xx.txt

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: begin10: write('Masukkan bilangan ke- ', i, ' : ');readln(a[i])11: end;12: for j:=2 to 4 do13: begin14: k:=a[j];15: i:=j-1;16: while (i>0) and (a[i]>k) do17: begin18: a[i+1]:=a[i];19: i:=i-1;20: end;21: a[i+1]:=k22: end;23: for i:=1 to 4 do24: 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. Itu tugas kalian loohh... Tangan gua pegel niihh...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/05%20xx.txt [10/16/2008 8:26:01 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/06%20bintang.txt

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: Begin10: for j:=1 to x do11: Begin12: y:=y+1;13: write(y:4);14: if y mod x=0 then15: 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 ini cukup memeras otak lohh... Kalo bisa kirim hasilnya yach....

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/06%20bintang.txt [10/16/2008 8:26:01 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/07%20menu.txt

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: repeat15: 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 of28: 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.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/07%20menu.txt [10/16/2008 8:26:01 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/08%20array.txt

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: begin10: for i:=1 to 3 do11: begin12: 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 do19: begin20: 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.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/08%20array.txt [10/16/2008 8:26:02 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/09%20Op_string.txt

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 deleteDijas KerenDijas KereDijas KerDijas KeDijas KDijas DijasDijaDijDiDYang ini insertSebelum di Insert : DijasKerenSetelah 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).

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/09%20Op_string.txt [10/16/2008 8:26:02 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/10%20buat%20file.txt

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 filesudah 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 filewhile not eof(fText) dobegin 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...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/10%20buat%20file.txt [10/16/2008 8:26:03 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/11%20data_file.txt

PENGOLAHAAN DATA DENGAN MENGUNAKAN FILE---------------------------------------JENIS FILE :* FILE TEKS* FILE SEQUENTIAL* FILE BINARI

* Deklarasi file tekspenulisan =

TYPE pengenal = TEXT; {atau} VAR pengenal : TEXT;Penjelasan =pengenal = variabel file

* Deklarasi file sequentialpenulisan =

TYPE pengenal = FILE of tipe_data; {atau} VAR pengenal : FILE of tipe_data;Penjelasan =pengenal = variabel filetipe_data = jenis data yang digunakan

* Deklarasi file binarypenulisan =

TYPE pengenal = FILE; {atau} VAR pengenal : FILE;Penjelasan =

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/11%20data_file.txt (1 of 2) [10/16/2008 8:26:03 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/11%20data_file.txt

pengenal = variabel file

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/11%20data_file.txt (2 of 2) [10/16/2008 8:26:03 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt

{ tutorial pascal / turbo pascal }{ 3th my tutorial for my friend }{ writen by : m3n_tu4r1 } { padang, 24 mei 2003 }

PROGRAM POINTER;USES CRT;TYPE Stringdata = STRING[20]; Ptrdata =^RECORDDATA; Recorddata = RECORD; Nama : STRINGNAMA; Jabatan : STRING [25]; Ptrkepala : PTRDATA; END;VAR Ptrawal_heap : ptrdata; Ptrkepala : ptrdata;

PROCEDURE BENTUK_DAFTAR (VAR ptrkepala : ptrdata);{ menyusun daftar berantai dengan variabel PTRKEPALA menunjuk data -}{ terakhir yang dimasukan melalui keyboard }VAR Ptrbaru : PTRDATA; Jawaban : CHAR;BEGIN REPEAT CLRSCR; NEW (ptrbaru); WRITE (‘ Nama pegawai : ‘); READLN (ptrbaru^.nama); WRITE (‘ Jabatan :’); READLN (ptrbaru^.jabatan); Ptrbaru^.lanjutan := ptrkepala; Ptrkepala := ptrbaru; WRITE (‘ Masukan data lagi (Y/T) ? : ‘); REPEAT Jawaban := UPCASE (READKEY) UNTIL jawaban IN [‘Y’,’T’]; WRITELN (jawaban); UNTIL jawaban =’T’;END;

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt (1 of 4) [10/16/2008 8:26:04 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt

PROCEDURE CETAK_DAFTAR ( ptrkepala:ptrdata);{ mencetak isi daftar berantai }VAR Ptrsementara:ptrdata;BEGIN CLRSCR; WRITELN (‘ ISI DAFTAR BERANTAI : ‘);WRITELN; WRITELN (‘-----------------------------------------------------------------------------‘); WRITELN (‘ N A M A ’:20,’J A B A T A N’:16); WRITELN (‘-----------------------------------------------------------------------------‘); Ptrsementara :=ptrkepala; {ptrsementara menunjuk pada lokasi yg sama dng ptrkepala} WHILE ptrsementara <> NIL Do WITH ptrsementara^DO BEGIN WRITELN (nama:20,jabatan:16); Ptrsementara := lanjutan; END; WRITELN (‘-----------------------------------------------------------------------------‘); WRITE (‘ tekan Return ‘); READLN;END;

PROCEDURE CARI DATA (ptrkepala:ptrdata;namadicari:stringnama; VAR ptrpraposisidata,ptrposisidata:ptrdata);

{untuk mencari data nama dicari pada daftar berantai, hasil }{- jika data ketemu, maka }{ 1. ptrposisidata menunjuk simpul dari data yang dicari }{ 2. ptrpraposisidata menunjuk simpul sebelum simpul data yang dicari }{ atau sama dengan NIL, jika ptrposisidata menunjuk yang juga ditun- }{ juk oleh ptrkepala }{- jika tidak diketemukan, maka ptrposisidata sama dengan NIL }

VAR Ketemu : BOOLEAN;BEGIN PTRPRAPOSISIDATA :=NIL; PTRPOSISIDATA :=ptrkepala; Ketemu := FALSE; WHILE (NOT ketemu AND (ptrposisidata <>NIL)) DO IF ptrposisidata^.nama <> namadicari THEN BEGIN

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt (2 of 4) [10/16/2008 8:26:04 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt

Ptrposisidata :=ptrposisidata; Ptrposisidata :=ptrposisidata^.lanjutan END ELSE Ketemu :=TRUE;END;

PROCEDURE HAPUSISIDAFTAR (VAR ptrkepala:ptrdata);{untuk menghapus sebuah simpul data daftar berantai}CONST String_kosong=’ ‘;VAR Namadicari : stringnama; Prtposisidata, Ptrpraposisidata : ptrdata;BEGIN CLRSCR; WRITELN (‘Masukan nama pegawai dari data yang akan dihapus:’); READLN (namadicari); IF namadicari = string_kosong THEN EXIT; Cari_data (ptrkepala, namadicari, ptrpraposisidata, ptrposisidata); IF ptrposisidata = NIL THEN BEGIN WRITELN (‘ data tak diketemukan, tekan enter untuk melanjutkan’); READLN; END; BEGIN { proses penghapusan } IF ptrpraposisidata = NIL THEN { simpul yang ditunjukan ptrkepala dihapus } ptrkepala :=ptrkepala^.lanjutan ELSE { bukan simpul yang ditunjuk ptrkepala dihapus } WRITELN (‘ Ok………data sudah dihapus. Tekan enter ‘); END;END; { akhir procedure hapusisidaftar }

PROCEDURE PROSESPILIHAN (VAR ptrkepala : ptrdata);{ digunakan untuk memilih proses ; memasukan data, menampilkan data }{ menghapus data }VAR Pilihan : CHAR;

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt (3 of 4) [10/16/2008 8:26:04 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt

BEGIN REPEAT CLRSCR; TEXTATTR :=$70; { video terbalik } GOTOXY(20,2); WRITE (‘ PILIHAN PROSES ‘); TEXTATTR :=$70; { video normal kembali } GOTOXY(20,4); WRITE (‘ [1] Memasukan / menambah data’); GOTOXY(20,5); WRITE (‘ [2] Menampilkan isi daftar berantai’); GOTOXY(20,6); WRITE (‘ [3] Menghapus data pada daftar berantai’); GOTOXY(20,7); WRITE (‘ [4] Selesai’); GOTOXY(20,8); WRITE (‘ --------------------------------------------------‘); GOTOXY(20,9); WRITE (‘ Masukan kode pilihan [1…4]’); REPEAT Pilihan := UPCASE (READKEY) UNTIL pilihan IN [‘1’..’4’]; WRITE (pilihan); CASE pilihan OF ‘1’ : bentuk_daftar(ptrkepala); ‘2’ : catak_daftar(ptrkepala); ‘3’ : hapusisidata(ptrkepala); END; UNTIL pilihan = ‘4’END;

BEGIN MARK(ptrawal_heap); {penandaan terhadap awalheap} Ptrkepala :=NIL ; {keadaan awal ptr kepala } Prosespilihan(ptrkepala); {pelaksanaan pemilihan proses } RELEASE(ptrawal_heap); {membebaskan heap yg digunakan u/ alokasi dynamic }END.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/12%20pointer.txt (4 of 4) [10/16/2008 8:26:04 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/13%20bilangan.txt

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) then10: Begin11: If bil1=bil2 then12: Begin13: Writeln('Bilangan Pertama dan Kedua Adalah Sama');14: If Bil1 < bil3 then15: Writeln('Bilangan Terbesar Adalah ',bil3:0:0)16: Else17: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)18: End19: Else If bil1=bil3 then20: Begin21: Writeln('Bilangan Pertama dan Ketiga Adalah Sama');22: If Bil1 < bil2 then23: Writeln('Bilangan Terbesar Adalah ',bil2:0:0)24: Else25: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)26: End27: Else If bil2=bil3 then28: Begin29: Writeln('Bilangan Kedua dan Ketiga AdalahSama');30: If Bil1 < bil3 then31: Writeln('Bilangan Terbesar Adalah ',bil3:0:0)32: Else33: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)34: End35: End36: Else If bil1 > bil2 then37: Begin38: If bil1 > bil3 then39: Writeln('Bilangan terbesar adalah ',bil1:0:0)40: Else41: Writeln('Bilangan terbesar adalah ',bil3:0:0);42: End43: Else If bil1 < bil2 then44: Begin45: If bil2 > bil3 then46: Writeln('Bilangan terbesar adalah ',bil2:0:0)47: Else48: 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...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/13%20bilangan.txt [10/16/2008 8:26:05 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/array.txt

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: begin10: for i:=1 to 3 do11: begin12: 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 do19: begin20: 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.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/array.txt [10/16/2008 8:26:05 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/bilangan.txt

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 samabesar ', bil1:0:0) 9: Else If (bil1=bil2) or (bil1=bil3) or (bil2=bil3)then10: Begin11: If bil1=bil2 then12: Begin13: Writeln('Bilangan Pertama dan Kedua AdalahSama');14: If Bil1 < bil3 then15: Writeln('Bilangan Terbesar Adalah ',bil3:0:0)16: Else17: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)18: End19: Else If bil1=bil3 then20: Begin21: Writeln('Bilangan Pertama dan Ketiga AdalahSama');22: If Bil1 < bil2 then23: Writeln('Bilangan Terbesar Adalah ',bil2:0:0)24: Else25: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)26: End27: Else If bil2=bil3 then28: Begin29: Writeln('Bilangan Kedua dan Ketiga AdalahSama');30: If Bil1 < bil3 then31: Writeln('Bilangan Terbesar Adalah ',bil3:0:0)32: Else33: Writeln('Bilangan Terbesar Adalah ',bil1:0:0)34: End35: End36: Else If bil1 > bil2 then37: Begin38: If bil1 > bil3 then39: Writeln('Bilangan terbesar adalah ',bil1:0:0)40: Else41: Writeln('Bilangan terbesar adalah ',bil3:0:0);42: End43: Else If bil1 < bil2 then44: Begin45: If bil2 > bil3 then46: Writeln('Bilangan terbesar adalah ',bil2:0:0)47: Else48: 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...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/bilangan.txt [10/16/2008 8:26:05 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/bintang.txt

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: Begin10: for j:=1 to x do11: Begin12: y:=y+1;13: write(y:4);14: if y mod x=0 then15: 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 ini cukup memeras otak lohh... Kalo bisa kirim hasilnya yach....

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/bintang.txt [10/16/2008 8:26:06 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/buat%20file.txt

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 filesudah 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 filewhile not eof(fText) dobegin 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...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/buat%20file.txt [10/16/2008 8:26:06 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/data_file.txt

PENGOLAHAAN DATA DENGAN MENGUNAKAN FILE---------------------------------------JENIS FILE :* FILE TEKS* FILE SEQUENTIAL* FILE BINARI

* Deklarasi file tekspenulisan =

TYPE pengenal = TEXT; {atau} VAR pengenal : TEXT;Penjelasan =pengenal = variabel file

* Deklarasi file sequentialpenulisan =

TYPE pengenal = FILE of tipe_data; {atau} VAR pengenal : FILE of tipe_data;Penjelasan =pengenal = variabel filetipe_data = jenis data yang digunakan

* Deklarasi file binarypenulisan =

TYPE pengenal = FILE; {atau} VAR pengenal : FILE;Penjelasan =

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/data_file.txt (1 of 2) [10/16/2008 8:26:07 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/data_file.txt

pengenal = variabel file

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/data_file.txt (2 of 2) [10/16/2008 8:26:07 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/ganjil_genap_prima.txt

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)) then10: write('bilangan prima')11: else write('bukan bilangan prima');12: if bil mod 2 = 0 then13: writeln(' dan genap')14: else15: 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

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/ganjil_genap_prima.txt [10/16/2008 8:26:07 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/luas-keliling.txt

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

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/luas-keliling.txt [10/16/2008 8:26:07 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/menu.txt

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: repeat15: 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 of28: 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.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/menu.txt [10/16/2008 8:26:07 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/Op_string.txt

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 deleteDijas KerenDijas KereDijas KerDijas KeDijas KDijas DijasDijaDijDiDYang ini insertSebelum di Insert : DijasKerenSetelah 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).

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/Op_string.txt [10/16/2008 8:26:08 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pengenalan.txt

Pada bagian ini gua cuman ngejelasin secara garis besar tentang pascal dan tips penulisan program. Kita mulai, ok?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: Begin5: 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. Pengenalannya cukup segini aja yach... :P

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pengenalan.txt [10/16/2008 8:26:08 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt

{ tutorial pascal / turbo pascal }{ 3th my tutorial for my friend }{ writen by : m3n_tu4r1 } { padang, 24 mei 2003 }

PROGRAM POINTER;USES CRT;TYPE Stringdata = STRING[20]; Ptrdata =^RECORDDATA; Recorddata = RECORD; Nama : STRINGNAMA; Jabatan : STRING [25]; Ptrkepala : PTRDATA; END;VAR Ptrawal_heap : ptrdata; Ptrkepala : ptrdata;

PROCEDURE BENTUK_DAFTAR (VAR ptrkepala : ptrdata);{ menyusun daftar berantai dengan variabel PTRKEPALA menunjuk data -}{ terakhir yang dimasukan melalui keyboard }VAR Ptrbaru : PTRDATA; Jawaban : CHAR;BEGIN REPEAT CLRSCR; NEW (ptrbaru); WRITE (‘ Nama pegawai : ‘); READLN (ptrbaru^.nama); WRITE (‘ Jabatan :’); READLN (ptrbaru^.jabatan); Ptrbaru^.lanjutan := ptrkepala; Ptrkepala := ptrbaru; WRITE (‘ Masukan data lagi (Y/T) ? : ‘); REPEAT Jawaban := UPCASE (READKEY) UNTIL jawaban IN [‘Y’,’T’]; WRITELN (jawaban); UNTIL jawaban =’T’;END;

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt (1 of 4) [10/16/2008 8:26:09 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt

PROCEDURE CETAK_DAFTAR ( ptrkepala:ptrdata);{ mencetak isi daftar berantai }VAR Ptrsementara:ptrdata;BEGIN CLRSCR; WRITELN (‘ ISI DAFTAR BERANTAI : ‘);WRITELN; WRITELN (‘-----------------------------------------------------------------------------‘); WRITELN (‘ N A M A ’:20,’J A B A T A N’:16); WRITELN (‘-----------------------------------------------------------------------------‘); Ptrsementara :=ptrkepala; {ptrsementara menunjuk pada lokasi yg sama dng ptrkepala} WHILE ptrsementara <> NIL Do WITH ptrsementara^DO BEGIN WRITELN (nama:20,jabatan:16); Ptrsementara := lanjutan; END; WRITELN (‘-----------------------------------------------------------------------------‘); WRITE (‘ tekan Return ‘); READLN;END;

PROCEDURE CARI DATA (ptrkepala:ptrdata;namadicari:stringnama; VAR ptrpraposisidata,ptrposisidata:ptrdata);

{untuk mencari data nama dicari pada daftar berantai, hasil }{- jika data ketemu, maka }{ 1. ptrposisidata menunjuk simpul dari data yang dicari }{ 2. ptrpraposisidata menunjuk simpul sebelum simpul data yang dicari }{ atau sama dengan NIL, jika ptrposisidata menunjuk yang juga ditun- }{ juk oleh ptrkepala }{- jika tidak diketemukan, maka ptrposisidata sama dengan NIL }

VAR Ketemu : BOOLEAN;BEGIN PTRPRAPOSISIDATA :=NIL; PTRPOSISIDATA :=ptrkepala; Ketemu := FALSE; WHILE (NOT ketemu AND (ptrposisidata <>NIL)) DO IF ptrposisidata^.nama <> namadicari THEN BEGIN

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt (2 of 4) [10/16/2008 8:26:09 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt

Ptrposisidata :=ptrposisidata; Ptrposisidata :=ptrposisidata^.lanjutan END ELSE Ketemu :=TRUE;END;

PROCEDURE HAPUSISIDAFTAR (VAR ptrkepala:ptrdata);{untuk menghapus sebuah simpul data daftar berantai}CONST String_kosong=’ ‘;VAR Namadicari : stringnama; Prtposisidata, Ptrpraposisidata : ptrdata;BEGIN CLRSCR; WRITELN (‘Masukan nama pegawai dari data yang akan dihapus:’); READLN (namadicari); IF namadicari = string_kosong THEN EXIT; Cari_data (ptrkepala, namadicari, ptrpraposisidata, ptrposisidata); IF ptrposisidata = NIL THEN BEGIN WRITELN (‘ data tak diketemukan, tekan enter untuk melanjutkan’); READLN; END; BEGIN { proses penghapusan } IF ptrpraposisidata = NIL THEN { simpul yang ditunjukan ptrkepala dihapus } ptrkepala :=ptrkepala^.lanjutan ELSE { bukan simpul yang ditunjuk ptrkepala dihapus } WRITELN (‘ Ok………data sudah dihapus. Tekan enter ‘); END;END; { akhir procedure hapusisidaftar }

PROCEDURE PROSESPILIHAN (VAR ptrkepala : ptrdata);{ digunakan untuk memilih proses ; memasukan data, menampilkan data }{ menghapus data }VAR Pilihan : CHAR;

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt (3 of 4) [10/16/2008 8:26:09 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt

BEGIN REPEAT CLRSCR; TEXTATTR :=$70; { video terbalik } GOTOXY(20,2); WRITE (‘ PILIHAN PROSES ‘); TEXTATTR :=$70; { video normal kembali } GOTOXY(20,4); WRITE (‘ [1] Memasukan / menambah data’); GOTOXY(20,5); WRITE (‘ [2] Menampilkan isi daftar berantai’); GOTOXY(20,6); WRITE (‘ [3] Menghapus data pada daftar berantai’); GOTOXY(20,7); WRITE (‘ [4] Selesai’); GOTOXY(20,8); WRITE (‘ --------------------------------------------------‘); GOTOXY(20,9); WRITE (‘ Masukan kode pilihan [1…4]’); REPEAT Pilihan := UPCASE (READKEY) UNTIL pilihan IN [‘1’..’4’]; WRITE (pilihan); CASE pilihan OF ‘1’ : bentuk_daftar(ptrkepala); ‘2’ : catak_daftar(ptrkepala); ‘3’ : hapusisidata(ptrkepala); END; UNTIL pilihan = ‘4’END;

BEGIN MARK(ptrawal_heap); {penandaan terhadap awalheap} Ptrkepala :=NIL ; {keadaan awal ptr kepala } Prosespilihan(ptrkepala); {pelaksanaan pemilihan proses } RELEASE(ptrawal_heap); {membebaskan heap yg digunakan u/ alokasi dynamic }END.

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/pointer.txt (4 of 4) [10/16/2008 8:26:09 PM]

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/xx.txt

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: begin10: write('Masukkan bilangan ke- ', i, ' : ');readln(a[i])11: end;12: for j:=2 to 4 do13: begin14: k:=a[j];15: i:=j-1;16: while (i>0) and (a[i]>k) do17: begin18: a[i+1]:=a[i];19: i:=i-1;20: end;21: a[i+1]:=k22: end;23: for i:=1 to 4 do24: 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. Itu tugas kalian loohh... Tangan gua pegel niihh...

file:///E|/MASTER/PDF/e-pascal/pascal-tutor2/xx.txt [10/16/2008 8:26:09 PM]