Tiap-tiap data dalam runtunan diakses satu per satu dari awal sampai akhir. Diakses artinya data tersebut dicapai lalu diproses bergantung pada proses yang diinginkan.
Model pengaksesan data yang tersusun secara beruntun dinamakan model pengaksesan beruntun.
4.1. SUSUNAN TEKS
Arsip teks untuk selanjutnya kita sebut saja teks adalah arsip yang terdiri dari deretan karakter. Untaian karakter itu dapat membentuk sebuah kata. Yang dimaksud dengan kata adalah kelompok karakter yang dipidahkan dengan kelompok lain dengan satu atau lebih spasi.
Dalam meninjau model pengaksesan beruntun pada teks, kita tidak memandang sebuah teks disusun oleh baris-baris teks tetapi lebih condong menyerupai sebuah pita yang birisi runtunan karakter-karakter.
Suatu teks P didefinisikan di dalam bagian deklarasi sebagai berikut : DEKLARASI
P : text {P adalah peubah teks}
4.2. TANDA AKHIR TEKS
Pemrosesan teks yang sama adalah proses pembacaan. Karena teks berisi runtunan karakter, maka pembacaan teks adalah membaca karakter demi karakter secara beruntun, mulai dari awal teks sampai akhir teks. Akhir teks ditandai dengan sebuah karakter khusus (kita definisikan karakter “.”), bila pembacaan teks bertemu dengan titik maka proses pembacaan teks dihentikan.
4.3. DEFINISI TEKS KOSONG
Pemrosesan teks selalu mempertimbangkan keadaan awal teks, yaitu kosong atau tidak kosong. Sebuah teks mungkin saja kosong. Sebuah arsip yang hanya berisi spasi tidak dapat disebut kosong, karena kita telah membuat perjanjian bahwa sembarang tekas harus diakhiri dengan karakter titik, maka teks kosong adalah teks yang hanya berisi karakter titik.
4.4. PEMBACAAN TEKS
Pembacaan teks dimulai dari awal teks (dari kiri ke kanan), dengan mengaikan ada sebuah pointer yang menunjuk ke karakter yang akan dibaca. Setiap kali karakter yang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pinter dinyatakan di dalam peubah C.
Nama peubah C didefinisikan di dalam bagian DEKLARASI program utama, sehingga ia dikenal di seluruh bagian algoritma termasuk prosedur dan fungsi yang dipakai oleh algoritma.
DEKLARASI
C : char {karakter yang sedang ditunjuk oleh pointer baca}
Didefinisikan Reset_Teks adalah prosedur universal untuk teks. Reset_Teks menyebabkan pointer akan menunjuk pada karakter pertama di teks. Jika teks kosong, pointer menunjuk karakter titik.
Procedure Reset_Teks
{Menyiapkan teks pada posisi awal}
{K.awal : sembarang}
{K.akhir : pointer menunjuk pada karakter pertama di dalam teks.
Akibat pemanggilan prosedur ini, pointer menunjuk ke karakter pertama teks. Karakter yang ditunjuk mungkin ‘.’}
Notasi yang digunakan untuk membaca karakter dari teks P adalah :
Read(P;C) {membaca karakter yang ditunjuk oleh pointer baca dari teks P. Karakter yang dibaca disimpan di dalam pubah C}
Contoh :
Menghitung banyaknya karakter di dalam pita (tidak termasuk karakter ‘.’). Buatkan prosedur untuk persoalan diatas !
Solusi :
Procedure Hitung_Banyak_Karakter(output n : integer) {Menghitung banyaknya karakter di dalam teks}
{K.awal : sembarang}
{K.akhir : n berisi banyaknya karakter di dalam teks } DEKLARASI
{tidak ada}
DESKRIPSI n s 0
Reset_Teks Read(P;C) While C ≠ ‘.’ do n s n + 1
Read(P,C) {baca karakter berikutnya}
Endwhile {C = ‘.’}
LATIHAN :
9 Buatlah prosedur dan program pemanggil untuk menghitung jumlah karakter ‘B’ di dalam suatu teks !
L A R I K
Sebuah peubah atau tetapan hanya menyimpan sebuah nilai dari tipe tertentu. Ia tidak dapat menyimpan beberapa buah nilai yang bertipe sejenis.
Dalam kegiatan pemrograman, sekumpulan data yang bertipe sama perlu disimpan sementara di dalam memori komputer untuk sewaktu-waktu dimanipulasi.
Bila kumpulan data disimpan secara beruntun di dalam memori, maka tiap elemen data dapat diacu dengan menggunakan indeks. Indeks menyatakan posisi data relatif di dalam kumpulannya struktur penyimpanan data seperti itu dinamakan dengan larik (array), atau sering disebut juga tabel, vektor atau peubah majemuk.
5.1. DEFINISI LARIK
Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui endeksnya. Indeks larik haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter.
Misalnya larik yang bernama A dengan delapan buah elemen dapat dibayangkan secara lojik sebagai sekumpulan kota yang terurut (vertika atau horizontal). Tiap kotak pada larik tersebut diberi indeks integer 1, 2, 3, .... 8. Tiap elemen larik ditulis dengan notasi :
A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8]
Angka didalam kurung siku menyatakan indeks larik.
Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik bertipe sama, maka nilai yang disimpan oleh setiap elemen juga harus bertipe sama.
5.2. MENDEFINISIKAN LARIK DALAM DEKLARASI
Larik adalah struktur data yang statik, artinya jumlah elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah, ditambah, atau dikurangi selama pelaksanaan program. Mendefinisikan larik di dalam bagian DEKLARASI berarti :
9 Mendefinisikan banyaknya elemen larik 9 Mendefinisikan tipe elemen larik
Mendefinisikan banyaknya elemen larik berarti memesan sejumlah tempat di memori.
Memori mengalokasikan sejumlah lokasi memori sebanyak elemen larik yang
bersangkutan. Tipe elemen larik dapat bertipe sederhana (integer, real, char, boolean, string), tipe terstruktur (tipe bentukan seperti record) atau bahkan bertipe larik.
Contoh mendefinisikan larik di dalam bagian deklarasi : 9 Sebagai Peubah
DEKLARASI
L : array[1..50] of integer
Nama_mhs : array[‘a’..’j’] of string Nilai_ujian : array[0..74] of real
9 Sebagai Tipe Baru DEKLARASI
Type TabInt : array[1..100] of integer P : TabInt
9 Mendefinisikan Ukuran Maksimum Elemen Larik Sebagai Sebuah Tetapan DEKLARASI
Const Nmaks = 1000
Type TabInt : array[1..Nmaks] of integer P : TabInt
DEKLARASI
Harga_barang : array[1..N] of real
DEKLARASI Const N = 15
Harga_barang : array[1..N] of real
5.3. CARA MENGACU ELEMEN LARIK
Cara mengacu elemen larik diacu melalui indeksnya. Nilai indeks harus terdefinisi.
Dengan mengacu pada larik yang sudah didefinisikan sebelum ini, maka contoh-contoh cara mengacu elemen larik adalah :
L[4] {mengacu elemen keempat dari larik L}
Nama_mhs[‘b’] {mengacu elemen kedua dari larik nama_mhs}
P[k] {mengacu elemen ke k dari larik P, asalkan nilai k sudah terdefinisi}
Harga_barang[i+1] {mengacu elemen ke i dari larik harga_kompuetr, asalkan nilai i sudah terdefinisi}
Contoh memanipulasi atau menggunakan elemen larik :
L[4] s10 {mengisi elemen ke 4 dari larik L dengan nilai 10}
Read(P[k]) {membaca elemen ke k dari larik P}
If harga_barang[t] < 10000 then Write(‘harga’ murah’) else
5.4. PEMROSESAN LARIK
Elemen larik tersusun secara beruntun, karena itu elemennya diproses secara beruntun melalui indeks yang terurut, asalkan indeks tersebut sudah terdefinisi.
Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik.
Skema umum algoritma memproses larik disebut juga skema mengunjungi (traversal) larik, berikut :
Procedure Skema_Umum_Pemrosesan_Larik
{Memproses setiap elemen larik secara beruntun, mulai dari indeks terkecil sampai indeks terbesar}
DEKLARASI
Const Nmaks = 100 {banyak elemen larik}
Type larik : array[1..Nmaks] of integer A : larik
K : integer {indeks larik}
DESKRIPSI
for i s 1 to N do proses a[i]
Endfor
Proses adalah aksi yang dilakukan terhadap elemen larik. Proses dapat berupa aksi pengisian nilai, pembacaan, penulisan atau manipulasi lainnya.
5.4.1. Menginisialisasi Larik
Menginisialisasi larik adalah memberikan harga awal untuk seluruh elemen larik.
Inisialisasi kadang-kadang diperlukan misalnya mengosongkan elemen larik sebelum dipakai untuk proses tertentu. Mengosongkan larik bertipe numerik dapat berupa pengisian elemen larik dengan nol, sedangkan pada larik karakter, mengosongkan
larik berarti mengisi elemen larik dengan spasi atau karakter kosong. Nol atau spasi bukanlah satu-satunya nilai yang dipakai untuk inisialisasi.
Contoh :
a. menginisialisasi elemen larik A[1], A[2], ...A[N] dengan nilai nol Procedure InisialisasiA(output A : larik)
{menginisialisasi setiap elemen larik A dengan nol}
{K.awal : larik A belum terdefinisi nilai elemen-elemennya}
{K.akhir : seluruh elemen larik A bernilai nol}
DEKLARASI
K : integer {pencatat indeks larik}
DESKRIPSI
for K s 1 to Nmaks do A[K] s 0
Endfor
b. menginisialisasi elemen larik A[1], A[2], ...A[N] masing-masing dengan nilai 1, 2, ..N Procedure inisialisasiB(output A : larik)
{menginisialisasi setiap elemen larik A[K] dengan nilai k = 1 , 2 ...N}
{K.awal : larik A belum terdefinisi nilai elemen-elemennya}
{K.akhir : setelah inisialisasi A[1]=1, A[2]=2,..., A[N]=N } DEKLARASI
K : integer {pencatat indeks larik}
DESKRIPSI
for K s 1 to Nmaks do A[K] s K
Endfor
5.4.2. Mengisi Elemen Larik dari Piranti Masukan
Selain dengan pengisian nilai, elemen larik dapat diisi nilai yang dibaca dari piranti masukan dengan perintah read seperti contoh berikut :
Procedure Baca_Larik(output A : larik)
{mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan}
{K.awal : larik A belum terdefinisi nilai elemen-elemennya, N sudah berisi jumlah elemen efektif}
{K.akhir : setelah pembacaan, sebanyak N buah elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan}
DEKLARASI
K : integer {pencatat indeks larik}
DESKRIPSI
for K s 1 to N do read(A[K])
Endfor
5.4.3. Menulis Elemen Larik ke Piranti Keluaran
Menulis elemen larik dapat dicetak ke piranti keluaran dengan perintah print, seperti pada contoh prosedur berikut :
Procedure Tulis_larik(input A : larik, input N : integer) {mencetak elelemen larik A[1..N] ke piranti keluaran}
{K.awal : N sudah terdefinisi ukuran larik yang terpakai. Elemen larik A[1..N] sudah terdefinisi nilai elemen-elemennya}
{K.akhir : diakhir prosedur, sebanyak N buah elemen larik A tersetak nilainya ke piranti keluaran}
DEKLARASI
K : integer {pencatat indeks larik}
DESKRIPSI
for K s 1 to N do write(A[K])
Endfor
5.5. LARIK BERTIPE TERSTRUKTUR Contoh :
TabMhs adalah sebuah larik yang elemennya menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang diambil dan nilai mata kuliah.
Maka algoritmanya sebagai berikut :
Algoritma Baca_Larik_Mahasiswa
{mengisi elemen larik mahasiswa dengan data yang dibaca dari piranti masukan}
DEKLARASI
Const Nmaks = 100
Type mahasiswa : record <NIM : integer NamaMhs : string KodeMK : string Nilai : char >
TabMhs : array[1..Nmaks] of mahasiswa K : integer
N : integer DESKRIPSI Read(N)
for K s 1 to N do
read(TabMhs[K].NIM) read(TabMhs[K].NamaMhs) read(TabMhs[K].KodeMK) read(TabMhs[K].Nilai) Endfor