Professional Documents
Culture Documents
Praktikum AlgoritmadanPemrograman
LaboratoriumKomputerDasarIlmu Komputer
Universitas Gadjah Mada
Daftar Isi
MODUL I FREE PASCAL DAN PEMROGRAMAN PASCAL MODUL II TIPE DATA DALAM PEMROGRAMAN PASCAL MODUL III INPUT OUTPUT DI DALAM PASCAL MODUL IV STRUKTUR PERCABANGAN MODUL V STRUKTUR PERULANGAN MODUL VI PEMROGRAMAN MODULAR MODUL VII TIPE DATA TERSTRUKTUR MODUL VIII PENGURUTAN DATA
FREE PASCAL Pendahuluan Free Pascal adalah kompiler 32-bit untuk prosesor i386 dan m68k. Sampai saat ini, Free Pascal mendukung sistem operasi DOS, LINUX, AMIGA (hanya versi 0.99.5), WINDOWS, FREEBSD, NETBSD, dan NETWARE. Free Pascal didesain sedemikian rupa sehingga bisa mengenali kode program yang dibuat dengan menggunakan Turbo Pascal 7.0 dan Delphi 7. Akan tetapi, dibandingkan Turbo Pascal 7.0 dan Delphi 7, Free Pascal mempunyai kelebihan, yaitu bisa bejalan di sistem operasi yang bebeda. Untuk informasi yang lebih lengkap mengenai Free Pascal, anda bisa mengunjungi situs berikut ini: http://www.freepascal.org/ http://community.freepascal.org:10000/
IDE Free Pascal IDE (Integrated Development Environment) menyediakan user interface yang nyaman bagi pengguna Free Pascal. IDE mengandung editor, debugger, symbol browser, dan sebagainya. IDE Free Pascal dibuat mirip dengan IDE Turbo Pascal, hal ini ditujukan agar pengguna mudah menggunakannya. Untuk memulai IDE Free Pascal, Klik Start Menu | All Programs | Free Pascal | Free Pascal (Windows XP).
Di dalam IDE Free Pascal, ada beberapa menu yang akan sering digunakan selama praktikum berlangsung adalah: File | New
Menu ini digunakan untuk membuat program baru File | Open (F3)
Menu ini digunakan untuk membuka program yang sudah ada File | Save (F2)
Menu ini digunakan untuk menyimpan program ke direktori tertentu File | Change Dir
Menu ini digunakan untuk mengubah direktori kerja File | Exit (Alt + X)
Menu ini digunakan untuk keluar dari IDE Free Pascal Run | Run (Ctrl + F9)
Menu ini digunakan untuk meng-compile program, kemudian menjalankannya. Untuk lebih lengkapnya, anda bisa buka file C:\FPC\2.0.4\doc\user.pdf.
Merubah Direktori Kerja Secara default, direktori kerja Free Pascal adalah C:\FPC\2.0.4\bin\i386-win32\. Direktori kerja ini dapat diubah ke direktori lain dengan cara: Klik menu File | Change Dir Pada Directory Tree, Klik Dua Kali Dirves Kemudian pilih direktori kerja baru yang anda inginkan, misalnya D Anda juga bisa memilih sub direktori pada drive D sebagai direktori kerja
PEMROGRAMAN PASCAL Bentuk Umum Program Pascal Secara umum, struktur program Pascal adalah sebagai berikut: {judul program} [program nama_program;] {deklarasi} [uses deklarasi_penggunaan_unit;] [label deklarasi_label;] [const deklarasi_konstanta;] [type dekalrasi_tipe_data;] [var deklarasi_variabel;] [function deklarasi_fungsi;] [procedure deklarasi_prosedur;] {bagian_utama} begin [statemen;] end.
Merupakan bagian identifikasi nama program. Tujuannya untu mempermudah mengenali dan manajemen kode sumber. Deklarasi
Merupakan bagian deklarasi pengenal pengenal (identifier) yang digunakan dalam program. Deklarasi program bersifat opsional khusus, artinya jika diperlukan maka harus ada dalam program dan apabila tidak diperlukan maka boleh tidak dicantumkan. Deklarasi program
Bagian yang mutlak harus ada. Bagian ini merupakan bagian minimal yang harus ada dari suatu program Pascal, dimulai dengan begin dan diakhiri dengan end. (end diikuti dengan tanda titik).
Program Pertama Coba anda buat program baru dan simpan di dirive D. Kemudian anda ketik sintaks di bawah ini: program program_pertamaku; begin writeln('Halo Dunia'); readln; end;
Kalau sudah anda ketik, ada jalankan dengan klik menu Run | Run atau tekan tombol (Ctrl + F9) pada keyboard.
Catatan: Sebelum menjalankan suatu program, ada baiknya program tersebut disimpan terlebih dahulu
Apa itu tipe data? Apabila anda mendeklarasikan variabel pada Pascal, anda harus menentukan tipe datanya. Tipe data ini menentukan nilai yang dapat disimpan oleh variable tersebut dan operator operator yang dapat dikenakan padanya. Sebagai contoh, tipe data integer hanya dapat menyimpan bilangan bulat dari -32768 .. 32767, dan operator yang dapat dikenakan padanya antara lain operator penjumlahan, perkalian, pembagian, dan sebagainya.
TIPE DATA DALAM PEMROGRAMAN PASCAL Secara umum, tipe data dalam pemrograman Pascal adalah: Tipe data sederhana o Tipe data standard (standard data type)
--> Integer, Real, Boolean, Char, dan String o Tipe data didefinisikan pemakai (user defined data type)
--> subrange dan enumerasi Tipe data terstruktur --> Array, record, set, file Tipe data penunjuk --> Pointer
Tipe integer adalah tipe data yang nilainya bulat. Ada 5 macam tpe integer, yaitu: Tipe Shortint Integer Longint Byte Word Jangkauan Nilai (Range) -128 .. 127 -32768 .. 32767 -2147483648 .. 2147483647 0 .. 255 0 .. 65535 Format Signed 8 bit Signed 16 bit Signed 32 bit Unsigned 8 bit Unsigned 8 but
Contoh deklarasi: Var A, B, C : Integer; D, E, F : Longint; Operasi operasi yang bisa dikerjakan pada data bertipe integer adalah: Operasi merupakan operasi yang memerlukan dua buah operand. Adapunbiner macamnya adalah: Penjumlahan (+), Pengurangan (-), dan Perkalian (*) Pembagian (/) dengan hasil merupakan bilangan real Pembagian integer (div) yaitu operasi pemenggalan. Hal ini berarti bagian pecahan akan dihilangkan. Misal: 5 div 2, hasilnya adalah 2 Modulus (mod), merupakan operasi untuk menghasilkan sisa pembagian. Misal: 5 mod 2, hasilnya adalah 1. Operasi uner, merupakan operasi yang hanya memerlukan satu operans saja. Misal: -5, +24. Operasi bit per bit (Bitwise Operation), yang terdiri atas: Bitwise Negation, berguna untuk merubah nilai bit 1 menjadi bit 0 dan sebaliknya bilai bit 0 menjadi bit 1.
1 1 0 0
1 0 1 0
0 0 1 1
1 0 0 0
1 1 1 0
0 1 1 0
Shift Left (Shl), digunakan untuk menggeser sejumlah bit ke kiri dengan nilai 0. Misal Begin Write(6 shl 2); End. Hasil eksekusi program adalah 24 Penjelasan: nilai biner dari 6 adalah 0000000000000110 digeser 2 bit ke kiri menjadi 0000000000011000 = 24
Shift Right (shr), digunakan untuk menggeser sejumlah bit ke kana dengan nilai bit 0. Real
Real merupakan tipe bilangan pecahan. Bilangan real bisa dinyatakan dalam bentuk eksponensial. Ada 5 macam tipe real, yaitu: Tipe Jangkauan Nilai Digit Signifikan Ukuran
1,5 x 10-45 .. 3,4 x 1038 5.0 x 10-324 .. 1,7 x 10308 3,4 x 10-4932 .. 1,11 x 104932 -263 + 1 .. 263 - 1
Operasi operasi yang bisa dikerjakan oleh tipe data real adalah: Operasi biner, seperti penjumlahan (+), pengurangan (-), perkalian (*), dan pembagian (/) Operasi uner. Contoh: -4.25, +1.25 Boolean
Boolean adalah tipe data yang hanya mempunyai dua kemungkinan, yaitu true dan false. Biasanya tipe data ini digunakan untuk perbandingan. Var A, B, C : Boolean; Operator NOT, OR, AND, dan XOR dapat dibentuk secara bersamaan menjadi sebuah ungkapan Boolean yang rumit. Misal: Var A,B,C: Boolean; Begin C := false; B := true; A := (Not(C) AND Not (B)) XOR (C); Write(A); readln; End. Menurut anda, berapakah nilai A?
Char adalah semua tombol yang terdapat pada keyboard atau lebih lengkapnya semua karakter yang terdapat pada kode ASCII. Catatan : Apabila char ingin dijadikan sebagai konstanta maka karakter yang dimasukkan harus diapit dengan tanda kutip satu. Dan apabila karakter itu berupa tanda kutip satu maka harus diapit dengan dua tanda kutip satu Beberapa fungsi untuk memanipulasi tipe daa char: o Ord(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk memperoleh nilai urutan dalam kode ASCII yang digunakan untuk melambangkan karakter tersebut. Contoh: Ord('C') adalah 67. o Char(x) dengan x adalah data bertipe byte. Fungsi ini adalah kebalikan dari fungsi Ord. Nilai yang diperoleh merupakan karakter ASCII yang dinyatakan dengan urutan ke x. Contoh: Char(67) adalah 'C'. o Pred(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk mengetahui karakter yang mendahului x. Contoh: Pred('h') adalah 'g'. o Succ(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk mengetahui karakter sesudah x. Contoh: Succ('h') adalah 'i'. Jika x tidak mempunyai penerus, maka nilai fungsi ini tidak terdefinisikan. o Upcase(x) dengan x adalah data bertipe char. Jika x merupakan huruf kecil maka akan dikembalikan huruf kapitalnya. Contoh: upcase('a') adalah 'A'. String String adalah data yang berisi sederet karakter yang terletak diantara tanda kutip satu. Jika karakter kutip merupakan bagian dari konstanta string, maka ditulis dengan menggunakan dua buah tanda kutip satu berurutan. Nilai data string akan menempati memori sebesar maksimla jumlah karakter yang dapa ditampung ditambah denga 1 byte (index ke-0) untuk menyimpan panjang string yang sebenarnya. Jika panjang string tidak ditulis, maka panjang string dianggap 255 karakter. Panjang string yang diijinkan antara 1 sampai 255. Bentuk umum dari deklarasi tipe string adalah: Var pengenal : string[panjang]; dimana pengenal : nama variabel panjang : bilangan bulat yang menunjukkan banyaknya karakter (1 255).
Tipe data subrange adalah suatu range yang menunjukkan nilai terkecil dan nilai terbesar yang dapat dipergunakan. Deklarasi tipe data subrange mempunyai bentuk: Type pengenal = konstanta1 .. konstanta2; dimana: pengenal : nama tipe data yang dideklarasikan konstanta1 : batas bawah nilai data konstanta2 : batas atas nilai data Kedua konstanta di dalam subrange harus bertipe ordinal yang sama, di mana nilai konstanta pertama lebih kecil atau sama dengan nilai konstanta kedua. Tipe data real tidak dapat digunakan sebagai nilai subrange, karena buka tipe ordinal. Contoh: Type tanggal = 1 .. 31; bulan = 1 .. 12; Enumerated
Tipe data enumerated (skalar) menunjukkan kumpulan dari nilai yang urutannya sudah pasti. Nilai dari tipe yang dideklarasikan ini akan diwakili dengan pengenal pengenal (identifiers) yang akan menjadi nilai suatu konstanta. Contoh: Type bahasa = (delphi, java, c, pascal, basic); bulan = (maret, april, mei, juni, juli); Tipe data bulan mempunya 5 elemen dari maret sampai juli. Dari urutannya, maret adalah identifier berupa konstanta bernilai 0 dan juli bernilai 4. Yang perlu diperhatikan dengan tipe data skalar ini adalah tipe data ini sudah berbeda dengan tipe standar yang ada dan pascal tidak mengijinkan operasi dengan tipe data yamg berbeda. Derajat Operator Anda sudah mengenal beberapa tipe data di dalam Pascal dan operatornya. Di dalam Pascal, operator operator tersebut memiliki derajat atau tingakatan. Adapun kegunaan dari derajat ini adalah Pascal dapat menentukan operator mana yang akan di jalankan terlebih dahulu.
Berdasarkan dari urutan operator di atas, maka nilai x pada x := 4 + 5 * 3 adalah 19, karena operator * lebih dulu dikerjakan daripada operator +.
Akan tetapi, jika kita ingin agar operator + dikerjakan terlebih dahulu, kita bisa meletakkan operasi penjumlahan tersebut di dalam kurung, musalnya: x := (4 + 5) * 3. Di sini nilai x itu adalah 27, karena di dalam Pascal operasi yang di dalam kurung akan dilakukan terlebih dahulu, tidak dipengaruhi oleh derajat operator.
Latihan:
1. Buatlah program untuk mengalikan dua buah bilangan! 2. Buatlah program untuk menghitung luas lingkaran!
Write dan Writeln Perintah ini digunakan untuk mencetak kata-kata atau variable ke layer kompuer. Sebagai contoh untuk mencetak kata Sedang Belajar Pascal, perintah yang diberikan adalah: Write(Sedang Belajar Pascal); atau Writeln(Sedang Belajar Pascal); Jika menggunakan write, setelah mencetak kata kata atau variable, kursor akan diletakkan di samping hasil cetakan. Jka menggunakan perintah writeln, setelah mencetak kata kata atau variable, kursor akan dipindahkan ke bawah satu baris dengan posisi horizontal pada awal baris. Untuk mencetak suatu variable, tidak perlu tanda petik satu. Contoh:
Dengan menggunakan write atau writeln, kita bisa menampilkan kata kata dan variable dengan tanda koma (,) sebagai pemisah antara variable dan kata - kata, Contoh:
Terkadang kita menemukan prosedur write atau writeln yang ditulis seperti ini, writeln(Asyik: Jika ditulis seperti ini, maka akan menghasilkan space yang10) disediakan untuk menuliskan kata asyik di layar monitor adalah 10 karakter, mulai dari kiri ke kanan. Coba tuliskan program berikut ini:
Perhatikan apa yang terjadi pada penggalan program di atas! Selain itu, dengan menggunakan write atau writeln, kita dapat mengatur berapa banyak angka di belakang koma yang akan ditampilkan di layar monitor jika kita ingin menampikan bilangan real, caranya adalah dengan menuliskan seperti program di bawah ini
Read dan Readln Read atau readln digunakan untuk menerima masukan dari user untuk disimpan ke dalam suatu variable. Contoh:
Catatan: Terkadang kita menggunakan fungsi readln pada satu baris sebelum kata end.. Hal ini dimaksudkan agar suatu program tidak akan langsung terminate (berhenti) tanpa menunggu suatu masukan dari user. Adapun masukan tersebut berupa penekanan tombol enter pada keyboard.
Komentar Komentar adalah bagian dari program yang tidak akan diproses oleh compiler (Free Pascal). Komentar hanya digunakan untuk dokumentasi saja. Cara pemberian komentar adalah dengan menambahkan // untuk 1 baris atau {} untuk lebih dari 1 baris. Contoh pemberian komentar:
Program Komentar; Begin //Ini Adalah Komentar (Pernyataan pernyataan ini Tidak kan Diproses} End.
Unit Di dalam Pascal, ada bagian yang disebut sebagai unit. Unit ini menyimpan fungsi dan prosedur standard yang sudah didefinisikan oleh pembuat compiler. Beberapa unit standard yang ada dalam Pascal adalah Crt, System, Graph, Dos, Printer, dan Overlay. Cara penggunaan unit adalah dengan menambahkan statemen: Uses nama_unit; pada bagian Deklarasi.
Beberapa fungsi dan prosedur yang ada dalam unit Crt: Clrscr Clrscr adalah suatu prosedur untuk membersihkan layer. Contoh:
Uses crt; Var A : Char; Begin Write(Tekan karakter apa saja di dalam keyboard); A := Readkey; Writeln(Karakter yang barusan anda tekan adalah: , A); Readln; End.
TextBackground TextBackground merupakan prosedur untuk mengganti warna background tulitan yang ditampilhan di layer dengan warna yang kita inginkan. Perintah yang digunakan adalah: Textbackground(warna);
Warna merupakan variable yang bias diganti dengan nama warna atau nilai warna tersebut:
Warna
Konstanta
Nilai
Warna
Konstanta
Nilai
Hitam
Black
Coklat Tua
Dark Brown
Biru
Blue
Biru Muda
Light Blue
Hijau
Green
Hijau Muda
Light Green
10
Cyan (Biru
Cyan
Cyan Muda
Light Cyan
11
Magenta
Magenta
Magenta Muda
13
Coklat
Brown
Kuning
14
Coklat Muda
Light Gray
Putih
White
15
Contoh: Uses Crt; Begin Textbackground(Red); Writeln(Laboratorium Komputasi FMIPA UGM); Readln; End.
Textcolor Textcolor merupakan prosedur yang digunakan untuk mewarnai tulisan. Perintahnya adalah: Textcolor(warna);
Cara pengisian warna sama dengan Textbackground. Contoh: Uses crt; Begin Textbackground(Red); Textcolor(Blue); Writeln(Laboratorium Komputasi FMIPA UGM);
Beberapa fungsi dan prosedur untuk operasi Aritmatika: Sqr(Value) fungsi ini digunakan untuk menghasilkan nilai perpangkatan Sqrt(Value) fungsi ini digunakan untuk menghasilkan nilai akar pangkat dua Abs(Value) untuk menghasilkan nilai mutlak Ln(Value) untuk mencari nilai logaritma natural Exp(Value) untuk mencari nilai eksponennya Trunc(Value) untuk memotong nilai real ke suatu nilai integer Round(Value) untuk membulatkan nilai real ke nilai integer yang terdekat
Latihan:
1. Buatlah sebuah program untuk menjumlahkan dua buah bilangan bulat, a dan b. Program
menerima masukan dari user.
2. Buatlah sebuah program untuk mengalikan dua buah bilangan bulat, a dan b. Program
menerima masukan dari user.
Struktur percabangan atau sering disebut dengan struktur kontrol ini memungkinkan programmer untuk membuat program yang dapat memilih satu langkah di antara sejumlah langkah untuk dikerjakan. Dalam Pascal disediakan 2 buah struktur kontrol seleksi, yaitu:
1. Struktur IFTHEN..
Merupakan struktur kontrol di mana suatu aksi dilaksanakan berdasarkan kondisi logikanya (benar atau salah). Struktur if .. then sendiri memiliki 4 jenis, yaitu: Bentuk 1 if (kondisi) then aksi; {Jika kondisi benar maka aksi akan dilaksanakan dan sebaliknya } Bentuk 2 if (kondisi) then aksi1 else aksi2 ; {Jika kodisi benar maka aksi1 diaksanakan, jika kondisi salah maka aksi2 akan dilaksanakan} Bentuk 3 if (kondisi1) then aksi1 else if (kondisi2) then aksi2 else ..
.
if (kondisi-n) then aksi-n ; {Masing-masing kondisi akan dibaca dan aksi akan tetap dilaksanakan. Jadi masingmasing struktur terpisah satu dengan yang lain}
Contoh program 1: Program menghitung akar kwadrat uses crt; var A,B,C:integer; x1,x2,D:real; begin clrscr; write('Baca koofisien:');readln(A,B,C);writeln; writeln(A,'x*x + (',B,') x +',C); if A=0 then writeln('Bukan persamaan kwadrat') else begin D:=(B*B) - (4*A*C); writeln('Determinannya :',D:2:2);readln; if D>0 then begin writeln('Persamaan kwadrat mempunyai 2 akar yang berbeda'); x1:= (-B + sqrt(D))/(2*A); x2:= (-B - sqrt(D))/(2*A); writeln('Akar-akarnya adalah:',x1:2:2,'dan',x2:2:2); end else if D=0 then begin
Contoh Program 2: Program Konversi nilai Uses Crt; var Nilai : Byte; begin clrscr; write('Baca nilai :');readln(Nilai); if nilai>=80 then write('Nilai = A') else if nilai>=65 then write('Nilai = B') else if nilai>=41 then write('Nilai = C') else if nilai>=26 then write('Nilai = D') else write('Nilai = E'); readln; end.
Catatan: Jika anda menggunakan else, perlu diinga bahwa satu baris sebelum else tidak diperkenankan mengandung tanda ;
2. Struktur CASEOF
Merupakan peluasan dari struktur IF. Karena kalau dalam struktur IF hanya disediakan dua pilihan (berdasarkan kondisi logikanya) maka dalam struktur Case ..of dimungkinkan untuk memilih satu pilihan di antara banyak pilihan yang ada. Bentuk umumnya : Case var_pilih of
. ;
pilih-n : aksi n; else aksi-n+1 end;
Catatan : Ekspresi yang digunakan dalam statemen Case adalah yang mempunyai tipe ordinal yaitu dengan batas antara (-32768 s/d 32767). Sehingga tipe lain seperti integer yang bertipe longint, tipe string atau real tidak boleh digunakan.
Contoh program 3: Program Konversi nilai 2 Uses Crt; Var Nilai : integer; begin Clrscr; write('Baca nilai =');readln(Nilai); Case Nilai of 0..25 : writeln('Nilainya = E'); 26..39 : writeln('Nilainya = D'); 40..64 : writeln('Nilainya = C'); 65..79 : writeln('Nilainya = B'); 80..100: writeln('Nilainya = A');
Catatan : Program ini akan memberikan nilai yang sama persis dengan yang menggunakan struktur IF.
Latihan
1. Buatlah program untuk menentukan suatu bilangan yang dimasukkan oleh user, merupakan
bilangan genap atau ganjil
2. Buatlah sebuah program untuk menentukan bilangan tahun yang dimasukkan oleh user
merupakan bikangan tahun kabisat atau bukan
3. Buatlah sebuah program yang akan meneriman masukan bilangan bulat dari user. Jika
bilangan yang dimasukkan 0, maka program akan menampilkan string Minggu; jika user memasukkan bilangan 1, maka program akan menampilkan string Senin; dan seterusnya sampai Sabtu; jika user memasukkan bilangan lebih dari 6, maka akan keluar string Hari tidak valid.
Perulangan Dalam membuat suatu program kadang-kadang diinginkan agar program tersebut mampu memproses hal yang sama secara berulang-ulang sampai ditemukan suatu nilai tertentu yang diinginkan atau mencapai batas yang telah ditentukan. Untuk itu maka Turbo Pascal telah menyediakan suatu struktur perulangan yang memudahkan untuk melakukan proses tersebut, sehingga kode-kode dalam program menjadi lebih sederhana. Ada beberapa struktur perulangan, yaitu : o o o Struktur FOR.DO. Struktur WHILEDO Struktur REPEATUNTIL.
a) Struktur FOR Ada 2 jenis struktur FOR, yaitu : Ascendant (Naik) dan Descendant (Turun) Naik Format : For count := awal to akhir do aksi/ blok aksi ; Catatan : Nilai awal <= nilai akhir Variabel count akan naik satu setelah menyelesaikan aksi
Turun
Struktur FOR hanya dapat digunakan pada cacah perulangan yang diketahui (berapa kali perulangan tersebut akan dilakukan). Contoh program : Program Latihan1: uses Crt; var N,i :integer;
begin clrscr; write('Baca nilai : ');readln(N); for i:= 1 to N do write(i:3); readln; end. Hasil Run Program : Baca nilai : 7 1234567
begin clrscr; write('Baca nilai : ');readln(N); for i:= N down to 1 do write(i:3); readln; end.
b) Struktur WHILE .. DO.. Format : While (kondisi) do Aksi/blok aksi Kondisi: Ekspresi Boolean
Di dalam struktur while do pengecekan untuk melakukan perulangan dilakukan pada awal proses dan perulangan akan dikerjakan selama kondisi benar. Oleh karena itu, perlu adanya suatu proses yang dapat mengontrol kondisi agar dapat menghentikan proses.
Contoh program : Program Latihan3; uses crt; var i:integer; begin clrscr; write('Masukkan angka :');readln(i); while i<5 do begin write('Matematika UGM');
Hasil Run program : Masukkan angka :1 Matematika UGMMatematika UGMMatematika UGMMatematika UGMMatematika UGM
Keterangan : Program di atas akan dilaksanakan jika angka yang kita masukkan kurang dari atau sama dengan lima. Dan dalam program di atas yang bertugas menghentikan perulangan adalah proses i:= i+1; sebab jika tidak ada statement itu, apabila angka yang kita masukkan benar <= 5 maka program akan berulang sampai tak hingga banyak.
Catatan : Struktur perulangan while..do dapat digunakan untuk melakukan perulangan baik yang diketahui maupun yang tidak diketahui jumlah perulangannya.
c) Struktur REPEAT..UNTIL.. Format : Repeat aksi/ blok aksi until (kondisi) ; (kondisi) di sini berupa Boolean.
Perulangan dilakukan terus-menerus hingga diperoleh kondisi bernilai benar. Dalam hal inipun diperlukan adanya kondisi yang dapat mengontrol program agar program dapat berhenti namun berbeda dengan while do yang kontrolnya ditempatkan pada awal proses, maka repeat until kontrolnya diletakkan pada akhir proses. Contoh program : PROGRAM Latihan4; Uses crt; var n,tot,x: integer;
Hasil Run Program : Baca data :12 Data lagi :3 Data lagi :4 Data lagi :5 Data lagi :0
Perulangah Berkalang Perulangan berkalang terjadi apabila di dalam struktur perulangan, ada perulangan lagi. Perhatikan contoh program di bawah ini Program Latihan5: uses Crt; var N,i,j :integer;
begin clrscr; write('Baca nilai : ');readln(N); for i:= 1 to N do begin for j:=1 to i do
Pada program Latihan5 di atas, perulangan: for j:=1 to i do, ada di dalam perulangan for i:= 1 to N do, sehingga perulangan for j:=1 to i do akan dilakukan sebanyaj N, sedangkan perulangan itu sendiri melakukan aksi untuk menampilkan nilai I sebanyak i.
2. Gunakan perulangan repeat until . Untuk soal nomor 1 3. Buatlah sebuah program untuk menampilkan table penjumlahan n x n, dimana n diinputkan
oleh user. Misal, untuk n = 3, maka keluarannya adalah sebagai berikut: +123 1234 2345 3456
Pemrograman modular merupakan salah satu kemudahan yang diberikan oleh bahasa pemrograman Pascal terhadap programmer, karena di sini programmer dapat membagi program yang sedang dibuatnya ke dalam modul-modul program tertentu. Sehingga dapat menghindari penulisan teks program yang sama berkali-kali dan dapat juga memudahkan dalam melakukan pelacakan kesalahan dalam program yang sedang dibuatnya. Ada 2 jenis pemograman modular yang dibahas dalam praktikum ini, yaitu : PROCEDURE (Prosedur) FUNCTION (Fungsi)
Pemanggilan Procedure :
Variabel Global adalah variabel yang dapat dikenali diseluruh bagian program biasanya variabel ini merupakan variabel yang dideklarasikan pada deklarasi program umum. Variabel Lokal adalah variabel yang dikenal pada lingkup yang lebih sempit dari pada variabel global. Parameter
Ada 2 paramete yang berlaku dalam sebuah procedure, yaitu : Parameter Aktual Yaitu parameter yang dideklarsikan mengikuti pendeklarasian program utama Paramete Formal Yaitu parameter yang dituliskan mengikuti pemanggilan procedure
Aturan antara parameter formal dan parameter aktual : Banyaknya parameter aktual harus sama dengan banyaknya parameter formal Tiap-tiap parameter aktual harus bertipe sama dengan parameter formal yang bersesuaian Tiap-tiap parameter aktual harus diekspresikan yang sesuai dengan parameter formal
Pengiriman parameter : o Pengiriman parameter secara nilai (by Value) Tiap-tiap parameter dalam prosecure utama akan beisi nilai yang dikirim oleh parameter aktual dan bersifat lokal diprocedure
Keterangan : Misalkan dimasukkan nilai dari X=5, Y=7 dan Z=15 maka nilai ini akan dikirim ke parameter formal pada procedure yaitu A,B,C sehingga nilai awal A=5, B=7 dan Z=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=5 , Y=7 dan Z=15. Sebab apapun yang diproses pada procedure tidak akan mempengaruhi nilai dari parameter aktual X,Y,Z.
Pengiriman parameter secara acuan (by Reference) Merupakan pengiriman dua arah yaitu dari parameter aktual ke parameter formal dan dari parameter formal ke parameter aktual sebagai hasil output dari procedure
Contoh : Procedure Hitung(Var A,B,C : integer) ; Begin B: = A; C: = A + B ; Writeln(A,B,C) ; End; Var X,Y,Z : integer ; Begin Readln(X) ; Readln(Y) ; Readln(Z); Hitung(X,Y,Z) ; Writeln(X,Y,Z) ; Readln ; End.
Keterangan : Misalkan dimasukkan nilai dari X=5, Y=8 dan Z=15 maka nilai ini akan dikirim ke parameter formal pada procedure yaitu A,B,C sehingga nilai awal A=5, B=8 dan C=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=A=5 , Y=B=A=5 dan Z=C=10. Sebab apapun yang diproses pada procedure akan mempengaruhi nilai dari parameter aktual X,Y,Z.
Contoh program yang menggunakan procedure : Program KOMBINASI; uses crt; var f1,f2,f3:longint; n,r,delta:integer;
Procedure facto( n:integer; var f:longint); var i:integer; begin f:=1; for i:=1 to n do f:= f * i; end;
{======================PROGRAM UTAMA=======================} Begin clrscr; gotoxy(12,3); write('Kita akan menghitung nilai kombinasi dari suatu angka'); gotoxy(19,4); writeln('Yang mempunyai rumus : rCn = n!/(r!(n-r)!)'); gotoxy(20,5); writeln('Nilai r harus lebih kecil/sama dengan n'); writeln;gotoxy(28,6); write('Masukkan nilai n :',' ');readln(n); writeln;gotoxy(28,8); write('Masukkan nilai r :',' ');readln(r); facto(n,f1); facto(r,f2); delta:=(n-r); facto(delta,f3); c:= f1/(f2*f3);gotoxy(30,10); write('Hasilnya :',' ',c:2:0); readln;
Hasilnya : 15
FUNCTION Deklarasi : Function NamaFungsi(NamaParameter) : TipeData ; {Deklarasi} Begin ........... ........... End ;
Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga Tipe data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah fungsi. Suatu fungsi dapat dipanggil dengan menggunakan beberapa cara, misalkan : Nama Fungsinya adalah Rata, maka ia akan dapat dipanggil dengan menggunakan
Rata2 : = Rata(vector,Ukuran) ; X : = Y + Rata(vector,Ukuran) ; Write(Nilai rata-ratanya = , rata(vector,ukuran)); Perbedaan prinsip antara procedure dengan function :
Catatan : Untuk keterangan yang lain yang meliputi macam variabel, parameter, aturan antar parameter dan cara pengiriman parameter sama dengan yang ada pada procedure, sehingga tidak perlu dituliskan lagi.
Contoh Program yang menggunakan fungsi : PROGRAM FAKTORIAL; Uses crt; Var i,N,Hsl:integer;
Function Fakto(N:integer):integer; Var Fak: integer; Begin Fak:= 1; for i:=1 to N do Fak := Fak * i; Fakto:= Fak; end; Begin clrscr; write('Faktorial berapa yang anda ingin hitung : '); readln(N); writeln('Hasil perhitungan : ',Fakto(N)); readln; end.
Hasil Run Program : Faktorial berapa yang anda ingin hitung : 5 Hasil perhitungan : 120
Dari program diatas maka notasi Fakto(N-1) yang digunakan untuk memanggil program sebelumnya dinamakan sebagai Pemanggil atau rekursi.
Latihan
ARRAY Array atau larik terdiri atas bagian-bagian komponen yang memiliki tipe data sama. Dalam penyimpanannya array selalu mempunyai jumlah komponen yang tetap yang ditunjukkan oleh indeksnya. Dimana indeks ini harus merupada data dengan tipe ordinal artinya mempunyai urutan tertentu. Ada 2 cara untuk mendeklarasikan larik yaitu :
Mengakses Data larik : Cara mengakses data larik adalah dengan menunjukkan : Nama_Larik[no.indeks] ; Misal : x[1] berarti kita mengakses data larik x pada no.indeks ke-1.
Kelemahan : Saat ditentukan suatu variable bertipe data array maka ia akan langsung mengambil tempat pada memory penyimpanannya sesuai dengan tipe data yang digunakan pada array, baik nantinya semua komponen pada array itu digunakan ataupun tidak.
Contoh program :
Program Rata_rata; Uses crt; type larik = array[1..10] of integer; var x : larik; Tot, i, n : integer; mean : real; Begin clrscr; write('Masukkan jumlah data : '); readln(n); writeln; Tot := 0; for i:= 1 to n do begin write('Masukkan Data ke-',i,' ', 'Anda : '); readln(x[i]); Tot:= Tot + x[i]; end; writeln;
Hasil Run Program : Masukkan jumlah data : 5 Masukkan Data ke-1 Anda : 1 Masukkan Data ke-2 Anda : 2 Masukkan Data ke-3 Anda : 3 Masukkan Data ke-4 Anda : 4 Masukkan Data ke-5 Anda : 5 Dan hasil perhitungan meannya : 3.00
MATRIKS Dalam pemrograman kadang kita menghadapi masalah saat kita akan mendeklarasikan suatu matriks dengan adanya tipe data array maka masalah itu dapat diselesaikan, yaitu dengan menggunakan array dengan dimensi dua atau lebih yang kemudian dikenal dengan array dimensi banyak. Pendeklarasian : Type Nama_Array = Array[tipe-indeks1,tipe-indeks2] of tipe data ;
Program Baca_tulis_matriks ; uses crt; Var m,n,i,j : integer; x: Array[1..100,1..100] of integer; begin clrscr; write('Baca ukuran baris Matriks :',' ');readln(m); write('Baca ukuran kolom matriks :',' ');readln(n); writeln('Matriks anda berukuran',' ',m,'x',n,' '); for i:=1 to m do for j:=1 to n do begin write('Baca nilai :',' ');readln(x[i,j]); end; writeln; writeln('Matriksnya :',' '); for i:=1 to m do begin for j:=1 to n do write(x[i,j]:3); writeln; end;
Baca ukuran baris Matriks : 2 Baca ukuran kolom matriks : 2 Matriks anda berukuran 2x2 Baca nilai : 1 Baca nilai : 2 Baca nilai : 3 Baca nilai : 4 Matriksnya : 12 34 Matriks tranposenya : 13 24 Matriks anda berukuran 2x2
STRING
Perhatikan apa keluaran dari Program Array_String di atas! Beberapa prosedur dan fungsi untuk tipe data string: Val (String, Var1, Var2); digunakan untuk merubah teks (string) menjadi nilai angkanya. Str(Value, Teks); digunakan untuk merubah nilai numeric menjadi string Upcase(Param): Char; merupakan fungsi yang digunakan untuk merubah satu huruf menjadi huruf capital. Length(Param): integer; merupakan fungsi untuk mengembalikan panjang teks Insert(String, var1, indeks); merupakan procedure untuk menyisipkan suatu string ke string lain, dengan catatan panjang string hasil harus kurang dari 256. Jika tidak, maka mulai dari indeks 256 dan seterusnya tidak akan ditampilkan. Concat (String1, String2, ): String; merupakan fungsi untuk menggabungkan beberapa strng. Copy(String, Index, Count): String; merupakan untuk menyalin beberapa karakter dari suatu string ke string lain mulai dari indeks tertentu.
Latihan
Type Nama_record = record Field1: tipe data1; Field2: tipe data2; Fieldn: tipe datan; End ; Contoh : Type TipeBarang = record Nama : string[20]; Jenis : string [20]; Jumlah : integer; End ; Var Barang : TipeBarang;
Sebagai Variabel
Var Nama_record : record Field1: tipe data1; Field2: tipe data2; Fieldn: tipe datan; End ; Contoh : Var Barang : record Nama : string[20]; Jenis : string [20]; Jumlah : integer; End ;
Memasukkan data ke dalam record : Untuk memberikan nilai dari masing-masing field maka kita harus menuliskan Nama_record.field := (nilainya); Misalkan : dari contoh diatas kita akan mengisikan nama barang dengan Piring, jenis barang yaitu barang pecah belah dan jumlah barang 3 lusin maka kita harus menuliskan pada program utama
atau
With Barang do begin Nama := Piring; Jenis := Pecah Belah; jumlah:= 36; end;
Menampilkan data dalam record: Untuk menampilkan data dari suatu record pada layer monitor, maka kita harus menuliskan: Writeln(Nama_record.field); Contoh
Ada kalanya jumlah record lebih dari satu sehingga kita perlu mendeklarasikan array of record. Perhatikan dan coba conoh program di bawah ini:
Contoh program :
PROGRAM DATABASE; Uses crt; TYPE mahasiswa = record nama: string; nim: string; alamat: string; ipk: real; end; mahasiswa1 = array [1..20] of mahasiswa;
PROCEDURE data(var mhs:mahasiswa1; mhs1: mahasiswa); Var i,n,no:integer; pilih,tekan:char; Begin write('Masukan jumlah mahasiswa : ');readln(n); writeln; for i:= 1 to n do begin writeln('Masukan data mahasiswa ke - ',i);writeln; write('Nama Mahasiswa : ');readln(mhs[i].nama); write('No. Mahasiswa : ');readln(mhs[i].nim); write('Alamat Mahasiswa : ');readln(mhs[i].alamat); write('IPK : ');readln(mhs[i].ipk);writeln; end; writeln; writeln('DATA MAHASISWA');writeln; writeln('==========================================================');
Latihan
1. Suatu data mahasiswa terdiri dari Nama, Alamat, Program Studi, dan Orang Tua. Coba
buatlah sebuah tipe data record yang mengimplementasikan data di atas. Kemudian buat juga sebuha array (1 sampai 10) yang bertipe record tersebut. Selanjutnya buatlah sebuah program untuk mengisi data, menyisipkan data, menghapus data, dan menampilkannya kembali.
SET
Operasi terhadap SET: Union (+). Contoh [1,2,3,4] + [3,4,5,6] = [1,2,3,4,5,6] Interseksi (*). Contoh [1,2,3,4] * [3,4,5,6] = [3,4] Differece (-). Contoh: [1,2,3,4] [3,4,5,6] = [1,2] Relasional
Ada beberapa operasi relasional yang bisa dikenakan pada tipe data set, yaitu: = : Tes kesamaan dua himpunan <> : Tes untuk ketidaksamaan dua himpunan
Latihan
1. Buatlah sebuah program untuk menghitung jumlah vokal di dalam suatu kata atau kalimat
yang diinputkan oleh user!
Pengurutan atau shorting merupakan proses untuk menyusun kembali kumpulan entri-entri yang telah dimasukkan dengan suatu aturan tertentu. Secara umum ada 2 macam pengurutan yaitu pengurutan secara menaik (ascenden) dan pengurutan secara menurun (descenden). Metode-metode pengurutan data :
METODE SELEKSI (SELECTION SORT) Masukkan dinyatakan sebagai vector misal vector A (belum terurut), dan N (missal banyak
elemen yang akan diurutkan). Keluaran adalah vector A yang telah terurut. Algoritma metode seleksi : langkah 0 : Baca vector yang akan diurutkan (dalam program utama) langkah 1 : Kerjakan langkah 2 sampai 4 untuk i = 1 sampai N -1 langkah 2 : Tentukan awal = i , kerjakan langkah 3 untuk j = i +1 sampai N langkah 3 : (Mencari data terkecil) Tes : apakah A[awal] > A[j], jika ya maka ubah awal = j langkah 4 : Tukarkan nilai A[awal] dengan A[i] langkah 5 : selesai
Contoh Program :
PROCEDURE SelectionSort(var X : ArrInt; N : integer); var i,j : integer; begin for i:=1 to N-1 do for j := i+1 to N do if x[i] > x[j] then Tukar(x[i],x[j]); end;
BEGIN clrscr; Writeln('Masukkan data anda !');writeln; Write('Berapakah frekuensi data anda ? ');readln(n); writeln('Silakan masukkan data yang Anda punya !'); for i:=1 to n do begin Write('Data ke-',i,' = ');readln(data[i]); end; SelectionSort(data,n); for i:=1 to n do write('(',data[i]:4:2,'),'); readln; end. Hasil Run Progam : Masukkan data anda !
METODE GELEMBUNG (BUBLE SORT) Disebut juga dengan metode Penukaran (Exchange Sort), yaitu metoda yang mendasarkan
pada penukaran elemen untuk mencapai keadaan urut yang diinginkan. Algoritma Metode gelembung : langkah 0 : Baca vector yang akan diurutkan (dalam program utama) langkah 1 : Kerjakan langkah 2 untuk i = 1 sampai N-1 langkah 2 : Kerjakan langkah 3 untuk j = 1 sampai N- i langkah 3 : Tes apakah A[j] > A[j +1] ? Jika ya, tukarkan nilai kedua elemen ini langkah 4 : Selesai
Contoh Program :
PROGRAM STATISTIK; Uses Crt; TYPE ArrInt = array [1..100] of integer; PROCEDURE Tukar(var a,b : integer); var Bantu : integer; begin Bantu := a; a := b; b := Bantu; end;
Var Data: ArrInt ; i, j, n: integer ; Begin clrscr; writeln('Masukkan data anda !');writeln; write('Berapakah frekuensi data anda ? ');readln(n); writeln('Silakan masukkan data Anda !'); for i:=1 to n do begin Write('Data ke-',i,' = ');readln(data[i]); end; BubleSort(data,n); write('Hasil Pengurutan data dengan BubleSort : '); for i:=1 to n do write(data[i]:3); readln; end. Hasil Run Program : Masukkan data anda !
Berapakah frekuensi data anda ? 5 Silakan masukkan data Anda ! Data ke-1 = 0 Data ke-2 = -1 Data ke-3 = 2 Data ke-4 = -10 Data ke-5 = 30
Latihan:
1. Buatlah sebuah program untuk mencari kuartil 1, kuartil 2, dan kuartil 3 dari deret data
berikut ini: 24217357