Hằng là đại lợng có giá trị xác định và không thay đổi trong suốt quá trình chơng trình thực hiện. Hằng đợc khai báo bằng từ khoá CONST nh sau:
CONST
Tên hằng = giá trị hằng;
Hay CONST
Tên hằng = biểu thức hằng;
VÝ dô:
CONST
Max = 150; {hằng nguyên}
L = False; {hằng logic}
A = (5*4)/3; {hằng thực } Ch = ‘Y’; {hằng ký tự}
Chúng ta sử dụng các hằng để chơng trình đợc rõ ràng và dễ sửa đổi.
2. Khai báo biến
Biến (variable) là đại lợng mà trị của nó có thể thay đổi khi thực hiện chơng trình. Biến là tên của một vùng bộ nhớ lu trữ dữ liệu, mỗi biến phải thuộc về một kiểu dữ liệu nhất định. Vùng bộ nhớ của biến kiểu Integer chỉ chứa đợc các giá trị Integer.
Biến đợc khai báo bằng từ khoá VAR nh sau:
VAR
Tên biến: Kiểu dữ liệu của biến;
Nhiều biến có cùng kiểu có thể đợc khai báo cùng nhau bằng cách viết tên các biến đặt cách nhau dÊu phÈy.
VÝ dô:
VAR
x,y,z:Real; chọn:Char;Thoat:Boolean;
i,j:integer; ten:String[7];
Chó ý:
- Biến String khai báo tối đa là: String[255]. Một biến String đợc cấp một số byte bằng độ dài của nó cộng thêm 1. Byte đầu tiên dùng để ghi số ký tự đang đợc lu trữ, mỗi byte còn lại chứa một ký tù.
- Có thể vừa khai báo vừa khởi đầu (gán giá trị) cho các biến theo cách sau:
Const x = 25.0;
Y:Real = -5.26;
Ho_ten:String[25]=’Lê Hung’;
Trong ví dụ trên chú ý phân biệt x và y: x là hằng thực, y là biến thực. Trong chơng trình có thể thay đổi giá trị của y mà không thay đổi giá trị của x.
3. Biểu thức
Một biểu thức đợc tạo bởi các phép toán và các toán hạng dùng để thể hiện một công thức toán học. Toán hạng có thể là hằng, hàm, biến.
Ví dụ: Sau khi có khai báo:
Const Max = 120;
Var x: Integer;
Ta có thể viết biểu thức sau: 5+ Max * Exp(x);
trong đó + và * là hai phép toán, các hằng số 5, Max, Exp(x) là các toán hạng.
Chú ý: Một hằng, một biến, một hàm cũng đợc xem là biểu thức, đó là biểu thức đơn giản.
Các phép toán trong biểu thức đợc sắp xếp theo thứ tự u tiên sau:
- Các phép toán một ngôi đợc u tiên thứ nhất: dấu dơng (+), dấu âm (-), phép phủ định (not).
- Các phép toán nhân chia: phép nhân (*), phép chia (/), lấy phần nguyên (div), lấy phần d (mod), phép và (and).
- Các phép cộng trừ: cộng (+), trừ (-), phép hoặc (or) . - Các phép so sánh: <, <=, >, >=, =, <>.
Chó ý:
- Biểu thức trong ngoặc nếu có sẽ đợc thực hiện trớc khi xét đến các phép toán ở cạnh dấu ngoặc.
- Nếu cùng một thứ tự u tiên thì toán tử đợc thực hiện từ trái qua phải.
VÝ dô:
a) 3+5*3=18, (3+5)*3=24, 5/2*3=7.5 b) (5+2>4) and not (true or (5-3=8)) c) (-b+sqrt(d))/2*a có nghĩa là 4. Câu lệnh
Dới phần khai báo dữ liệu là phần lệnh của chơng trình. Phần này xác định các công việc mà ch-
ơng trình phải thực hiện để xử lý các dữ liệu đã đợc khai báo. Câu lệnh đợc chia ra làm hai loại:
- Câu lệnh đơn giản:
Lệnh gán ( := )
Lệnh Nhập – Xuất ( READ, WRITE ) Gọi Thủ tục
Lệnh nhảy ( GOTO) - Câu lệnh có cấu trúc:
Lệnh ghép ( BEGIN..END ) Lệnh lựa chọn (IF, CASE)
Lệnh lặp (FOR, REPEAT, WHILE) 5. Câu lệnh gán
Lệnh gán dùng để gán giá trị của một biểu thức cho mộ biến. Lệnh gán có dạng:
Biến:= biểu thức;
Sự thực hiện: đầu tiên máy tính trị của biểu thức vế phải sau đó nó gán giá trị tính đ ợc cho biến ở vế trái.
Chó ý:
- Vế trái của phép gán chỉ và chỉ có thể là biến mà thôi. Ví dụ viết x+y:=7 là sai vì vế trái phép gán là một biểu thức chứ không phải là biến.
- Kiểu của biểu thức phải trùng với kiểu của biến, trừ trờng hợp một biến thực có thể nhận giá trị nguyên.
Ví dụ: Sau khi đã khai báo:
Var
c1, c2: char; i,j: integer; x,y: real;
thì có thể thực hiện các phép gán sau:
c1:= ‘B’; c2:=chr(7);
i:= (23+6)*2 mod 3;
j:= round(20/3);
x:=0.5; y:=1;
6. Lệnh in dữ liệu ra màn hình
Lệnh này cho phép chơng trình in lên màn hình các dữ liệu, kết quả hay các thông báo cần thiết.
Cú pháp:
WRITE ( Biểu thức 1,...., Biểu thức thứ n ); (1) WRITELN( Biểu thức 1,...., Biểu thức thứ n); (2)
WRITELN; (3)
Dạng (1): in lên màn hình giá trị các biểu thức tại vị trí hiện hành của con trỏ theo thứ tự viết trong lệnh và sau lệnh này con trỏ ở vị trí sau giá trị của biểu thức thứ n.
Dạng (2): in lên màn hình giá trị các biểu thức tại vị trí hiện hành của con trỏ theo thứ tự viết trong lệnh và sau đó đa con trỏ về đầu dòng mới.
Dạng (3): đa con trỏ về đầu dòng mới.
VÝ dô:
Var A,B: Byte;
BEGIN
A:=2; B:=4;
Write( ‘ Day la ket qua cua phep nhan A voi B:’,A*B);
Writeln(‘******’);
Write(‘--- ‘);
END.
Kết quả trên màn hình sau khi chạy chơng trình:
Day la ket qua cua phep nhan A voi B: 8 ******
---
Có hai dạng viết trong thủ tục WRITE và WRITELN là viết có quy cách và viết không có quy cách. Chúng sẽ đợc xét cụ thể với từng kiểu dữ liệu.
a)Ví dụ về dạng viết không quy cách:
USES Crt;
Var
I: Integer; R: Real; Ch: Char; B: Boolean;
BEGIN
I:= 123; R:=123.456; Ch:=’D’; B:=2<5;
Writeln(I); {1}
Writeln(R) {2}
Writeln(3.14) {3}
Writeln(20*2.5) {4}
Writeln;
Writeln(Ch); {5}
Writeln(B); {6}
Writeln(#7); {7}
END.
Cách viết không quy cách sẽ căn lề theo bên trái.
- Số nguyên đợc viết ra với số chỗ đúng bằng số chữ số gán vào, kể từ vị trí bên trái. Lệnh {1} in ra: 123.
- Số thực đợc viết ra với trình tự sau: một dấu cách, một số phần nguyên, dấu chấm, 10 chỗ phần thập phân, chữ E, dấu của phần mũ, hai số biểu diễn giá trị phần mũ. Các lệnh {2}, {3},{4} in ra các số 1.2345600000E+02, 3.1400000000E+00, 5.0000000000E+01.
- Kiểu ký tự in bình thờng, một ký tự chiếm một chỗ. Lệnh {5} in ra: D.
- Kiểu Boolean đợc viết ra từ TRUE hay FALSE. Lệnh {6} in ra: TRUE.
- Lệnh {7}: chuông kêu.
b) Ví dụ về dạng viết có quy cách Var
I: integer; R: Real; Ch: Char; B: Boolean;
BEGIN
I:=123; R:=123.456; Ch:=’D’; B:=2<5; Z:=543621.342;
Writeln(I:8); {1}
Writeln(-23564:8); {2}
Writeln(R:12:6); {3}
Writeln(35.123456789:12:6); {4}
Writeln(R:12); {5}
Writeln(Ch:5); {6}
Writeln(‘ABC’:5); {7}
Writeln(B:7); {8}
Writeln(Z:1:2); {9}
END.
Cách viết quy các sẽ căn theo lề phải, nếu thừa chỗ thì phần bên trái bỏ trắng.
- Lệnh {1}, {2} dành 8 ký tự trên màn hình để in các số nguyên.
- Lệnh{3},{4} dành 12 ký tự trên màn hình để in các số thực với 6 số lẻ phần thập phân, kết quả in 123.456000, 35.123457 ( phần thập phân > 6 chỗ nên đợc làm tròn).
- Lệnh {5} in giá trị của R với số chỗ 12 dới dạng mũ: 1.23456E+02.
- Lệnh {6}, {7} dành 5 chỗ để in chữ D và xâu ký tự ABC.
- Lệnh {8} dành 7 ký tự để in TRUE.
- Trong lệnh in một số thực Write(Z:m:n) nếu m<n thì số thực Z đợc in với n số lẻ, còn số chỗ trên màn hình thì tuỳ vào độ dài của số Z, máy sẽ dành đủ chỗ để in số Z. Lệnh {9} sẽ in ra:
543621.34. Trong trờng hợp m > n , nếu độ dài của số lớn hơn m thì số bị cắt.
Chú ý: Vì dấu ‘ đợc dùng để đánh dấu ký tự, do đó khi muốn viết nó ta viết hai lần dấu ‘. Ví dô: Write(‘ Dung quen toi!’);
Sẽ cho kết qua trên màn hình:
Dung quen toi!
7. Lệnh nhập dữ liệu
READLN(Biến 1,..., Biến thứ n); (1)
READLN; (2)
Dạng (1): Khi thực hiện lệnh này, máy tính sẽ dừng lại đợi ngời sử dụng da vào (từ bàn phím) đủ n dữ liệu cho n biến tơng ứng.
Dạng (2): dùng để tạm dừng chơng trình, muốn chạy tiếp thì nhấn Enter.
Chó ý:
- Các biến ở đây thuộc kiểu nguyên, thực, ký tự hay xâu ký tự. Do đó chỉ có thể nạp từ bàn phím các giá trị số và ký tự. Sẽ là một ý đồ sai nếu ta định nạp vào giá trị TRUE hay FALSE cho mét biÕn Boolean.
- Dữ liệu gõ vào từ bàn phím tơng ứng với biến 1, biến 2, ., biến thứ n và đ… ợc tách riêng bằng một hay vài dấu cách. Sau khi dữ liệu đợc vào ta ấn phím Enter để máy thực hiện lệnh. Các dữ
liệu vào phải phù hợp với kiểu tơng ứng.
8. Một số hàm cơ bản trong Turbo Pascal SQRT(x): Hàm căn bậc hai của x
SQR(x): Hàm bình phơng của một số nguyên hay thực ABS(x): Hàm trị tuyệt đối của x
SIN(x): Tính giá trị sin(x) với x là radian COS (x): Tính giá trị Cos(x) với x là radian ARCTAN(x): Hàm tính giá trị Arctg(x)
LN(x): Hàm Lôga cơ số e=2.718 EXP(x): Hàm tính ex
TRUNC(x): Cắt bỏ phần lẻ thập phân của x nếu có ROUND(x):Cho số nguyên gần x nhất
PRED(x): Cho giá trị đi trớc x . Ví dụ: PRED(1) cho giá trị 0 SUCC(x): cho giá trị đi sau x. Ví dụ: SUCC(1) cho giá trị 2 ORD(ch): Cho số thứ tự của ký tự ch trong bảng mã.
CHR(n): Trả về ký tự có số thứ tự n trong bảng mã.
ODD(n): Cho kết quả true nếu n lẻ, False nếu ngợc lại
chơng III