BUDIMARYANTO,
BUDI MARYANTO,S.K
S.KOM.,
S.K., M.T.
STMIK LIKMI
Jl. Ir. H. Juanda No. 96 Bandung 40132
Telp. 022 2502121
www.likmi.ac.id
MODUL 1 : PENDAHULUAN
2
Ada tiga bentuk algoritma yang umum digunakan, yaitu :
Algoritma deskriptif
Flow chart
Pseudo code
Tukarkan isi kedua gelas tersebut (gelas A harus berisi sirup dan gelas B berisi kopi).
SOLUSI
Kita membutuhkan sebuah gelas kosong lain untuk penampung sementara.
3
Ketentuan :
Posisi B boleh digunakan sebagai penampungan sementara.
Hanya boleh memindahkan satu buah piring untuk setiap langkah
pemindahan.
Letak akhir P1 harus berada di atas P2.
4. Disediakan tiga ember air berukuran 3 liter, 5 liter, dan 6 liter. Bagaimana
cara memperoleh 4 liter air di dalam ember berukuran 5 liter ?
4
1.6 Format Simbol Flow Chart
Awal algortima
START
Akhir algoritma
END
Input READ
.
Output WRITE
.
Ekspresi
Pencabangan
Awal Looping
Akhir Looping
5
MODUL 2 : PENGENALAN DELPHI
2.1 Pengantar
Borland Delphi merupakan development tools yang berbasis Bahasa Pascal buatan
Borland Software Corporation. Untuk praktikum mata kuliah Logika & Algoritma, kita
akan menggunakan perangkat lunak ini dengan fokus pada pembuatan program /
aplikasi konsole (console application). Pilihan Delphi sebagai piranti untuk
mempelajari dasar-dasar pemrograman prosedural adalah karena software ini
dikenal handal serta mudah untuk menggunakan dan mempelajarinya.
6
2.3 Struktur Aplikasi Konsol
PROGRAM ... [nama program] ;
{$APPTYPE CONSOLE}
USES SysUtils;
CONST
[nama konstanta & nilainya] ;
TYPE
[nama tipe datanya] ;
VAR
[nama variabel & tipe datanya] ;
FUNCTION [nama fungsi & parameternya] ;
Begin
[isi fungsi]
End;
PROCEDURE [nama prosedur & parameternya] ;
Begin
[isi prosedur]
End;
BEGIN
[isi program utama]
END.
7
2.5 Identifier dan Ketentuan Penulisannya
Identifier adalah nama yang kita deklarasikan untuk konstanta, variabel, tipe, unit,
prosedur, fungsi, properti, dsb.
Adapun ketentuan penulis identifier adalah sbb :
Maksimum 255 karakter
Karakter pertama harus huruf atau underscore ( _ )
Karakter berikutnya boleh berupa huruf, angka, atau underscore
Tidak boleh menggunakan spasi & tanda baca lainnya
Bukan reserved word (perintah-perintah standar bahasa pemrograman ybs)
Beberapa bahasa pemrograman seperti C, Java, dan Javascript memberlakukan
ketentuan tambahan, yaitu CASE SENSITIF (huruf besar & kecil dianggap berbeda).
Tetapi untuk Delphi / Pascal yang kita gunakan dalam praktikum tidak menerapkan
ketentuan tersebut.
Contoh identifier yang benar :
GajiPokok
_LastStock
nama_pegawai
Bonus3
Contoh identifier yang salah :
tanggal-lahir (ada simbol -)
3Tunjangan (dimulai angka 3)
Const (merupakan reserved word)
&Pajak (dimulai simbol &)
POTONGAN ABSEN (mengandung spasi)
Jumlah%Bonus (mengandung simbol %)
8
2.7 Mengenal Beberapa Operator
Operator aritmatika :
Penambahan (+), pengurangan (-), perkalian (*)
Pembagian dengan hasil bilangan bulat (DIV)
Pembagian dengan hasil bilangan real (/)
Sisa pembagian (MOD)
Operator relasional :
Lebih dari (>), lebih dari atau sama dengan (>=)
Kurang dari (<), kurang dari atau sama dengan (<=)
Sama dengan (=), tidak sama dengan (<>)
Operator logika :
AND
OR
NOT
Dalam Delphi, operator penugasan (assignment) menggunakan simbol :=xx
9
2.9 Cara Memformat Tampilan Data Real
Contoh (variable Luas real) :
Writeln ( Luas segitiga = , Luas : 7 : 2);
Output :
Luas segitiga = _ 250.35
Luas : 7 : 2 7 digit untuk tempat seluruh variabel, 2 digit untuk tempat
pecahan.
Writeln ( Luas segitiga = , Luas : 8 : 0);
Output :
Luas segitiga = _ _ _ _ _ 250
Luas : 8 : 0 8 digit untuk tempat seluruh variabel, 0 digit untuk tempat
pecahan.
PSEUDO CODE
ALGORITMA JumlahDuaBilangan
DEKLARASI
Bilangan1, Bilangan2, Jumlah : integer
DESKRIPSI
Read (Bilangan1, Bilangan2)
Jumlah Bilangan1 + Bilangan2
Write (Jumlah)
10
FLOW CHART
11
2.11 Soal Latihan
Buatlah FLOWCHART, PSEUDOCODE, dan PROGRAM DELPHI untuk :
1. Menghitung luas segitiga siku-siku. Jangan lupa mem-format tampilan
outputnya !
2. Menghitung rata-rata dari empat buah bilangan pecahan.
3. Menentukan nilai akhir sebuah mata kuliah dengan bobot masing-masing
komponen sbb : Tugas = 15%, Quiz = 20%, UTS = 30%, UAS = 35%.
4. Menghitung volume (V) sebuah tabung Rumus V = L x T
L = luas permukaan lingkaran =
T = tinggi tabung
Gunakan konstanta untuk nilai phi ( )
5. Menghitung rincian pembayaran belanja dengan layout I/O sbb :
Nama Barang ?
Harga Barang ?
Banyaknya ?
Harga Total =
PPN =
Jumlah Pembayaran =
Ketentuan :
Harga Total = Harga x Banyak
PPN 10% dari Harga Total
Jumlah Pembayaran = Harga Total + PPN
6. Masih ingat algoritma untuk menukar isi 2 buah gelas ? Coba kita terapkan
untuk menukar isi 2 buah variabel integer.
Layout I/O yang diinginkan :
Data X ? _
Data Y ? _
Sebelum ditukar : X = Y =
Sesudah ditukar : X = Y =
7. Sebuah kantung berisi sejumlah permen dengan 2 jenis rasa : mint dan
stroberi. Permen tsb akan dibagikan secara merata kepada 3 orang anak.
Hitunglah :
Jumlah permen rasa mint dan stroberi yang diterima setiap anak.
Jumlah seluruh permen yang tersisa.
Petunjuk : manfaatkan operator DIV dan MOD !
12
MODUL 3 : PENCABANGAN BERSYARAT [1]
3.1 Pengantar
Seringkali kita harus menemui pemilihan sejumlah kondisi alternatif dalam
pembuatan program. Dalam pemrograman Delphi, hal ini ditangani dengan
pencabangan bersyarat menggunakan statement IF dan CASE. Masing-masing
statement tersebut memiliki karakteristik tertentu yang perlu kita fahami
perbedaannya dengan baik.
13
FLOW CHART
PROGRAM DELPHI
Program EntriSiswaBaru;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Nama, AsalSekolah : string;
JalurTes, BidangKeahlian : char;
BEGIN
Write ( Nama siswa ? ); Readln(Nama);
Write ( Asal Sekolah ? ); Readln(AsalSekolah);
Write ( Jalur Tes [U=Umum K=Khusus] ? ); Readln(JalurTes);
IF JalurTes = K THEN
BEGIN
Write ( Bidang keahlian [A=Seni B=Olah Raga] ? );
Readln(BidangKeahlian)
END;
Readln
END.
14
3.3 Contoh Penggunaan IF THEN ELSE
Contoh 1 :
Untuk memperoleh status lulus dari suatu mata kuliah, seorang mahasiswa harus
memperoleh nilai ujian di atas 60.
PSEUDO CODE
ALGORITMA KelulusanKuliah
DEKLARASI
Nilai : integer
Status : string
DESKRIPSI
READ (Nilai)
IF Nilai > 60 THEN
Status Lulus
ELSE
Status Gagal
ENDIF
WRITE (Status)
FLOW CHART
15
PROGRAM DELPHI
Program KelulusanKuliah;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Nilai : integer;
Status : string;
BEGIN
Write ( Nilai ujian ? ); Readln(Nilai);
IF Nilai > 60 THEN
Status := Lulus
ELSE
Status := Gagal ;
Write ( Status kelulusan : , Status);
Readln
END.
Contoh 2 :
Pada masa promosi menyambut hari jadinya, sebuah toserba memberikan diskon
dan bonus kepada setiap pembelinya. Untuk yang berbelanja minimal Rp.100.000,
akan diberikan diskon 10% dan bonus payung. Tapi jika berbelanja di bawah
Rp.100.000, diskonnya 5% dan bonusnya gantungan kunci.
Perhatikan penggunaan blok BEGIN END di bawah THEN & ELSE pada program
Delphi !!
PSEUDO CODE
ALGORITMA HitungBelanja
DEKLARASI
JmlBelanja : integer
Diskon : real
Bonus : string
DESKRIPSI
READ (JmlBelanja)
IF JmlBelanja > 100000 THEN
Diskon 0.1 * JmlBelanja
Bonus Payung
ELSE
Diskon 0.05 * JmlBelanja
Bonus Gantungan kunci
ENDIF
WRITE (Diskon, Bonus)
16
FLOW CHART
PROGRAM DELPHI
Program HitungBelanja;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR JmlBelanja : integer;
Diskon : real;
Bonus : string;
BEGIN
Write ( Jumlah Belanja ? ); Readln(JmlBelanja);
IF JmlBelanja > 100000 THEN
BEGIN
Diskon := 0.1 * JmlBelanja; Bonus := Payung
End
ELSE
BEGIN
Diskon := 0.05 * JmlBelanja; Bonus := Gantungan kunci
END;
Write ( Status kelulusan : , Status);
Readln
END.
17
Contoh 3 :
Sebuah arena permainan di Dunia Fantasi hanya memperbolehkan pengunjung yang
memenuhi dua syarat sbb :
1) Berusia di atas 15 tahun
2) Tinggi badan minimal 150 cm
Dengan input berupa usia & tinggi badan, program akan menentukan apakah
pengunjung boleh / tidak boleh masuk ke arena permainan tsb.
PSEUDO CODE
ALGORITMA SeleksiPengunjung
DEKLARASI
Usia,Tinggi : integer
Status : string
DESKRIPSI
READ (Usia, Tinggi)
IF (Usia > 15) AND (Tinggi >= 150) THEN
Status boleh
ELSE
Status tidak boleh
ENDIF
WRITE (Status)
18
3.4 Contoh Penggunaan IF THEN ELSE IF
Sebuah perusahaan menetapkan besar gaji pokok pegawainya berdasarkan
GOLONGAN : Rp 2.4 juta (golongan 1), Rp 2 juta (golongan 2), Rp 1.5 juta
(golongan 3), dan Rp 1.2 juta (golongan 4).
PSEUDO CODE
ALGORITMA GajiPokokPegawai
DEKLARASI
Gol, GP : integer
DESKRIPSI
READ (Gol)
IF Gol = 1 THEN
GP 2400000
ELSE IF Gol = 2 THEN
GP 2000000
ELSE IF Gol = 3 THEN
GP 1500000
ELSE IF Gol = 4 THEN
GP 1200000
ELSE
GP 0
ENDIF
WRITE (GP)
19
3. Sekolah Tinggi Teknologi Juanda memiliki 5 jurusan : Elektro (EL), Mesin
(MS), Informatika (IF), Teknik Industri (TI), dan Teknik Penerbangan (TP).
Biaya kuliah per SKS = Rp 50.000 dan biaya praktika per MK (mata kuliah) =
Rp 90.000. Tetapi khusus untuk mahasiswa Informatika yang mengambil
lebih dari 20 sks, biaya kuliahnya hanya Rp 40.000 per SKS dan biaya
praktikanya Rp 75.000 per MK. Layout I/O yang diminta sbb :
INPUT
Kode jurusan (EL / MS / IF / TI / TP) ?
Jumlah sks ?
Jumlah mata kuliah praktika ?
OUTPUT
Total biaya =
KETENTUAN
Biaya SKS = Jumlah SKS x Biaya kuliah per SKS
Biaya praktika = Jumlah MK praktika x Biaya praktika per MK
Total Biaya = Biaya SKS + Biaya praktika
5. Angka Akhir (AA) suatu mata kuliah ditentukan dari komponen Nilai Tugas,
UTS dan UAS. Bobotnya masing-masing : 20%, 30%, 50%. Sedangkan Nilai
Akhir (NA) ditentukan oleh AA dengan ketentuan sbb :
0 AA < 45 NA = E
45 AA < 60 NA = D
60 AA < 75 NA = C
75 AA < 85 NA = B
85 AA < 100 NA = A
Output yang diminta : Angka Akhir dan Nilai Akhir
20
MODUL 4 : PENCABANGAN BERSYARAT [2]
4.1 Pengantar
Selain menggunakan IF, pencabangan bersyarat juga dapat dinyatakan dengan CASE.
Pada banyak kasus, penggunaan CASE dapat membuat alur program / algoritma
menjadi lebih mudah dibaca dan difahami. Namun pencabangan dengan CASE
membutuhkan syarat tertentu yang harus dipenuhi, yaitu variabel pencabangannya
harus bertipe ORDINAL (char, integer, boolean, subrange).
Otherwise [statement]
EndCase
Else [statement]
End
21
4.3 Contoh Penggunaan CASE
Sebagai pembanding, akan digunakan contoh soal pada Modul 3 mengenai
penetapan besar gaji pokok pegawai berdasarkan GOLONGAN : Rp 2.4 juta
(golongan 1), Rp 2 juta (golongan 2), Rp 1.5 juta (golongan 3), dan Rp 1.2 juta
(golongan 4). Untuk kasus seperti ini terlihat bahwa struktur algoritma /
programnya lebih simpel jika menggunakan CASE.
PSEUDO CODE (DENGAN IF)
ALGORITMA GajiPokokPegawai_Versi_If
DEKLARASI
Gol, GP : integer
DESKRIPSI
READ (Gol)
IF Gol = 1 THEN
GP 2400000
ELSE IF Gol = 2 THEN
GP 2000000
ELSE IF Gol = 3 THEN
GP 1500000
ELSE IF Gol = 4 THEN
GP 1200000
ELSE
GP 0
ENDIF
WRITE (GP)
22
FLOW CHART
PROGRAM DELPHI
Program EntriSiswaBaru;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Gol, GP : integer;
BEGIN
Write ( Golongan ? ); Readln(Gol);
CASE Gol OF
1 : GP := 2400000;
23
2 : GP := 2000000;
3 : GP := 1500000;
4 : GP := 1200000;
ELSE GP := 0;
END;
Write ( Gaji Pokok = , GP);
Readln
END.
PSEUDO CODE
ALGORITMA KarcisRombongan
DEKLARASI
Jumlah, Harga, Bayar : integer
DESKRIPSI
READ (Jumlah)
CASE Gol
1 .. 5 : Harga 75000
6 .. 20 : Harga 60000
21 .. 40 : Harga 50000
OTHERWISE Harga 35000
ENDCASE
Bayar Jumlah * Harga
WRITE (Bayar)
24
4.5 Nested Selection dengan CASE
Sebuah DISTRO menjual aneka t-shirt dengan harga sbb :
PSEUDO CODE
ALGORITMA KaosDistro
DEKLARASI
Ukuran, Jenis : char
Harga, Banyak, Bayar : integer
DESKRIPSI
READ (Ukuran, Jenis, Banyak)
CASE Jenis
T : CASE Ukuran
S : Harga 45000
M : Harga 60000
L : Harga 70000
OTHERWISE Harga 0
ENDCASE
D : CASE Ukuran
S : Harga 50000
M : Harga 67500
L : Harga 73500
OTHERWISE Harga 0
ENDCASE
OTHERWISE Harga 0
ENDCASE
Bayar Banyak * Harga
WRITE (Bayar)
25
4.6 Nested Selection dengan Kombinasi CASE & IF
Aturan maksimal pengambilan SKS di sebuah perguruan tinggi adalah sbb :
PSEUDO CODE
ALGORITMA PengambilanSKS
DEKLARASI
KodeFakultas : char
IPK : real
MaxSKS : integer
NamaFakultas : string
DESKRIPSI
READ (KodeFakultas, IPK)
CASE KodeFakultas
E : NamaFakultas Ekonomi
IF IPK < 2.75 THEN
MaxSKS 18
ELSE
MaxSKS 24
ENDIF
S : NamaFakultas Sastra
IF IPK < 2.75 THEN
MaxSKS 20
ELSE
MaxSKS 25
ENDIF
OTHERWISE
NamaFakultas Salah input kode fakultas !!
MaxSKS 0
ENDCASE
WRITE (NamaFakultas, MaxSKS)
26
4.7 Soal Latihan
Buatlah PSEUDO CODE dan PROGRAM DELPHI untuk kasus sbb :
1. Gedung Pertunjukan Bandung Convention Hall menjual tiket suatu
pertunjukan musik sbb :
Kode Kelas Harga
A Arena Rp. 60.000
T Tribune Rp. 90.000
V VIP Rp. 150.000
Output yang diminta : Kelas, Harga Total, Diskon (Rp), Tagihan
Ketentuan :
- HARGA TOTAL = JUMLAH TIKET X HARGA
- Untuk pembelian tiket VIP minimal 5 buah akan diberikan DISKON 20%
- TAGIHAN = HARGA TOTAL - DISKON
2. PT. Permata Agung Permata menetapkan aturan penggajian sbb :
GAJI = TUNJANGAN JABATAN + TUNJANGAN KELUARGA + TUNJANGAN ANAK
Besarnya TUNJANGAN JABATAN :
Kode Jabatan Tunjangan Jabatan
D Direksi Rp. 3.5 juta
K Kepala Bidang Rp. 1.9 juta
S Staff Rp. 800.000
TUNJANGAN KELUARGA hanya diberikan untuk yang bestatus MENIKAH,
yaitu sebesar 40% dari TUNJANGAN JABATAN.
Besarnya TUNJANGAN ANAK :
Jumlah Anak Tunjangan Per Anak
1-2 Rp. 300.000
3-5 Rp. 240.000
6 Rp. 200.000
Output yang diminta : JABATAN, STATUS (Menikah/Tidak Menikah), GAJI
3. Juanda Airlines menyediakan jalur penerbangan dari Bandung ke Bangkok
dan Kuala Lumpur dengan HARGA TIKET sbb :
Tujuan / Kelas Ekonomi (E) Bisnis (B) Eksekutif (X)
Bangkok (B) $32 $45 $45
Kuala Lumpur (K) $30 $40 $55
Output yang diminta : Kota Tujuan, Kelas, Harga Tiket, PPN, Jumlah Bayar
Ketentuan :
- PPN sebesar 5% dikenakan untuk pembelian tiket yg harganya di atas $ 40
- JUMLAH BAYAR = HARGA TIKET + PPN
27
MODUL 5 : PENGULANGAN (LOOP)
5.1 Pengantar
Salah satu keunggulan mesin komputer adalah pada kemampuannya dalam
melakukan perintah-perintah yang berulang secara akurat. Dalam Delphi dikenal
tiga buah statement untuk kebutuhan loop, yaitu : FOR, WHILE, dan REPEAT.
Umumnya FOR digunakan untuk loop yang batasannya telah diketahui. Dalam Loop
REPEAT, perulangan minimal akan dilakukan satu kali. Sedangkan jika menggunakan
WHILE, perulangan bisa tidak dilakukan sama sekali. Uraian lebih detil mengenai
perbandingan ketiga teknik looping tersebut terdapat pada pasal 5.4.
EndFor
EndFor
End
28
For variabel_counter := DownTo
Begin
End
PSEUDO CODE
ALGORITMA FOR_1
DEKLARASI
i : integer
DESKRIPSI
For i 1 to 5 do
write( LIKMI )
EndFor
29
For i 1 to 3 do
write( -------------- )
write( Baris ke- , i)
EndFor
PROGRAM DELPHI
Program FOR_1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR i : integer;
BEGIN
for i := 1 to 5 do writeln( LIKMI );
for i := 1 to 3 do
begin
writeln( -------------- );
writeln( Baris ke- , i);
end;
readln;
END.
EndWhile
End
30
5.5 Contoh Penggunaan WHILE
FLOW CHART
31
PSEUDO CODE
ALGORITMA WHILE_1
DEKLARASI
i : integer
DESKRIPSI
i 1
While i <= 10 do
write i
i i+1
EndWhile
i 10
While i >= 1 do
write i
i i -1
EndWhile
PROGRAM DELPHI
Program WHILE_1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR i : integer;
BEGIN
i := 1;
while i <= 10 do
begin
write (i:5);
i := i + 1;
end;
i := 10;
while i >= 1 do
begin
writeln (i:5);
i := i - 1;
end;
readln;
END.
32
5.6 Format Loop REPEAT
Format penulisan REPEAT dalam pseudo code dan Delphi :
Repeat
Until [kondisi]
33
PSEUDO CODE
ALGORITMA REPEAT_1
DEKLARASI
i : integer
DESKRIPSI
i 1
Repeat
write i
i i+1
Until i > 10
i 10
Repeat
write i
i i -1
Until i < 1
PROGRAM DELPHI
Program REPEAT_1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR i : integer;
BEGIN
i := 1;
repeat
write (i:5);
i := i + 1;
until i > 10;
i := 10;
repeat
write (i:5);
i := i - 1;
until i < 1;
readln;
END.
34
5.8 Contoh Loop dengan Jumlah Putaran Tak Tentu
Program WHILE_4;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR P, L, T, V : integer;
jawab : char;
BEGIN
jawab := y ;
while jawab = y do
begin
write( Panjang ? ); readln(P);
write( Lebar ? ); readln(L);
write( Tinggi ? ); readln(T);
V := P * L * T;
write( Ada data lagi [ y / t ] ? );
readln(jawab);
end;
END.
Program REPEAT_4;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR P, L, T, V : integer;
jawab : char;
BEGIN
jawab := y ;
repeat
write( Panjang ? ); readln(P);
write( Lebar ? ); readln(L);
write( Tinggi ? ); readln(T);
V := P * L * T;
write( Ada data lagi [ y / t ] ? );
readln(jawab);
until jawab = t ;
END.
35
5.9 Perbandingan Metode Loop
Loop For Loop While Loop Repeat
Jumlah putaran tertentu Jumlah putaran tidak tentu Jumlah putaran tidak tentu
Jarak (step) counter = 1 Jarak (step) counter tidak Jarak (step) counter tidak
harus = 1 harus = 1
Bagian loop mungkin tidak Bagian loop minimal
dijalankan sama sekali dijalankan 1 kali
36
2. Menampilkan output sbb (FOR4.PR) :
Daftar Biaya Fotocopy
------------------------
Lembar Biaya Copy
------------------------
1 75
2 150
3 225
10 750
------------------------
20 1800
------------------------
37
5. Menampilkan daftar harga bahan bakar sbb :
Harga premium per liter ?
Harga solar per liter ?
Harga premix per liter ?
100
-------------------------------------------
38
8. Menampilkan tabel hasil perkalian (TABELKALI.DPR) :
X 1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25
*
**
***
****
****
***
**
*
39
MODUL 6 : ARRAY (LARIK)
6.1 Pengantar
Array (larik) adalah salah satu tipe data terstruktur. Sebuah variable array mampu
menyimpan sejumlah data yang homogen (sejenis tipenya). Untuk membedakan
penyebutan masing-masing data yang tersimpan dalam array, maka setiap elemen
array diberi indeks berupa angka integer.
Array bisa berdimensi satu atau berdimensi banyak. Dalam perkuliahan Logika &
Algoritma, kita hanya akan membahas array yang berdimensi satu dan berdimensi
dua.
Contoh deklarasi dan ilustrasi array berdimensi satu :
Var A : array [1..5] of string;
Indeks 1 2 3 4 5
Array A A[1] A[2] A[3] A[4] A[5]
40
BEGIN
for i := 1 to 5 do
begin
write( Nama : ); readln(nama);
end;
writeln; writeln( Daftar Nama : );
for i := 1 to 5 do
writeln( Nama : , nama);
readln;
END.
PROGRAM DaftarNama_2;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR nama : array [1..5] of string;
i : integer;
BEGIN
for i := 1 to 5 do
begin
write( Nama : ); readln(nama[i]);
end;
writeln; writeln( Daftar Nama : );
for i := 1 to 5 do
writeln( Nama : , nama[i]);
readln;
END.
41
// display isi matriks A
writeln; writeln( Matriks A : );
for i := 1 to 2 do
begin
for j := 1 to 3 do write(A[i,j]:5);
writeln;
end;
readln;
END.
Program di atas meng-input dan menampilkan isi matriks A.
Lengkapi program tersebut dengan input + display matriks B.
Hitung dan tampilkan hasil penjumlahan matriks C = A + B.
// Hitung upah
jdata:=i-1;
JA:=0; JB:=0; JC:=0; JX:=0; JY:=0; JZ:=0;
for i:=1 to jdata do
begin
42
case KodBag[i] of
'A': begin
NamBag[i]:='Produksi'; Upjam[i]:=9000; JA:=JA+1;
end;
'B': begin
NamBag[i]:='Pengepakan'; Upjam[i]:=7500; JB:=JB+1;
end;
'C': begin
NamBag[i]:='Pengiriman'; Upjam[i]:=5000; JC:=JC+1;
end;
else begin
NamBag[i]:='Salah Kode!'; Upjam[i]:=0;
end;
end;
if Jk[i]<=8 then Jupah[i]:=Jk[i]*Upjam[i]
else Jupah[i]:=(8*Upjam[i])+((Jk[i]-8)*1.5*Upjam[i]);
// Rekap upah
case KodBag[i] of
'A': JX:=JX+Jupah[i];
'B': JY:=JY+Jupah[i];
'C': JZ:=JZ+Jupah[i];
end;
end;
// Display output
writeln; writeln('Daftar Penjualan');
writeln('-----------------------------------------------');
writeln('Nama Nama Jam Upah Jumlah ');
writeln('Pegawai Bagian Kerja PerJam Upah ');
writeln('-----------------------------------------------');
for i:=1 to jdat a writeln(NamPeg[i]:5,NamBag[i]:12,
Jk[i]:5,Upjam[i]:11,Jupah[i]:12:0);
writeln('-----------------------------------------------');
writeln('Jumlah Pegawai bagian Produksi :',JA);
writeln('Jumlah Pegawai bagian Pengepakan :',JB);
writeln('Jumlah Pegawai bagian Pengiriman :',JC);
writeln('Jumlah Upah Pegawai bagian Produksi :',JX:8:2);
writeln('Jumlah Upah Pegawai bagian Produksi :',JY:8:2);
writeln('Jumlah Upah Pegawai bagian Produksi :',JZ:8:2);
readln;
END.
43
6.5 Soal Latihan
Buatlah PROGRAM DELPHI untuk soal-soal berikut ini :
1. [MaksiMin.dpr]
Program akan meng-input sejumlah data angka secara berulang dan
berhenti jika diisi 0 (nol). Data-data angka disimpan dalam ARRAY OF
INTEGER. Output yang diinginkan berupa : jumlah data, total, rata-rata, nilai
terbesar & nilai terkecil. Berikut ini adalah tampilan I/O program :
Bilangan ke-1 ?
Bilangan ke-2 ?
Jumlah data =
Total =
Rata-rata =
Nilai terbesar =
Nilai tekecil =
2. [Array_4.dpr]
Buatlah program yang menampilkan output sbb :
DAFTAR PENJUALAN
------------------------------------------------------------
No Nama Barang Harga Banyak Total Diskon(Rp) Jml.Bayar
------------------------------------------------------------
------------------------------------------------------------
Jumlah transaksi yang mendapat diskon =
Jumlah transaksi yang tidak mendapat diskon =
Total diskon =
Rata-rata jumlah bayar =
Ketentuan :
Total = Harga x Banyak
Diskon 10% diberikan untuk penjualan di atas 20 unit
Jumlah Bayar = Total dipotong Diskon
44
3. [Array_5.dpr]
Buatlah program yang menampilkan output sbb :
DAFTAR RENTAL MOBIL
No. Merk Tahun Lama Jumlah Status U.Muka Tagihan
Mobil Keluaran Rental Bi.Rental Bayar (Rp)
Ketentuan :
Biaya Rental Per Hari mobil Kijang : 250.000, dan Panther : 200.000.
Biaya ini berlaku untuk mobil keluaran lama (tahun 2005 dan
sebelumnya), sedangkan untuk mobil keluaran baru tarifnya 50% lebih
mahal.
Jumlah Biaya Rental = Biaya Rental Per Hari x Lama Pinjam
Data Status Bayar menentukan jenis pembayaran uang muka :
Status Uang Muka (UM)
1 Bayar Lunas (UM = 100%)
2 Bayar UM 30%
3 Belum Bayar (UM = 0%)
Tagihan = Jumlah Biaya Rental Uang Muka (Rp)
45
MODUL 7 : RECORD & ARRAY OF RECORD
46
Mhs.NA := (Mhs.UTS * 0.4)+(Mhs.UAS * 0.6);
if Mhs.NA > 55 then Mhs.Status := 'Lulus'
else Mhs.Status := 'Gagal';
writeln('Nilai Akhir : ', Mhs.NA:6:2);
writeln('Status : ', Mhs.Status);
readln;
END.
PROGRAM Record2;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Mhs : RECORD
NPM,Status : string;
UTS,UAS : integer;
NA : real;
END;
BEGIN
with MHS do
Begin
write('NPM ? '); readln(NPM);
write('Nilai UTS ? '); readln(UTS);
write('Nilai UAS ? '); readln(UAS);
NA := (UTS * 0.4)+(UAS * 0.6);
if NA > 55 then Status := 'Lulus'
else Status := 'Gagal';
writeln('Nilai Akhir : ', NA:6:2);
writeln('Status : ', Status);
End;
readln;
END.
47
7.4 Pengertian Array of Record
Kumpulan dari beberapa record bisa dirangkai dengan bantuan array. Array jenis ini
biasa disebut ARRAY OF RECORD.
48
BEGIN
// Input Data
write('Jumlah data [max=10] ? '); readln(Jdata);
For I := 1 to Jdata do
Begin
write('NPM ? '); readln(Mhs[i].NPM);
write('Nilai UTS ? '); readln(Mhs[i].UTS);
write('Nilai UAS ? '); readln(Mhs[i].UAS);
writeln;
End;
// Hitung
For i := 1 to Jdata do
Begin
Mhs[i].NA := (Mhs[i].UTS*0.4)+(Mhs[i].UAS*0.6);
if Mhs[i].NA > 55
then Mhs[i].Status := 'Lulus'
else Mhs[i].Status := 'Gagal';
End;
// Display Output
writeln( DAFTAR NILAI );
writeln( -------------------------------------- );
writeln( NPM UTS UAS Nilai Akhir Status );
writeln( -------------------------------------- );
For i := 1 to Jdata do writeln(Mhs[i].NPM:5,Mhs[i].UTS:8,
Mhs[i].UAS:8,Mhs[i].NA:8:1,Mhs[i].Status:8);
writeln( -------------------------------------- );
readln;
End.
Berikut ini adalah versi lain program RECORD3 dengan memanfaatkan WITH :
PROGRAM Record4;
{$APPTYPE CONSOLE}
USES SysUtils;
TYPE RecoMhs = RECORD
NPM,Status : string;
UTS,UAS : integer;
NA : real;
END;
VAR Mhs : Array[1..10] of RecoMhs;
Jdata,i : integer;
49
BEGIN
// Input Data
write('Jumlah data [max=10] ? '); readln(Jdata);
For I := 1 to Jdata do WITH Mhs[i] do
Begin
write('NPM ? '); readln(NPM);
write('Nilai UTS ? '); readln(UTS);
write('Nilai UAS ? '); readln(UAS);
writeln;
End;
// Hitung
For i := 1 to Jdata do WITH Mhs[i] do
Begin
NA := (UTS*0.4)+(UAS*0.6);
if NA > 55
then Status := 'Lulus'
else Status := 'Gagal';
End;
// Display Output
writeln( DAFTAR NILAI );
writeln( -------------------------------------- );
writeln( NPM UTS UAS Nilai Akhir Status );
writeln( -------------------------------------- );
For i := 1 to Jdata do WITH Mhs[i] do
writeln(NPM:5,UTS:8,UAS:8,NA:8:1,Status:8);
writeln( -------------------------------------- );
readln;
End.
50
Buatlah program Record5.dpr yang menampilkan output sbb :
DAFTAR PENERIMAAN BUS PARIWISATA
-----------------------------------------------------------------
No Kelas Lama Tarif Tarif Jumlah
Bus Sewa Sewa Extra Tagihan
-----------------------------------------------------------------
-----------------------------------------------------------------
Total tagihan bus kelas 1/ 2/ 3 = Rp / /
Bus kelas 1/2/3 disewa sebanyak = / / kali
Ketentuan :
Gunakan struktur data ARRAY OF RECORD.
Input Lama Sewa dalam satuan jam.
Jumlah Tagihan = Tarif Sewa + Tarif Extra.
------------------------------------------------------------------------------------------------
Jumlah tim yang menerima extra bonus =
Jumlah tim yang tidak menerima extra bonus =
Total nilai seluruh tim yang menerima extra bonus =
Total nilai seluruh tim yang tidak menerima extra bonus =
Ketentuan :
Gunakan struktur data ARRAY OF RECORD.
Untuk setiap partai pertandingan, nilai untuk tim yang menang = 3,
seri = 1, kalah = 0.
Setiap tim akan memperoleh bonus Rp.2,5 juta untuk setiap nilai
yang diraihnya. Contoh : sebuah tim akan memperoleh Rp.7,5 juta
jika memenangkan suatu pertandingan.
Extra Bonus diberikan sebesar 50% dari Jumlah Bonus jika tim ybs
memiliki partai menang lebih banyak dari total partai seri & kalah.
51
MODUL 8 : FUNGSI STRING & ARITMATIK
8.1 Pengantar
Setiap development tools umumnya menyediakan fungsi (function) siap pakai untuk
mempermudah programmer dalam mengembangkan suatu aplikasi. Selain itu, jika
fungsi-fungsi yang tersedia dianggap tidak dapat memenuhi suatu kebutuhan, maka
disediakan mekanisme untuk membangun fungsi sendiri (user defined function).
Dalam modul ini akan dikenalkan penggunaan beberapa fungsi string dan aritmatik
dalam Borland Delphi.
52
8.3 Soal Latihan
1. Nomor Pokok Mahasiswa (NPM) STMIK-LIKMI terdiri atas 10 digit angka :
Empat digit pertama merupakan tahun angkatan
Satu digit berikutnya adalah kode jenjang pendidikan
(0 : Diploma III, 1 : Sarjana, 2 : Magister)
Satu digit berikutnya adalah kode jurusan
(1 : Manajemen Informatika, 3 : Teknik Informatika)
Empat digit terakhir adalah merupakan nomor urut mahasiswa
Buatlah program Fungsi1.dpr sbb :
INPUT
NPM ?
OUTPUT
Tahun Angkatan : ..
Jenjang Pendidikan : ..
Jurusan : ..
No.Urut : ..
Petunjuk : gunakan fungsi COPY.
20
53
4. Buatlah program Fungsi4.dpr untuk menghitung STANDAR DEVIASI dari
sejumlah data angka yang tersimpan dalam sebuah array.
INPUT
Jumlah data ?
Data angka ke 1 ?
Data angka ke 2 ?
OUTPUT
Standar deviasi =
Petunjuk :
Gunakan fungsi SQR dan SQRT.
Rumus untuk menghitung standar deviasi :
N
1
( Xi RataRata) 2
SD
N 1
5. Sebuah WARTEL menetapkan 1 pulsa telepon (lokal) setara dengan 3 menit
waktu bicara. Untuk perhitungan pulsa selalu berlaku pembulatan ke atas.
Tarif per pulsa : Rp.250. Buatlah program Fungsi5.dpr sbb :
INPUT
Lama waktu bicara (dalam menit) ?
OUTPUT
Jumlah pulsa :
Biaya : Rp ..
Petunjuk : gunakan fungsi TRUNC dan FRAC.
54
This document was created with Win2PDF available at http://www.daneprairie.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.