pascal

Selasa, 15 Maret 2011
Pascal adalah bahasa tingkat tinggi utama yang digunakan untuk pembangunan di Apple Lisa, dan pada tahun-tahun awal Mac. Bagian dari sistem operasi Macintosh asli tangan-diterjemahkan ke dalam bahasa assembly Motorola 68000 dari sumber Pascal. Sistem typesetting TeX populer oleh Donald E. Knuth ditulis di WEB, sistem pemrograman yang asli melek, berdasarkan Desember PDP-10 Pascal, sedangkan aplikasi seperti Total Commander ditulis dalam Delphi (Object Pascal).
Object Pascal masih banyak digunakan untuk aplikasi Windows berkembang seperti Skype. [Rujukan?] [Sunting] Deskripsi Singkat
Wirth niat adalah untuk membuat bahasa yang efisien (tentang baik kecepatan kompilasi dan kode yang dihasilkan) berdasarkan pemrograman terstruktur apa yang disebut, sebuah konsep yang baru-baru ini menjadi populer. Pascal berakar dalam bahasa 60 ALGOL, tetapi juga memperkenalkan konsep dan mekanisme yang (di atas skalar ALGOL dan array) programmer dan diaktifkan untuk menentukan sendiri kompleks mereka (terstruktur) tipe data, dan juga membuat lebih mudah untuk membangun dinamis dan rekursif struktur data seperti daftar, pohon dan grafik. Fitur-fitur penting termasuk untuk ini adalah catatan, mantri, subranges, dinamis mengalokasikan variabel dengan pointer yang terkait, dan set. Untuk membuat ini mungkin dan bermakna, Pascal memiliki mengetik yang kuat pada semua benda, yang berarti bahwa satu jenis data tidak dapat dikonversi atau ditafsirkan sebagai lain tanpa konversi eksplisit. Mekanisme serupa adalah standar dalam banyak bahasa pemrograman saat ini. Bahasa lain yang mempengaruhi perkembangan Pascal adalah COBOL, Simula 67, dan memiliki Wirth's ALGOL W.
Pascal, seperti banyak bahasa pemrograman saat ini (tapi tidak seperti kebanyakan bahasa dalam keluarga C), memungkinkan bersarang definisi prosedur untuk setiap tingkat kedalaman, dan juga memungkinkan sebagian besar jenis definisi dan deklarasi di dalam prosedur dan fungsi. Hal ini memungkinkan sintaks yang sangat sederhana dan koheren di mana sebuah program lengkap sintaksis hampir identik dengan prosedur tunggal atau fungsi (kecuali untuk kata kunci itu sendiri, tentu saja.) [Sunting] Implementasi
Compiler Pascal pertama dirancang di Zürich untuk keluarga seri 6000 CDC mainframe komputer. Niklaus Wirth laporan bahwa usaha pertama untuk menerapkannya dalam Fortran pada tahun 1969 tidak berhasil karena ketidakmampuan Fortran untuk mengungkapkan struktur data yang kompleks. Usaha yang kedua dirumuskan dalam bahasa Pascal itu sendiri dan operasional pada pertengahan 1970. Banyak Pascal kompiler karena telah sama diri-hosting, yaitu, compiler itu sendiri ditulis dalam Pascal, dan kompilator biasanya mampu mengkompilasi ulang sendiri ketika fitur baru ditambahkan ke bahasa, atau ketika compiler harus porting ke baru lingkungan. Compiler GNU Pascal adalah salah satu pengecualian yang penting, yang ditulis dalam C.
Pelabuhan yang berhasil pertama dari kompiler Pascal CDC untuk mainframe lain diselesaikan oleh Welsh dan Quinn di QUB pada tahun 1972. Targetnya adalah Liga Komunis Internasional 1900 seri. Kompiler ini pada gilirannya adalah orangtua dari kompiler Pascal untuk Multum minicomputer ICS. Port Multum dikembangkan - dengan maksud untuk menggunakan Pascal sebagai bahasa pemrograman sistem - oleh Findlay, Cupples, Cavouras dan Davis, bekerja di Departemen Computing Science di Universitas Glasgow. Diperkirakan bahwa Multum Pascal, yang diselesaikan pada musim panas 1973, mungkin telah implementasi 16-bit pertama.
Sebuah kompiler yang sama sekali baru selesai dibangun oleh Welsh et al. di QUB pada tahun 1977. Hal ini menawarkan fitur diagnostik sumber-bahasa (menggabungkan profil, menelusuri dan jenis-sadar pembuangan postmortem diformat) yang dilaksanakan oleh Findlay dan Watt di Universitas Glasgow. Implementasi ini adalah porting pada tahun 1980 untuk seri 2900 ICL oleh tim berbasis di Southampton University dan Universitas Glasgow. Standard Pascal Model Pelaksanaannya juga didasarkan pada kompiler ini, yang telah disesuaikan, oleh Welsh dan Hay di Manchester University pada tahun 1984, untuk memeriksa secara ketat untuk kesesuaian dengan BSI 6192/ISO 7185 Standar dan untuk menghasilkan kode untuk sebuah mesin abstrak portabel.
Compiler Pascal pertama kali ditulis di Amerika Utara dibangun di University of Illinois di bawah Donald B. Gillies untuk PDP-11 dan menghasilkan kode mesin asli.
Untuk menyebarkan bahasa dengan cepat, compiler "kit port" diciptakan di Zurich yang menyertakan compiler yang menghasilkan kode untuk sebuah mesin "virtual" stack (yaitu kode yang cocok untuk interpretasi cukup efisien), bersama dengan seorang juru bahasa untuk kode bahwa - sistem Pascal-P. Kompiler P-sistem yang disebut Pascal-P1, P2-Pascal, Pascal-P3, dan Pascal-P4. Pascal-P1 adalah versi pertama, dan Pascal-P4 adalah orang terakhir yang datang dari Zurich.
Compiler Pascal-P4 / interpreter masih dapat dijalankan dan dikompilasi pada sistem kompatibel dengan Pascal aslinya. Namun, hanya menerima subset dari bahasa Pascal.
Pascal-P5, dibuat di luar dari kelompok Zurich, menerima bahasa Pascal penuh dan termasuk ISO 7185 kompatibilitas.
UCSD Pascal Pascal bercabang-P2, di mana Kenneth Bowles dimanfaatkan untuk menciptakan UCSD p-System interpretif
Sebuah kompiler berdasarkan kompilator Pascal-P4, yang menciptakan binari pribumi, dirilis untuk komputer mainframe IBM System/370 oleh Energi Atom Australia Komisi; itu disebut "AAEC Kompiler Pascal" setelah singkatan dari nama Komisi .
Pada awal 1980-an, Watcom Pascal dikembangkan, juga untuk IBM System 370.
IP Pascal adalah sebuah implementasi bahasa pemrograman Pascal menggunakan Micropolis DOS, tetapi bergerak cepat CP / M berjalan pada Z80 tersebut. Itu dipindahkan ke 80386 jenis mesin pada tahun 1994, dan ada saat ini sebagai Windows / XP dan implementasi Linux. Pada tahun 2008, sistem ini dibawa ke tingkat yang baru dan bahasa yang dihasilkan disebut "Pascaline" (setelah kalkulator Pascal). Ini mencakup objek, kontrol namespace, array dinamis, bersama dengan ekstensi lainnya, dan umumnya fitur fungsi yang sama dan perlindungan jenis sebagai C #. Ini adalah implementasi satunya yang juga kompatibel dengan implementasi Pascal asli (yang merupakan standar ISO 7185).
Pada awal 1980-an, UCSD Pascal adalah porting ke Apple II dan III komputer Apple untuk memberikan alternatif terstruktur untuk penafsir BASIC yang datang dengan mesin.
Apple Computer menciptakan sendiri Lisa Pascal untuk Lokakarya Lisa di tahun 1982 dan porting kompiler ini ke Macintosh Apple dan PU pada tahun 1985. Pada tahun 1985 Larry Tesler, dalam konsultasi dengan Niklaus Wirth, yang didefinisikan Object Pascal dan ekstensi ini dimasukkan baik dalam Pascal Lisa dan Pascal Mac kompilator.
Pada tahun 1980 Anders Hejlsberg menulis Blue Label kompilator Pascal untuk-Nascom 2. Sebuah implementasi ulang ini kompiler untuk PC IBM dipasarkan di bawah nama Compas Pascal dan PolyPascal sebelum diakuisisi oleh Borland. Berganti nama menjadi Turbo Pascal menjadi sangat populer, sebagian berkat strategi penetapan harga yang agresif dan sebagian untuk memiliki salah satu lingkungan pertama Terpadu layar penuh pembangunan, dan perputaran waktu cepat (hanya beberapa detik untuk mengkompilasi, link, dan jalankan.) Selain itu, ditulis dan sangat dioptimalkan sepenuhnya dalam bahasa assembly, sehingga lebih kecil dan lebih cepat dari banyak kompetisi. Pada tahun 1986 Anders porting Turbo Pascal ke Macintosh dan dimasukkan Apple Object Pascal ekstensi ke Turbo Pascal. Ekstensi ini kemudian ditambahkan kembali ke dalam versi PC dari Turbo Pascal untuk versi 5.5. Pada saat yang sama Microsoft juga menerapkan compiler Object Pascal [6] [7] Turbo Pascal 5.5 memiliki pengaruh besar pada masyarakat Pascal, yang mulai berkonsentrasi terutama pada PC IBM pada akhir 1980-an.. Banyak penggemar PC dalam mencari pengganti terstruktur untuk DASAR menggunakan produk ini. Hal ini juga mulai diadopsi oleh pengembang profesional. Sekitar waktu yang sama sejumlah konsep diimpor dari C untuk membiarkan Pascal programmer menggunakan API C berbasis Microsoft Windows secara langsung. Ekstensi ini termasuk null-string diakhiri, aritmatika pointer, pointer fungsi, alamat-of typecasts operator dan tidak aman.
Namun, Borland kemudian memutuskan ingin fitur berorientasi objek lebih rumit, dan mulai lebih dalam Delphi menggunakan Object Pascal rancangan standar yang diajukan oleh Apple sebagai dasar. (Ini draft Apple masih belum standar resmi.) Versi pertama dari bahasa Delphi yang sesuai bernama Object Pascal. Penambahan utama dibandingkan dengan ekstensi OOP lebih tua model obyek berbasis referensi, konstruktor virtual dan destructors, dan properti. Beberapa kompiler lain juga menerapkan dialek ini.
Turbo Pascal, dan turunan lainnya dengan unit atau konsep modul adalah bahasa modular. Namun, tidak memberikan konsep modul bersarang atau mengimpor yang berkualitas dan ekspor simbol tertentu.
Super Pascal adalah sebuah varian yang menambah label non-numerik, pernyataan kembali dan ekspresi sebagai nama jenis.
Universitas Zurich, Karlsruhe dan Wuppertal telah mengembangkan ekstensi untuk Scientific Computing (Pascal XSC), yang menyediakan solusi gratis untuk pemrograman perhitungan numerik dengan presisi dikendalikan. [Sunting] Bahasa konstruksi
Pascal, dalam bentuk aslinya, adalah bahasa murni prosedural dan termasuk array tradisional ALGOL struktur kontrol seperti dengan kata-kata dicadangkan seperti jika, lalu, lain, sementara, untuk, dan sebagainya. Namun demikian, Pascal juga memiliki banyak data penataan sarana dan abstraksi lain yang tidak termasuk dalam aslinya ALGOL 60, seperti definisi tipe, catatan, pointer, mantri, dan set. Konstruksi tersebut berada di bagian warisan atau terinspirasi dari Simula 67, ALGOL 68, sendiri Niklaus Wirth's ALGOL W dan saran oleh CAR Hoare. [Sunting] Halo dunia
program Pascal mulai dengan kata kunci program dengan daftar deskriptor file eksternal sebagai parameter; [8] kemudian mengikuti blok utama tanda kurung oleh mulai dan akhir kata kunci. laporan terpisah titik koma, dan titik (yaitu, periode) berakhir seluruh program (atau unit). Huruf diabaikan dalam sumber Pascal.
Berikut adalah contoh dari kode sumber yang digunakan untuk program yang sangat sederhana "Halo dunia":
program HelloWorld (output); mulai
  
