Ekuivalensi
Notasi
Algoritmik
Dengan
ETNA
wijanarto
Outline
•
Struktur
Program
•
Type,
konstanta,
deklarasi,
assignment
•
Input/output
•
Analisis
kasus
•
Pengulangan
•
Subprogram
(fungsi,
prosedur)
•
Type
data
koleksi:
array
Struktur
Umum
•
Notasi
Algoritmik
Program <nama
‐
program>
Program
<nama
‐
program>
{
Spesifikasi
teks
algoritmik
secara
umum
}
KAMUS
{
Definisi
konstanta,
type,
deklarasi
variabel,
spesifikasi
prosedur,
fungsi
}
ALGORITMA
ALGORITMA
{
Teks
algoritma
‐
tidak
berada
di
antara
tanda
kurung
kurawal
}
Struktur
Umum
•
Notasi
Algoritmik
Program <nama
‐
program>
Program
<nama
‐
program>
{
Spesifikasi
teks
algoritmik
secara
umum
}
KAMUS
{
Definisi
konstanta,
type,
deklarasi
variabel,
spesifikasi
prosedur,
fungsi
}
ALGORITMA
ALGORITMA
{
Teks
algoritma
‐
tidak
berada
di
antara
tanda
kurung
kurawal
}
Struktur
Umum
•
ETNA
[lib][macro][declType][variable]
[constant][function][mainfunction]
Program {
}
Type,
Konstanta,
Variable,
Assignment
Konstanta
Dan
Variable
Notasi Algoritmik ETNA Konstanta constant <nama>:<type>=<harga> Konstanta Constant<nama>:<type>=<harga>; Deklarasi Variable <nama> : <type> Inisialisasi/Assignment Deklarasi Variable
Var <nama> : <type> [Init] ;
Inisialisasi/Assignment
<nama> ← <harga> <nama><harga>
Konstanta
Dan
Variable
Program Test
{Tes konstanta, variable, assignment, inisialisasi...}
KAMUS
Constant lima : Real = 5.0 ; Constant PI : Real = 3.14 ; {Deklarasi Variabel} Var L, r : Real ;
KAMUS
{Konstanta}
constant lima : real = 5.0 constant PI : real = 3.14 {Deklarasi Variabel} L, r : real I : integer ALGORITMA I ← 1 {Inisialisasi} Var L, r : Real ; Var I : Integer ; Program { I ← 1 //Inisialisasi r ← 10.0 //Inisialisasi ... } r ← 10.0 {Inisialisasi} ...
Assignment
Assignment <nama1> ← <nama2> <nama> ← <konstanta> <nama>←<ekspresi> Assignment <nama1> ← <nama2> <nama> ← <konstanta> <nama>←<ekspresi> nama ← ekspresinama1 ← nama1 <opr> nama2
Contoh: L ← PI * r * r x ← x * y i ← i + 1 i ← i – 1 nama ← ekspresi nama1 ← nama1 <opr> nama2
Contoh:
L ← PI * r * r ; x ← x * y ; i ← i + 1 ; i ← i – 1 ;
Type
Data
Character
•
Contoh
deklarasi:
Var
CC:Character;
C
t h k
t t
•
Contoh
konstanta:
‘c’
karakter
c
‘0’
karakter
0
‘\013’
karakter
vertical
tab
•
Jenis
‐
jenis
character:
– [signed]
Character
–
unsigned
Character
Character
pada
dasarnya
adalah
integer
1
byte
(8
bits)
Type
Data
Integer
•
Contoh
deklarasi:
Var
i
:
Integer;
Var
j:
Short
Integer;
•
Contoh
konstanta:
1
2
0
‐
1
•
Jenis
‐
jenis
integer
–
[signed]
Integer
–
Natural
size
of
integers
in
host
machine,
eg.
32
bits
–
No
shorter
than
short
int,
no
longer
than
long
int
–
[signed]
short
[
Integer
]
–
Min.
16
bits
of
integer
[signed]
long [
Integer
]
–
[signed]
long
[
Integer
]
–
Min.
32
bits
of
integer
–
unsigned
Integer
,
unsigned
short
[
Integer
],
unsigned
long
[Integer]
• Positive integers only and 0
Type
Data
Real
•
Contoh
deklarasi:
Var
f1
:
Real;
Var
f2:
Double;
•
Contoh
konstanta:
3.14
0.0
1.0e+2
5.3e
‐
2
•
Jenis
‐
jenis
Real
–
Real
• Single‐precision floating point
• 6 digits decimal
–
Double
• DoubleDouble precision‐precision floating point floating point
• Eg. 10 digits decimal
–
Long
Double
• Extended‐precision floating point
Type
Data
Boolean
•
ETNA
tidak
menyediakan
type
boolean
–
Ada banyak cara untuk mendefinisikan boolean
Ada
banyak
cara
untuk
mendefinisikan
boolean
•
Cara
1:
Digunakan
nilai
integer
untuk
menggantikan
nilai
true
&
false:
–
true
=
nilai
bukan
0
–
false
=
0
•
Cara
2:
Definisikan
sbg.
konstanta:
f
b
l
d h
Def
boolean
unsigned
char
Def
true
1
Def
false
0boole
Type
Data
Boolean
•
Cara
3:
Definisikan
dalam
file
header,
misal:
boolean.h
•
Contoh
penggunaan
Uses “boolea h”
#IfNDef
BOOLEAN_H
#Def
BOOLEAN_H
#Def
boolean
Unsigned
Character
#Def
true
1
#Def
false
0
#Endif
•
Cara
2:
Definisikan
sbg.
Uses “boolea.h” Program{ Var Found : boolean; … Found true; … }
Ca a
e
s a sbg
konstanta:
Def
boolean
Unsigned
Character
Def
true
1
Def
false
0
Type
Data
String
•
Dalam
ETNA,
string
adalah
pointer
ke
array
dengan elemen character
dengan
elemen
character
•
Contoh
konstanta
string:
“
Ini sebuah string
”
–
Konstanta
string
berada
di
antara
double
quotes
“
“
•
String
≠
array
of
char
–
Representasi
p
internal
string
g
selalu
diakhiri
character
‘\0’,
sedang array
of
character
tidak
–
Jadi,
string
“A”
sebenarnya
terdiri
atas
dua
buah
character
yaitu
‘A’
dan
‘\0’
Type
Data
String
•
Contoh
deklarasi
dan
inisialisasi
Var msg1[] : Caharacter <== “ini string”;
Var
msg1[]
:
Caharacter
<==
ini
string ;
Var
msg2[37]
:
Character;
Var
msg3^
:
Character;
•
Contoh
cara
assignment
nilai:
strcpy(msg2,
“pesan
apa”);
msg3 = (Character ^) CAlokasi (20 * SizeOf(Character));
msg3
=
(Character )
CAlokasi (20
SizeOf(Character));
strcpy(msg3,
“”);
/*
HATI
‐
HATI,
cara
di
bawah
ini
SALAH!
*/
msg3
=
“Kamu
pesan
apa”;
Type
Enumerasi
Notasi Algoritmik ETNA KAMUS
{ Definisi type } Type Hari : (senin, selasa,
rabu, kamis, jumat, sabtu)
{ Deklarasi variable } H : Hari KAMUS /*Definisi type */ Type Hari = Enum (senin, selasa, rabu, kamis, jumat, sabtu) /*Deklarasi variable */ Var Hari : H ALGORITMA { Assignment } H ← senin /* ALGORITMA */ /* Assignment */ H senin; /* H = 1 */
Type
Bentukan
Notasi Algoritmik ETNA KAMUS { Definisi Type } type namatype : < elemen1 : type1, elemen2 : type2, ... > { Deklarasi Variable } nmvar1 : namatype KAMUS { Definisi Type } Type namatype < elemen1 : type1, elemen2 : type2, ... > { Deklarasi Variable }Var nmvar1 : namatype; nmvar2 : type1 {misal} Var nmvar2:type1 ;
ALGORITMA { Akses Elemen } nmvar2 ← nmvar1.elemen1 nmvar1.elemen2 ← <ekspresi> /* Akses Elemen */ nmvar2 ← nmvar1.elemen1 nmvar1.elemen2 ← <ekspresi>
Type
Bentukan
(Contoh)
Notasi Algoritmik ETNA { Definisi Type } type Point : < X : integer, Y : integer > { Deklarasi Variable } P : Point Bil : integer {misal}
{ Definisi Type } Type Point = Struktur
< X : integer, Y : integer >
{ Deklarasi Variable }
Var Avr : Point; Var Bil : Integer //misal
ALGORITMA /* Akses Elemen */ ALGORITMA { Akses Elemen } Bil ← P.X P.Y ← 20 / Akses Elemen / Bil P.X; P.Y 20;
Type
Bentukan
(Contoh)
Contoh Type Bentukan dalam ETNA
Type Struktur
<
Var nama : Array [ 1 To 20 ] Of Character, Var nim : Integer,
Var nilai : Integer > Mhs
Type Struktur meter1
/* tag, utk menyebut struct … */ <
Var m : Integer, Var cm : Integer > meterku, metermu Type Struktur meter
/* tag, utk menyebut struct … */
Var M1 : Struktur meter ;
/* cara 3 : INI yang membuat TYPE BARU
/ tag, ut e yebut st uct / < Var m : Integer, Var cm : Integer > / ca a 3 ya g e buat U */ Type Point < Var x : Real, Var y : Real >
Type
Bentukan
(Contoh)
Contoh Type Bentukan dalam ETNA
Type point = Struktur ype point Struktur namat^
< Var x : Real, Var y : Real; > Type nama < Var k : Integer, Var l : Integer; > /* type */ Type pointprt Struktur point^
//typedef struct tagx /* nama tag */ Type tags = Struktur
Type cc = nama Type cp^ = nama
/*‐‐> ok sebab tidak pakai TAG */ < Var i : Integer,
Var j : Integer; > namat /* nama type */
Type infotype Integer Type address Struktur tElmtList^ Type tElmtlist = Struktur
<
Var info : infotype , Var next^ : Struktur tElmtlist; > ElmtList
Operator
Notasi Algoritmik ETNA Ekspresi Infix:
<opn1> <opr> <opn2> Contoh: X + 1
Ekspresi Infix:
<opn1> <opr> <opn2> Contoh: X + 1 Operator Numerik: + ‐ * / Operator Numerik: + ‐ * / / Div Mod / Div Mod
Operator
Notasi Algoritmik ETNA Operator Relasional: > < Operator Relasional: > < > < ≥ ≤ = ≠ > < ≥ ≤ = <> Operator Logika: AND OR NOT Operator Logika: And Or Not Operator Bit: shl /*shift left*/ shr/*shift right*/ & /*and*/ | /*or*/ Xor /*xor*/ Negasi /*not*/Input/Output
Input
Notasi Algoritmik ETNA
Input(<list‐nama>) Input(<list‐nama>)
Contoh: Input(X) //{x integer} Input(X, Y) Input(F) //{F real} Input(s) //{s string} Contoh: Input(“%d”,&X); /*x integer*/ Input(“%d %d”, &X, &Y); Input(“%f”,&F); /*F real*/ Input(“%s”,s); /*s string*/
Contoh format sederhana:
%d untuk type integer %f untuk typeyp real %c untuk type character %s untuk type string
Output
Notasi Algoritmik ETNA
Output(<list‐nama>) Output(“<format>”, <listnama>);
Contoh: Output(X) //{x integer} Output(X, Y) Output(“Contoh output”) Output(“Namaku: ”, nama) Output(F) //{F real} Output(CC) //{c character} Contoh: Output(“%d”,X); /*x integer*/ Output(“%d %d”, X, Y); Output(“Contoh output”); Output(“Namaku: %s”, nama); Output(“%f”,F); /*F real*/ Output(“%c”,CC); /*CC char*/ Contoh format sederhana sama seperti pada input
Analisa
Kasus
Analisis
Kasus
Notasi Algoritmik ETNA Satu Kasus: if k di i h Ifkondisi Then Bl k if kondisi then aksi Block Dua Kasus Komplementer: if kondisi‐1 then aksi‐1else { not kondisi‐1 } aksi‐2
Contoh: Ifkondisi‐1 Then Blok
Else{ not kondisi‐1 }
Block Block adalah { Statement Constan Variabel }
Analisis
Kasus
(>
2
kasus)
Notasi Algoritmik ETNA depend on nama k di i 1 k i 1 If(kondisi‐1) k i 1 kondisi‐1 : aksi‐1 kondisi‐2 : aksi‐2 ... kondisi‐n : aksi‐n aksi‐1; else If(kondisi‐2) aksi‐2; ... Else If(kondisi‐n) aksi‐n; depend on nama kondisi‐1 : aksi‐1 k di i 2 k i 2 If(kondisi‐1) aksi‐1; l f(k di i 2) kondisi‐2 : aksi‐2 ... else : aksi‐else Else If(kondisi‐2) aksi‐2; ... Else aksi‐else;Analisis
Kasus
(>
2
kasus)
Jika kondisi‐1, kondisi‐2… dapat dinyatakan dalam bentuk: nama = const‐exp (const‐exp adalah suatu ekspresi konstan), maka dapat digunakan switch.
Notasi Algoritmik ETNA depend on nama kondisi‐1 : aksi‐1 kondisi‐2 : aksi‐2 ... kondisi‐n : aksi‐n Depend onnama { kondisi‐1 : Block‐1 kondisi‐2 : Block‐2 ... kondisi‐n : Block‐n } depend on nama kondisi‐1 : aksi‐1 kondisi‐2 : aksi‐2 ... else : aksi‐else Depend onnama { kondisi‐1 : Block‐1 kondisi‐2 : Block‐2 ...
Else : Block‐else
}
Pengulangan
Pengulangan
Notasi Algoritmik ETNA Pengulangan berdasarkan Repeat kondisi berhenti: repeat Aksiuntil kondisi‐stop
Block
Until(kondisi‐stop)
Pengulangan berdasarkan kondisi ulang:
while (kondisi‐ulang) do Aksi
While(kondisi‐ulang) Do Block
Pengulangan
Notasi Algoritmik ETNA Pengulangan berdasarkan nama Traversal [Awal To Akhir] [Step expr] pencacah: i traversal [Awal..Akhir] Aksi Block Catatan:i Traversal [ 1 To exp2] ekivalen dengan: i1; While (exp2) Do Block i Inc; /* !exp2 */
Pengulangan
Notasi Algoritmik ETNA Pengulangan berdasarkan dua Traversal { aksi: iterate Aksi‐1 stop kondisi‐stop Aksi‐2 Statement If (kondisi‐stop) Then Exit Else Statement; }Subprogram
Fungsi
(Notasi
Algoritmik)
func on NAMAF (param1 : type1, param2 : type2, …) → type‐hasil
{ Spesifikasi fungsi }
KAMUS LOKAL
{ Semua nama yang dipakai dalam algoritma dari fungsi }
ALGORITMA
{ f i l i ik
{ Deretan fungsi algoritmik:
pemberian harga, input, output, analisis kasus, pengulangan } { Pengiriman harga di akhir fungsi, harus sesuai dengan typehasil }
Fungsi
(ETNA)
Function NAMAF (param1 : type1, param2 : type2, …) : type‐hasil [Constant] [Constant] [Variabel] { [Constant] [Variabel] [Statement] → hasil }Pemanggilan
Fungsi
(ETNA)
Uses <stdio.h> Function Max(Var a,b : Integer):Integer {{ If (a>b) Then a; Else b; } Program { Nama Max(a,b); Output (Max(a,b)); }
Procedure
(Notasi
Algoritmik)
procedure
NAMAP
(input
nama1
:
type1,
input/output nama2 : type2,
input/output
nama2
:
type2,
output
nama3
:
type3
)
{
Spesifikasi,
Initial
State,
Final
State
}
KAMUS
LOKAL
{
Semua
nama
yang
dipakai
dalam
BADAN
PROSEDUR
}
ALGORITMA
{ BADAN PROSEDUR }
{
BADAN
PROSEDUR
}
{
Deretan
instruksi
pemberian
harga,
input,
output,
analisis kasus,
pengulangan atau prosedur }
Procedure
(ETNA)
Procedure
NAMAP
(
In
type1
nama1,
Out type2 *nama2,
Out
type2
nama2,
Out
type3
*nama3)
{
/*
KAMUS
LOKAL
*/
/*
Semua
nama
yang
dipakai
dalam
BADAN
PROSEDUR
*/
/*
ALGORITMA
*/
/* D
t
i t k i
b i
h
i
t
t
t
/*
Deretan
instruksi
pemberian
harga,
input,
output,
analisis kasus,
pengulangan atau prosedur */
Procedure
(Contoh)
Uses
<stdio.h>
Procedure
NAMAP
(
In
Var
a,b
:
Integer,
Out
c:
Integer)
{
If
(a>b)
Then
c
a
Else
c
b;
}
Type
Data
Koleksi
:
Array
Array
Statik
Notasi Algoritmik ETNA { Deklarasi Variabel } Type nm_array [nmax] : Integer
nm_array : array [0..nmax‐1] of type‐array Var nm_array : Array [awal <To/..> Akhir] Of type { Cara Mengacu Elemen } nm_arrayindeks nm_array[indeks] Contoh: TabInt : array [0..99] of integer TabIn ←1 Type TabInt[100]: Integer; Var TabInt : Array [1..100] Of Integer; Var TabInt : Array [1 To 100] Of Integer; TabIn ← 1 X ← TabInt10
Array
Dinamik
ETNA DeklarasiVar TabInt^ : type ;
Alokasi
TabInt(Integer*) CAlokasi(100 * SizeOf(Integer));
Inisalisasi
(TabInt + i)^ 9;
Dealokasi
Array
2
Dimensi
(Statik)
Notasi Algoritmik ETNA
{Deklarasi Array} Var nm_array : Array [awal <To/..> Akhir,
nm_array : array [0..nmax1‐
1] of array [0..nmax2‐1] of type‐array awal <To/..> Akhir] Of type {Cara mengacu elemen} nm_arrayidx1,idx2 nm_array[idx1,idx2] Contoh: Tab2D : array [0..2] of array [0..3] of integer Var TabInt : Array [1..3,1..4] Of Integer; Tab2D[i,j]9; XTab2D[2,4] array [0..3] of integer Tab2Di,j← 9 X ← TabInt2,3 XTab2D[2,4]