Alam Santosa
Algoritma & Pemrograman Algoritma Array & Penulisannya dalam Bahasa Pascal
Array • Array disebut juga larik adalah struktur data yang menyimpan sekumpulan/sederetan variabel yang bertipe data sama. Setiap variabel dapat diakses dengan menggunakan suatu indeks sebagai identitas/alamat.
1
Deklarasi Array dan Variabel • Variabel dideklarasikan dengan perintah sbb: Var NPM:String[7]; • Array untuk data yang sama dideklarasikan dengan menuliskan: Var NPM:Array[1..3] of String[7]; • Artinya kita memesan tempat penyimpanan data yang bernama NPM, dan tempat tersebut dibagi menjadi tiga bagian dengan alamat yang dibedakan oleh indeks 1,2, dan 3
Logika Array dan Variabel • Artinya kita memesan variabel yang dapat digambarkan sbb:
• Array dapat digambarkan sbb: Nama array
Nama variabel NPM 5083001
Data
NPM 1
2
3
5083001 5083002 5083003
Indeks Data
2
Mengakses Array dan Variabel • Variabel diakses menggunakan perintah:
• Array dakses dengan menggunakan perintah:
NPM:= 5083001 Write (NPM) Readln (NPM)
NPM[1]:= 5083001; Write (NPM[1]); Readln (NPM[1]);
Sifat Array • Array adalah struktur data yang statis artinya: – Jumlah variabel harus diketahui sebelum dijalankan . – Jumlah variabel tidak dapat diubah selama pelaksanaan program. – Deklarasi larik berarti: • Menentukan jumlah variabel • Menentukan tipe data
3
Kegunaan Array • Array digunakan ketika kita akan memanipulasi data yang jumlahnya banyak, seperti – Data nilai mahasiswa – Data transaksi penjualan – Data statistik – Dll.
• Dengan memanfaatkan algoritma perulangan.
Contoh Input Output Pada Array Program ContohArray; Uses Crt; Var Nilai : Array[1..5] of Integer; I : Byte; Begin Clrscr; {Input Data ke dalam Array} For I:=1 to 5 do Begin Write ('Nilai Ke-',I,' : ');Readln(Nilai[I]); End; {Menampilkan data dalam Array} For I:=1 to 5 do Write (Nilai[I]); Readln; End.
4
Menghitung Nilai Rata-Rata Program RataRata; Uses Crt; Var Nilai : Array[1..5] of Integer; I : Byte; Jumlah: Integer; Begin Clrscr; {Input Data ke dalam Array} For I:=1 to 5 do Begin Write ('Nilai Ke-',I,' : ');Readln(Nilai[I]); End; {Menghitung Jumlah} For I:=1 to 5 do Jumlah:=Jumlah+Nilai[I]; {Menampilkan Hasil} Writeln('Jumlah = ',Jumlah); Writeln('Rata-rata = ',Jumlah/I:5:2); Readln; End.
Mencari Nilai Maksimum Di Array Program NilaiMaksimal; Uses Crt; Var Nilai : Array[1..5] of Integer; I,Posisi : Byte; Jumlah,Maks: Integer; Begin Clrscr; {Input Data ke dalam Array} For I:=1 to 5 do Begin Write ('Nilai Ke-',I,' : ');Readln(Nilai[I]); End;
{Mencari Nilai Maksimal} Maks:=Nilai[1]; Posisi:=1; For I:=2 to 5 do Begin If Nilai[I]>Maks then Begin maks:=Nilai[I]; posisi:=I; End; End; {Menampilkan Hasil} Writeln('Maksimal = ',Maks); Writeln('Nilai ke-',Posisi); Readln; End.
5
Mencari Nilai Minimum Di Array Program NilaiMinimal; Uses Crt; Var Nilai : Array[1..5] of Integer; I,Posisi : Byte; Jumlah,Min: Integer; Begin Clrscr; {Input Data ke dalam Array} For I:=1 to 5 do Begin Write ('Nilai Ke-',I,' : ');Readln(Nilai[I]); End;
{Mencari Nilai Minimal} Min:=Nilai[1]; Posisi:=1; For I:=2 to 5 do Begin If Nilai[I]<Min then Begin Min:=Nilai[I]; posisi:=I; End; End; {Menampilkan Hasil} Writeln('Minimal = ',Min); Writeln('Nilai ke-',Posisi); Readln; End.
Mencari Nilai Tertentu Program NilaiMinimal; Uses Crt; Var Nilai : Array[1..5] of Integer; I : Byte; Jumlah,Cari : Integer; Status :Boolean; Begin Clrscr; {Input Data ke dalam Array} For I:=1 to 5 do Begin Write ('Nilai Ke-',I,' : ');Readln(Nilai[I]); End;
{Mencari Nilai Tertentu} Write('Nilai yang dicari : ');Readln(Cari); I:=0; Repeat I:=I+1; If Nilai[I]=Cari then Begin Status:=True; End; Until (Status=True) Or (I>=5); {Menampilkan Hasil} If Status = True Then Writeln('Ketemu pada Nilai ke-',I) Else Writeln('Tidak Ada Nilai Itu!'); Readln; End.
6
Menguji Palindrom • Array dapat digunakan untuk menguji sebuah kata sebagai palindrom atau bukan palindrom. • Palindrom adalah kata yang dibaca sama dari kiri ke kanan maupun dari kanan ke kiri. • Contoh palindrom antara lain – MALAM – KATAK – TAAT
Algoritma Palindrom Program Palindrom; Uses Crt; Var Kata : String[20]; I,N : Byte; Status : Boolean; Begin Clrscr; Write('Masukan Kata : ');Readln(Kata); N:=length(Kata); Status := True; Repeat I:=I+1; If Kata[I] <> Kata[N+1-I] then Status :=False; Until (Status = False) Or (I=N div 2); If Status = True then Write ('Palindrom') Else Write ('Bukan Palindrom'); Readln; End.
7
Operasi Antara Dua Array A
B
1
2
3
10
20
30
+
C
1
2
3
13
24
10
=
1
2
3
23
44
40
• Operasi penjumlahan tersebut dilakukan dengan operasi C[I]:= A[I]+B[I]
Contoh Program Hitung2Array; Uses Crt; Var A,B,C,D,E : Array[1..5] of Integer; I : Byte; Begin Clrscr; {Masukan Data Ke A} For I:=1 to 5 do Begin Write('A[',I,']: ');Readln(A[I]); End; {Masukan Data Ke B} For I:=1 to 5 do Begin Write('B[',I,']: ');Readln(B[I]); End;
{Proses Perhitungan} For I:=1 to 5 do Begin C[I]:=A[I]+B[I]; D[I]:=A[I]-B[I]; E[I]:=A[I]*B[I]; End; {Tampilkan Array C)} For I:=1 To 5 Do Writeln('C[',I,']: ',C[I]); {Tampilkan Array D)} For I:=1 To 5 Do Writeln('D[',I,']: ',D[I]); {Tampilkan Array E)} For I:=1 To 5 Do Writeln('E[',I,']: ',E[I]); Readln; End.
8
Latihan • Buatlah Program untuk menghitung nilai mahasiswa dengan tampilan seperti berikut: Menu Utama =================== 1. Input Data Nilai 2. Daftar Nilai 3. Statistik 4. Keluar Pilih(1..4):
Input Data Nilai Input Data Nilai =================== No :1 Nama : UTS : UAS : Input data lagi(Y/T):
• No tampil secara otomatis • Nama, UTS, dan UAS diinput melalui keyboard • Perulangan behenti setelah diinput T
9
Daftar Nilai Daftar Nilai ================================================= No Nama UTS UAS NA NH KETERANGAN ------------------------------------------------• Aries 80 90 86 A Lulus • Beni 70 100 88 A Lulus • Dadan 50 50 50 C Lulus • Erik 20 30 26 E Tidak Lulus ------------------------------------------------Klik Enter Untuk Kembali Ke Menu
• Daftar Nilai Tampil secara otomatis dengan ketentuan sbb: – – – – –
85 ≤ NA ≤ 100 → NH = A → Lulus 70 ≤ NA < 85 → NH = B → Lulus 60 ≤ NA < 70 → NH = C → Lulus 45 ≤ NA < 60 → NH = D → Lulus 0 ≤ NA < 45 → NH = E → Tidak Lulus
Statistik Statistik ========================== Nilai Maksimal : Beni/88 Nilai Minimal : Erik/26 Nilai Rata-rata : 62.50 Jumlah Peserta : 4 Orang Jumlah Nilai A : 2 Orang Jumlah Nilai B : 0 Orang Jumlah Nilai C : 1 Orang Jumlah Nilai D : 0 Orang Jumlah Nilai E : 1 Orang --------------------------Klik Enter Untuk Kembali Ke Menu
• Semua informasi statistik dihasilkan secara otomatis
10