Saturday, November 8, 2014

STRUKTUR DATA PERTEMUAN 3

BAB 3

STACK DAN QUEUE


1.       STACK

A.     DAFTAR LINEAR


                        Sebuah daftar linear atau linear list, merupakan suatu struktur data umum yang terbentuk dari barisan hingga (yang terurut) dari satuan data ataupun dari record. Untuk mudahnya, elemen yang terdapat di dalam daftar disebut dengan simpul atau node. Daftar disebut linear (lurus), karena elemen tampak seperti berbaris, yakni bahwa setiap simpul, kecuali yang pertama dan yang terakhir, selalu memiliki sebuah elemen penerus langsung (suksesor langsung) dan sebuah elemen pendahulu langsung (predesesor langsung).

                        Di sini, banyak simpul atau elemen, tersebut dapat berubah – ubah, berbeda dengan array yang banyak elemennya selalu tetap. Kita menyatakan linear list A yang mengandung T elemen pada suatu saat, sebagai A = [A1, A2, … AT]. Jika T = 0, maka A disebut list hampa atau null list.

                        Suatu elemen dapat dihilangkan atau dihapus (deletion) dari sembarang posisi dalam linear list, dan suatu elemen baru dapat pula dimasukkan (insertion) sebagai anggota list pada posisi sembarang (di mana saja).

                        File, merupakan salah satu contoh dari daftar linear yang elemen-elemennya berupa record. Selain file, contoh lain dari daftar linear adalah stack atau tumpukan, queue atau antrean, dan daftar berkait atau linear linked list atau one-way list. Pada Bab 3 ini kita bahas tentang stack tersebut.

B.     STACK atau TUMPUKAN


            Stack atau tumpukan adalah bentuk khusus dari liniear list. Pada stack, penghapusan serta pemasukan elemennya hanya dapat dilakukan di satu posisi, yakni posisi akhir dari list. Posisi ini disebut puncak atau top dari stack. Elemen stack S pada posisi ini dinyatakan dengan TOP(S).

            Jelasnya, bila stack S [S1, S2, …, ST], maka TOP(S) adalah ST. Banyaknya elemen stack S pada suatu saat tertentu biasa kita sebut sebagai NOELS(S). Jadi untuk stack kita di atas, NOEL(S) = T.  Seperti halnya pada semua linear list, pada stack dikenal operasi penghapusan dan pemasukan.

            Operator penghapusan elemen pada stack disebut POP, sedangkan operator pemasukan elemen, disebut PUSH. Untuk menggambarkan kerja kedua operator di atas, berikut ini suatu contoh bermula dari stack hampa S [], yang kita gambar sebagai :
 

Mula-mula kita PUSH elemen A, diperoleh Stack S = [A] 


Apabila kemudian kita PUSH elemen B, diperoleh Stack S = [A, B]

 
Selanjutnya bila PUSH elemen C, diperoleh Stack S = [A,B,C]

Kemudian bila kita POP elemen C, diperoleh Stack S = [A.B]


Kita dapat pula PUSH 2 elemen D dan E. Akan dihasilkan Stack S = [A,B,D,E]
 
            Terlihat bahwa kedua operasi di atas, pada stack adalah bersifat ‘terakhir masuk pertama keluar’ atau ‘last in first out (LIFO)’. Pada hakekatnya kita tidak membatasi berapa banyak elemen dapat masuk ke dalam stack. Untuk suatu stack S[S1, S2, …, SNOEL], kita katakana bahwa elemen Si, berada di atas elemen Sj, jika I lebih besar dari j. Suatu elemen tidak dapat kita POP ke luar, sebelum semua elemen di atasnya dikeluarkan.

C.     OPERASI PADA STACK


            Terdapat empat operasi pada stack, yakni CREATE (stack), ISEMPTY (stack), PUSH (elemen, stack), dan POP (stack). CREATE(S) adalah operator yang menyebabkan stack S menjadi satu stack hampa. Jadi NOEL (CREATE(S)) adalah 0, dan TOP (CREATE(S)) tak terdefinisi.

            Sedangkan operator ISEMPTY(S) bermaksud memeriksa apakah stack S hamper atau tidak. Operandnya adalah data bertipe stack, sedangkan hasilnya merupakan data bertipe Boolean. ISEMPTY(S) adalah true, jika S hampa, yakni bila NOELS(S) = 0, dan false dalam hal lain. Jelas bahwa ISEMPTY(CREATE(S)) adalah true.

            Operator PUSH (E,S) akan bekerja menambahkan elemen E pada stack S. E ditempatkan sebagai TOP(S). Operator POP(S) merupakan operator yang bekerja mengeluarkan elemen TOP(S) dari dalam stack. POP(S) akan mengurangi nilai NOEL(S) dengan 1. Suatu kesalahan akan terjadi apabila, kita mencoba melakukan POP(s) terhadap stack S yang hampa

            Kesalahan overflow akan terjadi, jika kita melakukan operasi pemasukan data (PUSH) pada stack yang sudah penuh (dalam hal ini jika banyaknya elemen yang kita masukan ke dalam sebuah stack sudah melampaui batas kemampuan memori atau telah didefinisikan sebelumnya).

            Sebaliknya, kesalahan underflow akan terjadi jika stack sudah dalam keadaan hampa, kita lakukan operasi pengeluaran atau penghapusan (POP).

2.       QUEUE

A.     PENGERTIAN QUEUE (ANTREAN)

            Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya di perbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list.

            Sebagai contoh dapat kita lihat antrean (Q1, Q2, …, Qn). Kita notasikan bagian depan dari antrian Q sebagai FRONT(Q) dan bagian belakang sebagai REAR(Q).

            Jadi untuk antrean Q = [Q1, Q2, …, Qn] :

                        FRONT(Q) = Q1 dan REAR(Q)= Qn

            Kita menggunakan notasi NOEL(Q) untuk menyatakan jumlah elemen di dalam antrean Q. NOEL(Q) mempunyai harga integer. Untuk antrean Q = [Q1Q2, . . ., Qn], maka NOEL(Q) = N.

            Operator penyisipan (insertion) disebut INSERT dan operator penghapusan (deletion) disebut REMOVE.

            Sebagai contoh untuk memperjelas bekerjanya antrean, kita perhatikan sederetan operasi berikut. Kita mulai dengan antrean hampa Q. Antrean hampa Q, atau Q[] dapat di sajikan seperti terlihat pada gambar di bawah ini :

Di sini :
            NOEL(Q) = 0
            FRONT(Q) = tidak terdefinisi
            REAR(Q) = tidak terdefinisi

Lalu kita INSERT elemen A, diperoleh Q = [A], seperti terlihat di gambar ini :
 
Disini :
            NOEL(Q) = 1
            FRONT(Q) = A
            REAR(Q) = A

            Dilanjutkan dengan INSERT elemen B, sehingga diperoleh Q = [A,B], seperti terlihat di bawah ini :

Di sini ;
            NOEL(Q) = 2
            FRONT(Q) = A
            REAR(Q) = B

            Dilanjutkan dengan INSERT elemen C, sehingga diperoleh Q = [A, B, C], seperti terlihat di bawah ini :
Di sini :
            NOEL(Q) = 3
            FRONT(Q) = A
            REAR(Q) = C

            Dilanjutkan dengan DELETE satu elemen dari Q, sehingga diperoleh Q = [B, C], seperti terlihat di bawah ini :
Di sini :
            NOEL(Q) = 2
            FRONT(Q) = B
            REAR(Q) = C

            Demikian seterusnya, kita dapat melakukan serangkaian INSERT dan DELETE yang lain. Suatu kesalahan underflow dapat terjadi, yakni apabila kita melakukan penghapusan pada antrean hampa. Antrean dikatakan beroprasi dalam cara FIRST-IN-FIRST-OUT (FIFO). Disebut demikian karena elemen yang pertama masuk merupakan elemen yang pertama ke luar.

            Model antrean, sangat sering ditemukan dalam kejadian sehari-hari, seperti mobil yang menunggu untuk pengisian bahan bakar, mobil pertama dari antrean merupakan mobil pertama yang akan keluar dari antrean. Sebagai contoh lain adalah orang yang menunggu dalam antrean di suatu bank. Orang pertama yang berada di dalam barisan tersebut akan merupakan orang pertama yang akan dilayani.

B.     OPERASI DASAR PADA ANTREAN

Ada 4 operasi dasar yang dapat dilakukan pada struktur data antrean, yakni :
a)      CREATE(antrean)
b)      ISEMPTY(antrean)
c)      INSERT(elemen,antrean)
d)      REMOVE(antrean)

Pandang misalnya antrean Q = [Q1, Q2, …, QNOEL], maka :

