Tải bản đầy đủ (.pdf) (35 trang)

Tài liệu bồi dưỡng HSG Turbo Pascal THCS (Rất hay)

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, 35 trang )

Tài liệu bồi dưỡng HSG Turbo Pascal THCS

TÀI LIỆU BỒI DƯỠNG HSG TURBO PASCAL THCS
A – MỘT SỐ VẤN ĐỀ CƠ BẢN TRONG TURBO PASCAL
I. Một số khái niệm cơ bản trong Pascal
1. Các tập tin cần thiết khi lập trình với Turbo Pascal
* Để lập trình được với Turbo Pascal, tối thiểu cần 2 file sau:
TURBO.EXE: Dùng để soạn thảo và dịch chương trình.
TURBO.TPL: Thư viện chứa các đơn vị chuẩn để chạy với TURBO.EXE.
* Ngoài ra, muốn lập trình đồ hoạ thì phải cần thêm các tập tin:
GRAPH.TPU: Thư viện đồ hoạ.
*.BGI: Các file điều khiển các loại màn hình tương ứng khi dùng đồ hoạ.
*.CHR: Các file chứa các font chữ đồ họa.
2. Các bước cơ bản khi lập một chương trình Pascal
Bước 1: Soạn thảo chương trình.
Bước 2: Dịch chương trình (nhấn phím F9), nếu có lỗi thì phải sửa lỗi.
Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).
3. Cấu trúc chung của một chương trình Pascal
{Phần tiêu đề}
PROGRAM Tên_chương_trình;
{Phần khai báo}
USES ......;
CONST .....;
TYPE .......;
VAR
........;
PROCEDURE ............;
FUNCTION ..............;
...............
{Phần thân chương trình}
BEGIN


...........
END.
4. Một số phím chức năng thường dùng
F2: Lưu chương trình đang soạn thảo vào đĩa.
F3: Mở file mới hoặc file đã tồn tại trên đĩa để soạn thảo.
Alt-F3: Đóng file đang soạn thảo.
Alt-F5: Xem kết quả chạy chương trình.
F8: Chạy từng câu lệnh một trong chương trình.
F9: Dịch lỗi chương trình.
Ctrl-F9: Chạy chương trình.
Alt-X: Thoát khỏi Turbo Pascal.
Alt - <Số thứ tự của file đang mở>: Dịch chuyển qua lại giữa các file đang mở.
F10: Vào hệ thống Menu của Pascal.

II. Các kiểu dữ liệu cơ bản
1. Số nguyên và các kiểu mở rộng
a) Các kiểu số nguyên
Tên kiểu
Shortint
Byte


Phạm vi
-128  127
0  255

Dung lượng
1 byte
1 byte
Trang 1/35



Tài liệu bồi dưỡng HSG Turbo Pascal THCS
2 byte
Integer
-32768  32767
2 byte
Word
0  65535
4 byte
LongInt -2147483648  2147483647
b) Các phép toán trên kiểu số nguyên
+, -, *, / (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).
Các phép so sánh: =; <>; >; <; >=; <=.
2. Số thực và các kiểu mở rộng
a) Các kiểu số thực
Tên kiểu
Phạm vi
Dung lượng
-45
+38
Single
4 byte
1.510  3.410
6 byte
Real
2.910-39  1.710+38
-324

+308
8 byte
Double
5.010  1.710
10 byte
Extended
3.410-4932  1.110+4932
b) Các phép toán trên kiểu số thực:
+, -, *, /
Các phép so sánh.
Chú ý: Trên kiểu số thực không tồn tại các phép toán DIV và MOD.
c) 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ề giá trị tuyệt đối của x.
SIN(x): Trả về sin(x) theo radian
COS(x):
Trả về cos(x) theo radian
TRUNC(x):Trả về phần nguyên (kiểu longint) của số thực x.
INT(x):
Trả về phần nguyên (kiểu real) của số thực x.
FRAC(x): Trả về phần thập phân (kiểu real) của số thực x.
ROUND(x): Làm tròn số nguyên x đến phần nguyên.
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ị (tương đương n:=n+1).
DEC(n):
Giảm n đi 1 đơn vị (tương đương n:=n-1).
3. Kiểu logic
- Từ khóa: BOOLEAN
- Miền giá trị: Chiếm 1 byte, chỉ gồm 2 giá trị là TRUE hoặc 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
TRUE
TRUE
FALSE
FALSE



B
TRUE
FALSE
TRUE
FALSE

A AND B
TRUE
FALSE
FALSE

FALSE

A OR B
TRUE
TRUE
TRUE
FALSE

NOT A
FALSE
FALSE
TRUE
TRUE

Trang 2/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
4. Kiểu ký tự (Char)
- Từ khoá: CHAR.
- Kích thước: 1 byte.
- Mã ASCII (American Standard Code For Information Interchange) của một số ký tự:

Ký tự

Ký tự

Ký tự
13
ENTER

65
A
97
a
32
SPACE
66
B
98
B
48
0
...
...
...
...
49
1
90
Z
122
z
...
...
57
9
- Để 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'.

III. Các kiểu khai báo trong Pascal
1. Khai báo hằng
- Hằng là một đại lượng có giá trị không thay đổi trong suốt quá trình thực hiện
chương trình.
- Cú pháp:
CONST <Tên hằng> = <Giá trị>;
2. 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 <Tên biến 1>[,<Tên biến 2>,...] : <Kiểu dữ liệu>;
3. Đị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 <Tên kiểu> = <Mô tả kiểu>;
VAR <Tên biến>:<Tên kiểu>;

B – CÁC CẤU TRÚC ĐIỀU KHIỂN TRONG TURBO PASCAL
I. Cấu trúc rẽ nhánh IF

1. Cấu trúc rẽ nhánh dạng thiếu
- Cú pháp: IF <Điều kiện> THEN <Câu lệnh>;
- Chú ý:


Trang 3/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
Điều kiện phải là một biểu thức Logic. Điều kiện có thể ở dạng đơn giản (=, < <=, >,
>=, <>) hoặc có thể ở dạng phức hợp (có sử dụng các phép toán Logic: AND, OR, NOT).
Câu lệnh sau THEN chỉ được thực hiện khi điều kiện đúng. Câu lệnh có thể là câu lệnh
đơn hoặc câu lệnh ghép. Nếu là câu lệnh ghép thì nằm trong cặp từ khóa BEGIN ... END.
2. Cấu trúc rẽ nhánh dạng đủ
- Cú pháp: IF <Điều kiện> THEN <Câu lệnh 1> ELSE <Câu lệnh 2>;
- Chú ý: Nếu điều kiện đúng thì thực hiện câu lệnh 1, nếu sai thì thực hiện câu lệnh 2.
Câu lệnh rẽ nhánh dạng đủ luôn thực hiện được.

