Anda di halaman 1dari 64

1.

Definisi Algoritma

Logika : Ilmu yang mempelajari tentang membandingkan sebuah pernyataan


yang benar dengan pernyataan yang salah.

Algoritma : Kumpulan urutan perintah yang menentukan operasi-operasi tertentu


yang diperlukan untuk menyelesaikan suatu masalah ataupun
mengerjakan suatu tugas.

Bila data yang digunakan benar, maka alagoritma akan selalu berhenti dengan
memberikan nilai yang Benar.

Pembuatan algoritma harus selalu dikaitkan dengan :


a. Kebenaran ALgoritma, yakni bila program selesai maka hasilnya juga benar.
b. Kompleksitas – lama dan jumlah – waktu proses dan penggunaan memori.

Algoritma – dan tentu program yang baik, bercirikan :


a. Tepat sasaran : memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan
b. Flexible dan portable : - Flexible untuk dikembangkan lebih lanjut – Portable
untuk digunakan pada berbagai system dan mesin
c. Bersih dari kesalahan sistem aatupun lojik
d. Murah :
e. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan
pengembangan.
f. Algoritma merupakan pemberian (description) pelaksanaan suatu proses.
Sebuah proses dikerjakan oleh pemroses mengikuti algoritma yang sudah
dibuat. Algoritma merupakan urutan langkah instruksi yang logis.

Penyelesaian Algoritma dapat dilakukan dengan dua cara, yaitu :


1. Flowchart (Simbol-simbol)
Simbol Keterangan
Simbol untuk mulai (start) atau akhir (end) program
Simbol untuk pembacaan/ masukan / input (read)
atau penulisan / keluaran / output (write) pada layar
Simbol untuk suatu proses terhadap data pada
program
Simbol untuk suatu pernyataan pilihan (optional)
pada program
Simbol untuk penghubung antar aktivitas
Konektor, Simbol untuk memutus aktivitas karena
keterbatasan media kertas pada satu halaman saja
Simbol dari Sub Program (Procedure / Function)
Konektor, Simbol untuk memutus aktivitas karena
keterbatasan media kertas untuk ke halaman berikut
Simbol untuk data yang sudah di identifikasi
sebelumnya. Mis : I  10
Simbol Komentar

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 1


Contoh 1:
1. C=A+B
2. Luas persegi panjang= panjang x lebar
3. Luas segitiga = ½ alas x tinggi
4. Keliling persegipanjang = (2 x panjang) + (2 x lebar)
5. Isi Kubus = sisi x sisi x sisi

1 START 2 START

Read (A, Read (panjang, lebar)


B)

CA+B Luas_persegipanjang  panjang * lebar

Write (C) Write


(Luas_persegipanjang)

END
END

Kerjakan untuk soal 3, 4 dan 5 !

2. Pseudecode (Mirip dengan bahasa pemrograman)


Contoh :
Diketahui Penentuan calon pemilih dalam pemilu,yaitu :
Jika WNI dan status MENIKAH maka proses pemilih
Jika bukan WNI maka proses bukan pemilih

Jika WNI dan status TIDAK MENIKAH dan UMUR > 17 TAHUN maka
proses pemilih
Jika WNI dan status TIDAK MENIKAH dan UMUR TIDAK > 17 TAHUN
maka prose bukan pemilih

Penyelesaian dengan Flowchart

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 2


PENENTUAN CALON PEMILIH
START DALAM PEMILU

Read(Status
)

TIDAK
Status’WNI
’?
YA

TIDAK
MENIKAH Umur > 17
TAHUN? TIDAK
?

YA

BUKAN
PEMILIH PEMILIH

END

Penyelesaian dengan Pseudecode


Algoritma Calon_pemilih
Deklarasi Status : string
Menikah : string
Umur : integer
Deskripsi
write('status :') Readln(Status)
If (Status='WNI') then
write('menikah :') readln(menikah)
If (Menikah='Ya') then
Writeln('Pemilih')
else
write('umur :') readln(umur)
If (Umur > 17) then
Writeln('Pemilih')
else
write('Bukan Pemilih')
endif
Else
Write('Bukan Pemilih')

Penyelesaian dengan Program Pascal

program Calon_pemilih;

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 3


uses crt;
var Status : string;
Menikah : string;
Umur : integer;
Begin
write('status :');Readln(Status);
If (Status='WNI') then
begin
write('menikah :');readln(menikah);
If (Menikah='Ya') then
Writeln('Pemilih')
else
write('umur :');readln(umur);
If (Umur > 17) then
Writeln('Pemilih')
else
write('Bukan Pemilih');
end
Else
Write('Bukan Pemilih');
end.

2. Aturan Penulisan Teks Algoritma

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 4


Tulis nilai X dan Y

Dalam notasi algoritmik menjadi:

Write (X,Y); {dalam bahasa PASCAL}


Printf (“%d %d”,X,Y); /* dalam bahasa C */
Write X,Y ‘dalam bahasa BASIC

Isikan nilai X ke dalam Min

Ditulis dalam notasi algoritmik menjadi :

Min  X

Notasi “” berarti mengisi (assign) peubah (variable) Min dengan nilai perubah
X.
Translasi notasi “” ke dalam bahasa PASCAL adalah “: =”, dalam bahasa C
adalah “=”, dalam bahasa BASIC adalah “=” dan dalam bahasa FORTRAN adalah
“=”.
Perhatikan bahwa setiap bahasa pemrograman mempunyai aturan sendiri.
2.1 Teks Algoritma
Teks algoritma disusun oleh tiga bagian (blok); bagian kepala (header) algoritma,
deklarasi, dan deskripsi. Setiap bagian dengan komentar untuk memperjelas teks
yang dituliskan. Komentar adalah kalimat yang diapit oleh pasangan tanda kurung
kurawal (‘{‘ dan ‘}’).

2.2 Kepala Algoritma