Writeln ('Hello world!'); akhir.
[Sunting] Jenis data
Suatu jenis dalam Pascal, dan dalam beberapa bahasa pemrograman populer lainnya, mendefinisikan variabel sedemikian rupa sehingga mendefinisikan suatu rentang nilai variabel yang mampu menyimpan, dan juga mendefinisikan seperangkat operasi yang diperbolehkan untuk dilakukan pada variabel dari tipe tersebut. Jenis standar adalah: Jenis data Jenis nilai variabel yang mampu menyimpan Seluruh angka integer nyata nomor titik mengambang Nilai boolean TRUE atau FALSE char Karakter tunggal dari karakter memerintahkan set
Rentang nilai yang diperbolehkan untuk setiap pelaksanaan (kecuali boolean) didefinisikan. Fungsi disediakan untuk beberapa konversi data. Untuk konversi real ke integer, fungsi berikut tersedia: bulat, yang bulat ke integer menggunakan pembulatan bankir; trunc, bulat menuju nol.
Pemrogram mempunyai kebebasan untuk mendefinisikan lain yang umum digunakan tipe data (misalnya byte, string, dll) dalam hal jenis fasilitas standar menggunakan tipe deklarasi Pascal. misalnya
tipe
  
byte = 0 .. 255;
  
signedbyte = -128 .. 127;
  
