PENDAHULUAN
A. Pengertian Algoritma.
Seorang yang pertama kali akan menyelesaikan pekerjaannya
dengan menggunakan jasa komputer akan selalu mempunyai kesan
bahwa usaha pertama yang perlu dilakukan adalah memahami bahasa
komputer. Kesan ini sebenarnya kurang tepat. Hal utama adalah
menemukan metode penyelesaiannya. Apabila metodenya telah
ditetapkan, usaha lanjut merupakan pekerjaan rutin yaitu, menuliskan
pekerjaan tersebut ke dalam bahasa komputer, apakah dalam bahasa
COBOL, PASCAL, FORTRAN, BASIC, atau bahasa rakitan (assembly
language). Bagian yang sangat penting untuk suksesnya pekerjaan
terletak pada usaha membuat urutan/langkah penyelesaian secara rinci.
Usaha ini disebut menulis ALGORITMA bagi program komputer.
Algoritma yang ditulis ke dalam bahasa komputer disebut
PROGRAM. Kalimat “algorithm” diambil dari nama seorang
matematikawan yang juga seorang astronomi berkebangsaan Arab, AL-
KHOWARIZMI yang hidup di abad ke 19, beliau dikenal sebagai
pengarang buku matematika yang membahas manipulasi angka-angka
beserta rumusan-rumusan aljabarnya.
Sekarang, algoritma baik sebagai aturan-aturan aljabar untuk
menghitung angka-angka, maupun sebagai manipulasi simbol-simbol
dalam aljabar. Sifat perintah yang dapat dianggap sebagai algoritma
ditentukan oleh kelengkapan perintah tersebut. Karena komputer bukan
manusia, faktor kecerdikan tidaklah dikenal. Komputer hanya mampu
bekerja tidak lebih dan tidak kurang mengeksekusi program dengan
menelusuri perintah-perintah yang dibuat dalam suatu program.
Definisi Algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian
masalah yang disusun secara sistematis dan logis”.
Penulisan Algoritma
• Dalam bahasa natural (Bahasa Indonesia, Bahasa Inggris, dan
bahasa manusia lainnya)
Tapi sering membingungkan (ambiguous)
Contoh:
– Buat sebuah algoritma untuk mencetak tulisan “SOLO BERSERI”
sebanyak lima baris dilayar komputer.
Mulai
X=0
X=X+1
Cetak
“SOLO BERSERI
T
X=5
Selesai
4
Program Coba;
Var X : Integer;
Begin
X:=0;
Repeat
Begin
X:=X+1;
Writeln(‘SOLO BERSERI’);
End;
Until X=5
End.
D. Bagan Alir/Flowchart
GARIS ALIR
Arah aliran program
(FLOW LINE)
Proses
PREPARATION inisialisasi/pemberian
harga awal
Proses perhitungan/proses
PROSES
pengolahan data
PREDEFINED
Permulaan sub
PROCESS
program/proses
(SUB
menjalankan sub program
PROGRAM)
Perbandingan pernyataan,
penyeleksian data yang
DECISION
memberikan pilihan untuk
langkah selanjutnya
Penghubung bagian-
ON PAGE
bagian flowchart yang
CONNECTOR
berada pada satu halaman
Penghubung bagian-
OFF PAGE bagian flowchart yang
CONNECTOR berada pada halaman
berbeda
9
Mulai
Beri
nilai
awal
Total
Baca
Data
Hitung
Total
T
Data
sudah
habisY
Hitung Rata-rata
Tampilkan hasil
Total dan Rata-rata
Selesai
10
Mulai
Total=0
I=0
I = I +1
Baca N
Baca X
Total=Total+X
T
I=N
Rata=Total/N
Cetak Total
dan Rata
Selesai
11
BAB II
PENGANTAR PEMROGRAMAN PASCAL
A. Pendahuluan
Selesai membuat algoritma atau bagan alir, langkah selanjutnya
adalah membuat program komputer. Program ini dapat dibuat dalam
bahasa pemrograman, misalnya: Cobol, Fortran, Basic, Pascal dan
sebagainya. Menulis program komputer merupakan bagian dari seri
tahapan kerja di dalam siklus pengembangan program. Urutan dari siklus
tahapan kerja pengembangan program ini adalah:
1. Merencanakan sistem spesifikasi program.
Tahapan ini termasuk menjelaskan masalah dalam rumusan dasarnya,
ekspresi persamaan matematikanya dan bentuk hasil yang
diharapkan.
2. Membuat prosedur logika (algoritma/bagan alir)
3. Membuat program berdasarkan penjelasan algoritma/bagan
alir program.
4. Memeriksa dan melakukan eksekusi program
5. Membuat dokumentasi program dan keluaran dari eksekusi
program.
Di dalam tahapan, pemrogram (progammer) harus menguasai
aturan baku yang sudah merupakan standar untuk berkomunikasi
dengan komputer, misalnya bahasa apa yang akan digunakan, jenis
komputer apa, dan peralatan lain yang akan digunakan.
Sebelum dapat menjalankan suatu program pada komputer,
diperlukan persiapan menulis prosedur pekerjaan dan algoritma atau
bagan alir ke dalam bahasa komputer. Pascal merupakan salah satu
bahasa komputer tingkat tinggi. Mempelajari bahasa Pascal
sesungguhnya merupakan pengenalan bahasa yang baru untuk tujuan
mempelajari aturan konstruksi bahasa agar dapat dipakai sebagai media
komunikasi dengan komputer.
Kegagalan suatu program terjadi jika susunan atau aturan
instruksi yang digunakan terlalu rumit, untuk itu perlu dituliskan dulu
algoritma/bagan alir yang jelas dan benar. Penulisan bagan alur
(flowchart) merupakan persyaratan yang perlu guna menghindari
kesalahan dalam program. Pertimbangan berikut dapat menjadi acuan
untuk penulisan program yang baik:
1. Program harus mudah dibaca dan mudah dipahami.
2. Menulis kelompok perintah untuk satu bagian penyelesaian
pekerjaan dengan tata penulisan tertentu mulai dari kolom yang
berbeda dari kelompok perintah lainnya. Ini mempermudah usaha
perbaikan apabila terjadi kesalahan.
3. Tentukan dulu program penyajian data (masukan/keluaran)
untuk memudahkan pemeriksaan.
4. Penulisan program sebaiknya berbentuk subprogram guna
mengurangi kemungkinan kesalahan.
5. Usahakan program yang sifatnya dapat disisipi, sehingga pada
percobaan eksekusi program akan mudah memeriksa bagian yang
keliru.
12
CONST
TYPE
VAR
PROCEDURE
FUNCTION
Bagian pernyataan
BEGIN
Pernyataan;
Pernyataan;
END.
Program yang paling sederhana dari pascal adalah hanya terdiri dari
sebuah bagian pernyataan saja (statement part) yang diawali dengan
kata cadangan (reserved word) BEGIN diakhiri END.
Judul
PROGRAM nama_program;
PROGRAM Contoh;
Deklarasi
Deklarasi Label
Contoh:
Program Contoh_label;
Label
10, 100, selesai;
Begin
Writeln(‘Selamat Datang’);
Writeln(‘Di Kota Sala Berseri’);
Goto 100;
10:
Writeln(‘Kota Nyaman’);
Writeln(‘sejuk dan Indah’);
Goto selesai;
100:
Writeln(‘Berseri bebas Korupsi’)
Writeln(‘Berseri bebas polusi’’);
Goto 10;
Selesai:
End.
14
Deklarasi Konstanta
Konstanta adalah suatu besaran yang nilainya tidak berubah-ubah.
Deklarasi Konstanta digunakan apabila program menggunakan identifier
yang berisi nilai-nilai konstanta, maka harus didefinisikan terlebih
dahulu.
Contoh :
Program Contoh_Kontanta;
Const
Gaji:=200000;
Pph:=0.1;
Nama:=’Senopati Pamungkas’;
Begin
Writeln(‘Nama Pegawai : ‘,nama);
Writeln(‘Gaji Pokok : ‘,gaji);
Writeln(‘Pajak : ‘,Pph);
End.
Deklarasi Variabel
Variabel adalah suatu besaran yang nilainya dapat berubah-ubah.
Variabel yang akan digunakan di dalam program harus didefinisikan
terlebih dahulu.
Contoh:
Program Contoh_variabel;
Var
Total,Gaji,Tunjangan : Real;
Anak : Integer;
Nama, Keterangan : String[25];
Begin
Gaji := 100000;
Anak := 2;
Tunjangan := 0.25 * Gaji + anak * 300000;
Total := Gaji + Tunjangan;
Nama := ‘Budiman’;
Keterangan := ‘Karyawan Teladan’;
Writeln(‘Nama Pegawai : ‘,nama);
Writeln(‘Jumlah anak : ‘,anak);
Writeln(‘Gaji Pokok : ‘,gaji);
Writeln(‘Tunjangan : ‘,Tunjangan);
Writeln(‘Total : ‘,Total);
Writeln(‘Keterangan : ‘,Keterangan);
End.
Deklarasi Type
Deklarasi Type merupakan salah satu usaha pembatasan nilai awal
maupun nilai akhir berlakunya data. Pemrogram menggunakan
pernyataan Type untuk menyatakan suatu variabel yang berjenis lain
diluar jenis baku yang diberikan.
Contoh:
15
Program Contoh_Type;
Type
Hari = (Senin,Selasa,Rabu,Kamis,Jumat,Sabtu,Minggu);
Var
nm_hari : Hari;
N : 1..7;
ket : string;
Begin
Write('Hari yang ke : ');readln(n);
nm_hari:=Hari(n);
Case nm_hari of
Senin,Selasa,Rabu,Kamis,Jumat,Sabtu : ket:='Hari Kerja'
else
ket:='Hari Libur';
end;
writeln('Hari tersebut adalah hari ',ket);
readln;
end.
Deklarasi Procedure
Procedur merupakan bagian yang terpisah dari suatu program, dan
dapat diaktifkan dimanapun di dalam suatu program.
Contoh:
Program Contoh_Procedure;
Procedure HITUNG(A,B,C:Integer; Var Hasil : Integer);
Begin
Hasil : A+B+C;
End;
{------Program Utama--------}
Var Z : Integer;
Begin
HITUNG(2,3,4,Z);
Writeln(‘Hasil 2+3+4 = ‘,Z:3)
End.
Deklarasi Fungsi
Fungsi merupakan bagian yang terpisah dari suatu program dan dapat
diaktifkan dimanapun di dalam suatu program seperti Deklarasi
Procedure.
Contoh:
Program Contoh_Function;
Function HITUNG(A,B:Integer): Integer;
16
Begin
Hasil : A+B;
End;
{------Program Utama--------}
Var Z : Integer;
Begin
Writeln(‘Hasil 2+3 = ‘,HITUNG(2,3):3);
End.
a. Operator Dasar
ARTI NOTASI
Penambahan +
Pengurangan -
Perkalian *
Pembagian /
b. Operator Pembanding
c. Operator Boolean
NOTASI ARTI
AND Dan
OR Atau
NOT bukan
d. Fungsi Hakiki.
BAB III
TYPE DATA DALAM PEMROGRAMAN PASCAL
1. Sederhana
2. Terstruktur
3. Pointer
Tipe
Subrange Terbilang
Ordinal Real
a. Tipe Ordinal
Tipe data Integer adalah bilangan bulat atau tipe data yang
nilainya tidak mempunyai titik desimal. Pada Pascal tipe data
numeric ada 2 yaitu Integer dan Real.
Contoh:
Program Contoh_integer;
Var
X, Y : Integer;
Begin
X:=10;
Y:=X*5;
Writeln(‘Nilai Y : ‘,Y:3);
End.
Program Contoh_tipe_Char;
Var
Huruf: Char;
Begin
Huruf:=’A’;
Writeln(‘Huruf yang diinginkan : ‘,huruf);
End.
21
Contoh:
Program Type_Boolean;
Var lagi : boolean;
begin
Lagi:=false;
Writeln('Nilai lagi adalah : ',lagi);
if lagi=true then
writeln('Nilai lagi benar')
else
writeln('Nilai lagi salah');
readln;
end.
Data tipe Real adalah bilangan yang berisi titik desimal atau
bilangan nyata. Dalam Pascal paling sedikit harus ada satu digit
sebelumnya dab sesudahnya titik desimal tidak boleh ada koma
(pembatas tanda desimal adalah titik bukan koma) dan nilainya
dapat positif atau negatif. Dalam Pascal terdapat lima macam tipe
data Real, yaitu: Real, single, double, extended dan comp. Untuk
jelasnya dibawah ini ditunjukan batasan-batasan nilai tipe data
real.
Contoh:
Program Type_Data_Real;
Var
Nilai : Real;
Begin
Nilai := 1100.55;
Writeln(‘Nilai yang tercetak : ‘,nilai:6:2);
End.
a. Tipe Terbilang
Tipe data terbilang merupakan tipe data skalar (ordinal). Ini berarti
nilainya berurutan, urutan nilainya sesuai dengan tipe data yang
dideklarasikan.
Contoh:
Program coba;
type
bulan =(Jan,Feb,Mar,Apr,Mei,Jun,Jul,Agt,Sep,Okt,Nop,Des);
var
x:bulan;
x1:Integer;
begin
write('Masukan Bulan : ');readln(x1);
x:=bulan(x1-1);
case x of
Jun..Agt : writeln('Bulan Panas');
else
writeln('Bulan tidak Panas');
end;
readln;
end.
Contoh 1 :
Program Tipe_Data_Subrange;
Type
Nilai = 1..4;
Var
Angka: nilai;
Begin
Angka:=3;
Writeln(‘Nilai angka : ‘,angka);
End.
Contoh 2:
Program coba;
uses crt;
type
bulan =(Jan,Feb,Mar,Apr,Mei,Jun,Jul,Agt,Sep,Okt,Nop,Des);
var
x:bulan;
x1:1..12;
begin
clrscr;
write('Masukan Bulan : ');readln(x1);
x:=bulan(x1-1);
case x of
Jun..Agt : writeln('Bulan Panas');
else
writeln('Bulan tidak Panas');
end;
readln;
end.
Contoh:
Program Tipe_string;
Var
NAMA : STRING[20];
ALAMAT=STRING;
BEGIN
NAMA:=’BUDIMAN’;
ALAMAT:=’JL. KUTILANG NO.12 SURAKARTA’;
WRITELN(‘NAMA : ‘,NAMA);
WRITELN(‘ALAMAT : ‘,ALAMAT);
END.
b. Untuk tipe data Array, Record dan File akan dibahas secara
khusus pada bab selanjutnya.
25
BAB IV
MASUKAN, KELUARAN, LOGIKA PERCABANGAN DAN PERULANGAN
a. Write
Perintah untuk mencetak hasil pada layar, dan hasilnya dicetak
pada baris yang sama, bukan pada baris berikutnya.
Contoh 1:
Program Coba;
Begin
Write(‘Aku’);
Write(‘dan’);
Write(‘Dia’);
End.
Hasil.
AkundanDia
Contoh 2:
Program Coba;
Begin
Write(‘2 + 3 = ’);
Write(2+3);
End.
Hasil.
2+3=5
b. Writeln
Jika Write adalah untuk mencetak hasil pada layar, dan hasilnya
dicetak pada baris yang sama, maka Writeln adalah mencetak
hasil pada layar pada baris berikutnya.
26
Contoh 1:
Program Coba;
Begin
Writeln(‘Aku’);
Writeln(‘dan’);
Writeln(‘Dia’);
End.
Hasil.
Aku
dan
Dia
Contoh 2:
Program Coba;
Begin
Write(‘Solo Berseri’);
Writeln(‘Memang Indah’);
Writeln(‘Nyaman Sekali’);
End.
Hasil.
Solo BerseriMemang Indah
Nyaman Sekali
Read/Readln
Perintah untuk membaca data yang dimasukan oleh sipemakai
(Operator).
Contoh.
Program Coba;
Var
P,L,KL,LS : Integer;
Begin
Write(‘Masukan Panjang = ‘);readln(P);
Write(‘Masukan Lebar = ‘);readln(L);
KL:=2*(P+L);
LS:=P * L;
Writeln(‘Keliling = ‘,KL:3);
Writeln(‘Luas = ‘,LS:3);
End.
Hasil
Masukan Pangan = 10
Masukan Lebar = 5
Keliling = 30
Luas = 50
1. Amir membeli sepatu seharga Rp. 150.000,- sepatu yang dibeli Amir
di diskon 10%. Berapa harga yang harus dibayar oleh Amir.
a. Pecahkan Algoritma dan Flowchart Programnya.
b. Buat Program Pascalnya.
Jawab:
Algoritma Natural.
Mulai
Harga=15000
0
Diskon = 0.1
Potong=Diskon *
Harga
Bayar = Harga -
Cetak
Potong dan
Bayar
Selesai
28
Program Pascal:
Program Latih1;
Uses Crt;
Var
Harga : Integer;
Diskon, Potong, Bayar : Real;
Begin
Harga:=150000;
Diskon:=0.1;
Potong:=Diskon * Harga;
Bayar:=Harga – Potong;
Writeln(‘Harga Sepatu = ‘,Harga:10);
Writeln(‘Diskon = ‘,Potong:8:2);
Writeln(‘Jumlah Bayar = ‘,Bayar:10:2);
End.
Mulai
Input Harga
dan Diskon
Potong=Diskon *
Harga
Bayar = Harga -
Cetak
Potong dan
Bayar
Selesai
29
Program Pascal:
Program Latih1;
Uses Crt;
Var
Harga : Integer;
Diskon, Potong, Bayar : Real;
Begin
Write(‘Masukan harga = ‘);readln(Harga);
Write(‘Masukan Diskon = ‘);readln(Diskon);
Potong:=Diskon * Harga;
Bayar:=Harga – Potong;
Writeln(‘Harga Sepatu = ‘,Harga:10);
Writeln(‘Diskon = ‘,Potong:8:2);
Writeln(‘Jumlah Bayar = ‘,Bayar:10:2);
End.
Jawab:
Algoritma Natural:
Flowchart:
Mulai
UM =
30.000
Bacan
NIP,Nama,
GP
TJ = 10% * GP
GK = GP + TJ
PHT = 5% * GK
GB = GK - PHT
Mulai
Program Pascal:
Program Latih2;
Uses Crt;
Const
UM := 30000;
Var
NIP : String[5];
Nama : String[15];
UM
GP,TJ,GK,PHT,GB : Real;
Begin
Clrscr;
Write(‘No. Induk Pegawai = ‘);readln(NIP);
Write(‘Nama Pegawai = ‘);readln(Nama);
Write(‘Gaji Pokok = ‘);readln(GP);
TJ:=0.10 * GP;
GK:=GP + TJ;
PTH:=0.05 * GK;
GB := GK – PTH;
Writeln(‘Tunjangan = ‘,TJ:10:2);
31
Bentuk umum:
Atau
If Kondisi Then
Begin
Pernyataan, Blok1 pernyataan 1
Pernyataan,
End
Else
Begin
Pernyataan, Blok1 pernyataan 2
Pernyataan,
End;
Artinya :
Jika kondisi benar maka pernyataan1 dijalankan, jika kondisi
salah maka pernyataan2 yang dijalankan.
2. Logika Case Of
Bentuk umum:
Case Var Of
Kondisi1 : Pernyataan1;
Kondisi2 : Pernyataan2;
Else
Pernyataan2;
End;
Atau
Case Var Of
Kondisi1 : Begin
Pernyataan, Blok1 pernyataan 1
Pernyataan,
End;
Kondisi2 : Begin
Pernyataan, Blok1 pernyataan 2
Pernyataan,
End;
Else
Begin
Pernyataan,
Pernyataan, Blok1 pernyataan 3
End;
Artinya :
Jika kondisi benar maka pernyataan1 dijalankan, jika kondisi
salah maka pernyataan2 yang dijalankan.
Contoh Soal:
Jawab:
Algoritma Natural:
Flowchart.
Mulai
Y
HP>=100 DS = 15% *
000 HP
T
DS = 15% *
HP
HB= HP - DS
Cetak DS,
HB
Selesai
34
Program Coba3;
Uses Crt;
Var
Nota : String[5];
HP : Integer;
DS, HB : Real;
Begin
Write(‘No. Kwitansi = ‘);readln(Nota);
Write(‘Harga Beli = ‘);readln(HP);
IF HP>=100000 Then DS:=15/100 * HP;
IF HP<100000 Then DS:=5/100 * HP;
HB:=HP – DS;
Writeln(‘Diskon = ‘,DS:10:2);
Writeln(‘Harga Bayar = ‘,HB:10:2);
Readln;
End.
Atau
Program Coba3;
Uses Crt;
Var
Nota : String[5];
HP : Integer;
DS, HB : Real;
Begin
Write(‘No. Kwitansi = ‘);readln(Nota);
Write(‘Harga Beli = ‘);readln(HP);
IF HP>=100000 Then
DS:=15/100 * HP
Else
DS:=5/100 * HP;
HB:=HP – DS;
Writeln(‘Diskon = ‘,DS:10:2);
Writeln(‘Harga Bayar = ‘,HB:10:2);
Readln;
End.
35
Jawab:
Algoritma Natural.
a). Baca NIP. Pegawai, Nama Pegawai, Golongan
b). Cek Gol untuk menentukan Gaji dan Tunjangan dengan
ketentuan:
Jika Gol = A Gaji Pokok = Rp. 500.000 dan Tunjangan 10% dari
Gaji Pokok
Jika Gol = B Gaji Pokok = Rp. 400.000 dan Tunjangan 7% dari
Gaji Pokok
Jika Gol = C Gaji Pokok = Rp. 300.000 dan Tunjangan 5% dari
Gaji Pokok
c). Hitung Total Gaji (Gaji + Tunjangan)
d). Tampilkan Gaji Pokok, Tunjangan yang Gaji Total.
36
Flowchart.
Mulai
Input NIP,
Nama,
Gol
Y
GOL=’A GP=500.000
’
T
Y
GOL=’B GP=400.000
’
T
GP=300.000
Y
GOL=’A TJ=10% * GP
’
T
Y TJ=7% * GP
GOL=’B
’
T
TJ=5% * GP
GB = GP + TJ
Selesai
37
Program Pascal.
Program coba;
Uses crt;
Var
NIP : STRING[5];
NAMA : STRING[20];
GOL : CHAR;
GP,TJ,GB : REAL;
Begin
clrscr;
Write('N.I.P : ');readln(NIP);
Write('NAMA PEGAWAI : ');readln(NAMA);
Write('GOLONGAN : ');readln(GOL);
IF GOL='A' THEN GP:=500000
ELSE IF GOL='B' THEN GP:=400000
ELSE GP:=300000;
IF GOL='A' THEN TJ:=10/100*GP
ELSE IF GOL='B' THEN TJ:=7/100*GP
ELSE TJ:=5/100*GP;
GB:=GP+TJ;
WRITELN('GAJI POKOK : ',GP:10:2);
WRITELN('TUNJNAGAN : ',TJ:10:2);
WRITELN('GAJI BERSIH : ',GB:10:2);
READLN;
END.
Flowchart:
Mulai
Input NIP,
Nama,
Gol
Y
GOL=’A GP=500.000
’ TJ=10% * GP
T
Y
GOL=’B GP=400.000
’ TJ=7% * GP
GP=300.000
TJ=5% * GP
GB = GP + TJ
Selesai
39
Program Pascal.
Program coba;
Uses crt;
Var
NIP : STRING[5];
NAMA : STRING[20];
GOL : CHAR;
GP,TJ,GB : REAL;
Begin
clrscr;
Write('N.I.P : ');readln(NIP);
Write('NAMA PEGAWAI : ');readln(NAMA);
Write('GOLONGAN : ');readln(GOL);
IF GOL='A' THEN
BEGIN
GP:=500000;TJ:=10/100*GP;
END
ELSE IF GOL='B' THEN
BEGIN
GP:=400000;TJ:=10/100*GP;
END
ELSE
BEGIN
GP:=300000; TJ:=5/100*GP;
END;
GB:=GP+TJ;
WRITELN('GAJI POKOK : ',GP:10:2);
WRITELN('TUNJNAGAN : ',TJ:10:2);
WRITELN('GAJI BERSIH : ',GB:10:2);
READLN;
END.
Program coba;
Uses crt;
Var
NIP : STRING[5];
NAMA : STRING[20];
GOL : CHAR;
GP,TJ,GB : REAL;
Begin
clrscr;
Write('N.I.P : ');readln(NIP);
Write('NAMA PEGAWAI : ');readln(NAMA);
Write('GOLONGAN : ');readln(GOL);
Case GOL Of
'A' : BEGIN; GP:=500000; TJ:=10/100*GP; END;
'B' : BEGIN; GP:=400000; TJ:=10/100*GP; END;
ELSE
BEGIN
GP:=300000; TJ:=5/100*GP;
END;
END;
GB:=GP+TJ;
WRITELN('GAJI POKOK : ',GP:10:2);
WRITELN('TUNJNAGAN : ',TJ:10:2);
WRITELN('GAJI BERSIH : ',GB:10:2);
READLN;
END.
Soal:
1. Hotel Sri Mekar adalah salah satu hotel yang sangat larisdi kota
Sala. Di dalam menentukan tarif kamar kepada setiap pelanggan
diatur dengan ketentuan sebagai berikut:
a). Tarif Kamar
a.1). Kelas Ekonomi
- Kamar jenis A tarif Rp. 20.000,- per hari
- Kamar jenis B tarif Rp. 15.000,- per hari
- Kamar jenis C tarif Rp. 10.000,- per hari
a.2). Kelas VIP
- Kamar jenis A tarif Rp. 60.000,- per hari
- Kamar jenis B tarif Rp. 50.000,- per hari
- Kamar jenis C tarif Rp. 40.000,- per hari
a.3). Kelas Executif
- Kamar jenis A tarif Rp. 100.000,- per hari
- Kamar jenis B tarif Rp. 80.000,- per hari
- Kamar jenis C tarif Rp. 75.000,- per hari
2. Biaya yang harus dibayar oleh setiap pelanggan selama
menginap adalah Tarif Kamar X Lama menginap.
41
C. Mengenal Perulangan/Looping.
Setiap program secara umum dapat ditulis dalam berbagai gaya.
Dengan meningkatnya pengalaman seseorang di dalam menulis
program, bertambah pula pemahamannya tentang cara terbaik dalam
membuat program. Salah satu manfaat utama komputer adalah
keandalannya untuk melakukan eksekusi berulang/looping dari suatu
program. Teknik looping dalam rancangan algoritma program komputer
merupakan mekanisme yang terbanyak digunakan bagi berbagai
masalah komputasi.
Program dengan mekanisme Looping/berulang merupakan proses
yang melakukan eksekusi pada suatu/satu seri/blok pernyataan berulang
kali, dilakukan sampai suatu kondisi yang telah ditentukan terpenuhi.
Di dalam pemrograman dengan Pascal ada tiga dasar logika
utama untuk penulisan program Looping/berulang.
;
Syntax Penulisan:
Repeat
Until <Kondisi>
X=
5
Star
Blok End
While Kondis Do Begin
Perintah
i
Syntax Penulisan:
While <Kondisi> do
Begin
Blok pernyataan dalam
operasi LOOP
End;
Star
To
Ekspresi d Pernyataan
o
Downto
44
Syntax Penulisan:
Begin
Blok pernyataan dalam
operasi LOOP
End;
atau
Begin
Blok pernyataan dalam
operasi LOOP
End;
X=
5
Star
45
Soal:
1). Buatlah suatu algoritma, flowchart dan programnya untuk membuat
deret angka:
a). 1 2 3 4 5 6 7 8 9 10
b). 1 3 5 7 9
c). 10 9 8 6 4 2
Jawab 1 :
Algoritma Natural.
1. Baca X = 0
2. Tambah X dengan angka 1
3. Cek apakah X>10 maka langsung ke langkah No. 6
4. Cetak X
5. Ulangi ke langkah 2
6. Selesai
Flowchart
Mulai Mulai
atau
X= X=
0 1
X=X+1 Cetak X
Y Y
X> Selesai X= Selesai
10 10
T T
Cetak X X=X+1
Dengan For…Do
Program LATIHAN;
uses crt;
46
Var X:Integer;
Begin
clrscr;
For X :=1 to 10 do
Begin
WRITELN(X:3);
End;
READLN;
END.
Soal:
2). Paijo mempunyai uang sebesar Rp. 1.000.000,-. Uang tersebut ditabung
pada Bank dengan bunga 10 % per bulan dengan rumus bunga
berbunga. Buatlah suatu algoritma, flowchart dan program pascalnya
untuk membuat tabel bunga uang Paijo seperti berikut:
Jawab:
Algoritma Natural :
Flowchart Program
Program Latihan;
Uses Crt;
Mulai
47
Var
PK, BG, TOT : Real;
PK=10000 BL : Integer;
0
BL=0,
BG=0
Begin
TOT=0 Clrscr;
Writeln(‘----------------------------------------‘)
;
BL = BL + 1 Writeln(‘Bln Pokok Bunga Total ‘);
TOT=PK+BG Writeln(‘----------------------------------------‘)
;
PK:=100000; BG:=0, TOT:=0;
REPEAT
BEGIN
Cetak BL:=BL+1;
BL, PK, TOT:=PK+BG;
BG,TOT Writeln(Bl:2, PK:10:2,
BG:10:2,TOT:10:2);
END;
UNTIL BL>10;
Writeln(‘----------------------------------------‘
Y );
BL=1 Selesai
0 Realn;
END.
T
PK=TOT
BG=10% X PK
Soal:
1). Buatlah flowchart dan Program Pascalnya untuk menampilkan tabel
seperti berikut ini:
10 - 10 100
2). Buatlah suatu flowchart dan Programnya, jika kita memasukkan
beberapa angka maka akan terlihat angka yang paling kecil dan angka
yang paling besar, cacah angka yang dimasukkan dan jumlah angka
yang dimasukkan.
Contoh:
Masukkan angka : 10
Masukkan angka : 15
Masukkan angka : 10
Masukkan angka : 5
Masukkan angka : 20
48
BAB V
MENGENAL TIPE DATA ARRAY
Type
Pengenal : Array[<tipe indek>] of <tipe>;
Dimana
Pengenal : nama tipe data (variabel)
<tipe indeks> : tipe data untuk nomer indeks.
<tipe> : tipe data komponen.
Contoh:
Type
A : Array[1..100] of Integer;
A. Deklarasi Array.
Nama[1] Amir
Nama[2] Budiman
Nama[3] Bambang
…..
…..
…..
Nama[10] Kunthi
PROGRAM COBA;
USES CRT;
VAR
NAMA : ARRAY[1..5] OF STRING;
I : INTEGER;
BEGIN
NAMA[1] :='BUDIMAN';
NAMA[2] :='GUNAWAN';
NAMA[3] :='AMIR';
NAMA[4] :='FITRI';
NAMA[5] :='KUNTHI';
WRITELN('NAMA KE 1 : ',NAMA[1]);
WRITELN('NAMA KE 2 : ',NAMA[2]);
WRITELN('NAMA KE 3 : ',NAMA[3]);
WRITELN('NAMA KE 4 : ',NAMA[4]);
WRITELN('NAMA KE 5 : ',NAMA[5]);
READLN;
END.
Hasil :
NAMA KE 1 : BUDIMAN
NAMA KE 2 : GUNAWAN
NAMA KE 3 : AMIR
NAMA KE 4 : FITRI
NAMA KE 5 : KUNTHI
51
Type
Huruf = 'A'..'Z';
KODE = STRING[10];
KODEARRAY=ARRAY[HURUF] OF KODE;
VAR
NAMA : KODEARRAY;
Nama[‘A’] Budiman
Nama[‘B’] Gunawan
Nama[‘C’] Amir
….
….
….
Nama[‘Z’] Kunthi
Program COBA;
Uses Crt;
Type
Huruf = 'A'..'Z';
KODE = STRING[10];
KODEARRAY=ARRAY[HURUF] OF KODE;
VAR
X : INTEGER;
NAMA : KODEARRAY;
BEGIN
NAMA['A'] := 'BUDIMAN';
NAMA['B'] := 'GUNAWAN';
NAMA['C'] := 'AMIR';
WRITELN('NAMA YANG KE A : ',NAMA['A']);
WRITELN('NAMA YANG KE B : ',NAMA['B']);
WRITELN('NAMA YANG KE C : ',NAMA['C']);
52
READLN;
END.
Hasil :
Soal:
DAFTAR NILAI
NO NAMA SISWA NILAI
1 AMIR 3
2 BUDIMAN 4
3 GUNAWAN 2
4 SANTI 2
5 INDRA 3
53
Jawab:
FLOWCHART PROGRAM
PROGRAM COBA;
Mulai USES CRT;
VAR
X=0 NM : ARRAY[1..5] OF STRING[15];
NL : ARRAY[1..5] OF INTEGER;
X : INTEGER;
X=X+1
BEGIN
CLRSCR;
X:=0;
INPUT REPEAT
NM[X], NL[X] BEGIN
X:=X+1;
WRITE(’NAMA :’);READLN(NM[X]);
T WRITE(’NILAI :’);READLN(NL[X]);
X=5 WRITELN;
Y END;
UNTIL X=5;
X=0 CLRSCR;
WRITELN(’DAFTAR NILAI’);
WRITELN(’-----------------------’);
WRITELN(’NO NAMA NILAI ’);
X=X+1 WRITELN(’-----------------------’);
FOR X:=1 TO 5 DO
BEGIN
WRITELN(X:3,NM[X]:15,NL[X]:3);
CETAK
END;
X,NM[X],
WRITELN(’-----------------------’);
NL[X] READLN;
END.
T
X=5
Y
SELESAI
54
SOAL:
Dst
N Gunawan 7 8 15 7.5
Keterangan.
a) Jml Nilai =Nilai Mid + Nilai SMT
b) Rata-rata = Jml Nilai/2
Jawab:
a. Algoritma Natural
X=0
X=X+1
INPUT NM[X],
NMID[X], NUJIAN[X]
Y
LAGI
JD = X
X=0
X=X+1
JML = NMID[X]+NUJIAN[X]
RATA=JML/2
Cetak
NM[X], NMID[X],
NUJIAN[X], JML, RATA
T
X=JD
SELESAI
56
c. Program
Program Coba;
Uses CRT;
Type
NILAI = 1..4;
HURUF = STRING[25];
VAR
NAMA : ARRAY[1..50] OF HURUF;
N1,N2 : ARRAY[1..50] OF NILAI;
JML,JD,X : INTEGER;
RATA : REAL;
LAGI : CHAR;
BEGIN
CLRSCR;
X:=0;
REPEAT
X:=X+1;
WRITE('DATA KE : ',X:3);
WRITE('NAMA MAHASISWA : ');READLN(NAMA[X]);
WRITE('NILAI MID : ');READLN(N1[X]);
WRITE('NILAI UJIN : ');READLN(N2[X]);
WRITELN;
WRITE('MASIH ADA DATA [Y/T] : ');READLN(LAGI);
UNTIL (LAGI='T') OR (LAGI='t');
JD:=X;
CLRSCR;
WRITELN('DAFTAR NILAI UJIAN');
WRITELN('================================================');
WRITELN('| NO | NAMA MAHASISWA | NILAI | NILAI | JML | RATA |');
WRITELN('| | | MID | UJIAN | NILAI | RATA |');
WRITELN('---------------------------------------------------------------------------------------');
FOR X:=1 TO JD DO
BEGIN
JML:=N1[X]+N2[X];
RATA:=JML/2;
WRITE('|',X:3,' | ',NAMA[X]:15,' | ',N1[X]:3,' | ',N2[X]:3);
WRITELN(' | ',JML:3,' | ',RATA:3:2,' |');
END;
WRITELN('===================================================');
READLN;
END.
57
Soal:
1). Buatlah flowchart dan program pascalnya untuk menyelesaikan
permasalahan dibawah ini.
PT. Makmur setiap bulan membuat daftar gaji pegawai dengan format
cetakan sebagai berikut:
DST
50
Ketentuan:
a) Gaji pokok dan Tunjangan diatur sabagai berikut:
2). Lain halnya dengan PT. Mandiri yang setiap bulan juga membuat daftar
gaji dengan format tampilan sebagai berikut:
JUMLAH
58
Ketentuan:
a). Unit kerja terdiri 4 unit dengan kode sebagai berikut:
Mahasiswa1
Mahasiswa2
Mahasiswa2
Type
Mahasiswa = Array[1..100,1..3] of real;
Var
TesMHS : Mahasiswa;
Contoh:
Andaikan kita ingin membuat tabel seperti berikut:
Program Pascal.
Program Coba;
Uses CRT;
Type
NILAI = 1..4;
HURUF = STRING[25];
VAR
NAMA : ARRAY[1..50] OF HURUF;
TEST : ARRAY[1..50,1..3] OF NILAI;
JML,JD,X,I : INTEGER;
RATA : REAL;
LAGI : CHAR;
BEGIN
CLRSCR;
X:=0;
REPEAT
BEGIN
X:=X+1;
WRITELN('DATA KE : ',X:3);
WRITE('NAMA MAHASISWA : ');READLN(NAMA[X]);
FOR I:=1 TO 3 DO
BEGIN
WRITE('NILAI TEST',I:1,' = ');READLN(TEST[X,I]);
END;
WRITELN;
WRITE('MASIH ADA DATA [Y/T] : ');READLN(LAGI);
END;
UNTIL (LAGI='T') OR (LAGI='t');
JD:=X;
CLRSCR;
WRITELN('DAFTAR NILAI UJIAN');
WRITELN('===================================================');
WRITELN('| NO | NAMA MAHASISWA | TEST | TEST | TEST | RATA |');
WRITELN('| | | 1 | 2 | 3 | RATA |');
WRITELN('---------------------------------------------------');
FOR X:=1 TO JD DO
BEGIN
JML:=0;
WRITE('|',X:3,' | ',NAMA[X]:15,' | ');
FOR I:=1 TO 3 DO
BEGIN
JML:=JML+TEST[X,I];
WRITE(TEST[X,I]:3,' | ');
END;
RATA:=JML/3;
WRITELN(RATA:3:2,' |');
END;
WRITELN('======================================================');
READLN;
END.
61
3
2
1
2 321 a[2,4,1]
1 2 3 4
Var
A : Array[1..4,1..4,1..3] of real;
Contoh:
Andaikan kita ingin membuat tabel seperti berikut:
Program Pascal.
Program Coba;
Uses CRT;
Type
NILAI = 1..4;
HURUF = STRING[25];
VAR
NAMA : ARRAY[1..50] OF HURUF;
TEST : ARRAY[1..50,1..2,1..2] OF NILAI;
JML,JD,X,I,A : INTEGER;
RATA : REAL;
LAGI : CHAR;
BEGIN
CLRSCR;
X:=0;
REPEAT
BEGIN
X:=X+1;
WRITELN('DATA KE : ',X:3);
WRITE('NAMA MAHASISWA : ');READLN(NAMA[X]);
FOR I:=1 TO 2 DO
BEGIN
WRITELN('SEMESTER ',I:1);
FOR A:=1 TO 2 DO
BEGIN
WRITE(' TEST',A:1,' = ');READLN(TEST[X,I,A]);
END;
WRITELN;
END;
WRITELN;
WRITE('MASIH ADA DATA [Y/T] : ');READLN(LAGI);
END;
UNTIL (LAGI='T') OR (LAGI='t');
JD:=X;
CLRSCR;
WRITELN(' DAFTAR NILAI UJIAN');
WRITELN('=========================================================');
WRITELN('| | | SEMETER I | SEMESTER II|RATA |');
WRITELN('| NO | NAMA MAHASISWA |--------------------------|RATA |');
WRITELN('| | |TEST1 |TEST2 |TEST1 |TEST2| |');
WRITELN('---------------------------------------------------------');
FOR X:=1 TO JD DO
BEGIN
JML:=0;
WRITE('|',X:3,' | ',NAMA[X]:15,' | ');
FOR I:=1 TO 2 DO
BEGIN
63
FOR A:=1 TO 2 DO
BEGIN
JML:=JML+TEST[X,I,A];
WRITE(TEST[X,I,A]:4,' | ');
END;
END;
RATA:=JML/4;
WRITELN(RATA:3:2,' |');
END;
WRITELN('=======================================================');
READLN;
END.
64
DAFTAR PUSTAKA
Amrinsyah Nasution
1989, Turbo Pascal, Jakarta : Erlangga
Mico Pardosi
2004, Bahasa Pemrograman Turbo Pascal 7.0, Surabaya: Indah
M. Hasbi
2003, Struktur Data & Pemrogramman Dalam Turbo Pascal,
Yogyakarta : Gaya Media.