Kepala algoritma adalah bagian yang terdiri atas nama algoritma dan penjelasan
(spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat dan
menggambarkan apa yang dilakukan algoritma tersebut.
Contoh :
Algoritma LUAS_LINGKARAN
{Menghitung luas lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima
masukan masukan jari-jari lingkaran , menghitung luasnya, lalu mencetak luas
lingkaran ke piranti keluaran}

2.3 Deklarasi
Deklarasi nama adalah bagian untuk mendefinisikan semua nama yang dipakai di
dalam algoritma. Nama tersebut dapat berupa tetapan (Const), peubah (Var), tipe
(Type), Label, prosedur (Procedure), dan fungsi (Function).
Contoh pendefinisian nama di dalam bagian deklarasi misalnya :
DEKLARASI :
{nama tetapan}
const NPeg = 100 {jumlah pegawai}
const phi = 3.14 {nilai }

{nama tipe}
type Titik : record
< x : integer,
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 5
y : integer
>

{nama peubah}
c : char
Q : Titik
Ketemu : boolean

Function APAKAH_A (input c : char)  boolean


{Mengembalikan nilai true bila c adalah karakter ‘A’, atau false bila sebaliknya}

Procedure TUKAR (input/output A : integer, input/output B : integer )


{Mempertukarkan nilai A dan B}
{Parameter A dan B sudah terdefinisi nilainya}
{Setelah pertukaran, A berisi nilai B semula, B berisi nilai A semula}

2.4 Deskripsi
Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Langkah-langkah
ini dituliskan dengan notasi Write untuk mencetak data/informasi, Read untuk
mebaca data.
Contoh :

DESKRIPSI :
read (c,d)
If c < d then
ea+b
else
ea–b
endif
write (e)

2.5 Translasi Teks Algoritma ke dalam Teks Program Pascal

Contoh :
Algoritma MENGHITUNG_NILAI_RATA_RATA
{Menghitung nilai rata-rata sekumpulan bilangan bulat yang dibaca dari pirnati
keluaran}

DEKLARASI
X : integer { peubah data bilangan bulat }
N : integer { banyaknya data bilangan bulat, N > 0 }
K : integer { pencacah jumlah pengulangan }
Jumlah : integer { jumlah seluruh data bilangan bulat }
Rata : real { rata-rata data bilangan bulat }

DESKRIPSI
Read (N) {baca banyak data}
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 6
K1 {mulai dari data pertama}
Jumlah  0
While K  N do
Read (X)
Jumlah  Jumlah + X
KK+1 {cacah pengulangan selanjutnya}
EndWhile
{K > N}
Rata  Jumlah/N {rata-rata data bilangan bulat}
Write (Rata)

Program MENGHITUNG_NILAI_RATA_RATA;
{Menghitung nilai rata-rata sekumpulan bilangan bulat yang dibaca dari pirnati
keluaran}

{* DEKLARASI *}
Var
X : integer; { peubah data bilangan bulat }
N : integer; { banyaknya data bilangan bulat, N > 0 }
K : integer; { pencacah jumlah pengulangan }
Jumlah : integer; { jumlah seluruh data bilangan bulat }
Rata : real; { rata-rata data bilangan bulat }

{* DESKRIPSI *}
Begin
Write(‘ Masukkan jumlah data : ‘); Readln (N); {baca banyak data}
K := 1; {mulai dari data
pertama}
Jumlah := 0;
While K <= N do
Begin
Write(‘X = ‘); Readln (X);
Jumlah := Jumlah + X;
K := K + 1; {cacah pengulangan selanjutnya}
End;
{K > N}
Rata := Jumlah/N; {rata-rata data bilangan bulat}
Writeln (‘Rata-rata seluruh data = ‘, Rata);
End.

3. Tipe, Nama, dan Nilai


Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 7
Pada umumnya, program komputer bekerja dengan memanipulasi obyek (data)
di dalam memori. Obyek yang akan diprogram bermacam-macam jenis atau tipenya,
misalnya nilai numerik, karakter, string, dan rekaman (record). Suatu tipe menyatakan
pola penyajian data dalam komputer. Tipe data dapat dikelompokkan menjadi atas dua
macam : tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung
dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar atau dati tipe bentukan lain
yang sudah dudefinisikan.
Suatu tipe diacu dari namanya. Nilai-nilai yang dicakup oleh tipe tersebut
dinyatakan di dalam ranah (domain) nilai. Operasi-operasi (beserta operatot) yang
dapat dilakukan terhadap tipe tersebut juga didefinisikan.

3.1 Tipe Dasar


Tipe dasar sudah dikenal dalam kehidupan sehari-hari. Kita hampir setiap hari
berbicara tentang angka-angka dan karakter. Dalam dunia pemrograman, yang
termasuk ke dalam tipe dasar adalah: bilangan logik, bilangan bulat, bilangan riil, dan
karakter.

3.1.1 Bilangan Logika


Nama Tipe
Nama tipe bilangan logik adalah boolean (dari nama seorang matematikawan Inggris,
George Boole).

Ranah Nilai
Bilangan logik hanya mengenal dua buah nilai: benar (true) atau salah (false). Istilah
“bilangan” pada “bilangan logik” muncul karena kita dapat menyatakan “benar”
dengan angka 1 dan “salah” dengan angka 0 (atau sebaliknya).

Tetapan
Karena ranah nilai tipe boolean hanya beranggotakan dua buah nilai, maka tetapan
(constant) yang terdapar pada tipe ini adalah true dan false.
Operasi
Operasi-operasi yang dilakukan terhadap tipe boolean dikenal dengan operasi logika.
Operasi logika menghasilkan nilai dalam ranah nilai tipe boolean (yaitu true atau
false). Operator logika yang dapat digunakan untuk operasi logika adalah: not, and,
or, dan xor.
Jika a dan b adalah peubah (variable) yang bertipe boolean, maka hasil operasi a dan b
dengan operator boolean tersebut diberikan oleh tabel kebenaran berikut:

a not a
true false
false true

A B a and b a or b a xor b
True true true false false
True false false true true
False true false true true
False false false true false
3.1.2 Bilangan Bulat
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 8
Tipe sudah dikenal dalam kehidupan sehari-hari. Bilangan bulat adalah bilangan yang
tidak mengandung pecahan desimal, misalnya 34, 8, 1203, 0, -17, dan sebagainya.
Nama Tipe
Nama tipe bilangan bulat adalah integer.
Ranah Nilai
Dalam implementasi, tipe integer mempunyai rentang nilai yang terbatas. Pada
kompilator Turbo Pascal misalnya, tipe integer dapat direpresentasikan ke dalam
empat macam tipe, yaitu byte, shortint, word, integer, dan longint. Rentang nilai untuk
kelima tipe tersebut adalah:
Tipe Rentang nilai Format
Byte 0 .. 255 Unsigned 8-bit
shortint -128 .. 127 Signed 8-bit
word 0 .. 65535 Unsigned 16-bit
integer -32768 .. 32767 Signed 16-bit
longint -2147483648 .. 2147483647 Signed 32-bit

Tipe bilangan bulat adalah tipe yang memiliki keterurutan. Ini artinya, bila sebuah
nilai bilangan bulat diketahui, nilai sebelumnya (predecessor) dan nilai sesudahnya
(successor) dapat ditentukan. Contohnya, predecessor dari 8 adalah 7, sedangkan
successor-nya adalah 9. Secara formal keterurutan itu didefinisikan sebagai berikut:
jika a adalah peubah bertipe bilangan bulat, maka predecessor(a) = a-1, dan
successor(a) = a+1.

Tetapan
Tetapan untuk nilai bertipe bilangan bulat harus ditulis tanpa mengandung titik
desimal. Contoh tetapan bertipe bilangan bulat adalah:
78 -14 7654 0 5 99991
Operasi
Operasi yang dilakukan terhadap bilangan bulat ada dua macam, yaitu operasi
aritmatik dan operasi perbandingan. Operator yang digunakan pada masing-masing
operasi disebut operator aritmetika dan operator perbandingan (atau operator
relasional).
a. Operasi Aritmetika
Operator aritmetika yang berlaku pada bilangan bulat adalah:
+ (tambah)
- (kurang)
* (kali)
div (bagi)
mod (sisa hasil bagi)

Contoh-contoh operasi aritmetika bilangan bulat:


3 + 10 (hasil: 13)
87 – 31 (hasil: 56)
5 * 10 (hasil: 50)
10 div 3 (hasil: 3)
10 mod 3 (hasil: 1)
20 div 5 (hasil: 4)
20 mod 5 (hasil: 0)
b. Operasi Perbandingan

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 9


Operasi perbandingan terhadap bilangan bulat dengan salah satu operator
relasional menghasilkan nilai boolean (true atau false). Operator perbandingan
untuk bilangan bulat adalah:
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
= (sama dengan)
≠ (tidak sama dengan)

Contoh operasi perbandingan:


3<8 (true)
74 > 101 (false)
9≤9 (true)
9<9 (false)
17 = 17 (true)
(24 div 3) ≠ 8 (false)

3.1.3 Bilangan Riil


Bilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya 3.65,
0.0003, 29.0, 2.60240000E-6, .24, dan lain-lain. Ingatlah bahwa semua bilangan riil
harus mengandung “.” (titik). Bilangan riil dapat juga dituliskan dengan notasi E yang
artinya perpangkatan sepuluh. Misalnya pada contoh tetapan diatas, 2.60240000 x 10-6
Nama Tipe
Nama tipe bilangan bulat adalah real.
Ranah Nilai
Dalam implementasinya, tipe real mempunyai rentang nilai yang terbatas. Pada
kompilator Turbo Pascal misalnya, tipe real dapat direpresentasikan ke dalam empat
macam tipe, yaitu real, single, double, dan extended. Rentang nilai positif untuk
keempat tipe tersebut adalah:

Tipe Rentang nilai Format


Real 2.9 x 10-39 .. 1.7 x 1038 6 byte
single 1.5 x 10-45 .. 3.4 x 1038 4 byte
double 5.0 x 10-324 .. 1.7 x 10308 8 byte
extended 3.4 x 10-4932 .. 1.1 x 104932 10 byte

Tetapan
Tetapan untuk nilai bertipe bilangan riil harus ditulis dengan tanda titik desimal.
Contoh tetapan bertipe bilangan riil adalah:
0.78 -14.2376 7.654000+E8 0.0 -5 99.0

Operasi
Operasi yang dilakukan terhadap bilangan riil ada dua macam, yaitu operasi
aritmetika dan operasi perbandingan. Operator yang digunakan pada masing-masing
operasi tersebut operator aritmetika dan operator perbandingan.

a. Operasi Aritmetika

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 10


Operator aritmetika yang berlaku pada bilangan riil adalah:
+ (tambah)
- (kurang)
* (kali)
/ (bagi)

Contoh-contoh operasi aritmetika bilangan riil:


6.4 + 5.7 (hasil: 12.1)
8.0 – 2.8 (hasil: 5.2)
10/3 (hasil: 3.333…)
10/2.5 (hasil: 4.0 → operasi bilangan campuran)
7.2 * 0.5 (hasil: 3.6)

b. Operasi Perbandingan
Operasi perbandingan terhadap bilangan riil dengan salah satu operator
relasional menghasilkan nilai boolean (true atau false). Operator perbandingan
untuk bilangan riil adalah:
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
≠ (tidak sama dengan)

Contoh operasi perbandingan:


0.003 < 0.3 (false)
8.0 ≥ 5 (true)
3.0 ≠ 3.5 (true)

3.1.4 Karakter
Yang termasuk ke dalam karakter adalah huruf-huruf alfabet, tanda baca, angka ‘0’,
‘1’,.., ‘9’, dan karakter khusus seperti ‘&’, ‘^’, ‘%’, ‘#’, ‘@’, dan sebagainya.

Nama Tipe
Nama tipe untuk karakter adalah char.

Ranah Nilai
Ranah karakter adalah semua huruf di dalam alfabet (‘a’ .. ‘z’, ‘A’ .. ‘Z’), angka
desimal (0..9), tanda baca (‘.’, ‘:’, ‘!’, ‘?’, ‘,’, dan lain-lain), operator arimetik (‘+’, ‘-‘,
‘*’, ‘/’), dan karakter-karakter khusus seperti (‘$’, ‘#’, ‘@’, ‘^’, ‘~’, dan lain-lain).
Daftar karakter baku yang lengkap dapat dilihat di dalam tabel ASCII.

Tetapan
Tetapan untuk data bertipe karakter harus diapit oleh tanda petik tunggal.
Contoh tetapan karakter:
‘h’ ‘Y’ ‘.’ ‘ ‘ ‘p’ ‘+’ ‘9’ ‘0’ ‘$’
Ingatlah bahwa ‘9’ adalah karakter, tetapi 9 adalah integer!

Operasi

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 11


Satu-satunya operasi yang dilakukan terhadap tipe karakter adalah operasi
perbandingan. Operator perbandingan yang berlaku untuk tipe karakter adalah:
≠ (tidak sama dengan)
= (sama dengan)
< (lebih kecil)
> (lebih besar)
≥ (lebih besar atau sama dengan)
Contoh:
‘a’ = ‘a’ {true)
‘T’ = ‘t’ (false)
‘y’ ≠ ‘Y’ (true)
‘m’ < ‘z’ (true)
‘Q’ > ‘Z’ (false

3.2 Tipe Bentukan


Tipe bentukan adalah tipe yang didefinisikan sendiri oleh pemrogram. Tipe bentukan
disusun oleh satu atau lebih tipe dasar. Ada tiga macam tipe bentukan:
1. string
2. tipe dasar yang diberi nama dengan nama tipe baru,
3. rekaman (record)

3.2.1 String
String adalah deretan karakter dengan panjang tertentu. Contoh-contoh string
misalnya ‘Halo-halo Bandung’, ‘Halo, dunia’, ‘D12345B’, dan sebagainya. Karakter
adalah string dengan panjang 1.

Nama Tipe
Nama tipe string adalah string.

Ranah Nilai
Ranah nilai untuk tipe string adalah deretan karakter yang telah didefinisikan pada
ranah karakter.

Tetapan
Semua tetapan string harus diapit oleh tanda petik tunggal.
Contoh-contoh tetapan string:
‘BANDUNG’
‘ganesha’
‘ABCD765’
‘……………………………’
‘K7685302’

Operasi

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 12


Operasi terhadap data bertipe string ada dua macam:
a. Operasi Penyambungan (Concatenation)
Operator : +
Operator “+” di sini bukanlah operator penjumlahan seperti pada tipe numerik
(integer atau real). Operator “+” berarti penyambungan. Bila a dan b adalah peubah
bertipe string, maka a + b sama dengan ab.
Contoh:
‘Teknik’ + ‘INFORMATIKA’ = ‘TeknikINFORMATIKA’
‘Teknik’ + ‘ INFORMATIKA’ = ‘Teknik INFORMATIKA’
‘aaa’ + ‘ bbb’ + ‘cc’ = ‘aaa bbbcc’
‘1’ + ‘2’ = ‘12’ (namun 1 + 2 = 3, mengapa?)

b. Operasi Perbandingan
Operator :
≠ (tidak sama dengan)
= (sama dengan)
< (lebih kecil)
> (lebih besar)
≥ (lebih besar atau sama dengan)
≤ (lebih kecil atau sama dengan)

Contoh:
‘abcd’ = ‘abc’ (false)
‘aku < ‘AKU’ (true)

String yang disusun oleh gabungan numerik dan karakter sering dinamakan
alfanumerik. Misalnya ‘K7685302’, ‘D5432AB’, dan sebagainya. Karena tipe string
banyak dipakai dalam pemrograman, maka string dapat diperlakukan sebagai tipe
dasar.

3.2.2 Tipe Dasar yang Diberi Nama Tipe Baru


Kita dapat memberi nama baru untuk tipe dasar dengan kata kunci type. Ranah nilai,
cara menulis tetapan, dan operasi terhadap tipe baru tersebut tidak berubah, tetap
sama dengan tipe dasar aslinya.
Contoh:
type BilBulat : integer

3.2.3 Rekaman
Rekaman disusun oleh satu atau lebih field (Gambar 4.1). Tiap field menyimpan data
dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan
sebelumnya. Nama rekaman ditentukan oleh pemrogram. Karena strukturnya yang
disusun oleh field-field, maka rekaman dinamakan juga tipe terstruktur (structured
type).

field1 field2 field3 … fieldN

Gambar 3.1 Gambaran Logik Rekaman dengan N Buah Field

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 13


Contoh-contoh yang ditunjukkan di bawah ini memperlihatkan bagaimana
mendefinisikan tipe bentukan untuk rekaman.

Contoh 3.1
Didefinisikan tipe terstruktur yang mewakili tanggal dalam kalender Masehi. Hari
dinyatakan sebagai tanggal (dd), bulan (mm), dan tahun (yy), misalnya 10-8:1999.
Misalkan tipe bentukan tersebut diberi nama TGL.

Dd mm yy

Cara menuliskan tipe Tanggal:


type Tanggal : record
<dd : integer, {1..31}
mm : integer, {1..12}
yy : integer {>0}
>
var D : Tanggal

Jika D adalah peubah bertipe Tanggal, maka cara mengacu tiap field.
D.dd
D.mm
D.yy
Tipe Tanggal didefinisikan sebagai berikut:
Nama tipe : Tanggal
Ranah nilai : sesuai ranah masing-masing field
Contoh tetapan: <12, 7, 1997>, <31, 12, 1980>, <29, 2, 1980>
Operasi : operasi aritmetik bilangan bulat terhadap tiap field
operasi perbandingan terhadap masing-masing field
Contoh 3.2
Didefinisikan tipe terstruktur yang mewakili jam. Jam dinyatakan sebagai jam (hh),
menit (mm), dan detik (ss), contohnya 12:45:10 (jam 12 lewat 45 menit lewat 10
detik). Misalkan tipe bentukan tersebut diberi nama JAM.

Hh mm ss

Cara menuliskan tipe JAM.


type JAM : record
<hh : integer, {0 .. 23}
mm : integer, {0 .. 59}
ss : integer {0 .. 59}
>
var J : JAM

Jika J adalah peubah bertipe JAM, maka cara mengacu tiap field.
J.hh
J.mm
J.ss

Tipe JAM didefinisikan sebagai berikut:


Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 14
Nama tipe : JAM
Ranah nilai : sesuai ranah masing-masing field
Contoh tetapan: <12, 45, 10>, <23, 12, 19>, <9, 17, 8>
Operasi : operasi aritmetik bilangan bulat terhadap tiap field
operasi perbandingan terhadap masing-masing field

Contoh 3.3
NilMhs adalah nama tipe terstruktur yang menyatakan nilai ujian seorang mahasiswa
untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM
(Nomor Induk Mahasiswa), nama mahasiswa, mata kuliah yang di ambil, dan nilai
mata kuliah tersebut.

NIM NamaMhs KodeMK Nilai

Cara menuliskan tipe NilMhs:


type NilMhs : record
< NIM : integer, {Nomor Induk Mahasiswa}
NamaMhs : integer, {Nama Mahasiswa}
KodeMK : integer {Kode Mata Kuliah}
Nilai : char {indeks nilai MK (A/B/C/D/E)}
>
var M : NilMhs
Jika M adalah peubah bertipe NilMhs, maka cara mengacu tiap field.
M.NIM
M.NamaMhs
M.KodeMK
M.Nilai

Tipe NilMhs didefinisikan sebagai berikut:


Nama tipe : NilMhs
Ranah nilai : sesuai ranah masing-masing field
Contoh tetapan: <13596001, ‘Amir Ali’, ‘F1324’, ‘A’>
<13596010, ‘Ratna’, ‘MA211’, ‘C’>
Operasi : - operasi aritmetik bilangan bulat terhadap NIM
- operasi string terhadap NamaMhs, KodeMK, Nilai

Contoh 3.4
Tipe terstruktur untuk jadwal kereta api. Jadwal keberangkatan kereta api terdiri atas
informasi nomor kereta api (NoKA), kota asal (KotaAsal), kota tujuan (KotaTujuan),
jam berangkat (JamBerangkat), dan jam tiba (JamTiba).

NoKA KotaAsal KotaTujuan JamBerangka JamTiba


t

Cara menuliskan tipe JADWAL_KA:


type JADWAL_KA : record
< NoKA : string,
KotaAsal : string,
JamBerangkat : JAM,
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 15
KotaTujuan : string,
JamTiba : JAM
>
var JKA : JADWAL_KA

Jika JKA adalah peubah bertipe JADWAL_KA, maka cara mengacu tiap field.
JKA.NoKA
JKA.KotaAsal
JKA.JamBerangkat.hh
JKA.JamBerangkat.mm
JKA.JamBerangkat.ss
JKA.KotaTujuan
JKA.JamTiba.hh
JKA.JamTiba.mm
JKA.JamTiba.ss

Tipe JADWAL_KA didefinisikan sebagai berikut:


Nama tipe : JADWAL_KA
Ranah nilai : sesuai ranah masing-masing field
Contoh tetapan: <‘KA01’, ‘Jakarta’, <17, 2, 0>, ‘Semarang’, <05, 54, 0>
<‘KA24’, ‘Bandung’, <9, 40,12>, ‘Solo’, <14, 10, 50> >
Operasi : sesuai untuk masing-masing tipe field.

Contoh 3.5
Contoh berikut menyajikan struktur bentukan yang cukup kompleks. Misalkan kita
ingin menyimpan data nilai-nilai mata kuliah yang diambil setiap mahasiswa. Data
yang disimpan di dalam struktur rekaman adalah sebagai berikut:
1. NIM (Nomor Induk Mahasiswa)
2. NamaMhs (nama mahasiswa)
3. Mata kuliah yang diambil mahasiswa tersebut, yang terdiri atas:
Kode mata kuliah
Nama mata kuliah
Nilai mata kuliah

Cara menuliskan tipe MataKuliah:


type MataKuliah : record
< KodeMK : string,
NamaMK : string, `
Nilai : char
>

type NilMhs : record


< NIM : integer,
NamaMhs : string, `
MK : MataKuliah
>

var MKuliah : MataKuliah


Nil : NilMhs

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 16


Jika MKuliah adalah peubah bertipe MataKuliah, Nil adalah peubah bertipe NilMhs,
maka cara mengacu tiap field.
MKuliah.KodeMK
MKuliah.NamaMK
MKuliah.Nilai
Nil.NIM
Nil.NamaMhs
Nil.MKuliah.MK

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 17


4. Runtunan
Algoritma merupakan runtunan (sequence) satu atau lebih instruksi, yang berarti
bahwa :
1. Tiap instruksi dikerjakan satu per satu;
2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi
sebagaimana yang tertulis di dalam teks algoritmanya;
4. Akhir dari instruksi terakhir merupakan akhir algoritma.

Bila runtunan instruksi dalam algoritma berturut-turut dilambangkan dengan A1,


A2, A3, A4, dan A5, maka urutan pelaksanaan instruksi tersebuta adalah seperti
diagram di bawah ini :

A1

A2

A3

A4

A5

Contoh-contoh Runtunan

Algoritma LUAS_SEGITIGA
{Dibaca panjang alas (a) dan tinggi (t) segitiga. Hitunglah luas segitiga tersebut.
Untuk panjang alas dan tinggi tertentu. Luas segitiga dihitung dengan rumus L =
½ at. Nilai L dicetak ke piranti keluaran}

DEKLARASI
a : real {panjang alas segitiga, dalam satuan cm}
t : real {tinggi segitiga, dalam satuan cm}
L : real {luas lingkaran, dalam satuan cm2}

DESKRIPSI
Read (a)
Read (t)
L  a * t/2
Write (L)

Program LUAS_SEGITIGA;
{Dibaca panjang alas (a) dan tinggi (t) segitiga. Hitunglah luas segitiga tersebut.
Untuk panjang alas dan tinggi tertentu. Luas segitiga dihitung dengan rumus L =
½ at. Nilai L dicetak ke piranti keluaran}

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 18


{* DEKLARASI *}
Var
a : real; {panjang alas segitiga, dalam satuan cm}
t : real; {tinggi segitiga, dalam satuan cm}
L : real; {luas lingkaran, dalam satuan cm2}

{* DESKRIPSI *}
Begin
Write (‘Ketikkan panjang alas segitiga : ‘); Readln (a);
Write (‘Ketikkan tinggi segitiga : ‘); Readln (t);
L := a * t/2;
Writeln (‘Luas segitiga = ‘, L:4:2);
End.

Algoritma KOMISI_SALESMAN
{Menghitung besar komisi yang diterima seorang salesman. Besar komisi adalah
10% dari nilai penjualan yang dicapainya. Data masukan adalah nama salesman
dan nilai penjualannya. Keluaran algoritma adalah besar komisi yang diterima
salesman tersebut.}

DEKLARASI
nama_salesman : string
nilai_penjualan : real {nilai penjualan yang dicapai, dalam Rp.}
komisi : real {besar komisi, dalam Rp.}

DESKRIPSI
Read (nama_salesman, nilai_penjualan)
komisi  0.1 * nilai_penjualan
Write (komisi)

Program KOMISI_SALESMAN;
{Menghitung besar komisi yang diterima seorang salesman. Besar komisi adalah
10% dari nilai penjualan yang dicapainya. Data masukan adalah nama salesman
dan nilai penjualannya. Keluaran algoritma adalah besar komisi yang diterima
salesman tersebut.}

{* DEKLARASI *}
Var
nama_salesman : string;
nilai_penjualan : real; {nilai penjualan yang dicapai, dalam Rp.}
komisi : real; {besar komisi, dalam Rp.}

{* DESKRIPSI *}
Begin
Write (‘Ketikkan Nama Salesman : ‘); Readln (nama_salesman);
Write (‘Masukkan Nilai penjualan : ‘); Readln (nilai_penjualan);
komisi := 0.1 * nilai_penjualan;
Writeln (‘Besar komisi yang diterima : ‘, komisi:4:2);
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 19
End.

Algoritma GAJI_KARYAWAN
{Menghitung gaji bersih karyawan. Data masukan adalah nama karyawan dan
gaji pokok bulanannya. Gaji bersih = gaji poko + tunjangan – pajak. Tunjangan
adalah 20% dari gaji pokok, sedangkan pajak adalah 15% dari gaji pokok +
tunjangan.}

DEKLARASI
nama_karyawan : string
gaji_pokok, tunjangan, pajak, gaji_bersih : real

DESKRIPSI
Read (nama_karyawan, gaji_pokok)
tunjangan  0.2 * gaji_pokok
pajak  0.15 * (gaji_pokok + tunjangan)
gaji_bersih  gaji_pokok + tunjangan – pajak
Write (gaji_bersih)

Program GAJI_KARYAWAN
{Menghitung gaji bersih karyawan. Data masukan adalah nama karyawan dan
gaji pokok bulanannya. Gaji bersih = gaji poko + tunjangan – pajak. Tunjangan
adalah 20% dari gaji pokok, sedangkan pajak adalah 15% dari gaji pokok +
tunjangan.}

{* DEKLARASI *}
Var
nama_karyawan : string;
gaji_pokok, tunjangan, pajak, gaji_bersih : real;

{* DESKRIPSI *}
Begin
Write (‘Masukkan Nama Karyawan : ‘); Readln (nama_karyawan);
Write (‘Masukkan Gaji Pokok : ‘); Readln (gaji_pokok);
tunjangan := 0.2 * gaji_pokok;
pajak := 0.15 * (gaji_pokok + tunjangan);
gaji_bersih := gaji_pokok + tunjangan – pajak;
Writeln (‘Gaji bersih karyawan : ‘, gaji_bersih:4:2);
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 20


5. Pemilihan

If ... then ... (else)


Struktur ini digunakan untuk mengeksekusi satau atau lebih perintah yang
menyatakan keadaan. Terdapat dua bentuk umum, yaitu :
If ... then saja, hanya terdapat satu alternatif jika kondisi terpenuhi.
If ... then ... else, terdapat kemungkinan untuk menjalankan satu blok perintah jika
satu kondisi tidak terpenuhi.
Bentuk umum:

If kondisi then
{blok perintah 1}
else
{blok perintah 2}
endif

contoh:
1) If Amir memperoleh juara kelas then
Ayah akan membelikannya sepeda
endif

2) If hari hujan then


Pergilah dengan naik beca
Else
Pergilah dengan naik motor
Endif

Kondisi biasanya berisi perbandingan (dengan tanda =, < atau >) yang akan
menghasilkan nilai benar atau salah.
Bentuk umum struktur kondisi bersarang;

If kondisi1 then
{blok perintah 1}
else
If kondisi2 then
{blok perintah 2}
else
If kondisi3 then
{blok perintah 3}
Endif
Endif
Endif

.........(dan seterusnya)............... ;

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 21


contoh :
program kondisi_bersarang;
uses crt;
var a,b,hasil:real;
pilihan:char;
begin
clrscr;
writeln(‘Masukkan nilai berikut’);
write(‘A =’);readln(a);
write(‘B =’);readln(b);
writeln(‘Pilihan operasi berikut :’);
writeln(‘1. penjumlahan’);
writeln(‘2. pengurangan’);
writeln(‘3. perkalian’);
writeln(‘4. pembagian’);
write(‘pilihan anda :’);readln(pilihan);
if pilihan=’1’ then
begin
hasil:=a+b;
writeln(‘hasil akhir a+b=’,hasil:5:3);
end
else
if pilihan=’2’ then
begin
hasil:=a-b;
writeln(‘hasil akhir a-b=’,hasil:5:3);
end
else
if pilihan=’3’ then
begin
hasil:=a*b;
writeln(‘hasil akhir a*b=’,hasil:5:3);
end
else
if pilihan=’4’ then
begin
hasil:=a/b;
writeln(‘hasil akhir a/b=’,hasil:5:3);
end
else
writeln(‘pilihan anda tidak ada’);
readln;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 22


Case Of
Struktur ini digunakan untuk mengulang eksekusi sebagian rutin program sehingga
tidak perlu menulis rutin tersebut sebanyak yang diinginkan.

Bentuk umum:
Case <variabel kondisi> of
Case – label 1: statement 1;
Case – label 2: statement 2;
Case – label 3: statement 3;
Case – label 4: statement 4;
.........
.........
Case – label n: statement n;
EndCase {end dari case}

Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe
real.
Contoh 1:
Algoritma nilai_coba Program nilai_coba;
Deklarasi nilai:char Var nilai: char;
Deskripsi Begin
Read(nilai) Write(‘Nilai Numerik yang didapat :’);
Case nilai of Readln(nilai);
Case ‘A’ : Writeln(‘Sangat Baik’) Case nil of
Case ‘B’ : Writeln(‘Baik’) ‘A’ : Writeln(‘Sangat Baik’);
Case ‘C’ : Writeln(‘Cukup’) ‘B’ : Writeln(‘Baik’);
Case ‘D’ : Writeln(‘Kurang’) ‘C’ : Writeln(‘Cukup’);
Case ‘E’ : Writeln(‘Sangat Kurang’) ‘D’ : Writeln(‘Kurang’);
EndCase ‘E’ : Writeln(‘Sangat Kurang’);
End;
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 23


Contoh 2:
Algoritma kondisi_case program kondisi_case;
Deklarasi a,b,hasil:real uses crt;
pilihan:char var a,b,hasil:real;
Deskripsi pilihan:char;
readln(a) begin
readln(b) clrscr;
writeln(‘Pilihan operasi berikut :’) writeln(‘Masukkan nilai berikut’);
writeln(‘1. penjumlahan’) write(‘A =’);readln(a);
writeln(‘2. pengurangan’) write(‘B =’);readln(b);
writeln(‘3. perkalian’) writeln(‘Pilihan operasi berikut :’);
writeln(‘4. pembagian’) writeln(‘1. penjumlahan’);
write(‘pilihan anda :’)readln(pilihan) writeln(‘2. pengurangan’);
case pilihan of writeln(‘3. perkalian’);
’1’ : hasila+b; writeln(‘4. pembagian’);
writeln(hasil:5:3) write(‘pilihan anda :’)readln(pilihan);
’2’ : hasila-b case pilihan of
writeln(hasil:5:3) ’1’ :begin
‘3’ : hasila*b hasil:=a+b;
writeln(hasil:5:3) writeln(‘hasil akhir a+b=’,hasil:5:3);
’4’ : hasila/b end;
writeln(hasil:5:3) ’2’ :begin
else hasil:=a-b;
writeln(‘pilihan anda tidak ada’) writeln(‘hasil akhir a-b=’,hasil:5:3);
endCase end;
‘3’ :begin
hasil:=a*b;
writeln(‘hasil akhir a*b=’,hasil:5:3);
end;
’4’ :begin
hasil:=a/b;
writeln(‘hasil akhir a/b=’,hasil:5:3);
end
else
writeln(‘pilihan anda tidak ada’);
end;
readln;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 24


6. Pengulangan

FOR ... DO
Struktur for .. do tidak memerlukan kondisi untuk diuji, yang diperlukan adalah
penentuan batas awal dan batas akhir bagi variabel penghitung pengulangan.
Bentuk umum:

For variabel = awal to akhir do


{blok perintah}
Endfor

1) Perulangan For positif


