From: okidz@ccs.northeastern.edu (Oki D Zakaria)
Subject: BP-2
Organization: College of CS, Northeastern U
Date: Mon, 14 Dec 1992 02:27:14 GMT


Rekan-rekan a.c.i,

Dibawah ini saya ketengahkan 'struktur' dari BP-2. Yang ditampilkan
disini baru gambarannya.


program NamaProgram;

// penggunaan modul, jika perlu
gunakan modul InputOutput;
gunakan modul Berkas;
gunakan modul Modem;
gunakan modul Printer;
gunakan modul PemrosesString;

// deklarasi konstanta
konstanta
   BILANGANKECIL : bilangan kecil = 127;
   BILANGAN : bilangan = 32767;
   
// deklarasi jenis data
jenis data
   Karakter = karakter;
   StringBesar = string dinamik;        
   String20 = string [20];
   Bkecil = bilangan kecil;             // "short integer" 
   Bilang = bilangan;                   // "integer"
   BBesar = bilangan besar;             // "long integer"
   Pecahan  = pecahan;                  // "real"
   PBesar   = pecahan besar;            // "real double"

   Daftar = deret bilangan [BILANGANKECIL];
   Daftar2 = deret bilangan [BILANGANKECIL, BILANGANKECIL];
   Daftar3 = deret bilangan [BILANGANKECIL, BILANGANKECIL, BILANGANKECIL];
      
   KelompokNama = deret String20 [BILANGAN];
   
// deklarasi variabel
variabel
   Nama : KelompokNama;            // diakses dengan Nama[32767]
   PenyanggaBerkas : StringBesar;  // harus diakses dengan fungsi/prosedur

fungsi NamaFungsi(Parameter; Parameter; ...) : JenisData;
// Parameter dinyatakan dalam bentuk NamaVariabel: JenisData

// deklarasi konstanta lokal
// deklarasi jenis data lokal
// deklarasi variabel lokal
{
// pernyataan
//     .
// pernyataan lainnya
   NamaFungsi =    ; // hasil kalkulasi diberikan disini
}

prosedur NamaProsedur(Parameter; Parameter;...);
// Parameter dinyatakan dalam bentuk NamaVariabel: JenisData
// atau
// ref NamaVariabel: JenisData untuk akses melalui referensi

// deklarasi konstanta lokal
// deklarasi jenis data lokal
// deklarasi variabel lokal
{
// pernyataan
//     .
// pernyataan lainnya
}


{                          // awal program
// pernyataan
//     .
// pernyataan lainnya
}                          // akhir program


Penggunaan "modul" di atas adalah untuk memberikan "extensibility"
bagi BP-2 ini. modul tersebut bisa berupa program BP-2 yang telah
dirakit, ataupun modul lain yang berasal dari bahasa lain (C).
Implementasinya saya masih belum tahu, tapi akan diusahakan kode
obyek dari BP-2 ini kompatibel dengan kode obyek yang dihasilkan
oleh perakit-perakit lain yang telah mapan, sehingga kode obyeknya bisa
di-link dengan 'mudah'. 


modul PemrosesString;

pengantara
// deklarasi konstanta (bisa diakses dari program utama)
// deklarasi jenis data (idem)
// deklarasi variabel (idem)

// pola fungsi
fungsi JumlahKata(NamaApasaja : string besar): bilangan besar;

// pola prosedur
prosedur TambahData(ref NamaApasaja : string besar; 
                    NamaApasajaTapiBeda : string [20]);

implementasi
// deklarasi konstanta lokal
// deklarasi jenis data lokal
// deklarasi variabel lokal

	fungsi JumlahKata(StringSaya : string besar): bilangan besar;
	{
	// menghitung jumlah kata di StringSaya
	}

	prosedur TambahData(ref StringSaya : string besar; 
	                    ElemenBaru : string [20]);
	{
	// proses menambah elemen baru di StringSaya
	}

{
// inisialisasi, kalau ada
}                              // akhir modul


Jenis data yang dipunyai BP-2 tidak mewah-mewah. Deret (array) hanya
bisa tiga 'dimensi'. "Record" tidak disertakan, apalagi "pointer".
Di atas disebutkan "string dinamik". Yang saya inginkan dari jenis
data ini adalah suatu penyangga (buffer) yang bisa diisi teks sepenuh-
penuhnya (sampai "heap"-nya sisa satu byte). Dengan mempunyai
jenis data yang cukup besar, operasi-operasi yang menyangkut teks (men-
cari kata tertentu, menghitung jumlah kata, "sorting", menghilangkan
kata tertentu) bisa dilakukan didalam memori; semuanya ini dilakukan
oleh pustaka fungsi/prosedur yang disimpan di dalam "modul".

"Record" mungkin bisa ditambahkan, hanya saja saya belum menemukan
kata Indonesianya.

Sekian dulu, mengenai pencabangan dan pengulangan akan diketengahkan di
posting yang lain.


Oki
Okidz@ccs.northeastern.edu

Newsgroups: alt.culture.indonesia