II. Câu lệnh rẽ nhánh CASE
* Cú pháp
Dạng 1
CASE B OF
Const 1: S1;
Const 2: S2;
...
Const n: Sn;
END;

Dạng 2
CASE B OF

Const 1: S1;
Const 2: S2;
...
Const n: Sn;
ELSE Sn+1;
END;

Trong đó:
B: Biểu thức kiểu vô hướng đếm được như kiểu nguyên, kiểu logic, kiểu ký tự, kiểu
liệt kê.
Const i: Hằng thứ i, có thể là một giá trị hằng, các giá trị hằng (phân cách nhau bởi
dấu phẩy) hoặc các đoạn hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu và giá trị
cuối).
Giá trị của biểu thức và giá trị của tập hằng i (i=1, n) phải có cùng kiểu.
* Khi gặp lệnh CASE, chương trình sẽ kiểm tra:
- Nếu giá trị của biểu thức B nằm trong tập hằng const i thì máy sẽ thực hiện lệnh Si tương
ứng.
- Ngược lại:
+ Đối với dạng 1: Không làm gì cả.
+ Đối với dạng 2: thực hiện lệnh Sn+1.

III. Câu lệnh lặp FOR ... DO
1. Dạng tiến
FOR <biến đếm>:=<giá trị đầu> TO <giá trị cuối> DO <câu lệnh>;
2. Dạng lùi
FOR <biến đếm>:=<giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh>;
Chú ý:
- Biến đếm, giá trị đầu, giá trị cuối phải có cùng kiểu dữ liệu và phải là kiểu vô hướng
đếm được: số nguyên, ký tự, logic, liệt kê.
- Số lần lặp = giá trị cuối – giá trị đầu + 1.

- Khi sử dụng câu lệnh lặp FOR cần chú ý: Không nên tuỳ tiện thay đổi giá trị của biến
đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm.

IV. Câu lệnh lặp WHILE ... DO
* Cú pháp:
WHILE <điều kiện> DO <câu lệnh>;
- Lệnh While thực hiện lệnh khi điều kiện đúng.


Trang 4/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
- Mọi vòng lặp For ... do đều có thể thay thế bằng vòng lặp while ... do.
- Trong vòng lặp while nhất thiết phải có một câu lệnh làm thay đổi điều kiện lặp. Nếu
không có sẽ dẫn đến trường hợp lặp vô hạn. Chương trình chạy mãi mà không có lối ra
(Không thoát ra khỏi vòng lặp được).

V. Câu lệnh lặp REPEAT ... UNTIL
* Cú pháp:
REPEAT
<Câu lệnh>;
UNTIL <Điều kiện>;
- Câu lệnh lặp Repeat thực hiện lệnh sau đó mới kiểm tra điều kiện. Nếu điều kiện
đúng thì thoát khỏi vòng lặp.
- Mọi vòng lặp For ... do đều có thể thay thế bằng vòng lặp Repeat ... Until.
* SO SÁNH ĐẶC ĐIỂM CỦA CÁC VÒNG LẶP FOR, WHILE, REPEAT
1. Điều kiện lặp
 Với vòng lặp FOR thì điều kiện lặp đã biết trước, còn vòng lặp While và Repeat thì
chưa biết trước.

 So sánh While với Repeat. Với vòng lặp While, điều kiện lặp được xét trước hành
động. Với vòng lặp Repeat thì hành động được thực hiện rồi mới xét điều kiện lặp.
 FOR: Thực hiện cho đến điều kiện biết trước.
 WHILE: Điều kiện lặp xét trước, đúng thì thực hiện.
 REPEAT: Điều kiện lặp xét sau, đúng thì dừng.
Chú ý: Khi viết vòng lặp, cần cân nhắc giữa While và Repeat để chọn cho phù hợp.
2. Điều kiện thoát
 Đối với vòng lặp FOR: Khi giá trị của biến điều khiển bằng giá trị cuối, thực hiện
xong rồi thoát.
 Với vòng lặp WHILE: Khi điều kiện sai sẽ thoát khỏi vòng lặp.
 Với vòng lặp REPEAT: Khi điều kiện đúng thì sẽ thoát khỏi vòng lặp.

C – CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG TURBO PASCAL
I. Mảng một chiều
1. Định nghĩa, khai báo mảng một chiều
a) Định nghĩa
- Mảng một chiều là một danh sách có thứ tự và hữu hạn các phần tử có cùng một kiểu
dữ liệu.
b) Cách khai báo
- Khai báo trực tiếp:
VAR <Tên biến mảng> : ARRAY [Chỉ số] OF <Kiểu phần tử>;
- Khai báo gián tiếp:
TYPE <Tên kiểu mảng> = ARRAY [Chỉ số] OF <Kiểu phần tử>;
VAR <Tên biến mảng> : <Tên kiểu mảng>;
* Trong đó:
- Kiểu phần tử là kiểu dữ liệu chung cho từng phần tử trong mảng.
- Chỉ số là một kiểu vô hướng đếm được có hữu hạn phần tử. Đồng thời chỉ số còn
quy định số phần tử tối đa của mảng.
2. Vào, ra mảng một chiều
- Chúng ta không thể truy xuất thẳng biến mảng mà phải truy xuất từng phần tử của

mảng.


Trang 5/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
- Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k].
- Tuy nhiên, hai biến mảng cùng kiểu có thể gán trực tiếp cho nhau.
3. Sắp xếp trên mảng một chiều
a) Sắp xếp kiểu chọn trực tiếp
For i:=1 to n-1 do
For j:=i+1 to n do
If a[j] < a[i] Then
Begin
Tam:=a[i];a[i]:=a[j];a[j]:=tam;
End;

b) Sắp xếp nổi bọt
For i:=2 to n do
For j:=n downto i do
If a[j] < a[j-1] Then
Begin
Tam:=a[j];a[j]:=a[j-1];a[j-1]:=Tam;
End;

4. Tìm kiếm trên mảng
a) Tìm kiếm tuần tự
Found:=False;
For i:=1 to n do

If a[i]=x then Found:=true;

b) Tìm kiếm nhị phân (mảng đã được sắp xếp tăng dần hoặc giảm dần)
Found:=False; d:=1; c:=n;
While (d<=c) and not found Do
Begin
M:=(d + c) div 2;
If x > a[m] Then d:=m+1
Else if x < a[m] then c:=m-1
else found:=true;
End;