Contoh1 :
Perulangan positif untuk satu statement:

Algoritma For_positif Program For_positif;


Deklarasi i:integer uses crt;
Deskripsi var i:integer;
For i1 to 5 do begin
writeln(‘I Love Dinda’) For i:=1 to 5 do
endFor writeln(‘I Love Dinda’);
end.

Maka bila program diatas dicompile, hasilnya:


I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda

Penjelasan: Berarti statemen I Love Dinda akan diulang sebanyak 5 kali yaitu
dengan menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.

Contoh2 : Dengan menggunakan blok statement:


Cara penulisannya dengan pada awal blok diawali dengan Begin dan pada akhir
blok diakhiri dengan End.
uses crt;
var i:integer;
begin
For i:=1 to 10 do
Begin
writeln(‘I Love Dinda’); {blok statement}
End;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 25


Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus
diingat disini untuk penggunaan blok pada perulangan For biasanya mempunyai
banyak statement [lebih dari 1 statement]

Contoh3 :
Penggunaan perulangan For dalam blok statement untuk membuat tabel.
Uses crt;
Var a,b,c:integer;
bagi:real;
Begin
Clrscr;
Writeln(‘---------------------------------------------‘);
Writeln(‘ a a*a a*a*a 1/a ‘);
Writeln(‘---------------------------------------------‘);
For a:=1 to 10 do
Begin
b:=a*a;
c:=a*a*a;
bagi:=1/a;
writeln(‘a:4,b:8,c:10,bagi:12:3);
End;
Writeln(‘---------------------------------------------‘);
Readln;
End.