CREAT(antrean) :

CREAT(Q) adalah suatu operator untuk membentuk dan menunjukkan suatu antrean hampa Q.

Berarti :
                                    NOEL(CREATE(Q)) = 0
                                    FRONT(CREATE(Q))= tidak terdefinisikan
                                    REAR(CREATE(Q)) = tidak terdefinisikan

ISEMPTY (antrean)
ISEMPTY(Q) adalah operator yang menentukan apakah antrean Q hampa atau tidak. Operand dari operator ini merupakan antrean, sedangkan hasilnya merupakan tipe data Boolean.

Di sini :
                                    ISEMPTY (antrean) = true, jika Q hampa, yakni jika NOEL(Q)=0
                                                                        = false, dalam hal lain.
                        Maka, ISEMPTY(CREATE(Q)) = true

INSERT(elemen, antrean)
INSERT(E,Q) adalah operator yang memasukkan elemen E ke dalam antrean Q. Elemen E ditempatkan di bagian belakang dari antrean. Hasil dari operasi ini adalah antrean yang lebih panjang.

                        REAR(INSERT(E,Q)) = E
                                    QNOEL adalah E
                                    ISEMPTY(INSERT(E,Q)) = false

REMOVE (antrean)
REMOVE(Q) adalah operator yang menghapus elemen bagian depan dari Antrean Q. Hasilnya merupakan antrean yang lebih pendek. Pada setiap operasi ini, harga dari NOEL(Q) berkurang satu, dan elemen kedua dari Q menjadi elemen terdepan.

                        Jika NOEL(Q) = 0, maka REMOVE(Q) memberikan suatu kondisi error, yakni suatu underflow. Jelas bahwa REMOVE(CREATE(Q)) juga memberikan kondisi underflow error.


Tuesday, October 28, 2014

STRUKTUR DATA PERTEMUAN 2

BAB 2

ARRAY DAN RECORD


1.          ARRAY

           
            Salah satu struktur data yang teramat penting adalah array atau larik. Array merupakan bagian dasar, yang disebut blok, guna keperluan pembentukan suatu struktur data lain yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat di sajikan secara logic oleh array.

            Kita dapat mendefinisikan array sebagai sautau himpunan hingga elemen, terurut dan homogeny. Terurut, kita artikan bahwa elemen tersebut dapat di identifikasi sebagai elemen pertama, elemen kedua, dan seterusnya sampai elemen ke-n. Sedangkan pengertian elemen yang homogeny adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.

            Jadi suatu array dapat mempunyai elemen semuanya berupa integer atau dapat pula seluruhnya berupa untai aksara atau string. Bahkan dapat pula terjadi bahwa suatu array mempunyai elemen berupa array pula.

            Sebenarnya, pengertian array telah banyak kita kenal dan kita pelajari dalam matematika. Di sana, array lebih terkenal sebagai matriks. Kadang-kadang ia disebut juga sebagai table. Juga pernah kita dengar tentang vector. Vektor adalah bentuk yang paling sederhana dari array. Vektor merupakan array dimensi satu atau one dimensional array.

A.     ARRAY SATU DIMENSI


            Sebuah array dimensi satu, yang misalnya kita beri nama NILAI, dapat kita bayangkan berbentuk seperti ini :

 

            Subscript atau indeks dari elemen array menyatakan posisi, elemen pada urutan dalam array tersebut. Notasi yang di gunakan bagi elemen array, biasanya adalah nama array dilengkapi dengan subscript.
            Secara umum, suatu array dimensi satu A dengan tipe data T dan subscript bergerak dari L sampai dengan U, di tulis sebagai A (L:U) = (A(1)), I = L, L+1, L+2,…, U, dan setiap elemen A(1) bertipe data T.
            Sebagai contoh, kita dapat menuliskan data hasil pencatatan suhu ruangan setiap satu jam selama periode 24 jam, dalam sebuah array dimensi satu.
            Harga minimum dari subscript dari array disebut batas bawah atau lower bound, sedangkan harga maksimumnya di sebut batas atas atau upper bound. Jadi pada array di atas, L merupakan batas bawah, dan U batas atas . Sedangkan untuk array “suhu” yang elemennya dapat kita tulis sebagai SUHU (I), batas bawahnya adalah 1 dan batas atasnya 24. SUHU(I) menyatakan suhu pada jam ke-1, dan I memenuhi 1<=I <=24, I merupakan integer.
            Batas bawah dari array, pada beberapa aplikasi, tidak selalu diambil 1. Kadang-kadang di ambil batas bawah nol, bahkan juga negative. Banyaknya elemen sebuah array disebut rentang atau range. Jadi array A(L:U) mempunyai range sebesar U-L+1. Secara khusus bila L=1 dan U=N, maka range dari array A(1:N) adalah N-I+1=N.

B.     ARRAY DUA DIMENSI

            Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah array yang elemennya berupa array pula. Misal array B mempunyai M lemen berupa array pula, yang terdiri dari N elemen. Kalau hal tersebut kita gambarkan, akan terbentuk baris dan kolom seperti :


                                    Untuk itu di perlukan dua buah subscript. Yang pertama di gunakan untuk menyatakan posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua B, dengan elemen bertipe data T, subscript baris dari 1 sampai M, subscript kolom dari 1 samapi N, di tulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder M x N. Di sini banyak elemen array adalah M*N.
                                    Contoh dari array dimensi dua sangat banyak kita jumpai. Misal nilai ujian 500 mahasiswa ASIA tingkat 3, untuk 8 mata kuliah dapat kita sajikan sebagai array dimensi dua yang berorder 500 x 8. Elemen B(I,J) menyatakan nilai mahasiswa ke-I untuk mata kuliah ke-J.
                                    Seperti halnya pada array dimensi satu, pada array dimensi dua batas bawah untuk subscript I maupun J dapat di ambil secara umum. Misalnya, batas bawah subscript baris adalah L1 subscript kolom adalah L2 sedangkan batas atas subscript baris adalah U1 dan untuk kolom adalah U2, maka array dimensi dua tersebut dapat dinotasikan sebagai :

            B(L1:U1, L2:U2) = (B(I,J)), L1 <= 1 <= U1, L2 <=J <= U2

                        Dengan setiap elemen B(I,J) bertipe data T. Banyak nya elemen pada setiap baris adalah U2-L2+1 dan pada setiap kolom adalah U1-L1+1, sehingga banyaknya elemenpada array B semua ada =(U2-L2 +1) * (U1-L1 +1).

CROSS SECTION

            Yang dimaksud dengan cross-section suatu array berdimensi dua adalah pengambilan salah satu subscript, missal subscript baris untuk tetap atau konstan, sementara subscript yang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum di gunakan adalah notasi* (asterisk) bagi subscript yang berubah-ubah nilainya tersebut.

            Contohnya, penulisan B(*,4) menyatakan semua elemen pada kolom ke-4, yakni (B(1,4),B(2,4), B(3,4) ...., B(M,4)), seperti terlihat pada gambar : 



TRANSPOSE

            Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom (kolom menjadi baris) dari suatu array. Jadi transpose dari array berorder M x N adalah array berorder N x M. Transpose dari array B dinotasikan sebagai BT. Berdasarkan definisi, makan jelas B(I,J) = BT (J,I). Contohnya B(3,5) = BT (5,3).

            Pengertian di atas dapat kita perluas untuk array dimensi tiga, dimensi 4, sampai dimensi N. Array dimensi N kita tulis sebagai :

            A(L1:U1, L2:U2, …, LN: UN) = (A(I1, I2, …, IN))

Dengan  Lk <= Ik <= Uk, untuk setiap k = 1, 2, …, N.

Banyaknya elemen dari array A tersebut adalah :

            PI(Uk - Lk + 1) = (U1-L1+1) * (U2 – L2+1) … * (UN -LN + 1)

            Contoh array dimensi tiga adalah penyajian data mengenai banyaknya mahasiswa dari-20 perguruan tinggi di Malang, berdasarkan tingkat (tingkat 1, 2 sampai dengan 5), dan jenis kelamin (pria atau wanita). Misalnya array tersebut dinamakan MHS. Ambil sebagai subscript pertama, tingkta : I = 1, 2….,5; subscript kedua, jenis kelamin (pria = 1, wanita = 2): J=1,2, dan subscript ke-3, perguruan tinggi adalah K =1,2,…,20. Jadi MHS (4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi ke 17.

Array dimensi tiga dapat kita bayangkan seperti ini :


            Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua.
Misalnya MHS (4,*,17) menunjukan jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS (*,*,3) menunjukan jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita, dari perguruan tinggi 3.

C.     MENDEKLARASIKAN ARRAY DALAM BAHASA PEMROGRAMAN
            Misalkan kita hendak mendeklarasikan array TEMP yang merupakan array dimensi satu dengan nilai subscript 1 sampai 24, dan masing-masing elemen bertipe data integer (nilainya santara 0 sampai 99 derajat).

Dalam bahasa COBOL dapat di tulis :
            01 TABEL-TEMP
                        02 TEMP OCCURS 24 TIMES PIC 99.

Dalam bahasa Pascal :
                        Var temp: array 1 . . 24)of integer

            Dalam bahasa BASIC, kita dapat mendefinisikan array TEMP tersebut dengan statement:

                        DIM     TEMP (24)

Tiga hal harus di kemukakan dalam mendeklarasikan suatu array, yakni :
a)      Nama array
b)      Range dari subscript
c)      Tipe data dari elemen array

            Bahasa Pascal memperkenankan batas bawah subscript yang bukan =1, contohnya adalah :
            var grafik : array [-100 ..100] of integer 

            Dalam COBOL subscript harus dimulai dari 1.

            Untuk menyatakan elemen ke-I dari array, COBOL dan BASIC menggunakan kurung biasa, yakni TEMP(I), sedangkan Pascal menggunakan kurung siku, yakni temp[i].

            Untuk mendeklarasikan sebuah array nilai dari 500 mahasiswa untuk 8 mata kuliah, dalam COBOL di tulis :
                        O1 TABEL-NILAI
                                    02 MHS OCCURS 500 TIMES
                                                03 NILAI OCCURS 8 TIMES
                                                PIC 99V9.

Dalam Pascal di tulis :
            var nilai : Array[1..500,1..8] of real

dan dalam BASIC dapat di tulis :
                        DIM     NILAI (500, 8)

Dalam COBOL maksimum dimensi yang dapat di terima adalah 3 (three dimensional). Contohnya :
            01 MHS-TABEL
                        02 TINGKAT OCCURS 5 TIMES
            03 SEX OCCURS 2 TIMES
                                    04 MHS OCCURS 20 TIMES PIC 9(5).

Dan dalam Pascal :
            var mhs : Array[1..5, 1..2, 1..20] of integer

            Dalam bahasa pemrograman seperti FORTRAN dan COBOL, alokasi untuk array dalam storage memerlukan waktu dalam proses kompilasi, karenanya batas bawah dan batas atas harus dikemukakan ketika mendefinisikan array.

            COBOL dan pascal (juga bahasa lain yang memungkinkan pendeklarasian array) mempunyai fasilitas untuk melakukan manipulasi antarelemen array. Operasi yang sesuai dengan tipe data array tersebut dapat dikerjakan dengan mudah, contohnya dalam COBOL

            COMPUTE TOTAL_UPAH(I) = UPAH_PER_JAM(I) * JUMLAH-JAM(l)

Terlihat bahwa ketiga variable di atas adalah array.

            Beberapa bahasa pemrograman memperkenankan operasi array. Sebagai contoh, A adalah array (bertipe real) yang di deklarasikan dalam PL/1, maka A=A+2 adalah operasi untuk menambah setiap elemen dari A dengan bilangan 2.

            Juga dikenal operasi A = A * B. Operasi ini menghasilkan array A baru yang elemennya merupakan hasil kali elemen A (lama) dengan elemen array B yang posisinya bersesuaian. Order array A dan B harus sama.

            Perhatikan bahwa perkalian array ini bukan perkalian matriks yang telah kita kenal. Dalam PL/1, operasi dapat pula dilakukan terhadap cross-section. Sebagai contoh adalah operasi yang menyebabkan NILAI seluruh baris 20 menjadi nol, berikut ini : 

            NILAI (20, * ) = 0


            Operasi VEKTOR(*)= ARRAY1(I,*) *ARRAY(*,J) akan memperkalikan elemen baris ke-I dari ARRAY1 dengan elemen kolom ke-j dari ARRAY2 . Operasi di atas mempunyai efek yang sama seperti loop dalam Bahasa BASIC. :

                        FOR K = 1 TO N
                        VEKTOR(J) = ARRAY1(I,K)* ARRAY2(K,J)
                        NEXT K

D.     PEMETAAN ARRAY KE STORAGE


            Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema pennyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
