Anda di halaman 1dari 55

DIKTAT PERKULIAHAN

SI221 DASAR PEMROGRAMAN I

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

Sasaran / pokok materi :


Memahami tujuan mata kuliah Dasar Pemrograman I
Belajar pemrograman vs bahasa pemrograman
Tahapan pembuatan program
Pengertian algoritma
Mengenal beberapa bentuk algoritma

1.1 Konsep Dasar Belajar Pemrograman


Penguasan teknik pemrograman merupakan kompetensi mendasar untuk setiap
mahasiswa Program Studi Manajemen Informatika. Mata Kuliah SI221 Dasar
Pemrograman bertujuan memberikan fondasi pertama untuk mempelajari teknik
pemrograman prosedural.
Konsep mempelajari pemrograman berbeda dengan belajar suatu bahasa
pemrograman. Dalam pemrograman akan dipelajari teknik dan logika mengenai cara
membuat program. Sedangkan bahasa pemrograman hanya merupakan piranti
(tools) yang digunakan untuk membuat program. Jika kita menguasai dengan baik
dasar-dasar teknik pemrograman, maka diharapkan kelak akan mampu membuat
program menggunakan piranti bahasa pemrograman apapun.

1.2 Tahapan Pembuatan Program


Tahapan umum untuk membuat sebuah program sederhana adalah sbb :
1. Analisis masalah :
Mula-mula harus difahami dulu masalah / kasus yang akan kita buat
programnya. Lakukan identifikasi pada semua informasi pendukungnya.
2. Menyusun algoritma :
Agar lebih mudah, maka sebelum menulis program, kita susun dulu
rancangan langkah-langkahnya dalam bentuk algoritma.
3. Menulis kode program :
Algoritma yang telah disusun kita tuangkan menjadi kode-kode program
menggunakan suatu bahasa pemrograman.

1.3 Algoritma Program


Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis. Algoritma bersifat independen terhadap bahasa pemrograman,
artinya suatu algoritma harus bisa diterjemahkan / dituangkan ke dalam bahasa
pemrograman apapun.

2
Ada tiga bentuk algoritma yang umum digunakan, yaitu :
Algoritma deskriptif
Flow chart
Pseudo code

1.4 Contoh Penggunaan Algoritma Deskriptif


Diberikan dua buah gelas sbb :
Gelas A (berisi kopi)
Gelas B (berisi sirup)

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.

Berikut ini adalah ALGORITMA DESKRIPTIF untuk kasus tersebut :


1. Siapkan gelas C untuk penampung sementara
2. Tuangkan isi gelas B ke gelas C
3. Tuangkan isi gelas A ke gelas B
4. Tuangkan isi gelas C ke gelas A

1.5 Soal Latihan


Buatlah ALGORITMA DESKRIPTIF untuk soal-soal sbb :
1. Pindahkan dua buah piring : P1 dan P2 (ukuran P1 < P2) dari posisi A ke
posisi C.

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.

2. Menggunakan ketentuan yang sama dengan soal di atas, pindahkan tiga


buah piring : P1, P2 dan P3 (ukuran P1 < P2 < P3) dari posisi A ke posisi C.

3. Seorang pemuda bermaksud menyebrangkan tiga benda miliknya, yaitu :


sekeranjang kubis, seekor domba, dan seekor srigala. Bagaimana strategi
langkah yang harus ditempuh agar seluruh miliknya bisa diseberangkan
dengan SELAMAT, jika :
Dalam setiap penyeberangan, ia hanya bisa membawa satu benda saja.
Srigala bisa memangsa domba, dan domba bisa memakan kubis.

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 ?

3 Liter 5 Liter 6 Liter

4
1.6 Format Simbol Flow Chart

Awal algortima
START

Akhir algoritma
END

Input READ

.
Output WRITE

.
Ekspresi

Pencabangan

Awal Looping

Akhir Looping

1.7 Format Penulisan Pseudo Code


Berikut ini adalah salah satu format penulisan yang lazim digunakan dalam PSEUDO
CODE :
ALGORITMA [nama algoritma]
DEKLARASI
[nama-nama variabel yang digunakan & tipe datanya]
DESKRIPSI
[langkah-langkah algoritma]

5
MODUL 2 : PENGENALAN DELPHI