II. Mảng hai chiều
1. Định nghĩa, khai báo mảng hai chiều
a) Định nghĩa
- Mảng hai chiều là một phân bố hai chiều gồm m hàng và n cột các phần tử có cùng
một kiểu dữ liệu.
b) Cách khai báo
- Khai báo trực tiếp:
VAR <Tên biến mảng> : ARRAY [Chỉ số hàng, chỉ số cột] OF <Kiểu phần tử>;
- Khai báo gián tiếp:
TYPE <Tên kiểu mảng> : ARRAY [Chỉ số hàng, chỉ số cột] OF <Kiểu phần tử>;
VAR <Tên biến mảng> : <Tên kiểu mảng>;
* Trong đó:
- Cũng giống như mảng một chiều, kiểu phần tử là kiểu dữ liệu chung cho từng
phần tử trong mảng.
- Chỉ số hàng, chỉ số cột là một kiểu vô hướng đếm được có hữu hạn phần tử.
2. Vào, ra mảng hai chiều
- Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M[i,j].


III. Kiểu xâu ký tự
1. Định nghĩa, khai báo xâu ký tự


Trang 6/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
a) Định nghĩa: Xâu ký tự là một kiểu dữ liệu nửa cấu trúc, biểu diễn một danh sách có thứ
tự các ký tự trong bảng ký tự của ngôn ngữ đang sử dụng.
Xâu ký tự được gọi là kiểu dữ liệu nửa cấu trúc vì nó có thể coi là một mảng một
chiều các ký tự kiểu CHAR, nhưng nó có thể đọc hoặc ghi tất cả một biến kiểu xâu ký tự.
b) Cách khai báo: Có hai cách khai báo:
* Khai báo trực tiếp:
VAR Tên biến : STRING[Max];
* Khai báo gián tiếp:
TYPE TênKiểu = STRING[Max];
VAR Tên biến : TênKiểu;
Trong đó Max là số ký tự tối đa có thể chứa trong chuỗi (0 < Max < 256). Nếu không có
khai báo [Max] thì số ký tự mặc định trong chuỗi là 255.
2. Các phép toán trên xâu ký tự
a) Phép gán
- Có thể khởi tạo một chuỗi ký tự cho một biến xâu hoặc gán hai biến xâu ký tự cho nhau.
- Các ký tự trong xâu có thể truy nhập thông qua vị trí giống như mảng một chiều.
b) Phép cộng xâu (+)
c) Phép so sánh: =, <>, <, <=, >, >=.
Phép so sánh hai xâu ký tự dựa vào phép so sánh mã ASCII của hai ký tự khác nhau
đầu tiên tính từ trái sang phải trên hai xâu đó. (Theo thứ tự từ điển).
3. Truy xuất dữ liệu kiểu xâu ký tự
- Có thể sử dụng các thủ tục xuất nhập Write, Writeln, Read, Readln để truy xuất các biến

kiểu String.
- Nếu xâu s có độ dài n thì phép duyệt một lần trên xâu s tổng quát như sau:
For i:=1 to n do
If <s[i] thỏa mãn điều kiện> then <Xử lý s[i]>
4. Các hàm và thủ tục trên xâu ký tự
- Hàm LENGTH(st): Cho biết độ dài hay số ký tự của xâu st
- Hàm COPY(st, i, n): Lấy ra một xâu con từ trong xâu St có độ dài n ký tự bắt đầu từ vị trí i.
- Hàm POS(x, st) Kiểm tra xâu con x có nằm trong xâu St hay không? Nếu xâu x nằm trong
xâu St thì hàm trả về vị trí đầu tiên của xâu con x trong xâu St, ngược lại hàm trả về giá trị 0.
POS(“Pascal”,st) sẽ cho kết quả là 7.
- Thủ tục DELETE(st, i, n): Xoá trong xâu St n ký tự bắt đầu từ vị trí i.
- Thủ tục INSERT(x, st, i): Chèn xâu x vào xâu St bắt đầu tại vị trí i.
- Thủ tục STR(n; st): Đổi số nguyên hay thực n thành dạng xâu ký tự, kết quả lưu vào biến st.
- Thủ tục VAL(St, n, i): Đổi xâu số St thành số và gán kết quả lưu vào biến n. Nếu việc
chuyển đổi thành công thì biến i có giá trị là 0, ngược lại biến i có giá trị khác 0 (vị trí của
lỗi).

IV. Kiểu bản ghi
1. Định nghĩa
- Bản ghi (Record) là một kiểu dữ liệu có cấu trúc bao gồm các thành phần có thể có
các kiểu dữ liệu khác nhau gọi là các trường (Fields).
- Bản ghi được sử dụng để biểu diễn các đối tượng có nhiều thuộc tính khác nhau. Ví
dụ như đối tượng học sinh với các thuộc tính: họ tên, ngày sinh, địa chỉ, điểm thi; đối tượng
hàng hóa bao gồm các thuộc tính: tên hàng, loại hàng, số lượng, đơn giá, …
2. Khai báo biến bản ghi
2.1 Khai báo gián tiếp
TYPE <Tên kiểu> = Record
<Tên trường 1>: <Kiểu dữ liệu 1>;
<Tên trường 2>:<Kiểu dữ liệu 2>;



Trang 7/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
….
<Tên trường n>:<Kiểu dữ liệu n>;
End;
VAR <Tên biến>:<Tên kiểu>;
2.2 Khai báo trực tiếp
VAR <Tên biến>:RECORD
<Tên trường 1>:<Kiểu dữ liệu 1>;
<Tên trường 2>:<Kiểu dữ liệu 2>;
….
<Tên trường n>:<Kiểu dữ liệu n>;
End;
* Chú ý:Kiểu dữ liệu của một trường cũng có thể là một kiểu bản ghi đã định nghĩa trước
đó.
3. Xuất nhập dữ liệu kiểu Record
Không thể dùng các thủ tục xuất/nhập, các phép toán so sánh đối với các biến kiểu
record mà chỉ có thể sử dụng thông qua từng truờng của biến record đó.
3.1 Truy nhập trực tiếp:
<Tên biến>.<Tên trường>
* Chú ý: Nếu bản thân một trường cũng là một biến bản ghi thì phải truy nhập đến trường
của nó sau dấu chấm.
3.2 Sử dụng câu lênh WITH
WITH <Tên biến> DO
BEGIN
Xử lý trường 1;
Xử lý trường 2;

...
Xử lý trường n;
END;
4. Các phép toán
- Hai biến bản ghi cùng kiểu có thể gán cho nhau.
- Các phép toán áp dụng cho các trường của một biến bản ghi phụ thuộc vào kiểu dữ liệu
của trường đó.

