WD2010
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 1
78403626
45152877
73303981
64775158
49166357
73584068
64407002
84322475
63548373
81143182
72557110
27392580
83231098
84889679
46313323
23089154
85275899
37845237
89358252
52696355
50459049
25668561
58872132
76548944
52622308
58408306
89297464
27855520
62789142
36084136
75244290
82224888
61796553
46845906
67286093
31645556
35192540
56460959
74396318
84149189
57879565
86775524
50542142
89628467
22819152
29052750
39141124
43975931
59814899
83077525
68264729
74767351
62312366
84223706
77075028
62881317
47240199
46375555
64010972
81111032
40456819
56099649
57340322
77581816
30385754
68560812
58435604
WD2010
67464362
23618084
25714987
68641770
64490911
41668346
76141380
31782567
21246893
69621147
58250775
80961462
43920344
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 2
WD2010
#
= b50
3.5
0.5
i =0
h
f ( x) dx = 2 ( f ( x0 ) + 2 f ( x1 ) + 2 f ( x2 ) + " + 2 f ( xn 1 ) + f ( xn ))
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 3
WD2010
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 4
CPU
Arithmetic
&
Logic Unit
Input
WD2010
Control Unit
Output
Main Memory
Device
Device
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 5
Memory
a. Internal Memory
Disebut juga main memory / random access memory (RAM).
Merupakan rangkaian elektronik berupa sebuah chipset.
Wadah untuk menampung semua data yang akan diolah komputer.
Bersifat temporer, data akan hilang bila komputer dimatikan.
Main memory terbagi atas ruang-ruang kecil yang disebut word.
Word merupakan ukuran terkecil untuk satu satuan data / instruksi.
Setiap word selalu terurut berdasarkan nomor/address.
Address
0
1
2
Isi memory 01001101 11010110 10011111
3
4
01101110 10101010
WD2010
b. External Memory
Disebut juga secondary memory.
Contoh: Harddisk, disket, magnetik tape, cdrom, cdrw, dan lain-lain.
Digunakan untuk merekam / backup data.
Bersifat permanen, isi tidak akan berubah bila tidak diubah.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 6
Bahasa Mesin
Bahasa Asembli
MOV
ADD
STR
MOV
JMP
AH, FF7
AH, AL
8, A73
DH, CL
AL, F5
#
INT
Bahasa Pascal
27, AH
Bahasa Basic
#
10
20
30
40
50
60
70
WD2010
For i := 1 to 100 Do
Begin
a := a + b;
c := c * b 100;
b := b 1;
End;
s := s + a;
Repeat
s := s 1;
Writeln (s:10:5);
Until s <= -3;
a = 10
b = 20
For i = 1 to 1000 step 5
a = a -1
b = b + 0.5
Next i
Print a, b
#
Bahasa mesin merupakan bahasa yang secara langsung dapat dijalankan oleh
komputer. Instruksinya berupa rangkaian digit/angka biner.
Bahasa asembli mempunyai fungsi yang sama dengan bahasa mesin, tetapi
instruksinya menggunakan kata-kata sederhana (mnemonic). Setiap instruksi
berkorespondensi 1-1 dengan instruksi mesin. Untuk dijalankan pada komputer
perlu diterjemahkan dulu ke bahasa mesin. Penterjemahnya disebut Assembler.
Bahasa tingkat tinggi, menggunakan kalimat-kalimat yang mirip bahasa
sehari-hari. Penterjemahan ke dalam bahasa mesin dilakukan oleh Compiler.
Tiap instruksi umumnya berpadanaan dengan beberapa/banyak instruksi bahasa
mesin.
Contoh: Fortran, Basic, Pascal, Algol, PL/I, PL/C, ADA, C dll.
Catatan: Program yang ditulis dalam bahasa mesin dan asembli mempunyai waktu
komputasi yang jauh lebih cepat, relatif terhadap program sama yang ditulis dalam
bahasa tingkat tinggi.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 7
Word 0
SPESIFIKASI
Word 1
CPU
.
.
.
: 1 accumulator
Memory : 32 word
1 word 8 bit
Instruksi/perintah:
word 0 word 24
Word 31
Kode
Operand
operasi
Arti Perintah
WD2010
000
xxxxx
001
xxxxx
010
xxxxx
011
xxxxx
100
xxxxx
101
xxxxx
111
xxxxx
Format instruksi:
Operation Code
Operand
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 8
Contoh 1
100 00010
word 1
001 11111
word 2
100 00101
word 3
010 11111
word 4
001 11110
word 5
111 00000
stop
Contoh 2
Contoh 3
WD2010
word 0
word 0
100 10000
word 0
100 01010
word 1
001 11111
word 1
001 11111
word 2
100 01001
word 2
100 00001
word 3
001 11110
word 3
001 11110
word 4
000 11111
word 4
100 00000
word 5
011 11110
word 5
001 11001
word 6
001 11101
word 6
000 11111
word 7
111 11111
word 7
010 11001
word 8
001 11001
word 9
000 11111
word 10
011 11110
word 11
001 11111
word 12
101 00110
word 13
111 11001
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 9
7830
492
-63
200
'W'
34982.
123.45
-68342
-72.341
0.364E04
'MatEmaTiKa'
true
'347'
false
WD2010
'As245W_# ?@'
Real
Terdiri dari rangkaian digit 0 sampai 9, dilengkapi dengan satu buah
titik desimal diantara rangkaian digit tersebut.
Penulisan bilangan real negatif diawali dengan simbol minus
Notasi penulisan: fixed point dan floating point.
String / Character
Terdiri dari satu/beberapa rangkaian karakter/simbol
Penulisan dengan diapit tanda petik/apostrophe tunggal
Simbol-simbol yang dapat digunakan diatur tabel kode ASCII /
EBCDIC
Boolean / Logical
Hanya bernilai true atau false
Umumnya diperoleh dari operasi pembandingan dua nilai
Pointer
Belum dapat dijelaskan sekarang, akan dibicarakan dibelakang
Catatan: Setiap data numerik/string memiliki batas minimum dan
maksimum. Lebih lanjut, panjang mantisa sebuah bilangan real
juga terbatas.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 10
EKSPRESI
-4 / 2 * 3 ^ 2 2 * 2 ^ 2 ^ 3
10 4 * 2 + 3
-4 / 2 * 3 ^ 2 2 * 2 ^ 2 ^ 3
34527
-4 / 2 *
2*2^2^3
-4 / 2 *
2*2 ^ 8
-4 / 2 *
2 * 64
-2 *
2*
64
-18
2*
64
-18
128
10 4 * 2 + 3
+3
+3
6
WD2010
10 8
-146
Simbol Operator
^
*
/
+
-
Hirarki
1
2
2
3
3
Dua buah operator dengan hirarki sama akan dievaluasi dari kiri ke
kanan kecuali untuk operator pangkat, dievaluasi dari kanan ke kiri.
Tanda kurung dapat dipakai untuk memprioritaskan suatu sub-ekspresi
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 11
1.2345
0.1E+2
R1
R2
345
M281
R2
VI
2^3+A+3*B
20
10
B := 20
C := 2 ^ 3 + A + 3 * B
A
WD2010
A := 10
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 12
FUNGSI PUSTAKA
ROUND (x)
LN (x)
EXP (x)
SIN (x)
COS (x)
TAN (x)
Keterangan
Menghitung nilai mutlak dari x
Akar pangkat dua dari x
Bilangan bulat terbesar yang lebih kecil atau sama
dengan x
Bilangan bulat terbesar yang lebih kecil atau sama
dengan (x + 0.5)
Logaritma natural dari x (basis e)
exp (x), ex
sinus dari x
cosinus dari x
tangen dari x
WD2010
Nama fungsi
ABS (x)
SQRT (x)
TRUNC (x)
A := 10.0
B := 3.14159
C := sin (A) + 3 * sin (B)
B := round (C) exp (A-B)
193 + ln (23.4)
1 + 23
+
13 + 52.5
exp( 6+511 )
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 13
ALGORITMA
Penyelesaian dalam
bentuk algoritma
Implementasi
pada komputer
WD2010
Problem
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 14
Versi 1.
1. Lepaskan lampu yang putus.
2. Pasangkan lampu yang baru.
Versi 2.
Ambil tangga dan posisikan di bawah lampu yang putus.
Ambil lampu baru dengan daya (watt) yang sama.
Panjat tangga tersebut sampai lampu dapat diraih.
Putar lampu dengan arah berlawanan putaran jarum jam sampai
terlepas.
5. Posisikan lampu-baru pada soketnya.
6. Putar lampu searah dengan putaran jarum jam sampai kencang.
7. Turun dari tangga.
Versi 3.
WD2010
1.
2.
3.
4.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 15
DIAGRAM ALIR
Input / Masukan
Keputusan
Output / Keluaran
Pengulangan / loop
WD2010
Penugasan
implementasinya pada
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 16
Mulai
WD2010
Test_1, Test_2,
Test_3, Test_4
NR := (Test_1 + Test_2 +
Test_3 + Test_4) / 4.0
NR < 50
Y
Anda tidak lulus,
nilai : , NR
Anda lulus,
nilai: , NR
Selesai
Pelajari diagram alir di atas dan gunakan data test untuk mengujinya.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 17
a2 + b2
4. [keluaran / output]
5. [mengakhiri algoritma]
Exit
WD2010
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 18
Siku_2
SQ1
SQ2
Hypotenusa
16
16
16
Output
WD2010
Langkah
Pelacakan Algoritma adalah proses menjalankan algoritma tersebut langkah demi langkah secara detail sesuai dengan urut-urutannya.
Tujuan: untuk memeriksa aliran logika dan mencari kesalahan di dalam
algoritma tersebut.
Pelacakan dilakukan dengan memberikan data uji pada bagian masukan.
Proses pelacakan perlu dilakukan beberapa kali dengan data uji yang
ber-beda-beda. Data dipilih agar seluruh instruksi pada algoritma
terlewati. Bila memungkinkan dipilih data uji yang jawabnya
mudah/diketahui.
Proses pelacakan tidak pernah membuktikan bahwa sebuah algoritma
su-dah benar. Hasil maksimal hanyalah memberikan kesimpulan bahwa
kita tidak menemukan kesalahan pada algoritma tersebut.
Diskusi: Apakah algoritma Pythagoras sudah sempurna ?
Bagaimana bila pada bagian masukan diberi data negatif ?
Bagaimana caranya agar algoritma mampu menolak data negatif ?
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 19
ALGORITMA GRADES
Algoritma ini membaca 4 buah nilai ujian (disimpan dalam variabel Test1,
Test2, Test3 dan Test4) lalu menghitung rata-ratanya, disimpan pada
variabel Rata_2. Hasilnya dicetak dengan disertai keterangan. Semua
variabel diasumsikan bertipe real.
1. [membaca data masukan]
Read (Test1, Test2, Test3, Test4]
2. [menghitung nilai rata-rata]
Rata_2 := (Test1 + Test2 + Test3 + Test4) / 4
4. [mengakhiri algoritma]
Exit
ALGORITMA REPORT
WD2010
3. [mencetak hasil]
Write ('Nilai akhir = ', Rata_2)
Diberikan data nama mahasiswa dan 3 buah nilainya, yaitu nilai praktikum,
mid-test dan test-akhir. Bobot masing-masing nilai adalah 20%, 30% dan
50%. Algoritma ini menghitung nilai akhir dari data tersebut dan
mencetaknya.
1. [masukan data]
Read (Nama, Prak, MidTest, TAkhir)
2. [menghitung nilai akhir]
NA := 0.2 * Prak + 0.3 * MidTest + 0.5 * TAkhir
3. [mencetak hasil]
Write ('Nama mahasiswa
Write ('Nilai praktikum
Write ('Nilai MidTest
Write ('Nilai ujian akhir
Write ('Nilai akhir
:', Nama)
:', Prak)
:', MidTest);
:', TAkhir)
:', NA)
4. [mengakhiri algoritma]
Exit
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 20
SOAL-SOAL LATIHAN 1
1. Buat algoritma untuk membaca dua buah bilangan bulat A dan B, lalu
me-nukarkan isinya dan mencetak nilai dari A dan B tersebut.
2. Diberikan tiga buah bilangan bulat A, B dan C. Buat algoritma untuk
melakukan permutasi isinya (isi A pindah ke B, isi B pindah ke C dan isi C
pindah ke A). dan cetak hasilnya. Algoritma tidak boleh menggunakan
variabel tambahan.
3. Dari sebuah percobaan diperoleh lima buah data x1, x2, ", x5.
Buat algoritma untuk menghitung nilai rata-rata dan standard deviasinya.
Rumus standard deviasi:
ratanya.
1
4
5
1 ( xi x) 2 , x adalah
nilai rata-
a x 2 + b x + c = 0.
WD2010
ax + by = c
dx + ey = f
x=
ce bf
ae bd
y=
af cd
ae bd
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 21
BAHASA PASCAL
Pencipta:
Prof. Niklaus Wirth
Eidgenossiche Technische Hochschule
Switzerland
1960
WD2010
Keunggulan:
Bahasa pemrograman prosedural dengan struktur paling baik
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 22
Program nihil_1;
Uses Dos, Crt ;
[ Deklarasi Konstanta ]
[ Deklarasi Tipe ]
[ Deklarasi Variabel ]
[ Deklarasi Fungsi ]
[ Deklarasi Prosedur ]
Begin
(* ini komentar *)
End.
Begin
Program utama
( Main program )
Dos,
Crt ;
WD2010
Begin (*
End.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 23
Range bilangan
Real
Single
Double
Extended
Comp
Tipe data
19 20
19 20
Range angka
0 ... 255
Word
0 ... 65535
ShortInt
Integer
LongInt
'W'
'+'
'_'
'&'
78
15 16
False
True
String
'$'
11 12
Boolean
Byte
Char
Ketelitian
(digit / angka)
WD2010
Tipe data
'3456'
'Matematika ITB'
'MA-281'
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 24
VARIABEL
Format deklarasi / pemesanan variabel:
WD2010
Var
<nama variabel 1>
<nama variabel 2>
<nama variabel 3>
.
.
.
<nama variabel n>
Setiap variabel yang dipakai pada Pascal harus dipesan terlebih dahulu.
Aturan nama-variabel sama dengan aturan pada nama-program.
Dua buah / lebih variabel dengan tipe sama dapat ditulis dalam baris
yang sama dengan dipisah koma.
Contoh-contoh:
Var
Nama
Var
: String ; (* nama mahasiswa *)
: Integer ;
Test_1 : Real ;
a, b, c : Real ;
Test_2 : Real ;
nama
NR
(* nilai rata-rata *)
c1, c2 : Char ;
: Real ;
: String ;
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 25
OPERATOROPERATOR
Operator Aritmatika
Operator
+ -
Fungsi
tambah & kurang
div
mod
Hirarki
Operator Relasional
Fungsi
Hirarki
>
>=
<
<=
Operator Logika
Operator
Fungsi
Hirarki
AND
logika AND
OR
logika OR
NOT
logika NOT
XOR
logika XOR
WD2010
Operator
= <>
7 div 3
7 mod 3
17 div 3 mod 2 / 3
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 26
Keterangan
Returns the absolute value of the argument.
Returns the arc tangent of the argument.
Returns a character with a specified ordinal number.
Returns a substring of a string.
Cos
Exp
Frac
Length
WD2010
Copy
Ln
Ord
Pi
Pos
Random
Readkey
Round
Sin
Sqr
Sqrt
Trunc
Nama Prosedur
Keterangan
ClrScr
Clears the screen and returns the cursor to the upper left corner.
Str
Val
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 27
Format:
Read
(var1, var2, ..., varn);
Readln (var1, var2, ..., varn);
Write
(ekspr1, ekspr2, ..., eksprn);
Writeln (ekspr1, ekspr2, ..., eksprn);
Contoh 2
.
.
.
Write ('Masukan nilai A dan B: ');
Readln (A, B);
R := B / A;
T := B mod A;
Q := A * B + R;
.
.
.
Read / Readln
WD2010
Contoh 1
.
.
.
Write ('Masukan nilai A : ');
Readln (A);
Write ('Masukan nilai B : ');
Readln (B);
Write (A);
Writeln (A+B, ' ', A-B);
Write (B);
.
.
.
Write / Writeln
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 28
Program Format;
Uses Dos, Crt;
Var
i
: Integer;
r1, r2 : Real;
ch
: Char;
s
: String;
b
: Boolean;
Begin
i := 317;
r1 := 123.45;
r2 := r1;
ch := 'W';
s := 'Matematika';
b := r1 < i;
Writeln (i:5);
Writeln (r1:10:3, ' ', r2:15);
Writeln (ch:5, ' ', s:15);
Writeln (b:8);
End.
WD2010
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
3 1 7
1 2 3 . 4 5 0
W
1 . 2 3 4 5 0 0 0 0 0 E + 0 2
M a t e m a t i k a
t r u e
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 29
WD2010
<F3>
<F2>
<Alt> <F3>
<Alt> <F9>
<Ctrl> <F9>
Catatan:
Library CRT pada Borland Pascal mengandung error (bug) sehingga
program yang telah di-kompilasi tidak dapat dijalankan pada komputer mikro
yang berbasis processor Celeron / Pentium II dan Pentium III. Untuk
mengatasinya, beberapa orang telah memebuat program patch nya.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 30
INSTRUKSI KONDISIONAL
ekspresi
boolean
Y
Y
blok
instruksi 1
If <ekspresi boolean>
Then
blok
instruksi 1
blok
instruksi 1
blok
instruksi 2
WD2010
ekspresi
boolean
If <ekspresi boolean>
Then
blok
instruksi 1
Else
blok
instruksi 2
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 31
Algoritma Display.
Algoritma ini membaca dua buah bilangan bulat V1 dan V2,
kemudian mencetak yang terbesar.
WD2010
Algoritma Max_3.
Algoritma ini membaca tiga buah bilangan bulat A, B, dan C, kemudian mencetak yang terbesar.
1. Read (A, B, C)
2. If A > B
Then If A > C
Then max :=
Else max :=
Else If B > C
Then max :=
Else max :=
3. Write ('bilangan
4. Exit
A
C
B
C
terbesar bernilai : ', max)
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 32
blok
instruksi 1
End;
blok
instruksi 1
End Else
Begin
End;
WD2010
blok
instruksi 2
'blok instruksi 1' dan 'blok instruksi 2' dapat memuat blok instruksi kondisional yang lain (nested).
Bila blok instruksi hanya terdiri dari satu perintah maka kata kunci 'Begin'
dan 'End' boleh dihilangkan.
Program Display;
Uses Dos, Crt;
Var
v1, v2 : Integer;
max
: Integer;
Begin
ClrScr;
Write ('Masukan dua buah bilangan bulat:');
Readln (v1, v2);
If v1 > v2 Then
Begin
max := v1;
Writeln ('bilangan pertama terbesar');
End Else
max := v2;
Writeln ('bilangan kedua terbesar');
End;
Writeln ('bilangan terbesar bernilai : ', max);
End.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 33
Buat
Buat
WD2010
Buat algoritma untuk membaca nama karyawan, jumlah jam lembur dan
jumlah jam absennya, lalu menentukan dan mencetak jumlah bonusnya.
5. Perhatikan soal nomor 6 dari 'soal-soal latihan 1'. Modifikasilah
algoritma tersebut agar menguji apakah aebd = 0 . Bila hal ini terjadi
maka proses perhitungan solusi tidak perlu dilakukan.
6. Perhatikan soal nomor 7 dari soal-soal latihan 1. Modifikasilah algoritma
tersebut agar menguji semua data masukan positif dan nilai V1 < V2.
7. Buat algoritma untuk membaca ketiga sisi dari sebuah segitiga (S1, S2,
S3) dan menentukan jenis dari segitiga tersebut berdasarkan kriteria
berikut: misalkan A nilai terbesar dari ketiga sisi tersebut dan B, C
adalah sisi-sisi lainnya.
Jika A >= B + C maka segitiga tidak ada
Jika A^2 = B^2 + C^2 maka segitiga siku-siku
Jika A^2 > B^2 + C^2 maka segitiga tumpul
Jika A^2 < B^2 + C^2 maka segitiga lancip
8. Buat algoritma untuk membaca sebuah bilangan bulat, lalu menentukan
apakah bilangan tersebut kelipatan 8.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 34
ekspresi
boolean
i := 1, 2, ..., n
Y
Blok
Instruksi
Blok
Instruksi
WD2010
For i := 1, 2, ..., n
Blok
Instruksi
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 35
i
-2
-1
0
1
2
3
4
5
6
7
8
9
10
A
0
-2
-3
-3
-2
0
3
7
12
18
25
33
42
52
B
0
1
2
3
4
5
6
7
8
9
10
11
12
13
A := 0
For i := 1,2,...,3
A := A + i^2
For j := 9,10,...,11
A := A + j
i
1
1
1
1
2
2
2
2
3
3
3
3
9
10
11
9
10
11
9
10
11
A
0
1
10
20
31
35
44
54
65
74
83
93
104
WD2010
A := 0
B := 0
For i := -2,-1,...,10
A := A + i
B := B + 1
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 36
Algoritma FAKTORIAL2
Algoritma ini membaca bilangan
bulat n dan menghitung nilai
faktorialnya.
1. Read (n)
2. Fak := 0;
3. For i := 1, 2, ..., n
Fak := Fak * i
4. Exit
1. Read (n)
2. Fak := 0;
3. i := 1;
4. While i <= n
Fak := Fak * i
i := i + 1;
5. Exit
WD2010
Algoritma FAKTORIAL1
Algoritma ini membaca bilangan
bulat n dan menghitung nilai
faktorialnya.
1. n := 10
2. sum := 0;
3. For i := 1, 2, ..., n
sum := sum + i
4. Write (sum)
1. i := 1
2. sum := 0;
3. While sum <= 100
sum := sum + 1.0/i
i := i + 1
4. Write (sum)
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 37
To
<m> Do
DownTo
Begin
Blok
Instruksi
Repeat
Blok
Instruksi
Blok
Instruksi
Fak := 1;
For i := 1 to n Do
Begin
Fak := Fak * i;
End;
WD2010
turun.
End;
Fak := 1;
i := 1;
Repeat
Fak := Fak * i;
i := i + 1;
Until i>n;
Fak := 1;
i := 1;
While i<=n Do
Begin
Fak := Fak * i;
i := i + 1;
End;
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 38
S1 = 1, S2 = 1, Sn = Sn1 + Sn2 n 3
Buat algoritma untuk membaca nilai n lalu menghitung nilai Sn
(Buat dua buah, dengan instruksi For dan While).
WD2010
12. Suatu string disebut palindrome bila mempunyai struktur yang sama bila
dibaca dari kanan maupun kiri. Contohnya: 'ABBA'. Buat algoritma
untuk menguji apakah suatu string termasuk palindrome.
Catatan: untuk mendapatkan panjang string, gunakan fungsi Length,
dan untuk mengakses elemen ke i dari string T, gunakan T[i].
Dari soal-soal di atas, tentukanlah yang tidak dapat dibuat dengan instruksi 'For'
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 39
c1 AND c2
true
false
false
false
c2
true
false
true
false
c1 XOR c2
false
true
true
false
c1
true
true
false
false
c2
true
false
true
false
c1 OR c2
true
true
true
false
NOT c1
true
false
WD2010
c1
true
true
false
false
Tabel logika OR
Algoritma Max_3_Revisi1.
Algoritma ini membaca tiga buah bilangan bulat A, B, dan C,
kemudian mencetak yang terbesar.
1.
2.
3.
4.
5.
6.
Read (A, B, C)
If (A>B) AND (A>C) Then max := A
If (B>A) AND (B>C) Then max := B
If (C>A) AND (C>B) Then max := C
Write ('bilangan terbesar bernilai : ', max)
Exit
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 40
u := x + y i
v := a + b i
u + v := (x+a) + (y+b) i
u v := (x-a) + (y-b) i
u * v := (x*a y*b) + (x*b + y*a) i
u / v := ((x*a + y*b) + (y*a x*b) i) / (a*a + b*b)
p := 10.0
q := 20.0
r1 := p + q
r2 := p q
r3 := p * q
r4 := p / q
a11
a
A = 21
a31
a41
a12
a13
a22
a32
a23
a33
a42
a43
a14
a24
a34
a44
WD2010
K
x = ( x1 , x2 ," , xn )
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 41
nama1
Nia
nilai1
nama2
48
Tuti
nilai2
nama3
82
Ani
nilai3
nama4
78
Nani
nilai4
nama5
62
Irma
nilai5
Rata_2
Output
WD2010
92
?
72.4
Tuti
Ani
Irma
17
56
837
451 -192
-3
24
31
B 1
17
56
837
-3
24
31
45
12
-421 217
58
90
37
46
-652
66
34
45
-48
23
10
-2
24
61
-23
44
61
73
25
84
32
33
29
46
-57
-213
-38
-41
75
49
92
451 -192
WD2010
Array adalah data terstruktur yang terdiri dari satu nama, tetapi mempunyai beberapa kotak memori.
Setiap kotak memori pada array berfungsi sebagai sebuah variabel.
Semua data pada kotak memori sebuah array harus bertipe sama.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 43
1. For i := 1,2,...,5
Read (nama[i], nilai[i])
2. Rata_2 := 0
3. For i := 1,2,...,5
Rata_2 := Rata_2 + nilai[i]
4. Rata_2 := Rata_2 / 5
5. For i := 1,2,...,5
If nilai[i] > Rata_2 Then Write (nama[i])
6. Exit
Nia
48
Tuti
82
Ani
78
Nani
62
Irma
92
48
130
208
270
362
WD2010
Algoritma Class_Stat_REV1
Diberikan daftar lima orang siswa, masing-masing terdiri dari nama dan nilai
ujiannya. Algoritma berikut menghitung nilai rata-ratanya dan mencetak
nama-nama siswa yang nilainya di atas nilai rata-rata.
Tuti
Ani
Irma
Perubahan apa yang harus dilakukan bila siswa yang diproses berjumlah 100.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 44
1. n := 5
2. For i := 1,2,...,n
Read (nama[i], nilai[i])
3. Rata_2 := 0
For i := 1,2,...,n
Rata_2 := Rata_2 + nilai[i]
4. Rata_2 := Rata_2 / n
5. For i := 1,2,...,n
If nilai[i] > Rata_2 Then Write (nama[i])
6. Exit
WD2010
Algoritma Class_Stat_REV2
Diberikan daftar lima orang siswa, masing-masing terdiri dari nama dan nilai
ujiannya. Algoritma berikut menghitung nilai rata-ratanya dan mencetak
nama-nama siswa yang nilainya di atas nilai rata-rata.
Algoritma Class_Stat_REV3
Diberikan daftar n siswa (n dibaca), masing-masing terdiri dari nama dan
nilai ujiannya. Algoritma berikut menghitung nilai rata-ratanya dan mencetak
nama-nama siswa yang nilainya di atas nilai rata-rata.
1. Read (n)
2. For i := 1,2,...,n
Read (nama[i], nilai[i])
3. Rata_2 := 0
For i := 1,2,...,n
Rata_2 := Rata_2 + nilai[i]
4. Rata_2 := Rata_2 / n
5. For i := 1,2,...,n
If nilai[i] > Rata_2 Then Write (nama[i])
6. Exit
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 45
Var
n
:
nama :
nilai :
Rata_2:
i
:
WD2010
Program Class_Stat_Rev3;
(* implementasi algoritma Class_Stat_Rev3 pada pascal *)
Uses Dos, Crt;
Integer; (* banyaknya siswa yang diproses *)
Array [1..100] Of String; (* nama-2 siswa *)
Array [1..100] Of Real;
(* nilai-2 siswa *)
Real;
(* nilai rata-rata *)
Integer; (* counter loop *)
Begin
(* membaca banyaknya siswa *)
Write(Masukan jumlah siswa : ); Readln(n);
(* memasukan nama dan nilai siswa sebanyak n buah *)
For i := 1 to n Do
Begin
Write(Masukan nama dan nilai siswa ke , i, : );
Readln(nama[i], nilai[i]);
End;
(* menghitung nilai rata-rata *)
Rata_2 := 0;
For i := 1 to n Do Rata_2 := Rata_2 + nilai[i];
Rata_2 := Rata_2 / n;
(* mencetak nama siswa yang nilainya diatas rata_2 *)
For i := 1 to n Do
Begin
If nilai[i] > Rata_2 Then Writeln(nama[i]);
End;
End.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 46
n
1
(ai a ) 2
n 1 i =1
WD2010
G
4. Diberikan sebuah vektor integer dengan n elemen, a = (a1, a2 ,",an ) dan
K
bilangan bulat b. Buat algoritma untuk mencetak indeks-indeks dari a
yang nilainya sama dengan b.
5. Diketahui sebuah vektor integer a dengan n elemen. Buat algoritma untuk menentukan indeks yang nilai mutlaknya terbesar.
Ilustrasi: a = (15, 31, 23, 15, 75, 23, 41, 15, 31, 85)
Output: 15 31 23 75 41 85
Ilustrasi: a = ('A', 'A', 'B', 'C', 'D', 'B', 'E', 'F', 'F', 'E', 'A', 'B', 'G', 'B', 'W', 'B')
Output: 0100030013960202
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 47
SELECTION SORT
K
73
a2
65
a3
52
a4
24
a5
83
a6
17
a7
35
a8
96
a9
41
a10
Pada tahap kedua (pass 2), dicari lagi elemen terkecil dari a ,
(elemen minimum ke dua). Selanjutnya elemen ini di-copy-kan
K
K
pada posisi kedua dari x , dan elemen minimum dari a
tersebut diganti dengan 9999.
WD2010
a1
Pass
1
10
73
73
73
73
73
73
73
73
9999
9999
65
65
65
65
65
65
65
9999
9999
9999
52
52
52
52
52
52
9999
9999
9999
9999
24
24
24
9999
9999
9999
9999
9999
9999
9999
83
83
83
83
83
83
83
83
83
9999
17
17
9999
9999
9999
9999
9999
9999
9999
9999
35
35
35
35
9999
9999
9999
9999
9999
9999
96
96
96
96
96
96
96
96
96
96
41
41
41
41
41
9999
9999
9999
9999
9999
10
9999
9999
9999
9999
9999
9999
9999
9999
9999
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 48
Pass 1
MinIdx := 1
For i := 1,2,,n
If a[i] < a[MinIdx] Then MinIdx := i
x[1] := a[MinIdx]
a[MinIdx] := 9999
Pass 2
MinIdx := 1
WD2010
For i := 1,2,,n
If a[i] < a[MinIdx] Then MinIdx := i
x[2] := a[MinIdx]
a[MinIdx] := 9999
Pass j
MinIdx := 1
For i := 1,2,,n
If a[i] < a[MinIdx] Then MinIdx := i
x[j] := a[MinIdx]
a[MinIdx] := 9999
Pass n
MinIdx := 1
For i := 1,2,,n
If a[i] < a[MinIdx] Then MinIdx := i
x[n] := a[MinIdx]
a[MinIdx] := 9999
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 49
Algoritma Selection_Sort
Diberikan vektor numerik a dengan n elemen, algoritma ini mengurutkan
isinya secara asending. Vektor x digunakan untuk menyalin isi vektor a
dalam bentuk terurut, yaitu x[1] x[2] x[n]. Variabel Pass digunakan
untuk menyatakan indeks dari 'pass'. Variabel MinIdx digunakan untuk
menunjukan posisi elemen terkecil dari vektor a. Pada algoritma ini seluruh
elemen vektor a diasumsikan lebih kecil dari 9999.
1. [Membaca banyaknya elemen dari vektor a]
Read (n)
2. [Membaca elemen-elemen vektor a]
Read (a[i])
3. [Proses pengurutan data]
For Pass := 1,2,,n
MinIdx := 1
For i := 2,3,,n
If a[i] < a[MinIdx] Then MinIdx := i
x[Pass] := a[MinIdx]
a[MinIdx] := 9999
4. [Mencetak isi vektor x]
For i := 1,2,,n
Write (x[i])
WD2010
For i := 1,2,,n
5. Exit
Pada pass 1, dicari indeks pada a , mulai posisi pertama, yang elemennya terkecil. Selanjutnya elemen ini ditukarkan dengan elemen pertama. Dengan demikian elemen terkecil sudah berada pada posisi pertama.
WD2010
Pada pass 2, dicari indeks pada a , mulai posisisi kedua, yang elemennya terkecil. Selanjutnya elemen ini ditukarkan dengan elemen kedua. Dengan demikian elemen terkecil kedua sudah berada pada posisi kedua.
Pada pass i, dicari indeks pada a , mulai posisi ke-i, yang elemennya terkecil.
Selanjutnya elemen ini ditukarkan dengan elemen ke-i. Dengan demikian elemen ke i tersebut sudah berada pada posisi ke-i.
Untuk mengurutkan semua data diperlukan proses sebanyak pass.
Pass
1
10
73
65
65
17
17
17
17
17
17
17
17
52
52
52
24
24
24
24
24
24
24
24
24
24
52
35
35
35
35
35
35
83
83
83
83
83
41
41
41
41
41
17
17
65
65
65
65
52
52
52
52
35
35
35
35
52
52
65
65
65
65
96
96
96
96
96
96
96
96
73
73
41
41
41
41
41
83
83
83
83
83
10
73
73
73
73
73
73
73
96
96
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 51
Pass 1
MinIdx := 1
For i := 2,3,,n
If a[i] < a[MinIdx] Then MinIdx := i
If MinIdx <> 1 Then a[1] a[MinIdx]
MinIdx := 2
For i := 3,4,,n
WD2010
Pass 2
Pass j
MinIdx := j
For i := j+1,j+2,,n
If a[i] < a[MinIdx] Then MinIdx := i
If MinIdx <> j Then a[j] a[MinIdx]
Pass n-1
MinIdx := n-1
For i := n,n
If a[i] < a[MinIdx] Then MinIdx := i
If MinIdx <> n-1 Then x[n-1] a[MinIdx]
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 52
Algoritma Selection_Sort_Rev1
Diberikan vektor numerik a dengan n elemen, algoritma ini menukarnukarkan isinya sehingga terurut asending, yaitu a[1] a[2] a[n].
Variabel Pass digunakan untuk menyatakan counter dari proses. Variabel
MinIdx digunakan untuk menunjukan posisi elemen terkecil dari vektor a
pada setiap pass.
1. [Membaca banyaknya elemen dari vektor a]
Read (n)
2. [Membaca elemen-elemen vektor a]
For i := 1,2,,n
WD2010
Read (a[i])
Jumlah operasi pembandingan pada metode Selection Sort = n2 sedangkan pada metode selection sort revisi 1 adalah n(n-1)/2, Buktikan !
Ilustrasi, misalkan banyaknya data yang diurutkan n=100000 dan satu operasi pembandingan membutuhkan waktu 10-6 detik. Waktu yang dibutuhkan oleh metode selection sort adalah 10000 detik (sekitar 3 jam) sedangkan dengan metode selection sort revisi 1 dibutuhkan waktu sekitar
5000 detik (sekitar 1 jam).
Catatan: Untuk pembahasan selanjutnya yang dimaksudkan dengan metode
selection sort adalah metode selection sort revisi 1.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 53
BASIC SEARCHING
Algoritma Linear_Search1
Diberikan vektor a, dengan n elemen. Algoritma berikut ini mencari elemen
pada vektor tersebut yang nilainya x.
WD2010
1. Read (n)
2. For i := 1, 2, ..., n
Read (a[i])
3. Read (x)
4. i := 1
5. While (i <= n) AND (a[i] <> x)
i := i + 1
6. If i<=n Then Write ('Data ', x, ' ada diposisi ke', i)
Else Write ('Data yang dicari tidak ketemu')
7. Exit
Algoritma Linear_Search2
73
65
52
24
83
17
35
96
41
Pada kondisi terburuk, di mana data yang dicari berada pada posisi terakhir, jumlah operasi pembandingan:
Algoritma Linear_Search1 : kali
Algoritma Linear_Search2 : kali
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 54
BINARY SEARCH
Algoritma Binary_Search
Diberikan vektor a yang terurut asending, dengan n elemen. Algoritma
berikut ini mencari elemen pada vektor tersebut yang nilainya x.
a1
100
a2
150
a3
200
a4
250
a5
300
a6
350
a7
400
a8
450
a9
500
WD2010
1. Read (n)
2. For i := 1, 2, ..., n
Read (a[i])
3. Read (x)
4. Low := 1
5. High := n
6. ketemu := false
7. While (Not ketemu) AND (Low <= High)
Middle := (Low + High) / 2
If x < a[Middle]
Then High := Middle 1
Else If x > a[Middle]
Then Low := Middle + 1
Else ketemu := true
8. If ketemu
Then Write ('Data ', x, ' ada diposisi ke', middle)
Else Write ('Data yang dicari tidak ketemu')
9. Exit
a11
600
a12 650
a13 700
time
a10 550
Linear Search
Binary Search
a14 750
a
800
15
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 55
10
11
12
13
14
15
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
High
Middle
a [Middle]
ketemu
15
450
false
15
12
650
11
10
550
10
11
12
WD2010
iterasi
false
true
13
14
15
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
Low
High
Middle
a [Middle]
ketemu
15
450
false
15
12
650
false
13
15
14
750
false
13
13
13
750
false
______________________________________________________________________________________________
5
13
12
false
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 56
MERGING
20
10
30
35
15
55
20
65
25
30
10
15
35
40
45
25
50
40
55
45
50
60
60
65
70
70
75
75
Algoritma Simple_Merge
WD2010
Diberikan vektor a dan b dengan n dan m elemen yang telah terurut asending.
Algoritma berikut ini menggabungkannya menjadi satu vektor c yang juga terurut asending. Variabel i, j dan k berfungsi sebagai indeks pada elemen vektor
a, b dan c yang sedang diproses. Bagian masukan dan keluaran tidak disertakan pada algoritma ini (silakan dilengkapi sendiri).
1.
2.
3.
4.
i := 1
j := 1
k := 1
[proses merging sampai salah satu vektor a atau b habis]
While (i <= n) AND (j <= m)
If a[i] <= b[j]
Then c[k] := a[i]
i := i + 1
Else c[k] := b[j]
j := j + 1
k := k + 1
5. [copy sisa vektor yang belum habis ke vektor c]
If i > n
Then For r := j,j+1,...,m
c[k] := b[r]
k := k + 1
Else For r := i,i+1,...,m
c[k] := a[r]
k := k + 1
6. Exit
Merging adalah proses menggabungkan dua atau lebih vektor yang telah terurut menjadi sebuah vektor baru yang juga terurut.
a1
i
a2
an
b1
j
b2
bm
c1
c2
cn+m
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 57
20
30
35
55
65
10
15
25
40
45
50
60
70
75
20
30
35
55
65
10
15
25
40
45
50
60
70
75
20
30
35
55
65
10
15
25
40
45
50
60
70
75
20
30
35
55
65
10
15
25
40
45
50
60
70
75
15
25
40
45
50
iter
a[i]
b[j]
a[i] b[j]
c[k]
20
10
false
10
20
15
false
15
20
25
true
20
30
25
false
25
30
40
WD2010
true
30
35
40
true
35
55
40
false
40
55
45
false
45
55
50
false
50
10
10
55
60
true
55
11
11
65
60
false
60
12
12
65
70
true
65
13
20
30
35
55
65
10
60
70
75
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 58
MERGE SORT
73
65
52
24
83
17
35
96
17
83
35
96
17
35
83
96
65
73
Pass 1
65
73
24
52
Pass 2
24
52
65
73
17
24
35
52
WD2010
Pass 3
83
96
Diketahui vektor a dengan n=2m elemen. Vektor ini akan diurutkan secara asending melalui serangkaian operasi merge. Berikut ini disajikan langkah-langkahnya.
Pada pass 1, tiap 1=20 elemen dari vektor a dipandang sebagai sub-vektor. Pada
tiap pasang (dua buah) sub-vektor dilakukan proses merging. Hasilnya adalah
sub-vektor terurut dengan 2=21 elemen, sebanyak n/21 buah.
Pada pass 2, tiap 2=21 elemen dari vektor a dipandang sebagai suatu sub-vektor.
Pada tiap pasang sub-vektor dilakukan lagi proses merging. Hasilnya adalah subvektor terurut dengan 4=22 elemen, sebanyak n/22 buah.
Pada pass 3, tiap 4=22 elemen dari vektor a dipandang sebagai suatu sub-vektor.
Pada tiap pasang sub-vektor dilakukan lagi proses merging. Hasilnya adalah subvektor terurut dengan 8=23 elemen, sebanyak n/23 buah.
Pada pass k, tiap 2k-1 elemen dari vektor a dipandang sebagai suatu sub-vektor.
Pada tiap pasang sub-vektor dilakukan lagi proses merging. Hasilnya adalah subvektor terurut dengan 2k elemen, sebanyak n/2k buah.
Secara umum, untuk menyelesaikan proses pengurutan sebanyak n=2m elemen
diperlukan langkah sebanyak pass
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 59
Pass 1
a
24
52
65
73
17
35
83
96
Pass 2
b
17
24
35
52
65
73
83
96
Pass 3
WD2010
a
73
65
52
24
83
17
35
96
Misalkan ukuran vektor a adalah n. Variabel-variabel utama yang diperlukan untuk mengontrol proses pada langkah ke 'pass' adalah:
size = 2pass-1 : ukuran sub-vektor yang akan di-merge.
Telah terurut
WD2010
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 61
a12
a13
"
a22
a23
"
a32
a33
"
am3
%
"
am2
a1n
a2n
a3n
#
amn
Representasi lojik
array dua dimensi
Representasi fisik
array dua dimensi
WD2010
a11
a
21
a = a31
#
amn
42
52
23
31
92
17
35
a11 a12
a2n
am1 am2
amn
73
86
i := 4;
a[i,3] := a[4,1] + b a[2,8]
For t := 1 to 5
a[t,t+1] := t^2
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 62
WD2010
: data skalar.
: tipe-tipe data primitif /
tipe-tipe data baru yang sudah dideklarasikan.
Contoh:
Var
m : Array[1..5, -2..4] Of Integer;
Begin
m[2,-1] := 7;
For i := 1 to 5 Do m[i,-1] := i*i;
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 63
SOAL-SOAL LATIHAN 5
Sorting, Searching dan Array 2 dimensi
1. Modifikasilah algoritma Selection Sort (revisi 1) agar pengurutan dilakukan
dengan mencari elemen terbesar lalu meletakannya pada akhir vektor.
2. Diberikan sebuah vektor a dengan n elemen. Buat algoritma untuk menyusun
elemen-elemen vektor tersebut agar tersusun sebagai berikut: a1 terbesar, a2
terkecil, a3 terbesar kedua, a4 terkecil kedua, dan seterusnya.
3. Bubble Sort adalah salah satu metode pengurutan yang cukup populer. Pada
WD2010
73
65
52
65
65
65
65
65
65
65
65
65
73
52
52
52
52
52
52
52
52
52
73
24
24
24
24
24
24
24
24
24
24
73
73
73
73
73
73
73
83
83
83
83
83
17
17
17
17
17
17
17
17
17
17
83
35
35
35
35
35
35
35
35
35
35
83
83
83
83
96
96
96
96
96
96
96
96
41
41
41
41
41
41
41
41
41
41
96
10
96
Susunlah algoritma Bubble Sort agar mengurutkan seluruh isi array secara
asending. Perhatikan: bila pada pass tertentu tidak terjadi proses penukaran
elemen maka vektor tersebut telah terurut, sehingga pass berikutnya tidak
perlu dilakukan.
4. Modifikasilah algoritma Bubble Sort untuk mengurutkan secara asending,
tetapi prosesnya dengan cara menempatkan elemen-elemen terkecil terlebih
dahulu pada bagian awal vektor.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 64
52
24
83
17
35
96
41
65
73
24
52
17
83
35
96
41
24
52
65
73
17
35
83
96
41
17
24
35
52
65
73
83
96
41
17
24
35
41
52
65
73
WD2010
73
83
96
| a ii | >
|ai j|
i := 1, 2 , " , n
j =1, j i
10. Diberikan dua buah matriks A dan B, masing-masing ukuran nm. Buat
algoritma untuk menjumlahkan kedua matriks tersebut dan menyimpan
hasilnya pada matriks C.
11. Diberikan sebuah matriks A ukuran nm dan sebuah vektor b ukuran m. Buat
algoritma untuk mengalikan A dengan c dan hasilnya simpan di vektor k.
12. Buat algoritma untuk mengalikan sebuah matriks A ukuran nm dengan
matriks B ukuran mp. Hasilnya simpan di matriks C.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 65
WD2010
Situasi yang sama dengan masalah pembuatan mobil di atas terjadi pada
banyak disiplin lain, termasuk masalah pemrograman komputer. Proses
pemrograman komputer akan jauh lebih mudah bila kita dapat memanfaatkan komponen-komponen program yang sudah tersedia. Yang dimaksudkan dengan komponen-komponen di sini adalah program-program aplikasi yang telah dikompilasi untuk keperluan-keperluan tertentu dan disebut
sebagai subprogram / subroutine.
Contoh-contoh subroutine:
subroutine untuk masalah komputasi numerik (pada Fortran: IMSL)
subroutine untuk aplikasi basis data (database).
Dengan memanfaatkan subprogram yang telah tersedia, seorang pemrogram dapat lebih mem-focus-kan pekerjaanya pada pemecahan problem
yang dihadapi ketimbang memikirkan detail dari algoritma-algoritma yang
harus dibuat.
Sebagai ilustrasi, misalkan akan dibuat program komputer untuk
pemrosesan data mahasiswa. Komponen-komponen yang diperlukan
diantaranya adalah: rutin pembacaan data, rutin pemrosesan data, rutin
peng-edit-an data, dan rutin pencetakan data. Disamping itu untuk
menentukan ranking, diperlukan rutin pengurutan data. Bila rutin-rutin
tersebut telah tersedia, pemrogram dapat mengkonsentrasikan pekerjaannya
pada aliran proses yang harus dilakukan, tanpa harus memikirkan detail
pembuatan rutin-rutin tersebut.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 66
PROGRAM UTAMA
PEMROSESAN DATA MAHASISWA
SUBROUTINE
PEMASUKAN
PENCETAKAN
WD2010
SUBROUTINE
DATA
DATA
SUBROUTINE
PEMROSESAN
DATA
SUBROUTINE
SUBROUTINE
PENAMBAHAN
PENGHAPUSAN
DATA
DATA
SUBROUTINE
SUBROUTINE
PERBAIKAN
PENGURUTAN
DATA
DATA
FUNCTION
Untuk memudahkan pembuatan program komputer, bahasa-bahasa
pemrograman tingkat tinggi pada umumnya telah dilengkapi dengan fungsifungsi dasar. Fungsi-fungsi dasar tersebut antara lain adalah fungsi-fungsi
trigonometri, fungsi logaritma, fungsi nilai mutlak, fungsi-fungsi untuk operasi
string dan lain-lain. Fungsi-fungsi demikian disebut built-in function (fungsi
pustaka / fungsi intrinsic).
Fungsi-fungsi pustaka dapat kita gunakan secara langsung di dalam suatau
ekspresi. Sebagai contoh, perintah:
k := sin(1 ) + cos( 2 )
WD2010
Function SIN
2
k := sin(1 ) + cos( 2 )
Function COS
4
1.
2.
3.
4.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 68
Algoritma Test_Average
WD2010
Berikut ini disajikan tatacara penulisan fungsi dalam bahasa algoritma serta
penggunaannya dalam sebuah program.
A := 2.0
B := 6.1
C := 7.5
D := Average (A, B, C)
Write (D)
E := Average (C, A, B) + Average (B, 3.2, A+7)
Write (E)
Exit
1.
Function digunakan untuk mengevaluasi suatu ekspresi yang menghasilkan sebuah nilai.
2.
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 69
PROCEDURE
Fungsi merupakan alat yang sangat berguna dalam proses pemrograman,
akan tetapi fasilitas fungsi mempunyai keterbatasan. Fungsi hanya
menggantikan sebuah ekspresi tertentu yang digunakan dalam sebuah
program komputer dan menghasilkan satu buah nilai.
Banyak permasalahan pada pemrograman yang tidak dapat direalisasikan
dengan fungsi, misalnya rutin untuk pengurutan data, rutin untuk
menyelesaikan sistem persamaan linear, rutin untuk menyelesaikan
masalah persamaan diferensial dan lain-lain.
WD2010
Algoritma Test_Divide
1. A := 5
2. B := 3
3. Call DIVIDE (A, B, X, Y)
4. Write (X, Y)
5. Call DIVIDE (A*B-1, B+1, V, W)
6. Write (V, W)
7. Exit
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 70
temp := x
x := y
y := x
Return
Algoritma Sort_3
1.
2.
3.
4.
5.
6.
Read (a, b, c)
If a > b Then Tukar (a,b)
If b > c Then Tukar (b,c)
If a > b Then Tukar (a,b)
Write (a, b, c)
Exit
Pelacakan algoritma Sort_3
Kasus
WD2010
Algoritma ini membaca tiga buah bilangan a, b dan c, lalu mengurutkannya secara asending. Proses penukaran isi variabel dilakukan
menggunakan prosecure Tukar.
Output
3 5 7
2 6 9
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 71
1 . 432
WD2010
______________________________________________________________________________________________
Warsoma Djohan / Prodi. Matematika FMIPA-ITB / MA2251/2010/ 72