bE miNe

bE miNe

Senin, 30 Agustus 2010

PEMROSESAN TEKS

Teks (text) memiliki definisi sebagai deretan karakter yang bisa direkam ke dalam suatu file/berkas/arsip.
• Suatu teks bisa terdiri atas beberapa kata (words).
• Setiap kata terpisah dari kata lainnya, dipisahkan oleh paling sedikit satu spasi.
• Suatu teks dapat terdiri atas beberapa baris (line) yang dibentuk oleh beberapa kata.
• Setiap baris diakhiri oleh marka end-of-file (BOF) dan diakhiri dengan marka end-of-file (EOF).

Deklarasi suatu teks didahului dengan tipe-data text.
Beberapa instruksi yang berkaitan dengan teks adalah berikut :
• Mengembalikan penunjuk teks ke posisi awal (BOF) dari file: reset (F).
• Membuka suatu file teks yang ada di storage (disk): assign ( F, nama_file ).
• Membaca satu karakter dari file teks: read ( F, char ).
• Merekam satu karakter ke file teks: write (F, char ).
• Menutup file teks: close (F).


contoh: Menghitung jumlah karakter (tidak termasuk marka EOL, BOF, dan EOF) yang ada dalam suatu file teks bernama mytext.txt.

Algoritma Hit_karakter
{menghitung jumlah karakter yang ada dalam suatu file 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 katakter (termsuk spasi) = “,jkar);

Fungsi

Fungsi pada hakikatnya serupa dengan prosedur dalam pelaksanaan nya, tetapi harus mengembalikan suatu nilai ke program yang menggambarkan fungsi. Prosedur hanya bisa mengembalikan nilai melalui parameter input/ output(in-out).

Bentuk Umum :
Fungsi nama_fungsi ( parameter formal )  tipe_hasil
{ spesifikasi fungsi }

Deklarasi
{ variabel lokal }
Deskripsi
{ langkah/proses yang dilakukan oleh fungsi }
....................
....................
{ pengembalian nilai }
return hasil.

Contoh : Berikut ini adalah contoh yang melaksanakan fungsi matematis
F(X) = x² + 8x + 10.
Fungsi F (input real x)  real
{ menghitung nilai fungsi f(x) = x^2 + 8x + 10}

Deklarasi
real y;
Deskripsi
y  x*x + 8*x + 10;
return y;

PARAMETER

Ketika suatu prosedur dipanggil maka hakikinya bisa dilakukan pertukaran data antara program utama dan prosedur. Pertukaran ini dilakukan melalui parameter.

Parameter Aktual adalah parameter yang disertakan pada saat prosedur dipanggil untuk dilaksanakan, sering disebut argumen.
Parameter Formal adalah parameter yang dituliskan pada definisi suatu prosedur/fungsi. Ada tiga jenis prameter formal, yaitu:
1. parameter masukan (input) : parameter yang menerima nilai dari parameter aktual.
2. paameter keluaran (output): parameter yang menyerahkan nilai ke parameter aktual
3. parameter masukan dan keluaran (input-output): parameter yang menerima nilai dari parameter aktual untuk proses dalam prosedur kemudian diserahkan kembali ke parameter aktual setelah selesai.

Contoh 2: Algoritma berikut ini menunjukkan pemakaian parameter masukan dan parameter keluaran untuk prosedur menghitung luas segitiga.

Algoritma Luas_segitiga
{menghitung luas segitiga dengan menggunakan prosedur yang memanfaatkan parameter input dan parameter output}
Deklarasi
real alas , tinggi, luas;
prosedur Hit_Luas_segi_3(input real a, t; output real Is;);
Deskripsi
write (“Masukkan alas segitiga : “);
read (alas);
write (“Masukkan tinggi-nya : “);
read ( tinggi );

Hit_Luas_segi_3 ( alas, tinggi, luas );
write (“Luas segitiga=”,luas);

prosedur Hit_Luas_segi_3 ( Input real a, t; output real Is;)
{ prosedur menghitung luas segi_3, menerima a (alas) dan t (tinggi), mengembalikan Is (luas)}

Deklarasi {}
Deskripsi
Is  a * t/2.0;

VARIABEL LOKAL DAN VARIABEL GLOBAL