D – CHƯƠNG TRÌNH CON
1. Định nghĩa
- Chương trình con (CTC) là một đoạn chương trình thực hiện trọn vẹn hay một chức
năng nào đó.
- Chương trình con về mặt bản chất cũng như một chương trình bình thường. Về mặt
hình thức, ngoài phần khai báo (có thể có hoặc không) và phần thân chương trình thì
chương trình con phải có tên gọi. Ngoài ra khi thực hiện, chương trình con không trực tiếp
chạy được mà chỉ thực hiện khi có một chương trình khác gọi nó thông qua tên của nó.
- Có hai loại chương trình con: Thủ tục (Procedure) và Hàm (Function).
* Thủ tục (Procedure): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó.
Cách xây dựng thủ tục:
PROCEDURE Tên_thủ_tục (Khai báo các tham số);
Khai báo địa phương
Begin
Các lệnh của thủ tục;
End;


Trang 8/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS

* Hàm (Function): Trả về một giá trị nào đó (có kiểu vô hướng, kiểu string). Hàm có thể sử
dụng trong các biểu thức.
Cách xây dựng hàm:
FUNCTION Tên_hàm (Khai báo các tham số): Kiểu_dữ_liệu_hàm;
Khai báo địa phương;
Begin
Các lệnh của hàm;
Tên_hàm := Biểu thức cần tính;
End;
Ngoài ra trong Pascal còn cho phép các CTC lồng vào nhau.
2. Cấu trúc chung của một chương trình có sử dụng chương trình con:
PROGRAM Tên_chương_trình;
USES CRT;
CONST ............;
TYPE ............;
VAR
............;
PROCEDURE THUTUC[(Các tham số)];
[Khai báo Const, Type, Var]
BEGIN
..............
END;
FUNCTION HAM[(Các tham số)]:<Kiểu dữ liệu>;
[Khai báo Const, Type, Var]
BEGIN
..............
HAM:=<Giá trị>;
END;
BEGIN {Chương trình chính}
...................

THUTUC[(...)];
...................
A:= HAM[(...)];
...................
END.
Chú ý: Trong quá trình xây dựng CTC, khi nào thì nên dùng thủ tục/hàm?
Dùng hàm
Dùng thủ tục
- Kết quả của bài toán - Kết quả của bài toán không
trả về 1 giá trị duy nhất trả về giá trị nào hoặc trả về
(kiểu vô hướng, kiểu nhiều giá trị hoặc trả về kiểu
string).
dữ liệu có cấu trúc (Array,
Record, File).
- Lời gọi CTC cần nằm - Lời gọi CTC không nằm
trong các biểu thức tính trong các biểu thức tính toán.
toán.



Trang 9/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
3. Biến toàn cục và biến địa phương
* Biến toàn cục: là các biến được khai báo trong chương trình chính. Các biến này có tác
dụng ở mọi nơi trong toàn bộ chương trình.
* Biến địa phương: là các biến được khai báo trong các CTC. Các biến này chỉ có tác dụng
trong phạm vi CTC đó mà thôi.
Chú ý: Trong một CTC, nếu biến toàn cục trùng tên với biến địa phương thì biến địa

phương được ưu tiên hơn.
4. Tham biến và tham trị
* Tham trị: Là tham số nhưng không được khai báo sau từ khóa VAR. Tham trị vẫn giữ
nguyên giá trị đầu vào khi ra khỏi chương trình con,mặc dù nó bị thay đổi giá trị trong thân
chương trình con đó.
* Tham biến: Là tham số được khai báo sau từ khóa VAR. Tham biến giữ lại giá trị đã bị
chương trình con làm thay đổi khi ra khỏi chương trình con.
* Chú ý: Khi ta không có ý định thay đổi giá trị của tham số trong thân hàm hay thủ tục thì
tham số đó là tham trị. Ngược lại, nếu ta có ý định gọi một hàm hay thủ tục với ý đồ tính
toán và giữ lại kết quả của tham số truyền vào thì tham số đó khai báo là tham biến.
5. Đệ quy
a) Định nghĩa: Trong một chương trình, một CTC có thể gọi một CTC khác vào làm việc.
Nếu như CTC đó gọi lại chính nó thì gọi là sự đệ qui.
b) Phương pháp thiết kế giải thuật đệ qui
- Tham số hóa bài toán
- Tìm trường hợp suy biến.
- Phân tích các trường hợp chung (đưa về các bài toán cùng loại nhưng nhỏ hơn).

E – DỮ LIỆU KIỂU FILE
1. Khai báo
VAR <Tên biến file>:Text;
2. Các thủ tục và hàm chuẩn trên file
2.1. Gán tên file
Cú pháp: Assign(F,Tên file);
Chức năng: Gán một file trên đĩa cho biến file F, mọi truy xuất trên file cụ thể được
thực hiện thông qua biến file này.
Chú ý:
Tên file bao gồm cả tên ổ đĩa và đường dẫn nếu file không nằm trong ổ đĩa, thư mục
hiện thời.
2.2. Mở file mới

Cú pháp: Rewrite(F);
Chức năng: Tạo file mới có tên đã gán cho biến file F. Nếu file đã có trên đĩa thì mọi
dữ liệu trên đó sẽ bị xoá và con trỏ file trỏ ở vị trí đầu tiên của file.
2.3. Mở file đã có trên đĩa
Cú pháp: Reset(F);
Chức năng: Mở file có tên đã gán cho biến file F. Nếu file chưa có trên đĩa thì chương
trình sẽ dừng vì gặp lỗi xuất/nhập.
2.4. Đọc dữ liệu từ file
* Cú pháp: Read(F,x);
Chức năng: Đọc một phần tử dữ liệu từ file F ở vị trí con trỏ file và gán cho biến x.
* Cú pháp: Readln(F,x);



Trang 10/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
Chức năng: Đọc một dòng từ vị trí con trỏ file và gán cho biến x. Thực hiện xong,
con trỏ file sẽ chuyển về đầu dòng tiếp theo. Biến x có thể nhận các kiểu: Char, String hoặc
kiểu số.
* Cú pháp Readln(f);
Chức năng: Vẫn đọc dòng hiện tại nhưng không đọc dữ liệu ra biến nào mà chuyển
con trỏ tệp xuống dòng dưới.
2.5. Ghi dữ liệu lên file
* Cú pháp: Write(F, x);
Chức năng: Ghi giá trị x vào file F tại vị trí hiện thời của con trỏ file.
* Cú pháp: Writeln(F, x);
Chức năng: Ghi giá trị x vào file F ở vị trí con trỏ file. Kết thúc thủ tục, con trỏ file sẽ
chuyển về đầu dòng sau.

