modul algoritma dan pemprograman lanjut

Upload: robygunawanbaskoro

Post on 17-Oct-2015

62 views

Category:

Documents


1 download

DESCRIPTION

modul algoritma dan pemprograman lanjut

TRANSCRIPT

  • Dalam sebuah program besar dan kompleks, untuk mempermudah dalam proses

    pemprogramannya program tersebut dapat dipecah menjadi beberapa sub program yang

    lebih kecil. Tiap sub program tadi disebut modul, nah modul tadi digunakan pada program

    utama ketika dibutuhkan dengan memanggil modul tersebut. teknik pemprograman ini

    disebut pemprograman modular.

    Memecah program menjadi modul-modul tentunya akan lebih memudahkan dalam

    mencari kesalahan, memperbaiki serta membuat dokumentasinya. Pembuatan modul di

    Turbo Pascal dibagi dua jenis yaitu : Prosedur dan Fungsi. Prosedur atau Fungsi adalah suatu

    modul program yang terpisah dari program utama, diletakan dalam blok tersendiri yang

    berfungsi sebagai bagian dari program. Setiap prosedur diawali dengan kata Procedure,

    sedangkan Fungsi diawali dengan kata cadangan Function.

    Prosedur atau Fungsi banyak digunakan pada program terstruktur, karena :

    1. Merupakan penerapan konsep modular, yaitu memecah program menjadi modul-

    modul

    2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja

    dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila

    diperlukan.

    Prosedur (Procedure)

    Prosedur memiliki struktur yang sama dengan struktur program, yaitu terdiri dari

    nama prosedur, deklarasi-deklarasi dan bagian perintah - perintahnya (statement atau aksi di

    dalam prosedur). Semua deklarasi di dalam prosedur (contohnya variabel) bersifat lokal

    sehingga hanya bisa digunakan oleh prosedur itu saja, sedangkan deklarasi di dalam program

    utama bersifat global sehingga dapat digunakan di seluruh bagian program. Struktur umum

    prosedur adalah sebagai berikut :

    Apa harus selalu menggunakan prosedur?

    Apakah dalam suatu program harus selalu terdapat prosedur? Jawabannya adalah

    tidak. Bila kita membuat program yang sangat sederhana, misalnya program untuk

    menampilkan kata hello world, maka gak usah menggunakan prosedur. Untuk lebih

    jelasnya mari kita lihat contoh program menghitung luas dan keliling persegipanjang yang

    menggunakan prosedur dan tanpa prosedur.

    Procedure Nama_Prosedur ;

  • Pada program tanpa prosedur maka seluruh statement dituliskan di dalam blok

    program utama, sehingga ketika program semakin besar maka blok program utama semakin

    padat. Tetapi bila menggunakan prosedur maka di dalam blok program utama akan lebih

    sedikit, karena hanya berisi nama prosedur yang dibutuhkan dan statement tambahan

    lainnnya yang dibutuhkan. Pada contoh diatas nama prosedur yang dipanggil di dalam blok

    program utama yaitu Hitung_Luas dan Hitung_Keliling.

    Ketika kita membuat suatu program tanpa prosedur maka seluruh statement yang

    terdapat di dalam program utama akan dieksekusi secara beruntun (sequential) dari atas ke

    bawah, sedangkan bila menggunakan prosedur, maka program utama hanya akan

    mengeksekusi prosedur-prosedur yang dipanggil, bila prosedur tersebut dipanggil di dalam

    program utama, jadi bila untuk sementara kita tidak membutuhkannya, maka cara mudah

    yang dapat kita lakukan yaitu tidak usah menghapusnya tetapi cukup dengan tidak

    memanggilnya di dalam blok program utama.

    Global Variabel VS Local Variabel

    Global variabel adalah variabel yang dideklarasikan di program utama setelah

    statement Var di dalam bahasa pemprograman pascal dan global Variabel bisa digunakan

    di seluruh program. Sedangkan local variabel adalah variabel yang di deklarasikan didalam

    sub program seperti prosedur, dan local variabel hanya bisa digunakan didalam prosedur itu

    saja dan tidak bisa digunakan didalam prosedur lain maupun program utama.

    Udah itu aja penjelasannya.....

    uses crt;

    var

    p,l:byte;

    ls,kel:integer;

    begin

    write('Masukan panjang : ');readln(p);

    write('Masukan lebar : ');readln(l);

    writeln;

    ls:=p*l;

    Kel:=(2*p)+(2*l);

    writeln('Luas : ',ls);

    writeln('Keliling : ',kel);

    readln;

    end.

    Tanpa prosedur uses crt; var

    p,l:byte;

    ls,kel:integer;

    Procedure Hitung_Luas;

    begin

    ls:=p*l;

    writeln('Luas :',ls);

    end;

    Procedure Hitung_Keliling;

    begin

    kel:=(2*p)+(2*l);

    writeln('Keliling :',kel);

    end;

    begin

    write('Masukan panjang : ');readln(p);

    write('Masukan lebar : ');readln(l);

    writeln;

    Hitung_Luas;

    Hitung_Keliling;

    readln;

    end.

    Dengan prosedur

  • Parameter

    Parameter adalah sebuah variabel yang dideeklarasikan didalam prosedur tapi tidak

    seperti local variabel parameter bisa digunakan di luar prosedur sebagai acuan atau patokan

    dari nilai prosedur itu sendiri. Penulisan parameter adalah setelah pendeklarasian nama

    prosedur.

    Nah pada pendeklarasiannya di dalam prosedur parameter tersebut disebut

    parameter formal (formal parameter). Sedangkan pada pemanggilannya di program utama

    prosedur diikuti variabel yang digunakan untuk parameter ini disebut Parameter aktual

    (Actual Parameter).

    Untuk lebih jelasnya mari kita lihat contoh penggunaan prosedur dengan parameter

    berikut:

    Pada program diatas parameter yang ditandai dengan warna merah adalah parameter

    formal dan yang berwarna biru adalah parameter aktual.

    Kemudian Pada pengirimannya parameter dibagi menjadi dua yaitu

    1. Pengiriman Parameter secara nilai (by Value)

    2. Pengiriman Parameter secara acuan (by refrence)

    Kita bahas satu persatu

    Pengiriman parameter secara nilai (by value)

    Jika parameter dikirim secara nilai (by value), maka parameter formal yang

    terletak di dalam pendefinisan prosedur akan berisi nilai yang dikirimkan dari parameter

    aktual, yang kemudian bersifat lokal di prosedur tersebut. Bila nilai parameter formal di dalam

    prosedur tersebut berubah, maka tidak akan mempengaruhi nilai parameter aktual (nilai

    parameter aktual tetap).

    Procedure Nama_Prosedur(parameter1 : tipedata, parameter2 : tipedata);

    uses crt;

    var

    ls,p,l:integer;

    Procedure Hitung_Luas(panjang,lebar : integer);

    begin

    ls:=panjang*lebar;

    writeln('Luas :',ls);

    end;

    begin

    write('Masukan panjang : ');readln(p);

    write('Masukan lebar : ');readln(l);

    writeln;

    Hitung_Luas(p,l);

    readln;

    end.

    Contoh Program

  • Pengiriman parameter secara acuan (by reference)

    Bila parameter dikirimkan secara acuan (by refence), maka perubahan-perubahan

    yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter

    aktual di blok program utama. Perbedaanya hanya pada pendeklarasian parameter

    formalnya saja dengan menambahkan var sebelumnya.

    Fungsi (Function)

    fungsi sebenarnya sama dengan sebuah prosedur. Perbedaannya, pada fungsi

    terdapat pengembalian nilai, sehingga pada saat pemanggilan, fungsi dapat langsung

    digunakan untuk mengisikan sebuah ekspresi.

    Yang membedakan antara prosedur dan fungsi dalam pendeklarasiannya adalah

    fungsi memiliki tipedata dan dapat digunakan dalam program utama maupun didalam fungsi

    itu sendiri.

    Berikut ini adalah contoh program yang menggunakan fungsi.

    Dari contoh program diatas terlihat dalam penggunaannya fungsi terlihat sama persis

    dengan prosedur yang telah dijelaskan sebelumnya, letak perbedaanya Cuma kalau fungsi

    dapat menyimpan nilai yang bisa digunakan di program utama, oleh karena itu dalam

    pemanggulannya fungsi bisa langsung melalui writeln,atau dengan menampilkan langsung

    nilai yang tersimpan dalam fungsi tersebut. Nah jika muncul pertanyaan kapan harus

    menggunakan fungsi dan kapan harus menggunakan prosedur. Jawabannya tergantung

    kebutuhan program, jika program membutuhkan nilai kbalik ke program maka menggunakan

    fungsi karena fungsi mempunyai kelebihan bisa menyimpan nilai. Sebaliknya jika tidak dan

    hanya berisi perintah perintah saja maka bisa menggunakan prosedur.

    Function Nama_Function : tipe_data;

    uses crt;

    Function Luas(p,l:integer ):integer;

    Luas:=p*l;

    var

    pj,lbr:integer;

    begin

    writeln('Program Untuk Menghitung luas persegipanjang');

    writeln;

    write('Masukan panjang : ');readln(pj);

    write('Masukan lebar : ');readln(lbr);

    write('Luasnya = ',Luas(pj,lbr));

    readln;

    end.

    Contoh Program

  • NamaArray[Indeks]:=Nilai;

    3.

    Array adalah salah satu jenis struktur data yang disediakan dalam bahasa pemprograman

    pascal. dapat menyimpan beberapa nilai dan nilai nilai tadi disebut elemen array, dan setiap

    elemen memiliki posisinya masing masing yang disebut indeks. Dalam pascal ukuran

    kapasitas yang dapat ditampung dalam array harus ditentukan dalam pendeklarasian array

    tersebut dan tidak bisa melebihi ukuran tersebut. Dan data yang disimpan dalam array harus

    bertipe sama

    Deklarasi Array

    Pendeklarasian array adalah sebagai berikut:

    Dalam contoh pendeklarasian array diatas, mendeklarasikan array yang ber indeks 1

    hingga 10 bertipedata integer sehingga kapasitas data yang bisa ditampung dalam array

    tersebut adalah 10 dan hanya dapat berisi bilangan bulat.

    Mengakses elemen array

    Setelah mengetahui cara pendeklarasian array, selanjutnya kita harus mengetahui

    bagaimana cara untuk memasukkan nilai kedalam array tersebut. Langkah pertama yang

    harus dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan. Bentuk

    umum untuk pengisian elemen array adalah sebagai berikut.

    var

    n: array [1..10] of integer;

    Contoh Pendeklarasian Array

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

  • Untuk lebih memahaminya mari kita lihat ke contoh program

    Pada program diatas terlihat bagaimana menginputkan nilai kedalam 1 -5 indeks array

    yang tersedia/dideklarasikan sebelumnya. Nah program diatas dapat dipadukan dengan

    perulangan sehingga terlihat lebih sederhana.

    Mengapa Harus Menggunakan Array

    Bagi yang baru mempelajari array, mungkin akan mucul pertanyaan kenapa harus

    pakai array? Untuk menjawab pertanyaan tersebut, coba perhatikan contoh kasus berikut.

    Apabila kita akan membuat program untuk menyimpan sekumpulan data, misalnya

    data-data yang berupa bilangan, dimana jumlah dari data tersebut puluhan, ratusan atau

    bahkan ribuan, apakah akan menggunakan variabel sebanyak data yang ada? Jawabannya

    tentu tidak, karena hal tersebut merupakan hal yang sangat tidak efisien. Lihat contoh

    program dibawah ini.

    Uses Crt;

    Var

    N: array [1..5] of integer;

    Begin

    N[1] :=1; //mengisi elemen 1 dengan nilai 1

    N[2] :=2; //mengisi elemen 2 dengan niali 2

    N[3] :=3; //mengisi elemen 3 dengan niali 3

    N[4] :=4; //mengisi elemen 4 dengan nilai 4

    N[5] :=5; //mengisi elemen 5 dengan niali 5

    end.

    Contoh program

    Uses Crt;

    Var

    N: array [1..5] of integer;

    i:integer

    Begin

    For i:=1 to 5 do

    N[i] :=i;

    end.

    Contoh program

    Var

    N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;

    Begin

    Writeln(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.

    Contoh program

  • Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di atas memang masih

    pendek karena datanya hanya 10, nah gimana kalo ratusan ata bahkan ribuan?

    Untuk mengatasi masalah ini, seharusnya kita menggunakan array untuk menyimpan data-

    data tersebut sehingga program akan jauh lebih sederhana dan mudah dalam pengerjaannya.

    Berikut ini perbaikan program di atas apabila kita menampung data-datanya ke dalam sebuah

    array.

    Apabila ternyata data berjumlah 100 atau 1000, maka kita hanya perlu mengganti nilai

    dari ukuran array di atas dengan nilai yang sesuai. Alasan seperti inilah yang menyebabkan

    kita perlu untuk menggunakan array.

    Array Sebagai Parameter

    Pada bab sebelumnya telah dijabarkan penggunaan Procedure/Function, nah pada

    kasus kasus pemprograman tertentu dibutuhkan penggunaan array sebagai parameternya.

    Contohnya adalah ketika pada saat kita akan melakukan pencarian maupun pengurutan danta

    yang akan dibahas lebih lanjut pada bab selanjutnya. Untuk lebih jelasnya berikut adalah

    contoh program penggunaan array dalam procedure .

    Pada contoh program di atas terdapat prosedur yang memiliki parameter bertipe

    array. Prosedur tersebut akan digunakan untuk melakukan pengisian elemen array sebanyak

    N, yang sesuai ukuran array tersebut nilai N antara 1 sampai 100.

    Hal yang Perlu diperhatikan dari contoh program diatas bahwa array yang dilewatkan sebagai

    parameter ini harus dideklarasikan terlebih dahulu. Melalui type. Berikut ini contoh

    penggunaan prosedur yang menggunakan parameter array yang salah dalam program.

    Var

    n : array [1 . . 10] of real;

    i : integer;

    begin

    for i:= 1 to max do

    writeln(Masukkan data ke-, i, : ); readln(n[i]);

    end.

    Contoh program

    Type

    Bilangan = array[1..100] of integer;

    Procedure inputArray(a:bilangan; N:integer);

    Var

    i : integer;

    Begin

    For i := 1 to N do

    Write (masukkan elemen array ke-, i); readln(A[i]);

    End;

    Contoh program

    Procedure InputArray (A:array[1..100] of integer; );

  • Berikut ini yang benar.

    Untuk lebih memahaminya, perhatikan contoh lengkap program yang menggunakan

    array sebagai parameter dari sebuah prosedur.

    OUTPUT:

    Type

    Larik=array[1..100] of integer;

    Procedure InputArray [A:array of integer; N);

    Uses crt;

    type

    Bilangan = array [1..100] of integer;

    var

    Arr:bilangan;

    count:integer;

    Procedure InputArray(A:bilangan; N:integer);

    Var

    i:integer;

    Begin

    Writeln (Memasukkan data :);

    For i : 1 to N do

    Write(Masukkan nilai A[, i, ] : ); readln(A[i]);

    End;

    Procedure OutputArray (A:bilangan; N:integer);

    Var

    i:integer;

    begin

    writeln(Menampilkan data :);

    for i : 1 to N do

    write (A[, i, ] = , A[i]);

    end;

    Begin

    Write (Masukkan banyaknya elemen array :); readln(count);

    Writeln;

    OutputArray (Arr, count);

    Readln;

    End.

    Contoh program

    Memasukkan data :

    Masukkan nilai A[1] : 10

    Masukkan nilai A[2] : 20

    Masukkan nilai A[3] : 30

    Menampilkan data :

    A[1] = 10

    A[2] = 20

    A[3] = 30

  • Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-

    masing dapat berlainan tipe.

    Suatu record dideklarasikan dengan bentuk sebagai berikut :

    Masing-masing Nama_field dapat berupa satu atau beberapa nama pengenal dan

    masing-masing dinamakan field. Bila nama_field berisi lebih dari satu field , antar field perlu

    dipisahkan dengan koma. Masing-masing tipe dapat berupa tipe data apa saja termasuk array.

    Berikut ini adalah contoh potongan program pendeklarasian record:

    Pada contoh diatas di deklarasikan sebuah record barang yang berisi tiga field yaitu

    Nama

    Kulaitas

    Harga

    Dan dideklarasikan kembali sebagai variabel barang. Nah utnuk mengakses record tadi seperti

    contohnya memasukkan data kedalam record dengan perintah

    Contohnya: barang.Nama

    type

    Namarecord = RECORD

    NamaField_1 : tipedata_1;

    NamaField_2 : tipedata_2;

    . . .

    NamaField_n : tipedata_n;

    end

    Type

    RecBarang = Record

    Nama : String;

    Kualitas : Char;

    Harga : LongInt

    End;

    Var

    Barang : RecBarang;

    Contoh program

    Variabel.Field

  • Berati perintah diatas adalah mengakses field nama dari variabel record yang bernama

    barang.

    Untuk lebih jelas memahami tentang record silahkan liat contoh program berikut.

    Mengkopi isi Antar Record

    Jika dua buah record (misal R1 dan R2) memiliki masing-masing field yang sama dan bertipe

    sama maka untuk mengkopi isi dari antar record tersebut dapat dilakukan:

    Perintah di atas merupakan penyederhanaan dari sederetan pernyataan berikut :

    Untuk lebih jelasnya, berikut ini adalah contoh programnya

    Uses crt;

    Type

    RecBarang = Record

    Nama : String[25];

    Kualitas : Char;

    Harga : LongInt

    End;

    Var

    Barang : RecBarang; {variabel bertipe record}

    Begin

    //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);

    Readln

    End.

    Contoh program

    R1 := R2;

    R1.F1 := R2.F1;

    R1.F2 := R2.F2;

    R1.F3 := R2.F3;

  • Dengan adanya perintah Barang2 := Barang1;

    maka semua field pada record Barang2 akan berisi recrod Barang1.

    Pernyataan With

    Untuk menyederhanakan notasi seperti :

    Untuk menyederhanakan perintah yang berisi notasi record dalam Bahasa pemprograman

    Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini adalah sebagai berikut :

    Pada bentuk ini, field-field yang terletak setelah perintah with dapat disebutkan tanpa

    perlu menyertakan lagi nama record dan tanda titik. Untuk lebih jelasnya, perhatikan program

    berikut yang merupakan alternatif lain dari program sebelumnya menggunakan with.

    Uses crt;

    Type

    RecBarang = Record

    Nama : string[25];

    Kualitas : car;

    Harga : longInt

    End;

    Var

    Barang1, Barang2 : RecBarang; {variabel bertipe record}

    Begin

    //Mengisi nilai kedalam field-field record

    Barang1.Nama := GULA;

    Barang1.Kualitas := A;

    Barang1.Harga := 14000;

    //mengcopy record

    Barang2 := Barang1;

    //Menampilkan isi field

    Writeln (Nama Barang : , Barang2.Nama);

    Writeln (Kualitas : , Barang2.Kualitas);

    Writeln (Harga : , Barang2.Harga);

    Readln;

    End.

    Contoh program

    Barang1.Nama

    With [nama_record] do

  • Array Record

    Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di bawah ini.

    Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen bertipe

    record.

    Untuk mengakses suatu field dari array record, kita perlu menggunakan notasi :

    Uses crt;

    Type

    RecBarang = Record

    Nama : string[25];

    Kualitas : car;

    Harga : longInt

    End;

    Var

    Barang : RecBarang;

    Begin

    With barang

    begin

    //Mengisi nilai kedalam field-field record

    Barang.Nama := GULA;

    Barang.Kualitas := A;

    Barang.Harga := 14000;

    //Menampilkan isi field

    Writeln (Nama Barang : , Barang.Nama);

    Writeln (Kualitas : , Barang.Kualitas);

    Writeln (Harga : , Barang.Harga);

    End;

    Readln;

    End.

    Contoh program

    Type

    RecBarang = Record

    Nama : String [25];

    Kualitas : Char;

    Harga : LongInt

    End;

    TabelBarang = Array [1..10] of RecBarang;

    Var

    DafBarang : TabelBarang;

    Contoh program

    DafBarang [indeks].NamaField

  • Rekursif adalah suatu proses yang memanggil dirinya sendiri. Pada dasarnya rekursif

    menggunakan sub program yaitu fungsi dan prosedur. Yang membedakannya proses sub-

    program tersebut memanggil dirinya sendiri, sedangkan prosedur ataupun fungsi dipanggil

    hanya di program utama. Rekursif merupakan teknik pemrograman yang penting, dan

    beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini

    termasuk bahasa pemprograman pascal.

    Pemanggilan prosedur atau fungsi ke dirinya sendiri maksudnya adalah proses dalam

    sub-program akan terus berulang dan hanya akan berhenti jika syarat syarat tertentu telah

    terpenuhi. Pada beberapa persoalan, kemampuan seperti ini sangat berguna karena

    mempermudah solusi. Namun demikian, rekursi juga memiliki kelemahan, jika dibandingkan

    dengan menggunakan perulangan iteratif (for,while dan repeat) rekursif lebuh mungkin

    terjadi overflow pada stack (stack tidak mampu menangani permintaan pemanggilan sub

    program karena kehabisan memori) oleh karena itu dalam rekursif harus disediakan syarat

    untuk berhenti agar tidak terjadi overflow yang telah dijelaskan diatas. teknik rekursif sering

    digunakan pada kegiatan sehari hari khususnya pada rumus matematika. Contohnya

    rekursif digunakan dalam penghitungan faktorial.mari kita lihat contoh faktorial berikut:

    Pada contoh diatas terjadi proses rekursif yaitu proses pemanggilan dirinya sendiri secara

    rumus dapat dituliskan

    0! = 1

    N! = N x (N-1)!, Untuk N > 0

    Contoh di atas merupakan contoh hubungan rekursi, yang berarti bahwa nilai suatu

    fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang

    lebih kecil. Atau pekerjaan yang berulang-ulang hingga hasil akhirnya didapatkan. Untuk lebih

    memahami berikut ini adalah contoh potongan programnya.

    5*4*3*2*1=120

  • Diatas adalah program faktorial yang menggunakan rekursif, dari pprogram diatas

    dapat dilihat terjadi pemanggilan fungsi faktorial didalam fungsi itu sendiri.

    Uses crt;

    var

    x:integer;

    function Faktorial(n:integer):longint;

    begin

    if (n=1)then

    Faktorial:=1

    else

    Faktorial:=n*faktorial(n-1);

    end;

    begin

    write(Berapa Faktorial :);readln(x);

    writeln(x,faktorial ,=,faktorial(x));

    readln;

    end.

    Contoh program

  • Pencarian (searching) suatu data yang tersimpan di dalam array merupakan hal yang

    banyak ditemukan dalam kasus-kasus pemrograman. Maka dari itu, pada bagian ini kita akan

    membahas mengenai cara yang seharusnya digunakan untuk melakukan hal tersebut serta

    implementasi programnya di dalam bahasa Pascal. Dalam ilmu algoritma, metode pencarian

    data di dalam array dibagi menjadi dua, yaitu

    1. sequential search (metode pencarian beruntun/linier)

    2. binary search (metode pencarian bagi dua/pencarian biner)

    Berikut ini penjelasan lenih lanjut dari kedua metode tersebut.

    Sequential Search

    Metode ini merupakan konsep pencarian yang paling sederhana dan banyak

    digunakan karena efektif untuk melakukan pencarian dari sekumpulan data, baik data sudah

    terurut maupun yang belum terurut atau masih acak. Bila dibandingkan dengan yang lainnya,

    metode ini memiliki cara kerja yang relatif mudah untuk dipahami. Dalam metode ini, data

    yang dicari akan dibandingkandengan seluruh elemen array yang ada secara satu persatu.

    Sebagai contoh, apabila kita memiliki array A yang memiliki indeks 1 sampai n dan kita akan

    mencari nilai x di dalam array tersebut, maka nilai x tersebut akan dibandingkan dengan nilai

    A[1] sampai A[n]. Dalam metode ini juga diterapkan bahwa apabila data ditemukan pada

    indeks tertentu, maka proses pencarian akan dihentikan. Hal ini bertujuan agar proses

    pembandingan nilai tidak dilakukan sampai indeks terakhir karena nilai yang dicari telah

    ditemukan.Agar lebih memperjelas, perhatikan gambar contoh proses pencarian data

    berikut.

    Misalkan ada sebuah array A yang berisi data seperti dibawah ini:

    Kemudian dicari nilai 6 pada array diatas menggunakan metode sequential search. Dimulai

    dengan A[1] dicocokan dengan nilai yang dicari yaitu 6

    Jika data pada indeks A[1] tidak sama dengan data yang dicari maka pencarian dilanjutkan ke indeks

    selanjutnya, dan terus seperti itu hingga data ditemukan atau hingga akhir indeks array jika data

    belum ditemukan juga

    A = 5 1 7 6 8 9 3 10 2 4

    A = 5 1 7 6 8 9 3 10 2 4

    A = 5 1 7 6 8 9 3 10 2 4

    A[1]=6?

    A[2]=6?

  • Data ditemukan dan berada pada indeks 4

    Pada proses pencarian diatas, dapat dilihat prosesnya adalah membandingkan nilai yang

    dicari yaitu pada contoh diatas adalah 6 kesemua elemen array (dari A[1] sampai A[10]).

    Padasaat menemukan nilai yang dicari pada elemen ke A[4], maka pencarian akan dihentikan

    karena telah menemukan nilai yang dicari.

    Berikut ini contoh program yang akan menunjukkan implementasi dari pencarian

    array dengan menggunakan metode di atas. Apabila data yang dicari ditemukan dalam array,

    maka program akan menampilkan indeks dimana data tersebut berada. Sebaliknya, apabila

    data tidak ditemukan maka program akan mengembalikan indeks nol dan ditampilkan pesan

    bahwa nilai tidak ditemukan.

    A = 5 1 7 6 8 9 3 10 2 4

    A = 5 1 7 6 8 9 3 10 2 4

    A[3]=6?

    A[4]=6?

    Uses crt;

    Const

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

    Var

    i, x, indeks : integer;

    begin

    write (Masukkan nilai yang akan dicari : ); readln(x);

    indeks := 0;

    for i := 1 to 5 do

    begin

    if A[i] = x then

    begin

    indeks := I;

    break;

    end;

    end;

    if indeks > 0 then

    writeln (x, ditemukan pada indeks ke-, indeks)

    else

    writeln(Data tidak ditemukan);

    readln;

    end.

    Contoh program

    Masukkan nilai yang akan dicari : 78

    78 ditemukan pada indeks ke-3

  • Dari pembahasan diatas kita sekarang sudah dapat mencari sebuah nilai dari data

    pada array dengan metode sequential search. Yaitu metode dengan mencocokkan satu

    persatu indeks array dengan data yang dicari. Jadi kemungkinan langkah yang dijalankan

    dalam mencari data setidaknya sebesar kapasitas array tersebut. Jadi bagaimana jika data

    tersebut disimpan dalam deretan array yang berindeks 1000,atau lebih banyak lagi. Maka

    sequential search akan melakukan perbandingan ke seluruh indeks aray tersebut. Dan

    bayangkan berapa memori yang digunakan dalam melakukan itu. Hal inilah yang dikatakan

    sebagai kelemahan sequential search yaitu jika datanya banyak maka prosesnya akan berat

    juga.

    Binnary Search

    Berbeda dengan metode pencarian linier (sequential search) yang dapat digunakan

    untuk data belum terurut/acak, metode pencarian binnary ini hanya dapat digunakan untuk

    data-data yang telah terurut, baik secara menaik maupun menurun.

    Dalam Metode ini berusaha memperkecil area atau range dari tada yang dicari dengan

    memecah mecahnya sehingga proses pencariannya dapat memiliki langkah yang lebih

    sedikit. Sebagai contoh, apabila terdapat array A yang memiliki sejumlah elemen kita misalkan

    n dengan indeks 1 sampai n dan datanya telah terurut secara menaik, maka array tersebut

    akan dibagi pada indeks ke-k, dimana k = n + 1 div 2. hal tersebut mengakibatkan array A

    terbagi menjadi dua bagian, yaitu dari A[1] . . A[k-1] dan A[k+1] . . A[n], sedangkan a[k]

    menjadi pembatas antara dua bagian tersebut. Apabila x (nilai yang dicari) sama dengan nilai

    A[k] maka hentikan pencarian, sedangkan bila tidak, proses selanjutnya adalah memeriksa

    apakah nilai A[k] > x ataukah A[k] < x. Bila A[k] lebih besar dari x, maka ulangi metode

    pencarian tersebut untuk A[1] sampai A[k-1]. Sebaliknya, apabila A[k] lebih kecil dari x, maka

    ulangi metode pencarian tersebut untuk A[k+1] sampai A[n]. Untuk lebih jelasnya lihat

    gambar dibawah ini.

    Misalkan nilai yang dicari adalah 10

    Langkah pertama adalah memecah data menjadi dua bagian.

    Kemudian membandingkan apakah A[5]=data yang dicari(10)?. Jika ya maka data

    ditemukan jika tidak, selanjutnya dibandingkan kembali jika a[5] lebih besar dari 10 maka

    bagian pencarian data ke sebelah kiri dari A[5], sebaliknya jika A[5] lebih kecil maka

    pencariannya disebelah kanan

    A = 1 2 3 4 5 6 7 10 11 12

    A = 1 2 3 4 5 6 7 10 11 12

    A = 1 2 3 4 5 6 7 10 11 12

  • Karena A[5]=5 lebih kecil dari 10 maka pencarian data di alihkan ke sebelah kanan

    yaitu indeks A[6] sampai dengan A[10]. Proses sebelumnya diulang kembali yaitu memecah

    data menjadi dua bagian

    Dan karena a[8]=10 maka data ditemukan dan pencarian dihentikan.

    Dari contoh diatas terlihat dalam binnary search langkah pencarian data dapat lebih

    sedikit dari pencarian sebelumnya, sehingga dapat lebih cepat menemukan datanya. Dan ini

    merupakan kelebihan dari binnary search. Untuk lebih memperjelas pembahasan serta

    menunjukkan implementasinya, perhatikan contoh program di bawah ini.

    A = 1 2 3 4 5 6 7 10 11 12

    Uses crt;

    Const

    A : array [1..10] of integer = (1,2,3,4,5,6,7,10,11,12);

    Var

    idxAwal,idxAkhir,k,x : integer;

    ketemu : boolean;

    begin

    write (masukkan nilai yang akan dicari : ); readln(x);

    idxAwal := 1;

    idxAkhir := 10;

    ketemu := false;

    while (not ketemu) and (idxAwal

  • Selain pencarian, pengurutan data merupakan salah satu permasalahan umum yang

    juga sering dijumpai dalam pemrograman. Sebagai bukti nyata, dalam metode pencarian

    binnary di atas yang mengharuskan data diurutkan sebelum dilakukan proses pencarian.

    Dalam pemrograman, terdapat beberapa metode untuk melakukan pengurutan data.

    Dibawah ini adalah beberapa metode pengurutan data.

    1. Bubble Sort

    2. Selection Sort

    3. Insertion Sort

    4. Quick Sort

    5. Merge Sort

    6. Shell Sort

    Bubble Sort

    Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun

    yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada

    berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas

    dipakai pada pengurutan gelembung.

    Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan

    dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus

    sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada

    perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing

    kunci akan dengan lambat menggelembung ke posisinya yang tepat.Bubble sort ini adalah

    metode pengurutan yang paling sederhana dan paling mudah dimengerti, namun kelemahan

    dari bubble sort adalah kemungkinan langkah dari prosesnya sangat banyak dan ini

    menyebabkan pengurutan data yang banyak menjadi sangat berat dan tidak efisien. Untuk

    lebih jelasnya lihat clangkah langkah pengurutan menggunakan metode bubble sort.

    Misal sebuah array berisi data seperti dibawah ini:

    langkah ke-1:

    6 4 3 2

    6 4 3 2 4 6 3 2

    4 6 3 2 4 3 6 2

    4 3 6 2 4 3 2 6

  • langkah ke-2:

    langkah ke-3:

    Hasil akhir setelah terurut

    Diatas adalah langkah demi langkah pengurutan data menggunakan metode bubble

    sort. Prosesnya akan membandingkan satu persatu nilai dalam array dan jika terdapat

    pembanding sebelah kanan angka yang lebih kecil maka akan ditukar dengan angka yang

    disebelah kiri dan proses ini akan terus diulangi sebanyak data yang ada dikurang 1. Sebagai

    contoh array diatas memiliki empat buah angka maka langkahnya tersebut akan dilakukan 3

    kali. Berikut ini adalah implementasinya dalam bahasa pemprograman pascal.

    4 3 2 6 3 4 2 6

    3 4 2 6 3 2 4 6

    3 2 4 6 3 2 4 6

    3 2 4 6 2 3 4 6

    2 3 4 6 2 3 4 6

    2 3 4 6 2 3 4 6

    2 3 4 6

  • Selection Sort

    Konsep dari metode Selection sort adalah Memindahkan elemen dengan cara

    membandingkan elemen sekarang dengan elemen yang berikutnya sampai dengan elemen

    terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat

    posisinya dan kemudian ditukar dan begitu seterusnya.

    Proses pengurutan menggunakan metode selection sort secara terurut nik adalah sebagai

    berikut:

    1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. kemudian

    ditukar posisinya dengan data pertama.

    2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar

    posisinya dengan data kedua.

    3. Mencari data terkecil dari data ketiga sam[ai data terakhir, kemudian ditukar

    posisimya dengan data ketiga.

    4. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang

    akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir,

    yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya.

    Uses crt;

    Const

    n = 5;

    A : array [1..n] of integer = (25, 22, 18, 20, 15);

    Var

    j,k,temp : integer;

    begin

    //menampilkan data sebelum proses pengurutan

    Writeln(Data sebelum diurutkan);

    For j := 1 to n do

    Writeln(A[, j,] = , A[j]);

    //Melakukan proses pengurutan data}

    For j:= 1 to n-1 do

    begin

    For k:= n downto j+1 do

    begin

    If A[k] < A[k-1] then

    begin

    Temp :=A[k];

    A[k] := A[k-1];

    A[k-1] := temp;

    End;

    End;

    End;

    //Menampilkan data setelah proses pengurutan

    Writeln;

    Writeln (Data setelah diurutkan);

    For j:= 1 to n do

    Writeln(A[, j, ] = , A[j]);

    Readln;

    End.

  • Diatas adalah langkah langkah pengurutan data menggunakan metode selection sort. Dan

    berikut adalah implementasinya dalam bahasa pemprograman pascal

    Uses crt;

    Const

    n = 5;

    A : array [1..5] of integer = (25, 22, 18, 20, 15);

    Var

    j,k,temp : integer;

    begin

    //menampilkan data sebelum proses pengurutan

    Writeln(Data sebelum diurutkan);

    For j := 1 to 5 do

    Writeln(A[, j,] = , A[j]);

    //Melakukan proses pengurutan data}

    For j:=1 to 4 do

    begin

    for k:=j+1 to 5 do

    begin

    If (A[k] < A[j]) then

    begin

    temp := A[k];

    A[k] := A[j];

    A[j] := temp;

    end;

    end;

    end;

    //Menampilkan data setelah proses pengurutan

    Writeln;

    Writeln (Data setelah diurutkan);

    For j:= 1 to 5 do

    Writeln(A[, j, ] = , A[j]);

    Readln;

    End.

  • Insertion Sort

    Insertion Sort merupakan algoritma yang efisien untuk mengurutkan angka yang

    mempunyai jumlah elemen sedikit. Dimana:

    Input : deretan angka sejumlah n buah

    Output : permutasi (pengurutan) sejumlah n angka dari input yang sudah terurut

    secara ascending maupun descending

    Metode penyisipan (Insertion sort) bertujuan untuk menjadikan bagian sisi kiri array

    terurutkan sampai dengan seluruh array berhasil diurutkan. Metode ini mengurutkan

    bilangan-bilangan yang telah dibaca; dan berikutnya secara

    berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi kiri

    array yang telah terurut. Insertion Sort bekerja seperti kegiatan mengurutkan kartu di tangan.

    Dimulai dengan tangan kiri yang kosong dan kartunya tertumpuk di meja. Selanjutnya kita

    ambil satu persatu kartu di meja dan diletakkan di tangan kiri dengan posisi yang benar

    (terurut). Untuk menemukan posisi yang banar, maka kita harus membandingkan satu

    persatu kartu yang ada (di tangan kiri) secara berurutan.

    Contoh proses Insertion Sort :

    Bagian abu-abu (dua bilangan pertama) sekarang dalam keadaan terurut secara relatif.

    Berikutnya, kita perlu menyisipkan bilangan pada indeks ketiga yaitu (4) ke dalam bagian abu-

    abu sehingga setelah penyisipan tersebut, bagian biru/abu-abu tetap dalam keadaan terurut

    secara relatif.

  • Berikut adalah langkah - langkanya:

    pertama : Ambil bilangan ketiga (4).

    Kedua : Geser bilangan kedua (10) shg ada ruang untuk disisipi.

    Ketiga : Sisipkan bilangan 4 ke posisi yang tepat

    Sekarang, tiga bilangan pertama sudah terurut secara relatif dan kita sisipkan bilangan

    keempat kepada tiga bilangan pertama tsb. Setelah penyisipan, empat bilangan pertama

    haruslah dalam keadaan terurut secara relatif.

    Ulangi proses tsb sampai bilangan terakhir disisipkan

  • Berikut ini adalah implementasi bahasa pemprograman pascal dari inserion Sort.

    Uses crt;

    Const

    n = 5;

    A : array [1..5] of integer = (25, 22, 18, 20, 15);

    Var

    j,k,temp : integer;

    begin

    //menampilkan data sebelum proses pengurutan

    Writeln(Data sebelum diurutkan);

    For j := 1 to 5 do

    Writeln(A[, j,] = , A[j]);

    //Melakukan proses pengurutan data}

    Begin

    For i := 2 to 4 do

    Begin

    temp := A[i];

    j := i;

    While ((j > 1) AND (A[j-1] > temp)) do

    Begin

    A[j] := A[j-1];

    j := j - 1;

    End;

    A[j] := temp;

    End;

    //Menampilkan data setelah proses pengurutan

    Writeln;

    Writeln (Data setelah diurutkan);

    For j:= 1 to 5 do

    Writeln(A[, j, ] = , A[j]);

    Readln;

    End.

  • Dalam kasus-kasus pemrograman tertentu kita sering disudutkan untuk menggunakan

    file sebagai media yang digunakan untuk menyimpan data-data, baik berupa data input

    (untuk masukan) maupun sebagai data output (untuk keluaran). Sebagai contoh, apabila kita

    menggunakan sistem operasi Microsoft Windows maka kita akan menemukan file sistem

    seperti autoexec.bat, config.sys, system.ini dan lainnya. File tersebut sebenarnya digunakan

    untuk menyimpan data-data secara terpisah sehingga nilainya dapat diubah dengan mudah

    sesuai dengan kebutuhan. Sebagai seorang programmer, kita tentu dituntut untuk dapat

    menggunakan (mengakses) file dari dalam prograam yang kita buat. Berdasarkan prosedur

    yang ada, proses pengaksesan file di dalam bahasa Pascal terdiri dari emapt tahap, yaitu :

    a. Menghubungkan file fisik yang akan dibuka atau dibuat dengan variabel file

    b. Membuka file

    c. Melakukan operasi file (membaca atau menulis)

    d. Menutup file

    Variabel File

    Sebelum file dapat dibuka atau dibuat oleh program, kita harus menghubungkannya

    dengan variabel file terlebih dahulu. Variabel file merupakan peralatan logik yang digunakan

    sebagai perantara dalm mentransfer atau membaca data dari atau ke sebuah file fisik yang

    tersimpan di dalam disk. Dengan kata lain, sebenarnya kita tidak secara langsung

    memanipulasi file fisik tersebut, melainkan melalui variabel file. Dalam bahasa Pascal, variabel

    seperti ini dianggap sebagai variabel biasa yang dideklarasikan dengan tipe file tertentu. Cara

    yang harus dilakukan untuk dapat menghubungkan file fisik dengan variabel file adalah

    dengan menggunakan perintah Assign, yang memeiliki bentuk umum sebagai berikut.

    NamaVariabelFile merupakan nama variabel yang sebelumnya harus dideklarasikan

    terlebih dahulu, sedangkan NamaFileFisik merupakan nama file yang akan dibuka atau dibuat.

    Perlu diperhatikan bahwa nama file tersebut harus dituliskan secara lengkap beserta lokasi

    atau path-nya. Sebagai contoh, apabila kita ingin membuka file dengan nama CONTOH.TXT

    yang terdapat di dalam direktori COBA di drive D, maka kode yang harus dituliskan adalah

    sebagai berikut.

    Sedangkan apabila file yang akan kita akses berada dalam satu direktori dengan program (file

    eksekusi) yang kita buat, maka kita tidak perlu menuliskan lokasi atau path-nya. Artinya kita

    hanya perlu untuk menuliskan nama file-nya saja seperti berikut.

    Assign (NamaVariabelFile, NamaFileFisik);

    Var

    A:TextFile; //mendeklarasikan variabel file denagn nama F

    Begin

    Assign (A, D:\COBA\CONTOH.TXT);

    ...

    end.

    Assign (F, CONTOH.TXT);

  • Pada kode di atas, file CONTOH.TXT akan dihubungkan dengan variabel F. Selanjutnya

    yang akan dimanipulasi di dalam program adalah variabel F. Namun karena variabel tersbut

    sebenarnya menunjuk ke file fisik, maka setiap perubahan yang terjadi di dalam variabel F

    tentu akan mempengaruhi isi dari file CONTOH.TXT.

    Hal yang perlu diperhatikan di sini adaalah bahwa walaupun file tersebut sudah

    terhubung dengan variabel file, namun file masih dalam keadaan tertutup sehingga kita perlu

    membukanya terlebuh dahulu sebelum kita mengakses data yang terdapat di dalamnya.

    Membuka File

    Setelah file tersebut dihubungkan dengan variabel file, maka langkah selanjutnya

    yang perlu dilakukan adalah membuka file. Dalam bahasa Pascal, terdapat tiga buah prosedur

    yang dapat digunakan untuk membuka file, yaitu Rewrite, Reset dan Append.

    a. Perintah Rewrite

    Perintah ini digunakan untuk membuka file yang sama sekali belum terdapat di

    dalam disk. Artinya, di sini kompiler akan melakukan proses pembuatan file baru

    sekaligus membuka file tersebut. Bentuk umum dari prosedur Rewrite adalah sebagai

    berikut.

    Bila file yang dibuka berupa file teks, maka file tersebut akan bersifat writeonly

    atau tidak dapat dibaca, artinya operasi yang diizinkan untuk file tersebut hanyalah

    operasi tulis. UkuranRecord merupakan ekspresi yang bersifat opsional yang hanya

    disertakan apabila file yang dibuka merupakan file tanpa tipe. Nilai tersebut akan

    digunakan sebagai ukuran record dalam transfer data. Nilai tersebut akan digunakan

    sebagai ukuran record dalam transfer data. Apabila dihilangkan, maka UkuranRecord

    ini alan dianggap bernilai 128 byte. Untuk lebih memahami penggunaan prosedur ini,

    perhatikan contoh program sederhana ini.

    Jalankan program tersebut dan lihatlah drive D pada komputer anda, maka di

    situ pasti akan tercipta file baru dengan nama CONTOH.TXT dimana isinya kosong.

    Apabila anda bereksperimen untuk membuka filee yang sudah ada sebelumnya

    dengan menggunakan prosedur Rewrite maka isi dari file tersebut akan ditimpa

    dengan isi file baru. Satu hal lagi yang perlu diperhatikan adalah bahwa etelah

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

    Var

    F : TextFile;

    Begin

    Assign (F, D:\CONTOH.TXT);

    Rewrite (F);

    End.

  • pemanggilan prosedur Rewrite, fungsi EOF (end-of-file) akan selalu menghasilkan nilai

    true.

    b. Perintah Reset

    Perintah ini digunakan untuk membuka file yang sebelumnya sudah ada di dalam

    disk. Hal ini bertujuan untuk membaca isi dari file tersebut untuk kemudian

    dimanipilasi sesuai dengan kebutuhan. Perlu sekali untuk diperhatikan bahwa

    apabila file yang dibuka merupakan file teks, maka variabel file akan bersifat read

    only (hanya dapat dibaca). Berikut ini prototype dari prosedur Reset.

    UkuranRecord merupakan ekspresi yang bersifat operaional yang hanya

    disertakan apabila file yang dibuka merupakan file tanpa tipe. UkuranRecord sendiri

    berfungsi untuk menentukan ukuran record dalam proses transfer data. Apabila nilai

    tersebut dihilangkan, maka nilainya akan dianggap 128 byte. Sebagai contoh, kita

    telah memiliki file SAMPLE.TXT yang disimpan di rive D dan isinya seperti berikut.

    Selanjutnya kita ingin membaca isi file tersebut dan ditampilkan di layar

    monitor, maka kita dapat menggunakan Perintah Reset seperti yang tampak pada

    kode berikut.

    Sekarang coba jalankan program tersebut dan akan melihat bahwa seluruh isi

    dari file SAMPLE.TXT akan ditampilkan di layar monitor. Apabila kita menggunakan

    Reset (NamaVariabelFile [: file; UkuranRecord: word]);

    Teknik Pemrograman Pascal

    Oleh : Budi Raharjo

    Tahun : 2005

    Penerbit : INFORMATIKA

    Uses crt;

    Var

    F : TextFile;

    Teks : string;

    Begin

    Assign (F, D :\SAMPLE.TXT);

    Reset (F);

    While not eof (F ) do

    begin

    Readln (F, teks) ;

    Writeln (teks);

    End;

    Close(F);

    Readln;

    End.

  • perintah Reset pada file yang belum terdapat di dalam disk maka kompiler akan

    menampilkan pesan kesalahan pada saat program dijalankan.

    c. Perintah Append

    Perintah ini digunakan untuk menambahkan isi file yang sebelumnya sudah

    terdapat di dalam disk. Isi yang ditambahkan selalu berada pada bagian akhir dari

    isi file yang sudah ada sebelumnya. Dalam menggunakan prosedur ini kita tidak

    perlu memanggil perintah Rewrite maupun reset karena prosedur Append secara

    otomatis akan membuka file yang telah dihubungkan dengan variabel file. Namun

    sebagai catatan bagi Anda bahwa prosedur Append hanya dapat digunakan apabila

    file yang dibuka merupakan file teks. Berikut ini bentuk umum dari prosedur

    Append.

    Apabila anda membuka file teks yang belum ada didalam diks dengan

    menggunakan prosedur Append, maka akan terjadi kesalahan pada saat program

    sedang berjalan (run-time). Setiap pemanggila prosedur Append, file bersifat write-

    only (hanya dapat ditulis) dan posisi file akan diset 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.

    Sebagai contoh, file tersebut disimpan dengan nama TEST.TXT pada drive D di

    dalan direktori COBA. Selanjutnya kita ingin menamnbahkan dua buah baris data

    ke dalam file di atas, maka kita dapat melakukannya melalui kode program dibawah

    ini.

    Procedure Append (NamaVariabelFile: Text ) ;

    Ini adalah data yang dituliskan pada baris pertama.

    Ini adalah data yang dituliskan pada baris pertama.

    Uses Crt;

    Var

    F: TextFile;

    Begin

    Assign (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 pertama

    Ini adalah data yang dituliskan pada baris kedua

    Ini adalah data pertama yang ditambahkan

    Ini adalah data kedua yang ditambahkan