Sasaran / pokok materi :


Dasar-dasar pengoperasian Borland Delphi
Mengenal struktur aplikasi konsol
Memahami manfaat & cara menuliskan komentar dalam program
Memahami aturan penulisan identifier
Mengenal beberapa tipe data standar
Mengenal operator : aritmatika, penugasan, logika, dan relasional
Mengenal instruksi untuk I/O
Cara memformat tampilan data real

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.

2.2 Bekerja dengan Borland Delphi


Membuka program Borland Delphi :
Start | All Programs | Borland Delphi | Delphi
Membuat aplikasi konsol (console application) baru :
File | New | Other | Console Application
Menyimpan aplikasi konsol :
File | Save
Menjalankan aplikasi konsol :
Run | Run
Membuka kembali aplikasi konsol :
File | Open
Menutup program Borland Delphi :
File | Exit

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.

2.4 Menuliskan Komentar dalam Program


Menuliskan komentar (catatan) di dalam program yang kita buat merupakan
kebiasaan yang positif karena akan mempermudah siapapun yang membaca
program tersebut untuk memahami isi / logika program.
Cara menulis komentar dalam Pascal / Delphi adalah dengan menambahkan tanda :
{ } atau (* * ) atau //
Contoh :
{ Komentar baris 1
Komentar baris 2 }
(* Komentar baris 1
Komentar baris 2 *)
// Komentar baris 1
// Komentar baris 2

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 %)

2.6 Tipe Data Standar


Berikut ini adalah tipe data standar dalam Delphi :
INTEGER (bilangan bulat)
REAL (bilangan real)
CHAR (teks dengan 1 huruf)
STRING (teks boleh > 1 huruf)
BOOLEAN (hanya memiliki 2 alternatif nilai : true & false)

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

2.8 Instruksi Input & Output (I/O)


WRITE
mencetak data tanpa diikuti pergantian baris
WRITELN
mencetak data dan diikuti pergantian baris
READLN
membaca data dan diikuti pergantian baris
Contoh :
FLOW CHART PSEUDO CODE PROGRAM DELPHI
Write ( Bilangan pertama ? );
Read (Bil1, Bil2) Readln (Bil1);
Write ( Bilangan kedua ? );
Readln (Bil2);

Writeln ( Jumlah dua bilangan = , Jumlah);


Write (Jumlah, Selisih) Writeln ( Selisih dua bilangan = , Selisih);

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.

2.10 Contoh Soal


Kita akan membuat sebuah program yang akan menghitung JUMLAH dari dua buah
data bilangan bulat. Sebelumnya akan dibuat dulu algoritmanya dalam 3 versi
(algoritma deskriptif, flowchart, dan pseudo code).
ALGORITMA DESKRIPTIF
1. Baca data Bilangan1 & Bilangan2
2. Hitung jumlahnya Jumlah = Bilangan1 + Bilangan2
3. Tampilkan / cetak hasil Jumlah

PSEUDO CODE
ALGORITMA JumlahDuaBilangan
DEKLARASI
Bilangan1, Bilangan2, Jumlah : integer
DESKRIPSI
Read (Bilangan1, Bilangan2)
Jumlah Bilangan1 + Bilangan2
Write (Jumlah)

10
FLOW CHART

PROGRAM DELPHI (APLIKASI KONSOL)


PROGRAM JumlahDuaBilangan;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Bilangan1, Bilangan2, Jumlah : integer;
BEGIN
Write ( Bilangan pertama ? ); readln(Bilangan1);
Write ( Bilangan kedua ? ); readln(Bilangan2);
Jumlah := Bilangan1 + Bilangan2;
Write ( Jumlah dua bilangan = , Jumlah);
Readln
END.

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]

Sasaran / pokok materi :


Memahami peran proses pengambilan keputusan dalam program
Pencabangan bersyarat dengan IF THEN
Pencabangan bersyarat dengan IF THEN ELSE
Pencabangan bersyarat dengan IF THEN ELSE IF
Penggunaan compound statement dalam suatu blok
Penggunaan operator AND, OR, dan NOT dalam kondisi pencabangan

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.

3.2 Contoh Penggunaan IF THEN


