83
1 MODUL ALGORITMA DAN PEMROGRAMAN 2 TEKNIK INFORMATIKA FAKULTAS TEKNIK PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS MUHAMMADIYAH SORONG (UMS) 2015

Modul Praktikum Algol Dan Pemrograman 2

Embed Size (px)

DESCRIPTION

computing

Citation preview

  • 1MODULALGORITMA DAN PEMROGRAMAN 2

    TEKNIK INFORMATIKA

    FAKULTAS TEKNIKPROGRAM STUDI TEKNIK INFORMATIKA

    UNIVERSITAS MUHAMMADIYAH SORONG (UMS)2015

  • 2BAHAN AJARMATA KULIAH PEMROGRAMAN

    Tinjauan Mata Kuliah1.1. Deskripsi Mata Kuliah

    Algoritma dan Pemrograman II data merupakan matakuliah yangmempelajari bagaimana membuat program modular. Matakuliahpraktikum dengan menggunakan bahasa pemrograman Pascal inimempelajari materi array, prosedur, fungsi, record, sorting, searching danfile.1.2. Kegunaan Mata Kuliah

    Algoritma dan Pemrograman II data memberikan manfaat kepadamahasiswa untuk dapat memahami lebih lanjut tentang pemrogramanModular. Dengan menggunakan bahasa pemrograman Pasal ini,mahasiswa bisa membuat program untuk memecahkan berbagai macampersoalan dalam kehidupan sehari-hari.1.3. Tujuan Instruksional Umum

    Setelah menyelesaikan mata kuliah ini, mahasiswa diharapkanmampu membuat program terstruktur yang kompleks.1.4. Susunan Bahan Ajar

    Bab I Array (Halaman. 5)Bab II Prosedur (Halaman. 21)Bab III Fungsi (Halaman. 28)Bab IV Record (Halaman. 34)Bab V Sorting (Halaman. 47)Bab VI Searching (Halaman. 58)Bab VII Record (Halaman. 66)Bab VIII File (Halaman. 69)

  • 31.5. Petunjuk Bagi Mahasiswaa. Sebelum mengikuti perkuliahan hendaknya mahasiswa telah

    membaca bahan ajar ini dan dapat diperkaya dengan sumberacuan lainnya yang relevan pada setiap pertemuan.

    b. Untuk memperkaya wawasan dan pengetahuan sangat dianjurkanpenelusuran literatur khususnya materi algoritma dan strukturdata melalui sumber bacaan dan internet.

    c. Mintalah petunjuk dari dosen jika ada hal yang belumterselesaikan, baik dalam diskusi kelompok maupun dalamdiskusi kelas

    d. Kerjakan setiap tugas terstruktur yang diberikan pada setiap akhirkegiatan/pertemuan dengan baik.

    e. Perbanyaklah latihan mengerjakan soal, baik secara teori maupunlangsung dipraktekan dalam komputer dengan menggunakanbahasa pemrograman Pascal.

    1.6. Alur Bagi Peserta Praktikum :1. Peserta praktikum menerima dan kemudian mempelajari modul

    praktikum.2. Peserta praktikum mengerjakan tugas prepraktikum yang

    diberikan.3. Peserta praktikum melakukan asistensi tugas prepraktikum.

    Asistensi ini digunakan sebagai bahan bagi asisten untuk menilaikesiapan peserta juga berfungsi sebagai ajang diskusi pesertapraktikum atas kesulitan yang dialaminya.

    4. Peserta praktikum mendemokan implementasi tugas praktikumkepada asisten.

  • 41.7.Peraturan Praktikum :1. Praktikan harus menghadiri setiap sesi praktikum , tidak hadir

    tanpa keterangan akan menyebabkan hak menjadi praktikan gugur(nilai E).

    2. Praktikan tidak mengikuti UTS atau UAS akan menyebabkan hakmenjadi praktikan gugur (nilai E).

    3. Tugas prepraktikum diserahkan sebelum praktikum dimulai.4. Laporan praktikum dianggap sah apabila praktikan telah

    melakukan asistensi sesuai dengan materi praktikum.5. Laporan resmi adalah gabungan dari semua laporan praktikum

    Tiap sesi.6. Praktikan wajib menggunakan pakaian rapi bukan kaos oblong

    dan bersepatu.

    1.8 Grade Penilaian Praktikum :

    No Penilaian Pengumpulan Nilai1 Tugas

    PrepraktikumSoftcopy dalam

    CD10 %

    2 Kehadiran 10 %3 Laporan

    praktikumSoftcopy dalam

    CD25 %

    5 UTS Softcopy dalamCD

    25 %6 UAS Softcopy dalam

    CD30 %

    Total 100%

  • 5BAB IA R R A Y

    A. PendahuluanDeskripsi Singkat

    Bab ini akan mengemukakan bahasan tentang definisi array, deklarasiarray, mengakses elemen array, array sebagai tipe data bentukan, arraykonstan, array sebagai parameter, array multidimensi.

    RelevansiPembahasan pada bab ini sangat penting dipahami, karena materi

    array ini memberikan manfaat yaitu efisiensi program. Materi arraysangat berkaitan dengan materi lainnya dalam sebuah pemrogramanterstruktur, karena array dapat digunakan dan dikombinasikan denganbahasan lain dalam sebuah program.

    Tujuan Instruksional KhususMahasiswa mampu membuat program dengan menggunakan array.

    B. PenyajianBagi para pemrogram, efisiensi program merupakan hal utama yang

    harus diperhatikan, baik itu dalam hal kecepatan jalannya program,memori yang digunakan, banyak baris kode yang dituliskan dan jugaketepatan algoritma yang digunakan. Salah satu komponen yang harusdikuasai untuk memperoleh program yang baik adalah pengetahuantentang array.1) Definisi Array

  • 6Array (larik) adalah sebuah variabel yang dapat menyimpan lebihdari satu nilai sejenis (memilikii tipe data sama). Hal ini berbeda denganvariabel biasa yang hanya mampu menampung satu buah nilai. Setiapnilai yang disimpan di dalam array disebut dengan elemen array,sedangkan nilai urut yang digunakan untuk mengakses elemennyadisebut dengan indeks array. Sebagai contoh, misalkan terdapat array Ayang memiliki 10 buah elemen nilai yang bertipe integer, maka dapatdipresentasikan sebagai berikut :

    A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]1 2 3 4 5 6 7 8 9 1010 20 30 40 50 60 70 80 90 100

    Nilai elemen arrayIndeks arrayElemen array

    Gambar 1.1 Komponen Array (sumber :Rahardjo)

    Setiap elemen array di atas menyimpan nilai bertipe integer dan akanmenempati alamat memori yang berbeda, hal ini akan menyebabkan arraytersebut memiliki ukuran 40 byte, yang berasal dari 10 x 4. Nilai 10menunjukkan banyaknya elemen array sedangkan nilai 4 merupakanukuran dari tipe data integer (dalam 32 bit).2) Deklarasi Array

    Sama seperti variabel lain, array juga dideklarasikan di dalam bagiandeklarasi variabel. Bila akan didefinisikan sebagai tipe bentukan, makaarray juga akan dideklarasikan di bagian definisi tipe (di bawah katakunci type). Dalam bahasa Pascal, pendeklarasian array dilakukan denganmenggunakan kata kunci array dan tipe data yang akan disimpan didalamnya, selai itu juga harus disertai dengan batas-batas indeksnya yang

  • 7diapit oleh tanda bracket ([ ]). Berikut ini bentuk umum pendeklarasianarray.

    NamaArray : array [Indeks Awal . . IndeksAkhir] of tipe data;

    Gambar 1.2 Bentuk Umum Pendeklarasian array(sumber:Rahardjo)Sebagai contoh, apabila kita ingin mendeklarasikan array dengan

    nama A yang berisi 10 buah elemen bertipe integer, maka kita harusmendeklarasikannya dengan cara berikut.VarA : array [1 . . 10] of integer;

    Pada kode tersebut, indeks array diulai dari satu. Perlu diperhatikanbahwa bahasa Pascal berbeda dengan bahasa C yang indeks array-nyaselalu dimulai dari nol. Pada bahasa Pascal, indeks array dapat dimulaidari bilangan berapapun. Selain itu, indeks array juga dapat bertipekarakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yangdapat digunakan untuk mendeklarasikan 10 buah elemen array bertipeinteger sebagai pengganti kode di atas.VarA1 : array [0 . . 9] of integer;A2 : array [5 . . 15] of integer;A3 : array [a . . j] of integer;A4 : arrat [A . . J] of integer;

    Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat digunakanuntuk mengambil indeks terendah dan tertinggi dari sebuah array, yaitufungsi Low dan High. Adapun parameter dari kedua fungsi tersebutadalah nama array yang akan dicari indeksnya. Perhatikan contoh kodeberikut.VarA: array [1 . . 100] of integer;terendah, tertinggi : integer;Beginterendah := Low (A); {akan menghasilkan nilai 1}tertinggi := High (A) {akan menghasilkan nilai 100}. .end.

  • 83) Mengakses Elemen ArraySetelah mengetahui cara pendeklarasian array, selanjutnya kita harus

    mengetahui bagaimana cara untuk memanipulasi array tersebut. Langkahpertama yang harus dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan. Bentuk umum untuk pengisian elemen arrayadalah sebagai berikut.

    NamaArray [indeks] := nilai;Gambar 1.3 Bentuk Umum Pengisian Elemen Array(sumber:Rahardjo)

    Untuk lebih memahaminya, coba perhatikan contoh kode di bawah ini.VarA: array [1..100] of integer;BeginA[1] :=1; {mengisi elemen pertama dengan nilai 1}A[2] :=2; {mengisi elemen kedua dengan niali 2}A[3] :=3; {mengisi elemen ketiga dengan niali 3}....A[100] :=100; {mengisi elemen keseratus dengan nilai 100}end.

    Kode tersebut akan melakukan pengisian 100 elemen array dengannilai 1 sampai 100 sehingga kode tersebut akan lebih sederhana apabiladituliskan dengan menggunakan struktur pengulangan seperti yangterlihat pada kode berikut.VarA: array [1..100] of integer;i : integer;BeginFor i:= 1 to 100 doBeginA[1] := i;end;End.

    4) Mengapa Harus Menggunakan ArrayBagi seorang pemula, mungkin akan mucul pertanyaan mengapa kita

    perlu mendeklarasikan array? Untuk menjawab pertanyaan tersebut, cobaperhatikan contoh kasus berikut.

  • 9Apabila kita akan membuat program untuk menyimpan sekumpulandata, misalnya data-data hasil penelitian yang berupa bilangan, dimanajumlah dari data tersebut puluhan, ratusan atau bahkan ribuan, apakahakan menggunakan variabel sebanyak data yang ada? Jawabannya tentutidak, karena hal tersebut merupakan hal yang sangat tidak efisien.Sebagai contoh, asumsikan bahwa banyak data tersebut.VarN1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;BeginWriteln(masukkan data ke-1 : ); readln(n1);Writeln(masukkan data ke-2 : ); readln(n2);Writeln(masukkan data ke-3 : ); readln(n3);Writeln(masukkan data ke-4 : ); readln(n4);Writeln(masukkan data ke-5 : ); readln(n5);Writeln(masukkan data ke-6 : ); readln(n6);Writeln(masukkan data ke-7 : ); readln(n7);Writeln(masukkan data ke-8 : ); readln(n8);Writeln(masukkan data ke-9 : ); readln(n9);Writeln(masukkan data ke-10 : ); readln(n10);End.

    Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program diatas memang masih pendek karena datanya hanya 10, bagaimana bilaratusan ata bahkan ribuan?

    Untuk mengatasi masalah ini, seharusnya kita menggunakan arrayuntuk menyimpan data-data tersebut sehingga program akan jauh lebihsederhana dan mudah dalam pengerjaannya. Berikut ini perbaikanprogram di atas apabila kita menampung data-datanya ke dalam sebuaharray.Const max = 10;Varn : array [1 . . max] of real;i : integer;beginfor i:= 1 to max dowriteln(Masukkan data ke-, i, : ); readln(n[i]);end.

    Apabila ternyata data berjumlah 100 atau 1000, maka kita hanya perlumengganti nilai dari konstanta max di atas dengan nilai yang sesuai.

  • 10

    Alasan seperti inilah yang menyebabkan kita perlu untuk menggunakanarray.

    5) Array Sebagai Tipe Data BentukanArray juga dapat digunakan sebagai tipe data bentukan, yaitu dengan

    cara mendeklarasikannya di bagian definisi tipe data, yaitu bagian yangdiawali dengan kata kunci type.TypeBilangan = array [1 . . 100] of integer;Vokal = array [1 . . 5] of char;

    Setelah selesai mendefinisikan array tersebut, maka kita dapatmenggunakannya untuk mendeklarasikan variabel lain di dalamprogram. Berikut ini contoh pendeklarasian variabel yang menggunakantipe bentukan berupa array.VarX : bilangan;Vowel : vokal;

    Pada Contoh di atas kita mendeklarasikan variabel dengan nama xyang bertipe Bilangan, sedangkan variabel vowel bertipe vokal. Hal inimenyebabkan variabel tersebut juga dapat diperlukan sebagai array.Berikut ini contoh kode yang menunjukkan penggunaan variabel-variabeltersebut.BeginX[1[ := 1;X[2] := 2;. . .Vowel [1] := a;Vowel [2] := i;. . .End.

    6) Array KonstanNilai yang terkandung di dalam sebuah array dapat bernilai konstan,

    artinya nilai-nilai tersebut tidak dapat diubah. Untuk melakukan hal

  • 11

    tersebut, kita harus mendeklarasikan array bersangkutan dengan katakunci const. Berikut ini bentuk umum pendeklarasiannya.

    ConstNamaArray : array [indexAwal . . indeksAkhir] of tipe_data =

    Nila1, nilai2, ...);Gambar 1.4 Bentuk Umum Pendeklarasian Array Konstan (sumber:Rahardjo)

    Perlu diperhatikan bahwa banyaknya nilai konstan yang dituliskandiatas harus sesuai dengan banyaknya elemen array yang didefinisikan.Sebagai contoh, apabila kita ingin mendeklarasikan array dengan jumlahelemen 5, maka nilai konstan yang diisikan juga haruslah berjumlah 5.Perhatikan contoh kode berikut.ConstA : array [1 . . 5] of char = (A , B , C , D , E);

    Oleh karena array A di atas bersifat konstan, maka kita tidak dapatmenggantikan nilainya dengan nilai lain, seperti yang ditunjukkan olehkode di bawah ini.A [1] := V ; {SALAH, karena elemen A [1] selalu bernilai A}A [2] := W ; {SALAH, karena elemen A [2] selalu bernilai B}A [1] := X ; {SALAH, karena elemen A [3] selalu bernilai C}A [1] := Y ; {SALAH, karena elemen A [4] selalu bernilai D}A [1] := Z ; {SALAH, karena elemen A [5] selalu bernilai E}

    Hal ini menunjukkan bahwa array konstan nilainya hanya dapatdibaca, namun tidak untuk diubah. Agar lebih memahami konsepnya,perhatikan contoh implementasi dari array konstan berikut ini.Function HariSekarang : string;ConstHari : array[0 . .6] of string[6] =

    (Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu);varthn, bln, hr, indeksHari : word;begingetDate(thn, bln, hr, indeksHari);HariSekarang := Hari [indeksHari];End;

  • 12

    Pada contoh di atas kita membuat sebuah fungsi untuk mendapatkannama hari sesuai dengan tanggal sekarang (hari ini). Berikut ini contohprogram lain yang akan menunjukkan penggunaan array konstan.Program ArrayKonstan;Uses crt;ConstBulan : array [1 . . 12] of string =

    (Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus,September, Oktober, Nopember, Desember);

    varnoBulan : integer;beginclrscr;write(Masukkan nomor bulan :); readln(noBulan);write(Nama bulan ke-, noBulan, adalah , Bulan[noBulan]);readln;end.

    Contoh hasil yang akan diberikan oleh program di atas adalah sebagaiberikut.Masukkan nomor bulan : 3Nama bulan ke-3 adalah Maret

    7) Array Sebagai ParameterPada kasus-kasus pemrograman tertentu kita juga dituntut untuk

    menggunakan array sebagai parameter sebuah prosedur ataupun fungsi.Hal ini sering kita jumpai pada saat kita akan melakukan pencarianmaupun pengurutan dari sekumpulan data. Berikut ini contohpenggunaan array di dalam sebuah prosedur.TypeBilangan = array[1..100] of integer;Procedure inputArray[a:bilangan; N:integer);Vari : integer;BeginFor i := 1 to N doWrite (masukkan elemen array ke-, i); readln(A[i]);End;

    Pada contoh di atas kita te;ah membuat prosedur yang memilikiparameter bertipe array. Prosedur tersebut akan digunakan untukmelakukan pengisian elemen array sebanyak N, dimana 1 N 100.

  • 13

    Perlu diperhatikan bahwa array yang dilewatkan sebagai parameterini harus dideklarasikan terlebih dahulu. Berikut ini contoh penggunaanarray yang tidak diperbolehkan oleh kompiler.Procedure InputArray [A:array[1..100] of integer; N); {salah}

    Berikut ini kode yang merupakan perbaikan dari kode sebelumnya.Procedure InputArray [A:array of integer; N); {benar}

    Untuk lebih memahaminya, perhatikan contoh program di bawah inidimana kita akan menggunakan array sebagai parameter.Program ParamArray;Uses crt;Const max = 100;]typeBilangan = array [1 . . max] of integer;Procedure InputArray[A:bilangan; N:integer);Vari:integer;BeginWriteln (Memasukkan data :);For i : 1 to N doWrite(Masukkan nilai A[, i, ] : ); readln(A[i]);End;Procedure OutputArray (A:bilangan; N:integer);Vari:integer;beginwriteln(Menampilkan data :);for i : 1 to N dowrite (A[, i, ] = , A[i]);end;varArr:bilangan;count:integer;BeginClrscr;Write (Masukkan banyaknya elemen array :); readln(count);Writeln;OutputArray (Arr, count);Readln;End.

    Contoh hasil yang akan diberikan dari program di atas adalah sebagaiberikut.Masukkan banyaknya elemen array : 3Memasukkan data :Masukkan nilai A[1] : 10

  • 14

    Masukkan nilai A[2] : 20Masukkan nilai A[3] : 30Menampilkan data :A[1] = 10A[2] = 20A[3] = 308) Array Multidimensi

    Sejauh ini kita baru membahas mengenai array berdimensi satu. Padabagian ini kita akan mempelajari bagaimana cara mendeklarasikan danmemanipulasi data yang terdapat pada array multidimensi. Agar lebihmempermudah pembahasan, materi ini akan dibagi menjadi duakelompok, yaitu array dua dimensi dan array tiga dimensi.

    9) Array Dua DimensiArray dua dimensi adalah array yang memiliki dua buah elemen

    bertipe array. Dengan kata lain, array dua dimensi memiliki dua buahsubskrip, yang biasanya dipresentasikan dengan baris dan kolom. Untuklebih memahami konsepnya, perhatikan terlebih dahulu gambar di bawahini.

    baris

    Kolom

    Gambar 1.5. Array dua dimensi (sumber:Rahardjo)

    Pada gambar di atas, array memiliki 3 buah baris dan 4 buah kolom,sehingga jumlah elemennya adalah 3x4 = 12. Perlu diketahui bahwakeadaan tersebut sebenarnya hanya merupakan keadaan logik yangbertujuan untuk mempermudah pemahaman array dua dimensi. Padakenyataannya, pengalamatan memori di komputer dari array dua dimensitetap akan dipresentasikan dengan sebuah deretan larik yang memanjang

  • 15

    (tidak berbentuk baris dan kolom). Pendeklarasian array dua dimensi didalam bahasa Pascal dilakukan melalui bentuk umum di bawah ini.

    NamaArray : array [1 . . banyakbaris, 1 . . banyakkolom] of tipe_data;

    Sebagai contoh, apabila kita akan mendeklarasikan array dua dimensidengan 3 buah baris dan 4 buah kolom dimana setiap elemennya bertipeinteger, maka kita dapat menuliskan kode seperti berikut.

    Array2D : array [1 . . 3, 1 . . 4] of integer;

    Untuk melakukan pengaksesan terhadap elemen-elemennya, kitaharus menuliskan indeks baris dan kolomnya. Sebagai contoh, apabila kitaingin mengisikan nilai 100 ke dalam elemen yang terdapat pada baris ke-2kolom ke-3, maka kita harus menuliskannya sebagai berikut.

    Array2D [2, 3] : = 100;

    Berikut ini contoh program yang menunjukkan penggunaan array duadimensi. Di sini kita akan membuat program yang dapat menjumlahkandua buah matriks A dan B yang masing-masing berordo 2 x 3 (memiliki 2baris dan 3 kolom).Program JumlahMatriks;Uses crt;ConstJbaris = 2;Jkolom = 3;TypeMatriks23 = array [1 . . Jbaris, 1 . . Jkolom] of integer;VarA,B,C : Matriks23;j, k : integer;beginclrscr;{mengisikan matriks A}writeln (Matriks A);for j: = 1 to Jbaris do beginfor k: = 1 to Jkolom do beginwrite(A[, j, , , k, ] = ); readln(A[j, k]);end;writeln;end;writeln;{mengisikan matriks B}writeln(Matriks B);for j: = 1 to Jbaris do begin

  • 16

    for k: = 1 to Jkolom do beginwrite(B[, j, , , k, ] = ); readln(B[j, k]);end;writeln;end;writeln;{melakukan penjumlahan matriks A dan B sekaligus menampilkan hasilnya ke layar}writeln(Hail Penjumlahan);for j: = 1 to Jbaris do beginfor k: = 1 to Jkolom do beginC[j, k] : = A[j, k] + B[j, k];write(C[, j, , , k, ] = ); readln(C[j, k]);end;writeln;end;readln;end.

    Contoh hasil yang akan diberikan oleh program di atas adalah sebagaiberikut.

    Matriks AA[1, 1] = 1A[1, 2] = 2A[1, 3] = 3A[2, 1] = 4A[2, 2] = 5A[2, 3] = 6Matriks BB[1, 1] = 3B[1, 2] = 2B[1, 3] = 1B[2, 1] = 6B[2, 2] = 5B[2, 3] = 4

    Hasil PenjumlahanC[1, 1] = 4C[1, 2] = 4C[1, 3] = 4C[2, 1] = 10C[2, 2] = 10C[2, 3] = 10

  • 17

    10)Array Tiga DimensiArray tiga dimensi merupakan array yang memiliki tiga buah

    subskrip dan lebih kompleks apabila dibandingkan dengan array duadimensi. Di sini, subskrip yang ada akan dipresentasikan dengan sumbux, y dan z atau panjang, lebar dan tinggi seperti yang ditunjukkan oelhgambar berikut.

    y Gambar 1.6. Array tiga dimensi(sumber : Rahardjo)

    x

    z

    Berikut ini bentuk umum yang digunakan untuk mendeklarasikanarray tiga dimensi di dalam bahasa Pascal.

    NamaArray : array [1 . . xMaks, 1 . . yMaks, 1 . . zMaks] of tipe_data;Gambar 1.7 Bentuk Umum Pendeklarasian Array Tiga Dimensi(sumber:Rahardjo)

    Sebagai contoh apabila kita ingin mendeklarasikan array yangmemiliki panjang 2, lebar 3 dan tinggi 4 elemen bertipe integer, maka kitaakan menuliskannya seperti di bawah ini.Array3D : array [1 . . 2, 1 . . 3, 1 . . 4] of integer;

    Jumlah elemen yang terdapat di dalam array tersebut adalah 2 x 3 x 4= 24. Sekarang apabila kita ingin mengisikan nilai 100 ke dalam elemenyang berada pada posisi panjang ke-2, lebar ke-3 dan tinggi ke-1, makakita akan melakukannya melalui kode berikut.Array3D : [2, 3, 1] : = 100;

    Berikut ini adalah contoh yang akan menunjukkan cara pengaksesanelemen di dalam array 3 dimensi.

  • 18

    Program AksesArray3D;Uses crt;ConstxMaks = 2;yMaks = 2;zMaks = 2;TypeArray3D = array [1 . . xMaks, 1 . . yMaks,1 . . zMaks] of integer;VarA: Array3D;i, j, k : integer;beginclrscr;{mengisikan nilai ke dalam array A}x := 1;for i := 1 to xMaks do beginfor j := 1 to jMaks do beginfor k := 1 to zMaks do beginA[i, j, k] := x;inc(x);

    end;end;end;{menampilkan isi yang terdapat dalam array A}for i := 1 to xMaks do beginfor j := 1 to jMaks do beginfor k := 1 to zMaks do beginwrite(A[ , i, , , j, , , z, ] = , A[ i, j, k] , );

    end;end;writeln;end;readln;end.

    Hasil yang akan diberikan oleh program diatas adalah sebagaiberikut:

    A[1, 1, 1] = 1 A[1, 1, 2] = 2 A[1, 2, 1] = 3 A[1, 2, 2] = 4A[2, 1, 1] = 5 A[2, 1, 2] = 6 A[2, 2, 1] = 7 A[2, 2, 2] = 8

    C. PenutupArray merupakan sebuah variabel yang dapat menyimpan lebih dari

    satu nilai yang memiliki tipe data sama. Hal ini berbeda dengan variabelbiasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang

  • 19

    disimpan di dalam array disebut dengan elemen array, sedangkan nilaiurut yang digunakan untuk mengakses elemennya disebut dengan indeksarray.

    Apabila kita akan membuat program untuk menyimpan sekumpulandata, misalnya data-data hasil penelitian yang berupa bilangan, dimanajumlah dari data tersebut puluhan, ratusan atau bahkan ribuan, apakahakan menggunakan variabel sebanyak data yang ada? Jawabannya tentutidak, karena hal tersebut merupakan hal yang sangat tidak efisien.Penggunaan array dalam program akan membuat program lebih efisiendan mudah dipahami.

    1) Pertanyaan(a) Buat program dengan menggunakan array untuk menginput 10 nilai,

    bandingkan dan tampilkan nilai terbesar.(b) Buat program dengan menggunakan array konstan untuk

    memasukkan nomor bulan dan menampilkan nama bulan.

    2) Umpan Balik dan Tindak LanjutUntuk menguasai materi ini, sebaiknya anda membuat ringkasan

    materi tentang array dan membuat beberapa program denganmenggunakan array.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai program tersebut benar dan jalan.

  • 20

    Daftar PustakaJurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 3. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 21

    BAB IIP R O S E D U R

    A. PendahuluanDeskripsi Singkat

    Bab ini akan mengemukakan bahasan tentang pemrograman moduler,definisi prosedur, pendefinisian prosedur, pemanggilan prosedur.

    RelevansiPembahasan pada bab ini sangat penting dipahami, karena materi

    prosedur ini memberikan manfaat bagi pemrogram untuk membuatprogram yang menggunakan prosedur. Materi prosedur sangat berkaitandengan materi lainnya dalam sebuah pemrograman terstruktur, terutamapemrograman moduler.

    Tujuan Instruksional KhususMahasiswa mampu membuat program aplikasi dengan menggunakan

    prosedur

    B. Penyajian1) Konsep Pemrograman Moduler

    Dalam membuat program besar dan kompleks, si pemrogram perlumemecah program menjadi beberapa sub program yang lebih kecil. Tiapsub program kadangkala cukup independen dari program utamasehingga programnya dapat dirancang tanpa mempertimbangkan kontekstempat di mana sub program tersebut digunakan. Tiap sub program, yangdisebut modul dapat dirancang oleh pemrogram selain dari orang yangmengembangkan program utama. Modul yang sudah ditulis dapatdipasang ke program lain yang membutuhkannya. Teknik pemrogramanseperti ini dinamakan teknik pemrograman modular. Beberapa bahasa

  • 22

    pemrograman termasuk Pascal menamakan modul dengan sebutan rutin,prosedur atau fungsi.

    Modularisasi program memberikan 2 (dua) keuntungan. Pertama,untuk aktivitas yang harus dilakukan lebih dari satu kali, modularisasimenghindari penulisan teks program yang sama secara berulangkali.Disini, modul program cukup ditulis sekali saja, lalu modul tersebut dapatdiakses dari bagian lain di dalam program.Di sini, penggunaan modulprogram dapat mengurangi panjang program.

    Keuntungan kedua dari modularisasi adalah kemudahan menulis danmenemukan kesalahan program. Kemudahan menulis akan sangatberguna pada masalah besar yang dikerjakan oleh satu tim pemrogramyang beranggotakan beberapa orang. Masalah yang akan diprogramdipecah menjadi beberapa masalah yang lebih keil. Setiap masalah yanglebih kecl tersebut ditulis ke dalam modul individual yang spesifik dandikerjakan oleh orang yang berbeda. Seluruh modul diintegrasikanmenjadi satu buah program yang lengkap. Program modular menjai lebihmudah untuk dibaca dan dimengerti. Program yang tidak modular sulitdipahami, khususnya kalau program tersebut panjang atau terdiri daripuluhan, ratusan atau ribuan baris intruksi.

    Karena setiap modul melakukan aktivitas specsifik, maka apabilaterdapat kesalahan di dalam program, kesalahan tersebut dapatdilokalisisr pada modul yang bersangkutan. Kebanyakan programkomputer dapat ditulis modular, meskipun program tersebut tidakmelibatkan eksekusi yang berulang dari aktivitas yang sama. Pemecahanprogram menjadi modul-modul individul umumnya dianggap sebagaipraktek pemrograman yang baik.

    Terdapat dua jenis modul program, pertama prosedur (procedure) dankedua fungsi (function). Struktur setiap modul tersebut pada hakikatnyasama dengan struktur algoritma biasa, yaitu ada bagian judul (header)

  • 23

    yang berisi nama modul, bagian deklarasi, dan bagian badan (body)program yang berisi instruksi yang akan dilaksanakan.2) Definisi Prosedur

    Prosedur adalah modul program yang mengerjakan tugas/aktivitasyang spesifik dan menghasilkan suatu efek netto . Suatu efek nettodiketahui dengan membandingkan keadaan awal dan keadaan akhir padapelaksanaan prosedur. Oleh karena itu, pada prosedur kita harusmendefinisikan keadaan awal sebelum rangkaian instruksi di dalamprosedur dilaksanakan dan keadaan akhir yang diharapkan setelahrangkaian instruksi dilaksanakan.3) Pendefinisian Prosedur

    Pada dasarnya, struktur prosedur sama dengan struktur algoritmayang sudah dikenal, yaitu : bagian judul yang terdiri atas nama prosedurdan komentar yang menjelaskan yang menjelaskan spesifikasi prosedurtersebut, bagian deklarasi dan badan prosedur. Setiap prosedur memilikinama yang unik. Nama prosedur sebaiknya diawali dengan kata kerjakarena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar,CariMaks, Inisialisasi, AktifkanMenu dan lain sebagainya.

    Notasi Algoritma yang digunakan untuk mendefinisikan strukturprosedur adalah :Procedure NamaProsedur{Spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukanprosedur ini}{K. Awal : keadaan sebelum prosedur dilaksanakan}{K. Akhir : keadaan setelah prosedur dilaksanakan}Deklarasi{semua nama yang dipakai dalam prosedur dan hanya berlakulokal di dalam prosedur yang didefinisikan di sini}Deskripsi{badan prosedur, berisi kumpulan instruksi}

    Gambar 3.1 Bentuk Umum Pendefinisian Prosedur(sumber:Rahardjo)

  • 24

    Contoh 2.1Tuliskan prosedur mencetak string Hello World!.

    PenyelesaianProcedure CetakHalo{mencetak string Hello World! ke piranti keluaran}{K. Awal : sembarang}{K. Akhir : string Hello World! tercetak}Deklarasi{tidak ada}DeskripsiWrite ([Hello World!)

    Contoh 2.2Tuliskan prosedur untuk menghitung luas segitiga dengan rumus L=(alasx tinggi)/2. Panjang alas dan tinggi segitiga dibaca dari dalam prosedur.Luas segitiga dicetak ke piranti keluaran.

    PenyelesaianProcedure HitungLuasSegitiga{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2{K. Awal : sembarang}{K. Akhir : L berisi luas segitiga. Nilai L dicetak ke piranti keluaran}DeklarasiAlas, tinggi, luas : realDeskripsiRead (alas, tinggi)Luas (alas*tinggi)/2Write (L)

    4) Pemanggilan ProsedurProsedur bukan program yang berdiri sendiri, jadi tidak dapat

    dieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalamprosedur baru dapat dilaksanakan hanya bila prosedur tersebutdiakses/dipanggil. Prosedur diakses dengan cara m,emanggil

  • 25

    namanya dan program pemanggil (program utama atau modulprogram lain) :

    NamaProsedurGambar 2.2 Pemanggilan Prosedur(sumber:Rahardjo)

    Ketika NamaProsedur dipanggil, kendali program berpindahsecara otomatis ke prosedur tersebut. Instruksi di dalam badanprosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan,kendali program berpindah secara otomatis ke instruksi sesudahpemanggilan prosedur.

    Di dalam program pemanggil, kita harus mendeklarasikanprototype prosedur di dalam bagian deklarasi. Prototype prosedurhanya berisi bagian judul prosedur. Tujuan pendeklarasian prototypeprogram adalah supaya program pemanggil mengenal namaprosedur tersebut serta cara mengaksesnya.

    Contoh 2.3Tuliskan contoh program utama untuk memanggil prosedur CetakHaloPenyelesaianAlgoritma Halo{program utama untuk mencetak string Halo!}DeklarasiProcedure CetakHalo{mencetak string Halo! ke piranti keluaran}DeskripsiCetakHalo {panggil prosedur CetakHalo}

    Contoh 2.4Tuliskan contoh program utama untuk memanggil prosedurHitungLuasSegitiga.

  • 26

    PenyelesaianAlgoritma Luas_Segitiga{program uatama untuk menghitung luas segitiga}DeklarasiPrcedure HitungLuasSegitiga{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2}DeskripsiWrite(Menghitung Luas Segitiga)HitungLuasSegitigaWrite (Selesai)

    C. PenutupKata prosedur sering kita dengar dalam kehidupan sehari-hari.

    Seorang mahasiswa pada setiap awal semester selalu melakukanpenaftaran ulang (registrasi). Langkah-langkah pendaftaran ulang lazimdinyatakan dalam sebuah prosedur yang dinamakan prosedur daftarulang. Ketika sebuah prosedur dilakukan, maka instruksi-instruksi didalamnya dikerjakan satu per satu.

    Dalam dunia pemrograman, prosedur adalah modul program yangmengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efeknetto. Suatu efek netto diketahui dengan membandingkan keadaan awaldan keadaan akhir pada pelaksanaan sebuah prosedur. Oleh sebab itu,pada setiap prosedur kita perlu mendefinisikan keadaan awal sebelumrangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhiryang diharapkan setelah rangkaian instruksi di dalam prosedurdilaksanakan.1) Pertanyaan

    Buat program perhitungan luas segitiga menggunakan prosedur.2) Umpan Balik dan Tindak Lanjut

  • 27

    Untuk menguasai materi ini, sebaiknya anda membuat ringkasanmateri tentang prosedur dan membuat sendiri beberapa program denganmenggunakan prosedur.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai benar.3) Kunci Jawabanprogram luas_segitiga;procedure hitungluas;varalas,tinggi,luas : real;beginwrite('alas :');readln(alas);write('tinggi:');readln(tinggi);luas:=(alas*tinggi)/2;write('luas segitiga :',luas:2:0);end;beginwriteln('menghitung luas segitiga');hitungluas;readlnend.

    Daftar PustakaJogiyanto, 1989. Turbo Pascal. Yogyakarta : Andi Ofset.Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 3. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 28

    BAB IIIF U N G S I

    A. PendahuluanDeskripsi Singkat

    Bab ini akan mengemukakan bahasan tentang definisi fungsi, caramendefinisikan fungsi, cara pemanggilan fungsi dan parameter.Relevansi

    Pembahasan pada bab ini sangat penting dipahami, karena materifungsi ini memberikan manfaat bagi pemrogram untuk membuatprogram yang menggunakan fungsi. Materi fungsi sangat berkaitandengan materi lainnya dalam sebuah pemrograman terstruktur, terutamapemrograman moduler.Tujuan Instruksional Khusus

    Mahasiswa mampu membuat program dengan menggunakan fungsi.

    B. Penyajian1) Definisi Fungsi

    Definisi fungsi sebenarnya sama dengan sebuah prosedur.Perbedaannya, pada fungsi terdapat pengembalian nilai, sehingga padasaat pemanggilan, fungsi dapat langsung digunakan untuk mengisikansebuah ekspresi.2) Pendefinisian Fungsi

    Berbeda dengan prosedur yang didefinisikan dengan kata kuncifunction. Berikut ini bentuk umum dari pendefinisian sebuah fungsi.

  • 29

    Function NamaFungsi (parameter1 : tipe_data,paraneter2: tipe_data, . . .) : tipe_data;

    const{daftar konstanta lokal}Var{daftar pendeklarasian variabel lokal}Begin{kode program yang akan ditulis}. . .NamaFungsi := nilai_kembalian; {ingat baris ini}End;

    Gambar 4.1 Bentuk Umum Pendefinisian Fungsi

    Berikut ini contoh pendefinisian fungsi sederhana yang akanmengalikan dua buah bilangan bulat.Function Kali (x, y : integer) : longint;Begin

    Kali := x * y;End;

    Kita juga dapat mendeklarasikan variabel lokal untuk menyimpannilai sebelum akhirnya dikembalikan lagi ke fungsi, misalnya seperti kodedi bawah ini.Function Kali (x, y : integer) : longint;Var

    Hasil : longint;Begin

    Hasil := x * y;Kali := Hasil;

    End;

    3) Pemanggilan fungsiFungsi diakses dengan cara memanggil namanya dari program

    pemanggil, diikuti dengan daftar parameter aktual (bila ada). Oleh karenafungsi menghasilkan sebuah nilai maka pada saat pemanggilannya jugadapat ditampung ke dalam suatu variabel. Berikut ini contohpemanggilan fungsi di atas.

  • 30

    VarA : longint;

    Begin{memanggil fungsi Kali dan menyimpan nilainya ke dalam variabel A)A := Kali (10, 5);

    . . .End.

    4) ParameterParameter merupakan suatu nilai atau referensi yang dilewatkan ke

    dalam rutin tertentu dan kehadirannya akan mempengaruhi prosesmaupun nilai yang terdapat di dalam rutin itu sendiri. Parameterditempatkan di dalam tanda kurung setelah nama rutin bersangkutan.Suatu fungsi umumnya mempunyai parameter. Namun bisa saja suatufungsi tidak memiliki paramater.

    Setiap parameter yang dilewatkan harus memiliki tipe data tersendiriyang dapat berupa dari tipe dasar maupun bentukan seperti array, recordatau pointer. Untuk mengetahui arti parameter, perhatikan fungsimatematika di bawah ini.f (x) = 2x2 + 5x 3

    Bila x=1, maka f akan mengembalikan nilai 4, yang berasal darif (1) = 2(1)2 + 5(1) 3 = 2 + 5 3 = 4

    Bila x=2, maka f akan mengembalikan nilai 15, yang berasal darif (2) = 2(2)2 + 5(2) 3 = 8 + 10 3 = 15

    Dari ilustrasi tersebut terlihat jelas bahwa hasil nilai dari fungsi fditentukan oleh besarnya nilai x, sehingga x disebut sebagai parameterdari fungsi f.Contoh 3.1Program Menghitung _Berbagai_Luas;Uses Crt;Var

    S,SE,PP,LL,LJ : Real;P,Alas,Tinggi,Panjang,Lebar,Jari,Sudut,Pil : Integer;Pilihan : Char;

  • 31

    Procedure Matematika;Begin

    Writeln;Writeln(Ketikan angka pilihan dibawah ini dan tekan < Enter > );Writeln(1. Luas Segitiga);Writeln(2. Luas SegiEmpat);Writeln(3. Luas Persegi Panjang);Writeln(4. Luas Lingkaran);Writeln(5. Luas Juring);Writeln(6. Selesai);

    End;Procedure Luas_Segitiga;Begin

    Writeln;Write(Alas : );Readln(Alas);Write(Tinggi : );Readln(Tinggi);S:=alas * (Tinggi / 2);Writeln(Luas Segitiga : ,S);

    End;Procedure Luas_SegiEmpat;Begin

    Writeln;Write(Panjang : );Readln(Panjang);Write(Lebar : );Readln(Lebar);SE:=Panjang * LebarWriteln(Luas SegiEmpat : ,SE);

    End;Procedure Luas_Persegi_Panjang;Begin

    Writeln;Write(Panjang : );Readln(Panjang);Write(Lebar : );Readln(Lebar);PP:=Panjang * LebarWriteln(Luas Persegi Panjang : ,PP);

    End;Procedure Luas_Lingkaran;Begin

    Writeln;Write(Jari - Jari : );Readln(Jari);LL:=Pi * Sqr(Jari);Writeln(Luas Lingkaran : ,LL);

    End;Procedure Luas_Juring;Begin

    Writeln;Write(Sudut Juring : );Readln(Juring);Write(Jari - Jari : );Readln(JAri);LJ:=Sudut / 360 * Pi * Sqr(Jari);Writeln(Luas Juring : ,LJ);

    End;Procedure Laksanakan_Matematika;Begin

    P:= Ord(Pilihan) 48Case P Of

    1 : Luas_Segitiga;2 : Luas_SegiEmpat;3 : Luas_Persegi_Panjang;4 : Luas_Lingkaran;

  • 32

    5 : Luas_Juring;6 : Begin

    Writeln;Writeln( &&&& Selesai &&&&);End;

    End;End;Begin

    Write(Pilihan : );Readln(Pil);Write p 6 DoBeginRepeatMatematika;Write(Pilihan angka yang dipilih : );read(Pilihan);Writeln(Pilihan);Laksanakan_Matematika;Until (pilihan = 6);

    End;End.

    Contoh 3.2Program Perpustakaan;Uses Crt;Var

    Kode_Buku : Char;Harga_Sewa, Denda_Hari, Sewa_Hari, Bayar : Real;

    Procedure Masukan(Var Tr_Kode ; Var Tr_hari:Real);Begin

    Gotoxy(15,12);Write(Kode Buku Pinjaman :);Readln(Tr_Kode);Gotoxy(15,13);Write(Lama Hari Pinjam :);Readln(Tr_Hari);

    End;Funtion HargaSewa(Tr_Kode2 : Char);Real;Begin

    If Upcase(Tr_Kode2) = A ThenHargaSewa := 300Else If Upcase (Tr_Kode2) = B ThenHargaSewa := 250Else If Upcase (Tr_Kode2) = L ThenHargaSewa := 350;

    End;Funtion Denda(Tr_Kode3 : Char; Tr_Kode2 : Real);Real;Var

    A : Real;Begin

    If Upcase(Tr_Kode3) = A ThenA:= 50

    Else If Upcase (Tr_Kode3) = B ThenA := 25

    Else If Upcase (Tr_Kode3) = L ThenA:= 100;

    If Tr_Hari2 > 7 ThenDenda := (Tr_Hari2 7) * AElse Denda := 0;

    End;Procedure Cetak(Tr_Sewa, Tr_Denda, Tr_Total : real);

  • 33

    BeginGotoxy(15,15);Write(Harga Sewa 7 Hari : Rp.,Tr_Sewa:5:0);Gotoxy(15,16);Write(Denda Harus Bayar : Rp.,Tr_Denda:5:0);Gotoxy(15,17);Write(================================);Gotoxy(15,18);Write(Total Pembayaran : Rp.,Tr_Total:5:0);

    End;Clrscr; { Membersihkan Layar }Masukan(Kode_Buku, Sewa_Hari);Harga_Sewa := HargaSewa(Kode_Buku);Denda_Hari := Denda(Kode_Buku,Sewa_Hari);Bayar := Harga_Sewa + Denda_Hari;Cetak(Harga_sewa, Denda_Hari,Bayar);

    End.

    C. PenutupSeperti halnya prosedur, fungsi juga merupakan sub program yang

    mempunyai tujuan spesifik. Pertanyaan sering muncul dalampemrograman moduler adalah : apakah sebuah modul program akandibuat sebagai prosedur atau fungsi ? Fungsi digunakan apabila modulprogram mengembalikan sebuah nilai, sementara prosedur digunakanapabila modul menghasilkan efek netto dari satu atau sekumpulan aksi.Pemilihan apakah sebuah modul direalisasikan sebagai fungsi atauprosedur bergantung pada kebutuhan dan seni memprogram.1) Pertanyaan

    Buat program perhitungan nilai faktorial menggunakan fungsi.2) Umpan Balik dan Tindak Lanjut

    Untuk menguasai materi ini, sebaiknya anda membuat ringkasanmateri tentang fungsi dan membuat sendiri beberapa program denganmenggunakan fungsi.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai benar.

  • 34

    3) Kunci Jawaban

    Program faktorial;Varn : integer;function f(n:integer);integer;vari, f : integer;beginf:=1;for i:=1 to n do

    f:=f +1;end;beginwrite (jumlah faktorial :);readln(n);writeln(f);end.

    Daftar PustakaJurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 3. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 35

    BAB IVR E C O R D

    A. PendahuluanDeskripsi Singkat

    Bab ini akan mengemukakan bahasan tentang definisi record,deklarasi record, mengakses field, penugasan antar record, record dalamrecord, pernyataan with, array record.

    RelevansiPembahasan pada bab ini sangat penting dipahami, karena materi

    record ini memberikan manfaat bagi pemrogram untuk membuatprogram yang menggunakan data yang terdiri dari beberapa data denberlainan tipe. Materi record sangat berkaitan dengan materi lainnyadalam sebuah pemrograman terstruktur, terutama dengan materi array.

    Tujuan Instruksional KhususMahasiswa mampu membuat program aplikasi dengan menggunakan

    record.

    B. Penyajian1) Definisi Record

    Record adalah jenis tipe data terstruktur yang berisi beberapa data,yang masing-masing dapat berlainan tipe.2) Mendeklarasikan RecordSuatu tipe record dideklarasikan dengan bentuk sebagai berikut :

    RECORD Gambar 2.1 Pendeklarasian RecordDaftar_field_1 : tipe_1; (sumber:Kadir)Daftar_field_2 : tipe_2;. . .daftar_field_n : tipe_n;END

  • 36

    Masing-masing daftar_field dapat berupa satu atau beberapa namapengenal dan masing-masing dinamakan field. Bila daftar_field berisi lebihdari satu field , antar field perlu dipisahkan dengan koma. Masing-masingtipe dapat berupa tipe data apa saja termasuk array.Berikut contoh pendeklarasian record :

    TypeRecBarang = Record

    Nama : String;Kualitas : Char;Harga : LongInt

    End;Var

    Barang : RecBarang;

    Dengan mendeklarasikan seperti di atas, Barang akan mengandung tigabuah field, yaitu :

    - Nama,- Kualitas,- Harga.

    3) Cara Mengakses FieldField dari suatu record diakses dengan bentuk :

    Variabel.fieldGambar 2.2 Mengakses Field(sumber:Kadir)

    Sebagai contoh :Barang.Nama

    Berarti field Nama dari variabel record bernama Barang.Contoh penugasan nilai ke field tersebut :Barang.Nama := Ubin TISKA 20x20;

    Dengan cara seperti di atas, field Nama dari record Barang berisi stringUbin TISKA 20x20.Isi dari suatu field ditampilkan dengan menggunakanWrite atauWriteln.

  • 37

    Contoh :Writeln (Barang.Nama);Merupakan perintah untuk menampilkan isi field Nama dari recordBarang.

    Contoh program yang memberikan gambaran pendeklarasian record,pengisian terhadap field-field serta menampilkan isi masing-masing fielddapat dilihat di bawah ini.Contoh 4.1Program Rec1;Uses crt;Type

    RecBarang = RecordNama : String[25];Kualitas : Char;Harga : LongInt

    End;Var

    Barang : RecBarang; {variabel bertipe record}BeginClrscr;{Penugasan nilai terhadap field-field}Barang.Nama := Ubin TISKA 20x20;Barang.Kualitas := A;Barang.Harga := 14000;{menampilkan isi field}writeln (Nama Barang : , Barang.Nama);writeln (Kualitas : , Barang.Kualitas);writeln (Harga : , Barang.Harga);ReadlnEnd.

    Hasil program :Nama Barang : Ubin TISKA 20x20Kualitas : AHarga : 14000

    4) Penugasan Antar RecordJika record R1 dan R2 bertipe sama dan masing-masing memiliki F1, F2,dan F3, maka penugasan :

    R1 := R2;

  • 38

    diperkenankan. Pernyataan di atas merupakan penyederhanaan darisederetan pernyataan berikut :

    R1.F1 := R2.F1;R1.F2 := R2.F2;R1.F3 := R2.F3;

    Untuk lebih jelasnya, tulislah program berikut dan cobalahmenjalankannya.Contoh 4.2Program Rec2;Uses crt;Type

    RecBarang = RecordNama : string[25];Kualitas : car;Harga : longInt

    End;Var

    Barang1, Barang2 : RecBarang; {variabel bertipe record}BeginClrscr;{penugasan nilai terhadap field-field}Barang1.Nama := Ubin TISKA 20x20;Barang1.Kualitas := A;Barang1.Harga := 14000;{menyalin record}Barang2 := Barang1;Menampilkan isi field}Writeln (Nama Barang : , Barang2.Nama);Writeln (Kualitas : , Barang.Kualitas);Writeln (Harga : , Barang.Harga);ReadlnEnd.

    Dengan adanya penugasanBarang2 := Barang1;

    maka semua field pada record Barang2 akan berisi recrod Barang1. Hasil dariprogram di atas :Nama Barang : Ubin TISKA 20x20Kualitas : AHarga : 14000

  • 39

    5) Record Di Dalam RecordMungkin saja sebuah record berisi record. Sebagai gambaran hal ini,perhatikan deklarasi berikut :RecTanggal = Record

    Tanggal,Bulan,Tahun :Integer

    End;RecPegawai = Record

    Nomor : LongInt;Nama : String [35];TglLahir : RecTanggal;Gaji : LongInt

    End;

    Tampak bahwa tipe record bernama RecPegawai berisi record yang lain(RecTanggal).Hal yang menarik yang perlu diperhatikan adalah cara mengakses fieldseperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagaiberikut.Nama_variabel.TglLahir.TanggalNama_variabel.TglLahir.BulanNama_variabel.TglLahir.Tahun

    Praktekkan program berikut, untuk mencoba pembuatan record denganbentuk sepert di atas.Contoh 4.3

    Program Rec3;Uses crt;Type

    RecTanggal = RecordTanggal,Bulan,Tahun : Integer

    End;RecPegawai = Record

    Nomor : LongInt;Nama : string [35];TglLahir : RecTanggal;Gaji : longInt

  • 40

    End;Var

    DataPeg : RecPegawai; {variabel betipe record}BeginClrscr;Penugasan nilai terhadap field-fiedl}DataPeg.Nomor := 56789;DataPeg.Nama := Badu;DataPeg.TglLahir.Tanggal := 24;DataPeg.TglLahir.Bulan := 12;DataPeg.TglLahir.Tahun := 1972;DataPeg.Gaji := 750000;{menampilkan isi field}Writeln (Nama Pegawai : , DataPeg.Nama);Writeln (Tanggal Lahir : , DataPeg.TglLahir.Tanggal,

    /, DataPeg.TglLahir.Bulan,/, DataPeg.TglLahir.Tahun);

    ReadlnEnd.

    Hasil dari program di atas adalah sebagai berikut :

    Nama Pegawai : BaduTanggal Lahir : 24 / 12 / 1972

    6) Pernyataan WithUntuk menyederhanakan notasi seperti :DataPeg.TglLahir.TanggalTurbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan iniadalah sebagai berikut :

    With nama_record dopernyataan

    Gambar 2.3 Bentuk Umum Pernyataan With(sumber:Kadir)

    Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapatdisebutkan tanpa perlu menyertakan lagi nama record dan tanda titik.Untuk lebih jelasnya, perhatikan program berikut yang merupakanalternatif lain dari program di atas.

  • 41

    Contoh 4.4Program Rec4;Uses crt;Type

    RecBarang = RecordNama : String [25];Kualitas : Char;Harga : LongInt

    End;Var

    Barang : RecBarang; {variabel bertipe record}BeginClrscr;{penugasan nilai terhadap field-field}With Barang doBegin

    Nama := Ubin TISKA 20x20;Writeln (Nama Barang : , Nama);Writeln (Kualitas :, Kualitas);Writeln (Harga :, Harga);

    End;ReadlnEnd.

    Bila suatu record memiliki record lain, pernyataan With dapat diikutidengan with yang lain. Sebagai contoh, program di atas ditulis menjadi :Contoh 4.5

    Program Rec5;Uses crt;Type

    RecTanggal = RecordTanggal,Bulan,Tahun : Integer

    End;RecPegawai = Record

    Nomor : LongInt;Nama : string [35];TglLahir : RecTanggal;Gaji : LongInt

    End;Var

    DataPeg : RecPegawai; {variabel bertipe record}BeginClrscr;{Penugasan nilai terhadap field-field}With DataPeg do

  • 42

    With TglLahir doBegin

    Nomor := 56789;Nama := Badu;Tanggal := 24;Bulan := 12;Tahun := 1972;Gaji := 750000;

    End;{menampilkan isi field}With DataPeg do

    With TglLahir doBegin

    Writeln (Nama Pegawai :, DataPeg.Nama);Writeln (Tanggal lahir :, DataPeg.TglLahir.Tanggal,

    /, DataPeg.TglLahir.Bulan/, DataPeg.TglLahir.Tahun)

    End;ReadlnEnd.

    Pernyataan seperti :With DataPeg do

    With TglLahir doDapat ditulis menjadi :With DataPeg, TglLahir dodengan antar nama record dipisahkan oleh tanda koma.

    Contoh 4.6Program Rec6;Uses crt;Type

    RecTanggal = RecordTanggal,Bulan,Tahun : Integer

    End;RecPegawai = Record

    Nomor : LongInt;Nama : string [35];TglLahir : RecTanggal;Gaji : LongInt

    End;Var

    DataPeg : RecPegawai; {variabel bertipe record}BeginClrscr;{Penugasan nilai terhadap field-field}

  • 43

    With DataPeg, TglLahir doBegin

    Nomor := 56789;Nama := Badu;Tanggal := 24;Bulan := 12;Tahun := 1972;Gaji := 750000;

    End;{menampilkan isi field}With DataPeg, TglLahir do

    BeginWriteln (Nama Pegawai :, DataPeg.Nama);Writeln (Tanggal lahir :, DataPeg.TglLahir.Tanggal,

    /, DataPeg.TglLahir.Bulan/, DataPeg.TglLahir.Tahun)

    End;ReadlnEnd.

    7) Array RecordElemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihatdi bawah ini.Const

    Jum_Maks = 20;Type

    RecBarang = RecordNama : String [25];Kualitas : Char;Harga : LongInt

    End;TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;

    VarDafBarang : TabelBarang; {array record}

    Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20buah elemen bertipe record.Untuk mengakses suatu field, kita perlu menggunakan notasi :

    DafBarang [indeks].NamaField

    Berikut contoh program Array Record.Contoh 4.7

    Program Rec7;Uses Crt;Const

  • 44

    Jum_Maks = 20; {jumlah maksimal jenis baramg}

    TypeRecBarang = Record

    Nama : string [25];Kualitas : char;Harga : longInt

    End;TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;

    VarDafBarang : TabelBarang; {array record}JumBarang : Integer;

    {memasukkan data barang je array DafBarang}Procedure EntriBarang (Var DafBarang : TabelBarang;

    Var JumBarang : Integer);Var

    Indeks : Integer;Begin

    Clrscr;Write (Jumlah Barang (Maksimum = 20) :); Readln (JumBarang);For Indeks := 1 to JumBarang doWith Dafbarang [indeks] doBeginClrscr;Writeln (Data Barang , Indeks, :);Write (Nama :); Readln (Nama);Write (Kualitas :); Readln (Kualitas);Write (Harga :); Readln (Harga);Writeln;End;End; {akhir EntriBarang}

    {menampilkan isi array DafBarang}Procedure InfoBarang (Var DafBarang : Tabelbarang;

    JumBarang : Integer);Var

    Indeks : Integer;Begin

    Clrscr;Writeln (NAMA BARANG:25, KUALITAS:10, HARGA:10);For Indeks := 1 to JumBarang doWith Dafbarang [Indeks] doWriteln (Nama : 25, Kualitas : 10, Harga : 8);End; {Akhir InfoBarang}

    BeginEntribarang (DafBarang, JumBarang);InfoBarang (DafBarang, JumBarang);Readln

    End.

  • 45

    C. PenutupRecord adalah salah satu tipe data terstuktur bentukan yang

    digunakan untuk mempresntasikan sebuah objek yang tidak dapatdipresentasikan menggunakan tipe data dasar, seperti integer, real,boolean, character. Setiap record terdiri dari beberapa elemen yang disebutfield. Setiap field menggambarkan informasi tertentu, dan tipe setiap fieldsudah dikenal, baik itu tipe dasar atau tipe bentukan lainnya.

    Operasi atau manipulasi terhadap record hanya dapat dilakukanterhadap field-field pembentuknya. Pengacuan pada setiap field dilakukandengan record selector. Operasi yang dapat dilakukan terhadap field-fieldtersebut sama dengan operasi yang dapat dikenakan terhadap tipepembentuknya.1) Pertanyaan(a) Buat program untuk menginput dan menampilkan data nilai

    mahasiswa dengan menggunakan array record(b) Buat program mengakses record di dalam record

    2) Umpan Balik dan Tindak LanjutUntuk menguasai materi ini, sebaiknya anda membuat ringkasan

    materi tentang record dan membuat sendiri beberapa program denganmenggunakan record.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai program tersebut benar dan jalan.

    4) Kunci Jawaban

  • 46

    Jawaban bprogram arrayrecord;const max=100;typetsiswa=recordNIM :STRING[9];Nama : string[25];Nilai : real;end;tkumpulansiswa = array[1..max] of tsiswa;vara:tkumpulansiswa;i,n:integer;beginwrite('masukkan jumlah siswa yang akan diisikan :');readln(n);writeln;writeln('memasukkan data');writeln('-------------------------------');for i:= 1 to n dobeginwriteln('Data siswa ke-',i);write('NIM : ');readln(a[i].NIM);write('Nama : ');readln(a[i].Nama);write(Nilai : );readln(a[i].Nilai);writeln;end;writeln;writeln('DAFTAR SISWA');writeln('---------------------------------------------');writeln('NIM ',' ' , 'NAMA'),NILAI;writeln('---------------------------------------------');for i:=1 to n dobeginwith a[i] dobeginwriteln(NIM:9,' ' ,Nama, Nilai);end;end;readlnend.

    Jawaban bProgram Record_dalam_record;Uses crt;Type

    RecTanggal = RecordTanggal,Bulan,Tahun : Integer

    End;

  • 47

    RecPegawai = RecordNomor : LongInt;Nama : string [35];TglLahir : RecTanggal;Gaji : LongInt

    End;Var

    DataPeg : RecPegawai; {variabel bertipe record}BeginClrscr;{Penugasan nilai terhadap field-field}With DataPeg, TglLahir doBegin

    Nomor := 56789;Nama := Badu;Tanggal := 24;Bulan := 12;Tahun := 1972;Gaji := 750000;

    End;{menampilkan isi field}With DataPeg, TglLahir do

    BeginWriteln (Nama Pegawai :, DataPeg.Nama);Writeln (Tanggal lahir :, DataPeg.TglLahir.Tanggal,

    /, DataPeg.TglLahir.Bulan/, DataPeg.TglLahir.Tahun)

    End;ReadlnEnd.

    Daftar PustakaJurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2002. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 2. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 48

    BAB VS O R T I N G

    A. PendahuluanDeskripsi Singkat

    Bab ini akan membahas definisi pengurutan, pengurutan gelembung,pengurutan maksimum/minimum, pengurutan seleksi.Relevansi

    Pengurutan akan memudahkan kita dalam mencari data dalamsebuah program. Pengurutan sangat erat kaitannya dengan pencarian.Tujuan Instruksional Khusus

    Mahasiswa mampu membuat program dengan menggunakanperintah sorting.

    B. Penyajian1) Definisi Pengurutan (Sorting)

    Selain pencarian, pengurutan data merupakan salah satupermasalahan umum yang juga sering dijumpai dalam pemrograman.Sebagai bukti nyata, tinjaulah metode pencarian bagi dua di atas yangmenuntut kita untuk melakukan pengurutan terlebih dahulu sebelum kitamelakukan pencarian.

    Dalam pemrograman, terdapat beberapa metode untuk melakukanpengurutan data. Namun terdapat 8 (delapan) metode yang umumnyabanyak digunakan, yaitu :

    1. Bubble Sort2. Maximum/Minimum Sort3. Selection Sort4. Insertion Sort5. Heap Sort6. Quick Sort

  • 49

    7. Merge Sort8. Shell SortPada pembahasan ini, hanya 3 (tiga) metode yang akan dibahas yaitu

    metode pengurutan gelembung (bubble sort), pengurutanmaksimum/minimum (maximum/minium sort) dan pengurutan seleksi(selestion sort).2) Pengurutan Gelembung (Bubble sort)

    Menurut sumber yang ada, metode ini diinspirasi oleh adanyagelembung sabun yang mengapung di atas permukaan air. Hal initentunya disebabkan karena berat jenis gelembung sabun lebih kecil dariberat jenis air. Konsep dari fenomena tersebut kemudian diterapkansebagai metode pengurutan data di dalam array. Dalam metode ini datadengan nilai terkecil akan diapungkan ke posisi teratas, dan sebaliknyadata dengan nilai terbesar akan berada pada posisi terbawah. Sebagaicontoh, asumsikan bahwa kita memiliki array A yang berisi lima buahelemen data, seperti yang tampak di bawah ini.

    25 22 18 20 15A[1] A[2] A[3] A[4] A[5]

    Gambar 5.1 Array A sebelum diurutkan dengan metode gelembungDi sini kita akan mengurutkan array tersebut secara menaik, yaitu

    dengan mengapungkan nilai terkecil ke posisi teratas (paling kiri). Prosesini tentu akan dilakukan dengan menggunakan pertukaran antar elemenarray. Tahapan-tahapan yang harus dilakukan adalah sebagai berikut.

    Tahap 1Mulai dari A[5] sampai A[2], lakukan perbandingan nilai antara A[k] danA[k-1] dimana variabel k mewakili indeks array yang sedang aktif.Apabila nilai A[k] lebih kecil, maka tukarkan nilai A[k] dengan A[k-1].Sampai di sini, array tersebut akan menjadi seperti berikut.

  • 50

    15 25 22 18 20A[1] A[2] A[3] A[4] A[5]

    Gambar 5.2 Hasil Pengurutan Array A tahap 1

    Tahap 2Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1sehingga array akan menjadi seperti berikut.

    15 18 25 22 20A[1] A[2] A[3] A[4] A[5]

    Gambar 5.3 Hasil Pengurutan Array A tahap 2

    Tahap 3Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1 dan 2sehingga array akan menjadi seperti berikut.

    15 18 20 25 22A[1] A[2] A[3] A[4] A[5]

    Gambar 5.4 Hasil Pengurutan Array A tahap 3

    Tahap 4Tahap ini merupakan tahap terakhir dimana kita akan melakukanperbandingan terhadap nilai dari elemen terakhir (A5]) dengan elementerakhir-1 (A[4]). Apabila nilai A[5] lebih kecil maka tukarkan nilainyadengan A[4] sehingga array A di atas akan terurut secara menaik sepertiyang tampak di baeah ini.

    15 18 20 22 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.5 Hasil Pengurutan Array A tahap 4

    Pada proses yang terjadi di atas tampak jelas bahwa untuk melakukanpengurutan data dengan lima buah elemen, kita harus melakukan empattahapan. Sekarang, apabila proses di atas kita translasikan ke dalambahasa pascal, maka hasilnya adalah sebagai berikut.

  • 51

    Varn, {banyaknya elemen array}j, k {variabel bantu untuk indeks pengulangan}temp : integer; {variabel bantu untuk melakukan pertukarannilai}beginfor j:= 1 to N-1 do beginfor k:= N downto j+1 do beginif A[k] < A[k-1] then begintemp := A[k];A[k] := A[k-1];A[k-1] := temp;End;End;End;End;

    Untuk lebih memperjelas, coba perhatikan implementasinya di dalamprogram berikut.Program UrutGelembung;Uses crt;Constn = 5;A : array [1 . . n] of integer = (25, 22, 18, 20, 15);Varj, k, temp : integer;beginclrscr;{menampilkan data sebelum proses pengurutan}Writeln(Data sebelum diurutkan);For j := 1 to n do beginWriteln(A[, j,] = , A[j];End;Melakukan proses pengurutan data}For j:= 1 to n-1 do beginFor k:= n downto j+1 do beginIf A[k] < A[k-1] then beginTemp :=A[k];A[k] := A[k-1];Ak-1] := temp;End;End;End;{Menampilkan data setelah proses pengurutan}Writeln;Writeln (Data setelah diurutkan);For j:= 1 to n do beginWriteln(A[, j, ] = , A[j]);End;

  • 52

    Readln;End.

    Hasil yang akan diberikan oleh program di atas adalah sebagaii beriku.Data sebelum diurutkan2522182015Data setelah diurutkan1518202225

    3) Pengurutan Maksimum/MinimumDengan metode ini, elemen array dengan nilai maksimum/minimumakan disimpan ke bagian ujung array (elemen pertama maupun terakshir).Selanjutnya nilai tersebut akan diisolasi atau diikat dan tidak diikutkanlagi dalam proses selanjutnya. Di sini, kita hanya akan menggunakanmetode maksimum saja dan tidak akan membahas mengenai metodeminimum. Hal ini disebabkan karena konsep yang terdapat pada metodeminimum sama persis dengan metode maksimum. Untuk mempermudahpembahasan, coba perhatikan kembali array A yang terdapat padabahasan sebelumnya.

    25 22 18 20 15A[1] A[2] A[3] A[4] A[5]

    Gambar 5.6 Array A sebelum diurutkan dengan metode Maksimum/MinimumPada bagian ini kita akan melakukan pengurutan data di dalam arraytersebut dengan menggunakan metode maksimum, di mana kita akanmelempar nilai maksimum ke bagian paling kanan array. Adapuntahapan-tahapan yang perlu dilalui untuk melakukan hal tersebut adalahsebagai berikut.

  • 53

    Tahap 1Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan nilainyadengan elemen terakhir (A[5]) sehingga array akan akan berubah menjadiseperti di bawah ini.

    15 22 18 20 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.7 Hasil Pengurutan Array A tahap 1Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke dalamproses atau tahap selanjutnya.

    Tahap 2Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan nilainyadengan elemen terakhir saat ini (A[4]) sehingga array akan akan berubahmenjadi seperti di bawah ini.

    15 20 18 2 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.8 Hasil Pengurutan Array A tahap 2Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi ke dalamproses atau tahap selanjutnya.

    Tahap 3Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan nilainyadengan elemen terakhir saat ini (A[3]) sehingga array akan tampak sepertidi bawah ini.

    15 18 20 22 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.9 Hasil Pengurutan Array A tahap 3Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi ke dalamproses selanjutnya.

  • 54

    Tahap 4Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dantukarkan nilainya dengan elemen A[2]. Untuk kasus ini nilai maksimumterdapat pada A[2] sehingga di sini benarnya terjadi proses yangseharusnya tidak perlu dilakukan, yaitu menukarkan nilai A[2] denganA[2]. Berikut ini bentuk translasi metode di atas ke dalam bahasa Pascal.Varn, {banyaknya elemen array keseluruhan}x, {banyaknya elemen array yang belum terurut}j, k, {untuk indeks pengulangan}maks, {untuk menyimpan nilai maksimal}imaks, {untuk menyimpan indeks dari elemen yang menyimpan nilai

    maksimal}temp : integer; {variabel bantu untuk proses pertukaran}beginx:= n; {mula-mula semua belum terurut}for j:= 1 to n-1 do beginmaks := A[1];imaks := 1;for k:= 2 to x do beginif(A[k] > maks) then beginmaks := A[k];imaks := k;end;end;{tukarkan maks dengan A[x]}Temp := A[x];A[x] := A[imaks];A[imaks] := temp;{ikat elemen terakshir dengan menurunkan nilai x}x := x 1;end;end;

    4) Pengurutan SeleksiPengurutan dengan metode seleksi ini bekerja dengan cara memilih salahsatu elemen serta menganggapnya sebagai nilai terkecil. Kemudian nilaitersebut aan dibandingkan dengan elemen-elemen pada posisi berikutnya.Apabila nilai yang dipilih pertama kali lebih besar dari nilai elemenpembanding maka tukarkan kedua buah nilai tersebut. Untuk memperjelspembahasan ini, marilah kita perhatikan kembali array A sepertipembahasan sebelumnya. Berikut gambarannya.

  • 55

    25 22 18 20 15A[1] A[2] A[3] A[4] A[5]

    Gambar 5.10 Array A sebelum diurutkan dengan metode SeleksiTahap 1Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu dengan caramemasukkan nilai 1 ke dalam variabel, misalnya dengan nama min. Mulaidari j = min + 1 sampai n (jumlah elemen array), lakukan perbandinganantara A[j] dengan nilai A[min]. Apabila nilai dari A[min] > A[j], isikanmin = j. Setelah pengulangan selesai, tukarkan nilai A[min] dan A[1].Untuk kasus ini, nilai min adalah 5 karena nilai terkecil tersimpan padaindeks ke-5. hal tersebut akan menyebabkan array A tampak menjadiseperti berikut.

    15 22 18 20 15A[1] A[2] A[3] A[4] A[5]

    Gambar 5.11 Hasil Pengurutan Array A tahap 1Tahap 2Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu dengan caramemasukkan nilai 2 ke dalam variabel, misalnya dengan nama min.Kemudian sama seperti di atas, lakukan pengulangan mulai dari j = min +1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan nilai min,maka tukarkan A[min] dengan A[2]. Untuk kasus ini, nilai minimumditemukan pada indeks ke-3 sehingga min = 3. Tukarkan A[min] denganA[2] sehingga array A akan tampak seperti berikut.

    15 18 22 20 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.12 Hasil Pengurutan Array A tahap 2Tahap 3Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu dengan caramemasukkan nilai 3 ke dalam variabel min. Kemudian sama seperti diatas, lakukan pengulangan mulai dari j = min + 1 sampai n danbandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkan

  • 56

    A[min] dengan A[3]. Untuk kasus ini, nilai minimum ditemukan padaindeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehinggaarray A akan tampak seperti berikut.

    15 18 20 22 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.13 Hasil Pengurutan Array A tahap 3

    Tahap 4Mula-mula, A[4] akan dianggap sebagai nilai terkecil, yaitu dengan caramemasukkan nilai 4 ke dalam variabel min. Kemudian sama seperti diatas, lakukan pengulangan mulai dari j = min + 1 sampai n danbandingkan setiap nilainya. Setelah didapatkan nilai min, maka tukarkanA[min] dengan A[4]. Untuk kasus ini, nilai minimum ditemukan padaindeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehinggaarray A akan tampak seperti berikut.

    15 18 20 22 25A[1] A[2] A[3] A[4] A[5]

    Gambar 5.14 Hasil Pengurutan Array A tahap 4

    C. Penutup1) Pertanyaan

    Buat program untuk mengurutkan data mahasiswa dengan metodeseleksi.

    2) Umpan Balik dan Tindak LanjutUntuk menguasai materi ini, sebaiknya anda membuat ringkasan

    materi tentang sorting (pengurutan) dan membuat sendiri beberapaprogram dengan sorting.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,

  • 57

    dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai benar.3) Kunci JawabanProcedure selectionsort;Var

    i, j, temp, imax : integer;begin

    for i:= 1 to n-1 dobegin

    imax := i;for j := i+1 to n do

    if TabInt[j] < TabInt[max] thenimax := j;

    temp := TabInt[imax];TabInt[imax] := TabInt[i];TabInt[i] := temp;

    End;End.

    Daftar PustakaJurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 3. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 58

    BAB VISEARCHING

    A. PendahuluanDeskripsi Singkat

    Bab ini akan membahas definisi pencarian (searching), metodepencarian beruntun, metode pencarian bagi dua.Relevansi

    Pencarian dalam sebuah program akan sangat menguntungkan bagipemrogram apabila akan membuat sebuah program yang mengharuskanadanya pencarian data tertentu. Dengan pencarian, akan membat programlebih efektif.Tujuan Instruksional Khusus

    Mahasiswa mampu membuat program dengan menggunakanperintah searching.

    B. Penyajian(1) Definisi Pencarian (Searching)

    Pencarian (searching) data tertentu yang terkandung di dalam arraymerupakan hal yang banyak ditemukan dalam kasus-kasuspemrograman. Maka dari itu, pada bagian ini kita akan membahasmengenai cara yang seharusnya digunakan untuk melakukan hal tersebutserte pengimplementasiannya di dalam bahasa Pascal. Dalam ilmualgoritma, metode pencarian data di dalam array diklasifikasikan menjadidua, yaitu metode pencarian beruntun (sequential search) dan metodepencarian bagi dua/pencarian biner (binary search). Berikut inipenjelasannya dari kedua metode tersebut.

  • 59

    2) Metode Pencarian BeruntunMetode ini banyak digunakan karena efektif untuk melakukan

    pencarian dari sekumpulan data, baik data sudah terurut maupun yangbelum terurut atau masih acak. Bila dibandingkan dengan yang lainnya,metode ini memiliki cara kerja yang relatif mudah untuk dipahami. Dalammetode ini, data yang dicari akan dibandingkandengan seluruh elemenarray yang ada. Sebagai contoh, apabila kita memiliki array A yangmemiliki indeks 1 sampai n dan kita akan mencari nilai x di dalam arraytersebut, maka nilai x tersebut akan dibandingkan dengan nilai A[1]sampai A[n]. Dalam metode ini juga diterapkan bahwa apabila dataditemukan pada indeks tertentu, maka proses pencarian akan dihentikan.Hal ini bertujuan agar proses pembandingan nilai tidak dilakukan sampaiindeks terakhir karena nilai yang dicari telah ditemukan.Agar lebihmemperjelas, perhatikan gambar proses pencarian data berikut.

    Hentikan pencarian Nilai yg akan dicari

    Gambar 6.1. Pencarian Data dengan Metode Pencarian Beruntun(sumber:Rahardjo)

    Pada gambar di atas, nilai 1, 2, 5 merupakan indeks arraysedangkan nilai 75, 73, 80 merupakan nilai yang terkandung dalamelemen-elemen array. Sekarang misalkan kita akan melakukan pencariandata 78 di dalam array tersebut, maka salah satu cara yang dapatdigunakan adalah dengan membandingkan nilai 78 tersebut denganseluruh elemen array (dari A[1] sampai A[5]). Mula-mula kita akanmembandingkan nilai 78 dengan elemen pertama (A[1]), karena nilainyatidak sama maka pencarian akan dialnjutkan ke elemen berikutnya (A[2]),

    Array A1 752 733 784 815 80

  • 60

    begitu seterusnya. Pada saat elemen ketiga, nilai A[3] sama dengan nilaiyang dicari pencarian akan dihentikan.

    Berikut ini contoh program yang akan menunjukkan implementasidari pencarian array dengan menggunakan metode di atas. Apabila datayang dicari ditemukan dalam array, maka program akan menampilkanindeks dimana data tersebut berada. Sebaliknya, apabila data tidakditemukan maka program akan mengembalikan indeks nol.Program CariBeruntun;Uses crt;Const

    A : array [1 . . 5] of integer = (75, 73, 78, 81, 80);Var

    i, x, indeks : integer;begin

    clrscr;write (Masukkan nilai yang akan dicari : ); readln(x);indeks := 0;for i := 1 to 5 do begin

    if A[i] = x then beginindeks := I;break;

    end;end;writeln (x, ditemukan pada indeks ke-, indeks);readln;

    end.

    Adapun contoh hasil yang akan diberikan oleh program di atasadalah sebagai berikut .Masukkan nilai yang akan dicari : 7878 ditemukan pada indeks ke-3

    Sekarang tinjaulah kasus apabila ternyat data yang dicari dalam arraytidak ditemukan. Sebagai contoh apabila kita memiliki array dengan nbuah elemen, maka dengan metode runtunan ini, program akanmelakukan pembandingan nilai sebanyak n kali, yaitu dari indekspertama sampai indeks ke-n. Hal ini tentu dapat dikatakan sebagai sebuahkelemahan dari metode tersebut.

  • 61

    3) Metode Pencarian Bagi DuaBerbeda dengan metode pencarian beruntun yang dapat digunakan

    untuk data belum terurut, metode pencarian bagi dua ini hanya dapatdigunakan untuk data-data yang telah terurut, baik secara menaikmaupun menurun.

    Dalam metode ini elemen array akan dibagi menjadi dua, sehinggabanyaknya proses pembandingan nilai dapat dikurangi. Sebagai contoh,apabila terdapat array A yang memiliki n buah elemen dengan indeks 1sampai n dan datanya telah terurut secara menaik, maka array tersebutakan dipenggal pada indeks ke-k, dimana k = n + 1 div 2. hal tersebutmengakibatkan array A terbagi menjadi dua bagian, yaitu dari A[1] . .A[k-1] dan A[k+1] . . A[n], sedangkan a[k] menjadi pemenggal ataupembatas antara dua bagian tersebut. Apabila x (nilai yang dicari) samadengan nilai A[k] maka hentikan pencarian, sedangkan bila tidak, periksaapakah nilai A[k] > x ataukah A[k] < x. Bila A[k] lebih besar dari x, makaulangi metode pencarian tersebut untuk A[1] sampai A[k-1]. Sebaliknya,apabila A[k] lebih kecil dari x, maka ulangi metode pencarian tersebutuntuk A[k+1] sampai A[n]. Perhatikan gambar berikut.

    Nilai yang dicariKeadaan pertama

    10 12 14 15 16 18 19 20 22 24 25 26 28 29

    k1 = 7Keadaan kedua

    20 22 24 25 26 28 29

    K2 = 11Keadaan ketiga

    Hentikan pencarian20 22 24

    K3 = 11

    Gambar 6.2. Pencarian Data dengan Metode Pencarian Bagi Dua(sumber:Rahardjo)Pada gambar di atas, array terdiri dari 14 buah elemen yang sudah

    terurut secara menaik dengan indeks 1 sampai 14. Mula-mula (keadaan

  • 62

    pertama), array akan dibagi menjadi dua bagian. Pembatasnya adalahindeks ke-7. Nilai 7 didapat dari (1+14) div 2. Karena nilai pada indeks ke-7 (nilai 19) lebih kecil dari nilai yang dicari (nilai 22), maka prosespencarian akan diulang untuk indeks ke-8 sampai ke-14. Pada keadaankedua ini array tersebut juga akan dibagi menjadi dua. Kali inipembatasnya adalah indeks ke-11, yang berasal dari (8+4) div 2. Karenanilai pada indeks ke-11 (nilai 25) lebih besar dari nilai yang dicari (niali22), maka proses pencarian akan dilakukan lagi untuk indeks ke-8 sampaike-10. Pada keadaan ini (keadaan ketiga), array akan dibagi menjadi duapada indeks ke-9, yang berasal dari (8+10) div 2. Karena nilai pada indekske-9 sama dengan nilai yang dicari, maka proses pencarian pundihentikan. Untuk lebih memperjelas pembahasan serta menunjukkanimplementasinya, perhatikan contoh program di bawah ini.Program CariBagiDua;Uses crt;ConstA : array [1 . . 14] of integer = (10,12,14,15,16,18,19,20,22,24,25,26,28,29);VaridxAwal, {indeks array awal}idxAkhir, {indeks array akhir}k, {indeks pemenggal/pembatas}x : integer; {nilai yang dicari}ketemu : boolean; {variabel status, ditemukan atau tdak ?}beginclrscr;write (masukkan nilai yang akan dicari : ); readln(x);{melakukan pencarian}idxAwal := 1;idxAkhir := 14; {14 adalah jumlah elemen array A}ketemu := false;while (not ketemu) and (idxAwal

  • 63

    end;{memeriksa, ketemu atau tidak}if ketemu then beginwriteln (x, ditemukan pada indeks ke-, k);end else beginwriteln(x, tidak ditemukan);end;readln;end.

    Berikut contoh hasil yang akan diberikan oleh program di atas.Masukkan nilai yang akan dicari : 2222 ditemukan pada indeks ke-9

    C. PenutupPencarian (searching) dilakukan untuk menemukan nilai tertentu pada

    sejumlah nilai yang tersedia. Terdapat bermacam-macam programpencarian yang telah dikembangkan dengan ide dasar yang berbeda. Duadiantaranya adlah pencarian beruntun dan pencarian bagi dua.

    Pencarian beruntun dilakukan dengan melakukan perbandingan nilaiyang dicari dengan setiap elemen array, mulai dari indeks terkecil sampaiindeks terbesar yang terdefinisi. Pencarian dihentikan jika nilai yangdicari telah ditemukan atau semua elemen sudah diperiksa. Mencari nilaiterbesar atau terkecil adalah contoh lain dari proses beurtan terhadaparray.

    Metode pencarian bagi dua ini hanya dapat digunakan untuk data-data yang telah terurut, baik secara menaik maupun menurun. Dalammetode ini elemen array akan dibagi menjadi dua, sehingga banyaknyaproses pembandingan nilai dapat dikurangi.

  • 64

    1) PertanyaanBuat program untuk mencari nilai tertentu dengan metode pencarianberuntun.

    2) Umpan Balik dan Tindak LanjutUntuk menguasai materi ini, sebaiknya anda membuat ringkasan

    materi tentang searching (pencarian) dan membuat sendiri beberapaprogram dengan searching.

    Jawab pertanyaan di atas dengan langsung membuat program dikomputer. Jalankan program tersebut sampai benar. Hapus kembalilisting program yang sudah benar dan buat kembali program tersebut,dan jalankan. Kalau tingkat kesalahan pada pembuatan program sudahkecil, anda dapat melanjutkan materi berikutnya. Kalau program belumjalan, perbaiki terus sampai benar.3) Kunci JawabanProgram pencarian_beruntun;Const

    nmin = 1;nmax = 100;

    typearrint = array [nmin..nmax] of integer;

    varx : integer;TabInt : arrint;n : integer;indeks : integer;function cari1 (xx: integer) : integer;var

    i : integer;begin

    i := 1;while ((i

  • 65

    indeks := cari1 (x);if indeks 0 then

    write (x, ditemukan pada indeks ke- , indeks)else

    write (x, tidak ditemukan);end.

    Daftar PustakaJurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah Pengajaran

    PHK A1 Universitas Negeri GorontaloKadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta: Andi

    Offset.Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam bahasa Pascal

    dan C Edisi 3. Bandung: Informatika.Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika

  • 66

    BAB VIIRECORD

    I. TeoriRecord adalah elemen larik yang bertipe terstruktur. Dengan menggunakantipe data record, beberapa item data yang masing-masing dapat mempunyaitipe data berbeda-beda dapat dikumpulkan. Masing-masing item data disebutdengan field. Jadi record terdiri dari kumpulan field yang dapat berbeda tipe.Biasanya suatu record berisi beberapa field untuk sebuah subyek tertentu.Misalnya record TabelMhs dalam Gambar 6.1. adalah sebuah larik (sejumlah100 elemen) yang elemennya menyatakan nilai ujian mata kuliah (MK) yangdiambil seorang mahasiswa. Data (field) setiap mahasiswa adalah NIM(Nomor Induk Mahasiswa), nama mahasiswa, mata kuliah yang diambil, dannilai mata kuliah tersebut.

    Tabel Mhs

    NIM NamaMhs KodeMK Nilai1 0604100001 M. Khairuddin FTC155 A2 0604100002 Agastya FTC165 B3 0604100003 Budi Kusuma FTC177 D4 0604100004 Marina FTC178 B5 0604100005 Eliawati FTC180 A..

    100 0604100100 Prasetyo FTC185 C

    Gambar 6.1. Struktur Record TabelMhs

    II. PrepraktikumKerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.

    1. Sebutkan dan jelaskan keuntungan-keuntungan penggunaanrecord!

  • 67

    2. Kapankan sebaiknya record digunakan? Jelaskan!3. Buatlah algoritma untuk mengurutkan data berdasarkan nomor

    mahasiswa (NPM) dengan urutan dari yang terkecil ke yang terbesar sertamempunyai kemampuan untuk menampilkan jumlah total mahasiswasesuai dengan kriteria yang dimasukkan oleh user.Misalnya: user ingin mengetahui jumlah mahasiswa yang mempunyai nilaiA untuk mata kuliah X, maka algoritma akan menampilkan jumlahmahasiswa yang mempunyai nilai A untuk mata kuliah X .Masukan : jumlah mahasiswa.

    Selanjutnya memasukkan record data mahasiswa. Data (field)setiap mahasiswa adalah NPM (Nomor Pokok Mahasiswa),nama mahasiswa, mata kuliah yang diambil, dan nilai matakuliah tersebut

    Keluaran : hasil pengurutan data berdasarkan NPMHasil ditampilan dalam bentuk tabel seperti di bawah ini :

    NPM Nama Kode Nilai

    III. Kegiatan PraktikumPada saat praktikum, kerjakan tugas-tugas berikut ini:1. Buat program untuk tugas prepraktikum 3!2. Tugas tambahan (ditentukan oleh asisten praktikum)!

    IV.Tugas AkhirBuatlah algoritma dan terjemahkan dalam bahasa pascal untuk

    memasukkan data belanja dan menampilkannya dalam bentuk nota Belanja. TotalHarga dan Total belanja didapat dengan melakukan proses perhitungan kemudianhasil nya ditampilkan dalam bentuk seperti contoh dibawah ini.

  • 68

    Nota Belanja BarangToko ABADI

    Jl. Riwa-riwi No. 123 Sorong

    Tanggal Pembelian : 04-11-2009Nama Pembeli : Yoremi SidoAlamat : Jl. Suka-suka No. 321 Sorong

    No Kode Barang Nama Barang Harga Satuan(Rp)

    Jumlah Harga x Jumlah(Rp)

    1 AB123 Barang A 15000 2 300002 BC234 Barang B 20000 1 200003 CD345 Barang C 25000 2 500004 DE456 Barang D 30000 3 900005 EF567 Barang E 35000 4 140000

    T O T A L B E L A N J A (Rp) 330000

  • 69

    BAB VIIIFILE

    A. PendahuluanDeskripsi Singkat

    Bab ini akan membahas definisi file, variabel file, membuka file,memanipulasi data dalam file, menutup file.Relevansi

    Data dalam sebuah program yang telah dibuat dengan berbagaimateri pada bab sebelumnya dapat disimpan untuk digunakan kembalidengan perintah file. Dengan demikian, apabila komputer dimatikanmaka datanya tidak akan hilang.Tujuan Instruksional Khusus

    Mahasiswa mampu membuat program dengan menggunakanperintah file.

    B. Penyajian1) Definisi File

    Dalam kasus-kasus pemrograman tertentu kita sering disudutkanuntuk menggunakan file sebagai media yang digunakan untukmenyimpan data-data, baik berupa data input (untuk masukan) maupunsebagai data output (untuk keluaran). Sebagai contoh, apabila kitamenggunakan sistem operasi Microsoft Windows maka kita akanmenemukan file sistem seperti autoexec.bat, config.sys, system.ini danlainnya. File tersebut sebenarnya digunakan untuk menyimpan data-datasecara terpisah sehingga nilainya dapat diubah dengan mudah sesuaidengan kebutuhan. Sebagai seorang programmer, kita tentu dituntutuntuk dapat menggunakan (mengakses) file dari dalam prograam yangkita buat. Berdasarkan prosedur yang ada, proses pengaksesan file didalam bahasa Pascal terdiri dari emapt tahap, yaitu :

  • 70

    (a) Menghubungkan file fisik yang akan dibuka atau dibuat denganvariabel file

    (b) Membuka file(c) Melakukan operasi file (membaca atau menulis)(d) Menutup file2) Variabel File

    Sebelum file dapat dibuka atau dibuat oleh program, kita harusmenghubungkannya dengan variabel file terlebih dahulu. Variabel filemerupakan peralatan logik yang digunakan sebagai perantara dalmmentransfer atau membaca data dari atau ke sebuah file fisik yangtersimpan di dalam disk. Dengan kata lain, sebenarnya kita tidak secaralangsung memanipulasi file fisik tersebut, melainkan melalui variabel file.Dalam bahasa Pascal, variabel seperti ini dianggap sebagai variabel biasayang dideklarasikan dengan tipe file tertentu. Cara yang harus dilakukanuntuk dapat menghubungkan file fisik dengan variabel file adalah denganmenggunakan prosedur Assign, yang memeiliki bentuk umum sebagaiberikut.Procedure Assign (NamaVariabelFile, NamaFileFisik);

    NamaVariabelFile merupakan nama variabel yang sebelumnya harusdideklarasikan terlebih dahulu, sedangkan NamaFileFisik merupakannama file yang akan dibuka atau dibuat. Perlu diperhatikan bahwa namafile tersebut harus dituliskan secara lengkap beserta lokasi atau path-nya.Sebagai contoh, apabila kita ingin membuka file dengan namaCONTOH.TXT yang terdapat di dalam direktori COBA di drive D, makakode yang harus dituliskan adalah sebagai berikut.

    VarF:TextFile; {mendeklarasikan variabel file denagn nama F}BeginAssign (F, D:\COBA\CONTOH.TXT);. . .end.

  • 71

    Sedangkan apabila file yang akan kita akses berada dalam satudirektori dengan program (file eksekusi) yang kita buat, maka kita tidakperlu menuliskan lokasi atau path-nya. Artinya kita hanya perlu untukmenuliskan nama file-nya saja seperti berikut.Assign (F, CONTOH.TXT);

    Pada kode di atas, file CONTOH.TXT akan dihubungkan denganvariabel F. Selanjutnya yang akan dimanipulasi di dalam program adalahvariabel F. Namun karena variabel tersbut sebenarnya menunjuk ke filefisik, maka setiap perubahan yang terjadi di dalam variabel F tentu akanmempengaruhi isi dari file CONTOH.TXT.

    Hal yang perlu diperhatikan di sini adaalah bahwa walaupun filetersebut sudah terhubung dengan variabel file, namun file masih dalamkeadaan tertutup sehingga kita perlu membukanya terlebuh dahulusebelum kita mengakses data yang terdapat di dalamnya.3) Membuka File

    Seteleh file tersebut dihubungkan dengan variabel file, maka langkahselanjutnya yang perlu dilakukan adalah membuka file. Dalam bahasaPascal, terdapat tiga buah prosedur yang dapat digunakan untukmembuka file, yaitu Rewrite, Reset dan Append.(a) Prosedur Rewrite

    Prosedur ini digunakan untuk membuka file yang sama sekali belumterdapat di dalam disk. Artinya, di sini kompiler akan melakukan prosespembuatan file baru sekaligus membuka file tersebut. Bentuk umum dariprosedur Rewrite adalah sebagai berikut.

    Procedure Rewrite(NamaVariabelFile[:File;UkuranRecord : Word]);

    Bila file yang dibuka berupa file teks, maka file tersebut akan bersifatwriteonly atau tidak dapat dibaca, artinya operasi yang diizinkan untuk

  • 72

    file tersebut hanyalah operasi tulis. UkuranRecord merupakan ekspresiyang bersifat opsional yang hanya disertakan apabila file yang dibukamerupakan file tanpa tipe. Nilai tersebut akan digunakan sebagai ukuranrecord dalam transfer data. Nilai tersebut akan digunakan sebagai ukuranrecord dalam transfer data. Apabila dihilangkan, maka UkuranRecord inialan dianggap bernilai 128 byte. Untuk lebih memahami penggunaanprosedur ini, perhatikan contoh program sederhana ini.Program ContohRewrite;VarF : TextFile;BeginAssign (F, D:\CONTOH.TXT);Rewrite (F);End.

    Jalankan program tersebut dan lihatlah drive D pada komputer anda,maka di situ pasti akan tercipta file baru dengan nama CONTOH.TXTdimana isinya kosong. Apabila anda bereksperimen untuk membuka fileeyang sudah ada sebelumnya dengan menggunakan prosedur Rewritemaka isi dari file tersebut akan ditimpa dengan isi file baru. Satu hal lagiyang perlu diperhatikan adalah bahwa etelah pemanggilan prosedurRewrite, fungsi EOF (end-of-file) akan selalu menghasilkan nilai true.(b) Prosedur Reset

    Prosedur ini digunakan untuk membuka file yang sebelumnya sudahada di dalam disk. Hal ini bertujuan untuk membaca isi dari file tersebutuntuk kemudian dimanipilasi sesuai dengan kebutuhan. Perlu sekaliuntuk diperhatikan bahwa apabila file yang dibuka merupakan file teks,maka variabel file akan bersifat read only (hanya dapat dibaca). Berikut iniprototype dari prosedur Reset.Procedure Reset (NamaVariabelFile [: file; UkuranRecord: word]);

    UkuranRecord merupakan ekspresi yang bersifat operaional yanghanya disertakan apabila file yang dibuka merupakan file tanpa tipe.UkuranRecord sendiri berfungsi untuk menentukan ukuran record dalam

  • 73

    proses transfer data. Apabila nilai tersebut dihilangkan, maka nilainyaakan dianggap 128 byte. Sebagai contoh, kita telah memiliki fileSAMPLE.TXT yang disimpan di rive D dan isinya seperti berikut.Teknik Pemrograman PascalOleh : Budi RaharjoTahun : 2005Penerbit : INFORMATIKA

    Selanjutnya kita ingin membaca isi file tersebut dan ditampilkan dilayar monitor, maka kita dapat menggunakan prosedur Reset seperti yangtampak pada kode berikut.Program ContohReset;Uses crt;VarF : TextFile;Teks : string;BeginAssign (F, D :\SAMPLE.TXT);Reset (F);While not eof (F ) do beginReadln (F, teks) ; {membaca data dari file dan mengisikannya ke variabel teks}Writeln (teks); menampilkan variabel teks ke layar}Close (F);Readln;End.

    Sekarang coba jalankan program tersebut dan akan melihat bahwaseluruh isi dari file SAMPLE.TXT akan ditampilkan di layar monitor.Apabila kita menggunakan prosedur Reset pada file yang belum terdapatdi dalam disk maka kompiler akan menampilkan pesan kesalahan padasaat program dijalankan.(c) Prosedur Append

    Prosedur ini digunakan untuk menambahkan isi file yang sebelumnyasudah terdapat di dalam disk. Isi yang ditambahkan selalu berada padabagian akhir dari isi file yang sudah ada sebelumnya. Dalammenggunakan prosedur ini kita tidak perlu memanggil prosedur Rewritemaupun reset karena prosedur Append secara otomatis akan membuka

  • 74

    file yang telah dihubungkan dengan variabel file. Namun sebagai catatanbagi Anda bahwa prosedur Append hanya dapat digunakan apabila fileyang dibuka merupakan file teks. Berikut ini bentuk umum dari prosedurAppend.Procedure Append (NamaVariabelFile: Text ) ;

    Apabila anda membuka file teks yang belum ada didalam diksdengan menggunakan prosedur Append, maka akan terjadi kesalahanpada saat program sedang berjalan (run-time). Setiap pemanggila prosedurAppend, file bersifat write-only (hanya dapat ditulis) dan posisi file akandiset pada bagian akhir baris file. Untuk dapat lebih memahaminya,buatlah file teks (*.TXT) dengan program teks editor yang tersedia,misalnya Notepad, kemudian isikan teks berikut ke dalamnya.Ini adalah data yang dituliskan pada baris pertama.Ini adalah data yang dituliskan pada baris pertama.

    Sebagai contoh, file tersebut disimpan dengan nama TEST.TXT padadrive D di dalan direktori COBA. Selanjutnya kita ingin menamnbahkandua buah baris data ke dalam file di atas, maka kita dapat melakukannyamelalui kode program dibawah ini.Program ContohAppend;UsesCrt;VarF: TextFile;BeginAssign (F,D:\COBA\TEST.TXT) ;Append (F) ; {Membuka file untuk di tambah isinya}{Menambahkan data ke dalam file}writeln (F,Ini adalah data pertama yang ditambahkan) ;writeln (F,Ini adalah data kedua yang ditambahkan) ;close(F) ;end.

    Ini adalah data yang dituliskan pada baris pertamaIni adalah data yang dituliskan pada baris keduaIni adalah data pertama yang ditambahkanIni adalah data kedua yang ditambahkan

  • 75

    4) Memanipulasi Data Dalam FileSetelah Anda mengerti cara untuk mengkaitkan atau menghubungkan

    file ke variabel file dan juga bagaimana cara membuka file tersebut makakini saatnya Anda mengetahui bagaimana cara memanipulasi data dalamfile dari program yang kita buat. Untuk melakukan hal tersebut tentuAnda harus memahami dengan benar cara membaca data dan menuliskandata kedalam file.(a) Menulis Data ke Dalam File

    Dalam bahasa Pascal, proses penulisan data ke dalam file dapatdilakukan dengan menggunakan prosedur Write, Writeln maupunBlockWrite. Untuk informasi lebih detil mengenai masing-masingprosedur tersebut, Anda dapat melihat sub bab di bawah ini.(1) Menggunakan Prosedur Write

    Prosedur Write digunakan untuk menuliskan data kedalam filedimana posisi kursor tidak akan dipindahkan kebaris selanjutnya.Berikut ini bentuk prototipe dari prosedur Write.Procedure Write (NamaVariabelFile; VI [ , V2..VN] ) ;

    Dimana V1..VN adalah nama variabel yang akan digunakan untukmenyimpan data yang akan dituliskan. Walaupun demikian, Andajugadapat menuliskannya secara langsung tanpa harus menyimpannyaterlebih dahulu ke dalam variabel seperti yang tampak pada kode berikut.write (F,Mencoba menuliskan data ke dalam file);

    Berdasarkan kode di atas, maka teks tersebut akan dimasukkan atauditulis ke dalam file yang telah dihubungkan dengan variabel file F.Untuk lebih memahaminya, perhatikan contoh program di bawah inidimana kita akan melakukan penulisan terhadap file DATA.TXT yangterdapat pada dir