BELAJAR PROGRAM ARRAY
ARRAY
DEFINISI
Array atau
Larik adalah :
Type data terstruktur yang terdiri dari sejumlah elemen dimana
setiap elemennya mempunyai tipe data yang sama atau sejenis (setype).
Larik dimanipulasikan dengan memanfaatkan
index (subscript) dari tiap elemen larik tersebut.
Array
Dimensi Satu
Array bisa
dideklarasikan pada bagian deklarasi type atau bagian deklarasi Var.
Bentuk 1 :
Var
NamaArray
: Array[TypeIndex] Of TypeLarik;
Bentuk 2 :
Type
NamaType
= Arrat[TypeIndex] Of Type Larik;
Var
NamaVarArray
: NamaType;
NamaLarik : Nama Variable bertype Array.
Type Larik : Type datanya. Type larik dapat berupa integer, real, char,
string atau record.
TypeIndex : data bertype ordinal seperti char, byte,
integer atau enumerated. Type Index
dapat berupa NamaType atau Sub Range
Langsung.
Contoh
deklarasi :
Type
Daftar_nilai
: array [1..5] of integer;
Var
Nilai : daftar_nilai;
Atau dapat
ditulis pada bagian var saja :
Var
Nilai : array [1..5] of integer;
Dari
deklarasi diatas mempunyai arti :
Variable
array yang bernama Nilai mempunyai 5 buah elemen (dengan indeks 1 sampai 5) dan
masing-masing elemen bertipe integer.
Dari
deklarasi Array diatas dapat direpresentasikan
didalam memori sebagai berikut :
|
|||
|
Tiap kotak
disebut dengan elemen array, berfungsi seperti halnya variable, dapat diisi
dengan sebuah data dari type tertentu sesuai yang dideklarasikan. Tiap kotak mempunyai ‘nomor’ / ‘alamat’ yang
disebut dengan index yang berfungsi untuk memberi identitas kotak tersebut.
Cara
mengakses elemen array dimensi satu
Elemen array
bisa diakses dengan cara menyebutkan nama array diikuti nilai indeksnya didalam
kurung siku.
Nilai [1],
ini berarti mengakses nilai elemen pertama.
Untuk
memberikan nilai ke array, bisa menggunakan 2 cara, yaitu :
Dengan
operator penugasan (:=)
Nilai [1] :=
0 , elemen pertama dari nilai diberi nilai 70
Dengan
statemen Read/readln
Read
(nilai[1]);
Read
(nilai[2]);
Jika
menggunakan perintah ini banyaknya perintah yang diberikan harus sebanyak
elemen yang dideklarasikan pada deklarasi array, sehingga bias digunakan
perintah perulangan seperti berikut :
For I := 1 to
5 do
Begin
Readln(nilai[I]);
End;
Untuk
mengambil nilai/membaca elemen dari array dimensi satu digunakan statemen Write
Write
(nilai[1]);
Untuk
mempersingkat program dipergunakan perintah berikut :
For I := 1 to
5 do
Begin
Writeln(nilai[I]);
End;
Contoh 1 :
program 1;
uses crt;
const
max_test = 4;
type
data_nilai = array[1..max_test] of integer;
var
i,jum : integer;
rata : real;
nilai_test : data_nilai;
begin
clrscr;
{memasukkan data}
for
i := 1 to max_test do
begin
write ('masukkan nilai test ke ',i,' = ');
readln (nilai_test[i]);
end;
{menhitung total nilai dan rata-rata}
jum :=
0;
for
i := 1 to max_test do
begin
jum := jum + nilai_test[i];
end;
rata
:= jum / max_test;
{mencetak}
writeln ('Total nilai =
',jum);
writeln ('Rata-rata nilai = ',rata:5:2);
readln;
end.
Array
Dimensi Dua
Array
berdimensi dua mempunyai bentuk table yang menpunyai 2 indeks, baris dan kolom
Format :
Deklarasi
array dimensi dua bisa ditempatkan pada bagian type ataupun Var seperti halnya
array dimensi satu.
Bentuk 1:
Var
NamaLarik :
Array[TipeIndexBaris,TypeIndexCol] Of TypeLarik;
Bentuk 2 :
Type
NamaType =
Array[TipeIndexBaris,TypeIndexCol] Of TypeLarik;
Var
NamaVarArray
: NamaType;
Indeks1 biasa
disebut indeks baris yang menunjukkan banyaknya baris, sedang indeks2 disebut
indeks kolom yang menunjukkan banyaknya kolom.
Contoh :
Var
Nilai_mhs : array [1..100,1..3] of
integer;
Dari
deklarasi array 2 dimensi diatas dapat direpresentasikan dalam memori seperti
berikut :
|
Kolom
1
|
Kolom
2
|
Kolom
3
|
Baris
1
|
|
|
|
Baris
2
|
|
|
|
Baris
3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Baris
100
|
|
|
|
Baris
menunjukkan banyaknya mahasiswa, sedang kolom menunjukkan banyaknya nilai
Cara
mengakses elemen array dimensi dua
Untuk
mengakses elemen pada array dimensi 2 bisa disebutkan nama array diikuti dengan
indeks baris dan indeks kolomnya.
Nama array [indeks_baris, indeks_kolom]
Untuk memberi
nilai ke array, bisa dengan dua cara
Dengan
operator penugasan (:=)
Nilai_mhs[4,
1] := 80;
Berarti
memberikan nilai 80 langsung kedalam elemen array baris ke 4 kolom ke 1
Dengan
pernyataan masukan (read/readln)
Read
(Nilai_mhs [4, 1]);
Berarti
memberikan nilai kedalam elemen array baris ke 4 kolom ke 1 melalui keyboard
Banyaknya
perintah yang diberikan dengan statemen diatas sesuai dengan banyaknya elemen
array, yaitu jumlah baris dikalikan jumlah kolomnya. Untuk mempersingkat
perintah bisa dipergunakan perintah perulangan, untuk deklarasi diatas bisa
dipergunakan perintah berikut :
For I := 1 to
100 do
Begin
For J := 1 to 3 do
begin
Readln(Nilai_mhs[I,J);
End;
End;
Dengan
variable I mewakili baris dan variable J mewakili kolom.
Untuk
mengambil atau mencetak nilai dari array, digunakan pernyataan keluaran
(write/writeln)
Write
(Nilai_mhs [4, 1]);
Untuk
mempersingkat perintah bisa dipergunakan perintah perulangan, untuk deklarasi
diatas bisa dipergunakan perintah berikut :
For I := 1 to
100 do
Begin
For J := 1 to 3 do
begin
Writeln(Nilai_mhs[I,J);
End;
End;
Dengan
variable I mewakili baris dan variable J mewakili kolom.
Contoh 2:
Program lat2;
Uses Crt;
Const N = 10;
Var
Nim : Array[1..N] Of integer;
Nama
: Array[1..N] Of String[20];
IP : Array[1..N] Of real;
I : Integer;
Begin
Clrscr;
{Baca Data}
Writeln(‘Masukkan’,N,‘buah data’);
For I := 1 to N Do
Begin
Write(‘No.Mhs : ’);Readln(NIM[I]);
Write(‘Nama
Mhs : ’);Readln(Nama[I]);
Write(‘IP
Mhs : ’);Readln(IP[I]);
End;
{Cetak Hasil}
Writeln(‘Daftar Nilai’);
Writeln(‘No NIM
NAMA IP’);
For I := 1 to N Do
Writeln(‘I:2,
Nim[I]:10, Nama[I]:15, IP[I]:6:2);
Readln
End.
Contoh 3 :
program lat3;
uses crt;
type
data_nilai = array[1..100,1..3] of integer;
var
max_siswa,i,j,jum : integer;
rata
: real;
nilai_test : data_nilai;
begin
clrscr;
{memasukkan data}
write
('masukkan jumlah siswa = ');
readln
(max_siswa);
for i
:= 1 to max_siswa do
begin
writeln ('data Mahasiswa ke ',i,' = ');
for
j := 1 to 3 do
begin
write ('masukkan nilai test ke ',i,' = ');
readln (nilai_test[i,j]);
end;
end;
{menhitung total nilai dan rata-rata}
clrscr;
writeln ('DAFTAR NILAI');
write ('No ');
for
i := 1 to 3 do
write ('nilai ke-',i,' ');
writeln ('rata-rata');
writeln;
for
i := 1 to max_siswa do
begin
jum := 0;
for j := 1 to 3 do
jum := jum + nilai_test[i,j];
rata:= jum / 3;
write (i:2);
for j := 1 to 3 do
write ('
',nilai_test[i,j],'':7);
writeln(rata:5:2);
end;
readln;
end.
Contoh 4 :
program lat4;
uses crt;
type
tabel = array[1..10,1..10] of integer;
var
matrixA,matrixB,mat_kali,mat_plus : tabel;
No_baris,baris,kolom : integer;
procedure
baca (var mat :tabel; var no_baris : integer);
var
i,j : integer;
begin
for i := 1 to baris do
begin
for j := 1 to kolom do
begin
gotoxy((j-1)*5+1,No_baris);
read(mat[i,j])
end;
no_baris :=no_baris + 1;
writeln;
end;
end;
procedure
kali (var mat_kali :tabel; matA,matB : tabel);
var
i,j,k : integer;
begin
for i := 1 to baris do
for j := 1 to kolom do
begin
mat_kali[i,j] := 0;
for k := 1 to baris do
mat_kali[i,j] := mat_kali[i,j] +
matA[i,k] * matB[k,j];
end;
end;
procedure
plus (var mat_plus :tabel; matrixA,matrixB : tabel);
var
i,j : integer;
begin
for i := 1 to baris do
begin
for j := 1 to kolom do
begin
mat_plus[i,j] := matrixA[i,j] +
matrixB[i,j];
end;
end;
end;
procedure
cetak (matrix : tabel);
var
i,j : integer;
begin
for i := 1 to baris do
begin
for j := 1 to kolom do
begin
write(matrix[i,j]:8);
end;
writeln;
end;
end;
begin
repeat
clrscr;
writeln ('perkalian dan penjumlahan
matriks');
No_baris := 6;
write ('masukkan baris = ');
readln(baris);
write ('masukkan kolom = ');
readln(kolom);
if kolom <> baris then
begin
writeln ('banyaknya kolom harus sama
dengan kolom');
write ('tekan enter untuk
ulangi');readln;
end;
until kolom = baris;
writeln('MATRIKS A ');
baca(matrixA,No_baris);
writeln;
writeln('MATRIKS B ');
no_baris := 15;
baca(matrixB,No_baris);
kali(mat_kali,matrixA,matrixB);
plus(mat_plus,matrixA,matrixB);
clrscr;
writeln('hasil');writeln;
writeln('MATRIKS A =');writeln;
cetak(matrixA);writeln;
writeln('MATRIKS B =');writeln;
cetak(matrixB);writeln;
writeln('matrik A kali matriks B
=');writeln;
cetak(mat_kali);
writeln;writeln;
writeln('matriks A tambah matrik B
=');writeln;
writeln;
cetak(mat_plus);
readln;readln;
end.
FUNGSI DAN PROCEDURE
Pemrograman
dengan menggunakan konsep subprogram merupakan konsep yang paling bermanfaat
dan produktif, dan penggunaan subprogram
ini bisa mempertinggi derajad pemrograman terstruktur. Dalam pascal subprogram
ini dikenal dengan istilah Procedure dan Function.
Modularisasi
akan memberikan keuntungan :
; Untuk
aktivitas yang harus dilakukan lebih dari satu kali, modul program cukup
ditulis sekali saja, lalu modul tersebut bisa dipanggil dari bagian lain dalam
program.
; Kemudahan
menulis dan menemukan kesalahan program.
Di dalam
Pascal terdapat dua jenis procedur dan fungsi, yaitu procedur dan fungsi bawaan
(standard) yang sudah disediakan oleh pascal dan procedur dan fungsi yang
diciptakan sendiri oleh pemrogram.
5.1.
PROCEDURE DAN FUNGSI STANDARD
5.1.1.
FUNGSI
STANDARD
Fungsi adalah
suatu routine yang terdefinisi, baik di definisikan oleh PASCAL (fungsi
standard) maupun didefinisikan oleh pemakai (user define function). Fungsi dapat kita bedakan dari hasil
fungsinya, yang dapat berupa String, Numeric atau Boolean. Berikut ini adalah
fungsi-fungsi pustaka ynag sudah terdefinisi dalam PASCAL.
1.
Fungsi Standard Aritmatika
Abs(x) : Menghasilkan
nilai mutlak dari x, x real atau integer.
Exp(x) : Menghasilkan , x real atau integer.
Ln(x) : Menghasilkan logaritma natural x.
Int(x) : Menghasilkan
nilai integer dari x, x real.
Frac(x) : Menghasilkan bagian
pecah dari x yang real.
Sqr(x) : Menghasilkan
nilai kuadrat dari x, x real atau integer.
Sqrt(x) : Menghasilkan akar
kuadrat dari x, x real.
Sin(x) : Sinus x, x real.
Cos(x) : Cosinus x, x
real.
ArcTan(x) : Arch Tg x.
Random(x) : Menghasilkan bilangan
bulat acak dari 0 – x.
2.
Fungsi Standard String
Copy(s,I,n) : Menyalin n
buah character mulai dari posisi i dari string x.
Pos(s1,s2) : Menghasilkan posisi
suatu string s1 dalam string s2.
Length(s) : Menghasilkan panjang
suatu string s.
Readkey : Menghasilkan satu
character yang diketik dari keyboard.
Bersifat menunggu masukkan satu character.
3.
Fungsi Standard Transfer
Ord(x) : Menghasilkan KODE
ASCII dari x, x bertype Char.
Chr(x) : Menghasilkan
character yang berkode ASCII x.
Round(x) : Menghasilkan nilai
longint yang terdekat dari x real sesuai dengan aturan pembulatan.
Trunc(x) : Menghasilkan nilai
longint yang terkecil dari x real.
Upcase(x) : Menghasilkan huruf
besar.
5.1.2. PROCEDURE STANDARD
Procedure
standard adalah suatu routine yang juga siap pakai dan dipanggil dengan
menyebutkan nama procedure dengan memberikan argumen yang sesuai. Berikut adalah procedure-procedure standard
yang sering kita pakai.
5.1. Procedure
Input / Output
Write, writeln : sudah
dibahas
Read, Readln : sudah
dibahas
5.2. Procedure
Operasi String
Delete(x,i,n) : Membuang
n
buah character mulai dari i dari string x.
Insert(s1,s2,i) : Menyisipkan
string s1 dalam string s2 di posisi i.
Str(n:w:d,s) : Merubah
Numerik lebar w decimal d dalam string s.
Val(s,n,c) : Merubah s
string menjadi numeric dalam n.
FillChar(x,n,ch) : Mengisi
variable x dengan character ch sebanyak n.
5.3. Procedure
Lain-lain
Clrscr : Hapus
layar.
ClrEol : Hapus
baris mulai posisi cursor.
DelLine : Menghapus 1
baris di posisi cursor dan menggeser naik tampilan-tampilan di bawahnya.
InsLine : Menyisipi
sebuah baris pada posisi cursor.
Gotoxy(x,y) : Memposisikan
cursor pada baris y, kolom x.
Delay(n) : Menunda
proses n integer yang menunjukkan lama tunda.
Halt : Menghentikan
eksekusi program.
Sound(f) : Menghasilkan
nada suara dengan frequensi f.
NoSound : Mematikan
nada.
TextColor(x) : Memesan
warna tulisan dengan konstanta warna x.
x dapat berupa angka 0, 1, 2, … atau Black, Red, White, …
TextBackGround(x) : Memesan warna
latar belakang dengan konstanta warna x.
Untuk
procedure dan fungsi standard yang sudah disediakan oleh pascal semuanya
terdapat pada unit-unit yang harus disertakan pemakaiannya pada USES (pada
kepala program).
Untuk
selanjutnya yang akan dibahas adalah procedure dan function buatan pemakai.
5.2. MENCIPTAKAN FUNGSI DAN PROCEDURE
5.2.1. MENCIPTAKAN
FUNGSI
Fungsi
merupakan sebuah subprogram yang apabila dipanggil akan menghasilkan sebuah
nilai.
Ciri-ciri
suatu fungsi :
Ø Fungsi hanya
memberikan sebuah hasil
Ø Nama fungsi
selain digunakan untuk memanggil fungsi tersebut, juga dianggap sebagai suatu
variable sehingga bias digunakan sebagai bagian dari ungkapan.
Ø Dalam fungsi
tidak digunakan parameter variable, semua parameter dianggap sebagai parameter
nilai.
Ø Semua
parameter digunakan sebagai masukan pada fungsi tersebut dengan keluarannya
nama fungsi yang bertindak sebagai satu variable.
Deklarasi
fungsi :
|
Function, adalah kata tercadang pascal yang memberi tanda bahwa deklarasi
fungsi dimulai.
Pengenal, adalah nama fungsi
Daftar
parameter formal, adalah nama parameter yang akan dioperasikan dalam fungsi
tipe, adalah tipe
data dari nilai fungsi. (yang diperbolehkan hanya tipe skalar, subjangkauan
atau terbilang).
Kemudian
untuk memanggil fungsi yang sudah dideklarasikan, digunakan bentuk sebagai
berikut :
|
Pengenal
adalah nama fungsi yang akan dipanggil.
Beberapa hal
penting yang perlu diperhatikan berkaitan dengan pemakaian fungsi, adalah :
; Tipe hasil
fungsi harus bertipe sederhana (integer, real, boolean, char atau string),
karena fungsi hanya bisa mengembalikan nilai bertipe sederhana.
; Jika fungsi
tidak memiliki daftar parameter formal, maka tanda kurung buka “(“ dan kurung
tutup “)” tidak ditulis.
Fungsi
didefinisikan didalam blok program pemanggil (setelah kata tercadang var)
5.2.2. MENCIPTAKAN
PROSEDUR
Berapa hal
yang harus diperhatikan dalam penggunaan prosedur, antara lain :
- Deklarasi prosedur terletak pada bagian deklarasi program.
- Sembarang tipe statemen pascal bisa digunakan dalam prosedur.
- Parameter dalam prosedur bersifat optional, boleh ada boleh tidak.
- Suatu prosedur bisa memanggil prosedur lain yang sudah didefinisikan terlebih dahulu.
- Pemberian nama prosedur mengikuti aturan pemberian nama pengenal atau perubah.
Mendeklarasikan prosedur
Struktur
prosedur hampir sama dengan struktur program pascal, yaitu :
Bagian kepala prosedur
Procedure
nama_prosedur (dafatar parameter formal);
Bagian deklarasi
Digunakan
untuk mendeklarasikan semua variabel lokal yang digunakan dalam prosedur.
Bagian pernyataan.
Digunakan
untuk menuliskan semua statemen, yang diawali dengan begin dan diakhiri dengan
end diikuti tanda titik koma (;).
Begin
(statemen)
end.
Pemanggilan
prosedur dilakukan dengan cara menyebutkan nama prosedurnya diikuti dengan
parameter (parameter aktual) jika memakai parameter formal pada saat
mendeklarasikan.
NAMA LOKAL DAN NAMA GLOBAL
Nama lokal
adalah suatu nama (variabel, konstanta dan type) yang dideklarasikan didalam
sebuah prosedur (atau fungsi), yang mana nama tersebut hanya berguna didalam
kelompok statemen atau dalam prosedur (atau fungsi) yang mendeklarasikannya.
nama lokal ini hanya memerlukan tempat dimemori pada saat prosedur atau fungsi
yang menggunakannya dikerjakan. Sembarang tipe data bisa digunakan sebagai nama
lokal.
Nama global
adalah nama (variabel, konstanta dan type) yang dideklarasikan dibagian
deklarasi pada pogram yang mana nama tersebut bisa digunakan diseluruh bagian
program termasuk pada prosedur dan fungsi.
Untuk
menghindari kesalahan pengalihan informasi ke dan dari prosedur yang
menggunakan variabel global, maka bisa dengan cara mendeklarasikan
parameter-parameter yang harus digunakan.
Sebisa
mungkin diminimalkan penggunaan nama global, karena penggunaan nama lokal bisa
meminimalkan usaha pencarian kesalahan yang disebabkan oleh nama tersebut.
PARAMETER
Kebanyakan
program memerlukan pertukaran informasi antara prosedur atau fungsi dan titik
dimana prosedur atau fungsi dipanggil. Untuk hal tersebut digunakan suatu
parameter.
Tujuan
penggunaan parameter formal adalah untuk mengontrol komunikasi informasi ke dan
dari prosedur. Ada
dua jenis parameter yang bisa digunakan, yaitu :
Parameter formal
Parameter
formal adalah parameter yang dideklarasikan didalam bagian kepala procedure
atau fungsi itu sendiri.
Daftar
parameter formal bisa berisi 4 tipe parameter yang berbeda, yaitu : perubah
(var), nilai, fungsi dan prosedur.
Paramater perubah (variabel)
Parameter
perubah ini biasa disebut dengan parameter referensi atau paramater var, adalah
parameter yang mengambil nilai dari parameter actual, dan jika nilai paramater
perubah tersebut mengalami perubahan, maka nilai parameter aktual juga berubah.
Bentuk umum
deklarasi parameter perubah :
|
Var, adalah kata baku
yang menunjukkan pengenal yang mengikutinya adalah parameter perubah.
Pengenal, adalah nama parameter perubah.
Tipe , adalah tipe data parameter perubah.
Tipe data
yang digunakan dalam parameter formal harus berupa pengenal atau tipe data
skalar, tidak boleh menggunakan tipe data terstruktur.
Parameter Nilai (Parameter Masukan)
Jika pada
saat mendeklarasikan parameter formal, kata Var tidak disertakan, maka
parameter yang digunakan disebut parameter nilai (value parameter), yang
berarti bahwa parameter tersebut hanya mengambil nilai dari parameter aktual
yang sesuai. Nilai parameter aktual yang asli tidak mengalami perubahan
meskipun nilai parameter formalnya mengalami perubahan.
Untuk kedua
jenis parameter tersebut bisa digunakan bersama-sama.
Parameter aktual
Parameter
aktual adalah parameter yang disertakan pada saat pemanggilan suatu prosedur
atau fungsi.
Bentuk umum
pemanggilan prosedur
|
Nama prosedur
yang dinyatakan oleh pengenal harus sesuai dengan nama prosedur yang digunakan
pada waktu mendeklarasikan prosedur. Daftar parameter aktual berisi nama-nama
parameter aktual yang akan digunakan atau dioperasikan didalam prosedur yang
akan dipanggil.
Parameter
aktual harus sesuai dengan parameter formal dalam hal :
- Urutan posisi dan jumlah parameter yang digunakan
- Tipe data dari setiap parameter.
Operasi yang
dilaksanakan pada saat prosedur dipanggil:
1. Nilai dari
semua parameter aktual yang berupa parameter nilai akan diberikan pada
parameter formal untuk dioperasikan didalam prosedur.
2. Lokasi setiap
parameter perubah dialokasikan.
3. Alokasi
perubah untuk perubah lokal.
4. Statemen
dalam prosedur akan dikerjakan berdasarkan parameter formal dan variabel lokal.
Contoh 5 :
Progam
dibawah ini digunakan untuk mencari nilai median dari sejumlah data yang
diinputkan kemudian diurutkan terlebih dahulu .
program lat5;
uses crt;
type
larik
= array[1..100] of real;
var
vektor : larik;
n,i,bantu : integer;
m,rerata,jum : real;
procedure baca;
begin
clrscr;
write('masukkan banyak data = ');
readln(n);
writeln('masukkan datanya =');
bantu := 1;
for
I := 1 to n do
begin
read(vektor[I]);
gotoxy(whereX+(I mod 8) * 8,whereY-1);
if I mod 8 = 0 then
writeln;
end;
end;
procedure cetak(X:larik;p:integer);
var
i :
integer;
begin
writeln;
for
I := 1 to P do
begin
write(X[I]:6:2);
if I mod 8 = 0 then
writeln;
end;
writeln;
end;
procedure urut (var X : larik; P:integer);
var
i,j,lokasi : integer;
bantu
: real;
begin
for i
:= 1 to p-1 do
begin
lokasi := i;
for j := i+1 to p do
if x[lokasi] > x[j] then
lokasi := j;
bantu := x[i];
x[i] := x[lokasi];
x[lokasi] := bantu;
end;
end;
procedure medu(var x : larik; n :integer);
begin
if
(n mod 2 = 0) then
m
:= (x[n div 2] + x[(n div 2) +1])/2
else
m
:= x[(n+1)div 2];
end;
procedure rata (x:larik; n :integer);
var
i : integer;
begin
jum
:= 0.0;
for
i := 1 to n do
jum := jum + x[i];
rerata := jum / n;
end;
begin
clrscr;
baca;
clrscr;
writeln('data sebelum diurutkan =');
cetak(vektor,n);
writeln;
urut(vektor,n);
writeln('data
urut =');
cetak(vektor,n);
rata(vektor,n);
writeln;
writeln('banyaknya data = ',n);
writeln('total data =
',jum:6:2);
writeln('nilai rata-rata = ',rerata:6:2);
medu(vektor,n);
writeln('nilai median = ',m:6:2);
readln;
readln
end.
Hasil run =
masukkan banyak data = 10
masukkan
datanya =
53.55 34.67
43 23.33 90.11 53 54.54
65.03
44. 87 11.99
data sebelum
diurutkan =
53.55 34.67
43.00 23.33 90.11 53.00 54.54
65.03
44. 87 11.99
data setelah
diurutkan =
11.99 23.33
34.67 43.00 44. 87 53.00 53.55
54.54
65.03
90.11
banyaknya
data = 10
total data = 474.09
nilai
rata-rata = 47.41
nilai median = 48.93
RECORD / REKAMAN
Type data
record merupakan type data terstruktur yang mempunyai sejumlah elemen yang
disebut medan
atau field yang masing-masing elemen bisa berbeda tipe datanya, tetapi
merupakan rangkaian data berbagai macam type yang kita pandang sebagai satu
kesatuan. Type data record dapat didefinisikan
sebagai berikut :
Bentuk :
Type
pengenal =
Record
medan1 : Type1;
medan2 : Type2;
...;
medann : Typen
End;
Var
NamaVarRecord
: pengenal;
Keterangan :
Type,
record, end
|
:
|
Kata
baku yang
harus ditulis seperti apa adanya
|
pengenal
|
:
|
Pengenal
yang menunjukkan tipe data yang akan dideklarasikan
|
Medan1
....medann
|
:
|
Nama
medan yang
akan digunakan
|
Type1
… typen
|
:
|
Sembarang
tipe data yang sudah dideklarasikan sebelumnya
|
Contoh :
Misal akan
digunakan data rekaman/record siswa yang
mempunyai field atau medan
nama, alamat, kelamin dan klas, maka dideklarasikan seperti berikut :
Type siswa =
record
Nama : string[25];
Alamat : string[25];
kelamin : (L,P);
klas : 1..6
end;
maka yang
terjadi pada memori utama dapat direpresentasikan sebagai berikut :
|
Nama
|
Alamat
|
Kelamin
|
Klas
|
Siswa
|
|
|
|
|
Operasi pada Record
Memasup
(mengambil nilai) medan
Yaitu mengambil nilai pada seluruh
rekaman atau pada medan-medan tertentu.
Caranya :
1. Menyebutkan
nama record, diikuti tanda titik dan nama medan
yang diinginkan.
|
Misal mengambil nilai medan nama pada record siswa diatas :
Siswa.nama
2. Dengan
statement WITH
Bentuk :
|
With , do : kata baku
Nama record : nama record yang
akan diambil nilainya.
Misal :
Type siswa =
record
Nama : string[25];
Alamat : string[25];
kelamin : (L,P);
klas : 1..6
end;
Var murid : siswa;
Kode_sex : 0..1;
Maka untuk
memasup record murid tersebut :
With murid do
Begin
Readln (nama);
Readln (alamat);
Readln (klas);
Readln (kode_sex);
If kode_sex = 1 then
Kelamin := L
Else
Kelamin := P
End;
Contoh 6
program lat6;
uses crt;
type
rec_bar = record
kobar : string[5];
nabar : string[20];
jumbar : integer;
harsat : real;
tot: real;
end;
barang = array[1..100] of
rec_bar;
var
data : barang;
i,n : integer;
total : real;
procedure masuk_data;
begin
clrscr;
write('masukkan jumlah
barang = ');
readln(n);
clrscr;
writeln('No Kode Barang Nama Barang quantity
Harga satuan');
for i := 1 to n do
begin
with data[i] do
begin
gotoxy(2,2+i);write(i);
gotoxy(10,2+i);readln(kobar);
gotoxy(25,2+i);readln(nabar);
gotoxy(40,2+i);readln(jumbar);
gotoxy(50,2+i);write('Rp.
');readln(harsat);
end;
end;
end;
procedure hitung;
begin
total := 0;
for i := 1 to n do
begin
with data[i] do
begin
tot := jumbar *
harsat;
end;
total := total + data[i].tot;
end;
end;
procedure cetak_data;
begin
writeln('No Kode Barang Nama Barang quantity
Harga satuan Total');
for i := 1 to n do
begin
with data[i] do
begin
gotoxy(2,2+i);write(i);
gotoxy(10,2+i);write(kobar);
gotoxy(25,2+i);write(nabar);
gotoxy(40,2+i);write(jumbar);
gotoxy(50,2+i);write('Rp. ',harsat:8:2);
gotoxy(65,2+i);write('Rp. ',tot:8:2);
end;
end;
writeln;writeln;
write('Total
keseluruhan = ',total:10:2);
end;
begin
masuk_data;
hitung;
clrscr;
cetak_data;
readln;
end.
Contoh 7 :
program lat7;
uses crt;
const
upah = 5000;
type
status =
(tetap,honorer);
rec_peg = record
nip : string[8];
nama : string[25];
gaber : real;
stat_peg :
string[10];
case stat:status of
tetap : (gapok :
real;
jam_lembur : real);
honorer : (jam_kerja
: real);
end;
var
pegawai : array[1..100]
of rec_peg;
i,n : integer;
jawab : char;
procedure masuk_data;
begin
clrscr;
write ('Masukkan jumlah
data = ');
readln(n);
clrscr;
writeln('No NIP
Nama Pegawai Peg Tetap Jam
kerja Gaji Pokok Jam lembur');
for i := 1 to n do
begin
gotoxy(2,3+i);write(i);
with pegawai[i] do
begin
gotoxy(7,3+i);readln(nip);
gotoxy(17,3+i);readln(nama);
gotoxy(42,3+i);readln(jawab);
if (jawab =
'Y') or (jawab='y') then
begin
stat :=
tetap;
stat_peg := 'tetap';
end
else
begin
stat :=
honorer;
stat_peg := 'honorer';
end;
case stat of
tetap :
Begin
gotoxy(60,3+i);readln(gapok);
gotoxy(71,3+i);readln(jam_lembur);
gaber := gapok + (jam_lembur * upah);
end;
honorer:
begin
gotoxy(47,3+i);readln(jam_kerja);
gaber := jam_kerja * upah;
end;
end;
end;
end;
end;
procedure cetak_data;
begin
writeln('No NIP
Nama Pegawai Status Jam ker Gaji Pokok lembur Gaji Bersih');
for i := 1 to n do
begin
gotoxy(2,3+i);write(i);
with pegawai[i] do
begin
gotoxy(4,3+i);write(nip);
gotoxy(12,3+i);write(nama);
gotoxy(28,3+i);write(stat_peg);
if stat_peg = 'tetap' then
Begin
gotoxy(48,3+i);write(gapok:10:2);
gotoxy(60,3+i);write(jam_lembur:3:0);
gotoxy(65,3+i);write(gaber:10:2);
end
else
begin
gotoxy(41,3+i);write(jam_kerja:3:0);
gotoxy(67,3+i);write(gaber:10:2);
end;
end;
end;
end;
begin
masuk_data;
clrscr;
cetak_data;
readln;
end.
Komentar
Posting Komentar