Pascal dựa trên ngôn ngữ lập trình Algol và được đặt tên theo nhà toán học và triết học
Blaise Pascal. Wirth đồng thời cũng xây dựng Modula-2 và Oberon, là những ngôn ngữ
tương đồng với Pascal. Oberon cũng hỗ trợ kiểu lập trình hướng đối tượng
Ban đầu, Pascal là một ngôn ngữ được hướng để dùng trong giảng dạy về lập trình có cấu
trúc, và nhiều thế hệ sinh viên đã "vào đời" thông qua việc học Pascal như ngôn ngữ vỡ lòng
trong các chương trình học đại cương. Nhiều biến thể của Pascal
ngày nay vẫn còn được sử dụng khá phổ biến trong giảng dạy. Mặc dù vậy, nếu nghĩ rằng
Pascal là ngộ ngữ chỉ dành để giảng dạy, thì sẽ sai lầm. Hãy nghe chính ý kiến của Wirrth vè
vấn đề bày (1984)”Có người cho rằng Pascal được thiết kế như một ngôn ngữ để giảng dạy.
Mặc dù điều này là đúng, nhưng việc sử dụng nó để giảng dạy không phải là mục đích duy
nhất. Thực tế, tôi không tin vào sự thành công của việc áp dụng trong khi học các phương
pháp và công cụ mà không thể sử dụng để giải quyết các bài toán thực tế. Theo tiêu chuẩn
ngày pascal có những yếu điểm rỏ rằng khi lập trình các hệ thống lớn, nhưng 15 năm trước
đó là thảo hiệp hợp lí giữa cái mong muốn và hiệu quả ”
Pascal là một ngôn ngữ có định kiểu mạnh mẽ. Điều có nghĩa là mọi biến và hằng số của
một kiểu dử liệu không thể tự đem trộn lẩn với các biến và hằng của một kiêủ dữ liệu khác.
Việc định kiểu chặt chẽ như vậy buộc người lập trình luôn luôn phải có các biểu thức tương
thích nhau về kiểu dữ liệu.Phần lớn hệ điều hành Macintosh được viết bằng Pascal. Hệ sắp
chữ TEX phổ biến được viết bằng một
2
2
ngôn ngữ tên là Web là ngôn ngữ mà Donald Knuth đã vay mượn khá nhiều yếu tố từ
Pascal.
Ngôn ngữ Pascal được dùng hiện nay có nhiều điểm khác biệt với chuẩn Pascal nguyên
thủy của Giáo sư Wirth. Tùy theo quốc gia hoặc công ty đã phát triển cho ra đời các
chương trình biên dịch ngôn ngữ Pascal như:
· ISO PASCAL (International Standards Organization) của Châu Âu
· ANSI PASCAL (American National Standards Institute) của Mỹ
· TURBO PASCAL của hãng BORLAND (Mỹ)
Free Pascal
Free Pascal được viết bằng Pascal (sao cho nó có thể biên dịch được chính nó), đượcphát
triển với mục tiêu là cung cấp một trình biên dịch mạnh mẽ vàthuận tiện, có khả năng biên
dịch cả các ứng dụng cũ lẫn phát triển ứngdụng mới. Được phân phối miễn phí dưới giấy
phép GNU. Có khả năng trộn lẫn cả mã của Turbo Pascal và mã Delphi, hỗ trợ nhiều nền
tảng lẫn nhiều hệ điều hành.
5
5
Turbo Pascal
Turbo Pascal là trình biên dịch Pascal thống trị cho PC vào thập niên 1980 và đầu thập
niên 1990 .Nó phổ biến vì các mở rộng mạnh mẽ và đặc biệt là thời gian biên dịchcực kì
ngắn. Trong thời điểm hiện tại, các phiên bản cũ của TurboPascal (tới 5.5) có thể tải xuống
miễn phí tại trang web của Borland(tuy nhiên vẫn cần phải đăng ký).
turbo_pascal_60
6
6Chrome
Chrome là thế hệ Object Pascal tiếp theo cho nền tảng .NET và nền tảng Mono, được
RemObjects Software cung cấp
chrome_on_white_small
7
7
10
10
Virtual Pascal
Virtual Pascal được Vitaly Miryanov sáng tạo như một trình biên dịch dành cho
OS/2tương thích với cú pháp của Borland Pascal. Sau đó nó được fPrint pháttriển thành
sản phẩm thương mại, hỗ trợ thêm Win32, và đến năm 2000 trởthành phần mềm miễn
phí. Ngày nay nó có thể biên dịch cho Win32, OS/2và cả Linux, và gần như hoàn toàn
tương thích với Borland Pascal và Delphi.
11
11IP Pascal
IP Pascal ban đầu là ngôn ngữ Pascal dành cho Z80/CP/M, rồi được chuyển sang vàviết
lại cho Intel 80386/PC. IP Pascal có một thư viện khả chuyển (portability library). Ví dụ,
một chương trình hiển thị văn bản viết bằng Pascal chuẩn từ thập niên 1970 có thể được
biên dịch lại để làm việc trong một cửa sổ và thậm chí cócả việc tạo dựng đồ họa. IP
Pascal hỗ trợ chuẩn ISO 7185 và nâng cấpngôn ngữ một cách logic. Ví dụ, Pascal chuẩn
hỗ trợ các xâu ký tự được"căn lề phải" và sau đó còn hỗ trợ xâu ký tự động. Mảng tĩnh của
Pascalchuẩn được nâng thành mảng động nhưng vẫn hoàn toàn tương thích ngượcvới
mảng tĩnh, v.v…
12
12
Execute IP Pascal
services
16
II. CẤU TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH PASCAL
1. Cấu trúc chung :
Một chương trình máy tính là một dãy lệnh, một dãy chỉ thị hướng dẩn máy tính thực
hiện một nhiệm vụ, một xữ lí nào đó trên một tập hợp các dữ liệu, số liệu. Cấu trúc tổng
quát một chương trình Pascal gồm ba phần :
PROGRAM Tên_Chương_Trình; ® (*Tiêu đề*)
USES ... ® (*Phần khai báo: đơn vị chương trình
LABEL ... nhãn ...
CONST ... hằng ...
TYPE ... kiểu ...
VAR ... biến ...*)
PROCEDURE ... ® (*Phần mô tả thủ tục/ch. trình con
FUNCTION ... hàm ...*).
BEGIN ® (*Thân chương trình chính*)
... (*Các câu lệnh chương trình*)
END. ® (*Kết thúc chương trình*)
b. Phần khai báo dữ liệu hằng, biến (Const, Var), mô tả kiểu dữ liệu ( Type), khai báo
chương trình con ( Procedure, Function)
c. Phần thân chương trình chứa các lệnh để máy tính thực hiện
a. Phần tiêu đề của chương trình (phần tên)
2. Sơ đồ cấu trúc chương trình pascal
17
17
Œ Phần tiêu đề:Phần này bắt đầu bằng từ khóa Program rồi tiếp đến là tên của chương
trình và chấm dứt bằng dấu chấm phẩy đặt theo đúng qui cách của danh hiệu tự đặt ).
Phần tiêu đề có hay không cũng được
Writeln ( ‘Welcome to you, ‘, Name) ;
Writeln ( ‘Today, we study PASCAL PROGRAMMING ... ‘);
Readln; END.
Ví dụ :
Ví dụ : Giả sử ta muốn viết ra màn hình các dòng chữ giới thiệu. Sau đây là
chương trình viết bằng TP để thực hiện việc đó
19
19
1. Kiểu logic Bun ( Logic Boolean)
1. Kiểu logic Bun ( Logic Boolean)
- Từ khóa: BOOLEAN
- Miền giá trị: (TRUE, FALSE).
- Trong Pascal, khi so sánh các giá trị boolean các biến, hằng được khai báo kiểu dữ
liệu đúng sai sẽ chỉ nhận 1 trong 2 giá trị True (đúng) và False (sai)
Kiểu dữ liệu đúng sai có từ khóa để khai báo là Boolean. Các phép toán : phép so sánh (=,
<, >) và các phép toán logic: AND, OR, XOR, NOT có thể áp dụng cho các giá trị kiểu
Boolean và cho ta kết quả cũng là kiểu Boolean. Quy tắc của các phep stoán cos thể được
tóm tắt dưới dạng “ bảng sự thật ”(Truth table)
•
Phép AND : ( phép “và ” logic)
•
Phép OR : ( phép “hoặc” logic)
•
Phép NOT : ( phép “đảo ” hay “ phủ định” logic)
•
Phép XOR : ( phép “hoặc triệt tiêu ” logic)
Ví dụ :
Ví dụ : Giả sử A và B là hai giá trị kiểu Boolean.
III. CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN
2 byte
Word
0 ⇔ 65535
2 byte
LongInt
-2147483648 ⇔ 2147483647
4 byte
a. Byte: Chứa các giá trị là số nguyên từ 0 đến 255, và chiếm 1 byte bộ nhớ.
b. Integer: Các số nguyên từ -32768 đến 32767. Chiếm 2 bytes bộ nhớ
c. Shortint: Số nguyên từ -128 đến 127 (1 byte)
d. Word: 0 đến 65535. (2 bytes)
e. Longint: -2.147.483.648 đến 2.147.483.647. (4 bytes)
-
Từ khoá : INTEGER
-
Một giá trị kiểu số nguyên là một phần tử của tập các số nguyên mà ta có thể biểu diển được
trên máy, ngĩa nó là một ập nhỏ của không gian các số nguyên chứ không phải tất cả mọi số
nguyên đều có thể xử lý trên máy tính đực, Thông thường nhất, các số nguyên được biểu diển
bằng hai byte (16 bit) nên phạm vi từ -32768 đến 32767
21
A B A AND B A OR B A XOR B NOT A
1 1 1 1 0 0
1 0 0 1 1 0
0 1 0 1 1 1
0 0 0 0 0 1
SHL (phép dịch trái): a SHL n a × 2n⇔ •
SHR (phép dịch phải): a SHR n a DIV 2n⇔ •
Tất cả các kiểu dữ liệu trên đều là kiểu dữ liệu số nguyên, tức không thể dùng để chứa
Ví dụ :
Ví dụ :
+234, - 32767, -1, 23, 123 ….
MaxInt là têngiá trị cực đại cho phép của kiểu nguyên, tức là MaxInt = + 32767
23
23
3. Kiểu số thực (real)
3.1. D
3.1. D
ạng thập phân
ạng thập phân
Đây là kiểu dữ liệu có chứa các số thập phân, tức là các số có dạng xxx.yyyy
a. Single: Chứa các giá trị từ 1.5E -45 đến 3.4 E38 (1,5 x 10^-45 đến 3,4 x
10^38 ). (4 bytes)
Trong Pascal, biểu diễn số thực mặc định dạng xx.yy E zz, tức là xx.yy x 10 mũ
zz
b. Real: 2.9E -39 đến 1.7E 38 (2,9 x10 ^ - 39 đến 1,7 x 10 38 ) (6 bytes).
c. Double: 5.0E -324 đến 1.7E 308 (5,0 x10 ^ - 324 đến 1,7 x 10 ^ 308 ) (8
bytes).
Tên kiểu Phạm vi Dung lượng
Single 1.5×10-45 → 3.4×10+38 4 byte
Real 2.9×10-39 → 1.7×10+38 6 byte
Double 5.0×10-324 → 1.7×10+308 8 byte
Extended 3.4×10-4932 → 1.1×10+4932 10 byte
24
24
3.2. Các phép toán trên kiểu số thực:
3.2. Các phép toán trên kiểu số thực: +, -, *, /
Ví dụ: CHR(65) biễu diễn ký tự 'A'.
- Dùng ký hiệu #n (trong đó n là mã ASCII của• ký tự cần biểu diễn).
Ví dụ #65.
- Các phép toán: =, >, >=, <, <=,<>.
- Kiểu ký tự để biểu diễn các ký tự nằm trong bảng mả ASCII (American
Standard Code for Information Interchange). trong đó có chứa các số 0..9, các ký tự
thường a..z và ký tự hoa A..Z, và một số ký tự đặc biệt khác!
Bảng mã ASCII gồm 256 ký từ có mã từ 0 đến 255
Mỗi ký tự tươn gứng với 1 mã số!
Ví dụ, ký tự A sẽ tương ứng với mã 64, space (khoảng trắng) tương ứng với 32!
- Kiểu ký tự ngoài việc dùng để chứa các ký tự xuất ra màn hình, còn dùng để điều khiển
việc nhận lệnh từ bàn phím. Để thể hiện tất cả các ký tự trong bảng mã ASCII, các bạn
dùng chương trình sau :
Program Bang_ma_ASCII;Uses CRT; Var I : Integer; Begin
26
26