string = dikemas array [1 .. 255] of char;
[Sunting] tipe skalar
tipe skalar Pascal adalah nyata, integer, karakter, boolean dan mantri, sebuah konstruktor tipe baru diperkenalkan dengan Pascal:
tipe
  
SomeType = (State1, State2, State3); var
  
r: Real;
  
i: Integer;
  
c: Char;
  
b: Boolean;
  
t: SomeType;
  
e: (apel, pir, pisang, jeruk, lemon);
[Sunting] jenis Subrange
Subranges dari setiap tipe ordinal (tipe sederhana apapun kecuali nyata) dapat dibuat:
var
  
x: 1 .. 10;
  
y: 'a' .. 'z';
  
z: pear .. jeruk;
[Sunting] Mengatur jenis
Berbeda dengan bahasa pemrograman lain dari waktu nya, Pascal mendukung jenis set:
var
  
set1: set 1 .. 10;
  
set2: set 'a' .. 'z';
  
set3: set pir .. jeruk;
himpunan A adalah konsep dasar untuk matematika modern, dan mereka dapat digunakan dalam banyak algoritma. Fitur tersebut berguna dan dapat lebih cepat dari yang setara membangun dalam bahasa yang tidak mendukung set. Misalnya, untuk kompilator Pascal banyak:
jika saya di [5 .. 10] kemudian ...
mengeksekusi lebih cepat dari:
if (i> 4) dan (i <11) maka ...
Set nilai-nilai non-contiguous dapat sangat berguna, baik dari segi kinerja dan mudah dibaca:
jika saya dalam [0 .. 3, 7, 9, 12 .. 15] kemudian ...
Untuk contoh-contoh ini, yang melibatkan set atas domain kecil, perbaikan kinerja biasanya dicapai oleh kompilator yang mewakili variabel ditetapkan sebagai bitmasks. Operator diatur maka dapat diimplementasikan secara efisien sebagai operasi bitwise kode mesin. [Sunting] deklarasi Jenis
Jenis dapat didefinisikan dari jenis lain yang menggunakan deklarasi tipe:
tipe
  
x = Integer;
  
y = x; ...
Selanjutnya, jenis kompleks dapat dibangun dari jenis sederhana:
tipe
  
a = Array [1 .. 10] of Integer;
  
b = catatan
        
x: Integer;
        
y: Char
      
akhir;
  
c = Berkas dari;
[Sunting] Jenis berkas
Seperti ditunjukkan dalam contoh di atas, file Pascal adalah urutan komponen. Setiap berkas memiliki variabel buffer yang dilambangkan dengan ^ f. Prosedur mendapatkan (untuk membaca) dan meletakkan (untuk menulis) memindahkan variabel buffer ke elemen berikutnya. Baca diperkenalkan membaca seperti itu (f, x) adalah sama dengan x: = f ^; mendapatkan (f);. Tulis diperkenalkan seperti yang menulis (f, x) adalah sama dengan ^ f: = x; meletakkan (f); Teks yang telah ditetapkan sebagai tipe file char. Sedangkan variabel buffer dapat digunakan untuk memeriksa karakter berikutnya yang akan digunakan (memeriksa angka sebelum membaca integer), hal ini menyebabkan masalah serius dengan program interaktif dalam implementasi awal, namun kemudian diselesaikan dengan "malas I / O" konsep.
Dalam Jensen & Wirth Pascal, string direpresentasikan sebagai array dikemas chars; karena itu mereka tetap panjang dan biasanya ruang-empuk. Beberapa dialek memiliki tipe string. [Sunting] jenis Pointer
Pascal mendukung penggunaan pointer:
tipe
  