Maka hasilnya:
-----------------------------------------------
a a*a a*a*a 1/a
-----------------------------------------------
1 1 1 1.000
2 4 8 0.500
3 9 27 0.333
4 16 64 0.250
5 25 125 0.200
6 36 216 0.167
7 49 343 0.143
8 64 512 0.125
9 81 729 0.111
10 100 1000 0.100
-----------------------------------------------

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 26


2) Perulangan For negatif
Perulangan negatif adalah perulangan dengan menghitung (counter dari besar ke
kecil. Statement yang digunakan adalah For-DownTo-Do
Contoh :

Algoritma For_negatif Program For_negatif;


Deklarasi i:integer var i:integer;
Deskripsi Begin
For i10 downto 1 do For i10 downto 1 do
Write(i:3) Write(i:3);
EndFor End.

Hasil : 10 9 8 7 6 5 4 3 2 1

3) Perulangan For tersarang


Perulangan For tersarang adalah perulangan For yang berada pada perulangan
yang lainnya. Perulangan yanh lebih dalam akan diproses terlebih dahulu samapai
habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan
perulangan yang lebih dalam lagi dari nilai awalnya dan seterusnya.

Contoh :

Algoritma For_tersarang Program For_tersarang;


Deklarasi a,b:integer Var a,b:integer;
Deskripsi Begin
For a1 to 3 do For a:=1 to 3 do
For b1 to 2 do Begin
write(a:4,b:2) For b:=1 to 2 do write(a:4,b:2);
EndFor Writeln;
EndFor End;
End.

Hasil :
11 12
21 22
31 32

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 27


WHILE ... DO
Aksi (atau runtunan aksi) akan dilaksanakan berulangkali sepanjang <kondisi>
boolean tetap bernilai True. Perulangan While-Do tidak dilakukan jika <kondisi>
tidak terpenuhi atau bernilai False. Pengulangan selesai.

Bentuk umum :
Tidak
While kondisi Do
{blok perintah} Syarat dipenuhi
endWhile
Ya

Blok perintah
Begin
.
.
Perintah;
.
.
end;

Perintah berikutnya

Contoh1:

Algoritma lingkaran Program lingkaran;


Deklarasi luas,kel,jari:real Uses crt;
Pilihan:char
Deskripsi
Var luas,kel,jari:real;
Pilihan’y’ Pilihan:char;
While (pilihan’y’) do Begin
Read(jari) Clrscr;
Luaspi*jari*jari Writeln(‘menghitung luas dan keliling lingkaran’);
Kel2*pi*jari
Writeln(luas:5:3)
Pilihan:=’y’;
Writeln(kel:5:3) While (pilihan=’y’) do
readln(pilihan); Begin
EndWhile Write(‘input jari-jari :’); readln(jari);
Luas:=pi*jari*jari;
Kel:=2*pi*jari;
Writeln(‘Luas lingkaran = ‘,luas:5:3);
Writeln(‘Keliling lingkaran = ‘,kel:5:3);
Writeln(‘ingin hitung lagi [y/t]’);readln(pilihan);
End;
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 28


Contoh2 :
Uses crt;
Var i:integer;
Begin
Clrscr;
i:= 0;
While i < 5 do
Begin
Write(i:3);
Inc(i); {sama dengan i:=i+1}
End;
End.
Hasil : 0 1 2 3 4

Perulangan While-Do tersarang


Perulangan While-Do tersarang (nested While-Do) merupakan perulangan While-Do
yang satu di dalam perulangan While-Do yang lainnya.

Contoh :
Uses crt;
Var a,b:integer;
Begin
Clrcsr;
a:=1;
b:=1;
While a < 4 Do {loop a masih lebih kecil dari 4}
Begin
a:=a+1;
While b < 3 Do {loop selama b masih lebih kecil 3}
Begin
Write(a:3,b:2);
b:=b+1;
End;
End;
Readln;
End.

Hasil : 2 1 2 2

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 29


REPEAT ... UNTIL ....
Pada struktur Repeat-Until, aksi (atau sekumpulan aksi) dilaksanakan minimal satu
kali, karena kondisi pengulangan diperiksa pada akhir struktur, Aksi akan berhenti
bila <kondisi> bernilai True. Dengan kata lain Repeat-Until digunakan untuk
mengulang statemen-statement atau blok statement sampai (Until) kondisi yang
diseleksi di Until tidak terpenuhi.

Bentuk umum :
Repeat
{blok perintah} Repeat
Until kondisi; .
.
Contoh1 : perintah;
Var i:integer; .
.
Begin until Tidak
i:= 0;
Repeat
i:=i+1; Ekspresi
writeln(i); boolean
Until i=5; terpenuhi
End. Ya

Hasil : Perintah
berikutnya
1
2
3
4
5

Contoh2 :
Program lingkaran;
Uses crt;
Var luas,kel,jari:real;
Pilihan:char;
Begin
Clrscr;
Writeln(‘menghitung luas dan keliling lingkaran’);
Repeat
Luas:=pi*jari*jari;
Kel:=2*pi*jari;
Writeln(‘Luas lingkaran = ‘,luas:5:3);
Writeln(‘Keliling lingkaran = ‘,kel:5:3);
Writeln(‘ingin hitung lagi [y/t]’);readln(pilihan);

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 30


Until (pilihan=’t’ or (pilihan=’T’);
End.

Perulangan Repeat-Until tersarang


Repeat-Until tersarang adalah suatu perulangan Repeat-Until yang satu berada
didalam perulangan Repeat-Until yang lainnya.
Contoh :
Var a,b,c:real;
Begin
Writeln(‘---------------------------------------------------‘);
Writeln(‘ sisi A sisi B sisi C ‘);
Writeln(‘---------------------------------------------------‘);
a:=1;
Repeat {perulangan luar}
b:=0;
Repeat {perulangan dalam}
c:=sqrt (a*a+b*b);
witeln(a:6:2,b:9:2,c:9:2);
b:=b+5;
Until b>5 ; {berhenti jika b lebih besar dari 5 untuk perulangan dalam}
a:=a+1;
Until a>3 ; {berhenti jika a lebih besar dari 3 untuk perulangan luar}
Writeln(‘--------------------------------------------------‘);
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 31


7. OPERASI STRING

- Pengerjaan suatu string hanya mempunyai sebuah operator.


- Operator ini digunakan untuk merangkai dua buah elemen string menjadi
sebuah string.
- Panjang maksimum suatu string 255 karakter dalam pascal.

Ex1: {Merangkai String}


const
jenis='Bahasa';
nama='Turbo Pascal';
var sifat:string[11];
kalimat:string[80];
begin
sifat:='terstruktur';
kalimat:=jenis+' '+nama+' '+'merupakan'+' '+jenis+' '+sifat;
writeln(kalimat);
end.

Hasilnya : Bahasa Turbo Pascal merupakan Bahasa terstruktur

Penyeleksian String
- Dua buah string dinyatakan sama bila nilai string yang pertama sama isi dan
panjangnya dengan nilai string kedua.
Ex2 :
var namabahasa:string[6];
begin
write('Bahasa yang sedang anda pergunakan?');
readln(namabahasa);
if namabahasa='pascal' then
writeln('Benar !')
else
writeln('Salah !');
end.

- Bila dua buah string dibandingkan, maka urutan nilainya akan digunakan
urutan karakter sesuai dengan kode ASCII. Jadi karakter ‘A’ lebih kecil
dibanding ‘B’ dan seterusnya.
Ex3 :
var namaAnda,namaTeman:string[30];
begin
write('Nama Anda ?');readln(namaAnda);
write('Nama Teman ?');readln(namaTeman);
if namaAnda=namaTeman then

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 32


writeln('Nama Anda = Nama Teman');

if namaAnda<namaTeman then
writeln('Nama Anda urutannya lebih kecil dari Nama Teman');

if namaAnda>namaTeman then
writeln('Nama Anda urutannya lebih besar dari Nama Teman');
end.

Prosedur Standar untuk Operasi String


Delete
Digunakan untuk membuang sejumlah karakter.
Bentuk umum:
Delete (var s:string;
index:integer;
count:integer);
Ket:
- Jumlah karakter yang dibuang ditunjukkan oleh nilai integer count.
- Mulai dari posisi tertentu ditunjukkan oleh nilai integer index.
- Dari suatu nilai string ditunjukkan oleh pengenal variabel string s.
Ex4 :
var bahasa:string[12];
urutan,posisi:integer;
begin
bahasa:='Turbo Pascal';
for urutan:=1 to 12 do
begin
posisi:=14 - urutan;
delete(bahasa,posisi,1);
writeln(bahasa);
end;
end.

Insert
Bentuk umum:
Insert (source:string; {menyisipkan suatu string}
var s:string; {ke nilai string yang lainnya}
index:integer); {mulai dari posisi yang ditunjukkan}
Ex5 :
var nama:string[15];
begin
nama:='Abdul Hakim SH';
writeln(nama);
insert('.',nama,14);
writeln(nama);
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 33


Str
Bentuk umum:
Str (x[:widht [:decimals]
var s:string);

- Prosedur ini digunakan untuk merubah nilai numerik ditunjukkan oleh


nilai x (berupa integer/real).
- Menjadi nilai string ditunjukkan oleh variabel string s.
- Nilai widht menunjukkan format panjang dari nilai utuh,
- Nilai decimals menunjukkan format dari panjang nilai dibelakang koma.
Ex6 :
var nilai1,nilai2:integer;
x1,x2:string[5];
begin
nilai1:=1234;
nilai2:=567;
writeln(nilai1+nilai2);
str(nilai1:4,x1);
str(nilai2:4,x2);
writeln(x1+x2);
end.

Val
Bentuk umum:
Val (s:string; v; varcode);

- Digunakan untuk mengkonversikan suatu nilai string ditunjukkan oleh


nilai s.
- Menjadi nilai numerik ditunjukkan oleh nilai variabel numerik v.
- s walaupun bernilai string, tetapi harus berisi angka atau tanda plus atau
minus, bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh
nilai variabel code.
- Nilai variabel ini akan nol bila tidak mengandung kesalahan.
Ex7 :
var nilaistring:string[6];
nilaireal:real;
posisi_salah:integer;
begin
nilaistring:='123.45';
val(nilaistring,nilaireal,posisi_salah);
writeln('Nilai string = ',nilaistring);
writeln('Nilai real = ',nilaireal);
writeln('Posisi salah = ',posisi_salah);
end.

Ex8 :
{nilai string siubah menjadi '123.A5'}
var nilaistring:string[6];
nilaireal:real;

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 34


posisi_salah:integer;
begin
nilaistring:='123.A5';
val(nilaistring,nilaireal,posisi_salah);
writeln('Nilai string = ',nilaistring);
writeln('Nilai real = ',nilaireal);
writeln('Posisi salah = ',posisi_salah);
end.

Hasilnya : Nilai String = 123.A5


Nilai Real = 1.2300000000E+02
Posisi Salah= 5

Fungsi Standar untuk Operasi String


Copy
Bentuk umum:
Copy (s:string; index:integer;
count:integer):string;

- Jumlah karakter yang disalin ditunjukkan oleh nilai count.


- Mulai dari posisi yang ditunjukkan oleh nilai integer index.
- Dari nilai string yang ditunjukkan oleh s.
Ex9 :
var karakter:string[15];
begin
karakter:='ABCDEFGHIJKLMNO';
writeln(karakter);
writeln(copy(karakter,5,3));
writeln(copy(karakter,3,10));
end.

Hasilnya : EFG
CDEFGHIJKL

ConCat
Bentuk umum:
ConCat (s1[, s2,...,sn]:string):string;

- Merangkai beberapa nilai string ditunjukkan oleh nilai string s1, s2,..,sn.
Ex10 :
const
nama='Pascal';
dll='dan keluarga';
begin
writeln(concat('Bahasa',' ',nama,' ','untuk Anda',dll));
end.

Pos
Bentuk umum:

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 35


Pos (substr:string; s:string):byte;

- Digunakan untuk mencari posisi letak dari suatu nilai string (substr).
- Yang ada didalam nilai string yang lain (ditunjukkan oleh s).
- Nilai yang dihasilkan berupa nilai byte yang menunjukkan letaknya.
- Bila bernilai nol berarti nilai string yang dicari tidak ada.
Ex11:
const
alphabetik='ABCDEFGHIJKLM';
kar1='CDE';
kar2='3';
kar3='JUGA';
begin
writeln(alphabetik);
writeln;
writeln(kar1,' ','ada posisi ke',' ',pos(kar1,alphabetik));
writeln(kar2,' ','ada posisi ke',' ',pos(kar2,alphabetik));
writeln(kar3,' ','ada posisi ke',' ',pos(kar3,alphabetik));
end.

Length
Bentuk umum:
Length (s:string):integer;

- Digunakan untuk menghitung panjang atau jumlah karakter yang ada di


nilai string ditunjukkan oleh s.
- Hasil dari fungsi adalah nilai numerik integer.
Ex12:
var namaAnda:string[50];
begin
write('Nama Anda ? ');
readln(namaAnda);
writeln('panjang nama Anda',' ',length(namaAnda),' ','karakter');
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 36


8. Prosedur

- Suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram
(program bagian).
- Prosedur diawali dengan kata cadangan procedure.
- Prosedure dipanggil dan digunkan di dalam blok program yang lainnya dengan
menyebutkan judul prosedurnya.

# Prosedure banyak digunakan pada program yang terstruktur, karena :


1) Merupakan penerapan konsep program modular, yaitu memecah-mecah
program yang rumit menjadi program-program bagian yang lebih sederhana dalam
bentuk prosedur.
2) Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali
saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila
diperlukan.

Bentuk umum dari procedure :

Algoritma judul_algoritma_utama Program judul_program_utama;


Deklarasi
Procedure judul_procedure;
Procedure judul_procedure Begin
Deskripsi ….
…. End;

Begin
Deskripsi ….call judul_procedure;
….call judul_procedure ….
…. End.

Ex1 :

Algoritma Utama Procedure garis;


Deklarasi Begin
Procedure garis Writeln(‘==============’);
Deskripsi End;
Writeln(‘==============’)
{program utama}
{Algoritma Utama} Begin
Deskripsi Garis;
Garis Writeln(‘Pascal’);
Writeln(‘Pascal’) Garis;
Garis End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 37


Parameter Dalam Procedure
Nilai dalam suatu modul program pascal sifatnya adalah lokal (berarti hanya dapat
digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat
digunakan pada modul atau unit program lainnya.
Ex2 :
procedure hitung1;
var x,y:real;
begin
write('nilai x ? ');readln(x);
y:=x*x;
writeln('nilai y = ',y:6:2);
end;
begin
hitung1;
end.

# Supaya nilai-nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan
beberapa cara :
1) Dibuat bersifat global
Maka variabel-variabel harus dideklarasikan di atas modul yang akan
menggunakannya.
Ex3 :
var A,B,C:integer;

procedure hitung2;
var X,Y,Z:integer;
begin
write('nilai X = ');readln(X);
write('nilai Y = ');readln(Y);
Z:=X+Y;
writeln('nilai Z = ',Z);
end;
{program utama}
begin
hitung2;
end.

Ex4 :
var A,B,C:integer;

procedure hitung3;
begin
write('nilai A = ');readln(A);
write('nilai B = ');readln(B);
C:=A+B;
writeln('nilai C = ',C);
end;
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 38
{program utama}
begin
hitung3;
end.

2) Dikirimkan sebagai parameter ke modul yang membutuhkannya.


Parameter adalah media pertukaran informasi antara prosedur (atau fungsi) dan
titik dimana ia dipanggil. Tiap ietem data ditransfer antara pameter aktual dan
parameter formal yang berkesuaian.
a) Actual parameter / parameter nyata
Parameter yang dikirimkan dari modul utama ke modul prosedur.
Atau parameter yang disertakan pada waktu pemanggilan.
b) Formal parameter;
Parameter yang ada dan dituliskan pada judul prosedur.

Tiga jenis parameter formal yang disertakan di dalam prosedur:


1. Parameter masukan (input parameter)
Parameter yang nilainya berlaku sebagai masukan untuk prosedur atau
disebut parameter nilai (value parameter atau parameter by value).
2. Parameter keluaran (output parameter)
Parameter yang menampung keluaran yang dihasilkan oleh prosedur.
3. Parameter masukan dan keluaran (input/output parameter)
Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi
prosedur tersebut dinamakan parameter acuan (reference parameter atau
parameter by reference).

- Proses pengiriman data lewat parameter nyata ke parameter formal disebut


dengan parameter passing.
- Parameter nyata dan parameter formal harus dengan tipe yang sama.
- Parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by
reference).

# Pengiriman parameter secara nilai (by value)


Pengiriman secara nilai merupakan pengiriman searah, yaitu dari parameter nyata ke
parameter formal, yang tidak dikirimkan balik dari parameter formal ke parameter
nyata.
Ex5 :
procedure hitung4(A,B:integer);
var C:integer;
begin
C:=A+B;
writeln('nilai C = ',C);
end;
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 39
{program utama}
var X,Y:integer;
begin
write('nilai X = ');readln(X);
write('nilai Y = ');readln(Y);
hitung4(X,Y);
end.

Hubungan antara parameter formal di prosedur dengan parameter nyata di modul


utama, adalah sebagai berikut :

Parameter formal

Procedure hitung(A,B:integer);
Tipe parameter

Hitung(X,Y);

Parameter nyata

- Bahwa nilai-nilai parameter nyata X dan Y di modul utama dikirimkan ke


parameter formal A dan B di prosedur.
- Nilai parameter A dan B diprosedur akan berisi nilai yang sama dengan
parameter X dan Y di modul utama.

# Pengiriman parameter secara acuan


pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang
terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter
nyata.
- Parameter-parameter ini disebut dengan variable parameter. Serta
dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan var.
Syntax:

PROCEDURE Hitung(var A,B,C:integer);

Menunjukkan pengiriman parameter secara acuan.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 40


Ex6 :
procedure hitung6(var A,B,C:integer);
begin
C:=A+B;
end;
{program utama}
var X,Y,Z:integer;
begin
X:=2;
Y:=5;
hitung6(X,Y,Z);
writeln('X = ',X,' ','Y = ',Y,' ','Z = ',Z);
end.

- Hubungan dari :
Procedure hitung6(var A,B,C:integer);

Hitung(X,Y,Z);

- Sehingga perubahan pada parameter formal akan mempengaruhi parameter


nyata juga.

# Pengiriman parameter sebagian secara nilai sebagian secara acuan


Ex7:
procedure hitung7(A,B:integer; var C:integer);
begin
C:=A+B;
end;
{program utama}
var X,Y,Z:integer;
begin
X:=2;
Y:=5;
hitung7(X,Y,Z);
writeln('X = ',X,' ','Y = ',Y,' ','Z = ',Z);
end.

# Prosedur memanggil prosedur yang lain


Ex8 :
procedure pro1(x1:integer);
begin
writeln('nilai x = ',x1,' ','ada di prosedur pro1');
end;
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 41
procedure pro2(x2:integer);
begin
writeln('nilai x = ',x2,' ','ada di prosedur pro2');
pro1(x2);
end;

{program utama}
var x:integer;
begin
x:=5;
pro2(x);
end.

# Prosedur tersarang
Ex9 :
procedure kesatu;
procedure kedua;
begin
writeln('prosedure ke-2 di proc.ke-1');
end;

procedure ketiga;
begin
writeln('prosedure ke-3 di proc.ke-1');
end;
begin
writeln('ini prosedur ke satu');
writeln;
kedua;
ketiga;
end;

{program utama}
begin
writeln('ini di modul utama');
writeln;
kesatu;
end.
Note : Procedure yang lebih dalam dikerjakan terlebih dahulu.

# Prosedur memanggil dirinya sendiri.


Ex10 :
var i:integer;
procedure rekursi;
begin
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 42
writeln('Hallo');
i:=i+1;
if i<10 then
rekursi;
end;
{program utama}
begin
i:=1;
rekursi;
end.

- Prosedur rekursi diatas akan diproses sebanyak 9 kali, yaitu memanggil


dirinya sendiri.

LATIHAN SOAL :
1) Buatlah program dengan prosedur menggunakan (procedure tanpa
parameter, parameter masukan, parameter keluaran, dan parameter masukan dan
keluaran), untuk menghitung:
a. Luas segitiga
b. Luas dan Keliling persegipanjang
c. Luas dan keliling lingkaran
d. Rata-rata bilangan bulat
e. Nilai maksimum dari dua variabel x dan y

2) Buatlah program dengan prosedur untuk menghitung upah


karyawan. Upah karyawan dihitung berdasarkan jumlah jam kerjanya. Satu jam
kerja dihargai Rp 2000. Jika jumlah jam kerjanya lebih dari 48 jam, maka
kelebihannya dihitung sebagai jam lembur dengan upah Rp 3000/jam lembur.

3) Buatlah program dengan prosedur untuk menukar nilai dari X dan


Y, dengan menggunakan parameter masukan/keluaran ?

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 43


9. FUNCTION
Fungsi adalah modul program yang return (mengembalikan) sebuah nilai.
Jenis parameter pada fungsi adalah parameter masukan disebabkan oleh kenyataan
bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi
tersebut untuk menghasilkan nilai.
Function digunakan untuk melakukan operasi matematika seperti perhitungan
faktorial.
Suatu function:
- Dimulai dengan kata kunci function
- Strukturnya sama dengan sebuah procedure
- Didalam fungsi, suatu nilai dihasilkan dengan nama function
- Suatu function dipakai pada didi sebelah kanan pada suatu ekspresi
- Hanya menghasilkan tipe data sederhana.

SYNTAX Algoritma:
Function Nama (deklarasi variabel):tipe_data_hasil
Deskripsi
...
...
pernyataan
...
...

SYNTAX Program:

Function Nama (deklarasi variabel):tipe_data_hasil;


Begin
...
...
pernyataan
...
...
end;

Contoh:
Function ADD_TWO (nilai1,nilai2:integer):integer;
Begin
ADD_TWO:=nilai1 + nilai2;
end;

Contoh berikut menggambarkan bagaimana memanggil function,


Result :=ADD_TWO (10,20);

Maka, ketika ADD_TWO dieksekusi, dia menghitung nilai yang terdapat di dalamnya
(dalam hal ini 30), yaitu hasil akhirnya.
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 44
Contoh:
Program contoh_fungsi;
Uses crt;
Var angka,jawaban:integer;

Function kubik(x:integer):integer;
Begin
Kubik:=x*x*x;
End;
Begin
Writeln(‘Masukkan angka : ‘);
Readln(angka);
Jawaban:=kubik(angka);
Writeln(‘Hasil pangkat tiga dari ‘,angka,’ adalah ‘, jawaban);
End.

Contoh:
Program faktorial_fungsi;
Uses crt;
Var x:integer;
Function faktorial(n:integer):integer;
Begin
If n<2 then
Faktorial:=1
Else
Faktorial:=n*faktorial(n-1);
End;
{program utama}
Begin
Writeln(‘Masukkan nilai : ‘);readln(x);
Writeln(x, ‘! Adalah ‘,faktorial(x));
End.

Contoh:
function pangkat(a:real;b:integer):real;
var i:integer;
hasil:real;
begin
hasil:=1;
for i:=1 to abs(b) do
hasil:=hasil*a;
if b<0 then hasil:=1/hasil;
pangkat:=hasil;
writeln('Hasil = ',hasil:4:0);
end;
var x:real;
y:integer;
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 45
begin
write('masukkan nilai x = ');readln(x);
write('masukkan nilai y = ');readln(y);
pangkat(x,y);
end.

Contoh:
uses crt;
var der,tangen:real;
function tan(var x:real):real;
begin
tangen:=(sin(x/57.2985)) / (cos(x/57.2985));
end;
{program utama}
begin
clrscr;
write('masukkan besar sudut yang diukur = ');readln(der);
tan(der);
writeln('nilai tangen dari ',der:2:2,' derajat adalah ',tangen:4:3);
readln;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 46


10. SET dan RECORD

SET
- Adalah suatu kumpulan dari objek yang mempunyai urutan dan dianggap
sebagai satu kesatuan.
- Anggota dari Set berbentuk tipe sederhana yaitu tipe ordinal (integer, boolean,
cnvbcchtyhhgfdsahar, skalar kecuali real).
- Jumlah maksimum dari elemen di dalam Set adalah 256, bernilai dari 0 – 255.

Pembentukan Set
Terdiri dari satu atau lebih elemen atau jangkauan dari elemen yang dipisahkan
dengan koma dan diletakkan di antara kurung bracket atau siku [ & ].

Contoh :

{penggunaan set}
uses crt;
type bilangan=set of byte;
var union,irisan,kurang,a,b,op1,op2,op3:bilangan;
j:byte;
begin
clrscr;
a:=[1,2,3,4];
b:=[3,4,5,6,7];
union:=a+b;
irisan:=a*b;
kurang:=a-b;

op1:=union;
op2:=irisan;
op3:=kurang;

write('A = { ');
for j:=0 to 57 do
if a*[j]=[j] then
write(j,' ');
writeln('}');
writeln;
writeln;
write('B = { ');
for j:=0 to 57 do
if b*[j]=[j] then
write(j,' ');
writeln('}');
writeln;
writeln;
write('Union = { ');
for j:=0 to 57 do
if op1*[j]=[j] then
write(j,' ');
writeln('}');
writeln;
writeln;
write('Irisan = { ');
for j:=0 to 57 do
if op2*[j]=[j] then
write(j,' ');
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 47
writeln('}');
writeln;
writeln;
write('Kurang = { ');
for j:=0 to 57 do
if op3*[j]=[j] then
write(j,' ');
writeln('}');
readln;
end.

RECORD
- Kumpulan elemen-elemen data yang digabungkan menjadi satu kesatuan.
- Elemen data tersebut disebut dengan field.
- Field data dapat memiliki tipe data yang sama atau berbeda.
Misalnya:
Record mahasiswa yang terdiri dari field-field NIM, Nama, Alamat, IPK.

