.review pascal
basic structure
program x;
var
{Deklarasi variabel}
i,j,k : integer;
const
{Deklarasi konstanta}
PI = 3.1415;
procedure p(str:ansistring);
begin
{Isi prosedur}
end;
function f(x:integer):integer;
begin
{Isi fungsi}
end;
begin
{Isi program utama}
end.
conditional
conditional
conditional
loop
loop
repeat
{do something until true}
until {conditional};
loop
loop
contoh soal
10
contoh soal
10
tipe data
Tipe
byte
shortint
smallint
word
integer
cardinal
longint
int64
qword
Range
0..255
-128..127
-32.768..32.767
0..65.535
smallint or longint
longword
-2147483648..2147483647
-9223372036854775808..9223372036854775807
0..18446744073709551615
11
swapping
13
swapping
13
swapping
13
euclidean algorithm
gcd(a, b) =
a,
if b = 0.
otherwise.
14
euclidean algorithm
function gcd(a,b:integer):integer;
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b);
end;
14
sieve of eratosthenes
15
fast exponentiation
b =
1,
e
2
if e = 0
e
2
b b ,
b be1 ,
if even.
if odd.
16
fast exponentiation
function pangkat(b,e:integer):longint;
var
tmp:longint;
begin
if e=0 then pangkat:=1
else if (e mod 2 = 1) then
pangkat:=b*pangkat(e-1)
else begin
tmp:=pangkat(e div 2);
pangkat:=tmp*tmp;
end;
end;
16
fast exponentiation
function pangkat(b,e:longint):longint;
var
res:longint;
begin
while e>0 do begin
if (e mod 2 = 1) then
res *= b;
e := e div 2;
b := b * b;
end;
pangkat := res;
end;
16
procedure dfs(x,y:integer);
begin
if safe(x,y) then begin
visited[x,y]:=true;
// Process..
dfs(x,y+1);
dfs(x,y-1);
dfs(x+1,y);
dfs(x-1,y);
end;
end;
17
.rekursi
factorial
function factorial(x:integer):longint;
begin
if x<2 then factorial:=x
else factorial:= x * factorial(x-1);
end;
19
fibonacci
function fib(n:integer):longint;
begin
if n<2 then fib:=1
else fib:=fib(n-1)-fib(n-2);
end;
20
struktur umum
function f(parameter):return_value;
begin
if ... then f:=base_case
else f:= f() //recurse ;
end;
21
approach
function sikat(x,y:longint):longint;
begin
if (x>=y) then sikat:=x
else sikat:=3*sikat(x+1,y)+2*sikat(x,y-1);
end;
22
approach
function sikat(x,y:longint):longint;
begin
if (x>=y) then sikat:=x
else sikat:=3*sikat(x+1,y)+2*sikat(x,y-1);
end;
1. Pohon Faktor
22
approach
function sikat(x,y:longint):longint;
begin
if (x>=y) then sikat:=x
else sikat:=3*sikat(x+1,y)+2*sikat(x,y-1);
end;
1. Pohon Faktor
2. Tabel DP
22
approach
function sikat(x,y:longint):longint;
begin
if (x>=y) then sikat:=x
else sikat:=3*sikat(x+1,y)+2*sikat(x,y-1);
end;
1. Pohon Faktor
2. Tabel DP
3. Khusus
22
approach
var
data :
array[1..10] of integer =
(3,9,2,6,1,4,7,8,5,10);
procedure kambing(m : integer);
begin
if (m<=10) then
begin
kambing(m*2);
write(data[m], );
kambing(m*2+1);
end;
end;
.sorting
bubble sort
swapped:=true;
repeat
swapped:=false;
for i:=2 to n do begin
if A[i]>A[i-1] then begin
swap(A[i],A[i-1]);
swapped:=true;
end;
end;
n:=n-1;
until swapped=false;
25
selection sort
26
insertion sort
27
Merge Sort
28
Merge Sort
Heap Sort
28
Merge Sort
Heap Sort
Quick Sort
28
Merge Sort
Heap Sort
Quick Sort
Topological Sort
28
fin.
29