Nodeptr = ^ Node;
  
Node = record
        
a: Integer;
        
b: Char;
        
c: Nodeptr
      
akhir; var
  
ptoNode: Nodeptr;
  
Pint: ^ Integer;
Di sini ptoNode variabel pointer untuk tipe data Node, catatan. Pointer dapat digunakan sebelum mereka dinyatakan. Ini adalah deklarasi maju, suatu pengecualian dari aturan bahwa hal-hal yang harus dinyatakan sebelum mereka digunakan. Untuk membuat catatan baru dan menetapkan nilai 10 dan karakter A untuk bidang a dan b dalam catatan, dan untuk memulai c pointer ke nihil, perintah adalah:
baru (ptoNode);
 
... ptoNode ^ a: = 10;. ptoNode ^ b: = 'A';. ptoNode ^ c: = nil;. ...
Hal ini juga dapat dilakukan dengan menggunakan dengan pernyataan, sebagai berikut
baru (ptoNode);
 
... dengan ^ ptoNode lakukan mulai
  
a: = 10;
  
b: = 'A';
  
c: = nil akhir; ...
Di dalam ruang lingkup dengan pernyataan, a dan b mengacu pada subbidang dari pointer ptoNode merekam dan tidak untuk mencatat Node atau ketik Nodeptr pointer.
Linked list, tumpukan dan antrian dapat dibuat dengan memasukkan bidang jenis pointer (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 variabel referensi 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). Ini membantu menghilangkan masalah keamanan jenis melekat dengan implementasi pointer lain, khususnya yang digunakan untuk PL / I atau C. Hal ini juga menghilangkan beberapa risiko yang disebabkan oleh pointer tergantung, tetapi kemampuan untuk secara dinamis melepaskan ruang dirujuk dengan menggunakan fungsi buang (yang memiliki efek yang sama sebagai fungsi perpustakaan bebas ditemukan di C) berarti bahwa risiko pointer menjuntai belum sepenuhnya dihilangkan. [9] [Sunting] struktur Kontrol
Pascal adalah sebuah bahasa pemrograman terstruktur, yang berarti bahwa aliran kontrol terstruktur ke dalam laporan standar, idealnya tanpa perintah 'goto'.
sementara a> <b melakukan writeln ('Menunggu');
 
jika b> kemudian
  
writeln ('Kondisi bertemu') lain
  
writeln ('Kondisi tidak terpenuhi');
 
untuk i: = 1 sampai 10 melakukan
  
writeln ('Iterasi:', i: 1);
 
ulangi
  
a: = a + 1 sampai 10 =;
 
Kasus i
  
0: write ('nol');
  
1: write ('satu');
  
2: write ('dua') akhir;
[Sunting] Prosedur dan fungsi
Struktur program Pascal ke dalam prosedur dan fungsi.
Program tambang (output);
 
var i: integer;
 
Prosedur print (var j: integer);
 
  
fungsi berikutnya (k: integer): integer;
  
mulai
    
berikutnya: k = + 1
  
akhir;
 
mulai
  
writeln ('total adalah:', j);
  
j: = berikutnya (j) akhir;
 
mulai
  
i: = 1;
  
sedangkan i <= 10 lakukan pencetakan (i) akhir.
Prosedur dan fungsi dapat sarang untuk setiap kedalaman, dan 'program' membangun adalah blok terluar logis.
Setiap prosedur atau fungsi dapat memiliki deklarasi sendiri goto label, konstanta, tipe, variabel, dan prosedur lain dan fungsi, yang semua harus dalam urutan itu. Persyaratan urutan ini awalnya ditujukan untuk memungkinkan kompilasi efisien single-pass. Namun, dalam beberapa dialek (seperti Embarcadero Delphi) persyaratan pemesanan ketat bagian deklarasi telah santai.

0 komentar:

Posting Komentar