CONTOH PROGRAM (pascal bag:VIII)

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.…

About these ads

24 Tanggapan

  1. mksih bnget..

  2. rung pati mudeng boss, nuwun

  3. Thx. Blajar pascal jd makin seru!

  4. thanks u/contoh2x….kalo bisa tuliskan juga dongggg contoh2 listing pascal lanjutan…..

  5. trimakasihhh gann!!
    ijin copas yakk??

  6. wuiiiiiiih,, thx pisan ye atas smua rumus program pascal’a..
    jujur, wlwpun udh d’ajarin, tapi msih tetep aja kga ngarti…
    yaaaaaaaaaaaaaa wlwpun ini smua’a ada rumus’a aq jga ga ngerti mksd’a apa.. hehehee…
    tapi yg jelas thx pisan c dah bntu tugas aq bwt bikin segitiga pascal …
    lop u pull laaaaah.. hahahaha

  7. ngga ngerti … pusing

  8. ada program untuk menentukan pemenang pertandinga sepak bola gk, n jumlah pesertanya tak terbatas.thk…..

  9. Lumayan jg lah !
    Cntoh” soalny hmpir sm kyk yg dplajarin d kmpz .
    Itu kn prnyataan programny ya ?
    Trz outputny bgtu di-run apaan ?
    Ksh tw donx !

  10. THX YAHHHH………………….

  11. iya thanks kode pascalnya
    tapi saya lagi nyari software turbo pascal bs dapat di mana ya??
    bs kasih link nya ke email saya ga??
    mhon bntuannya

  12. Mantap… makasih ya… saya coba dulu

  13. Cara buat piramid gmana?

  14. wkwkwk thanks ya temang . . semoga programnya jalan.

  15. mintak donk 200 baris program nya

  16. makasi broo ijin copas..

  17. Terima kasih, semoga bermanfaat untuk semuanya. amiiiin…..

  18. Boleh Mnt Program Mencari Jarak Terpendek,,,,,,,,,,,,,,,,,,,,,,,????

  19. tolong buat contoh program penggajian..
    thx

  20. knapa g ada kluaranx mas….

  21. Makasih banyak ilmunya

Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.

%d blogger menyukai ini: