Minggu, 26 Desember 2010

Pemograman 2

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 masingmasing
elemen bertipe integer.
Dari deklarasi Array diatas dapat direpresentasikan didalam memori sebagai berikut :
… … … … …
1 2 3 4 5
Nilai
Elemen array yang masing-masing harus bertipe integer,
sesuai tipe yang dideklarasikan
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.
Tugas I mahasiswa :
Buat program untuk menghitung nilai huruf dari sejumlah mahasiswa yang diinputkan
Input yang diminta :
No Nama Test1 Test2 Test3
Output yang diminta :
No Nama Test1 Test2 Test3 Total Rata Nilai huruf
Total = test1+ test 2 + test3
Rata = total / 3
Jika rata .>= 80 maka nilai huruf = A
Jika rata .>= 70 maka nilai huruf = B
Jika rata .>= 60 maka nilai huruf = C
Jika rata .>= 50 maka nilai huruf = D
Jika rata .< 50 maka nilai huruf = E
Gunakan array dimensi satu dan dimensi dua

Tidak ada komentar: