MODUL MATA KULIAH LOGIKA DAN ALGORITMA
STIMIK EL RAHMA JOGJAKARTA 2015
JURUSAN : SISTEM INFORMASI SEMESTER GENAP 2015
Materi :
ARRAY (LARIK)
Array adalah struktur data statis yang menyimpan sekumpulan elemen yang bertipe sama, dimana setiap elemen memiliki nilai indeks.
Konsep umum dari array :
1. Indeks array harus suatu type yang mempunyai keterurutan (ada suksesor dan predesesor). Misalnya integer atau karakter. Kecuali dalam bahasa C indeks array selalu bertipe integer.
2. Banyaknya elemen array harus sudah diketahui sebelum program dieksekusi.
3. Tipe data elemen array dapat berupa tipe sederhana atau tipe bentukan (record.), atau bahkan bertipe array yang lain.
4. Setiap elemen data dapat diakses secara acak (random), jika indeksnya diketahui 5. Merupakan struktur data yang statis, artinya jumlah elemen yang sudah ditentukan,
tidak bisa diubah selama eksekusi program. Keuntungan data array / larik :
a.Paling mudah pengoperasiannya
b. Ekonomis dalam pemakaian memori, bila semua elemen terisi c.Akses ke setiap elemen memerlukan waktu yang sama
Kerugian data array / larik :
Memboroskan tempat jika banyak elemen yang tidak digunakan. Penggunaan struktur data array/larik:
Array digunakan bila kita mempunyai sejumlah data yang bertipe sama, dan kita perlu menyimpan sementara data tersebut, untuk selanjutnya data tersebut dimanipulasi.
Selama pelaksanaan program, array tetap menyimpan nilai. Hal ini bermanfaat bila kita ingin menggunakan nilai-nilai di dalam array tersebut untuk diproses lebih lanjut di bagian lain di dalam algoritma.
Dengan menggunakan array, kita dapat menghindari penggunaan nama-nama variabel yang banyak.
array yang terdiri atas 10 buah elemen. Selain itu, dengan array, instruksi pembacaan/penulisan seluruh elemen array cukup ditulis satu kali saja di dalam sebuah konstruksi pengulangan.
Representasi array yang umum dibagi menjadi dua, yaitu : 1. Representasi array 1 dimensi.
A[1] A[2] ……… A[Nmax]
2. Representasi array 2 dimensi
A[1,1] A[1,2] A[1,Nmax]
A[1,1] A[1, Nmax]
A[2,1] A[2, Nmax]
A[Nmax,1] A[Nmax,Nmax]
Keterangan :
Sebenarnya array dapat direpresentasikan dengan dimensi yang tak hingga, tetapi ini tidak umum digunakan, jadi jumlah dimensi disesuaikan dengan kebutuhan setiap penanganan kasus yang berbeda - beda.
PEMROSESAN LARIK
Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik.
Yaitu elemen dengan indeks terkecil, berturut-turut pada elemen berikutnya, sampai elemen terakhir dicapai, yaitu elemen dengan indeks terbesar.
7.1 ARRAY 1 DIMENSI Cara Pendefinisian Array : 1. Sebagai variabel
Contoh:
Algoritmik Pascal
A : array [1..20] of integer
NamaBrg : array [‘a’.. ‘z’] of
A : array [1..20] of integer;
string string;
2. Sebagai tipe baru dan array bertipe bentukan (record) Contoh:
Algoritmik :
Type Mhs = record <NPM: integer, Nama : string [20], Alamat: string [30]>
Type DataMhs = array [1..20] of Mhs
A: DataMhs
Pascal :
Type Mhs = record NPM: integer; Nama : string [20]; Alamat: string [30]; end;
Type DataMhs = array [1..20] of Mhs
A: DataMhs;
3. Mendefinisikan ukuran maksimum elemen array sebagai konstanta Contoh:
Algoritmik :
Const Nmaks = 20
Type Huruf = array [1..Nmaks] of char
A : Huruf
Const Nmaks = 20;
Type Huruf = array [1..Nmaks] of char; Var
A : Huruf;
Contoh Kasus :
Terdapat sebuah data yang berisi deretan angka, sebagai berikut :
5 6 8 1 ... ...
1 2 3 4 ... 200 Operasi-operasi dasar :
1. Menginisialisasi elemen array 2. Mengisi elemen array
3. Mencetak elemen array
4. Pencarian nilai maksimum pada array
5. Pencarian sebuah bilangan pada array dengan metode sekuensial artinya pemrosesan dilakukan terurut berdasarkan indeks array.
Maka deklarasinya adalah : Algoritmik:
DeretAngka : array [1.. 200] of integer
VAR
A:array [1..Nmax] of integer;
ATAU VAR
A:array [1..200] of integer;
DeretAngka : array [1.. 200] of integer;
VAR
A:DeretAngka;
Type
DeretAngka : array [1..Nmax] of integer; VAR
A:DeretAngka;
1. Menginisialisasi elemen array Algoritmik :
Procedure InisialisasiArray (input/output A:deretAngka , input n:integer) {Procedure ini berfungsi untuk memberikan harga awal untuk n elemen array,dengan nilai 0}
Procedure InisialisasiArray (var A:deretAngka ; n:integer);
{Procedure ini berfungsi untuk memberikan harga awal untuk n elemen array, dengan nilai 0}
2. Mengisi elemen array Algoritmik:
Procedure IsiArray ( input/output A:deretAngka, input n:integer) { Procedure ini berfungsi untuk mengisi elemen array, dengan: input n =jumlah elemen array yang akan diisi
output A = array yang n elemennya sudah terisi } Deklarasi :
Algoritma : for i←1 to n do
write('Masukan bilangan:') read(bil)
A[i]← bil endfor
Pascal:
Procedure IsiArray ( var A:deretAngka; n:integer);
{ Procedure ini berfungsi untuk mengisi elemen array, dengan: input n =jumlah elemen array yang akan diisi
output A = array yang n elemennya sudah terisi } Var
Bil,i:integer; Begin
for i:=1 to n do begin
write('Masukan bilangan:');readln(bil); A[i]:=bil;
end; end;
3. Mencetak elemen array Algoritmik:
Procedure CetakArray (input A:deretAngka, input n:integer)
{ Procedure ini berfungsi untuk mencetak isi dari sebuah array, dengan: input A= array yang sudah berisi angka , n=jumlah elemen array yang akan dicetak isinya }
Deklarasi : i :integer Algoritma : for i←1 to n do
write('Indeks ke-',i,'berisi angka:',A[i]) endfor
end;
Pascal :
Procedure CetakArray (A:deretAngka; n:integer);
array yang sudah berisi angka , n=jumlah elemen array yang akan dicetak isinya }
Var
i :integer; Begin
for i:=1 to n do begin
writeln('Indeks ke-',i,'berisi angka:',A[i]) end;
end;
4. Pencarian nilai maksimum pada array Algoritmik :
Procedure CariMax (input A:deretAngka, output Maks:integer, input N :integer) {Procedure ini berfungsi untuk mencari nilai maksimum pada sebuah
array,dengan: input A= array yang sudah berisi angka, output Maks=nilai maksimun yang dicari pada array} Deklarasi:
i:integer Algoritma: maks← A[1] for i←2 to N do if A[i] > maks then maks←A[i] endif
endfor
Pascal :
Procedure CariMax (A:deretAngka;var Maks:integer; N:integer); {Procedure ini berfungsi untuk mencari nilai maksimum pada sebuah array,dengan: input A= array yang sudah berisi angka, output Maks=nilai maksimun yang dicari pada array}
var
i:integer; begin
5. Pencarian sebuah bilangan pada array dengan metode sekuensial Algoritmik :
Procedure CariNilai(input A:DeretAngka;input x:integer)
{Procedure ini berfungsi untuk mencari sebuah nilai pada array, dengan input A= array berisi angka dan x = nilai yang akan dicari}
Deklarasi: i:integer Algoritma: i←1
while (A[i] ≠ x) and (i < 10) do i←i+1
endwhile if A[i]=x then
write('Ketemu di indeks ke-',i) else
write('Tidak ketemu') endif
Pascal :
Procedure CariNilai(A:DeretAngka;x:integer);
{Procedure ini berfungsi untuk mencari sebuah nilai pada array, dengan input A= array berisi angka dan x = nilai yang akan dicari} var
i:integer; begin i:=1;
while (A[i] <> x) and (i < 10) do begin
i:=i+1; end;
if A[i]=x then
writeln('Ketemu di indeks ke-',i) else
writeln('Tidak ketemu'); end;
Program Contoh_Array Deklarasi :
Const Nmax=200
Type DeretAngka : array [1.. Nmax] of integer
Procedure InisialisasiArray (input/output A:deretAngka , input n:integer) Procedure IsiArray (input/output A:deretAngka, input n:integer)
Procedure CetakArray (input A:deretAngka, input n:integer)
Procedure CariMax (input A:deretAngka,output Maks:integer,N:integer) Procedure CariNilai(input A:DeretAngka,input x:integer)
B : deretAngka;
jumlah,maksimum,angka : integer; Algoritma Utama :
write(‘Masukan banyaknya array:’) read(jumlah)
InisialisasiArray(B,jumlah) IsiArray(B,jumlah)
CetakArray(B,jumlah)
CariMax(B,maksimum,jumlah) write(‘Nilai maksimum:’,maksimum) write(‘Masukan angka yang akan dicari:’) read(angka)
CariNilai(B,angka)
Pascal :
Program Contoh_Array; Const Nmax=200;
Type
DeretAngka : array [1.. Nmax] of integer;
Procedure InisialisasiArray (var A:deretAngka ; n:integer); Procedure IsiArray ( var A:deretAngka; n:integer);
Procedure CetakArray (A:deretAngka; n:integer);
Procedure CariMax (A:deretAngka;var Maks:integer; N:integer); Procedure CariNilai(A:DeretAngka;x:integer);
Var
B : deretAngka;
write(‘Masukan banyaknya array:’); readln(jumlah);
InisialisasiArray(B,jumlah); IsiArray(B,jumlah);
CetakArray(B,jumlah);
CariMax(B,maksimum,jumlah);
writeln(‘Nilai maksimum:’,maksimum); write(‘Masukan angka yang akan dicari:’); read(angka);
CariNilai(B,angka); end.
7.2 ARRAY BERTIPE TERSTRUKTUR
Algortma Array sebelumnya menggunakan tipe data sederhana, Elemen Array juga bisa menggunakan Tipe data bentukan yaitu Record atau lebih dikenal dengan Tipe Terstruktur.
Misalkan akan melakukan proses pengolahan data 100 orang mahasiswa, Data setiap mahasiswa terdiri dri NPM (Nomor Pokok Mahasiswa), Nama mahasiswa, dan IPK (Indeks prestasi Kumulatif Siswa).
Struktur Lojiknya sebagai berikut:
NPM NamaMhs IPK
1 28001 Dina Rahmayanti 3.57
2 28002 Catur Wulan 3.30
3 28003 Bayu Nisa 3.53
. .
N 280020 Risma wulandari 3.60
Struktur Array yang dideklarasikan sebagai berikut: DEKLARASI
const Nmaks = 100
type Mahasiswa : record <NPM: integer, NamaMhs:String, IPK : real>
type TabMhs : Array [1…NMaks] of Mahasiswa Mhs : TabMhs
Procedure BacaDataMahasiswa(input N :integer, output Mhs:TabMhs) Deklarasi
I : integer; Algoritma :
For i:=1 To N Do Read(Mhs[i].NIM) Read(Mhs[i].NamaMhs) Read(Mhs[i].IPK) EndFor
Procedure TulisDataMahasiswa(input N:integer, output:Mhs:TabMhs) Deklarasi
I,j : integer; Algoritma :
For i:=1 To N Do
Write (Mhs[i].NPM, Mhs[i].NamaMhs, Mhs[i].IPK) EndFor
LATIHAN
1. Diketahui sebuah integer array TabInt [1…8], yang telah terisi dengan nilai-nilai ujian mahasiswa seperti berikut ini:
Tuliskan Algoritma untuk:
a. Mencari Nilai Maksimum dari Nilai Ujian Tersebut. b. Menghitung Nilai Rata-rata Nilai Tersebut.
2. Diketahui sebuah integer array TabInt [1…8], yang telah terisi dengan nilai-nilai berikut ini:
Tuliskan Algoritma untuk:
50 90 80 70 60 100 90 100