Selasa, 27 Desember 2011

pascal

bahasa konstruksi:
Pascal, dalam bentuk aslinya, adalah murni bahasa prosedural dan termasuk array tradisional ALGOL -seperti struktur kontrol dengan kata-kata dicadangkan seperti jika, kemudian, yang lain, sementara, untuk, dan sebagainya.Namun, Pascal juga memiliki data banyak penataan sarana dan abstraksi lain yang tidak termasuk dalam yang asli ALGOL 60 , seperti definisi type , catatan , pointer , enumerations , dan set . Konstruksi seperti itu di bagian warisan atau terinspirasi dari Simula 67, ALGOL 68 , Niklaus Wirth 'sendiri ALGOL W dan saran oleh Hoare CAR .



Kisaran nilai diperbolehkan untuk masing-masing (kecuali boolean) adalah implementasi didefinisikan. Fungsi disediakan untuk beberapa konversi data. Untuk konversi real untuk integer , fungsi berikut tersedia: round , yang bulat untuk menggunakan bilangan pembulatan bankir , trunc , putaran menuju nol. Programmer memiliki kebebasan untuk mendefinisikan tipe data lain yang umum digunakan (misalnya byte, string, dll) dalam hal jenis standar menggunakan fasilitas jenis deklarasi Pascal. eg misalnya
type Jenis
  byte = 0 .. 255 ; 
  signedbyte = - 128 .. 127 ;
  string = array dikemas [1 .. 255] char;

Subranges dari setiap jenis ordinal (semua tipe sederhana kecuali nyata) dapat dilakukan:
var var
  x : 1 .. 10;
  y : 'a' .. 'z';
  z : pir .. orange;
 
Berbeda dengan bahasa pemrograman lain dari waktu nya, Pascal mendukung set type: 
var var
  set1 : set 1 .. 10;
  set2 : set 'a' .. 'z';
  set3 : set pir .. orange; 
 
Himpunan A adalah konsep mendasar untuk matematika modern, dan mereka dapat digunakan dalam banyak algoritma. Such a feature is useful and may be faster than an equivalent construct in a language that does not support sets. Fitur tersebut berguna dan mungkin lebih cepat daripada membangun setara dalam bahasa yang tidak mendukung set. For example, for many Pascal compilers: Sebagai contoh, untuk compiler Pascal banyak: 
 
jika saya di [5 .. 10] kemudian
... ...
 
menjalankan lebih cepat dari:
 
jika (i> 4) dan (i <11) maka ... ... 
 
Set nilai-nilai non-contiguous dapat sangat berguna, baik dari segi kinerja dan dibaca:
 
jika saya di [0, .. 3, 7, 9, 12 .. 15] kemudian
... ... 
 
Untuk contoh-contoh ini, yang melibatkan lebih dari domain set kecil, meningkatkan kinerja biasanya dicapai oleh kompilator mewakili variabel ditetapkan sebagai bitmasks. Set operator kemudian dapat diimplementasikan secara efisien sebagai operasi bitwise kode mesin.
 
 
 Jenis dapat didefinisikan dari jenis lain yang menggunakan deklarasi tipe:
type Jenis
  x = Integer ; x = Integer;
  y = x; y = x;
... ...



Lebih lanjut, jenis kompleks dapat dibangun dari tipe sederhana:
type Jenis 
  a = Array [ 1 .. 10 ] of Integer ;
  b = record
        x : Integer ;
        y : Char 
      end ;
  c = File of a;

Jenis File

Seperti ditunjukkan dalam contoh di atas, Pascal file adalah urutan komponen. Setiap file memiliki variabel buffer yang dinotasikan dengan f ^ . Prosedur mendapatkan (untuk membaca) dan meletakkan (untuk menulis) bergerak buffer variabel ke elemen berikutnya. Baca diperkenalkan seperti yang dibaca (f, x) adalah sama dengan x: = f ^; mendapatkan (f);. Menulis diperkenalkan seperti yang menulis (f, x) adalah sama sebagai f ^: = x; meletakkan (f); ini jenis teks adalah standar sebagai file char. Sedangkan variabel buffer yang dapat digunakan untuk memeriksa karakter berikutnya yang akan digunakan (memeriksa angka sebelum membaca integer), ini mengarah ke masalah serius dengan program interaktif dalam implementasi awal, tetapi diselesaikan kemudian dengan "malas I / O" konsep.
Dalam Jensen & Wirth Pascal, string direpresentasikan sebagai array dari karakter dikemas; karena itu mereka memiliki panjang tetap dan biasanya ruang-empuk. Some dialects have a custom string type. Beberapa dialek memiliki tipe string kustom.