* Cú pháp: Writeln(F);
Chức năng: Ghi dữ liệu rỗng vào dòng hiện tại và chuyển con trỏ tệp về đầu dòng
dưới.
2.6. Đóng file
Cú pháp: Close(F);
Chức năng: Cập nhật mọi sửa đổi trên file F và kết thúc mọi thao tác trên file này.
2.7. Xoá file
Cú pháp: Erase(F);
Chức năng: Xoá file trên đĩa có tên đã được gán cho biến file F (file cần xoá là file
đang đóng).
2.8. Đổi tên file
Cú pháp: Rename(F, Tên file mới);
Chức năng: Đổi tên của file đang gán cho biến file F thành tên file mới.
2.9. Thủ tục Append
Cú pháp: Append(F);
Chức năng: Mở file đã tồn tại để bổ sung nội dung vào cuối file.
2.10. Hàm trả về vị trí con trỏ file
Cú pháp: Filepos(F);
Chú ý: Con trỏ ở đầu file tương ứng vị trí 0.
2.11. Hàm kiểm tra cuối file
Cú pháp: EOF(F);
Chức năng: Hàm trả về giá trị True nếu con trỏ file đang ở cuối file, ngược lại hàm
trả về giá trị False.
2.12. Hàm kiểm tra cuối dòng EOLn
Cú pháp: EOLn(F);
Chức năng: Hàm trả về giá trị True nếu con trỏ đang ở cuối một dòng, ngược lại hàm
trả về giá trị False.
2.13. Hàm trả về kích thước của file
Cú pháp: FileSize(F);
Chức năng: Hàm trả về số lượng phần tử có trong file.

* Tóm tắt các thao tác cơ bản khi xuất nhập file
Ghi dữ liệu vào file
Đọc dữ liệu từ file
ASSIGN(f, Tên file);
ASSIGN(f, Tên file);
REWRITE(f);
RESET(f);
...
...
WRITE(f, x);
While Not EOF(f) Do
...
Begin


Trang 11/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
CLOSE(f);



READ(f,x);
...
End;
...
CLOSE(f);

Trang 12/35



Tài liệu bồi dưỡng HSG Turbo Pascal THCS

Phụ lục 1
MỘT SỐ THUẬT TOÁN CƠ BẢN TRONG PASCAL
I. CÁC THUẬT TOÁN VỀ SỐ
1. Thuật toán kiểm tra số nguyên tố
FUNCTION SONT(N:Longint):Boolean;
Var i:Longint;
Begin
KT:=True;
If n<2 Then KT:=False
Else
Begin
For i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then KT:=False;
End;
End;

2. Thuật toán tìm ƯCLN của hai số
FUNCTION UCLN (a,b:Longint):Longint;
Var r:Longint;
Begin
While b<>0 Do
Begin
r:= a mod b;
a:=b;
b:=r;
End;

UCLN:=a;
End;

3. Thuật toán tính tổng các chữ số của một số nguyên
FUNCTION TONGCS(n:Longint):integer;
Var S:integer;
Begin
S:=0;
While n<>0 do
begin
s:=s + n mod 10;
n:=n div 10;
end;
TONGCS:=S;
End;

4. Thuật toán kiểm tra số hoàn thiện
FUNCTION SOHT(n:Longint):Boolean;
Var
Begin
SOHT:=False;
S:=0;


Trang 13/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
For i:=1 to n div 2 do
If n mod i = 0 Then S:=S+i;

If S = N then SOHT:=True;
End;

5. Thuật toán kiểm tra một số có thuộc dãy Fibonacci hay không?
FUNCTION FIBO(n:Longint):Boolean;
Var f1,f2,f:Longint;
Begin
f1:=0; f2:=1; f:=f1+f2;
While fBegin
f1:=f2;
f2:=f;
f:=f1+f2;
End;
If f=N then FIBO:=True
Else FIBO:=False;
End.

6. Thuật toán kiểm tra số chính phương
FUNCTION SOCP(x:Longint):Boolean;
Begin
SOCP:=False;
If sqrt(x)=Trunc(sqrt(x)) Then SOCP:=True;
End;



Trang 14/35



Tài liệu bồi dưỡng HSG Turbo Pascal THCS

II. CÁC THUẬT TOÁN TRÊN MẢNG
A – Mảng một chiều
1. Thuật toán sắp xếp mảng (tăng dần)
a) Sắp xếp bằng phương pháp chọn trực tiếp
PROCEDURE SXTang(Var A:Mang);
Var i,j,tam:Integer;
Begin
For i:=1 to n-1 do
For j:=i+1 to n do
If A[i]>A[j] Then
Begin
Tam:=A[i];
A[i]:=A[j];
A[j]:=tam;
End;
End.

b) Sắp xếp bằng phương pháp nổi bọt
PROCEDURE SXNoiBot(Var A:Mang);
Var i,j,tam:Integer;
Begin
For i:=2 to n do
For j:=n downto i do
If A[j]Begin
Tam:=A[j];
A[j]:=A[j-1];
A[j-1]:=tam;

End;
End;

Chú ý: Thuật toán sắp xếp mảng giảm dần tương tự.
2. Thuật toán tìm giá trị lớn nhất, nhỏ nhất trong mảng
Max:=A[1];
For i:=2 to n
If MaxMin:=A[1];
For i:=2 to n
If Min>A[i]

do
Then Max:=A[i];
do
Then Min:=A[i];

3. Thuật toán tìm phần tử có giá trị bằng x trong mảng
a) Tìm trong mảng có phần tử x hay không?
FUNCTION Timx(x:Integer;A:Mang):Boolean;
Var i:Integer;KT:Boolean;
Begin
KT:=False;
For i:=1 to n do


Trang 15/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS

If A[i]=x Then KT:=True;
Timx:=KT;
End;

b) Đếm số lần xuất hiện ký tự x trong mảng?
FUNCTION Demx(x:Integer;A:Mang):Integer;
Var i,dem:Integer;
Begin
Dem:=0;
For i:=1 to n do
If A[i]=x Then dem:=dem+1;
Demx:=dem;
End;

4. Thuật toán chèn một phần tử vào mảng
a) Chèn một số x vào vị trí k
PROCEDURE Chenx(x:Integer;k:Integer;Var A:Mang);
Var i:Integer;
Begin
For i:=n+1 downto k+1 do
A[i]:=A[i-1];
A[k]:=x;
End;

b) Chèn một số x vào mảng đã sắp xếp tăng dần sao cho mảng vẫn được sắp xếp
tăng dần
PROCEDURE Chen(x:Integer;Var A:Mang);
Var i,j:Integer;
Begin
If x

