NAMA
Adalah sesuatu yang dipakai untuk mengacu :
EKSPRESI
Adalah suatu rumus perhitungan, yang terdiri dari operan dan
operator. Operator yang dituliskan harus didefinisikan untuk
mengoperasikan
operator
yang
bertipe
tertentu.
Hasil
perhitungan adalah harga dengan domain yang memenuhi type
operator yang bersangkutan.
Operator dapat berupa KONSTANTA, NAMA atau merupakan suatu
ekspresi.
Ekspresi akan dihitung dengan beberapa perjanjian jika terjadi
ketidak cocokan type maupun ketelitian). Hasilnya sesuai dengan
TYPE EKSPRESI, ,selanjutnya dapat dimanipulasim ditampilkan pada
piranti keluaran atau disimpan dalam suatu NAMA.
Ekspresi dapat dituliskan dalam 3 macam notasi :
- Notasi infix :
Operan1 operator operan2
- Notasi prefix :
Operator operan operan
- Notasi suffix/Polish :
Operan1 operan2 operator
TYPE EKSPRESI sesuai dengan type hasil:
logik
numerik(aritmatika)
string
1. Ekspresi Logik:
Hasil: boolean
Operan:
Nama atau konstanta bertype logik
Ekspresi yang hasilnya numerik, karakter atau string
Operator
Operator
And
Or
Xor
Not
EQ
nEQ
Operator
<
>
:
logik:
(dan)
(atau)
(ekslusive or)
(negasi)
(Equivalensi)
(tidak ekuivalensi)
relational/pembanding:
(lebih kecil)
(lebih kecil atau sama dengan)
(lebih besar)
(lebih besar atau sama dengan )
(sama dengan)
(tidak sama dengan)
catatan:
khusus untuk operator relasional, jika operannya berupa karakter
maka harus didefinisikan dahulu keterurutan himpunan karakter
menjadi anggota himpunan tersebut (misalnya pada beberapa
bahasa pemrograman, berdasarkan urutan dalam pengkodean
ASCII).
2. Ekspresi Numerik
hasil : integer atau riil
Operan:
Nama atau konstanta numerik(integer,riil)
Ekspresi yang hasilnya numerik
Operator:
*
+
/
sebuah
(kali)
(tambah)
(kurang)
(pembagian dua buah harga integer menghasilkan
bilangan riil)
div
(pembagian dua
menghasilkan sebuah
bilangan bulat)
mod
(sisa pembagian bulat)
abs
(harga absolut)
^
(pangkat)
buah
harga
integer
3. Ekspresi String
Hasil : string
Operan:
Nama atau konstanta string
Ekspresi yang hasilnya string
Operator: operator:Konstruksi string, dengan operator sbb:
.
tambah satu karakter di kanan;
string
x
character string
tambah satu karakter di kiri;
character string x
string
&
konkatenasi, menggabung 2 string; string x string
string
Contoh EKSPRESI:
Didefinisikan nama dalam kamus sebagai berikut :
Pi: constantareal 3.1714
GajiTotal,GajiPokok,Tunjangan,PotGaji:real
MID1,MID2:integer
Urutan,rangking:integer
CC1,CC2: character
S1,Message:string
Found:Boolean
AddXY:function(X,Y:integer)integer
Maka berikut ini adalah contoh ekspresi dalam notasi infix dan
hasilnya. JIKA dan HANYA JIKA nama yang dipakai telah didefinisikan
isinya dengan suatu cara pemberian harga pada nama:
Ekspresi
GajiPokok+Tunjangan-PotGaji
Urutan-1
Urutan*2/rangking
CC1 or CC2
Message&S1
Found and(urutan>100)
Message=HELLO
(urutan^2)+GajiTotal+ADDXY(MID1,MID2)
Jenis Hasil
Numerik
Integer
Numerik
Boolean
String
Boolean
Boolean
numerik
HARGA
Adalah suatu besaran bertype yang telah dikenal.
Harga dalam suatu algoritma dapat diperoleh dari :
- isi suatu nama, yaitu nama INFORMASI atau nama
KONSTANTA
- hasil perhitungan suatu ekspresi
- hasil yang dikirim suatu FUNGSI
- konstanta tanpa diberi nama yang dipakai langsung.
Harga dapat dimanipulasi :
- diisikan ke NAMA informasi yang mempunyai type
sesuai dengan harga tersebut
- dituliskan ke piranti keluaran (layar,printer,menyalakan
signal,...)
- dipakai dalam ekspresi, tergantung typenya
- diacu saja dari suatu nama, untuk dipakai dalam
perhitungan atau ekspresi
ASSIGNMENT
Adalah menyimpan harga pada suatu NAMA, dengan perkataan lain
adalah memberikan harga pada suatu nama. Dengan pemberian
harga ini, harga lama yang disimpan tidak lagi berlaku, yang berlaku
adalah harga paling akhir yang diberikan.
Memprogram
secara
prosedural
pada
hakekatnya
adalah
memanipulasi nama yang mewakili alokasi memori tertentu dan
memanipulasinya dengan algoritma yang ditulis. Manipulasi harga
NAMA dilakukan dengan assignment.
1. Notasi algoritmik untuk pemberian harga(assignment)
nama1 nama2
nama konstanta
nama ekspresi
dengan syarat:
- bagian kiri dan bagian kanan tanda pemberian harga
bertype sama
- nama, nama1, dan nama2 adalah nama informasi, tidak
boleh nama KONSTANTA, TYPE,FUNGSI atau PROSEDUR
2. Notasi algoritmik untuk pemberian harga dari piranti
masukan
Input(list-nama)
Dengan syarat:
- list nama adalah satu atau lebih nama informasi, dan
hanya berupa nama INFORMASI tidak boleh nama
KONSTANTA,TYPE,FUNGSI atau PROSEDUR
3. Notasi Algoritmik untuk penulisan harga ke alat keluaran
(layar,printer,..)
output(list-nama)
output(konstanta)
output(ekspresi)
output(list-nama,konstanta,ekspresi)
dengan syarat :
- list nama adalah satu atau lebih nama : boleh berupa
INFORMASI, nama KONSTANTA atau nama FUNGSI
berikut parameternya. Khusus untuk nama Fungsi.
- Nama-nama dalam list-nama tidak boleh berupa nama
TYPE atau PROSEDUR
- Nama yang dituliskan sudah terdefinisi
- Ekspresi adalah suatu pernyataan yang mengandung
operan dan operator, tergantung kepada type
operandnya. Hasil ekspresi adalah setype dengan type
operan dan operator yang dapat dieksekusi untuk
operan yang bersangkutan harus sesuai dengan
operator yang didefinisikan oleh type tersebut.
Contoh1 : HELLO
Pernyataan
:integer array[A..E]
Domain
Konstanta
output Senin
input : 6
output Sabtu
NamaHari
Kamus :
TabelNamaHari : string array[1..7]
IsiTabHari
: procedure {mengisi tabel nama hari}
HariKe
: integer[1..7] {nomor dari hari}
Algoritma:
IsiTabHari
Input(HariKe)
Output(TabelNamaHariHariKe)
IsiNamaHari
{mengisi tabel nama hari}
{I.S : TabNamahari tak terdefinisi}
{F.S : TabNamaHari siap dipakai, semua elemennya [1..7] sudah diisi}
Kamus lokal:
Algoritma:
TabelNamaHari1
TabelNamaHari2
TabelNamaHari3
TabelNamaHari4
TabelNamaHari5
TabelNamaHari6
Senin
Selasa
Rabu
Kamis
Jumat
( Sabtu
TabelNamaHari7 ( Minggu
LATIHAN
1. buatlah kembali program untuk menghitung NEXTDAY (pada bagian
FUNGSI) dengan mendefinisikan tabel jumlah hari perbulan dalam setahun.
Berapa jumlah hari yang anda tentukan untuk bulan Februari ?
2. Jumlah hari dalam minggu dan jumlah bulan dalam setahun sudah tertentu.
Bagaimana jika anda harus mendefinisikan tabel untuk jumlah elemen yang
bisa bervariasi? Misalnya tabel yang setiap elemenya mewakili data murid
dalam kelas, sedangkan jumlah murid per kelas bervariasi antara 20-100
orang?
NOTASI PENGULANGAN
Salah satu kemampuan komputer yang dapat dimanfaatkan
adalah mengulang suatu instruksi bahkan aksi secara
berulang-ulang.
Penulangan terdiri dari dua bagian :
kondisi yang mengakibatkan pengulangan suatu saat
berhenti, yang dinyatakan oleh sebuah ekspresi logik baik
secara eksplisit maupun implisit.
Badan pengulangan, yaitu aksi yang harus diulang selama
kondisi yang ditentukan untuk pengulangan masih
dipenuhi.
Pengulangan harus berhenti. (karena harus menggunakan
looping yang dibatasi/dipenuhi)
Notasi pengulangan adalah salah satu notasi dasar dalam
penulisan algoritma selain analisa kasus. Namun notasi
tersebut tidak akan ada artinya bila dikenakan terhadap
skema tertentu.
Notasi pengulangan yang berdiri sendiri tidak ada artinya,
bahkan menyesatkan karena pada hakekatnya notasi
pengulangan hanyalah merupakan sebagian dari skema
pengulangan yang akan dibahas pada bab berikutnya.
Ada 5 macam notasi pengulangan
1. Berdasarkan jumlah pengulangan
Repeat n times
AKSI
5. Berdasarkan Pencacah
NamaTransversal [rangeharga]
AKSI
{catatan: nama harus suatu tipe yang terdefinisi suksesor dan
predesessornya}
{
setelah pelaksanaan pengulangan selesai, harga yang
tersimpan pada nama}
{
tidak terdefinisi : jika hendak dipakai, harus
didefinisikan kembali}
i i+1
{i = 1001 and S = 1 + 1/3 + ... + 1/999 1/1000}
output(S)
Contoh 2 :
Hitunglah n !
Dari definisi
0! = 1
1! = 1
2! = 2 x 1! = 2 x 1 = 2
3! = 3 x 2! = 3 x 2 = 6
4! = 4 x 3! = 4 x 6 = 24
:
n! = n x (n 1)! = n x (n- 1) x x 3 x 2 x 1
Hubungan berulang :
Fo = 1
Fi = i * Fi-1
Solusi 1 :
FAKTORIAL1
{Diberikan n, dihitung n!}
Kamus
i : integer > 1 {indeks F berikut yang akan dihitung}
n : integer > 0 {bilangan yang dihitung faktorialnya}
F : integer > 1 {harga faktorial yang dihitung}
Algoritma
Input (n)
F 1 {1=0, Fo=1}
i 1 {indeks F berikutnya yang akan dihitung}
While i < n do
{F=(i-1)!}
Fi*F
i i+1
{i = n-1 and F = n!}
output(F)
Solusi 2 :
FAKTORIAL2
{Diberikan n, dihitung n!, kondisi berhenti berdasarkan loop invariant}
Kamus
i : integer > 0 {indeks F berikut yang akan dihitung}
n : integer > 0 {bilangan yang dihitung faktorialnya}
F : integer > 1 {harga faktorial yang dihitung}
Algoritma
Input (n)
F 1 {Fo}
i 0 {indeks F berikutnya yang akan dihitung}
While i < n do
{F=i!}
ii+1
Fi*F
{i = n and F = n!}
output(F)
Algoritma
T ( 1 {To}
ST
i (0
While not P (S,T, i) do
{kondisi berhenti P(S,T,i) akan diperinci lebih lanjut}
i(i+1
T( x ^i /FACT (i) {FACT(n) adalah fungsi untuk menghitung n!}
S(S+T
{i = n-1 and F = n!}
output(S)
Contoh 4: Hitung Sinus
Hitung sin(x) dengan pendekatan :
i-1
X2n-1/(2n-1)!, n > 1
menghitung n!}
S S T {deret aditif}
output(S)
Skema umum 2 :
HITUNGDERET2
{Menghitung deret S = t0 + t1 + t2 + + tn atau S = t0 * t1 * t2* *tn}
Kamus
T : real {suku/faktor terakhir dihitung}
S : real {jumlah deret aditif/multiplikatif}
i : integer > 0 {indeks suku/faktor yang terakhir dihitung}
Algoritma
T To
ST
i0
While not P (S,T) do
{loop invariant : S = + t1 + t2 + + ti atau S = t0 * t1 * t2* *ti }
i i +1
T f(T, i)
{f(T) adalah fungsi yang menghitung harga T baru berdasarkan T yang lama
dan i}
S g(S,T,i)
{g(S,T, i) adl fungsi yang mengubah harga S berdasarkan S yang lama, T dan
i}
{S adalah hasil yang diinginkan}
hubungan
berulang
menghitung
exp(x)
Algoritma
T 1 {To}
ST
i 0
While abs(T) > do
ii+1
T T * x/i
SS+T
output(S)
PROSEDUR
Definisi
adalah sederetan instruksi algoritmik yang diberi nama, dan
akan menghasilkan efek netto yang terdefinisi.
Prosedur menyatakan suatu aksi dalam konsep algoritma yang
dibicarakan pada bab I.
Mendefinisikan prosedur menentukan nama prosedur serta
parameternya,
mendefinisikan state awal (inisial State,
I.S.)
mendefinisikan state akhir (Final State,
F.S)
dari prosedur tersebut.
Prosedur mendefinisikan dalam Kamus.
Cara penulisannya diberi nama
dan parameter formal (jika ada) yang juga
diberi nama
dan dijelaskan typenya.
Parameter formal adalah nama-nama yang dipakai dalam
mendefinisikan
Prosedur
dan membuat prosedur tersebut dapat
dilaksanakan
dengan nama yang berbeda ketika dipanggil
adalah list nama yang akan dipakai pada
prosedur yang
nantinya akan tertentu harganya pada saat
pemanggilan
dapat berupa :
- input
- output
- input/output
Memakai atau memanggil prosedur adalah :
- menuliskan nama prosedur yang pernah didefinisikan,
- dan memberikan harga-harga yang dibutuhkan oleh
prosedur itu untuk dapat melaksanakan suatu aksi
terdefinisi. Sebuah prosedur juga boleh memakai atau
memanggil prosedur.
Parameter aktual adalah nama-nama informasi yang dipakai
ketika prosedur itu dipakai (dipanggil). Parameter aktual dapat
berupa nama atau harga, tetapi harus berupa nama jika parameter
tersebut adalah untuk Output.
Prosedur dapat mempunyai kamus lokal,yaitu
Pendefinisian nama yang dipakai dan hanya berlaku dalam
ruang lingkup prosedur tersebut.
Jika nama yang dipakai di dalam prosedur tidak terdefinisi
dalam, list parameter formal atau dalam kamus lokal, maka
nama tersebut harus sudah terdefinisi pada prosedur yang
memakainya.
Penulisan kamus lokal sama dengan kamus global, yang
berbeda adalah lingkup berlakunya nama yang didefinisikan :
Pada kamus global, nama berlaku untuk program dan
semua prosedur/fungsi yang didefinisikan
Pada kamus lokal, nama berlaku untuk prosedur/fungsi
yang bersangkutan dan prosedur fungsi yang
didefinisikan di dalamnya.
Program yang moduler adalah
program yang dibagi-bagi menjadi modul-modul yang
terdefinisi dengan baik dalam bentuk prosedur-prosedur.
Setiap prosedur harus jelas definisi dan ruang lingkupnya,
supaya dapat dipanggil secara independent
Pembagian program besar dalam prosedur-prosedur akan
mempermudah pembagian kerja di antara beberapa
pemrogram.
Penulisan prosedur juga akan memudahkan program untuk dibaca
oleh manusia karena kita tidak perlu terpaku pada detil kode
prosedur untuk mengerti efek neto yang dihasikannya.
Bahkan dalam beberapa hal,pemrogram tidak perlu tahu sama
sekali isi atau kode dari prosedur dengan mengetahui
spesifikasinya,
beberapa
bahasa
pemrograman
bahkan
menyediakan prosedur terdefinisi yang sering dipakai dalam
memrogram sehingga pemrogram tidak perlu lagi menuliskan
kodenya.
Prosedur berlaku untuk ruang lingkup (universe) tertentu. Dalam 2
bab berikut, yaitu mesin gambar dan mesin karakter, akan diberikan
gambaran lebih jelas dan lengkap tentang pendefinisian dan
pemakaian prosedur karena keduanya adalah mesin abstrak yang
tertentu.
Notasi algoritmik untuk prosedur
1. Pendefinisian prosedur
NAMA
PROSEDUR:Procedure(input/Output:[list
parameter formal:type])
{Spesifikasi, Initial state, Final State}
Kamus lokal:
nama
Algoritma:
{deretan instruksi pemberian harga, input, output, analisa kasus,
pengulangan}
NAMA PROSEDUR (list parameteraktual)
Dengan syarat :
- pada waktu pemanggilan terjadilah korespondensi antara
parameter formal dengan parameter aktual sesuai dengan
urutan penulisan dalam list-nama parameter formal.
- List parameter aktual harus sama, jumlah, urutan dan typenya
deengn list parameter normal
- List parameter aktual yang berupa input dapat berupa nama
INFORMASI atau KONSTANTA yang telah terdefinisi dalam
kamus atau konstanta; dapat juga berupa harga konstanta,
atau harga yang dihasilkan oleh suatu ekspresi atau fungsi.
- List parameter aktual yang berupa output harus berupa
INFORMASI. Jika didefinisikan sebagai input, walaupun pernah
diubah dalam badan prosedur, isi dari nama yang dipakai
pada parameter aktual tidak pernah berubah. Jika
didefinisikan
sebagai
Output
dan
parameter
formal
V : integer
{tegangan dalam volt}
PROSES2: procedure(input: A,R: integer, OutputV: integer)
{prosedur untuk memproses tahanan(R) dan arus(A) menjadi
tegangan(V)}
Algoritma:
Input(R,A)
PROSES2(A,RV)
Output(V)
PROSES1:procedure(input:
A,R:
integer,
OutputV:
integer)
0.1
{I.S: diberikan harga R dan A yang telah terdefinisi}
{F.S: memproses R dan A sehingga dihasilkan V yaitu tegangan
dengan rumus: V = R*A}
Kamus Lokal :
Algoritma:
V R*A
Contoh2:
Prosedur untuk menukar dua harga yang disimpan dalam dua nama
a dan b
I.S. : diberikan a=A dan b=B
F.S. : a=B dan b=A
TUKAR
{program yang membaca dua buah harga x dan y, menyimpan dan
kemudian menukarnya}
Kamus:
x,y: integer
PROCTUKAR:procedure(input/output:a,b:integer)
{prosedur untuk menukar dua buah harga yang tersimpan dalam
dua nama se-type}
{IS: diberikan a=A dan b=B}
{FS: a=B dan b=A}
Algoritma:
Input(x,y)
PROCTUKAR(x,y)
Ouput(x,y)
PROCTUKAR: procedure(input/output: a,b : integer)
{IS: diberikan a=A dan b=B}
{FS: a=B dan b=A}
Kamus Lokal:
Temp:integer
Algoritma:
Temp a {Temp=a; a=a; b=b}
ab
{Temp=a; a=b; b=b}
b Temp {Temp=a; a=b; b=a}
Contoh3. PUTAR3BIL
Gunakan prosedur TUKAR untuk menulis prosedur yang
memutar 3 buah nama integer.
Contoh :
Jika a berisi 1, b berisi 2, dan c berisi 3, maka hasilnya
adalah:
A berisi 3, b berisi 1, dan c berisi 2.
PUTAR3BIL:Procedure(Input/Output a,b,c : integer)
{IS: diberikan a=A dan b=B dan c=C}
{FS: a=C dan b=A, c=B}
Kamus Lokal:
Algoritma
PROCTUKAR (a,c)
PROCTUKAR (b,c)
FUNGSI
Definisi
Fungsi adalah sebuah mesin abstrak yang :
- menghasilkan suatu harga yang sesuai dengan domain yang
didefinisikan pada spesifikasinya
- menerima
suatu
harga
dengan
tipe
tertentu
dan
menghasilkan keluaran sesuai dengan domain yang
didefinisikan dalam spesifikasinya.
Dalam penulisannya, fungsi diberi nama, dan parameter formal
yaitu harga masukkan yang juga diberi nama dan dijelaskan
typenya.
Fungsi harus didefinisikan dalam kasus.
Contoh fungsi :
Fungsi f(x) dalam matematika yang didefinisikan sebagai :
F(x) = x2 + 3x -5
Jika diberi harga x =4 maka f(x) akan menghasilkan 23
Jika diberi harga x= 1 maka f(x) akan menghasilkan -1
F(x,y) = x2 + 3xy -5y -1
Jika diberi harga x = 0 dan y=0 maka f(x) akan menghasilkan
-1
Jika diberi harga x= 1 dan y=0 maka f(x) akan menghasilkan 0
Notasi algoritmik untuk fungsi
1. Pendefinisian fungsi
NAMAF:function ([list-parameterinput]) [type hasil]
{spesifikasi fungsi}
Kamus Lokal:
{semua NAMA yang dipakai dalam algoritma dari prosedur}
Algoritma:
{deretan instruksi pemberian harga, input, output, analisa kasus,
pengulangan}
{pengiriman harga di akhir fungsi, harus sesuai dengan type hasil}
hasil
Dengan syarat:
- list parameter input boleh tidak ada (kosong), dalam hal ini di
fungsi tidak membutuhkan apa-apa dari pemakainya untuk
menghasilkan harga.
2. Pemanggilan fungsi
POKOK PERSOALAN
{Spesifikasi : Input, Proses, Output}
Kamus:
{semua NAMA yang dipakai dalam algoritma}
NAMAF:Function([list nama parameter input]) [type hasil]
{spesifikasi fungsi}
Algoritma:
{deretan instruksi pemberian harga, input, output, analisa kasus,
pengulangan yang memakai fungsi}
{harga yang dihasilkan fungsi juga dapat dipakai dalam ekspresi}
nama NAMAF([list parameter aktual])
output(NAMAF([list parameter aktual]))
{harga yang dihasilkan fungsi juga dapat dipakai dalam ekspresi}
-
Fungsi terdefinisi:
Adalah fungsi yang sudah diberikan oleh sistem, dan tinggal
dipakai (dipanggil). Fungsi terdefinisi selalu memberikan daftar dan
spesifikasinya (domain + range).
Contoh :
- fungsi terdefinisi untuk melakukan konversi tipe.
tidak
kosong)
tidak
kosong)
Fungsi matematik
Sin: function (x:real) real
CONTOHF2
{dibaca x dan y, menghitung:f(x) = x2 + 3x -5}
{
:f(x,y) = x2 + 3xy -5y -1}
{dan menuliskan hasil perhitungan}
Kamus:
x,y: integer {data}
FXY: Function (x,y:real)real {diberikan x,menghitung f(x)= x2 + 3xy
-5y -1}
dan
SisaCm
sehingga
UbahdanPeriksaKar
Kamus
CC : character
KarakterToInteger:Function(x:character[0..9]) integer[0..9]
{diberikan x berupa karakter 0..9, mengirimkan harga integer
yang sesuai dengan penulisan pada karakter}
Algoritma:
Input(cc)
Depend on (CC)
CC [0..9] : ouput(KarakterToInteger(CC))
CC [0..9] : ouput(Bukan Angka)
Contoh5: HITUNG FUNGSI
Pernyataan
3. PANJANGSTRING
Pelajarilah fungsi terdefinisi untuk type string. Dengan hanya
menggunakan operator o,=, dan fungi terdefinisi AKHIR, tuliskanlah
sebuah fungsi bernama PANJANGSTRING yang menerima input
sebuah string, dan mengirimkan bilangan bulat, yang menyatakan
banyaknya karakter pada string input. Andaikan fungsi terdefinisi
LONG tidak ada, sehingga anda harus menuliskannya sendiri.
Contoh :
PANJANGSTRING (AKU ini mahasiswa) 17
PANJANGSTRING () 0
4. HITUNGAN
Pelajarilah fungsi terdefinisi untuk type string. Dengan
hanya menggunakan operator o, =, dan fungsi terdefinisi AKHIR,
tuliskanlah sebuah fungsi bernama HITUNGAN yang menerima input
sebuah string, dan mengirimkan bilangan bulat, yang menyatakan
banyaknya huruf A pada string input.
Contoh:
HITUNGAN(AKU) 1
HITUNGAN(HARI INI AKU SENANG) 3
5. SAMA
Pelajarilah fungsi terdefinisi untuk type string. Dengan
hanya menggunakan operator o, =, serta fungsi terdefinisi AKHIR
dan LONG, tuliskanlah sebuah fungsi bernama SAMA yang
menerima input dua buah string, dan mengirimkan harga boolean
(true jika kedua string input itu sama, atau false jika tidak sama)
Contoh:
SAMA(AKU,AKU) true
SAMA(,AKU) false
6. NEXTDAY
Buatlah algoritma yang :
- membaca sebuah tanggal dan kode
(1=inggris, 2=indonesia, 3=prancis),
bahasa
penulisan
Kamus Lokal:
Algoritma:
Depend on(a,b)
ab: a
b>a: b
MAX3:function(a,b,c:real) real
{diberikan a,b, dan c, mengirim a jika ab dan ac, mengirim b jika ba
dan bc mengirim cb dan ca }
Kamus Lokal:
Algoritma:
MAX2(MAX2(a,b),c)
MAX3BIS:function(a,b,c:real) real
{diberikan a,b, dan c, mengirim a jika ab dan ac, mengirim b jika ba
dan bc mengirim cb dan ca }
Kamus Lokal:
Algoritma:
MAX2(a,MAX2(b,c))
Pertanyaan : apa beda MAX3 dan MAX3BIS?
LONG:function(S:string) integer
{diberikan String S, mengirim panjangnya}
Kamus Lokal:
Algoritma:
Depend on(S)
S=[] 0
S []: 1+LONG (AKHIR(S))
CPTA:function(S:string) integer
{diberikan String S, mengirim banyaknya A yang dikandung string S}
Kamus Lokal:
Algoritma:
Depend on(S)
S=[] 0
S []: ISANABis (FirstChar(S))+CPTA(AKHIR(S))
ISANABis:function(cc:character) integer[0,1]
{diberikan karakter cc, mengirim 0 jika cc bukan A, mengirim 1 jika
cc=A}
Kamus Lokal:
Algoritma:
Depend on(S)
cc=A 1
cc A 0
FREKA:function(S:string) real[0..1]
{diberikan karakter cc, menghitung frekuensi A}
{dengan mendefinisikan bahwa frekuensi huruf adalah 0 jika stringnya
kosong, yaitu panjangnya 0}
Kamus Lokal:
Algoritma:
Depend on(S)
LONG(S) = 0:
SAMA1:function(S1,S2:string) boolean
KodeBahasa:integer[1..3]
HariIni, Esok:DATE
NEXTDAY:function(Now:DATE) DATE {mengirimkan
keesokkan hari
Dari Now}
Algoritma:
Input(HariIni, KodeBahasa) {membaca<Tanggal,Bulan,Tahun>
dan
Kodebahasa}
Esok NEXTDAY(HariIni)
Depend on KodeBahasa
KodeBahasa=1:ouput(Esok.Bulan,/,Esok.Tanggal,/,Esok.Ta
hun)
KodeBahasa=2:ouput(Esok.Tanggal,-,Esok.Bulan,-,Esok.T
ahun)
KodeBahasa=3:ouput(Esok.Bulan,/,Esok.Tanggal,/,Esok.Ta
hun)
NEXTDAY:function(Now:DATE)
DATE
0.1
{menerima Now dan mengirimkan tanggal keesokan hari dari Now}
Kamus Lokal:
Kabisat:function(D:DATE) boolean {true jika D Tahun adalah
kabisat}
Algoritma:
Depend on(Now.Bulan)
Now.Bulan = 2 : {Bulan Februari, kasus kabisat dan bukan}
Depend on Now.Tanggal:
Now.Tanggal<28:
<Now.Tanggal+1,Now.Bulan,Now.Tahun>
Now.Tanggal=28:
Depend on Now.Tahun:
Not Kabisat(Now.Tahun):
<1,Now.Bulan+1,Now.Tahun>
Kabisat(Now.Tahun):
<Now.Tanggal+1,Now.Bulan,Now.Tahun>
Now.Tanggal=29: <1,Now.Bulan+1,Now.Tahun>
Now.Bulan = 12: {Mungkin Pergantian Tahun}
Depend on Now.Tanggal:
Now.Tanggal <31:
<Now.Tanggal+1,Now.Bulan,Now.Tahun>