1. Kiểu logic
- Từ khóa: BOOLEAN
- miền giá trị: (TRUE, FALSE).
- Các phép toán: phép so sánh (=,
<, >) và các phép toán logic: AND, OR, XOR, NOT.
Trong Pascal, khi so sánh các giá
trị boolean ta tuân theo qui tắc: FALSE < TRUE.
Giả sử A và B là hai giá trị kiểu
Boolean. Kết quả của các phép toán được thể hiện qua bảng dưới đây:
A
|
B
|
A AND
B
|
A OR B
|
A XOR
B
|
NOT A
|
TRUE
|
TRUE
|
TRUE
|
TRUE
|
FALSE
|
FALSE
|
TRUE
|
FALSE
|
FALSE
|
TRUE
|
TRUE
|
FALSE
|
FALSE
|
TRUE
|
FALSE
|
TRUE
|
TRUE
|
TRUE
|
FALSE
|
FALSE
|
FALSE
|
FALSE
|
FALSE
|
TRUE
|
2. Kiểu số nguyên
2.1. Các kiểu số nguyên
Tên kiểu
|
Phạm vi
|
Dung lượng
|
Shortint
|
-128 ® 127
|
1 byte
|
Byte
|
0 ® 255
|
1
byte
|
Integer
|
-32768
® 32767
|
2
byte
|
Word
|
0 ® 65535
|
2
byte
|
LongInt
|
-2147483648 ® 2147483647
|
4
byte
|
2.2. Các phép toán trên kiểu số nguyên
2.2.1. Các phép toán số học:
+, -, *, / (phép chia cho ra kết quả là số thực).
Phép
chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6).
Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4).
2.2.2. Các phép toán xử lý bit:
Trên các kiểu ShortInt,
Integer, Byte, Word có các phép toán:
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
3. Kiểu số thực
3.1. Các kiểu số thực:
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
|
Chú ý: Các kiểu số thực Single, Double và Extended yêu cầu phải sử dụng chung
với bộ đồng xử lý số hoặc phải biên dich chương trình với chỉ thị {$N+} để liên kết bộ giả lập số.
3.2. Các phép toán trên kiểu số thực: +,
-, *, /
Chú ý: Trên kiểu số thực không tồn tại các phép toán DIV và MOD.
3.3. Các hàm số học sử dụng cho kiểu số
nguyên và số thực:
SQR(x): Trả
về x2
SQRT(x): Trả
về căn bậc hai của x (x³0)
ABS(x): Trả
về |x|
SIN(x): Trả
về sin(x) theo radian
COS(x): Trả
về cos(x) theo radian
ARCTAN(x): Trả về
arctang(x) theo radian
LN(x): Trả
về ln(x)
EXP(x): Trả
về ex
TRUNC(x): Trả
về số nguyên gần với x nhất nhưng bé hơn x.
INT(x): Trả
về phần nguyên của x
FRAC(x): Trả
về phần thập phân của x
ROUND(x): Làm
tròn số nguyên x
PRED(n): Trả
về giá trị đứng trước n
SUCC(n): Trả
về giá trị đứng sau n
ODD(n): Cho
giá trị TRUE nếu n là số lẻ.
INC(n): Tăng n thêm 1
đơn vị (n:=n+1).
DEC(n): Giảm n đi 1
đơn vị (n:=n-1).
4. Kiểu
ký tự
- Từ khoá: CHAR.
- Kích thước: 1 byte.
- Để biểu diễn một ký tự, ta có thể
sử dụng một trong số các cách sau đây:
- Đặt ký tự trong cặp dấu nháy đơn. Ví dụ 'A',
'0'.
- Dùng hàm CHR(n) (trong đó n là mã ASCII của ký
tự cần biểu diễn). 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: =, >, >=,
<, <=,<>.
* Các
hàm trên kiểu ký tự:
- UPCASE(ch):
Trả về ký tự in hoa tương ứng với ký tự ch. Ví dụ: UPCASE('a') = 'A'.
- ORD(ch):
Trả về số thứ tự trong bảng mã ASCII của ký tự ch. Ví dụ ORD('A')=65.
- CHR(n):
Trả về ký tự tương ứng trong bảng mã ASCII có số thứ tự là n. Ví dụ:
CHR(65)='A'.
- PRED(ch):
cho ký tự đứng trước ký tự ch. Ví dụ: PRED('B')='A'.
- SUCC(ch):
cho ký tự đứng sau ký tự ch. Ví dụ: SUCC('A')='B'.
II. KHAI
BÁO HẰNG
- Hằng là một
đại lượng có giá trị không thay đổi trong suốt chương trình.
- Cú pháp:
CONST = ;
hoặc:
CONST : = ;
Ví dụ:
CONST Max = 100;
Name
= 'Tran Van Hung';
Continue
= FALSE;
Logic
= ODD(5); {Logic =TRUE}
Chú ý: Chỉ
các hàm chuẩn dưới đây mới được cho phép sử dụng trong một biểu thức hằng:
ABS CHR HI LO LENGTH ODD ORD
PTR ROUND PRED SUCC SIZEOF SWAP TRUNC
III.
KHAI BÁO BIẾN
-
Biến là một đại lượng mà giá trị của nó có thể thay đổi trong quá trình thực
hiện chương trình.
-
Cú pháp:
VAR [,,...] : ;
Ví dụ:
VAR x,
y: Real; {Khai báo hai biến x, y có kiểu
là Real}
a,
b: Integer; {Khai báo hai biến a, b có
kiểu integer}
Chú ý: Ta
có thể vừa khai báo biến, vừa gán giá trị khởi đầu cho biến bằng cách sử dụng
cú pháp như sau:
CONST : = ;
Ví dụ:
CONST x:integer = 5;
Với khai báo
biến x như trên, trong chương trình giá trị của biến x có thể thay đổi. (Điều
này không đúng nếu chúng ta khai báo x là hằng).
IV. ĐỊNH
NGHĨA KIỂU
- Ngoài các kiểu
dữ liệu do Turbo Pascal cung cấp, ta có thể định nghĩa các kiểu dữ liệu mới dựa
trên các kiểu dữ liệu đã có.
- Cú pháp:
TYPE = ;
VAR :;
Ví dụ:
TYPE Sothuc
= Real;
Tuoi
= 1..100;
ThuNgay
= (Hai,Ba,Tu, Nam, Sau, Bay, CN)
VAR x
:Sothuc;
tt
: Tuoi;
Day:
ThuNgay;
V. BIỂU
THỨC
Biểu thức (expression) là công thức
tính toán mà trong đó bao gồm các phép toán, các hằng, các biến, các hàm và các
dấu ngoặc đơn.
Ví dụ: (x +sin(y))/(5-2*x) biểu thức số học
(x+4)*2 =
(8+y) biểu
thức logic
Trong một biểu thức, thứ tự ưu tiên
của các phép toán được liệt kê theo thứ tự sau:
- Lời gọi hàm.
- Dấu ngoặc ()
- Phép toán một ngôi (NOT, -).
- Phép toán *, /, DIV, MOD, AND.
- Phép toán +, -, OR, XOR
- Phép toán so sánh =, <, >, <=, >=,
<>, IN
VI. CÂU
LỆNH
6.1. Câu
lệnh đơn giản
- Câu lệnh
gán (:=): :=;
- Các lệnh xuất
nhập dữ liệu: READ/READLN, WRITE/WRITELN.
- Lời gọi hàm,
thủ tục.
6.2. Câu
lệnh có cấu trúc
- Câu lệnh ghép:
BEGIN ... END;
- Các cấu trúc
điều khiển: IF.., CASE..., FOR..., REPEAT..., WHILE...
6.3. Các
lệnh xuất nhập dữ liệu
6.3.1.
Lệnh xuất dữ liệu
Để xuất dữ liệu ra màn hình, ta sử
dụng ba dạng sau:
(1) WRITE( [, ,...]);
(2) WRITELN( [, ,...]);
(3) WRITELN;
Các thủ tục trên có chức năng như
sau:
(1)
Sau khi xuất giá trị của các tham số ra
màn hình thì con trỏ không xuống dòng.
(2)
Sau khi xuất giá trị của các tham số ra
màn hình thì con trỏ xuống đầu dòng tiếp theo.
(3)
Xuất ra màn hình một dòng trống.
Các tham số có thể là các hằng,
biến, biểu thức. Nếu có nhiều tham số trong câu lệnh thì các tham số phải được
phân cách nhau bởi dấu phẩy.
Khi sử dụng lệnh WRITE/WRITELN, ta
có hai cách viết: không qui cách và có qui cách:
- Viết
không qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên trái. Nếu dữ
liệu là số thực thì sẽ được in ra dưới dạng biểu diễn khoa học.
Ví dụ:
WRITELN(x);
WRITE(sin(3*x));
- Viết có
qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên phải.
Ví dụ:
WRITELN(x:5);
WRITE(sin(13*x):5:2);
Câu
lệnh
|
Kết
quả trên màn hình
|
Writeln('Hello');
Writeln('Hello':10);
Writeln(500);
Writeln(500:5);
Writeln(123.457)
Writeln(123.45:8:2)
|
Hello
Hello
500
500
1.2345700000E+02
123.46
|
6.3.2.
Nhập dữ liệu
Để nhập dữ liệu từ bàn phím vào các
biến có kiểu dữ liệu chuẩn (trừ các biến kiểu BOOLEAN), ta sử dụng cú pháp sau
đây:
READLN(
[,,...,]);
Chú ý: Khi
gặp câu lệnh READLN; (không có tham số), chương trình sẽ dừng lại
chờ người sử dụng nhấn phím ENTER mới chạy tiếp.
6.4. Các
hàm và thủ tục thường dùng trong nhập xuất dữ liệu
·
Hàm KEYPRESSED: Hàm trả về giá
trị TRUE nếu như có một phím bất kỳ được nhấn, nếu không hàm cho giá trị là
FALSE.
·
Hàm READKEY: Hàm có chức năng đọc
một ký tự từ bộ đệm bàn phím.
·
Thủ tục GOTOXY(X,Y:Integer): Di
chuyển con trỏ đến cột X dòng Y.
·
Thủ tục CLRSCR: Xoá màn hình và
đưa con trỏ về góc trên bên trái màn hình.
·
Thủ tục CLREOL: Xóa các ký tự từ
vị trí con trỏ đến hết dòng.
·
Thủ tục DELLINE: Xoá dòng tại vị
trí con trỏ và dồn các dòng ở phía dưới lên.
·
Thủ tục TEXTCOLOR(color:Byte):
Thiết lập màu cho các ký tự. Trong đó color Î [0,15].
·
Thủ tục TEXTBACKGROUND(color:Byte):
Thiết lập màu nền cho màn hình.
BÀI TẬP MẪU
Bài tập
2.1: Viết chương
trình nhập vào 2 số a, b. Sau đó hoán đổi giá trị của 2 số đó:
a/
Cho phép dùng biến trung gian.
Program Swap;
Var a,b,tam: Integer;
Begin
Write('Nhap vao a= ');
Readln(a);
Write('Nhap vao b= ');
Readln(b);
tam:=a; {tam lấy giá trị của a}
a:=b; {a lấy giá trị của b}
b:=tam; {b lấy lại giá trị của tam}
Writeln('a = ',a,’ b =
‘,b);
Readln;
End.
b/ Không được
phép dùng biến trung gian.
Program Swap;
Var a,b: Integer;
Begin
Write('Nhap vao a= ');
Readln(a);
Write('Nhap vao b= ');
Readln(b);
a:=a+b; {a lấy tổng giá trị của a+b}
b:=a-b; {b lấy giá trị của a}
a:=a-b; {a lấy lại giá trị
của b}
Writeln('a = ',a,’ b =
‘,b);
Readln;
End.
BÀI TẬP TỰ GIẢI
Bài tập 2.2: Viết chương trình tách một số n thành 2 số a, b sao cho
tích P=a*b2 đạt cực đại với n được nhập vào từ bàn phím.
Gợi ý:
Gọi x là số thứ hai thì số thứ nhất
là: (n-x). Theo đề ta có: P(x) = x2.(n-x).
Hàm P đạt cực đại khi P’(x) = -3x2
+ 2nx = 0 è x =
2n/3.
Bài tập
2.3: Màn hình đồ họa của một máy tính có độ phân giải:
640x480. Biết rằng, mỗi điểm trên màn hình chiếm 1 byte. Hỏi cần bao nhiêu byte
để lưu trữ toàn bộ màn hình đồ họa đó?
Có 2 sinh viên
viết chương trình tính số byte lưu trữ màn hình đồ họa:
Program Sinhvien1;
Var a,b:integer;
s:Word;
Begin
a:=640; b:=480;
s:=a*b;
writeln(s); readln;
End.
Program Sinhvien2;
Var a,b:Word;
s: LongInt;
Begin
a:=640; b:=480;
s:=a*b;
writeln(s); readln;
End.
Hãy cho biết 2
chương trình trên cho kết quả đúng hay sai? Tại sao?
Bài tập
2.4: Màn hình đồ họa của một máy tính có độ phân giải:
640x480. Biết rằng, mỗi điểm trên màn hình chiếm 1 byte. Hỏi cần bao nhiêu byte
để lưu trữ một vùng có kích thước bằng 1/10 màn hình đồ họa đó?
Có 2 sinh viên
viết chương trình giải bài toán này như sau:
Program Sinhvien1;
Var a,b:Word;
s: LongInt;
Begin
a:=640; b:=480;
s:=a;
s:=s*b;
s:=s DIV 10;
writeln(s); readln;
End.
Program Sinhvien2;
Var a,b:Word;
s: LongInt;
Begin
a:=640; b:=480;
s:=a*b DIV 10;
writeln(s); readln;
End.
Hãy cho biết 2
chương trình trên cho kết quả đúng hay sai? Tại sao?
1 nhận xét: