Program

Sabtu, 06 Maret 2010

Algoritma

MODUL XI
FUNGSI

11.1 Definisi Fungsi
Fungsi adalah upa-program yang memberikan /
mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar
atau tipe bentukan). Definisi fungsi di dalam program bersesuaian
dengan definisi fungsi di dalam matematika. Di dalam matematika
kita mengenal cara penulisan fungsi seperti pada contoh berikut :
1. f(x) = 2x2 + 5x – 8
2. H(x,y) = 3x – y + xy
Pada kedua contoh di atas, f dan H adalah nama fungsi,
sedangkan x dan y adalah parameter fungsi bersangkutan. Nilai
yang diberikan oleh fungsi bergantung pada masukan parameter.
Sebagai misal :
1. x = 2, maka f(2) = 2.22 + 5.2 – 8 = 10
2. x = 1, y, maka H(1,2)=3 . 1 + 1 . 2 = 3
nilai 10 dan 3 pada kedua contoh diatas adalah nilai yang diberikan
(return value) oleh masing-masing fungsi dan fungsi H.
11.2 Pendefinisian Fungsi
Notasi algoritmik untuk mendefinisikan fungsi adalah :
function NamaFungsi (input deklarasi jika ada)
←tipe
( spesifikasi fungsi, menjelaskan apa yang
dilakukan dan yang dikembalikan oleh fungsi.)
DEKLARASI
(Semua nama yang dipakai di dalam fungsi dan
hanya berlaku lokal di dalam prosedur
didefinisikan di sini)
ALGORITMA
( berisi fungsi, berisi instruksi-instruksi untuk
menghasilkan nilai yang akan dikembalikan oleh
fungsi )
return ekspresi (pengembalian nilai yang
dihasilkan fungsi)
Tipe menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilai
yang diberikan oleh fungsi dapat bertipe dasar maupun bertipe
bentukan. Parameter formal selalu berjenis parameter masukan
sehingga deklarasi nama parameter selalu diawali dengan kata
input.
Di dalam badan fungsi bertujuan untuk mengembalikan
nilai yang dihasilkan oleh fungsi tersebut. Ekspresi dapat berupa
konstanta, atau sebuah peubah, atau sebuah rumus.
Contoh fungsi f(x) = 2x2 + 5 x – 8
Tuliskan fungsi untuk menghasilkan nilai F(x) = 2x2 + 5x – 8, x ∈ R
Penyelesaian
function F(input x : real) →real
(mengembalikan nilai F(x) = 2x2 + 5x – 8, x ∈ R)
DEKLARASI
( tidak ada )
ALGORITMA
return 2*x*x + 5*x – 8
Di dalam algoritma di atas
F adalah nama fungsi, tipe-nya real
X adalah parameter (by value) formal
Dan di dalam badan fungsi, nilai yang dihasilkan oleh fungsi
dikembalikan (return) ke titik pemanggilan dengan pernyataan :
return 2*x*x + 5*x – 8
Yang dalam hal ini, return mengembalikan hasil evaluasi dari
ekspresi
2*x*x + 5*x – 8
Contoh fungsi genap atau ganjil
Buatlah fungsi untuk menentukan apakah sebuah bilangan bulat
merupakan bilangan genap. Bilangan bulat disebut genap jika ia
habis dibagi dengan dua.
Penyelesaian :
function Genap(input x : real) →boolean
(true jika n adalah bilangan genap, atau false jika
tidak genap)
DEKLARASI
( tidak ada )
ALGORITMA
return (n mod 2 = 0)
Perhatikan pernyataan :
return (n mod 2 = 0)
Di dalam fungsi genap di atas. Ekspresi th mod 4 = 0 adalah
ekspresi boolean (nilai ekspresi mungkin true atau false).
Pernyataan tersebut ekivalen jika ditulis sebagai berikut :
if n mod 2 = 0 then
return true ( n genap )
else (berarti, n mod 2 ≠ 0)
return false ( n ganjil )
endif
Contoh fungsi tahun kabisat
Buatlah fungsi untuk menentukan apakah sebuah tahun merupakan
tahun kabisat atau bukan kabisat. Suatu tahun disebut tahun kabisat
jika tahun tersebut habis dibagi 4 atau habis dibagi 400 jika tahun
tersebut kelipatan 100.
Penyelesaian :
function Kabinet(input th : real) →boolean
(true jika th adalah tahun kabisat, atau false jika
tidak)
DEKLARASI
( tidak ada )
ALGORITMA
if (th mod 4 = 0 and th mod ≠ 0) or (th mod 400 =
0) then
return true ( tahun kabisat )
else
return false ( bukan tahun kabisat )
endif
11.3 Pemanggilan Fungsi
Fungsi diakses dengan cara memanggil namanya dari program
pemanggil, diikuti dengan daftar parameter aktual (bila ada). Karena
fungsi menghasilkan nilai, maka nilai tersebut dapat diperlukan
dengan dua cara. Pertama, nilai yang dikembalikan oleh fungsi
ditampung di dalam sebuah peubah yang bertipe sama dengan tipe
fungsi.
peubah ← NamaFungsi (parameter aktual, jika ada)
Misalnya (berdasarkan contoh-contoh fungsi yang sudah diberikan di
atas)
y ← F(5) (y harus bertipe real)
z ← H(x,y,z) (x harus bertipe integer; x,y dan z harus sudah
terdefinisi nilainya)
hh←genap(m) (hh bertipe boolean; m harus sudah terdefinisi
nilainya)
Kedua, nilai yang dikembalikan oleh fungsi dapat langsung
dimanipulasi seperti pada contoh-contoh berikut :
write( F(5))
p ← 2*H(x,y,z) – x + y
if Genap(m) then
Contoh program pemanggil fungsi F(x) = 2x2 + 5x – 8
Misalkan kita ingin menampilkan tabel yang berisi nilai-nilai x dan
F(x) di dalam selang [0,15] dengan Δx = 0,2, seperti contoh berikut :
x F(x)
10.0
10.2
10.4
…..
…..
14.8
15.0
242.0
251.08
…..
…..
…..
…..
…..
Fungsi F(x) = 2x2 + 5x – 8 sudah didefinisikan di dalam Algoritma
11.1. kita akan memanggil fungsi tersebut dari program utama.
Penyelesaian
PROGRAM TabelFungsi
( Program utama yang memperagakan cara pemanggilan
fungsi F. Program ini menampilkan tabel nilai-nilai
x dan f(x) di dalam selang [10.15] dengan Δx = 0.2)
DEKLARASI
x : real
function F(input x : real ← real
(mengembalikan nilai F(x) = 2x2 + 5x – 8, x ∈ R)
ALGORITMA
( buat header tabel )
write(‘.....................................’)
write(‘ x f(x) ’)
write(‘.....................................’)
x←10.0
while x < 15.0 do
while(x, “ “,F(X))
x ← x + 0.2
endwhile
(buat garis penutup tabel)
write(‘......................................’)
Contoh program pemanggil fungsi kabisat
Dibaca sebuah tahun, harus ditentukan apakah tahun tersebut
merupakan tahun kabisat atau bukan.
Penyelesaian
PROGRAM TabelFungsi
( program utama menetukan apakah suatu tahun
merupakan tahun kabisat.)
DEKLARASI
tahun : integer
function Kabisat(input th : integer)←boolean
(true jika th adalah tahun kabisat, atau false
jika bukan kabisat)
ALGORITMA
read(tahun)
if Kabisat(tahun) then
write(‘tahun kabisat’)
else (berarti Kabinet (th) = false)
write(‘bukan tahun kabinet’)
endif
Contoh program pemanggil FungsiMaks
Dibaca dua buah nilai integer, a dan b. Tentukan nilai yang terbesar
dari keduanya.
Penyelesaian
PROGRAM TentukanMaksimum
( program yang memanggil fungsi maks untuk
menentukan nilai maksimum dari dua buah masukan
nilai bilangan bulat a dan b.)
DEKLARASI
a,b : integer
function Maks(input a, b : integer)←integer
(mengembalikan harga terbesar dari a dan b)
ALGORITMA
read(a,b)
write(Maks(a,b))
11.4 Prosedur atau Fungsi
Fungsi digunakan apabila modul program mengembalikan
sebuah nilai, sementara prosedur digunakan bila modul
menghasilkan efek netto dari (satu atau) sekumpulan aksi. Namun
dalam praktek, seringkali perbedaan antara keduanya tidak jelas,
karena sebuah prosedur dapat juga ditulis sebagai fungsi, demikian
pula sebaliknya. Pemilihan apakah sebuah modul direalisasikan
sebagai fungsi atau prosedur bergantung pada kebutuhan dan seni
memprogram.
(a) Mengubah fungsi prosedur
Fungsi :
function Maks(input a, b:integer)→ integer
( mengendalikan harga terbesar dari a dan b )
DEKLARASI
( tidak ada )
ALGORITMA
if a > b then
return a
else
return b
endif
Prosedur :
procedure TentukanMaks(input a,b; integer,
output maks : integer)
( menentukan nilai terbesar dari a dan b, dan
menyimpannya di max )
( K.Awal : a dan b sudah terdefinisi nilainya )
( K.Akhir : maka berisi nilai terbesar dari a
atau b )
DEKLARASI
( tidak ada )
ALGORITMA
If a > b then
maks ← a
else
maks ← b
endif
11.5 Contoh-contoh Tambahan
Contoh fungsi euclidean
Tinjau kembali algoritma Euclidean untuk menghitung pembagi
bersama terbesar (goal) dari dua buah bilangan bulat tak-negatif m
dan n (m>n). Harga m dan n dibaca dari piranti masukan (Pembaca
harap membaca kembali contoh algoritma pertama yang diberikan di
dalam Bab 1). Tulis kembali algoritma Euclideab ke dalam bentuk
fungsi.
Penyelesaian
function god(input m, n:integer)→ integer
( mengembalikan pembagi bersama terbesar (god) dari
dua buah bilangan bulat tak-negatif n dan n, dengan
syarat m > n dan m, m > n dan m,n > 0.)
DEKLARASI
r : integer (sisa pembagian m dengan n)
ALGORITMA
while n ≠ 0 do
r ← m mod n
r ← n
n ← r
endwhile
( n ≠ 0, maks gcd = m)
return m
Hal ini yang harus diperhatikan adalah nilai m dan n. Fungsi gcd
hanya benar untuk nilai m > n. Karena itu, sebelum pemanggilan
fungsi, nilai m dan n harus diperiksa terlebih dahulu. Jika m < n,
lakukan pertukaran m dan n
PROGRAM Euclideam
( program untuk menghitung pembagi bersama terbesar
dari dua buah bilangan bulat positif m dan n. )
DEKLARASI
m,n : integer
function gcd(input m, n : integer)←integer
(Mengembalikan pembagi bersama terbesar (gcd)
dari dua buah bilangan bulat tak-negatif m dan
n, dengan syarat m > n dan m,n > 0.)
procedure Tukar(input, output a, b : integer)
( memperukarkan nilai a dan b)
ALGORITMA
read(m,n)
if m < n then
( pertukaran m dan n )
Tukar (m,n)
endif
write(gcd(m,n))
Contoh fungsi untuk menentukan apakah sebuah bulat positif m
merupakan bilangan prima. Keluaran dari fungsi adalah true jika m
prima dan false m bukan prima.
Penyelesaian
Cara yang paling sederhana memeriksa keprimaan bilangan bulat
positif m adalah dengan membagi m dengan 2, 3, … m – 1. jika ada
suatu pembagian yang habis maka kita simpulkan m bukan bilangan
prima,
Catatan :
Teorema yang lebih maju di dalam matematika menyebutkan bahwa
untuk keprimaan bilangan bulat positif m >2, kita cukup menguji
bilangan bulat dari 2 sampai m sehingga pembagi yang mungkin.
11.6 Translasi Notasi Algoritmik untuk Fungsi dalam Notasi Bahasa
Pascal dan Bahasa C
ALGORITMIK :
Fungction nama fungsi (deklarasi parameter, jika da
→ tipe
{ spesifikasi fungsi, menjelaskan apa yang
dilakukan dan yang dikembalikan oleh fungsi }
DEKLARASI
{ semua yang dipakai di dalam fungsi dan hanya
berlaku lokal di dalam prosedur didefinisikan di
sini }
ALGORITMA :
{ badan fungsi, berisi instruksi-instruksi untuk
menghasilkan nilai yang akan dikembalikan oleh
fungsi }
return ekspresi { pengembalian nilai yang dihailkan
fungsi }
PASCAL :
Fungction nama fungsi {deklarasi parameter, jika
ada} : tipe :
{ spesifikasi fungsi, menjelaskan apa yang
dilakukan dan yang dikembalikan oleh fungsi }
DEKLARASI :
{ semua nama yang dipakai di dalam fungsi dn hanya
berlaku lokal di dala prosedur didefinisikan di
sini }
ALGORITMA :
Begin
{ Badan fungsi berisi instruksi-instruksi ntuk
menghasilkan nilai yang akan dikembalikan oleh
fungsi }
nama fungsi = ekspresi : {pengembalian nilai yang
dihasilkan fungsi
end :
catatan :
1. dalam bahasa Pascal, fungsi hanya dapat mengembalikan nilai
bertipe sederhana. Karena itu, tipe hasil dari fungsi haruslah dri
tipe sederhana\. Manipulasi fungsi yang menghasilkan nilai
bertipe bentukan akan dijelaskan pada bagian lain sesudah ini.
2. apabila fungsi tidak memiliki daftar parameter formal, maka tanda
kurang buka dan kurung tutup tidak ditulis:
3. fungsi dideklarasikan didefinisikan di dalam blok program
pemanggil.
Beberapa contoh Translasi :
1. Fungsi F(x) = 2x2 + 5x – 8 dan program pemanggilya.
ALGORITMIK :
Fungsi :
Function F(input x : real)→real
{ mengembalikan nilai f(x)
DEKLARASI
{ tidak ada }
ALGORITMA
Return 2*x*x + 5*x – 8
Program Utama
PROGRAM TabelFungsi
{ program utama yang memperagakan cara
pemanggilan fungsi F. program ini menampilkan
tabel nilai-nilai x da f(x) di dalam selang
(10,15) }
DEKLARASI
X : real
Function F(input x : real) → real
{ mengembalikan nilai F(x)
ALGORITMA
{ buat header tabel }
X←10.0
While x < 15.0 do
Write(x,’ ‘,F(x))
Endwhile
( buat garis penutup tabel )
2. Fungsi untuk menentukan bilangan genap dan program
utamanya.
ALGORITMIK :
Fungsi
Function Genap(input n : integer)
{ true jika n adalah bilangan genap, atau false
jika sebaliknya )
DEKLARASI
{ tidak ada }
ALGORITMA
Return {in mod 2 = 0)
Program Pemanggil :
PROGRAM Genap Ganjil
{ Program untuk menentukan apakah sebuah
bilangan genap atau ganjil }
DELARASI
X : integer
Function Genap (input n : integer}
{true jika n adalah bilangan genap atau false
jika sebaliknya }
ALGORITMA :
Read(x)
If Genap(x) then
Write(‘genap’)
Else
Write (‘ganjil’)
Endif
3. Fungsi yang mengembalikan hasil bertipr bentukkan
Fungsi di dalam Bahasa Pascal tidak dapat mengembalikan nilai
yang bertipe terstruktur karena itu fungsi yang mengembalikan
tipe strukturnya harus dimanipulasi dengan cara mengubah tipe
hasilnya menjadi tipe dasar.
Dibawah ini adalah contoh yang SALAH menstralasi fungsi dari
notasi algoritma di atas menjadi fungsi dalam Bahasa Pascal di
bawah ini :
Penulisan fungsi Titik tengah yang mengembalikan nilai bertipe
titik pada fungsi di atas salah, karena fungsi didalam Pascal
hanya mengembalikan nilai yag bertipe dasar
Agar fungsi titik tengah dapat di translaasi dalam Bahasa pascal.
Fungsi tersebut hanya dimanipulasi sehingga ia mengembalikan
nilay yang bertipe sederhana sembarang (misal integer),
sementara titik tengah disimpan dalam sebuah parameter
MODEL PENGAKSESAN BERUNTUN
Dalam dunia pemrograman, banyak objek yang tersusun secara beruntun
sehingga pengaksesannya juga beruntun. Objek tersebut antara lain teks ,
arsip beruntun dan senarai. Pengaksesan objek-objek tersebut adalah
secara serial, satu persatu dimulai dari elemen pertama.
12.1 Definisi Teks
Secara sederhana teks dapat kita pandang sebagai string yang
sangat panjang. Setiap elemen di dalam teks bertipe karakter.
Secara tekhnis disimpan di dalam sebuah arsip, namun sewaktuwaktu
teks dibaca lalu disimpan di dalam memori sebagai larik.
12.2 Tanda Akhir Teks
Pemrosesan teks yang utama adalah proses pembacaan. Karena
teks berisi rangkaian karakter, maka pembacaan teks aalah
membaca karakter demi karakter secara beruntun mulai dari awal
teks sampai akhir teks.
12.3 Definisi Teks Kosong
Pemrosesanteks selalu mempertimbangkan keadaan awal teks
yaitu apakah teks kosong atau tidak kosong.
12.4 Pembacaan teks
Misalkan kita ingin memiliki sebuah teks program dalam bahasa C
yang sudah benar secara sintaks.
12.5 Pemrosesan teks dalam Bahasa pascal dan C
Pendeklarasian peubah serta beberapa prosedur pemrosesan teks
yang sudah dijelaskan atas dalam Bahasa Pascal dan C adalah
sebagai berikut :
1. Deklarasi
ALGORITMA
DEKLARASI
T : text { teks }
C : char { karakter yang sedang ditunjuk oleh
head baca }
PASCAL
{* DEKLARASI *}
var
T : text { teks }
C : char { karakter yang sedang ditunjuk oleh
head }
C
/*DEKLARASI */
file *T/*teks*/
char C; /* karakter yang sedang ditunjuk oleh
head */
2. Prosedur RESET_TEKS
ALGORITMA
Procedure RESET-TEKS
{ menyiapkan teks pada posisi awal }
{ K. Awal : sembarang }
{ K. Akhir : head menunjuk pada karakter
pertama di dalam teks. Akibat pemanggilan
prosedur ini, head menunjuk ke karakter pertama
teks. Karakter yang ditunjuk mungkin }
3. membaca Karakter Teks
ALGORITMA
Read(T;C) { membaca karakter yang ditunjuk oleh
head baca.
Karakter yang dibaca disimpan di dalam peubah C
}
13. LARIK
Sebuah peubah hanya menyimpan sebuah nilai. Ia tidak menyimpan
beberapa buah niai yang bertipe sejenis dalam pemrograman sering kali
kita mengolah sekumpula data yang bertipe sama,
Struktur peyimpanan data sepeeti ii dinamakan array. Nama lain adalah
tabel, vektor atau peubah majemuk (satu peubah mempunyai banyak
elemen).
13.1 Apakah Larik itu ?
Larik adalah struktur data yang menyimpan sekumpulan elemen
yang bertipe sama, setiap elemen diakses langsung melalui indeks.
Indeks larik haruslah tipe data yang menyatakan keturutan, misalnya
integer atau karakter.
Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen
larik bertipe sama maka nilai yang disimpan oleh setiap elemen juga
harus bertipe sama.
13.2 Mendeklarasikan Larik
Larik adalah struktur data yang statik, artinya jumlah elemen larik
harus sudah diketahui sebelum program dieksekusi.
13.3 Cara mengacu Elemen Larik
Elemen larik diacu melalui indeksnya. Nilai indeks harus terdefinisi.
Dengan mengacu pada larik yang sudah dideklarasikansebelum ini.
Berikut diberikan beberapa contoh mengacul elemen larik adalah :
A(4) ( mengacu elemen keempat dari larik A )
NamaMhs(2) ( mengacu elemen kedua dari larin
NamaMhs )
A(i) ( mengacu elemen ke-I dari larik A, asalkan
nilai I sudah terdefinisi )
NamaMhs(i+1) ( asalkan nilai I sudah terdefinisi )
13.4 Pemrosesan Larik
Elemen larik tersusun secara beruntun. Karena itu, elemennya
diproses secara beruntun melalui indeksnya yang terurut.
Pemrosesan beruntun pada larik adalah dimulai dari elemen pertama
larik, berturut-turut pada elemen berikutnya. Sampai elemen terakhir
dicapai, yaitu elemen dengan indeks terbesar.
PROGRAM Pemrosesan larik
{ skema pemrosesan larik secara beruntun }
DEKLARASI
Const nmaks = 100 ( ukuran maksimum larik )
Type larikInt : array
ALGORITMA :
Inisialisasi
While I < nmaks do
Enwhile
Terminasi.
13.5 Larik Bertipe Terstruktur
Contoh-contoh algoritma yang dibahas sebelum ini menggunakan
larik dengan elemen – elemen bertipe sederhana. Elemen larik juga
dapat bertipe terstruktur.
Struktur larik yang menyimpan keseluruhan data tersebut
dideklarasikan dibawah ini nama Larik adalah Mhs.
DEKLARASI
Const Nmaks = 100
Type mahasiswa
Type tabmhs
Mhs
13.6 Bekerja dengan dua buah larik
Dua buah larik atau lebih dapat dioperasikan sekaligus. Perhatikan
contoh berikut ini misalkan nilai ujian n orang mahasiswa telah
disimpan di dalam larik nilujian. Kita akan menghitung nilai indeks
mahasiswa tersebt dan menyimpan nilai indeks tersebut di dalam
larik indeks.
13.7 Translasi Notasi Algoritmik Larik ke dalam Notasi Bahasa pascal dan
Bahasa C
Setiap bahasa pemrograman berbeda-beda dalam menyatakan awal
indeks larik, bahasa C memulai indeks dari 0 sedangka dalam
bahasa Pascal awal indeks dapat didefinisikan oleh pemrogram.
13.8 String sebagai Larik Karakter
Tipe string sudah kita pelajari ketika membicarakan tipe data yang
diprogram. String pada hakikatnya adalah larik karakter dengan
panjang dinamis, artinya ukura larik baru ditentuka pada saat
program running. Karena string adalah adalah larik, maka elemenelemen
string yag berupa karakter dapat diakses melalui indeks.
a. Menghitung panjang string
Diberikan sebuah string s tulislah fungsi untuk menghitung
panjangnya
PASCAL :
Di atas sudah dijelaskan bahwa karakter pertama dari peubah
string berisi panjang string dinamin. Jadi fungsi untuk menghitung
panjang string s cukup hanya mengembalikan nilai ordinal dari
karakter ke 0
Function panjang (s : string) integer
{ mengembalikan panjang string }
begin
panjang:=ord(s0]}
end
C:
Di atas sudah dijelaskan bahwa larik karakter diakhiri dengan
karakter null sehingga program dapat menemukan akhir sting.
14. Contoh – Contoh Pemecahan Masalah
bab ini menyajikan contoh-contoh pemecahan masalah yang mencakup
materi larik termasuk didalamnya prosedur, fungsi dan model
pengaksesan beruntun.
DEKLARASI
Const Nmaks = 100
Type barang : record
HargaBrg : real
>
type LarikBarang : array (1…Nmaks] of barang
Harga Jual : Larik Barang
Contoh Masalah 14.2 Menghitung Jumlah Kemunculan
Diberikan sebuah larik karakter yang berukuran n elemen. Karakter
didalam larik hanya ada dua macam 0 dan 1 buatlah prosedur untuk
menghitung jumlah kemunculan 1 di dalam larik tersebut.
Penyelesaian
Untuk menghitung jumlah kemunculan 1 di dalam larik kita harus
memeriksa setiap elemn larik mulai dari elemen pertama sampai elemen
ke-n.
DEKLARASI
Const nmaks = 100
Type Larikhar : array
Procedure Hitunglah jumlah
{ menghitung banyaknya karakter 1 di dalam larik C }
{ k awal : elemen larik C }
{ K. akhir : m berisi banyaknya karakter 1 }
DEKLARASI
I = integer
ALGORITMA :
m←0
for i←1 to n do
ifC(i) = 1 then
m ← m + 1
end if
endfor
Contoh Masalah konversi String ke integer
Misallkan sebuah string telah berisi rangkaian karakter angka sehingga
membentuk sebuah bilangan tulislah program dalam bahasa pascal untuk
mengkonversi rangkaian karakter angka tersebut ke dalam bilangan bulat.
Penyelesaian
Kesulitan yang timbul dalam pengkonversian string bilangan menjadi nilai
integer adalah menentukan faktor pengalui sebuah karakter angka apakah
dikali dengan 10 atau dikali dengan 100 dan sebagainya.
procedure KonversiStrkeInt(s : string; var n :
integer);
( Mengkonversi barisan karakter angka di dalam string s
menjadi nilai integer, Versi 1 )
( K.Awal : s sudah berisi barisan karakter angka (‘0’..
‘9’)
( K.Akhir : n berisi representasi integer dari string s
)
{*DEKLARASI*)
var
i : integer (indeks slarik)
pengali : integer (indeks pengali)
function KarKeInt(x : char):integer;
( mengkonversi karakter digit (‘0’..’9’) ke integer
(0..9) )
(*ALGORITMA*)
begin
pengali:=1;
n:=0;
for i:=Length(s) downto 1 do
begin
n := n + KarkeInt(s(i)) * pengali);
pengali := pengali * 10;
end; (for)
end
Contoh Masalah Membalikan string
Misalkan sebuah string s telah berisi rangkaian karakter. Tulislah prosedur
dalam bahasa pascal dan bahasa C untuk membalikkan susunan karakter
didalam s misalnya jika s berisi string sate maka hasilnya pembalikan s
adalag string etas.
Penyelesaian
procedure Balikkan(var s : string);
( Mengembalikan susunan karakter di dalam string s )
( K.Awal : string s sudah terdefinisi. )
( K.Akhir : susunan karakter di dalam s kebalikan dari
susunan semula. )
{*DEKLARASI*)
var
i,j : integer (indeks larik)
temp : char
(*ALGORITMA*)
begin
i :=1;
j :=Length(s); /*panjang string s*/
while (i <= j) do
begin
( pertukaran s(i) dan s(j))
temp := s(i);
s(i) := s(j);
i := i + 1 ;
j := j + 1;
end;
end

1 Komentar:

Blogger Algoritma mengatakan...

pelajari dengan baik by Nanang Suryanang s.kom

6 Maret 2010 pukul 19.58  

Posting Komentar

Berlangganan Posting Komentar [Atom]

<< Beranda