a)      Kesederhanaan dari akses elemen
b)      Mudah untuk di telusuri
c)      Efisiensi dari utilitasi storage
d)      Mudah dikembangkan

                        Umumnya tidaklah mungkin untuk mengoptimalkan keempat factor tersebut sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logic dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG (I), untuk setiap I = 1, 2, 3,…, N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG (I), diperlukan untuk mengetahui 2 hal yakni :
a)      Address awal dari ruang storage yang di alokasikan bagi array tersebut.
b)      Ukuran dari masing-masing
           
                        Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan bahwa masing-masing elemen dari array menduduki S byte. Maka, address awal dari elemen ke-I adalah :

                        B + (I-1) * S

                        Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari array yang mempunyai batas bawah subscript tidaksama dengan 1. Perhatikan array Z(4:10), maka address awal dari Z(6) adalah :
                                    B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(I) adalah :

                                    B + (I -(-2)) * S

Maka secara umum, untuk array :

                                    ARRAY(L:U),

Elemen ARRAY (I) mempunyai address awal

                                    B + (U-L) * S

2.            RECORD

     
      Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai type. Satuan data tersebut sering disebut sebagai field dari record. Field di panggil dengan menggunakan namanya masing-masing.Suatu field dapat terdiri atas beberapa subfield.

      Sebagai contoh, data personalia dari seorang pegawai suatu perusahaan di Amerika Serikat, merupakan sebuah record yang dapat terdiri dari berbagai field, dan subfield seperti berikut ini :

1    NOMOR-JAMINAN-SOSIAL
2                NAMA, yang terdiri atas :
                  NAMA-BELAKANG
                  NAMA-DEPAN
                  NAMA-TENGAH
3    ALAMAT, terdiri atas :
                  JALAN
                  NOMOR RUMAH
                  NAMA-JALAN
                  KOTA
                  NEGARA-BAGIAN
                  KODE-POS
            4    MENIKAH

Dan sebagainya lagi.

            Pada record tersebut di atas, satuan data seperti NAMA BELAKANGAN ataupun KOTA merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan tipe data numeric, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data Boolean atau logical.

            Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array bersifat homogeny (terdiri dari tipe data yang sama), dan komponen array tidak memiliki nama sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan di simpan di memori utama computer (bersifat sementara), sedangkan record biasanya digunakan dalam filling yang akan disimpan di memori sekunder computer, seperti hard disk, disket, dan lainnya.

            Sebuah record memberi informasi tentang berbagai kondisi dari obyek pada permasalahan yang nyata sehari hari. Setiap field memberi uraian tentang satu atribut dari obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah salah satu atau lebih field yang di pilih untuk tujuan penyampaian informasi yang terjadi di dalam record yang bersangkutan.

            Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berj=kas. Jadi, koleksi dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada umunya record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key masing-masing. Di dalam sautu file PERSONALIA, field NOMOR JAMINAN SOSIAL dari seorang pegawai dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat tinggi, record dapat dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan spesifikasi tentang nama record, field dan subfield yang bersangkutan.

            Record tersebut juga di beri nomor seperti diperlihatkan di dalam contoh di bawah ini. Deklarasi berikut ini dapat digunakan untuk menuliskan record dari file PERSONALIA di atas.

                        01 PEGAWAI
                                    02 NOMOR-JAMINAN-SOSIAL
                                    02 NAMA
                                                03 NAMA-BELAKANG
                                                03 NAMA-DEPAN
                                                03 NAMA-TENGAH
                                    02 ALAMAT
                                                03 JALAN
                                                            04 NOMOR RUMAH
                                                            04 NAMA-JALAN
                                                03 KOTA
                                                03 NEGARA-BAGIAN
                                                03 KODE-POS
                                                02 MENIKAH
(yang harus dilengkapi dengan Picture masing-masing field dan subfield)

            Record tersebut dinyatakan di dalam memori sebagai berikut :

            Secara fisik, field record tersebut biasanya disimpan berurutan di dalam lokasi storage, bahkan sering di satukan. Record biasanya di simpan sebgai file di dalam storage pembantu, dan jika perlu, sebagian di simpan di dalam memori utama. File merupakan organisasi data utama di dalam proses pengolahan informasi.

            Sebagai gambaran sederhana, panda sebuah table dengan sejumlah baris dan kolom. Table tersebut dapat disebut sebagai sebuah file, sedangkan setiap baris table tersebut disebut dengan record, dan setiap kolom dari table disebut dengan field.