Modul I
PENDAHULUAN
Program adalah satu set instruksi atau perintah yang diberikan kepada komputer
dalam menyelesaikan suatu tugas atau masalah sesuai dengan persyaratan dan keperluan
tertentu. Program yang baik memiliki kriteria, antara lain :
1. Menghasilkan keluaran (output) yang sesuai dan benar
2. Memiliki kompleksitas algoritma yang minimal
3. Memiliki kecocokan dengan peruntukan bahasa pemrogramannya
4. Memiliki batas akhir penyelesaian
1
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
2
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Program Contoh_Program1;
Uses Crt;
Const Harga = 1000;
var
Jumlah : Integer;
HasilX : Real;
Begin
Jumlah := 10;
HasilX := Jumlah * Harga;
WriteLn(‘Hasil perkaliannya adalah :’,HasilX:10:2);
ReadLn;
End.
Identifier
Identifier adalah nama simbol yang digunakan dalam sebuah bahasa pemrograman.
Biasanya digunakan untuk nama variabel, konstanta, fungsi atau objek lain yang
diidentifikasikan oleh pemrogram.
Syarat :
- Terdiri dari huruf (a s/d z, A s/d Z), angka (0 s/d 9) dan tanda garis bawah ( _ ).
- Diawali dengan huruf / garis bawah
- Panjang maksimum 33 karakter
- Tidak mengandung spasi
- Bukan reserved word / standart identifier
Reserved Word adalah sebuah kata yang mempunyai arti khusus dalam sebuah bahasa
pemrograman.
Tipe data
Tipe data yang dikenal dalam bahasa pemrograman Turbo Pascal :
1. Tipe data standard (standard type data), tipe data ini meliputi :
integer, real, char, string, boolean.
2. Tipe data terstruktur (Structured type data)
array, record, file, set
3. Tipe data penunjuk (pointer type data)
3
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
4
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
5
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
hanya berfungsi sebagai dokumentasi saja. Didalam penulisannya komentar harus diapit
oleh tanda { dan }.
4. Readkey
Readkey berfungsi untuk menerima masukan hanya satu karakter masukan saja. Jenis
variabel yang dapat diinput oleh Readkey yaitu jenis variabel Karakter.
contoh program :
Program RKey;
Uses Crt;
Var
Kar : Char;
Begin
Writeln(’Tekan sembarang karakter !.’);
Kar:=Readkey;
Writeln(’Karakter yang anda tekan adalah : ’,Kar);
End.
5. Clrscr
Berfungsi untuk membersihkan layar dari tampilan sebelumnya dan meletakkan kursor
pada posisi kiri atas dari layar monitor.
6. GotoXY
Berfungsi untuk menampilkan pada posisi tertentu. Bentuk penulisan GotoXY adalah :
GotoXY(PosisiX,PosisiY);
7. WhereX dan WhereY
Berfungsi untuk mencari letak posisi kursor pada layar. Hasil WhereX dan WhereY
merupakan suatu bilangan integer.
8. Textbackground
Berfungsi untuk mewarnai layar. Cara penulisan Textbackground adalah :
Textbackground(warna);
Tabel warna
Warna Konstanta Nilai
Hitam Black 0
Biru Blue 1
Hijau Green 2
Cyan Cyan 3
Merah Red 4
Magenta Magenta 5
Coklat Brown 6
Coklat Muda Light Gray 7
6
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
9. Textcolor
Berfungsi untuk mewarnai tulisan. Cara penulisan Textcolor adalah :
Textcolor(warna);
Warna yang digunakan sesuai tabel warna diatas ditambah dengan tabel berikut :
Warna Konstanta Nilai
Coklat Hitam Dark Gray 8
Biru Muda Light Blue 9
Hijau Muda Light Green 10
Cyan Muda Light Cyan 11
Merah Muda Light Red 12
Magenta Muda Light Magenta 13
Kurnig Yellow 14
Putih White 15
10. Window
Berfungsi untuk membatasi daerah kerja program pada layar. Cara penulisan Window :
Window(X1, Y1, X2, Y2);
7
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
*, / Perkalian, Pembagi
+, - Penjumlahan, Pengurangan
:= Sama dengan
2. Operator pembanding
Lambang Fungsi
= Sama dengan
> Lebih besar
< Lebih kecil
>= Lebih besar Sama dengan
<= Lebih kecil Sama dengan
<> Tidak sama dengan
3. Operator kondisi
Or dan And berfungsi untuk menghubungkan dua kondisi.
4. Fungsi matematika
Div, fungsinya untuk melakukan pembagian integer. Bentuk penulisan : var_hsl := bil_bagi
Div bil_pbagi;
Mod, fungsinya untuk mengetahui sisa pembagi. Bentuk penulisan : var_hsl := bil_bagi Mod
bil_pbagi;
Inc, fungsinya untuk melakukan penambahan dengan satu. Bentuk penulisan : Inc(var_bil);
Dec, fungsinya untuk melakukan pengurangan dengan satu. Bentuk penulisan :
Dec(var_bil);
Trunc, fungsinya untuk melakukan pembulatan kebawah. Bentuk penulisan : var_hsl :=
Trunc(var_bil);
Round, fungsinya untuk melakukan pembulatan keatas jika bilangan dibelakang koma =>
0,5 dan akan dibulatkan kebawah jika bilangan dibelakang koma < 0,5. Bentuk penulisan :
var_hsl := Round(var_bil);
Abs, fungsinya untuk mencari harga mutlak. Bentuk penulisan : var_hsl := Abs(var_bil);
Sqr, fungsinya untuk melakukan perpangkatan dua. Bentuk penulisan : var_hsl :=
Sqr(var_bil);
Sqrt, fungsinya untuk mencari akar pangkat dua. Bentuk penulisan : var_hsl :=
Sqrt(var_bil);
8
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Contoh Program :
Program FungsiMM;
Uses Crt;
Var
Bil1, HDiv, HMod, HAbs : Integer;
BIl2, HTrunc, HRound, HSqr, HSqrt : Real;
Begin
clrscr;
Write('Input Sembarang Bilangan Bulat : ');
Readln(Bil1);
HDiv:=Bil1 Div 2;
HMod:=Bil1 Mod 2;
HAbs:=Abs(Bil1);
Writeln('Hasil Div 2 nya : ',HDiv);
Writeln('Hasil Mod 2 nya : ',HMod);
Inc(Bil1);
Writeln('Hasil Inc nya : ',Bil1);
Dec(Bil1);
Writeln('Hasil Dec nya : ',Bil1);
Writeln('Hasil Abs nya : ',HAbs);
Writeln;
Write('Input Sembarang Bilangan Real : ');
Readln(Bil2);
HTrunc:=Trunc(Bil2);
HRound:=Round(Bil2);
HSqr:=Sqr(Bil2);
HSqrt:=Sqrt(Bil2);
Writeln('Hasil Trunc nya : ',HTrunc:5:0);
Writeln('Hasil Round nya : ',HRound:5:0);
Writeln('Hasil Sqr nya : ',HSqr:5:0);
9
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
MODUL II
PENYAJIAN ALGORITMA
Pada Bab ini akan kita bahas secara khusus tentang penyajian algoritma yaitu:
Dalam bentuk gambar dan tulisan.
1. Dalam bentuk gambar
10
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Flowchart
2. Dalam Bentuk Tulisan
Pseudo code (mirip kode/perintah pemrograman)
Ad1. Flowchart Program
2. persiapan
3. Proses
5. Decision / pengujian
6. sub program
9. Database /penyimpanan
Latihan 1: Buatlah Sebuah Program Pascal untuk Menghitung Luas Persegi Panjang kemudian
Buatlah algoritma dan flowchart.
Contoh program runtunan.
Langkah Algoritma.
11
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
1.START
2. Persipan variabel / baca variabel
Luas, panjang, lebar : integer;
3. Persiapan input:
input panjang dan Lebar dari keyboard
4. Proses
Luas:= Panjang * Lebar
5. Cetak
cetak luas persegi panjang
5. STOP
Langkah Pembuatan Program
Program Persegi_Panjang;
Uses crt;
Var Luas, panjang, Lebar : integer ;
Begin
Clrscr;
Write(’input Panjang: ’); readln(panjang);
Write(’input lebar : ’); readln(lebar);
Luas := Panjang * Lebar;
Writeln( ’luas Persegi panjang adalah: ’,luas);
Readln;
End.
1. start
12
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
5. Cetak luas=’ ‘
6. stop
MODUL III
TIPE DASAR DATA
13
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
1. Bilangan Logika(biner)
2. Bilangan Bulat
3. Bilangan Riil
4. Karakter
5. String.
Ad1. Bilangan Logika => Bilangan logika adalah bilangan yang terdiri dari 2 buah nilai yaitu 0
dan 1 . 1= true(benar) dan 0 = false(salah)
A B A and B A or B A xor B
True T T T F
True F F T T
False T F T T
False F F F F
TABEL KEBENARAN
KETERANGAN
1. Operator Not => menghasilkan nilai yang berlawanan dengan nilai awal.
2. Operator And => bernilai true bila kedua operand bernilai true.
3. Operator Or => bernilai false bila kedua operand bernilai false.
4. Operator Xor => bernilai true bila kedua operand saling berlawanan nilainya.
14
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Operasi aritmatik
+ tambah contoh
- kurang 10 div 3 hasil : 3
* kali 10 mod 3 hasil : 1
div bagi
mod sisa hasil bagi
operasi perbandingan
< lebih kecil contoh
<= lebih kecil sama dengan 3 < 4 (true)
> lebih besar 9 <= 9 (true)
>= lebih besar sama dengan (24 div 3) >= 9 (false)
= sama dengan
<> tidak sama dengan
15
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
operasi perbandingan
contoh
3.3 < 3.5 hasil true
ad4 karakter
adalah : huruf, tanda baca, angka, karakter khusus yang berada dalam dua tanda petik
tipe data : char
contoh
’a’
operasi perbandingan
’a’ = ’A’ hasil false
’b’ = ’c’ hasil true
ad5 String
adalah: kumpulan atau deretan karakter yang berada dalam dua tanda petik
tipe data : string
contoh:
’Stmik Triguna Dharma’
a.operasi penyambungan
operator : +
b. operasi perbandingan
LECTURE IV
STRUKTUR PEMILIHAN
16
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Program IfThenElse;
Uses Crt;
Var
Nilai : Integer;
Kete : String[15];
17
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Begin
Clrscr;
Write(‘Input Nilai Anda :’);
Readln(Nilai);
If Nilai>=60 Then
Kete:=’Lulus’
Else
Kete:=’Tidak Lulus’;
Writeln(‘Anda dinyatakan :’,Kete);
Readln;
End.
Ad3. Case...Of
Bentuk penulisan : Case ungkapan Of
nilai_case1 : perintah1;
nilai_case2 : perintah2;
............... : .............;
nilai_casen : perintahn;
End;
Contoh program :4.3
Program CaseOf;
Uses Crt;
Var
NilAng : Integer;
NilHur : string[1];
Begin
Clrscr;
Write('Input Nilai Angka :');
Readln(NilAng);
Case NilAng Of
81..100 : NilHur:='A';
71..80 : NilHur:='B';
61..70 : NilHur:='C';
51..60 : NilHur:='D';
18
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
41..50 : NilHur:='E';
End;
Write('Nilai Huruf :',NilHur);
Readln;
End.
Ad4. CASE...OF...ELSE
Bentuk penulisan : Case ungkapan Of
nilai_case1 : perintah1;
nilai_case2 : perintah2;
............... : .............;
Else perintah_bagian_Else;
End;
Contoh program :4.4
Program CaseOfElse;
Uses Crt;
Var
NilAng : Integer;
NilHur : string[1];
Begin
Clrscr;
Write('Input Nilai Angka :');
Readln(NilAng);
Case NilAng Of
81..100 : NilHur:='A';
71..80 : NilHur:='B';
61..70 : NilHur:='C';
51..60 : NilHur:='D';
41..50 : NilHur:='E';
Else NilHur:='K';
End;
Write('Nilai Huruf :',NilHur);
Readln;
End.
19
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Latihan : Buatlah sebuah Program untuk Menentukan nilai seorang mahasiswa dengan
menggunakan statement if kemudian buatlah flowchart dan algoritmanya.
Dengan ketentuan sbb:
1. mulai
2. persipan variabel
nim, nama, jurusan, semester : string
nilai_angka : integer;
nilai_huruf : char
3. nim,nama,jurusan,semester dan nilai_angka di input dari keyboard.
4. jika nilai_angka >= 80 dan nilai_angka <=100 maka nilai_huruf = A
jika nilai_angka >= 70 dan nilai_angka <=79 maka nilai_huruf = B
jika nilai_angka >= 60 dan nilai_angka <=69 maka nilai_huruf = C
selain itu maka nilai_huruf = D
5. cetak nilai huruf
6. stop
CONTOH PROGRAM NILAI
program menentukan_nilai_mhs;
USES CRT;
VAR NIM,NAMA,JURUSAN, SEMESTER: STRING;
NILAI_HURUF :CHAR;
NILAI_ANGKA :INTEGER;
BEGIN
CLRSCR;
WRITE('MASUKKAN NIM MAHASISWA : ');READLN(NIM);
WRITE('MASUKKAN NAMA MAHASISWA : ');READLN(NAMA);
WRITE('MASUKKAN JURUSAN MAHASISWA : ');READLN(JURUSAN);
WRITE('MASUKKAN SEMESTER MAHASISWA : ');READLN(SEMESTER);
WRITE('MASUKKAN NILAI UJIAN MAHASISWA : ');READLN(NILAI_ANGKA);
IF (NILAI_ANGKA >=80) AND (NILAI_ANGKA <=100) THEN NILAI_HURUF :='A'
ELSE IF (NILAI_ANGKA >=70 ) AND (NILAI_ANGKA <= 79)
THEN NILAI_HURUF :='B'
ELSE IF (NILAI_ANGKA > =60 ) AND (NILAI_ANGKA<]0]-P=69)
20
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Lecture V
21
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Contoh program :
Program Perulangan_For;
Uses Crt;
Var
I : Integer;
Begin
Clrscr;
For I := 1 To 5 Do
Begin
Write(I);
Writeln(‘Pascal’);
End;
Readln;
End.
Perulangan menggunakan While ... Do
Perulangan While ... Do digunakan untuk melakukan perulangan terus menerus selama kondisi
logika pada While masih bernilai benar.
Format : While kondisi Do
pernyataan_yang diulang;
Program Perulangan_WhileDo;
Uses Crt;
Var
I : Integer;
Begin
I := 1;
While I <= 10 Do
Begin
Writeln(‘Nilai I adalah : ‘,I);
Inc(I);
End;
Readln;
End.
22
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
HASIL PROGRAM
23
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Prosedur merupakan bagian potongan program yang berdiri sendiri. Prosedur dibuat bila
mana program akan dibagi-bagi menjadi beberapa blok-blok modul. Letak prosedur pada
program adalah setelah bagian deklarasi dan sebelum bagian program utama. Kata cadangan
PROCEDURE digunakan sebagai pengenal suatu prosedur, diikuti oleh indetifier yang
merupakan nama prosedurnya dan secara optional dapat diikuti oleh kumpulan parameter yang
diiakhiri dengan titik koma. Contoh deklarasi prosedur :
Contoh program :
Program Contoh_Prosedur;
Uses Crt;
Var
X, Y, Z : Integer;
Procedure Inp_Bil(A, B : Integer);
Begin
Write('Input Bilangan I : ');Readln(X);
Write('Input Bilangan II : ');Readln(Y);
End;
Procedure Tam_Bil(A, B : Integer; var C : Integer);
Begin
C:=A+B;
End;
{ Program Utama }
Begin
Clrscr;
Inp_Bil(X, Y);
Tam_Bil(X,Y,Z);
Write('Hasil dari : ',X,' + ',Y,' = ',Z);
Readln;
End.
Fungsi
Fungsi merupakan potongan program yang tidak dapat berdiri sendiri, karena
memberikan suatu nilai, fungsi tidak dapat berdiri sendiri melainkan memerlukan suatu tempat
24
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
untuk menampung nilai tersebut. Kata cadangan FUNCTION mengawali bagian deklarasi fungsi
diikuti oleh identifier yang merupakan nama dari fungsinya dan secara optional dapat diikuti
oleh kumpulan parameter, tipe dari fungsinya dan diakhiri dengan titik koma. Contoh deklarasi
fungsi :
FUNCTION Pangkat (X, Y : real) : Real;
Tipe Integer
Ada 5 tipe yang termasuk dalam kelompok ini, yaitu :
Tipe Batas nilai Ukuran dalam byte
byte 0 s/d 255 1
shortint -128 s/d 127 1
25
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Operasi dasar
- Penjumlahan (+)
- Pengurangan (-)
- Perkalian (*)
- Pembagian (div)
- Sisa pembagian (mod)
Deklarasi variabel :
var r1, r2 : real;
Operasi dasar :
- Penjumlahan (+)
- Pengurangan (-)
- Perkalian (*)
- Pembagian (/)
- Fungsi pangkat 2 (sqr)
- Fungsi akar (sqrt)
26
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
program charstring;
uses crt;
var k1,k2 : char;
s : string;
b1,b2 : boolean;
procedure backar;
27
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
begin
write ('Input karakter 1 : '); readln(k1);
write ('Input karakter 2 : '); readln(k2);
end;
procedure tamkar;
begin
s:=k1+k2;
writeln('Karakter setelah : ',k1,' adalah = ',succ(k1));
writeln('Karakter sebelum : ',k1,' adalah = ',pred(k1));
writeln('Nilai kode ASCII dari : ',k1,' adalah = ',ord(k1));
writeln('Huruf kapital dari : ',k1,' adalah = ',upcase(k1));
writeln('Karakter ',k1,' + ',k2,' adalah = ',s);
end;
procedure bacboo;
begin
writeln;
b1:=true;
b2:=false;
writeln('Nilai data 1 = ',b1);
writeln('Nilai data 2 = ',b2);
end;
procedure tamboo;
begin
writeln('Operasi and ');
writeln(b1,' and ',b2,' = ',b1 and b2);
writeln('Operasi or ');
writeln(b1,' or ',b2,' = ',b1 or b2);
writeln('Operasi not ');
writeln('not ',b1,' = ',not(b1));
writeln('not ',b2,' = ',not(b2));
end;
begin
clrscr;
28
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
backar;
tamkar;
bacboo;
tamboo;
readln;
end.
Tugas :
- Kembangkan contoh program di atas untuk tipe data string yang mempunyai kemampuan
untuk operasi : merubah data nilai ke string, merubah data string ke nilai, menggabung dua
kalimat dan menghitung panjang (jumlah karakter) suatu kalimat.
- Kembangkan contoh program di atas untuk operasi boolean berikut :
o B1 and B2 or B3
o B1 and B2 and B3
o B1 or B2 or B3
o not(B1) and B2 or B3
o B1 and not(B2) or B3
29
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
yang muncul adalah bila semua nilai a tersebut sangat dibutuhkan, bagaimana caranya ?.
Jawabnya gunakan variabel array.
Ilustrasi :
lokasi / elemen data
Nama Array
Subscrip/index
1 2 3 4 5 6 7 8
Deklarasi variabel :
Var
V_Array_SatuD : Array[1..4] of tipe_data;
V_Array_DuaD : Array[1..4, 1..2] of tipe_data;
atau
const max = 50;
type larik = array[1..max] of real
var
X : larik;
Operasi pada tipe data array
1. Proses isi data array
2. Proses tampil data array
3. Proses urutkan data array
4. Proses cari data array
30
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Pemahaman :
Output : Satu diantara dua kemungkinan, yaitu :
- Data ditemukan pada subscrip yang ke berapa
- Data tidak ditemukan
Input : - 10 data numerik
- 1 data numerik
Analisis : - Deklarasikan array dengan subscrip 10 dengan perintah array.
- Input data kedalam array dengan proses perulangan
- Input 1 data numerik yang akan dicari ke array
- Cari data didalam array dengan prsoses peruulangan
- Dalam setiap perulangan dilakukan pembandingan data yang dicari
- Jika sama berarti data ditemukan dan proses perulangan dihentikan
- Jika sampai ke subscrip akhir tidak ada yang sama berarti data tidak
ditemukan
Algoritma : .........
31
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
var
i: word;
nama :string[255];
j1,j2,j3,j4 :integer;
tanggal,Bulan, Tahun : integer;
begin
writeln('PROGRAM MENCARI HARI KELAHIRAN ABAD 20');
WRITELN('Tahun input dari 1900 s/d 2000');
WRITELN('****************************** ');
write('MASUKKAN TANGGAL YANG DICARI: '); READLN(Tanggal);
write('MASUKKAN BULANNYA : ');READLN(Bulan);
write('MASUKKAN TAHUNNYA JUGA : ');READLN(Tahun);
if tahun > 2009 then tahun := tahun - 2009;
j1 := trunc(tahun * 365.25);
j2 := j1 + faktorBLN[Bulan];
if (tahun/4 = int(tahun/4)) and (Bulan < 3) then J2 := j2-1;
j3 := j2 + tanggal;
j4 := trunc(frac(j3/7)*10);
writeln;
32
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
program isi_matrik;
uses crt;
var
matA : array[1..100, 1..100] of integer;
i,j : integer;
bar, kol :integer;
begin
write('banyak baris = ');readln(bar);
write('banyak kolom = ');readln(kol);
writeln;
for i:=1 to bar do
begin
clrscr;
for j:=1 to kol do
begin
write('MatA[',i,',',j,'] = ');
readln(MatA[i,j]);
end;
end;
writeln;
writeln('isi MatA: ');
for i:=1 to bar do
begin
for j:=1 to kol do
write(MatA[i,j]:3);
writeln;
end;
readln;
end.
Hasil program array 2 dimensi
banyak baris = 2
33
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
banyak kolom = 4
MatA[1,1] = 3
MatA[1,2] = 4
MatA[1,3] = 5
MatA[1,4] = 6
MatA[2,1] = 4
MatA[2,2] = 5
MatA[2,3] = 6
MatA[2,4] = 7
isi MatA:
3 4 5 6
4 5 6 7
SORT
Definisi Sort
Sort adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi
tersusun secara teratur menurut suatu aturan tertentu.
Pada umumnya terdapat 2 jenis pengurutan :
Ascending (Naik)
Descending (Turun)
Contoh :
Data Acak : 5 6 8 1 3 25 10
34
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Terurut Ascending : 1 3 5 6 8 10 25
Terurut Descending : 25 10 8 6 5 3 1
Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara / metoda.
Beberapa metoda diantaranya :
a) Buble / Exchange Sort
b) Selection Sort
c) Insertion Sort
d) Quick Sort
e) Shell sort
22 2 10 15 3 8
2 22 10 15 3 8
Langkah 2 :
2 22 10 15 3 8 Kembalinya data paling akhir dibandingkan dengan data didepannya
jika ternyata lebih kecil maka tukar, tetapi kali ini pengecekan tidak
2 22 10 15 3 8
dilakukan sampai dengan data paling awal yaitu 2 karena data
2 22 10 3 15 8
2 22 3 10 15 8
35
Marsono,
2 3 22 S.Kom, M.Kom
10 15 8 UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Langkah 3 : Langkah 4 :
2 3 22 10 15 8 2 3 8 22 10 15
2 3 22 10 8 15 2 3 8 22 10 15
2 3 22 8 10 15 2 3 8 10 22 15
2 3 8 22 10 15
2 3 8 10 22 15
2 3 8 10 15 22
2 3 8 10 15 22
36
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
end;
Untuk pengurutan secara descending anda hanya perlu menggantikan baris ke-6 dengan berikut
ini :
If data[j] > data[j-1] then
Selection Sort
Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen
yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat
posisinya dan kemudian ditukar. Dan begitu seterusnya.
Proses :
Langkah 1: Langkah 2 :
i=1 2 3 4 5 6 i=1 2 3 4 5 6
22 10 15 3 8 2 2 10 15 3 8 22
2 10 15 3 8 22 2 3 15 10 8 22
Langkah 3 : Langkah 4 :
i=1 2 3 4 5 6 i=1 2 3 4 5 6
2 3 15 10 8 22 2 3 8 10 15 22
pembanding Posisi
pembanding Posisi 10 < 15 4
15 > 10 4 10 < 22 4
10 > 8 5
8 < 22 5 Posisi data ke-4 tetap
Pada posisinya = 4 (tidak berubah)
Posisi data ke-3(15) = 5
Tukar data ke-3 dengan data ke-5 2 3 8 10 15 22
2 3 8 10 15 22
37
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Langkah 5 : Terurut :
i=1 2 3 4 5 6 2 3 8 10 15 22
2 3 8 10 15 22
pembanding Posisi
15 < 20 5
posisi data ke-5 tetap
pada posisinya = 5 (tidak berubah)
Proses pengurutan di atas adalah dengan metoda selection Ascending. Untuk descending hanyalah
kebalikan dari proses di atas. Berikut penggalan listing program Procedure Selection Sort secara
ascending
untuk pngurutan secara desending, anda hanya perlu mengganti baris ke-8 sbb :
if data[pos] < data[j] then pos:=j;
Insertion Sort
Pengurutan dilakukan dengan cara membandingkan data ke-I (dimana I dimulai dari data ke-2
sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka
data tersebut disisipkan ke depan sesuai posisi yang seharusnya.
Proses :
Langkah 1: Langkah 2 :
i= 1 2 3 4 5 6 i= 1 2 3 4 5 6
22 10 15 3 8 2 10 22 15 3 8 2
Langkah 3 : Langkah 4:
i= 1 2 3 4 5 6 i= 1 2 3 4 5 6
10 15 22 3 8 2 3 10 15 22 8 2
3 10 15 22 8 2 3 8 10 15 22 2
Langkah 5 : Langkah 6 :
i= 1 2 3 4 5 6 2 3 8 10 15 22
3 8 10 15 22 2
39
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Untuk pengurutan secara descending anda tinggal mengganti baris ke 8 dengan baris berikut ini :
While(data[j]<temp)and(j>0)do
QUICK SORT
Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya
sedemikian rupa sehingga elemen- elemen lain yang lebih kecil daripada pivot tersebut terletak di
sebelah kirinya dan elemen-elemen lain yang lebih besar daripada pivot tersebut terletak di
sebelah kanannya. Sehingga dengan demikian telah terbntuk dua sublist, yang terletak di sebelah
kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan
kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat
sublist lagi. Sehingga didalamnya telah terjadi proses Rekursif.
Proses :
Bilangan yang di dalam kurung merupakan pivot
Persegi panjang yang digambarkan dengan garis terputus-putus menunjukkan sublist.
i bergerak dari sudut kiri ke kanan sampai mendapatkan nilai yang >= pivot.
j bergerak dari sudut kanan ke kiri sampai menemukan nilai yang < pivot.
Langkah 1 :
Index = 1 2 3 4 5 6
j
22 10 1 3 8 2
i 5
i berhenti pada index ke-1 karena langsung mendapatkan nilai yang > dari pivot (15).
j Berhenti pada index ke-6 karena juga langsung mendapatkan nilai yang < dari pivot.
Karena i < j maka data yang ditunjuk olh I ditukar dengan data yang ditunjuk oleh j sehingga
menjadi :
2 10 15 3 8 22
Langkah 2 :
Index = 1 2 3 4 5 6
j
2 10 1 3 8 22
5 i
40
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
i berhenti pada index ke-3 (pivot) karena tidak menemukan bilangan yang > dari pivot.
j berhenti pada index k-5 menunjuk pada nilai yang < dari pivot.
Karena i < j maka data yang ditunjuk oleh i (pivot) ditukar dengan data yang ditunjuk oleh j
sehingga menjadi :
2 10 8 3 15 22
Langkah 3 :
Index = 1 2 3 4 5 6
2 10 8 3 15 22
Proses yang sama seperti sebelumnya dilakukan terhadap 2 buah sublist yang baru (ditandai
dengan persegi panjang dengan garis terputus-putus).
2 3 8 10 15 22
Atau dapat juga digambarkan dalam bentuk tree seperti di bawah ini dengan pivot yang ditandai
dengan huruf tebal. Kemudian setelah terurut dibaca inorder.
22 10 15 3 8 2
10 3 8 2 15 22
2 3 10 8
8 10
41
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
i := L; j := R+1;
repeat
repeat inc(i) until data[i] >= data[1];
repeat dec(j) until data[j] <= data[1];
if i < j then tukardata (data[i], data[j]);
until i > j;
tukardata (data[1], data[j]);
Asc_Quick(L,j-1);
Asc_Quick(j+1,R);
End;
End;
Untuk pengurutan secara descending anda tinggal mengganti tanda aritmatik pada baris k 8 dan 9
sehingga menjadi seperti baris berikut :
repeat inc(i) until data[i] >= data[l];
repeat dec(j) until data[j] <= data[l];
42
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Untuk pengurutan secara descending, anda hanya perlu mengganti baris ke-6 & 7 sbb :
while data[j] < mid do inc(j);
while data[k] > mid do dec(k);
Layar 2 :
5 2 67 43 90 45 8 23 39 7
Data yang telah diurutkan :
**************
Ascending : 2 5 7 8 23 39 43 45 67 90
Descending : 90 67 45 43 39 23 8 7 5 2
43
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Procedure Input;
begin
Clrscr;
Writeln (‘Masukkan 10 data’);
Writeln (‘= = = = = = = = = =’);
For i := 1 to max do {input 10 data}
begin
write(‘Data ke-‘, i ,’=’); readln(data[i]);
end;
Clrscr;
For i := 1 to max do
Write(data[i],’ ‘);
Writeln;
Writeln (‘ * * * * * * * * * * * * * * *);
Writeln (‘Data yang telah diurutkan :’);
end;
Procedure Change (var a,b :byte); {procedure untuk menukar data}
Var c : byte;
Begin
c := a; a := b; b := c;
end;
Procedure Asc_Buble; {pengurutan secara ascending}
Var p,q : byte;
flaq : boolean;
begin
flaq:=false;
p:=2;
while (p<max) and (not flaq) do
begin
flaq:=true;
for q := max downto p do
if data[q] < data[q-1] then
begin
change (data[q], data[q-1]);
flaq:=false;
end;
44
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
inc(i);
end;
write(‘Ascending :’);
end;
Procedure Desc_Buble; {pengurutan secara descending}
Var p, q : byte;
Flaq : boolean;
Begin
flaq:=false;
p:=2;
while (p<max) and (not flaq) do
begin
flaq:=true;
for q := max downto p do
if data[q] < data[q-1] then
begin
change (data[q], data[q-1]);
flaq:=false;
end;
inc(i);
end;
write(‘Descending :’);
end;
Procedure Output;
Begin
For i := 1 to max do
Write(data[i],’’);
Writeln;
end;
Begin {program utama}
Input;
Asc_buble; output;
Desc_buble; output;
Readkey;
end.
45
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
46
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
47
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Larik[J+1] := X;
end;
{cetak hasil secara ascending}
writeln;
writeln('hasil sort secara Ascending');
writeln('vvvvvvvvvvvvvvvvvvvvvvvvvvv');
for i := 1 to N do
writeln('Data Ke: ',i:3, '= ', Larik[i]);
writeln;
{cetak hasil Descending}
writeln('Hasil sort secara Descending');
writeln('VVVVVVVVVVVVVVVVVVVVVVVVVVVV');
for i := N downto 1 do
writeln('Data Ke: ',(N - i + 1):3, '= ', Larik[i ]);
readln;
end.
SEARCH
ada beberapa metode search, akan tetapi pada bab ini kita akan membahas 2 metode yaitu:
1. Metode Sequential search
2. Metode Binary search
13 16 14 21 76 15
1 2 3 4 5 6
48
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Setiap elemen pada larik L akan dibandingkan dengan X mulai dari elemen L[1].
Proses perbandingan akan terus dilakukan selama indeks larik tidak melebehi N (jumlah larik)
dan larik ke [k] tidak sama dengan X
Dan nilai yang dikembalikan adalah peubah boolean yaitu Ketemu = true dan tidak ketemu =
false.
Contoh:
Ilustrasi pencarian data . misalkan Larik L dengan 8 buah elemen terurut menurun sbb:
81 76 21 18 16 13 10 7
i=1 2 3 4 5 6 7 8=j
49
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Langkah 1.
i= 1 dan j=8
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Kiri Kanan
Langkah 2:
L[4] =18? Ya ! (X di temukan, Pencarian selesai)
Langkah 1:
i= 1 dan j=8
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Kiri Kanan
k
Langkah 2:
L[4] = 16 ? Tidak! Maka akan diputuskan cari di bagian kiri atau bagian kanan.
16 13 10 7
i= 5 6 7 j= 8
Langkah 1:
i=5 dan j= 8
50
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
16 13 10 7
i= 5 6 7 j= 8
kiri kanan
k
Langkah 2:
L[6]= 16? Tidak
L[6] >16? Tidak maka cari di bagian kiri
16
i= 5
Langkah 1:
16
51
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
end
END;
{PROCEDURE UNTUK MENCETAK VEKTOR}
PROCEDURE CETAK_VEKTOR (VEKTOR : LARIK; N: INTEGER);
VAR I : INTEGER;
BEGIN
FOR I := 1 TO N DO
BEGIN
WRITE(VEKTOR[I]:6);
IF I MOD 10 = 0 THEN WRITELN;
END
END;
{PROCEDURE SORT SELEKSI ELEMEN VEKTOR}
PROCEDURE SORTIR(VAR VEKTOR: LARIK; N : INTEGER);
VAR I,J,POSISI,BANTU :INTEGER;
BEGIN
FOR I := 1 TO N-1 DO
BEGIN
POSISI :=I;
FOR J := I+1 TO N DO
IF VEKTOR [POSISI] > VEKTOR[J] THEN POSISI := J;
BANTU := VEKTOR[I];
VEKTOR[I] :=VEKTOR[POSISI];
VEKTOR[POSISI] := BANTU
END
END;
{PROSEDUR UNTUK MENCARI DATA METODE BINARY SEARCH}
PROCEDURE MENCARI_BINER (VAR KETEMU : BOOLEAN; VAR LOKASI : INTEGER;
VAR CARI : INTEGER;
VEKTOR : LARIK; N: INTEGER);
VAR ATAS, BAWAH : INTEGER;
BEGIN
WRITELN; WRITELN;
WRITE('INPUT DATA YANG DI CARI: ');READLN(CARI);
ATAS := N;
BAWAH:= 1;
KETEMU:= FALSE;
WHILE(NOT KETEMU) AND (BAWAH <= ATAS) DO
BEGIN
LOKASI := (ATAS + BAWAH) DIV 2;
52
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI
MODUL : algoritma dan pemrograman 1
Hasil Program
53
Marsono, S.Kom, M.Kom UNTUK KALANGAN SENDIRI