Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.2 MB, 236 trang )
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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:
55
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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ú ý:
dấu ngoặc.
- 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
- 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.
56
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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 ******
-----------------------------------------------------------
57
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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}
58
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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
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)
59
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
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
60
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
chơng III
cấu trúc điều kiện
I. Câu lệnh ghép
Lệnh ghép là một nhóm lệnh đợc đặt giữa hai từ khoá BEGIN và END; nhằm thực hiện một
công việc cơ bản nào đó. Lệnh ghép thờng xuất hiện trong các cấu trúc chơng trình nh câu lệnh điều
kiện, cấu trúc lặp...Khi thực hiện kệnh ghép thực hiện tuần tự từng câu lệnh một theo thứ tự từ trên
xuống.
Dạng tổng quát của lệnh ghép:
BEGIN
......................
END;
II. Câu lệnh điều kiện IF.....THEN
a. Câu lệnh điều kiện có hai dạng nh sau:
Câu lệnh điều kiện thiếu:
IF <Điều kiện logic> THEN
Câu lệnh điều kiện đủ:
IF <Điều kiện logic> THEN
ELSE
b. Hoạt động:
Khi gặp lệnh này chơng trình sẽ đi kiểm tra điều kiện logic, nếu điều kiện logic là đúng sẽ đi
thực hiện
c. Sơ đồ thuật toán cho câu lệnh điều kiện đủ:
61
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
Đ
S
Điều Kiện
logic
Công việc 1
Công việc 2
d. Một số ví dụ
Ví dụ 1: Viết chơng trình giải và biện luận phơng trình bậc nhất ax+b=0
Bớc 1: Phân tích bài toán
Để giả đợc phơng trinh bậc nhất một ẩn trớc hết ta cần những thông tin sau:
- Biết đợc hệ số a và b
- Sau đó kiểm tra điều kiện của phơng trình
+ Nếu a= 0
Nếu b=0 thì phơng trình vô số nghiệm
Ngợc lại nếu b<>0 thì phơng trình vô nghiệm
+ Ngợc lại nếu a<>0 thì phơng trình có nghiệm x=-b/a
Bớc 2: Sơ đồ thuật toán
BEGIN
Nhập a,b
a=0
S
PT có nghiệm -b/a
Đ
S
b=0
PT vô nghiệm
Đ
PT vô số nghiệm
END.
Bớc 3: Chơng trình
Program PT_bac_nhat;
Var
a,b: real;
BEGIN
62
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
Write('Nhap vao he so a=');Readln(a);
Write('Nhap vao he so b=');Readln(b);
IF a=0 THEN
IF b=0 THEN
Writeln('Phuong trinh vo so nghiem')
ELSE
Writeln('Phuong trinh vo nghiem)
ELSE Writeln('Phuong trinh co nghiem x=',-b/a:6:2);
Readln;
END.
Ví dụ 2: Tìm số lớn nhất trong ba số nhập vào từ bàn phím.
Bạn đọc tự thực hiện lại các bớc 1 và bớc 2.
Bớc 3: Chơng trình
Program so_lon_nhat;
Var
a,b,c,max:real;
BEGIN
Write('Nhap so a=');Readln(a);
Write('Nhap so b=');Readln(b);
Write('Nhap so c=');Readln(c);
Max:=a;
IF Max
IF Max
Writeln('So lon nhat trong ba so la:',max:6:2);
Readln;
END.
III. Câu lệnh lựa chọn
a. Cấu trúc lệnh
CASE
Tập hằng 1:
Tập hằng 2:
..............................................
Tập hằng n-1:
Tập hằng n:
ELSE
END;
- Tập hằng bao gồm các hằng cụ thể hoặc các đoạn hằng:
63
Giáo trình Tin học Đại cơng
KS.Đặng Quang Thanh
ví dụ nh
3:
1..10:
a..z:
- Giá trị của biểu thức và giá trị trong các tập hằng phải có cùng kiểu và phải là kiểu vô hớng
đếm đợc (nh nguyên, logic, kí tự, liệt kê).
b. Hoạt động:
Khi gặp lệnh này chơng trình sẽ lấy giá trị của biểu thức đem so sánh với giá trị chứa trong
các tập hằng, nếu giá trị của biểu thức trùng với giá trị chứa trong một các tập hằng thì sẽ đi thực
hiện công việc tơng ứng với tập hằng đó và bỏ qua tất cả các công việc khác. Nếu trong tr ờng hợp
không có giá trị của tập hằng nào trùng với giá trị của biểu thức thì đi thực hiện
trong trờng hợp không có ELSE thì chơng trình thoát khỏi cấu trúc này và đi thực hiện các công việc
tiếp theo sau cấu trúc.
c. Một số ví dụ:
Ví dụ 1: Nhập vào một số từ 1 đến 5 in ra màn hình số đó bằng chữ, ví dụ nhập vào số 2 in ra
màn hình số hai
* Chơng trình
Program Vidu;
Var
a: integer;
Begin
Write('Nhap vao so a=');readln(a);
CASE a OF
1:Writeln('so do la so mot');
2:Writeln('so do la so hai');
3:Writeln('so do la so ba');
4:Writeln('so do la so bon');
5:Writeln('so do la so nam');
end;
Readln;
End.
Ví dụ 2: Viết chơng trình nhập vào một điểm kiểm tra của một học sinh từ bàn phím (điểm là
số nguyên từ 0 đến 10), in ra màn hình kết quả xếp loại của học sinh đó.
* Chơng trình
Program Vidu;
Var
a: integer;
64