Untuk meng-input data siswa baru, akan diperiksa dulu apakah siswa tersebut
masuk melalui jalur khusus. Setiap siswa akan di-input data nama, asal sekolahnya,
serta jalur tes ybs. Untuk siswa yang melalui jalur khusus, akan di-input juga bidang
keahlian ybs (seni/olahraga).
PSEUDO CODE
ALGORITMA EntriSiswaBaru
DEKLARASI
Nama, AsalSekolah : string
JalurTes, BidangKeahlian : char
DESKRIPSI
READ (Nama, AsalSekolah, JalurTes)
IF JalurTes = Y THEN
Read (BidangKeahlian)
ENDIF

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)

Buatlah FLOW CHART & PROGRAM DELPHI-nya sebagai latihan !


Coba ganti operator AND dengan OR, lalu jalankan kembali programnya. Apa
perbedaannya ?

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)

Buatlah FLOW CHART & PROGRAM DELPHI-nya sebagai latihan !

3.5 Soal Latihan


Buatlah FLOWCHART, PSEUDOCODE, dan PROGRAM DELPHI untuk kasus sbb :
1. Di Kantor Polwiltabes, kita dapat membuat SIM A, C, B1, dan B2. Biaya
pembuatannya adalah sebesar Rp 125.000. Khusus untuk pembuatan SIM
B2, harganya satu setengah kali lipat biaya di atas.
Output yang diminta berupa biaya pembuatan SIM.
2. Sekolah Penerbang Curug membuka pendaftaran bagi lulusan SMU/SMK
dengan prasyarat usianya antara 19 s/d 24 tahun.
Outputnya akan menentukan apakah ia memenuhi prasyarat untuk
mengikuti seleksi.

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

4. Lengkapi program GajiPokokPegawai (Modul 3.4) dengan menambahkan


output sbb :
Tunjangan Transport :
Golongan 1 = Rp 850.000
Golongan 2 = Rp 750.000
Golongan 3 = Rp 600.000
Golongan 4 = Rp 400.000
PPH (khusus untuk pegawai golongan 1) sebesar 8% dari Gaji Pokok.
Gaji Total = Gaji Pokok + Tunjangan PPH

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]

Sasaran / pokok materi :


Pencabangan bersyarat dengan CASE
Memahami syarat tipe data untuk case-list
Memahami penggunaan tipe data subrange untuk case-list
Nested selection dengan CASE
Nested selection dengan kombinasi CASE dan IF

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).

4.2 Format Penulisan CASE


Format penulisan CASE dalam pseudo code :
Case ... [variabel_pencabangan]
CaseList1 : [statement]
CaseList2 : [statement]

Otherwise [statement]
EndCase

Format penulisan CASE dalam Delphi / Pascal :


Case ... [variabel_pencabangan] of
CaseList1 : [statement] ;
CaseList2 : [statement] ;

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)

PSEUDO CODE (DENGAN CASE)


ALGORITMA GajiPokokPegawai_Versi_Case
DEKLARASI
Gol, GP : integer
DESKRIPSI
READ (Gol)
CASE Gol
1 : GP 2400000
2 : GP 2000000
3 : GP 1500000
4 : GP 1200000
OTHERWISE GP 0
ENDCASE
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.

4.4 Tipe Subrange untuk Variabel Pencabangan CASE


Sebuah tempat rekreasi menetapkan harga karcis untuk pengunjung rombongan
sbb :

Jumlah Anggota Rombongan Harga Tiket Per Orang


1-5 Rp. 75.000
6 - 20 Rp. 60.000
21 - 40 Rp. 50.000
> 40 Rp. 35.000

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)

Buatlah PROGRAM DELPHI-nya sebagai latihan !


Apa yang terjadi jika input Jumlah diisi nilai negatif ? Bagaimana mengatasinya ?

24
4.5 Nested Selection dengan CASE
Sebuah DISTRO menjual aneka t-shirt dengan harga sbb :

Jenis/Ukuran S (Sereg) M (Mejehna) L (Logor)


T (Tanpa krah) 45000 60000 70000
D (Dengan krah) 50000 67500 73500

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)

Buatlah FLOWCHART dan PROGRAM DELPHI-nya sebagai latihan !

25
4.6 Nested Selection dengan Kombinasi CASE & IF
Aturan maksimal pengambilan SKS di sebuah perguruan tinggi adalah sbb :

Kode Fakultas IPK < 2.75 IPK 2.75


E (Ekonomi) 18 24
S (Sastra) 20 25

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)

Buatlah FLOWCHART dan PROGRAM DELPHI-nya sebagai latihan !

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)

Sasaran / pokok materi :


Loop menggunakan FOR
Loop menggunakan WHILE
Loop menggunakan REPEAT
Contoh loop dengan jumlah putaran tak tentu
Perbandingan loop dengan FOR, WHILE, dan REPEAT
Nested 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.

5.2 Format Loop FOR


Format penulisan FOR dalam pseudo code :
For variabel_counter To

EndFor

For variabel_counter DownTo

EndFor

Format penulisan FOR dalam Delphi / Pascal :


For variabel_counter := To
Begin

End

28
For variabel_counter := DownTo
Begin

End

5.3 Contoh Penggunaan FOR


FLOW CHART

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.

5.4 Format Loop WHILE


Format penulisan WHILE dalam pseudo code :
While [kondisi] Do

EndWhile

Format penulisan WHILE dalam Delphi / Pascal :


While [kondisi] Do
Begin

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]

5.7 Contoh Penggunaan REPEAT


FLOW CHART

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

5.10 Nested Loop


Program NESTEDLOOP1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR i, j : integer;
BEGIN
for i := 1 to 5 do
begin
for j := 1 to 10 do write( x:3 );
writeln;
end;
readln;
END.

5.11 Soal Latihan


Buatlah PSEUDOCODE/FLOWCHART dan PROGRAM DELPHI untuk kasus berikut ini :
1. Menampilkan deretan empat baris angka sbb :
2 4 6 8 10 12
12 10 8 6 4 2
50 60 70 80 90 100
100 90 80 70 60 50

Gunakan Loop For (FOR3.DPR)


Gunakan Loop While (WHILE3.DPR)
Gunakan Loop Repeat (REPEAT3.DPR)

36
2. Menampilkan output sbb (FOR4.PR) :
Daftar Biaya Fotocopy
------------------------
Lembar Biaya Copy
------------------------
1 75
2 150
3 225

10 750
------------------------

3. Ubahlah program FOR_4.DPR menjadi FOR_5.DPR dengan menambahkan


input sbb :
Jumlah lembar ? mis.20
Biaya copy per lembar ? mis.90

Output yang iinginkan :


Daftar Biaya Fotocopy
------------------------
Lembar Biaya Copy
------------------------
1 90
2 180
3 270

20 1800
------------------------

4. Meng-input beberapa data angka kemudian menghitung jumlah & rata-


ratanya (FOR_6.DPR). Layout tampilannya sbb :
Jumlah data ? mis.5
Bilangan ke-1 ?
Bilangan ke-2 ?
Bilangan ke-3 ?
Bilangan ke-4 ?
Bilangan ke-5 ?
Jumlah seluruh bilangan =
Rata-rata =

37
5. Menampilkan daftar harga bahan bakar sbb :
Harga premium per liter ?
Harga solar per liter ?
Harga premix per liter ?

Daftar Harga BBM


-------------------------------------------
Liter Premium Solar Premix
-------------------------------------------
5
10
15

100
-------------------------------------------

Gunakan Loop For (FOR7.DPR)


Gunakan Loop While (WHILE4.DPR)
Gunakan Loop Repeat (REPEAT4.DPR)

6. Sebuah hotel menetapkan 3 tarif inap per hari sbb :


Rp.250.000 (VIP), Rp.175.000 (Bisnis), dan Rp.100.000 (Ekonomi). Jika
menginap > 3 hari, tamu akan mendapatkan potongan 10% untuk setiap
tambahan hari di luar yang 3 hari.
Contoh : menginap 5 hari di kelas Bisnis
Potongan = 10% x 2 hari x Rp.175000 = Rp.35000.
Buatlah algoritma & program LOOPHOTEL.DPR dengan layout I/O sbb :
Nama tamu ?
Kelas [V/B/E] ?
Lama menginap ?
Biaya menginap = Rp
Potongan = Rp
Jumlah tagihan = Rp
Ada data lagi [y/t] ?

Gunakan loop while atau repeat.

7. Ubahlah program NESTEDLOOP1.DPR menggunakan kombinasi loop sbb :


While + While (NESTEDLOOP2.DPR)
Repeat + Repeat (NESTEDLOOP3.DPR)
While + Repeat (NESTEDLOOP4.DPR)
Repeat + For (NESTEDLOOP5.DPR)

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

9. Menampilkan deretan bintang (BINTANG1.DPR) sbb :


*
**
***
****
*****

10. Menampilkan deretan bintang (BINTANG2.DPR) sbb :


Jumlah bintang ? mis.4

*
**
***
****

11. Menampilkan deretan bintang (BINTANG3.DPR) sbb :


Jumlah bintang ? mis.4

****
***
**
*

12. Menampilkan tabel kontinyu (KONTINYU1.DPR) sbb :


1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

13. Menampilkan tabel kontinyu (KONTINYU2.DPR) sbb :


20 19 18 17
16 15 14 13
12 11 10 9

39
MODUL 6 : ARRAY (LARIK)

Sasaran / pokok materi :


Memahami struktur data array
Contoh-contoh sederhana penggunaan array berdimensi satu dan dua
Cara perhitungan rekapitulasi data

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]

Contoh deklarasi dan ilustrasi array berdimensi dua :


Var X : array [1..3,1..5] of integer;
Indeks 1 2 3 4 5
Array X 1 X[1,1] X[1,2] X[1,3] X[1,4] X[1,5]
2 X[2,1] X[2,2] X[2,3] X[2,4] X[2,5]
3 X[3,1] X[3,2] X[3,3] X[3,4] X[3,5]

6.2 Contoh Penggunaan Array Berdimensi Satu


Bandingkan output dua program berikut ini :
PROGRAM DaftarNama_1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR nama : string;
i : integer;

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.

6.3 Contoh Penggunaan Array Berdimensi Dua


PROGRAM Array_2;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR A : array[1..2,1..3] of integer;
i, j : integer;
BEGIN
// input matriks A
for i := 1 to 2 do
for j := 1 to 3 do
begin
write( A[ ,i, : ,j, ] ? );
readln(A[i,j]);
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.

6.4 Menghitung Rekapitulasi Data


Untuk menghitung rekapitulasi data, umumnya menggunakan rumus / ekspresi
sebagai berikut :
Jumlah Jumlah + 1 (menghitung JUMLAH DATA)
Total Total + VarData (menghitung AKUMULASI ISI DATA)

Cobalah contoh program berikut ini :


PROGRAM Upah;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR NamPeg,NamBag : array[1..10] of string;
KodBag : array[1..10] of char;
Jk,UpJam : array[1..10] of integer;
Jupah : array[1..10] of real;
i,jdata,JA,JB,JC : integer;
JX,JY,JZ : real;
BEGIN
// Input data
i:=1;
write('Nama Pegawai ?'); readln(NamPeg[i]);
repeat
write('Kode Bagian ?'); readln(KodBag[i]);
write('Jumlah jam kerja ?');readln(Jk[i]);
i:=i+1;
write('Nama Pegawai?');readln(NamPeg[i]);
until NamPeg[i]='x';

// 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)

Jumlah tagihan untuk rental mobil Kijang =


Jumlah tagihan untuk rental mobil Panther =
Jumlah transaksi tanpa uang muka =
Jumlah transaksi dengan uang muka =

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

Sasaran / pokok materi :


Memahami struktur data RECORD
Memahami struktur data ARRAY OF RECORD
Memanfaatkan statement WITH untuk menyingkat penulisan record

7.1 Pengertian Record


Record adalah contoh lain tipe data terstruktur. Sebuah record terdiri atas beberapa
FIELD yang masing-masing berisi data yang jenisnya boleh berlainan. Berikut ini
adalah contoh sebuah record nilai mahasiswa :

NPM UTS UAS NA


[string] [integer] [integer] [real]
2008110011 80 85 82.5

Untuk contoh di atas, maka record akan dideklarasikan sbb :


Var Mhs : RECORD
NPM : string;
UTS, UAS : integer;
NA : real;
END;
Format penulisan sebuah field dalam record : NamaRecord.NamaField
Contoh : Mhs.NPM, Mhs.UTS, Mhs.UAS, Mhs.NA

7.2 Contoh Program dengan Record Tunggal


PROGRAM Record1;
{$APPTYPE CONSOLE}
USES SysUtils;
VAR Mhs : RECORD
NPM,Status : string;
UTS,UAS : integer;
NA : real;
END;
BEGIN
write('NPM ? '); readln(Mhs.NPM);
write('Nilai UTS ? '); readln(Mhs.UTS);
write('Nilai UAS ? '); readln(Mhs.UAS);

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.

7.3 Contoh Penggunaan Statement With


Program RECORD1 di atas dapat disingkat penulisan recordnya dengan
menggunakan statement WITH sehingga menjadi :

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.

Untuk contoh di atas, maka ARRAY OF RECORD akan dideklarasikan sbb :


Type RecoMhs : RECORD
NPM : string;
UTS, UAS : integer;
NA : real;
END;
Var Mhs : Array [1..4] of RecoMhs;

Format penulisan sebuah field dalam array of record :


NamaArray [Indeks].NamaField
Contoh : Mhs[i].NPM, Mhs[i].UTS, Mhs[i].UAS, Mhs[i].NA

7.5 Contoh Penggunaan Array of Record


PROGRAM Record3;
{$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;

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.

7.6 Soal Latihan


Buatlah PROGRAM DELPHI untuk soal-soal berikut ini :
1. Sebuah biro travel menyediakan jasa penyewaan bus pariwisata dengan
tarif sewa sbb :
Bus Kelas : Tarif Per 18 Jam Tarif Extra Per Jam
1 Rp. 1.8 juta Rp. 125.000
2 Rp. 1.4 juta Rp. 100.000
3 Rp. 1.1 juta Rp. 100.000
Contoh perhitungan, misal untuk sewa bus kelas 1 :
18 jam Tarif sewa = 1 x 1.8 juta, Tarif Extra = 0
20 jam Tarif sewa = 1 x 1.8 juta, Tarif Extra = 2 x 125.000
40 jam Tarif sewa = 2 x 1.8 juta, Tarif Extra = 4 x 125.000
15 jam Tarif sewa = 1 x 1.8 juta, Tarif Extra = 0

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.

2. Buatlah program Record6.dpr yang menampilkan output sbb :


DAFTAR BONUS PERTANDINGAN
------------------------------------------------------------------------------------------------
No. Nama Jumlah Partai : Jumlah Jumlah Extra
Urut Tim Menang Seri Kalah Nilai Bonus Bonus
------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------
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

Sasaran / pokok materi :


Mengenal beberapa fungsi string & aritmatik
Memahami penerapan fungsi dalam beberapa kasus nyata

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.

8.2 Contoh Beberapa Fungsi String & Aritmatik


Fungsi Kegunaan Contoh Penggunaan
LENGTH (StringX) Menghitung jumlah karakter pada LENGTH ( Jawa Barat )
StringX 10
COPY (StringX, Menyalin isi StringX mulai dari COPY ( Jawa Barat , 6, 3)
IndexAwal, JmlKar) posisi IndexAwal sebanyak JmlKar Bar
SQR (X) Menghasilkan nilai kuadrat dari SQR (4)
argumen X. 16
SQRT (X) Menghasilkan nilai akar kuadrat SQR (144)
dari argumen X. 12
TRUNC (X) Menghasilkan bagian bilangan TRUNC (17.5)
bulat dari argument X dan 17
membuang bagian pecahannya
FRAC (X) Menghasilkan bagian pecahan dari FRAC (17.5)
argument X dan membuang 0.5
bagian bilangan bulatnya

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.

2. Buatlah program Fungsi2.dpr yang meng-input data berupa sebuah NAMA,


kemudian, menampilkan output berupa nama tersebut dalam keadaan
TERBALIK. Contoh :
INPUT
Nama ? IDA
OUTPUT
Nama terbalik : ADI
Petunjuk : gunakan fungsi LENGTH dan COPY.

3. Buatlah program Fungsi3.dpr yang menampilkan output berupa daftar hasil


kuadrat & akar kuadrat sbb :

Bilangan Kuadrat Akat Kuadrat


1
2

20

Petunjuk : gunakan fungsi SQR dan SQRT.

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.

Anda mungkin juga menyukai