Minggu, 29 Agustus 2010

Pemrosesan Teks

Pemrosesan Teks

Pemrosesan teks banyak dilakukan dalam perangkat lunak pengolah kata (word processor) seperti MS-Word, WordPerfect, dll.
Text memiliki definisi sebagai deretan karakter yang bisa direkam ke dalam suatu berkas/file/arsip.
 Suatu teks bisa terdiri atas beberapa kata (words).
 Setiap kata terpisah dari kata lainnya,paling sedikit satu spasi
 Suatu teks dapat terdiri dari beberapa baris (lines) yang dibentuk oleh beberapa kata.
 Setiap baris diakhiri oleh marka end-of-line (EOL)
 Suatu teks diawali oleh marka begin-of-line (BOF) dan diakhiri dengan marka end-of-file (EOF)

Deklarasi suatu teks didahului dengan tipe-data text.

Beberapa intruksi yang berkaitan dengan teks adalah sebagai berikut :
• Mengembalikan petunjuk teks ke posisi awal (BOF) dari fle : reset (F)
• Membuka suatu file teks yang ada di storage (disk) : assign (F, nama_file).
• Membaca ssatu karakter dari file teks : read (F, char ).
• Merekam satu karakter dari file teks : read (F, char ).
• Menutup file teks : close (F).
Contoh :
1. Menghitung jumlah karakter yang ada dalam suatu file teks bernama mytext.txt.
Algoritma Hit_karakter
{menghitung jumlah karakter yang ada dalam suatu teks}
Deklarasi
text F;
char k;
integer jkar;
Deskripsi
assign ( F, “mytext.txt”);
{kembalikan ke awal file, baca BOF}
read (F, k);
if (k!=BOF)
then reset (F);
read (F, k);
endif
{baca karakter hingga akhir file}
read (F, k);
jkar ← 0;
while (k != EOF) do
{hindari tanda EOL)
If (k!= EOL)
then jkar ← jkar +1;
endif.
read (F,k);
endwhile.
Write (“jumlah karakter (termasuk spasi) = “, jkar);

2. Menghitung jumlah baris yang ada dalam suatu fle teks
Algoritma Hit_baris
{menghitung jumlah baris pada suatu teks}
Deklarasi
text F;
char k;
integer jbar;
Deskripsi
assign ( F, “mytext.txt”);
{kembalikan ke awal file, baca BOF}
read (F, k);
if (k!=BOF)
then reset (F);
read (F, k);
endif.
{menolkan jumlah baris pada awal putaran}

{baca karakter hingga akhir file}
read (F, k);
while (k != EOF) do
{bila ketemu tanda EOL tambah jumlah baris)
If (k= EOL)
then jbar ← jbar + 1;
endif.
read (F,k);
endwhile.
Write (“jumlah baris = “, jbar);

3. Menghitung jumlah kata yang ada dalam suatu fle teks, dengan anggapan setiap kata dipisahkan spasi.oleh
Algoritma Hit_baris
{menghitung jumlah baris pada suatu teks}
Deklarasi
text F;
char k1, k2;
integer jkata;
Deskripsi
assign ( F, “mytext.txt”);
{kembalikan ke awal file, baca BOF}
read (F, k);
if (k1 !=BOF)
then reset (F);
read (F, k1);
endif.

{baca karakter berurutan hingga akhir file}
read (F, k1);
read (F, k2);
jkata ← 0;
while (k1 != EOF) ←║( k2 ! = EOF) do
If (k1 != ‘ ‘ ) && (k2 ! = ‘ ‘ )
then jkata ← jkata + 1;
endif.
k1 ← k2;
read (F,k2);
endwhile.
If (k1 != ‘ ‘ ) && (k2 =EOF)
Then jkata ← + 1
endif.
write (“jumlah baris = “, jbar);

Intruksi Pengulangan

Parameter

Ketika suatu prosedur dipanggil maka pada hakikatnya bisa dilakukan pertukaran data antara program utama dan prosedur. Pertukaran ni dilakukan melalui parameter.
 Parameter Aktual adalah parameter yang disertakan pada saat prosedur dipanggil untuk dilaksanakan, sering disebut argument.
 Parameter Formal adalah parameter yang dituliskan pada definisi suatu prosedur/fungsi.
Ada tiga jenis parameter formal, yaitu :
1. Parameter masukan (input) : parameter yang menerima nilai dari parameter aktual.
2. parameter keluaran (output) : parameter yang menyerahkan nilai ke parameter actual
3. parameter masukan dan keluaran (input-output) : parameter yang menerima nilai dari parameter actual untuk diproses dalam prosedur kemudian diserahkan kembali ke parameter aktual.

