Anda di halaman 1dari 41

Array

Afdal, 2021
Tipe Data Sederhana

1) Integer
2) Real
3) Char
4) Boolean

Afdal, 2021
Masalah Tipe Data Sederhana?
Tipe data seperti ini hanya dapat memiliki satu nilai pada
satu saat.

Afdal, 2021
Ada kalanya diperlukan menggunakan banyak data sejenis
pada saat yang sama seperti dalam
 pengolahan daftar nilai,
 menghitung posisi pusat massa
 distribusi temperatur pada permukaan laut, atau
 distribusi tekanan pada suatu struktur.
 menghitung gaya dan medan listrik total oleh distribusi
muatan titik.

Afdal, 2021
Ada kalanya diperlukan
 menampilkan data tertentu saja (misalnya nilai
maksimum, nilai minimum)
 menginput dan menampilkan data tidak berurutan

Afdal, 2021
Program hitung nilai rata-rata dengan tipe data sederhana:
Program DaftarNilai; No. Nama Nilai
Uses crt; 1 PUTRI 80
Var
2 ALKHAIRUNAS 75
Nilai, Rata, Jum : real;
i, N : integer; 3 NOVIA ULFA 85
Nama : string; 4 SRI NOFRIYANTI 60
Begin 5 HAMIDAH 90
Write('Jumlah Mahasiswa:'); Readln(N); Rata-Rata 78
Jum := 0;
For i := 1 to N do
begin Setelah seluruh data diinput, apa
Write( 'Nama -',i,'= '); Readln(nama); perintah untuk menampilkan dan
Write( 'Nilai -',i,'= '); Readln(nilai); dimana:
Jum := Jum + Nilai; • nilai ke-3?
end;
• menampilkan data dalam
rata := jum/N;
bentuk tabel ?
writeln(‘Nilai rata-rata =', rata :10:3); • membalik urutan data?
writeln(Nilai:5:2);
End.

Afdal, 2021
Masalah Tipe Data Sederhana?

var
n1, n2, n3, n4, n5: real;
total, average : real;
N : integer;
Begin
N := 5;
write(‘masukkan nilai mhs-1: ');
readln(n1);

Afdal, 2021
write(‘masukkan nilai mhs-2:'); readln(n2);
write(‘masukkan nilai mhs-3:'); readln(n3);
write('masukkan nilai mhs-4:'); readln(n4);
write('masukkan nilai mhs-5:'); readln(n5);
total := n1 + n2 + n3 + n4 + n5;
average := total /N;
writeln(‘Nilai rata-rata = ', average:6:2);

(* Printing the grades for the class. *)


Writeln('Student1: ', n1);
Writeln('Student2: ', n2);
Writeln('Student3: ', n3);
Writeln('Student4: ', n4);
Writeln('Student5: ', n5);
Afdal, 2021
• (* Printing the grades for the class. *)



NO!
Writeln('Student: ', n1);
Writeln('Student: ', n2);
Writeln('Student: ', n3);
• Writeln('Student: ', n4);
• Writeln('Student: ', n5);

Afdal, 2021
Itulah beberapa masalah atau kelemahan membuat
program dengan tipe data sederhana.

Bagaimana cara mengatasinya?

Afdal, 2021
Tipe Data Terstruktur (Komposit)

1) Homogen
– Arrays
2) Heterogen
– Records

Pada bab ini akan diperkenalkan tipe data


terstruktur homogen, yaitu array.

Afdal, 2021
Array 1 Dimensi

Ilustrasi Sebuah Array

Anggota array

Indeks 1 2 3 ….

ARRAY

Afdal, 2021
Deklarasi Array
Array selalu memuat komponen penting, yaitu :
(a). nama array,
(b). indeks (yang bertipe ordinal), dan
(c). tipe data (sederhana) yang digunakan oleh array.

Syntax (Bentuk Umum) :

Indeks yg bertipe ordinal,


n1 < n2

Var
Nama_array: array[n1..n2] of tipe_data;

Tipe sederhana: integer, real, …


Nama Arary:
Identifier (bebas)
Afdal, 2021
Contoh:
Var
Nilai : array[1..7] of real;

Dengan deklarasi ini dapat dapat diilustrasikan kita memesan rak


yang bernama Nilai yang terdiri atas 7 laci yang dapat diisi
data bertipe real secara bersamaan, masing-masing satu data
untuk setiap laci.
Anggota array yang bertipe real

Indeks 1 2 3 …. 7
(Nomor Urut)

Array Nilai
Afdal, 2021
Buat flowchart dan program untuk mengolah data nilai berikut.
Komponen Nilai (%)
No. No. BP Nama Prak UTS UAS Tugas NA NH
25 25 30 20
1 0910443077 PUTRI 65,0 37 32 78,5
2 1010443003 ALKHAIRUNAS 84,1 46 39 75,8
3 1010445001 NOVIA ULFA 84,7 71 54 75,0
4 1110441001 SRI NOFRIYANTI 80,4 47 58 76,5
5 1110441003 HAMIDAH 84,3 60 64 84,0
6 1110441005 RAHAYU FITRI 83,9 47 52 86,3
7 1110441009 DORA ANDRIS 88,4 77 74 75,0
8 1110441011 ARVA YOGI 75,3 38 21 70,0
9 1110441013 FARA DIBA 82,9 46 46 78,3
10 1110442001 DEVI YUNITA 59,5 27 24 78,8
Rata-Rata

Berapa jumlah variabel yang harus dideklarasikan?


Tentukan data mana saja yang bertipe sederhana dan mana yang bertipe
array?
Tulis perintah untuk mendeklaraskan setiap data tersebut
Afdal, 2021
Deklarasi Array

Var
BP : array[1..10] of string;

Prak : array[1..10] of real;


UTS : array[1..10] of real;
UAS : array[1..10] of real;
Tugas : array[1..10] of real;

Type
Nilai = Array [1..10] of Real;
Var
BP : array[1..10] of string;
Prak, UTS, UAS, Tugas : Nilai;

Afdal, 2021
Mengisi (Menginput) Data Array
Mengisi data Array dari dalam program

Prak[1] := 65.0;
{mengisi nilai praktikum mhs ke-1}

UTS[4] := 47;
{mengisi nilai UTS mhs ke-4}

Mengisi data Array dari luar program (saat di RUN)


Write(‘Nama [‘,6,‘] = ‘ ); readln (Nama[6]);

diisi saat Run


Nama [6] = _ RAHAYU FITRI

Afdal, 2021
Mengisi Seluruh Data Array

For i:= 1 to N Do
Begin
Write(‘BP-’,i,’:‘); Readln(BP[i]);
Write(‘Nama-’,i,‘:‘); Readln(Nama[i]);

End;

Afdal, 2021
Operasi Data Array

For i := 1 to N do
Begin
NA[i] := 0.2*Prak[i] + 0.3*UTS[i] + 0.3*UAS[i] + 0.2*Tugas[i];
End;

Afdal, 2021
Operasi Data Array

if NA[i] >=85 then NH[i] := 'A'


else if NA[i] >= 80 then NH[i] := 'A-'
else if NA[i] >= 75 then NH[i] := 'B+'
else if NA[i] >=70 then NH[i] := 'B'
else if NA[i] >= 65 then NH[i] := 'B-'
else if NA[i] >= 60 then NH[i] := 'C+'
else if NA[i] >= 55 then NH[i] := 'C'
else if NA[i] >= 40 then NH[i] := 'D'
else NH[i] := 'E‘;

Afdal, 2021
Memanggil atau Menampilkan Data Array

Writeln (‘Nama mahasiswa ke-3 = ’, Nama[3]);

For i := 1 to N do
Begin
Writeln (UTS[i]):3:1;
End;

For i := 1 to N do
Begin
Writeln (Nama[i], BP[i], PRAK[i]:3:1) ;
End;
Afdal, 2021
Flowchart Data Array
Bentuk flowchart data array pada dasarnya sama saja dengan
flowchart secara umum, hanya untuk variabel yang bertipe array
ditambahkan indeks.

Input data ke-i, X[i]

Jumlah := Jumlah + X[i]

P[i] := Xp - X[i];
D[i] := Abs(P[i]);
Y[i] := D[i] * SQR(D[i] );
E[i] := k * Q[i] * P[i] /
Y[i];
Afdal, 2021
Contoh :
Buat flowchart dan program untuk menghitung nilai rata-rata dari N
buah data menggunakan tipe data array.

Afdal, 2021
Flowchart menghitung nilai rata-rata
Mulai

Input banyak data (N)

Jumlah := 0

For i := 1 to N

Input data ke-i, X[i]

Jumlah := Jumlah + X[i]

R:= Jumlah/N

Tampilkan Rata2, R

selesai
Afdal, 2021
Mulai

Input banyak data (N)

For i := 1 to N Flowchart menghitung


nilai rata-rata dengan
Input data ke-i, X[i] proses input data dan
hitung rata-rata
Jumlah := 0
terpisah.
For i := 1 to N

Jumlah := Jumlah + X[i]

R := Jumlah/N

Tampilkan Rata2, R

selesai
Afdal, 2021
Program:
Program Rata_rata;
uses Crt;
var i, N : byte;
Jumlah, Rata : real;
X : array[1..100] of real;
Begin
Clrscr;
Write(‘banyaknya data (maksimum 100) ?’); Readln(N);
For i := 1 to N do
Begin
Write(‘Data ke- ‘, i, ‘ = ‘); readln(X[i]);
End;
Jumlah := 0;
For i := 1 to N do
Begin
Jumlah := Jumlah + X[i];
End;
Rata := Jumlah/N;
writeln(‘No Nilai‘);
For i := 1 to N do
Begin
writeln(i, x[i]:3:1);
End;
Writeln(‘Rata-rata = ‘, Rata:6:2);
end.
Afdal, 2021
Terdapat N buah muatan listrik yang berada pada sumbu-x. Buatlah
flowchart dan program menggunakan data array untuk menentukan:
• besar dan arah medan listrik di titik P oleh masing-masing muatan
• besar dan arah medan listrik total oleh seluruh muatan.
Medan listrik oleh satu muatan (Ei) dan medan listrik total (Et)
dinayakan oleh persamaan:
   
 qi x p  xi   N qi x p  xi 
Ei  k   3 Et   k   3
x p  xi i 1 x p  xi
Dimana qi adalah besar muatan listrik ke-i, xi adalah posisi muatan
ke-i, dan k adalah tetapan Coulomb, xp adalah posisi titik tempat
medan dihitung.
Masukan program: jumlah muatan (N), besar dan posisi setiap
muatan, posisi titik tempat medan dihitung.
Keluaran program:
• Besar muatan, posisi muatan, besar medan listrik, dan arah medan
listrik oleh setiap muatan (dalam tabel).
• Besar dan arah medan listrik total oleh seluruh muatan. Afdal, 2021
Program Guess ;
Uses crt;
Const
k = 9E9;
Type
dat = array [1..100] of real;
Var
D, E, X, Q, Y, P : dat;
i, N : integer;
Xp, Et : real;
arah : string;
ket : array [1..100] of string;
Begin
clrscr;
Writeln(‘Jumlah muatan :’); Readln(N);
Writeln(‘Posisi medan dievaluasi:’); Readln(Xp);
For i := 1 to N do
Begin
Writeln(‘besar medan ke-’,i,’:’); Readln(Q[i]);
Writeln(‘posisi medan ke-’,i,’:’); Readln(X[i]);
End;
Writeln (' No Muatan Posisi Medan Arah');
Afdal, 2021
Et:= 0;
For i := 1 to N do
Begin
P[i] := Xp - X[i];
D[i] := Abs(P[i]);
Y[i] := D[i] * SQR(D[i] );
E[i] := k * Q[i] * P[i] / Y[i];
if E[i] > 0 then ket[i]:= 'medan postif'
else if E[i] < 0 then ket[i] := 'medan negatif'
else ket[i] := 'Tidak ada medan' ;
Et := Et + E[i];
End;
For i := 1 to N do
Begin
Writeln (i:3, Q[i]:8:1, R[i]:8:1, E[i]:17:1, ket[i]: 15);
End;
if Et > 0 then arah:= 'ke kanan'
else if Et < 0 then arah := 'ke kiri'
else Et := 'tidak ada medan' ;
Writeln (' -----------------------------------------');
Writeln(' Total Field = ' , Et :10:1);
Writeln(' Arah Total Medan = ' , arah:5);
End.
Afdal, 2021
Array Dimensi Ganda
Dalam beberapa kasus, terdapat variabel yang harus dikenali dengan
dua indeks sekaligus, yaitu indeks baris dan indeks kolom, seperti
distribusi nilai besaran pada grid dua dimensi, ataupun daftar nilai
dalam sebuah tabel.  Matriks

baris

kolom

Afdal, 2021
Deklarasi Array Dimensi Ganda
Bentuk Umum:
Type
Nama_Array = array [indeks1] of Array [indeks2] of type;

Nama_Array = array [indeks1, indeks2] of type;

Nama_Array1 = array[indeks1] of type;


Nama_Array = array[indeks2] of Nama_Array1;

Var
Var_Array : Nama_Array;

Type
vek = array [ 1..10, 1..3 ] of real;
Contoh:
Var
T: vek;
Afdal, 2021
Deklarasi Array Dimensi Ganda
Atau:

Bentuk Umum:
Var
Nama_Array : [indeks1, indeks1] of type;

Contoh:
Var
T : Array [1..10, 1..3 ] of Real ;

Indeks Indeks
Pertama kedua
i j

Afdal, 2021
Mengoperasikan Array Dimensi Ganda
Mengisi Array Dimensi Ganda
T[2,3] := 7000 ;
Readln(T[2,3]);
{mengisi elemen array Temperatur pada baris ke-2 dan kolom
ke-3 dengan nilai 7000}

Array T 7000

Menampilkan Array Dimensi Ganda

Writeln(T[2,3]);

Afdal, 2021
Memanggil dan Menugaskan Array Dimensi Ganda

A:= T[2,3];

A[3,5]:= B[3,5] + C[3,5];

Afdal, 2021
Flowchart input matriks A berdimensi mxn

For i  1 to M

For j  1 to N

Input: A[i,j]

Afdal, 2021
Contoh program :
{Program menginput dan menampilkan matriks A}
uses crt;
var i, j ,m,n : byte;
A : array[1..255, 1..255] of real;
Begin
Clrscr;
Write(‘MATRIKS’);
Write(‘Banyaknya baris matriks ? ‘);readln(m);
Write(‘banyaknya kolom matriks ? ‘);readln(n);
{proses memasukkan data matriks A}
writeln(‘Data-data matriks A’);
for i := 1 to M do
begin
for j := 1 to n do
begin
write(‘A(‘ ,i, ’ , ’ ,j, ‘) ?‘); readln(A[i,j]);
end;
writeln;
end;
Afdal, 2021
{proses menampilkan matriks A}
writeln(‘matriks A = ’);
writeln;
for i := 1 to M do
begin
for j := 1 to n do
begin
write(A[i,j]);
end;
writeln;
end;
readln;
end.

Afdal, 2021
Penjumlahan Matriks

Ci , j  Ai , j  Bi , j

for i := 1 to M do
begin
for j := 1 to n do
begin
C[i,j]:= A[i,j]+ B[i,j];
end;
end;

Afdal, 2021
Perkalian Matriks
Buatlah flowchart dan program untuk menentukan hasil perkalian
anatara dua buah matriks.

Afdal, 2021
Perkalian Matriks

Afdal, 2021
Mengurutkan Data (Data Sorting)

Dalam beberapa kasus diperlukan data sorting (pengurutan


data) seperti penentuan ranking, nilai maksimum, nilai minimum,
median atau kuartil.

contoh algoritma untk melakukan sorting adalah

(1) input N
(2) for i := 1 to N,
input X[i]
(3) for i := 1 to N-1
for j := 1 to N-1
if X[j] > X[j+1]
Tukar X[j] dengan X[j+1])
(4) for i := 1 to N, output X[i]

Jika data ingin diurutkan dari besar ke kecil, langkah (3) diganti :
If X[j] < X[j + 1]
Afdal, 2021

Anda mungkin juga menyukai