Deklarasi Record
Bentuk umum:
Type <nama record> = record
<data field1>:<tipe1>
<data field2>:<tipe2>
............
<data fieldN>:<tipeN>
end;
var
<nama variabel>: <nama record>;

Pemakaian Record

Pengenal-record.pengenal-field[pengena-file]

Harus ditulis nama record beserta dengan fieldnya yang dipisahkan dengan tanda titik
(.).
Misalnya: Ingin menulis Nim seorang mahasiswa ke layar maka penulisannya,

Write(mahasiswa.NIM);

Atau dapat menggunakan kata baku With-do.

With mahasiswa do
Write(NIM);

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 48


Contoh1:
{penggunaan record}
{Record data mahasiswa}
program contoh1;
uses crt;
type mahasiswa=record
Nama:string[30];
NIM:string[10];
Alamat:string[50];
IPK:real;
end;
var mhs:mahasiswa;
begin
clrscr;
write('Nama : ');readln(mhs.Nama);
write('NIM : ');readln(mhs.NIM);
write('Alamat : ');readln(mhs.Alamat);
write('IPK : ');readln(mhs.IPK);
writeln;
writeln('------------------------------');
writeln('Nama : ',mhs.Nama);
writeln('NIM : ',mhs.NIM);
writeln('Alamat : ',mhs.Alamat);
writeln('IPK : ',mhs.IPK:3:1);
end.

Contoh2:
{penggunaan record}
{Record data mahasiswa menggunakan With}
program contoh2;
uses crt;
type mahasiswa=record
Nama:string[30];
NIM:string[10];
Alamat:string[50];
IPK:real;
end;
var mhs:mahasiswa;
begin
clrscr;
with mhs do
begin
write('Nama : ');readln(Nama);
write('NIM : ');readln(NIM);
write('Alamat : ');readln(Alamat);
write('IPK : ');readln(IPK);
writeln;
writeln('------------------------------');
writeln('Nama : ',Nama);
writeln('NIM : ',NIM);
writeln('Alamat : ',Alamat);
writeln('IPK : ',IPK:3:1);
end;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 49


Contoh3:
{penggunaan record}
{menghitung luas dan keliling lingkaran}
program contoh3;
uses crt;
type hasil=record
jari:real;
kel:real;
luas:real;
end;
var lingkaran:hasil;
begin
clrscr;
write('Masukkan jari-jari lingkaran : ');readln(lingkaran.jari);
lingkaran.luas:=pi * lingkaran.jari*lingkaran.jari;
lingkaran.kel:=2 * pi * lingkaran.jari;
writeln('Luas = ',lingkaran.luas:4:1);
writeln('Keliling = ',lingkaran.kel:4:1);
end.

Contoh4:
{penggunaan record}
{menghitung luas dan keliling lingkaran}
program contoh4;
uses crt;
type hasil=record
jari:real;
kel:real;
luas:real;
end;
var lingkaran:hasil;
begin
clrscr;
with lingkaran do
begin
write('Masukkan jari-jari lingkaran : ');readln(jari);
luas:=pi *jari*jari;
kel:=2 * pi*jari;
writeln('Luas = ',luas:4:1);
writeln('Keliling = ',kel:4:1);
end;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 50


11. Larik / Array

1. Pendahuluan
Suatu array adalah sebuah struktur data yang terdiri atas banyak variabel dengan
tipe data sama, dimana masing-masing elemen variabel mempunyai nilai indeks.
Setiap elemen array mampu untuk menyimpan satu jenis data (yaitu: variabel). Suatu
array dinyatakan dengan type, sehingga variabel yang bekerja akan dinyatakan
dengan:
Contoh type
A = array [1..10] of integer;

1 2 3 4 5 6 7 8 9 10

atau
Sekumpulan data bertipe sama yang diakses berdasarkan indeksnya.
data_nilai

2.0 4.0 6.0 8.0 Kumpulan 4 data bertipe real

1 2 3 4

Deklarasi dalam kamus:


data_nilai : array[1..4] of real
Deskripsi
data_nilai[1]2.0
data_nilai[2]4.0
data_nilai[3]6.0
data_nilai[4]8.0

Contoh:
Array Satu Dimensi

1. Definisikan tabel di bawah ini, dalam bentul array :


Nama Nilai
Ani 80
Ana 90
Edi 100

Algoritma NilaiMahasiswa
Deklarasi
Nama : array[1..3] of string
Nilai : array[1..3] of integer
Deskripsi
Nama[1]  'Ani'
Nama[2]  'Ana'
Nama[3]  'Edi'
Nilai[1]  80
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 51
Nilai[2]  90
Nilai[3]  100
Write(Nama[1],Nilai[1])
Write(Nama[2],Nilai[2])

2. Diketahui 5 buah bilangan sebagai berikut : 10 9 11 13 17, simpanlah data-data


tersebut ke dalam array ?

Algoritma SimpanData
Deklarasi
Data : array[1..5] of integer
i : integer
Deskripsi i Data[i] Write(Data[i])
1 Data[1]10 10
For i1 to 5 do
2 Data[2]9 9
Read(Data[i]) 3 11
Data[3]11
Endfor 4 Data[4]13 13
5 Data[5]17 17
For i1 to 5 do
Write(i, Data[i])
Endfor

3. Buatlah algoritma dengan menggunakan array untuk melakukan operasi


penjumlahan bilangan : 1+2+3+4+5=15

Algoritma Jumlah_bilangan
Deklarasi
Bilangan : array[1..5] of integer
Jumlah, i : integer
Deskripsi
Jumlah 0
For i1 to 5 do
Read(Bilangan[i])
Jumlah Jumlah+Bilangan[i]
Endfor
Write('Jumlah bilangan = ',Jumlah)

4. Buat algoritma dengan menggunakan array untuk menghitung nilai rata-rata dari
1+2+3+4+5=15

Algoritma Rata_bilangan
Deklarasi
Bilangan : array[1..5] of integer
Jumlah, i : integer
Rata : real
Deskripsi
Jumlah 0
For i1 to 5 do
Read(Bilangan[i])
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 52
Jumlah Jumlah+Bilangan[i]
Rata Jumlah/i
Endfor
Write('Rata-rata bilangan = ',Rata:4:2)

5. Buatlah algoritma dengan menggunakan array untuk menghitung Nilai Akhir tiap
mahasiswa sebanyak 5 kali.

Algoritma HitungNA
Deklarasi
NIM : array[1..5] of integer
Nama : array[1..5] of string
UTS, UAS, Tugas : array[1..5] of string
N_Akhir : array[1..5] of real
i : integer
Deskripsi
For i1 to 5 do
Read(NIM[i], Nama[i], UTS[i], UAS[i],Tugas[i])
N_Akhir[i] (0.35*UTS[i])+ (0.45*UAS[i])+ (0.20*Tugas[i])
Write((NIM[i], Nama[i], UTS[i], UAS[i],Tugas[i], N_Akhir[i])
Endfor

6. Buatlah algoritma untuk menghitung Rata-rata dari N buah bilangan dengan


menggunakan procedure

Penyelesaian dalam Algoritma


Algoritma HitungRata
Deklarasi
MaxData=100
Nilai : array[1..MaxData] of integer
i, Jumlah : integer
Rata : real

Procedure InputData(var N : integer)


Deskripsi
For i 1 to N do
Read(Nilai[i])
Endfor

Procedure HitRata(var N : integer)


Deskripsi
Jumlah 0
For i 1 to N do
Jumlah Jumlah+Nilai[i]
Rata Jumlah / N
Endfor
Procedure Tampil(var N : integer)
Deskripsi
Write('Jumlah Data : ', N)
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 53
Write('Jumlah Nilai : ', Jumlah)
Write('Rata-rata Nilai : ', Rata:4:2)

{Utama}
Deskripsi
Read(N)
InputData(N)
HitRata(N)
Tampil(N)

Penyelesaian dalam Program Pascal


Program HitungRata;
uses crt;
const MaxData=100;
var Nilai : array[1..MaxData] of integer;
i,jumlah,N : integer;
Rata : real;

Procedure InputData(var N : integer);


begin
For i:= 1 to N do
Readln(Nilai[i]);
end;

Procedure HitRata(var N : integer);


begin
Jumlah:= 0;
For i:= 1 to N do
Jumlah:= Jumlah+Nilai[i];
Rata:= Jumlah / N;
End;

Procedure Tampil(var N : integer);


begin
Writeln('Jumlah Data : ', N);
Writeln('Jumlah Nilai : ', Jumlah);
Writeln('Rata-rata Nilai: ', Rata:4:2);
End;
begin
clrscr;
Read(N);
InputData(N);
HitRata(N);
Tampil(N);
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 54


Array Dua Dimensi
Umumnya digunakan untuk perhitungan matematika dan statistik seperti matriks,
pengolahan data statistik dan sebagainya.

1. Buatlah algoritma dalam bentuk array dua dimensi untuk mencari penjumlahan
matrik berikut, serta tunjukkan berapa hasilnya?

6 7 9 3 0 1
0 3 5 + 9 18 2 = ?
10 4 0 6 5 12

A B C

Penyelesaian dalam Algoritma


Algoritma PenjumlahanMatrik
Deklarasi
A : array[1..3,1..3] of integer
B : array[1..3,1..3] of integer
C : array[1..3,1..3] of integer
Deskripsi
A[1,1]6
A[1,2]7
A[1,3]9
A[2,1]0
A[2,2]3
A[2,3]5
A[3,1]10
A[3,2]4
A[3,3]0

B[1,1]3
B[1,2]0
B[1,3]1
B[2,1]9
B[2,2]18
B[2,3]2
B[3,1]6
B[3,2]5
B[3,3]12

C[1,1] A[1,1] + B[1,1]


C[1,2] A[1,2] + B[1,2]
C[1,3] A[1,3] + B[1,3]
C[2,1] A[2,1] + B[2,1]
C[2,2] A[2,2] + B[2,2]
C[2,3] A[2,3] + B[2,3]
C[3,1] A[3,1] + B[3,1]
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 55
C[3,2] A[3,2] + B[3,2]
C[3,3] A[3,3] + B[3,3]

Write(C[1,1],C[1,2],C[1,3])
Write(C[2,1],C[2,2],C[2,3])
Write(C[3,1],C[3,2],C[3,3])

SORTING
{Menggunakan pengurutan secara BubleSort}

Program UrutData;
uses crt;
var a:array[1..10] of integer;
c:integer;
i,j:integer;
begin
a[1]:=50;
a[2]:=70;
a[3]:=80;
a[4]:=60;
a[5]:=30;
clrscr;
for i:=1 to 4 do
begin
for j:=i+1 to 5 do
begin
if a[i] > a[j] then
begin
c:=a[i];
a[i]:=a[j];
a[j]:=c;
end;
end;
end;
for i:=1 to 5 do
begin
writeln(a[i]);
end;
readln;
end.

program sort_ascending;
uses crt;
var x,i,j,temp:integer;
data:array[1..100] of integer;

procedure input(var n:integer);


Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 56
begin
for i:=1 to n do
begin
write('inputkan data ke',i,':');
readln(data[i]);
end;
end;

procedure sort_asc(var n:integer);


begin
for i:=1 to n-1 do
begin
for j:=i+1 to n do
begin
if data[j]<data[i] then
begin
temp:=data[j];
data[j]:=data[i];
data[i]:=temp;
end;
end;
end;
end;

begin
clrscr;
writeln('input banyak data untuk diurutkan : ');
readln(x);
clrscr;
input(x);
clrscr;
sort_asc(x);
writeln('Hasil setelah diurutkan:');
for i:=1 to x do
begin
writeln(data[i]);
end;
readln;
end.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 57


12. FILE

1. Kamposisi dari File Teks


File Teks disusun sebagai runtunan beberapa baris
- Tiap Baris terdiri dari runtunan karakter.
- Tiap Baris diakhiri oleh karakter khusus, yaitu END-OF-LINE (EOLN)
- Karakter yang terakhir dari file teks adalah END-OF-FILE (EOF)

- EOF : menerima argumen nama file dan menghasilkan nilai true jika sudah tidak
ada data yang bisa dibaca lagi.
- EOLN : menerima argumen nama file dan menghasilkan nilai true jika sudah tidak
ada lagi data yang bisa lagi dalam satu baris.

2. Operasi pada file teks


Untuk melakukan operasi pada file teks, kita perlu mendeklarasikan suatu variabel
dengan tipe teks seperti berikut :
Var
F : text;

F adalah sembarang variable file teks dan readme adalah nama file teks yang akan dibaca,
pertama kita harus memanggilnya dengan fungsi :
assign(F, ‘README’);

3. Membaca File dan Menampilkannya di Layar


Sebelum kita bisa membaca kita harus membuka file tersebut.

reset (F);

Kita bisa membaca file baris demi baris, misalkan dengan menyatakan suatu variabel
s sebagai string:
readln (F, s);

Setelah selesai membaca keseluruhan teks kita harus menutupnya dengan:


close (F);

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 58


Contoh. (missal kita punya suatu file dengan path ‘D:\file1.txt’)

Program baca_file_teks;
Uses crt;
Var
F : text;
Nama_file : string;
S : string;
Begin
Clrscr;
Write(‘NAMA FILE YANG DIBACA :’);
Readln(nama_file); {menuliskan nama file ‘D:\file1.txt’}
Assign(F, nama_file); {memanggil file}
Reset(F); {membuka file}
While not EOF(F) do {menampilkan seluruh isi file}
Begin
Readln(F,s);
Writeln(s);
End;
Close(F); {menutup file}
End.

4. Menulis File Baru


Kita membuat suatu file teks dengan mengubah kata kunci :
Reset (F); menjadi rewrite (F);

Kemudian : Gunakan readln(F,s) untuk membaca file yang akan dikopi dan
writeln(F,s) untuk menulis ke file tujuan.
Contoh 1.. (missal kita punya suatu file dengan path ‘D:\file1.txt’) dan kita akan
mengkopinya ke file dengan path ‘D:\file1.txt’)

Program baca_tulisfile_teks;
Uses crt;
Var
F, F1 : text;
Nama_file : string;
s : string;
Begin
Clrscr;
Write(‘NAMA FILE YANG DIBACA : ‘);
Readln(nama_file); {menuliskan nama file ‘D:\file1.txt’}
Assign(F, nama_file); {memanggil nama file}
Reset(F); {membuka file}
Assign(F1, ‘D:\file2.txt’); {memanggil file}
Rewrite(F1);
While not EOF (F) do
Begin
Readln(F,s); {membaca seluruh isi file}
Writeln(F1,s); {mengkopi isi file1.txt ke file2.txt}
End;
Close(F); {menutup file file1.txt}
Close(F1); {menutup file file1.txt}
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 59


Contoh 2. membuat file baru
Program buat_file_baru;
Uses crt;
Var
F : text;
s : string;
Begin
Clrscr;
Write(‘Nama file yang akan dibuat : ‘); Readln(s);
Assign(F, s); {mulai proses}
Rewrite(F); {membuat file baru}
Writeln(‘Mulai mengetikkan teks.’);
Writeln(‘Untuk berhenti : tekan enter, spasi dan enter.’);
While s<>‘ ‘ do
Begin
Readln(s); {tulis sampai selesai}
Writeln(F,s);
End;
Close(F); {menutup file}
End.

Catatan : statement rewrite(variable_teks) apabila diterapkan pada file yang sudah ada
akan menyebabkan isi file terhapus dan mulai membuat yang baru, maka untuk
menambahkan teks pada file yang sudah ada digunakan kata kunci
append(variable_teks)

5. Error pads Pembacaan File


Untuk mengatasi error pada pembacaan file teks digunakan error-handling, yaitu :

{ $SI-} - - > membuat Pascal stabil


: - - > proses pada file
{ $SI+}  deteksi terhadap error

Error dapat di deteksi dengan memanggil fungsi IOResult. Jika IOResult adalah 0,
maka tidak terjadi error.
Contoh :
Program coba_error;
Uses crt;
Var
F : text;
S : string;
Begin
Clrscr;
Write(‘Input file name to read : ‘); readln(s);
Assign(F,s);
{$SI - }
Reset(F);
{$SI + }
If IOResult <> 0 then
Begin
Writeln(‘terjadi kesalahan pada pembacaan file’, s);
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 60
Halt;
End;
While not EOF (F) do
Begin
Readln(F,s);
Writeln(s);
End;
Close(F);
End.

6. Jenis Error pada Pembacaan File


IOResult dapat menghasilkan jenis kesalahan pada pembacaan file, seperti contoh.

:
{$SI - }
Reset (F);
{$SI + }
n:=IOResult;
If n<>0 then
Begin
Writeln(‘terjadi kesalahan pada pembacaan file’, s);
Case n of
2: writeln (‘File tidak ketemu’);
3: writeln (‘lokasi tidak ketemu’);
4: writeln (‘terlalu banyak file yang dibuka’);
5: writeln (‘akses file ditolak’);
100: writeln (‘salah membaca disk’);
101: writeln (‘salah menulis disk’);
150: writeln (‘Disk diproteksi’);
152: writeln (‘drive tidak ada’);
154: writeln (‘CRC error di data’);
156: writeln (‘pencarian disk salah’);
157: writeln (‘media tidak dikenal’);
162: writeln (‘kerusakan hardware’);
Else writeln (‘pokoknya salah’);
End;
Halt;
End.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 61


SOAL LATIHAN

1. Jelaskan apa perbedaan antara Variabel dan Konstanta, berikan contohnya ?


2. Uraikan dengan singkat mengenai perbedaan statement While dan Repeat,
berikan contoh masing-masing.
3. Jelaskan perbedaan statement For-to-do dengan For-downto, berikan
contohnya?
4. Bagaimana hasil tampilan dari program berikut :
uses crt;
Var A,B,C:integer;
I,J,K:real;
D,E,F:real;
Begin
clrscr;
A:=2; B:=4;
C:=6; I:=2.0;
If A<=C Then
Begin
A:=A * 2;
B:=B + A;
I:=C + B + I;
End
Else If B>C Then
C:=A+B
Else
D:=I+B;
D:= A + B; E:= A * D;
F:= E + D;
Writeln('Nilai A : ',A);
Writeln('Nilai C : ',C);
Writeln('Nilai E : ',E:2:0);
End.

5. Buatlah program pascal untuk menentukan nilai rata-rata kelas untuk mata
kuliah Pascal, bagi mahasiswa sejumlah 50 orang ?
6. Sebuah akademi militer mengadakan saringan pertama dalam penerimaan
calon mahasiswa baru. Syarat yang harus dipenuhi adalah :
a. untuk pria : - tinggi min. 165 cm
- umur min. 18 tahun
b. untuk wanita : - tinggi min. 160 cm
- umur min. 17 tahun
Buatlah algoritma beserta program pascalnya untuk menentukan apakah seseorang
calon mahasiswa diterima atau ditolak.
7. Dibaca N buah bilangan bulat. Buatlah program untuk menghitung jumlah
nilai bilangan yang genapnya saja.
8. Buatlah program untuk menghitung nilai ab dengan menggunakan function ?
9. Buatlah program untuk menampilkan anggota irisan dan gabungan dari
himpunan SET berikut :
A=[2,3,6,7,8,9]; B=[7,8,3,10,13,11]
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 62
10. Buatlah program untuk mencatat dan menampilkan data buku perpustakaan.
Yang fieldnya terdiri dari nomor buku, jenis buku, nama buku, judul buku, nama
pengarang, penerbit, tahun terbit. Dengan ketentuan :
Jika jenis buku ‘A001’ maka nama buku ‘SEJARAH’
Jika jenis buku ‘A002’ maka nama buku ‘EKONOMI’
Jika jenis buku ‘A003’ maka nama buku ‘KOMPUTER’
Jika jenis buku ‘A004’ maka nama buku ‘GRAFIS’
Jika jenis buku ‘A005’ maka nama buku ‘MATEMATIKA’
11. Buatlah program untuk mengurutkan data berikut : 70 30 20 40 60 90
12. Buatlah program pascal untuk menghitung nilai rata-rata n buah bilangan
dengan menggunakan struktur perulangan yang Anda ketahui ?
13. Studi kasus :
Sekolah ‘XYZ’ merencanakan untuk menghitung nilai akhir untuk menghitung
masing-masing siswa yang jumlahnya 10 orang.
Input : Nim, Nama, Alamat, Kehadiran, Tugas, Quiz, UTS, UAS
Algoritma :
- Untuk menghitung nilai akhir (NA) yang rumus :
NA = ((Kehadiran + ((Tugas + Quiz)/2))*20%) + (UTS*35%) + (UAS*45%)
- Untuk menentukan huruf mutu (HM) dengan formula sebagai berikut:
HM = A -> 85 – 100
HM = B -> 70 – 84
HM = C -> 60 – 69
HM = D -> 50 – 59
HM = E <- 50
PASCAL:
Buatlah programnya dari algoritma diatas dan tampilkan outputnya sesuai
dengan tabel berikut :
No Nama Siswa Nilai Akhir Huruf Mutu
1 ......................... ......................... .........................
2 ......................... ......................... .........................
3 ......................... ......................... .........................
. . . .
. . . .
10 . . .

Asumsi:
- Untuk Kehadiran, nilai yang diinputkan berkisar 1..10
Jika 1 x kehadiran dihitung untuk nilai kehadirannya 10
Jika 2 x kehadiran dihitung untuk nilai kehadirannya 20
14. Buatlah program pascal untuk menampilkan deret berikut :
(1 – 2) + (2 – 3) + (3 – 4) + (4 – 5) + ... (sebanyak 10 data)
15. Buatlah program pascal dengan spesifikasi berikut:
Input : Nip, Nama, Gol, Status, Jml_anak (sebanyak 10 data)
Proses :
Gol = A, gaji=20000
Gol = B, gaji=30000
Gol = C, gaji=40000
Status = K, mendapat tunjangan 10% dari gaji
Status = T, tidak mendapat tunjangan
Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 63
Setiap anak mendapat tunjangan 1% dari gaji
Pajak 5%
Total = (gaji + tunjangan + tunjangan_anak) – pajak
Output : Tampilkan kembali seluruh karyawan yang pernah diinputkan dari total
gaji keseluruhan pegawai.

Algoritma dan Pemrograman by Ova Nurisma Putra, S.T., M.Kom. 64

Anda mungkin juga menyukai