Algoritma berikut ini menunjukan pemakaian parameter masukan dan parameter keluaran untuk prosedur menghitung luas persegi panjang.

Algoritma Luas_persegipanjang
{ menghitung luas persegi panjang dengan menggunakn prosedur yang memanfaatkan parameter input dan parameter output}
Deklarasi
real panjang, lebar
prosedur Hit_Luas_persegipanjang (input real p,l; output ls; );
deskripsi
write (“masukkan panjang-nya :”);
read (panjang);
write (“masukkan lebar-nya: “);
read (lebar);
Hit_luas_persegipanjang (panjang, lebar, luas);
Write(“Luas persegi panjang = “,luas);
Prosedur Hit_Luas_persegipanjang (input real p,l; output ls; );
{prosedur menghitung luas persegi panjang, menerima p (panjang dan t (tinggi), mengembalikan ls (luas)}
Deklarasi {}
Deskripsi
Ls ← p*l;

Algoritma yang menunjukan pemakaian parameter input/output yang digunakan untuk prosedur yang melakukan pertukaran nilai variabel.
Algoritma Tukar_nilai
{ menukar nilai dua variabel yang dilakukan oleh suatu prosedur dengan parameter input/output}
Deklarasi
Integer x,y;
Prosedur tukar (in-out integer x,y);
Deskripsi
Write (” masukkan nilai x : ”);
Read(x);
Write (“masukkan nilai y : “);
Read(y);
Tukar (x,y);
Write(“setelah ditukar : “):
Write(“x = “,x,”y=”,y);
Prosedur tukar (in-out integer x,y);
{prosedur yang melaksanakan pertukaran nilai}
Deklarasi
Integer temp;
Deskripsi
temp←x;
x←y;
y←temp;

Parameter

Parameter

Ketika suatu prosedur dipanggil maka pada hakikatnya bisa dilakukan pertukaran data antara program utama dan prosedur. Pertukaran ni dilakukan melalui parameter.
 Parameter Aktual adalah parameter yang disertakan pada saat prosedur dipanggil untuk dilaksanakan, sering disebut argument.
 Parameter Formal adalah parameter yang dituliskan pada definisi suatu prosedur/fungsi.
Ada tiga jenis parameter formal, yaitu :
1. Parameter masukan (input) : parameter yang menerima nilai dari parameter aktual.
2. parameter keluaran (output) : parameter yang menyerahkan nilai ke parameter actual
3. parameter masukan dan keluaran (input-output) : parameter yang menerima nilai dari parameter actual untuk diproses dalam prosedur kemudian diserahkan kembali ke parameter aktual.

Algoritma berikut ini menunjukan pemakaian parameter masukan dan parameter keluaran untuk prosedur menghitung luas persegi panjang.

Algoritma Luas_persegipanjang
{ menghitung luas persegi panjang dengan menggunakn prosedur yang memanfaatkan parameter input dan parameter output}
Deklarasi
real panjang, lebar
prosedur Hit_Luas_persegipanjang (input real p,l; output ls; );
deskripsi
write (“masukkan panjang-nya :”);
read (panjang);
write (“masukkan lebar-nya: “);
read (lebar);
Hit_luas_persegipanjang (panjang, lebar, luas);
Write(“Luas persegi panjang = “,luas);
Prosedur Hit_Luas_persegipanjang (input real p,l; output ls; );
{prosedur menghitung luas persegi panjang, menerima p (panjang dan t (tinggi), mengembalikan ls (luas)}
Deklarasi {}
Deskripsi
Ls ← p*l;

Algoritma yang menunjukan pemakaian parameter input/output yang digunakan untuk prosedur yang melakukan pertukaran nilai variabel.
Algoritma Tukar_nilai
{ menukar nilai dua variabel yang dilakukan oleh suatu prosedur dengan parameter input/output}
Deklarasi
Integer x,y;
Prosedur tukar (in-out integer x,y);
Deskripsi
Write (” masukkan nilai x : ”);
Read(x);
Write (“masukkan nilai y : “);
Read(y);
Tukar (x,y);
Write(“setelah ditukar : “):
Write(“x = “,x,”y=”,y);
Prosedur tukar (in-out integer x,y);
{prosedur yang melaksanakan pertukaran nilai}
Deklarasi
Integer temp;
Deskripsi
temp←x;
x←y;
y←temp;

Menghitung Nilai Rata-Rata

Menghitung Nilai Rata-Rata dan Varians

Andaikan ada N bilangan biasa yang dimasukkan lewat keyboard maka nilai rata-rata adalah jumlah semua bilangan tersebut dibagi N. dengan kata lain :

Rata-rata = (x1 + x2 + … + xn) / N = ∑ x / N

Varians adalah nilai yang menunjukan besarnya jumlah perbedaan dari setiap bilangan terhadap nilai rata-rata, atau :

Varians = ( ∑ (x – Rata)² ) / ( N-1) = ( ∑x² - (∑x)² / N ) / (N-1)

Analisis :
Tetapkan N
• Lakukan perulangan mulia dari i = 1 s/d N
- masukkan x
- jumlahkan x, S = S +x
- jumlahkan x², K = K + x²
• Hitung Rata = S / N
• Hitung varians = ( K - S² / N) / (N-1)

Algoritmanya sebagai berikut :

Algoritma Nilai_Rata_dan_varians
{menghitung nilai rata dan varians dari N buah bilangan}
Definisi Variabel
Integer N, I ;
Real x, S, K, Rata, Varians ;
S ← 0 ;
K ← 0;
For ( i = to N step 1 )
Write (“masukkan bilangan ke – “,i);
Real (x);
S ← S + x;
K ← K + x * x;
Endfor.
Rata ← S / N;
Varians ← (K – S * S / N) / ( N-1);
Write ( “ rata-rata = “, Rata);
Write (“Varians = “, varians);

Memilih Operasi Berdasarkan Data Input

Memilih Operasi Berdasarkan Data Input


Andaikan operasi terhadap dua bilangan dapat dipilih melalui satu “menu” sebagai berikut :
Pilih operasi yang diinginkan :
+ Penjumlahan
- Pengurangan
/ Pembagian
* Perkalian
Jenis operasi :_
Masukkan angka 1:_
Masukkan angka 2:_
Hasil = …

Masih mau mencoba (Y/T)?
Apabla jawaban untuk mencoba ulang adalah ‘Y” maka menu operasi di atas dimunculkan kembalidan proses yang sama berulang kembali hingga jawaban pengguna program adalah ‘T’.

Algoritma MenuProgram
{memilih operasi berdasarkan pilihan pada menu program}
Deklarasi
Real angka1, angka2, hasil;
Char pilihan, ulang;
Deskripsi
Ulang ← ‘Y’;
write (ulang = ‘Y’ ║ulang = ‘y’) do
write (“pilih operasi yang diinginkan:”);
write (“ + Penjumlahan”);
write (“- pengurangan”);
write (“/ pembagian”);
write (“* perkalian “);
write (“ “);
write (“jenis operasi:”);
read (pilihan);

write (“masukkan angka 1:”);
read (angka 1)
write (“masukkan angka 2:”);
read (angka2);
case (pilihan)
‘+’ : hasil ← angka 1+ angka 2;
‘-‘ : hasil ← angka 1 – angka2;
‘/’ : if (angka2=0)
then write (“hasl tak berhingga”);
else hasil ← angka 1 / angka 2;
endif.
‘*’ : hasil ← angka 1 * angka 2;
Default : write (pilihan operasi salah !”);
Hasil ← 0;
endcase.
if (angka2 ! = 0)
then write (“Hasil = “, hasil);
endif.

write (“masih mau coba (Y/T) ? “);
read (ulang);
endwhile.

Intruksi Pemilihan

Intruksi Pemilihan

A Intruksi If / Then / Else
Intruksi if/then/else digunakan untuk memilih alternatf apabila suatu syarat atau kondisi dipenuhi ( 1 kasus ), atau memilih satu alternative dari dua kemungkinan berdasarkan apakah syarat terpenuhi atau tidak.
Algoirtma berikut ini menunjukann pemakaian ntruksi pemilihan dimana ada 3 bilangan bulat dimasukkan lewat keyboard kemudan dicari bilangan yang terbesar di antara ketiganya.
Algoritma Pemilihan
{contoh algoritma ini menerima 3 bilangan bulat kemudian menetapkan bilangan yang terbesar}
Deklarasi
Integer A,B,C, maks;
Deskripsi
write (‘masukkan bilangan 1 : “);
read (A);
write (“masukkan bilangan 2 : “);
read (B);
write (“masukkan bilangan 3 :”);
read (C) ;

if (A > B)
then maks ← A;
else maks ← B;
endif.
If ( C > maks )
Then maks ← C;
endif.
write (“maksimum = “,maks);

B. Intruksi Case
Intruksi case digunakan sebagai intruksi pemilihan dimana aksi yang akan dilakukan hanya bergantung pada nlai dari suatu macam variabel. Dengan kata lain, variabel yang menentukan ini mungkin memiliki banyak macam nlai dan setiap nilainya berkaitan dengan satu macam aksi.

Bentuk intruksi case :
Case (variabel)
Nilai-1 : aksi-1 ;
Nilai-2 : aksi-2 ;
Nilai-3 : aksi- 3 ;
. . . . .
default : aksi-n;
endcase.

Bentuk case di atas dapat diterjemahkan sebagai berikut :
Dimungkinkan ada n-buah aksi, mulai dair aksi-1 hingga aksi-n.
Setiap aksi hanya dilakukan apabila suatu nilai variabel dicapa sesua persyaratan. Misalnya, aksi-1 dilakukan hanya bila variabel bernilai nilai-1, aksi-2 dlaksanakan apabila variabel bernilai nilai-2, dan seterusnya.
Apabila tak satupun nilai variabel yang cocok maka aksi-n dikerjakan sebagai aksi “default”.

Contoh :
Gaji karyawan pada sebuah perusahaan didasarkan pada jam kerja dalam satu bulan serta posisi atau golongannya dalam perusahaan itu.
Upah perjam menurut golongan adalah sebagai berikut:
Golongan upah/jam (Rp)
A 5000
B 6000
C 7500
D 9000
Apabla karyawan bekerja lebih dari 150 jam perminggu maka kelebihan jam kerja tersebut dhitung sebagai lembur dengan upah/jam 25% di atas upah regular. Buat sebuah algoritma yang menerima nama, golongan, serta jam kerja karyawan, kemudian tampilkan gaji totalnya dalam suatu bulan.
Algoritma gaji_karyawan
{algoritma yang menerima nama. Golongan serta jam kerja kemudian menampilkan total gaji yang diterima karyawan }

Deklarasi
Real gaji, total, jam kerja, lembur, upah;
string nama;
char golongan;
deskripsi
write (“masukkan nama karyawan:”);
read (nama)
write(“masukkan jam kerjanya:”);
read (golongan );
write (“masukkan jam kerjanya :”);
read (jamkerja);
case (golongan)
‘A’ : upah ← 5000;
‘B’ : upah ← 6000;
‘C’ : upah ← 7500;
‘D’ : upah ← 9000;
Default : write (“golongannya salah !”);
Upah ← 0;
endcase.
if (jamkerja.150)
then lembur ← (jamkerja – 150) * upah*1.25;
Gaji ← 150 * upah;
else lembur ← 0;
Gaji ← jamkerja*upah;
endif

total ← gaji + lembur;
write (“gaji yang diterima sdr :”,nama,”adalah = Rp. “, total);

Bentuk Umum Prosedur

Prosedur adalah bagian dar suatu program yang disusun secara terpisah untuk melakukan suatu tugas khusus / fungsi tertentu. Pada dasarnya ada dua macam bentuk prosedur yatu Subrutin (subprogram) dan Fungsi.

Subrutin adalah bagian dari program yang dibuat terpisah untuk melaksanakan sebagian dari tugas yang harus diselesaikan oleh suatu program. Pada umumnya yang dikenal dengan nama “prosedur” sebenarnya adalah “subprogram”.

Fungsi adalah bagian dari program yang dibuat terpisah untuk melaksanakan fungs tertentu yang menghasilkan suatu nlai untuk dikembalikan ke program utama.

Manfaat pembuatan prosedur :
Modularisasi: suatu program yang besar dan kompleks dapat dibagi ke dalam prosedur sehingga setiap prosedur merupakan bagian yang mudah dikerjakan, dengan demikian, program besar tersebut menjadi mungkan diselesaikan.
Simpifikasi: dalam suatu program, sering diperlukan suatu tugas yang harus dikerjakan berulang-ulang dengan nilai-nilai variabel yang berbeda. Agar tidak merepotkan maka tugas ni cukup diitulis sekali saja dalam bentuk prosedur yang kemudian dipanggil berulang-ulang sesuai kebutuhan.

Bentuk Umum Prosedur (Subprogram)

Prosedur nama_prosedur
{spesifikasi dari prosedur, keadaan awal sebelum prosedur dilaksanakan dan juga keadaan akhir setelah prosedur dilaksanakan}

Deklarasi
{deklarasi variabel-variabel prosedur}
Deskripsi
{deskripsi dari tugas-tugas prosedur}

Contoh:
Sebuah program menyediakan fasilitas untuk menghitung luas, keliling, diagonal dari sebuah persegi panjang dengan kemungkinan pemilihan melalui suatu menu.
Soal ini dapat dibagi kedalam enam prosedur , yaitu prosedur menampilkan menu, prosedur membaca dimensi persegi panjang, menhitung luas, menghitung keliling, menghitung diagonal, dan menampilkan hasil.

Algoritma Empat_Persegi_Panjang
{algortma ini menunjukan contoh pemakaian prosedur untuk menghitung lias, keliling, diagonal dari empat persegi panjang}

Deklarasi
integer pilihan;
real panjang, leber, hasil;
{semua prosedur harus dideklarasikan}
prosedur menu;
prosedur baca_dimensi;
prosedur hitung_luas;
prosedur hitung_keliling;
prosedur hitung_diagonal;
prosedur tampil hasil;
Deskripsi
pilihan ← 0;
repeat
menu;
write“masukkan pilihan anda:”);
read (pilihan);
if (pilihan < 4)
then baca_dimensi;
endif.
case(pilihan)
1 : hitung luas;
2 : hitung_keliling;
3 : hitung diagonal;
4 : write (“selesai … sampai jumpa”);
default : write (“pilihan salah, ulangi! “);
endcase.
if (pillihan < 4)
then tampil_hasil;
endif.
Until (pilihan = 4).

Prosedur menu
{menampilkan menu program}
Deklarasi

Deskripsi
write (“ menu program empat persegi panjang”);
write (“ 1. menghitung luas “);
write (“ 2. menghitung keliling”);
write (“ 3. menghitung diagonal”);
write (“ 4. keluar dari program”);
prosedur hitung_luas
{menghitung luas empat persegi panjang}
Deklarasi
Real luas;
Deskripsi
Luas ← panjang * lebar;
Hasil ← luas;

prosedur hitung_keliling
{menghitung keliling empat persegi panjang}
Deklarasi
Real keliling;
Deskripsi
keliling ← 2 * (panjang + lebar);
Hasil ← keliling;

prosedur hitung_diagonal
{menghitung diagonal empat persegi panjang}
Deklarasi
Real diagonal;
Deskripsi
diagonal ← sqrt (panjang^2 + lebar^2);
Hasil ← diagonal;


prosedur tampil_hasil
{menghitung hasil dari program ini}
Deklarasi.

Deskripsi
Write (“ hasil = “,hasil);

Variabel Lokal dan Global

Variabel Lokal Dan Global

Penggunaan prosedur suatu program menyebabkan munculnya dua kategori variable, yaitu variable lokal dan variabel global.
 Variabel local adalah variabel yang hanya dikenal dan berlaku dalam suatu prosedur saja
 Variabel Global adalah variabel yang berlaku di semua bagian program dan di semua prosedur.
Semua variabel yang didefinisikan pada deklarasi suatu prosedur adalah variabel lokal, dan variabel –variabel yang didefinisikan pada deklarasi algortma utama adalah variabel global.
Program yang menggunakan banyak variabel global terasa memudahkan karena tak perlu lagi mendefinisikan variabel dalam prosedur. Namun, jika terdapat terlalu banyak variabel global, program akan sulit di-debug (cari kesalahan) dan memerlukan memori yang lebih besar.

Menjumlahkan Deret

Menjumlahkan Deret

Buatlah sebuah Algoritma untuk menghitung jumlah deret dengan N buah suku sebagai berikut :
S = 1 – ½ + ¼ - 1/6 + 1/8 – 1/10 + 1/12 – 1/14 + . . .
Analisis :
1. ketika dijalankan maka akan ada permntaan untuk memasukan jumlah suku N.
2. bila diperhatikan maka tanda berselang-seling positf dan negative; pada posisi ganjil maka tandanya positif dan pada posisi genap maka tandanya negatif.
3. Nilai yang dijumlahkan adalah kelipatan dari (1/2) yang dkalikan sesuai dengan posisinya, mula-mula ½ kemudian 1/(2*2), 1/(2*#), . . .

Algoritma Jumlah_Deret
{menjumlahkan deret bersuku N }
Deklarasi
Integer N, cacah, k;
Real S;
Deskripsi
Write (“berapa banyak suku ?”0;
Read (N);
S ← 1;
Cacah ← 1;
k ← 0;

while (cacah < + N ) do
cacah ← cacah + 1;
k ← k + 2;
if (cacah % 2 = 0)
then S ← S – 1/k;
else S ← S + 1/k;
endif.
Write (“jumlah deret = “, S);



Algoritma Jumlah_deret_V2
{ cara lain untuk menghitung jumlah deret}

Deklarasi
integer cacah, N, k, tanda;
real S;
deskripsi
write (“Berapa banyak suku ?”);
read (N);

S ← 1 ;
cacah ← 1;
k ← 0;
tanda ← +1;

while (cacah < = N) do
k ← k + 2;
cacah ← cacah + 1;
tanda ← (-1) * tanda;
S ← S + tanda * (1/k);
endwhile.

Write (“ jumlah deret = “,S);

Mengelompokkan Data

Mengelompokkan Data

Andaikan dari keyboard dimasukkan N buah data (bilangan bulat) kemudian akan dkelompokkan menjadi dua macam, yaitu kelompok bilangan ganjil dan kelompok bilangan genap dalam bentuk jumlahan sehingga keluaran (output) berbentuk sebagai berikut :
Jumlah bilangan ganjil = ….
Jumlah bilangan genap = ….
Analisis :
1. Beberapa banyak data yang harus diketahui terlebih dahulu → N
2. Lakukan perulangan sebanyak N kali untuk :
a. Meminta data
b. Memeriksa data apakah ganjil atau genap
c. Menjumlahkan data sesuai kelompoknya
3. Tampilkan hasil penjumlahan.

Algoritma GanjilGenap
{ mengelompokkan data dalam bentuk jumlahan bilangan ganjil dan genap}
Deklarasi
Integer cacah, N, angka, Genap, Ganjil;
Deskripsi
Write ( “berapa banyak bilngan ?”);
Read (N)
Cacah ← 1;
Genap ← 0;
Ganjil ← 0;

Repeat
Write (“masukkan blangan ke-“,cacah);
Read (angka);
If (angka % 2 = 0)
then Genap ← Genap + angka ;
else Ganjil ← Ganjil + angka ;
endif.
Cacah ← cacah + 1;
Until (cacah > N);

Write (“ jumlah bilangan Ganjil = “, Ganjil);
Write (“ jumlah bilangan Genap =”, Genap);

Intruksi Runtunan

Intruksi Runtunan (Sequential)

Intruksi runtunan adalah intruksi yang dikerjakan secara berurutan atau berurutan baris per baris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan.
 Tiap intruksi dikerjakan satu per satu sebanyak satu kali.
 Urutan pelaksanaan intruksi sama dengan urutan penulisan algoritma.
 Intruksi terakhir merupakan akhir algoritma.
 Urutan penulisan intruksi bisa menjadi penting; bila diubah dapat menyebabkan hasil yang berbeda.
Contoh Algoritma yang menggambarkan intruksi runtunan, dimana urutan penulisan yang berbeda akan menghasilkan output yang berbeda.

Contoh :

Algoritma Runtunan_1
{menunjukan urutan yang berbeda memberi hasil yang berbeda}
Deklarasi
Integer A,B;
Deskripsi
A ← 3 ;
A ← 2 * A ;
B ← A ;
Write (B) ;
Algoritma diatas menampilkan hasil : 6

Algoritma runtunan_2
{menunjukan urutan yang berbeda memberi hasil yang berbeda}
Deklarasi
A ← 3 ;
B ← A ;
A ← 2 * A ;
Dengan urutan yang diubah maka algoritma ini memberi hasil : 3

Algoritma runtunan_3
{algoritma untuk menghitung luas sebuah segitiga}
Deklarasi
real Alas, Tinggi ;
real Luas ;
Deskripsi
Write (“masukan panjang alasnya : “);
Read (alas);
Write(“masukan tingginya :”);
Read (tinggi);
Luas ← Alas * tingg / 2;
Write (“Luas segitiga + “,luas);

Algoritma runtunan_4
{algoritma menampilakan gaji bersih pegawai, dengan memasukan gaji pokok kemudian menghitung tunjangan sebesar 25%, dan pajak pph 15%}
Deklarasi
String nama ;
Real gajipokok, tunjangan, pajak;
Real gajibersih;
Deskripsi
Write (“ masukan nama pegawai :”);
Read (nama);
Write (“masukan gaji pokoknya :”);
Raed (gajipokok);
Tunjangan ← 0.25 * gajipokok;
Pajak ← 0.15 * (gajipokok + tunjangan );
gajibersih gajipokok + tunjangan –pajak ;
write (“gaji saudara : “,nama);
write (“adalah =”,gajibersih);

Fungsi

Fungsi

Definsi 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 dalam matematika.
Fungsi pada hakikatnya serupa dengan prosedur pelaksanaanya, tetapi harus mengembalikan suatu niali ke program yang menggunakan fungsi. Prosedur hanya bisa mengembalikan nilai melalui parameter input/output.

Bentuk Umum :
Fungsi nama_fungsi (parameter formal) → tipe_hasil
{spesifikasi fungsi}
Deklarasi
{ variabel local }
Deskripsi
{ langkah / proses yang dilakukan oleh fungsi }
……………….
……………….
{ pengembalian nilai }
return hasil
contoh melaksanakan fungsi matematis
f(x) = x² + 8x = 10
fungsi F (input real x) → real
{menghitung nilai fungsi f(x) = x² + 8x = 10 }
Deklarasi
Real y;
Deskripsi
y ← x * x + 8 * x + 10;
return y;


Algoritma yang menggunakan fungsi untuk mengganti bulan dalam angka (misalnya 3) menjadi nama bulan (misalnya Maret).

Algoritma Tanggal_Lahir
{algoritma ini memanggil fungsi untuk menampilkan nama bulan}

Deklarasi
Integer tanggal, bulan, tahun;
String nama_bulan;
Fungsi Nama_bulan (input integer bln) → string;
Deskripsi
Write (“tanggal :”); read (tanggal);
Write (“bulan : “); read (bulan);
Write (“tahun :”); read (tahun);

nama_bulan ← Nama_bulan (bulan);
write( tanggal, ‘-‘, nama_bulan,’-‘,tahun);
fungsi Nama_bulan (input integer bln) → string
{ fungsi yang mengembalikan nama bulan berdasarkan angka bulan}

Deklarasi
String_bln;
Deskripsi
Case (bln)
1 : nama_bln ← “ januari”;
2 : nama_bln ← “ Februari “;

12 : nama_bln ← “desember “;
Endcase.
Return nama_bulan;

Akses Data Langsung

Akses Data Langsung

Seorang sekertaris memerlukan satu program sederhana yang dapat membantunya mengetahui nomor telepon seseorang dengan cepat tanpa harus membuka buku teleponnya.
Andai nama-nama orang tersebut adalah sebagai berikut:
Agustian (0711) 476234
Benny (0711) 894557
Chandra (0711) 347789
Didi (0711) 788634
Eva (0711) 456332
Febri (0711) 499765
Analisis :
 Ketika program dijalankan maka muncul permintaan untuk memasukkan satu nama.
 Nama ini kemudian dicari misalnya dengan rentetan if/then/else atau dengan intruksi case().
 Bial nama tersebut ketemu maka nomor teleponnya ditampilkan.
 Bila nama tersebut tidak ada maka tampilkan “nama tersebut tidak ada!”.

Program Buku_telepon
{mencari nomor telepon seseorang}
Deklarasi
String nama, notelp;
Deskripsi
Write (“ketik namanya:”)
Read (nama)
Case (nama)
‘Agustian’ : notelp←’ (0711) 476234’;
‘Benny’ : notelp ←’ (0711) 894557’;
‘Chandra’ : notelp ←‘(0711) 347789’;
‘Didi’: notelp ←’ (0711) 788634’;
‘Eva’ : notelp ← ‘(0711) 456332’;
‘Febri’ : notelp ← ‘(0711) 499765’;
Default : notelp ← ‘nama tersebut tidak ada’;
Endcase.
Write (notelp);

Minggu, 22 Agustus 2010

Algoritma dan pemrograman

Pengulangan FOR

Konstruksi FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang telah dispesifikasikan. Jumlah pengulangan diiketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah berapa kali pengulangan dilakukan, kita memerlukan sebuah peubah (variable) pencacah (counter). Peubah ini nlainya selalu bertambah satu setiap kali pengulangan dlakukan. Jika cacah pengulangan sudah mencapai jumlah yang dispesifikasikan, maka proses pengulangan berhenti.

Bentuk umum pernyataan for adaa dua macam : menaik (ascending) atau menurun (descending):
FOR menaik :
for pencacah ← nilai_awal to nilai_akhir do
aksi
endfor
keterangan :
(i) pencacah haruslah dari tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter. Tipe riil tidak dapat dgunakan sebagai pencacah.
(ii) Aksi dapat berupa satu atau lebih instruksi yang dulang.
(iii) nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki.
(iv) Pada awalnya, pencacah dinisialisasi dengan nilai_awal. Nilai pencacah secara ototmatis bertambah satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencach sama dengan nilai_akhir.
(v) Jumlah pengulangan yang terjadi adalah sama dengan nilai_akhir – nilai awal +1.

Contoh 1:
Mencetak pesan “selamat pagi” sebanyak 5 kali, maka algoritmanya adalah :
PROGRAM CetakBanyak_SelamatPagi
{ Mencetak ‘Selamat Pagi’ sebanyak 5 kali }

DEKLARASI
i : integer { pencacah pengulangan }
ALGORITMA :
for i ← 1 to 5 do { ulangi sebanyak 5 kali }
write ( ‘ Selamat Pagi’ )
endfor

 jumlah pengulangan sudah ditentukan sebelumnya, yaitu 5 kali sehingga kita dapat menggunakan pernyataan FOR.
 Badan pengulangan hanya berisi satu buah pernyataan, yaitu write ( ‘ Selamat Pagi’ )
 i adalah peubah pencacah yang bertpe integer
 pada mulanya i bernilai 1; nilai i selalu bertambah 1 setiap kali pengulangan dilakukan, sampai akhirnya i mencapai 5 , yang berarti proses pengulangan selesai.
 Jumlah pengulangan yang dilakukan : 5 – 1 + 1 = 5 kali

Keluaran dari algoritma ini adalah pesan “ Selamat Pagi” sebanyak 5 kali seperti dibawah ini ( asumsikan setiap pesan ditulis pada setiap baris):
Selamat Pagi
Selamat Pagi
Selamat Pagi
Selamat Pagi
Selamat Pagi

Contoh 2 :
Mencetak angka 1,2,3,……,N, yang dalam hal ini nlai N dibaca terlebih dahulu, maka algoritmanya menjadi :
PROGRAM Cetak1SampaiN
{ mencetak 1,2,3,…..,N
DEKLARASI
N : integer
i : integer
ALGORITMA :
Read (N)
for i ← 1 to N do { ulangi sebanyak N kali }
Write ( i )
endfor

Contoh 3 :
Menjumlahkan deret 1+2+3+…..+N, dengan N adalah bilangan bulat positif. Nilai N dibaca terlebih dahulu.
Algoritmanya adalah :
PROGRAM PenjumlahanDeret
{ Menjumlahkan deret
1+2+3+... +N
dengan N adalah bilangan bulat positif. Nilai N dibaca terlebih dahulu.}

DEKLARASI
N : integer
i : integer
Jumlah : integer
ALGORITMA :
read (N)
jumlah ← 0 { inisialisasi jumlah deret dengan 0 }
for i ← 1 to N { ulangi penjumlahan deret sebanyak N kali}
jumlah ← jumlah + 1
endfor
write(jumlah)

Contoh 4 :
Menghitung Rata-rata N buah bilangan bulat yang dibaca dari papan ketik. N>0
Algoritmanya adalah :
PROGRAM HitungRataRata
{ Menghitung Rata-rata N buah bilangan bulat yang dibaca dari papan ketik. N>0 }
DEKLARASI
N : integer { jumlah data, >0}
x : integer { bilangan bulat yang dibaca dari papan ketik }
i : pencacah { pencacah banyaknya pengulangan }
jumlah : integer { pencatat jumlah nilai }
rerata : real { rata-rata nilai }
ALGORITMA :
read (N)
jumlah ← 0 { nisialisasi penjumlah seluruh nilai }
for i ← 1 to N do
read (x)
jumlah ← jumlah + x
endfor
rerata ← jumlah / N
write (rerata)


FOR menurun :
for pencacah ← nilai_awal downto nilai_akhir do
aksi
endfor
keterangan :
(i) pencacah haruslah dari tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter. Tipe riil tidak dapat dgunakan sebagai pencacah.
(ii) Aksi dapat berupa satu atau lebih instruksi yang dulang.
(iii) nilai_akhir harus lebih besar atau sama dengan nilai_awal. Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan tidak dimasuki.
(iv) Pada awalnya, pencacah dinisialisasi dengan nilai_akhir. Nilai pencacah secara ototmatis bertambah satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_awal.
(v) Jumlah pengulangan yang terjadi adalah sama dengan nilai_awal – nilai akhir +1.

Contoh 3 :
Sebuah roket diluncurkan dengan hitungan mundur , mulai 100,99,98,…,0. Algoritma perhitungan mundur adalah :

PROGRAM PeluncuranRoket
{ Hitung mundur peluncuran roket }
DEKLARASI
i : integer
ALGORITMA :
for i ← 100 downto 0 do
write (i)
endfor
write (‘Go!’) { roket meluncur pada saat hitungan 0}