Rabu, 25 April 2012

Makalah


MAKALAH
SISTEM BERKAS












ORGANISASI BERKAS LANGSUNG












Disusun oleh:
Lusi Efrenti                    1001091018
Desi Lasri Rahma Ayu   1001091014
Hardian Erlanda            1001091016







JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI PADANG
TAHUN 2012/2013




Pengertian Berkas Sequential
Adalah merupakan cara yang paling dasar untuk mengorganisasikan kumpulan record-record dalam sebuah berkas
Keuntungan
Kemampuan untuk mengakses record berikutnya secara tepat
Pembuatan Berkas Sequential
Meliputi penulisan record-record dalam serangkaian yang diinginkan pada media penyimpanan.Tugas-tugasnya :10.Pengumpulan data11.Perubahan data dalam bentuk bahasa yang dapat dibaca oleh mesin12.Pengeditan data13.Pemeriksaan transaksi yang ditolak 14.Penyortiran edit data

Kerugian Korespondensi Satu-Satu

o   Dengan menerjemahkan langsung dari kunci rekaman ke alamat rekaman, maka akan berlaku suatu hubungan korespondensi satu-satu antara kunci dengan alamat rekaman.
o   Hal ini menyebabkan harus disediakannya ruang yang sangat besar untuk menampung setiap kemungkinan nilai kunci yang ada.
o   Contohnya : untuk menyimpan data PNS yang kuncinya adalah NIP (terdiri dari 9 digit) dibutuhkan sebanyak satu milyar alamat, karena kemungkinan yang dapat muncul dari kode 9 digit adalah mulai dari angka 000000000 hingga 999999999).
o   Selain itu dari cara korespondensi satu-satu juga akan mengakibatkan banyaknya pemborosan ruang penyimpan, atau terjadi banyak alamat yang tidak dipergunakan alias kosong.
o   Contohnya : Kode NIP diawali dengan tiga digit kode departemen, yang tidak mungkin ada kode departemen 000. Sehingga alamat 000000000 sampai 000999999 (sebanyak sejuta alamat) tidak akan terpakai karena tidak ada rekaman dengan NIP di antara range tersebut.

Pencarian Interpolasi
            Berbeda dengan pencarian biner yang memilih posisi rekaman yang akan diperbandingkan berikutnya sebagai tepat berada ditengah sisa berkas yang belum diperiksa.
            Pencarian interpolasi tidak mencari posisi TENGAH seperti halnya algoritma pencarian biner, melainkan menentukan posisi berikutnya, dengan menggunakan algoritma sebagai berikut :

Proc pencarian_interpolasi
/* n buah rekaman dalam berkas diurutkan menaik menurut kunci rekaman */
     AWAL := 1
     Akhir := n
     while AWAL ≤ AKHIR do
     
          BERIKUT :=  

            if kunci (cari) = kunci (berikut)
          then pencarian berakhir.
     else if kunci (cari) > kunci (berikut)
          then AWAL := berikut + 1
     else AKHIR := berikut – 1
End

Rekaman tidak ditemukan
End pencarian_biner
  • Untuk rekaman dengan susunan sebagai berikut, berapa probe untuk menemukan rekaman dengan kunci 49 bila digunakan pencarian interpolasi.
              1    2    3    4    5    6    7   8   9
     [21   25   28   33   38   39   48   49   69]
      21   25   28   33   38   39  [48   49   69]

Perhitungan :

BERIKUT1 =

    
= 5,6666 , dibulatkan 6
    
     

Kcari : Kberikut = 49 > 38     AWAL = BERIKUT1 + 1 = 6 + 1 = 7


BERIKUT2  =


     

Pencarian Biner (Binary Search) pada array yang sudah terurut


Pencarian Biner (Binary Search) dilakukan untuk :
   memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
   Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
   Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.


ALGORITMA  

Kamus
      Const N : integer = 8  { misalkan jumlah elemen array maksimum = 8 }
      Type A = array [ 1 ..... N ] of integer
      Cari, BatasAtas, BatasBawah, Tengah : Integer
      Ketemu : boolean
ALGORITMA
         Input (cari) { meminta nilai data yang akan dicari}
         BatasAtas     ¬  1 { indeks array dimulai dari 1 }
         BatasBawah     ¬   N    
         Ketemu   ¬  False
         While (BatasAtas < BatasBawah) and (not ketemu) do
               Tengah ¬   (BatasAtas  + BatasBawah) div 2
               If A [Tengah] = cari then
                  Ketemu ¬ true
                           Else
                                 If ( A [Tengah]  < cari ) then { cari di bagian kanan }
                                       BatasAtas ¬ Tengah + 1
                                 Else
                                       BatasBawah ¬ Tengah – 1 { cari di bagian kiri }
                                 Endif
                           Endif
         EndWhile
         If (ketemu) then
                     Output ( ‘Data berada di index nomor’, Tengah )
         Else     Output ( ‘Data tidak ditemukan’ )
         Endif

Contoh Nilai-Nilai data yang sudah terurut :

A
2
5
8
12
15
25
37
57

1
2
3
3
5
6
7
8

Kasus 1  : cari = 12

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
                           A [Tengah] = A [4] = 12, berarti loop pertama data langsung ditemukan

Kasus 2  : cari = 15

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 +  8) div 2 = 4
                           A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1 = 4 + 1 = 5
Loop kedua :     Tengah = (BatasAtas + BatasBawah) div 2 = (5 +  8) div 2 = 6
                           A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah - 1 = 6 - 1 = 5
Loop ketiga :     Tengah = (BatasAtas + BatasBawah) div 2 = (5 +  5) div 2 = 5
                           A [Tengah] = A [5] = 15, berarti  setelah loop ketiga, data ditemukan

Kasus 3  : cari = 10

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 +  8) div 2 = 4
                           A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah - 1 = 4 - 1 = 3
Loop kedua :     Tengah = (BatasAtas + BatasBawah) div 2 = (1 +  3) div 2 = 2
                           A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1 = 2 + 1 = 3
Loop ketiga :     Tengah = (BatasAtas + BatasBawah) div 2 = (3 +  3) div 2 = 3
                           A [Tengah] = A [3] = 8, berarti  setelah loop ketiga, data tidak ditemukan

Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log n ) kali. Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal sebanyak 3 kali.








Referensi
http://ebestmateri.blogspot.com/2010/12/modul-organisasi-berkas-langsung.html


Tidak ada komentar:

Posting Komentar