Ngôn ngữ lập trình Pascal - Phần 1
Tính tương thích của các kiểu dữ liệu
Về nguyên tắc, 2 vế phải cùng kiểu dữ liệu.
Biến nguyên I không thể gán := ‘A’;
Ngoại lệ: biến thực nhận giá trị nguyên.
X:= 6;
Ngược lại một biến nguyên không thể nhận một giá
trị thực. Muốn nhận phải dùng các hàm Round
hoặc Trunc.
I := Round( SQRT(X));
36 trang |
Chia sẻ: dntpro1256 | Lượt xem: 631 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Ngôn ngữ lập trình Pascal - Phần 1, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Biên soạn:
Giảng bài:
Ngôn ngữ lập trình
2Vì sao học PASCAL ?
PASCAL là ngôn ngữ lập trình cao cấp do GS
Niklaus Wirth sáng tác đầu 70.
PASCAL giúp sinh viên viết chương trình có
cấu trúc sáng sủa, rõ ràng, dễ hiểu và dễ đọc.
PASCAL là ngôn ngữ có cấu trúc mạnh mẽ cả
về dữ liệu lẫn chương trình và lệnh.
3Algorithms+Data Structures=Programs
Thuật giải+Cấu trúc dữ liệu=Chương trình
4Chương 1
Các phần tử cơ bản của PASCAL
Bộ chữ viết của PASCAL
Các chữ cái ‘a’..’z’, ‘A’..’Z’
Không phân biệt chữ thường và hoa.
Các chữ số ‘0’..’9’
Dấu gạch nối _ rất tiện dụng
Các kí hiệu +, -, *, /, . , ; % ...
Dấu cách được dùng để ngăn cách các từ.
5Từ khoá
là các từ của riêng PASCAL
Thí dụ:
Program, Var, For, To, IF....
Tên hay Định danh (Indentifier)
là dãy kí tự bắt đầu bằng một chữ cái, dùng để chỉ tên
hằng số, tên một biến, tên kiểu, tên chương trình con...
Thí dụ:
ta phải dùng tên Delta thay cho dấu là kí hiệu
không nằm trong bộ chữ viết PASCAL
6 Các tên đặt sai
1ABC, #DELTA, ARRAY, DEL TA
Dùng dấu gạch nối khi đặt tên
GIAI_PHUONG_TRINH_BAC_HAI
thay vì tên đúng song khó hình dung
GIAIPHUONGTRINHBACHAI
tên sai GIAI-PHUONG-TRINH-BAC-HAI
Tên bằng tiếng Việt ?
7 Dấu chấm phẩy ; dùng để ngăn cách câu lệnh
(xem sau)
Lời giải thích (comment) cho rõ ràng hơn
(* Lời giải thích có thể dùng tiếng Việt*)
{ Lời giải thích }
Sai nếu mở - đóng khác kiểu (* Sai }
Có thể viết nhiều dòng giải thích cho đến khi
khoá lại
(* Dòng 1
dòng 2 *)
8Lưu đồ cú pháp
Được dùng để định nghĩa các cấu trúc trong
PASCAL. Chính xác song rất rất ít dùng đến.
Thí dụ: định nghĩa tên
9Cấu trúc chung
của một chương trình PASCAL
Phần tiêu đề của chương trình
Phần khai báo dữ liệu
- hằng, biến (Const, Var),
- mô tả kiểu dữ liệu mới (Type)
- khai báo chương trình con
(Procedure, Function)
Phần thân chương trình
chứa các lệnh để máy tính thực hiện
10
Thí dụ 1.1
PROGRAM THI_DU1; (* Dòng tiêu đề *)
VAR
R, A, Dien_Tich: Real; (* Khai báo ba biến thực *)
BEGIN
Write(' Bán kính R = ');
READLN(R); (* Đọc giá trị của R *)
Dien_Tich := PI*R*R; (* Tính diện tích hình tròn *)
(* Viết ra màn hình kết quả tính *)
Writeln(' Diện tích hình tròn = ', Dien_Tich);
Write(' Cạnh hình vuông A = '); READLN(A);
Dien_Tich := A*A;
Writeln(' Diện tích hình vuông =', Dien_Tich);
Readln;
END.
11
Kết quả chạy chương trình
Bán kính R = 2.56
Diện tích hình tròn = 2.0588741615E+01
Cạnh hình vuông A = 2.56
Diện tích hình vuông = 6.5536000000E+00
_
12
PROGRAM TEN_CHUONG_TRINH; (* Dòng tiêu đề *)
USES CRT, PRINTER;(*Lời gọi Sử dụng các đơn vị chương trình *)
(* Phần khai báo dữ liệu và chương trình con *)
LABEL...
CONST ...
TYPE ...
VAR ...
{ Có thể có nhiều Procedure và nhiều Function }
PROCEDURE ...
FUNCTION ...
(* Thân chương trình chính *)
BEGIN
(* Các lệnh được viết ở đây *)
......
END.
13
Các bước cơ bản khi viết chương trình
Bước 1: Soạn thảo chương trình.
Bước 2: Dịch và kết nối chương trình.
Biên dịch (compiler)
Thông dịch (Interpreter) (ít dùng)
Bước 3: Chạy thử và sửa lỗi chương trình
Turbo PASCAL của hãng Borland có môi trường
khép kín, đảm bảo hoạt động của cả 3 bước trên
trong một chương trình.
14
Bước 1: Thảo chương trình
Dùng chương trình soạn thảo văn bản (Text
Editor) để viết chương trình với nhiều thao tác
tiện dụng như xen, sửa, xoá, copy ...
Máy tính cổ phải viết chương trình bằng cách
đục lỗ giấy.
Kết quả nhận được: các chương trình nguồn
(source code) PASCAL: *.PAS
15
Bước 2: Dịch và kết nối chương trình
Biên dịch (compiler)
Khái niệm về Thông dịch (Interpreter)
Kết quả của bước dịch là các tệp *.OBJ và
*.TPU
Tiếp theo phải liên kết các tệp *.OBJ và *.TPU
lại để thành chương trình chạy được, đó là tệp
*.EXE.
Nếu có lỗi về mặt cú pháp (syntax error), máy
sẽ báo rõ lỗi loại nào, vị trí lỗi ... Thí dụ Begin
viết thành Began
16
Bước 3: Chạy thử và sửa lỗi chương trình
Lỗi về thuật giải
X2 viết nhầm thành X*2
Máy không thể phát hiện được
Lỗi về cách trình bầy, chưa đẹp ...
Nếu có lỗi, quay về bước 1 để sửa.
17
Lưu đồ lập trình Begin
Dùng chương trình
soạn thảo văn bản
(EDITOR) để viết và
sửa lỗi chương trình
Gọi chương trình dịch
COMPILER và chương trình kết
nối LINKER
Có lỗi cú pháp
Chạy thử chương trình
vừa được dịch xong
Có lỗi thuật giải?
Có muốn sửa lại cho đẹp?
End
Có
Có
Không
18
Dữ liệu là nguồn vật liệu cho máy tính xử lí.
Máy tính chỉ hiểu các dữ liệu được biểu diễn
dưới dạng mã nhị phân.
Trong ngôn ngữ bậc cao, dữ liệu được khái quát
hoá thành các kiểu dữ liệu khác nhau.
Chương Các kiểu dữ liệu.
Các kiểu dữ liệu cơ sở.
19
kiểu logic Bun (Boolean)
Kiểu cơ sở kiểu số nguyên (Integer)
kiểu số thực (Real)
Kiểu vô hướng kiểu kí tự (Char)
(kiểu đơn giản)
(Scalar Type hay kiểu khoảng con
Kiểu Simple Type ) kiểu vô hướng (sub-range)
dữ tự định nghĩa
liệu
kiểu liệt kê
(enumerated)
DATA
TYPE Kiểu mảng (ARRAY)
Kiểu dữ liệu có cấu trúc Kiểu tập (SET)
(Structured Type) Kiểu bản ghi (RECORD)
Kiểu tệp (FILE)
Kiểu xâu kí tự (STRING)
Kiểu con trỏ. (POINTER Type)
20
Định nghĩa một kiểu dữ liệu
Một kiểu dữ liệu được xác định bởi 2 yếu tố:
Một tập hợp các giá trị mà một biến thuộc kiểu
đó có thể nhận được
Định nghĩa các phép toán trên tập giá trị đó.
21
Kiểu logic Boolean
Có hai giá trị FALSE và TRUE
Các phép toán AND, OR, XOR, NOT
X Y X AND Y X OR Y X XOR Y
FALSE FALSE FALSE FALSE FALSE
FALSE TRUE FALSE TRUE TRUE
TRUE FALSE FALSE TRUE TRUE
TRUE TRUE TRUE TRUE FALSE
22
Các phép toán quan hệ
Kết quả luôn luôn là giá trị kiểu Boolean
Kí hiệu phép toán ý nghĩa
so sánh khác nhau
= so sánh bằng nhau
>= so sánh lớn hơn hoặc bằng
<= so sánh nhỏ hơn hoặc bằng
> so sánh lớn hơn
< so sánh nhỏ hơn
Thí dụ: 3 < 5 cho giá trị TRUE
23
Kiểu số nguyên Integer
Kiểu số nguyên khai báo với từ khoá Integer
Dùng 2 bytes (số nguyên 16 bít) để biểu diễn nên miền
giá trị: -32768 đến +32767
Thí dụ: -327, -32000, 1, 123
Các phép tính: + - * / DIV MOD
quan hệ (>, ...), logic (AND, OR...)
Phép chia số nguyên 3 / 2 = 1.5
Phép chia lấy phần nguyên 11 DIV 3 = ?
Phép chia lấy số dư nguyên 11 MOD 3 = ?
Cẩn thận tràn số: 32000+800-2000=29200
24
Một số phép toán cho số nguyên
Phép toán logic AND, OR, XOR, NOT
Thí dụ: 3 AND 5 = 1 vì
0000 0000 0000 0011 3
AND 0000 0000 0000 0101 5
--------------------------------------------
Kết quả: 0000 0000 0000 0001 1
Phép dịch trái SHL (Shift Left), dịch phải SHR
(Shift Right) để tính nhanh hơn
3*24= 3 SHL 4, 3 / 24 = 3 SHR 4
25
Kiểu số nguyên Byte
Kiểu số nguyên khai báo với từ khoá Byte
Dùng 1 byte để biểu diễn số nguyên dương nên miền
giá trị: 0 đến 255 .
Tiết kiệm ô nhớ.
Các phép tính: giống như Integer.
26
Kiểu số thực khai báo với từ khoá Real
Dùng 6 bytes để biểu diễn, dải giá trị: -1.7E-38
đến +1.7E+38
Dải giá trị lớn và độ chính xác cao.
Các phép tính +, -, *, /, quan hệ
Không tồn tại DIV, MOD, logic
Có 2 cách viết:
- Bình thường: - 3.14, -24.123445
- Dạng viết có phần mũ: -2.4123445E-1
Cách viết sai: 5. .5
Kiểu số thực Real
27
Các hàm số học chuẩn
Các hàm số học sau đã được định sẵn và dùng cho số
nguyên và số thực
ABS(x)
SQR(x) cho x2, SQRT(x) căn bậc hai của x
SIN(x), COS(x), arctan(x) với x: radian
Ln(x), Exp(x)
Succ(n), Pred(n): n nguyên
Odd(n) là TRUE nếu n lẻ.
Round(x) và Trunc(x) làm tròn hoặc cắt
Sẽ học áp dụng sau.
28
Kiểu kí tự khai báo với từ khoá Char
Gồm
- chữ cái ‘a’..’z’, ‘A’..’Z’
- chữ số ‘0’..’9’
- kí hiệu khác: . , ; : ! @ # $ % ^ & * ( )
Bảng mã ASCII (Americain Standard Code for
Information Interchange). ý nghĩa.
Các hàm ord(‘c’) và chr(n)
Thứ tự c1 < c2 nếu ord(‘c1’) < ord(‘c2’)
Hàm Succ và Pred
Kiểu kí tự Char
29
Kiểu đếm được và không đếm được
Kiểu đếm được:
Integer, Byte, Boolean,
Char, đoạn con, liệt kê
Kiểu vô hướng
Kiểu không đếm được:
Real
30
Khai báo hằng với mẫu
Const
Tên_hằng = Giá_trị_của_hằng;
Thí dụ:
Const
Dung=TRUE; (* Hằng Boolean *)
A=5; { Hằng số nguyên }
PI = 3.14; { Hằng số thực }
Ch=‘Z’; (* Hằng kí tự *)
Chương 3
Khai báo hằng, biến, kiểu.
Biểu thức. Câu lệnh.
31
Khai báo biến
Tên biến là tên của ô nhớ cất dữ liệu. Giá trị của
nó có thể thay đổi được.
Var
Tên_biến : Kiểu_dữ_liệu_của_biến;
Thí dụ:
Var
M23, A25, AAA: Real;
MY_NAME: String[25];
Y: Boolean;
X: Integer;
32
Biểu thức bao gồm toán tử và toán hạng.
Biểu thức số học cho ta giá trị số.
Biểu thức logic cho ta giá trị logic Bun.
Trình tự ưu tiên tính toán biểu thức
DÊu ngoÆc ( ) BiÓu thøc trong ngoÆc ®îc u tiªn nhÊt
NOT, - (dÊu trõ) C¸c phÐp to¸n mét to¸n h¹ng
*, /, DIV, MOD, AND C¸c phÐp tÝnh lo¹i nh©n, cïng møc u tiªn
+, -, OR, X OR C¸c phÐp tÝnh lo¹i céng, cïng møc u tiªn
=, , =, >, <, IN C¸c phÐp to¸n quan hÖ, cã cïng møc u tiªn
33
Thí dụ 3.3
7 + 3*5 = 7 + (3*5) = 22
5/2*3 = (5/2) * 3 = 7.5
18 DIV 4*4 = (18 DIV 4)*4 = 16
2*(3 + 5) = 16
Thí dụ 3.4: biểu thức Boolean
(100 > 76) AND ('B' < 'A')
TRUE AND FALSE
FALSE
34
Phép gán
Biến := biểu thức;
Vế trái chỉ có thể và chỉ là một tên biến.
X:=6;
X:=X+3; X= ?
X := 4*X+X*X; X= ?
M23 := 18/X*4.0+SQRT(X); M23 = ?
X+2 := 3; ?
35
Tính tương thích của các kiểu dữ liệu
Về nguyên tắc, 2 vế phải cùng kiểu dữ liệu.
Biến nguyên I không thể gán := ‘A’;
Ngoại lệ: biến thực nhận giá trị nguyên.
X:= 6;
Ngược lại một biến nguyên không thể nhận một giá
trị thực. Muốn nhận phải dùng các hàm Round
hoặc Trunc.
I := Round( SQRT(X));
36
Lệnh hợp thành Begin
Begin
BEGIN Begin
Câu lệnh 1; End;
Câu lệnh 2; Begin
........ End;
Câu lệnh N; End;
END; Begin
End;
End;
Và cấu trúc khối
lệnh
Các file đính kèm theo tài liệu này:
- ngon_ngu_lap_trinh_pascalchuong1_2_3_4903_1810340.pdf