jenis Pointer

Pascal mendukung penggunaan pointer :
type Jenis 
  Nodeptr = ^Node;
  Node = record 
        a : Integer ; suatu: Integer;
        b : Char ; b: Char;
        c : Nodeptr c: Nodeptr
      end ; akhir;
var var
  ptoNode : Nodeptr; ptoNode: Nodeptr;
  pInt : ^Integer; Pint: ^ Integer; 
 
Di sini ptoNode variabel pointer ke tipe data Node, rekor.Ini adalah deklarasi maju , pengecualian terhadap aturan bahwa hal-hal yang harus dideklarasikan sebelum mereka digunakan.Untuk membuat catatan baru dan menetapkan nilai 10 dan karakter A untuk bidang a dan b dalam catatan, dan untuk menginisialisasinya c pointer ke nihil , perintah akan:
new ( ptoNode ) ;  
... ... 
ptoNode ^ a:. = 10; 
ptoNode ^ b:. = 'A';
ptoNode ^ c:. = nil;
... ...
 
Ini juga bisa dilakukan dengan menggunakan dengan pernyataan, sebagai berikut
new ( ptoNode ) ; baru (ptoNode);
 
... ...
with ptoNode^ do dengan ptoNode ^ lakukan
begin mulai
  a := 10 ; a: = 10;
  b := 'A' ; b: = 'A';
  c := nil c: = nil
end ; akhir;
... ... 
 
Di dalam ruang lingkup dengan pernyataan, a dan b mengacu pada subbidang dari ptoNode pointer record dan tidak Node merekam atau Nodeptr tipe pointer.
Linked daftar , tumpukan dan antrian dapat dibuat dengan memasukkan bidang penunjuk jenis (c) dalam catatan (lihat juga nihil ).

Tidak seperti banyak bahasa yang menampilkan pointer, Pascal hanya memungkinkan pointer untuk referensi variabel dinamis dibuat yang anonim, dan tidak memungkinkan mereka untuk referensi variabel statis atau lokal standar. Pointer juga harus memiliki tipe yang terkait, dan pointer ke satu jenis tidak kompatibel dengan pointer ke jenis lain (misalnya pointer ke char tidak kompatibel dengan pointer ke integer). Hal ini membantu menghilangkan masalah keamanan yang melekat dengan implementasi tipe pointer lain, terutama yang digunakan untuk PL / I atau C . Ini juga menghilangkan beberapa risiko yang disebabkan oleh pointer menggantung , tetapi kemampuan untuk secara dinamis melepaskan ruang direferensikan dengan menggunakan fungsi membuang (yang memiliki efek yang sama seperti fungsi perpustakaan bebas ditemukan di C ) berarti bahwa risiko pointer menggantung belum seluruhnya dieliminasi.

Pascal adalah sebuah pemrograman terstruktur bahasa, yang berarti bahwa aliran kontrol terstruktur menjadi standar laporan , idealnya tanpa ' goto perintah '.
while a <> b do writeln ( 'Waiting' ) ; 
if a > b maka 
  writeln ( 'Condition met' ) ;
  writeln ( 'Condition not met' ) ;
 
for i := 1 to 10 do 
  writeln ( 'Iteration: ' , i : 1 ) ;
 
repeat ulangi
  a := a + 1 
until a = 10 
 
case i of kasus i
  0 : write ( 'zero' ) ;
  1 : write ( 'one' ) ; 
  2 : write ( 'two' ) 
end ;  
  
klik disini

atau disini

Tidak ada komentar:

Posting Komentar