Outline Ekuivalensi Notasi Algoritmik Dengan ETNA wijanarto
Struktur Umum • Notasi Algoritmik Program
Program { Spesifikasi teks algoritmik secara umum } KAMUS { Definisi konstanta, type, deklarasi variabel, spesifikasi prosedur, fungsi } ALGORITMA { Teks algoritma ‐ tidak berada di antara tanda kurung kurawal }
• • • • • • •
Struktur Program Type, konstanta, deklarasi, assignment Input/output Analisis kasus Pengulangan Subprogram (fungsi, prosedur) Type data koleksi: array
Struktur Umum • Notasi Algoritmik Program Program { Spesifikasi teks algoritmik secara umum } KAMUS { Definisi konstanta, type, deklarasi variabel, spesifikasi prosedur, fungsi } ALGORITMA { Teks algoritma ‐ tidak berada di antara tanda kurung kurawal }
1
Struktur Umum • ETNA [lib][macro][declType][variable] [constant][function][mainfunction] Program {
Type, Konstanta, Variable, Assignment
}
Konstanta Dan Variable Notasi Algoritmik
ETNA
Konstanta constant :=
Konstanta Constant:=;
Deklarasi Variable :
Deklarasi Variable Var : [ Init] ;
Inisialisasi/Assignment ←
Inisialisasi/Assignment
Konstanta Dan Variable Program Test {Tes konstanta, variable, assignment, inisialisasi...} KAMUS {Konstanta} constant lima : real = 5.0 constant PI : real = 3.14 {Deklarasi Variabel} L, r : real I : integer ALGORITMA I ← 1 {Inisialisasi} r ← 10.0 {Inisialisasi} ...
Constant lima : Real = 5.0 ; Constant PI : Real = 3.14 ; {Deklarasi Variabel} Var L, r : Real ; Var L, r : Real ; Var I : Integer ; Program { I ← 1 //Inisialisasi r ← 10.0 //Inisialisasi ... }
2
Assignment Assignment ← ← nama ← ← <ekspresi> ekspresi nama1 ← nama1 nama2 Contoh: L ← PI * r * r x ← x * y i ← i + 1 i ← i – 1
Assignment ← ← nama ← ← <ekspresi> ekspresi nama1 ← nama1 nama2 Contoh: L ← PI * r * r ; x ← x * y ; i ← i + 1 ; i ← i – 1 ;
Type Data Character • Contoh deklarasi: Var CC:Character; • Contoh konstanta: C t hk t t ‘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 • Double Double‐precision precision floating point floating point • Eg. 10 digits decimal
– Long Double • Extended‐precision floating point • Eg. 18 digits decimal
3
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: Deff boolean unsigned char b l d h Def true 1 Def false 0boole
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 internal string selalu diakhiri character p g ‘\0’, sedang array of character tidak – Jadi, string “A” sebenarnya terdiri atas dua buah character yaitu ‘A’ dan ‘\0’
Type Data Boolean • Cara 3: Definisikan dalam file header, misal: boolean.h #IfNDef BOOLEAN_H #Def BOOLEAN_H #Def boolean Unsigned Character #Def true 1 #Def false 0 #Endif
• Contoh penggunaan Uses “boolea.h” Uses “boolea h” Program { Var Found : boolean; … Found true; … }
• Cara 2: Definisikan sbg. Ca a e s a sbg konstanta: Def boolean Unsigned Character Def true 1 Def false 0
Type Data String • Contoh deklarasi dan inisialisasi Var msg1[] : Caharacter <== Var msg1[] : Caharacter <== “ini ini string string”;; Var msg2[37] : Character; Var msg3^ : Character;
• Contoh cara assignment nilai: strcpy(msg2, “pesan apa”); msg3 = (Character ^)) CAlokasi msg3 = (Character CAlokasi (20 (20 * SizeOf(Character)); SizeOf(Character)); strcpy(msg3, “”); /* HATI‐HATI, cara di bawah ini SALAH! */ msg3 = “Kamu pesan apa”;
4
Type Enumerasi
Type Bentukan Notasi Algoritmik
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 (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 } Bil ← P.X P.Y ← 20
/ Akses Elemen / /* Akses Elemen */ Bil P.X; P.Y 20;
ETNA
KAMUS { Definisi Type } type namatype : < elemen1 : type1, elemen2 : type2, ... > { Deklarasi Variable } nmvar1 : namatype nmvar2 : type1 {misal}
KAMUS { Definisi Type } Type namatype < elemen1 : type1, elemen2 : type2, ... > { Deklarasi Variable } Var nmvar1 : namatype; Var nmvar2:type1 ;
ALGORITMA { Akses Elemen } nmvar2 ← nmvar1.elemen1 nmvar1.elemen2 ← <ekspresi>
/* Akses Elemen */ nmvar2 ← nmvar1.elemen1 nmvar1.elemen2 ← <ekspresi>
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 … */ tag, ut e yebut st uct / < Var m : Integer, Var cm : Integer >
Var M1 : Struktur meter ; //* cara 3 : INI yang membuat TYPE BARU ca a 3 ya g e buat U */ Type Point < Var x : Real, Var y : Real >
5
Type Bentukan (Contoh)
Operator
Contoh Type Bentukan dalam ETNA Type point = Struktur < Var x : Real, Var y : Real; >
ype point Struktur namat^ Type nama < Var k : Integer, Var l : Integer; > /* type */
Type pointprt Struktur point^ //typedef struct tagx /* nama tag */ Type tags = Struktur < Var i : Integer, Var j : Integer; > namat /* nama type */
Type cc = nama Type cp^ = nama /*‐‐> ok sebab tidak pakai TAG */ Type infotype Integer Type address Struktur tElmtList^ Type tElmtlist = Struktur < Var info : infotype , Var next^ : Struktur tElmtlist; > ElmtList
Notasi Algoritmik
ETNA
Ekspresi Infix: Contoh: X + 1
Ekspresi Infix: 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
Input/Output
Operator Bit: shl /*shift left*/ shr/*shift right*/ & /*and*/ | /*or*/ Xor /*xor*/ Negasi /*not*/
6
Input Notasi Algoritmik
Output ETNA
Notasi Algoritmik
ETNA
Input(<list‐nama>)
Input(<list‐nama>)
Output(<list‐nama>)
Output(“”, <listnama>);
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: 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: %d untuk type integer %f untuk type real yp %c untuk type character %s untuk type string
Contoh format sederhana sama seperti pada input
Analisis Kasus Notasi Algoritmik
Analisa Kasus
ETNA
Satu Kasus: if k di i h if kondisi then aksi
If kondisi Then Bl k Block
Dua Kasus Komplementer: if kondisi‐1 then aksi‐1 else { not kondisi‐1 } aksi‐2
Contoh: If kondisi‐1 Then Blok Else { not kondisi‐1 } Block Block adalah { Statement Constan Variabel }
7
Analisis Kasus (> 2 kasus) Notasi Algoritmik
ETNA
depend on nama k di i 1 k i 1 kondisi‐1 : aksi‐1 kondisi‐2 : aksi‐2 ... kondisi‐n : aksi‐n
If (kondisi‐1) aksi‐1; ki1 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 kondisi‐2 : aksi‐2 ... else : aksi‐else
If (kondisi‐1) aksi‐1; l Iff (kondisi‐2) (k di i 2) Else 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 on nama { 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 on nama { kondisi‐1 : Block‐1 kondisi‐2 : Block‐2 ... Else : Block‐else }
Pengulangan Notasi Algoritmik
Pengulangan
ETNA
Pengulangan berdasarkan kondisi berhenti: repeat Aksi until kondisi‐stop
Repeat Block Until (kondisi‐stop)
Pengulangan berdasarkan kondisi ulang: while (kondisi‐ulang) do Aksi {not kondisi‐ulang}
While (kondisi‐ulang) Do Block
8
Pengulangan Notasi Algoritmik Pengulangan berdasarkan pencacah: i traversal [Awal..Akhir] Aksi
ETNA nama Traversal [Awal To Akhir] [Step expr] Block
Catatan: i Traversal [ 1 To exp2] ekivalen dengan: i1; While (exp2) Do Block i Inc; /* !exp2 */
Pengulangan Notasi Algoritmik Pengulangan berdasarkan dua aksi: iterate Aksi‐1 stop kondisi‐stop Aksi‐2
ETNA Traversal { Statement If (kondisi‐stop) Then Exit Else Statement; }
Fungsi (Notasi Algoritmik) func on NAMAF (param1 : type1, param2 : type2, …) → type‐hasil { Spesifikasi fungsi }
KAMUS LOKAL { Semua nama yang dipakai dalam algoritma dari fungsi }
Subprogram ALGORITMA {{ Deretan fungsi algoritmik: f i l i ik pemberian harga, input, output, analisis kasus, pengulangan } { Pengiriman harga di akhir fungsi, harus sesuai dengan typehasil } → hasil
9
Fungsi (ETNA) Function NAMAF (param1 : type1, param2 : type2, …) : type‐hasil [Constant] [Variabel] { [Constant] [Variabel] [Statement]
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)); }
→ hasil }
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 /* Deretan instruksi pemberian harga, input, output, b i h i t t t analisis kasus, pengulangan atau prosedur */ }
10
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
Array Dinamik
Notasi Algoritmik
ETNA
ETNA
{ Deklarasi Variabel } nm_array : array [0..nmax‐1] of type‐array
Type nm_array [nmax] : Integer Var nm_array : Array [awal Akhir] Of type
Deklarasi Var TabInt^ : type ;
{ Cara Mengacu Elemen } nm_arrayindeks
nm_array[indeks]
Alokasi TabInt (Integer*) CAlokasi(100 * SizeOf(Integer));
Contoh: TabInt : array [0..99] of integer TabIn ← 1 ←1 X ← TabInt10
Type TabInt[100]: Integer; Var TabInt : Array [1..100] Of Integer; Var TabInt : Array [1 To 100] Of Integer;
Inisalisasi (TabInt + i)^ 9; Dealokasi Dealokasi (TabInt);
11
Array 2 Dimensi (Statik) Notasi Algoritmik
ETNA
{Deklarasi Array} nm_array : array [0..nmax1‐ 1] of array [0..nmax2‐1] of type‐array
Var nm_array : Array [awal Akhir, awal Akhir] Of type
{Cara mengacu elemen} nm_arrayidx1,idx2
nm_array[idx1,idx2]
Contoh: Tab2D : array [0..2] of array [0..3] of integer array [0..3] of integer Tab2Di,j ← 9 X ← TabInt2,3
Var TabInt : Array [1..3,1..4] Of Integer; Tab2D[i,j]9; X Tab2D[2,4]
Type Data Pointer • Format yp ; Var ^ : ; • Contoh Var i^:Integer; /*pointer ke integer*/ Var f^ : float; /*pointer ke real*/ Var cc^ : Character; /*pointer ke character*/ Var FT^ : FILE; /*handle suatu file*/ Var (T)^[10] ( ) [ ] : Integer; /*pointer ke array dg 10 elemen integer*/ g ;/ p y g g / Var T^[10]: Integer; /*pointer ke array dg 10 elemen bertype pointer ke integer*/ Var p^ : void; /*pointer ke objek yg tdk diketahui typenya*/
Type Data Union • Sama dengan Struktur hanya keyword “St kt ” di ti d “Struktur” diganti dengan “Union” “U i ”
12