Trong phần trước ta đã biết mỗi kiểu dữ liệu có một tập các giá trị tươngứng. Các giá trị của kiểu nguyên hay kiểu thực là các số, như 40 hay 5.72, các giá trị của kiểu ký tự là các ký tự như ‘A’hay ‘a’, còn kiểu lôgic thì chỉ có hai giá trị là True và False, ...
Quá trình xử lý trong máy tính đòi hỏi mỗi giá trị phải được lưu trữ ở một ô nhớ nàođó trong bộ nhớ của máy, và ô nhớ này được đặt một cái tênđể gọi. Khi đó mọi việc tính toán hay xử lý liên quanđến mỗi giá trị được thực hiện gián tiếp thông qua tên của ô nhớ chứa giá trị đó. Ví dụ, nếu số 5.72 được lưu trong ô nhớ có tên là x, thì biểu thức 5.72*2 có thể được viết là x*2.
Việc dùng tên x dễ nhớ và tiện hơn nhiều so với việc dùng và nhớ số 5.72.
Như vậy, khi một ô nhớ được đặt tên thì tên nàyđồng nhất với giá trị của nó. Trong một chương trình, mỗi ô nhớ có một tên duy nhất nhưng giá trị của nó thì có thể thay đổi hoặc không. Nếu giá trị của ô nhớ có thể thay đổi được thì ô nhớ này là một biến, tên của ô nhớ là tên biến, ngược lại, nếu giá trị của ô nhớ không thể thay đổi, thì ô nhớ là một hằng, tên của ô nhớ là tên hằng.
Các biến và hằng tham gia trong chương trình đều phải được khai báo. Việc khai báo có tác dụng báo trước cho máy dành sẵn các ô nhớ thích hợp trong bộ nhớ để sẵn sàng chứa dữ liệu.
5.2. Khai báo biến và khai báo hằng
Biến là đại lượng có giá trị thay đổi được trong chương trình. Cách khai báo biếnnhưsau:
Var Danhsáchtênbiến: TênKiểuDữliệu;
92
Tên biến là tự đặt, theo đúng quy tắc của một tên.
Ví dụ:
Var i, j: Integer;
x, y: Real;
Theo khai báo trên, ta có hai biến i và j cùng kiểu số nguyên (Integer), và hai biến x, y cùng kiểu số thực (Real).
Hằng là một đại lượng có giá trị không đổi trong chương trình. Cách khai báo:
Const Tên_hằng = giátrị;
Tên hằng là tự đặt, theo đúng quy tắc của một tên.
Ví dụ:
Const N = 10;
SoPi = 3.1416;
SoE = 2.718;
Turbo Pascal có sẵn một số hằng chuẩn cho phép sử dụng mà không phải khai báo, như: Pi, MaxInt. Hằng Pi có giá trị bằng số , còn MaxInt = 32767, là số Integer lớn nhất. Chẳng hạn, có thể dùng các lệnh sau:
Writeln(‘Dien tich hinh tron bkinh r = 5 la: ‘, Pi*5*5:8:3);
Writeln(‘So Integer lon nhat = ‘, MaxInt);
5.3. Biểu thức
Biểu thức là một công thức gồm có một hay nhiều thành phần được kết nối với nhau bởi các phép toán. Mỗi thành phần (hay toán hạng) có thể là hằng, là biến hay là hàm. Khi các phép toán trong biểu thức được thực hiện thì ta nhận được một giá trị gọi là kết quả của biểu thức. Kiểu dữ liệu của kết quả gọi là kiểu dữ liệu của biểu thức.
Ví dụ: 3*5 div 2+7 mod 4 là biểu thức nguyên, có kết quả là 10
2+sin(pi/2)là biểu thức thực, cókết quả là3.0 Chr(ord(‘a’)-32)là biểu thức ký tự, có kết quả là‘A’
(4+2=6) and (‘B’<>‘b’)là biểu thức lôgic, kết quả là True
‘AB’+’CD’là biểu thức chuỗi, có kết quả là‘ABCD’
Các thành phần trong biểu thức cần phải có kiểu dữ liệu phù hợp để cho các phép toán thực hiện được, nếu không máy sẽ báo lỗi. Ví dụ, biểu thức sau:
5 + ‘A’là sai vì không thể cộng số nguyên với một ký tự.
Một biểu thức có thể chứa nhiều phép toán. Thứ tự thực hiện các phép toán được cho trong bảng dưới đây:
Cấp ưu tiên Phép toán
1 biểu thức trong ngoặc đơn (...)
2 Các hàm
3 NOT, - (phép lấy dấu âm)
4 * , /, DIV, MOD, AND
5 Shl, Shr
6 +, - (trư?, OR, XOR
7 =, <>, <, <=, >, >=, IN
94
Việc tính toán một biểu thức dựa theo hai quy tắc:
Quy tắc 1:Phép toán có cấp ưu tiên nhỏ thìđược tính trước, phép toán có cấp ưu tiên lớn thìđược tính sau.
Quy tắc 2:Ðối với các phép toán đứng liền nhau và có cùng cấp ưu tiên, thì cái nàođứng trước được tính trước.
Ví dụ: Tính biểu thức số học:
(4+5)*2 div 7 + sin(pi/6)
= 9 * 2 div 7 + 0.5
= 18 div 7 + 0.5
= 2 + 0.5
= 2.5
Ví dụ: Tính biểu thức lôgic:
(2 > 4 div 2) or Not ( 49.25 + 2 < 50)
= (2 > 2) or Not ( 51.25 < 50)
= FALSE or Not FALSE
= FALSE or TRUE
= TRUE