Penggunaan prosedur pada suatu program menyebabkan munculnya dua kategori variabel, yaitu variabel lokal dan variabel global. Variabel Lokal 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 deklarasialgoritma 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.

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 1: Andaikan sebuah program menyediakan fasilitas untuk menghitung luas, keliling, dan diagonal dari sebuah persegi panjang dengan kemungkinan pemilihan melalui suatu menu.
Contoh soal diatas dapat dibagi kedalam enam prosedur, yaitu prosedur menampilakan menu, prosedur membaca dimensi persegi panjang, menghitung luas, menghitung keliling, menghitung diagonal, dan menampilkan hasil.

Algoritma Empat_Persegi_Panjang
{algoritma ini menunjukkan contoh pemakaian prosedur untung menghitung luas, keliling, dan diagonal dari empat persegi panjang}

Deklarasi
integer pilihan;
real panjang, lebar, 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 (pilihan <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 baca_dimensi
{membaca dimensi pesergi panjang}
Deklarasi.
Deskripsi
write (“Masukkan Panjang:”);
read (panjang);
write (“Masukkan Lebar:”);
read (lebar);
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}
Deklrasi
real diagonal;
Deskripsi
diagonal  sqrt ( panjang ^2 + lebar^2);
hasil  diagonal;
prosedur tampil_hasil
{menampilkan hasil dari program ini}
Deklarasi.
Deskripsi
write (“hasil=’,hasil);

MENGHITUNG NILAI RATA-RATA DAN VARIASI

Andaikan ada N 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 menunjukkan besarnya jumlah perbedaan dan setiap bilangan terhadap nilai rata-rata, atau:
Varians = (∑ ( x – Rata)² ) / (N-1) = (∑x²-(∑x)² /N ) / (N-1)

Analisis:
- Tetapkan N
- Lakukan perulangan mulai 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;

Rincian Langkah
write (“Berapa banyak bilangan ? :”);
read (N);
S  0;
K  0;
for (i=1 to N step 1)
write (“Masukkan bilangan ke – “,i);
read (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);

MENGELOMPOKKAN DATA


Andaikan dari keyboard dimasukkan N buah data (bilangan bulat) kemudian akan dikelompokkan menjadi dua macam 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.       Berapa banyak data 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;
Dekripsi
            write (“Berapa banyak bilangan ?”);
            read ( N );
            cacah ß 1;
Genap ß 0;
Ganjil ß 0;

Repeat
write (“Masukkan bilangan 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);







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 coba (Y/T)?

Apabila jawaban untuk mencoba ulang adalah ‘Y’ maka menu operasi diatas dimunculkan kembali dan 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’;
while (ulang = ‘Y’ || ulang = ‘Y’) do
write (“Pilih operasi yang diinginkan:”);
write (“+ Penjumlahan”);
write (“- Pengurangan”);
write (“/ Pembagian”);
write (“* Perkalian”);
write (“ “);
write (“Jenis operasi:”);
read (pillihan);

write (“Masukkan angka 1:”);
read (angka1);
write (“Masukkan angka 2:”);
read (angka2);
case (pilihan)
‘+’ : hasil  angka1 + angka2;
‘-‘ : hail  angka1 – anka2;
‘/’ : if ( angka2 = 0 )
then write (“hasil tak berhingga”);
else hasil  angka1 / angka2;
endif.
‘*’ : hasil  angka1 * angka2;
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.

AKSES DATA LANGSUNG

Seorang sekretaris memerlukan satu program sederhana yang dapat membantunya mengetahui nomor telepon seseorang dengan cepat tanpa harus membuka buku agendanya.

Andaikan nama-nama orang tersebut adalah sebagai berikut:
Anton (0411) 324-678
Bahrul (021) 434-6783
Charles (022) 256-1234
Daud (0411) 567-342
Endang (0411) 344-235
Fahri (021) 765-0856
Gunarsih (0421) 123-876

Analisis :
1. Ketika program dijalankan maka muncul permintaan untuk memasukkan satu nama.
2. Nama ini kemudian dicari misalnya dengan rentetan if/then/else atau dengan intruksi case().
3. Bila nama tersebut ketemu tidak ada maka tampilkan “nama tersebut tidak ada!”.

Algoritma Buku_telepon
{ mencari nomor telepon seseorang}
Deklarasi
string nama, notelp;
Dekripsi
write (“Ketik namanya :”);
read ( nama );
case (nama)
‘Anton’ : notelp  ‘(0411) 324-678’;
‘Bahrul’ : notelp  ‘(021) 434-6783’;
‘Charles’ : notelp  ‘(022) 256-1234’;
‘Daud’ : notelp  ‘(0411) 567-342’;
‘Endang’ : notelp  ‘(0411) 344-235’;
‘Fahri’ : notelp  ‘(021) 765-0856’;
‘Gunarsih’ : notelp  ‘(0421) 123-876’;
default : notelp  ‘nama tsb tdk ada’;
endcase.

write (notelp);

Jumat, 20 Agustus 2010

Menjumlahkan Deret

Buatlah sebuah algoritma untuk menghitung jumlah deret dengan N buah suku sebagai berikut :

S = 1 - 1/2 + 1/4 - 1/6 + 1/8 - 1/10 + 1/12 - 1/14 + ...

Analisis :

1. Ketika di jalankan maka akan ada permintaan untuk memasukkan jumlah suku N.

2. Bila di perhatikan maka tanda berselang-seling positif dan negatif;pada posisi
ganji maka tandanya positif dan pada posisi genap maka tandanya negatif.

3. Nilai yang di jumlah kan adalah kelipatan dari (1/2) yang di kalikan sesuai
dengan posisinya,mula-mula 1/2 kemudian 1/(2*2), 1/(2*3),...


Algoritma Jumlah_Deret
(menjumlahkan deret bersuku N)

Deklarasi
Integer N,cacah k;
real S;

Deskripsi
write (" Berapa banyak suku ? ");
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.
endwhile.

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 );

Intruksi Perulangan while

Perulangan while
Perulangan while pengecekan kondisi (syarat) perulangan dilakukan sebelum eksekusi statement yang diulang. Dalam keyword perulangan while tidak terdapat instruksi langsung untuk pengubahan nilai variabel pencacah. Untuk mengubah nilai variabel pencacah maka pada blok statemen yang diulang  disisipkan instruksi yang digunakan untuk merubah nilai variabel pencacah tersebut (increment/decrement). Bentuk umum dari perulangan while adalah sebagai berikut:
while (kondisi) {
  statement
  ...
  ...
}
Contoh program:
public class While1 {

  public static void main(String[] args) {

    int batas = 5;
    int counter = 1;

    while (counter <= batas) {
      System.out.println("Perulangan ke-" + counter);
      counter++;
    }

  }

}
Output program:
Perulangan ke-1
Perulangan ke-2
Perulangan ke-3
Perulangan ke-4
Perulangan ke-5
Untuk mengubah nilai dalam variabel pencacah (counter) maka dalam blok statement yang diulang disisipkan instruksi penambahan variabel counter (counter++).
Untuk contoh program di atas juga bisa ditulis sebagai berikut:
public class While1 {

  public static void main(String[] args) {

    int batas = 5;
    int counter = 1;

    while (counter <= batas) {
      System.out.println("Perulangan ke-" + counter++);
    }

  }

}
Output program:
Perulangan ke-1
Perulangan ke-2
Perulangan ke-3
Perulangan ke-4
Perulangan ke-5
Penjelasan:
Yang perlu diperhatikan adalah operator increment (++) harus diletakkan di belakang nama variabel (post-increment). Maksudnya nilai variabel pencacah akan  ditampilkan di layar dulu baru ditambah (di-increment). Sedangkan operator increment (++) yang diletakkan di depan nama variabel (pre-increment) maka nilai pada variabel pencacah akan ditambah (di-increment) dulu kemudian ditampilkan di layar.
counter++   (post-increment)
++counter   (pre-increment)
Perulangan do-while
Berbeda dengan perulangan while, pada perulangan do-while pengecekan kondisi (syarat) perulangan dilakukan setelah eksekusi statement yang diulang. Sehingga statement dalam blok do-while paling sedikit dieksekusi satu kali. Bentuk umum perulangan do-while:
do {
  statement
  ...
  ...
}
while (kondisi)
Contoh program:
public class DoWhile {

  public static void main(String[] args) {

    int batas = 5;
    int counter = 1;

    do {
      System.out.println("perulangan ke-"+counter);
      counter++;
    }
    while (counter <= batas);

  }
}
Output program:
perulangan ke-1
perulangan ke-2
perulangan ke-3
perulangan ke-4
perulangan ke-5
Contoh lain:
public class DoWhile {

  public static void main(String[] args) {

    int batas = 5;
    int counter = 6;

    do {
      System.out.println("perulangan ke-"+counter);
      counter++;
    }
    while (counter <= batas);

  }

}
Output program:
perulangan ke-6

Intruksi Runtunan (Sequential)

Finder
02
04
06
08
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42 end