Begin
For i:=n+1 downto 2 do A[i]:=A[i-1];
A[1]:=x;
End
Else
If x>A[n] Then A[n+1]:=x
Else
Begin
j:=1;
While x>A[j] do inc(j);
For i:=n+1 downto j+1 do A[i]:=A[i-1];
A[j]:=x;
End;
End;

Chú ý: Sau khi chèn x, mảng sẽ có n+1 phần tử.
5. Thuật toán xóa một phần tử trong mảng
a) Xóa phần tử tại vị trí thứ k trong mảng


Trang 16/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
PROCEDURE Xoavitrik(k:Integer;Var A:Mang);
Var i:Integer;
Begin
For i:=k to n-1 do
A[i]:=A[i+1];
End;


Chú ý: Sau khi xóa x, mảng sẽ còn n-1 phần tử.
b) Xóa phần tử có giá trị bằng x trong mảng
PROCEDURE Xoaphantux(x:Integer;Var A:Mang);
Var i,j:Integer;
Begin
i:=1;
While i<=n Do
If A[i]=x Then
Begin
For j:=i to n do A[j]:=A[j+1];
n:=n-1;
End
Else inc(i);
End;

6. Thuật toán cộng hai số nguyên lớn (sử dụng mảng)
PROCEDURE Cong(A,B:Mang; Var C:Mang; Var n:integer);
Var i:Integer; sodu:byte;
Begin
If pbegin
For i:=0 to q-p do A[q-i]:=A[p-i];
For i:=1 to q-p do A[i]:=0;
p:=q;
end
Else
begin
For i:=0 to p-q do B[p-i]:=B[q-i];
For i:=1 to p-q do B[i]:=0;

q:=p;
end;
du:=0; n:=q;
For i:=q downto 1 do
Begin
C[i]:=(A[i]+B[i]+sodu) mod 10;
du:=(A[i]+B[i]+sodu) div 10;
End;
If sodu>0 Then
Begin
For i:=n+1 downto 2 do C[i]:=C[i-1];
C[1]:=sodu;
inc(n);


Trang 17/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
end;
End;

B – Mảng hai chiều
1. Nhập mảng hai chiều
Write(‘Nhap so hang: ‘); Readln(m);
Write(‘Nhap so cot: ‘); Readln(n);
For i:=1 to m do
For j:=1 to n do
Begin
Write(‘A[‘ ,i, ’,’ ,j, ’]=]’); Readln(A[i,j]);

End;

2. In mảng hai chiều
For i:=1 to m do
Begin
For j:=1 to n do Write(A[i,j]:5);
Writeln;
End;

3. Tính tổng các phần tử trên mỗi cột
For j:=1 to n do
Begin
Sum:=0;
For i:=1 to m do Sum:=Sum+A[i,j];
End;

4. Tính tổng các phần tử trên mỗi hàng
For i:=1 to m do
Begin
Sum:=0;
For j:=1 to n do Sum:=Sum+A[i,j];
End;



Trang 18/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS


III. CÁC THUẬT TOÁN TRÊN XÂU KÝ TỰ
1. Thuật toán chuẩn hóa xâu
- Xoá các dấu cách thừa
- Chuyển những kí tự đầu từ thành chữ hoa, những kí tự khác thành chữ thường.
PROCEDURE Chuanhoa(Var s:String);
Var i:integer;
Begin
While S[1]=#32 do Delete(S,1,1);
While S[length(S)]=#32 do Delete(S,length(S),1);
While Pos(#32#32,S)<>0 do Delete(S,Pos(#32#32,S),1);
S[1]:=Upcase(S[1]);
For i:=2 to length(s) do
If S[i-1]=#32 then S[i]:=Upcase(S[i])
Else
If S[i] in [‘A’..’Z’] Then
S[i]:=chr(ord(S[i])+32);
End;

2. Thuật toán tách từ đưa vào mảng A
Thuật toán 1:
PROCEDURE Tachtu(st:String; Var A:Mang; Var n:integer);
Var i,j:Integer; s:String;
Begin
n:=0; st:=st+#32; j:=1;
Repeat
If st[j]=#32 then
Begin
inc(n); s:='';
For i:=1 to j-1 do s:=s+st[i];
A[n]:=s;

Delete(st,1,length(s)+1);
j:=1;
End
Else j:=j+1;
Until st='';
End;

Thuật toán 2:
PROCEDURE Tachtu(st:String;Var A:mang; Var n:integer);
Begin
n:=0;St:=st+#32;
While pos(#32,st)<>0 do
Begin
inc(n);
A[n]:=copy(st,1,pos(#32,st)-1);
delete(st,1,pos(#32,st));
End;
End;


Trang 19/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS

3. Thuật toán kiểm tra xâu đối xứng
FUNCTION DX(S:String):Boolean;
Var i:Integer;
Begin
DX:=True;

For i:=1 to (length(s) div 2) do
If S[i]<>S[length(S)-i+1] then DX:=False;
End;

4. Thuật toán đếm số xâu con đối xứng
FUNCTION DemxauDX(S:String):integer;
Var i,j,dem:Integer;
d:String;
Begin
dem:=0;
For i:=1 to length(S) do
For j:=1 to (length(s)-i+1) do
begin
d:=COPY(S,j,i);
If DX(d) then inc(dem);
end;
DemxauDX:=dem;
End;

5. Thủ tục cộng hai số nguyên lớn (sử dụng xâu ký tự)
PROCEDURE Cong(M,N:String; Var S:String);
Var a,b,so,du,i,code:Integer; d:String[1];
Begin
If length(M)For i:=1 to length(N)-Length(M) do M:='0'+M
Else
For i:=1 to Length(M)-Length(N) do N:='0'+N;
S:=''; du:=0;
For i:= length(M) downto 1 do
begin

Val(M[i],a,code); Val(N[i],b,code);
So:=(a+b+du) mod 10;
du:=(a+b+du) div 10;
Str(so,d);
S:=d+S;
end;
If du>0 Then
begin
Str(du,d);
S:=d+S;
end;
End;



Trang 20/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS

Phụ lục 2
MỘT SỐ HÀM VÀ THỦ TỤC THƯỜNG DÙNG TRONG TP 7.0
Toàn bộ các thủ tục, hàm và định hướng biên dịch của Pascal có thể tìm hiểu
trong phần Help trên thực đơn chính. Tổng cộng có 65 trang màn hình, mỗi trang được
chia đôi và có 21 dòng tức là có khoảng 2500 mục cần nghiên cứu. Số lượng này
ngay cả với những người chuyên nghiệp cũng không thể nắm bắt hết được. Trong phụ
lục này thầy chỉ chọn ra một số nhỏ những hàm và thủ tục thông dụng, khi cần biết ý
nghĩa và cách dùng của một hàm hay thủ tục nào đó các em chỉ cần viết tên hàm hay thủ
tục đó lên màn hình soạn thảo Pascal sau đó bấm tổ hợp phím Ctrl - F1, Pascal sẽ hiện lên
các chỉ dẫn và ví dụ minh hoạ.

1. Hàm ABS
Cú pháp: Abs(r: Real) : Real; Abs(i: Integer) : Integer;
Công dụng: Cho giá trị tuyệt đối của đối số.
2. Thủ tục APPEND
Cú pháp: Append(VAR F : Text);
Công dụng: Mở tệp văn bản để ghi bổ sung và định vị con trỏ tại cuối tệp.
3. Thủ tục ASSIGN
Cú pháp: Assign(var F : file; Name String);
Công dụng: Liên kết biến tệp F với tệp có tên chỉ định trong Name.
4. Hàm CHR
Cú pháp: Chr(I: Integer);
Công dụng: Cho ký tự có mã ASCII bằng I.
5. Thủ tục CLOSE
Cú pháp: Close(Var F:File); Công dụng: Đóng tệp.
6. Hàm CONCAT
Cú pháp: Concat(S1,S2,…,Sn:String);
Công dụng: Tạo chuỗi mới bằng cách nối các chuỗi S1,…, Sn. Nếu chiều dài của
chuỗi kết quả lớn hơn 255 ký tự, Pascal sẽ cắt bỏ các ký tự từ 256 trở đi .
7. Hàm COPY
Cú pháp: Copy(S:String; P,L:Integer):String;
Công dụng: Trích từ chuỗi S một chuỗi con dài l ký tự bắt đầu từ ký tự thứ P.
8. Thủ tục DEC
Cú pháp: Dec(Var X: SCalar; n:longInt);
Công dụng: Giảm biến X đi n. Nếu không có n thì X sẽ bị giảm đi 1.
9. Thủ tục DELAY(CRT Unit)
Cú pháp: Delay(s:word);
Công dụng: Tạm dừng chương trình trong s miligiây , s<=65535
10. Thủ tục DELETE
Cú pháp: Delet(S:String; P,L:integer);
Công dụng: Xoá L ký tự từ vị trí P ra khỏi chuỗi S

11. Thủ tục DELLINE(CRT Unit)
Cú pháp: Delline;
Công dụng: Xoá dòng chứa con trỏ. Các dòng phía dưới sẽ dồn lên phía trên.
12. Hàm EOF


Trang 21/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
Cú pháp: Eof(F:File): Boolean;
Công dụng: Cho giá trị TRUE nếu con trỏ định vị ở cuối tệp, các trường hợp
khác cho kết quả FLASE.
13. Hàm EOLN
Cú pháp: Eoln(F:File): Boolean;
Công dụng: Cho giá trị TRUE nếu con trỏ nằm cuối dòng(CR/LF) hoặc ở cuối
tệp, cho FLASE trong trường hợp trái lại.
14. Thủ tục ERASE
Cú pháp: Erase(F:File);
Công dụng: Xoá tệp và các thông tin về tệp F khỏi đĩa .
15. Thủ tục EXIT
Cú pháp: Exit;
Công dụng: Thoát khỏi khối hiện thời (khối có thể là chương trình con, cấu trúc
lặp) nếu exit nằm trong chương trình chính thì thoát khỏi chương trình).
16. Hàm EXP
Cú pháp: EXP(X:Real):Real;
Công dụng: Luỹ thừa e của đối số X.
17. Hàm FILEPOS
Cú pháp: FilePos(F:File):integer;
Công dụng: Cho số hiệu bản ghi của tệp F mà con trỏ đang trỏ tới.

18. Hàm GETBKCOLOR(Graph Unit)
Cú pháp: GetBKColor: word;
Công dụng: chọn mầu nền, có thể thay thế số hiệu màu bởi tên hằng màu.
19. Hàm GETCOLOR(Graph Unit)
Cú pháp: GetColor:word;
Công dụng: Chọn màu nét vẽ, có thể thay thế số hiệu màu bởi tên hằng màu.
20. Thủ tục GETDATE(DOS Unit)
Cú pháp: GetDate(Var year, Month, Day, Dayofweek:word); Công dụng: Cho
ngày tháng hiện hành của hệ thống.
21. Thủ tục GOTOXY(CRT Unit)
Cú pháp: Gotoxy(x,y: Integer);
Công dụng: Đưa Curson (con trỏ) đến toạ độ(x,y);
22. Thủ tục HALT
Cú pháp: Halt;
Công dụng: Dừng ngay chương trình.
23. Thủ tục INC
Cú pháp: Inc(Var x [;n : longint]);
Công dụng: Tăng giá trị x thêm n (x phải thuộc kiểu nguyên). Nếu bỏ qua n thì x
sẽ tăng lên 1. Ví dụ:
Var x:integer; Begin
X:=15; Inc(x); {x sẽ có giá trị là 16}
Inc(x,5); {x sẽ có giá trị là 20} End;
24. Hàm INSERT
Cú pháp: Insert(S1:String; Var S2:String; i:Integer);


Trang 22/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS

Công dụng: Chèn chuỗi S1 vào chuỗi S2 ở vị trí i.
25. Hàm INT
Cú pháp: Int(x:Real): Real;
Công dụng: Cho phần nguyên của x
26. Hàm IORESULT(CRT Unit)
Cú pháp: IOResult : word;
Công dụng: Cho mã lỗi khi thực hiện thao tác vào/ra. Nếu IOResult khác không
thì có nghĩa là đã xảy ra lỗi.
27. Hàm KEYPRESSED(CRT Unit)
Cú pháp: Keypressed : Boolean;
Công dụng: Cho giá trị TRUE khi có một phím được bấm.
28. Hàm LENGTH
Cú pháp: Leng(S:String):Integer;
Công dụng: Cho chiều dài của chuỗi S
29. Hàm LN
Cú pháp: Ln(Var x:Real):Real;
Công dụng: Cho logarit tự nhiên của x.
30. Hàm ODD
Cú pháp: Odd(I:Integer): Boolean;
Công dụng: Cho True khi I là số lẻ và False khi I là số chẵn
31. Hàm ORD
Cú pháp: Ord(S:Scalar):Integer;
Công dụng: Cho số thứ tự của S (có kiểu vô hướng đếm được).
32. Hàm PI
Cú pháp: Pi:Real;
Công dụng: Cho hằng số Pi
33. Hàm POS
Cú pháp: Pos(SubS,S:String):Integer;
Công dụng: Cho vị trí bắt đầu của chuỗi con SubS trong S. Nếu SubS không
nằm trong S thì hàm POS cho giá trị 0.

34. Hàm PRED
Cú pháp: Pred(S:Scalar):Integer;
Công dụng: Cho phần tử phía trước phần tử S (S phải thuộc kiểu vô hướng đếm
được).
Ví dụ: Pred(5) = 4.
35. Hàm RANDOM
Cú pháp: Random(I:word):word;
Công dụng: Cho một số ngẫu nhiên k với 0<=k36. Thủ tục RAMDOMIZE
Cú pháp: Randomize;
Công dụng: Khởi tạo giá trị ban đầu của bộ tạo số ngẫu nhiên trong đồng hồ hệ
thống. Giá trị này được sử dụng khi có lời gọi hàm Random. Nếu không có thủ tục
Randomize thì giá trị mà hàm Random tạo ra sẽ giống nhau mỗi khi chương trình
được chạy.


Trang 23/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
37. Thủ tục READ và READLN
Cú pháp: Read([Var F : File,] Parameters); Readln([Var F : File,] Parameters);
Công dụng: Nhập số liệu từ thiết bị chuẩn (thường là bàn phím) vào biến
Parameters hay từ tệp được chỉ định trong F. Readln chỉ dùng với tệp văn bản,
sau khi nhập số liệu Readln di chuyển con trỏ xuống dòng kế tiếp.
38. Hàm READKEY(CRT Unit)
Cú pháp: Readkey: Char;
Công dụng: Đọc một mã phím vào một biến. Với các phím mã phím gồm hai số,
số đầu là 0 thì cần gọi lại hàm Readkey một lần nữa để lấy giá trị thứ hai của mã phím.
39. Thủ tục RENAME

Cú pháp: Rename( Var F:File; S:String);
Công dụng: Đổi tên tệp F thành S.
40. Thủ tục RESET
Cú pháp: Reset(Var F:File [;I:Integer]);
Công dụng: Mở tệp F để đọc. Nếu tệp đó không kiểu, ta có thể chỉ định kích
thước mẫu tin trong I.
41. Thủ tục REWRITE
Cú pháp: Rewrite(Var F:File [;I:Integer]);
Công dụng: Chuẩn bị tệp để ghi. Nếu tệp chưa tồn tại Pascal sẽ tạo ra tệp mới
với tên tệp ghi trong F . Nếu đã có một tệp trên đĩa thì tệp cũ sẽ bị xoá và một tệp
rỗng được thế chỗ. Với tệp không kiểu ta có thể định chiều dài của recor (bản ghi)
trong I.
42. Hàm ROUND
Cú pháp: Round(x;Real):LongInt;
Công dụng: Làm tròn x.
43. Thủ tục SEEK
Cú pháp: Seek(Var F:Flie; P:Integer);
Công dụng: Di chuyển con trỏ tệp đến đầu của bàn ghi thứ P trong tệp tin F.
44. Thủ tục SEEKEOF
Cú pháp: SeekEof(Var F:File):Boolean;
Công dụng: kiểm tra tình trạng kết thúc tệp (chỉ dùng cho tệp văn bản), nếu kết
thúc tệp kết quả nhận được là True, ngược lại là False (xem thêm eof).
45. Hàm SEEKEOLN
Cú pháp: SeekEoln(Var F:File):Boolean;
Công dụng: kiểm tra tình trạng kết thúc dòng, SeekEoln tương tự như Eoln chỉ
có khác biệt là nó nhảy qua khoảng trống, tab trước khi kiểm tra dấu kết thúc hết dòng.
46. Thủ tục SETDATE(DOS Unit)
Cú pháp: Setdate(Year, Month, Day:word);
Công dụng: Cập nhật đồng hồ hệ thống theo ngày tháng năm truyền qua tham
biến.

47. Thủ tục SETTIME(DOS Unit)
Cú pháp: SetTime(H, M, S, S100:word);
Công dụng: đặt lại giờ hệ thống bao gồm giờ (H), phút (M), giây (S), phần
trăm giây (S100).
48. Hàm SIN


Trang 24/35


Tài liệu bồi dưỡng HSG Turbo Pascal THCS
Cú pháp: Sin(x:Real):Real;
Công dụng: Cho Sin(x)
49. Hàm SIZEOF
Cú pháp: Sizeof(Var Variable):word;
Công dụng: Cho kích thước(số byte) của biến hay kiểu dữ liệu.
50. Hàm SQR
Cú pháp: Sqr(x:Real):Real; Sqr(x:Integer):Integer;
Công dụng: Cho bình phương của x.
51. Hàm SQRT
Cú pháp: Sqrt(x:Real):Real;
Công dụng: Cho căn bậc hai của x
52. Thủ tục STR
Cú pháp: Str(I:Integer; Var S:String);
Str(x:Real; Var S:String);
Công dụng: Đổi số nguyên hay thực ra chuỗi và cất trong S.
53. Hàm SUCC
Cú pháp: Suuc(S:Scalar):Integer;
Công dụng: Cho giá trị tiếp sau S.
54. Hàm TRUNC

Cú pháp: Trunc(x:Real):integer;
Công dụng: Cho phần nguyên của x.
55. Hàm UPCASE
Cú pháp: Upcase(S:Char):Char;
Công dụng: Chuyển các ký tự trong S thành chữ in.
56. Thủ tục VAL
Cú pháp: Val(S:String;Var I:Real;Var Code:Integer);
Công dụng: Đổi chuỗi S thành số I. Nếu đỗi chuỗi thành công biến Code nhận
giá trị 0. Nếu không đổi được, code chứa số nguyên cho biết vị trí của ký tự trong
chuỗi S đã gây lỗi.
57. Hàm WHEREX(CRT Unit)
Cú pháp: WhereX:Byte;
Công dụng: Cho biết cột đang chứa Con trỏ trong cưả sổ hiện hành.
58. Hàm WHEREY(CRT Unit)
Cú pháp: WhereY:Byte;
Công dụng: Cho biết dòng đang chứa Con trot trong cửa sổ hiện hành.
59. Thủ tục WINDOW(CRT Unit)
Cú pháp: Window(x1,y1,x2,y2:Byte);
Công dụng: định nghĩa một cửa sổ góc trái trên (x1,y1) và góc phải dưới là
(x2,y2).
60. Thủ tục WRITE và WRITELN
Cú pháp: Write([Var F:File,] Parameters);
Writeln([Var F:File,] Parameters);
Công dụng: Write sẽ ghi giá trị các tham số lên màn hình hoặc lên tệp. Writeln
làm việc giống Write nhưng ghi thêm dấu hiệu hết dòng(CR/LF) vào cuối.


Trang 25/35



×