Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn

Nội dung

1. Một vài ví dụ làm quen

2. Giải thích chương trình

3. Cấu trúc chương trình

4. Các lệnh cơ bản

5. Kiểu dữ liệu, biến

6. Nhập xuất dữ liệu

7. Câu lệnh, khối lệnh

8. Câu lệnh rẽ nhánh

9. Câu lệnh lặp

10. Thủ tục, hàm

11. Kỹ thuật đệ quy

12. Kiểu bảng ghi, tập hợp, miền con

13. Mảng, chuỗi

14. Làm việc với tập tin

15. Thư viện đồ họa trong pascal

pdf 32 trang kimcuc 18340
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn

Bài giảng Tin học đại cương - Chương 5: Lập trình với Pascal - Trần Phước Tuấn
1LẬP TRÌNH VỚI PASCAL
Trần Phước Tuấn
tranphuoctuan.khoatoan.dhsp@gmail.com
Nội dung
1. Một vài ví dụ làm quen
2. Giải thích chương trình
3. Cấu trúc chương trình
4. Các lệnh cơ bản
5. Kiểu dữ liệu, biến 
6. Nhập xuất dữ liệu
7. Câu lệnh, khối lệnh
8. Câu lệnh rẽ nhánh
9. Câu lệnh lặp
10. Thủ tục, hàm
11. Kỹ thuật đệ quy
12. Kiểu bảng ghi, tập hợp, miền con
13. Mảng, chuỗi
14. Làm việc với tập tin
15. Thư viện đồ họa trong pascal
2Chương trình Borland Pascal 7.0
Ấn Alt+F để vào menu File
- Mở tập tin có sẵn: F3
- Đóng tập tin hiện tại: Alt+F3
- Mở tệp mới: Alt+F New (File New)
- Lưu tệp vào đĩa: F2
-Lưu tập tin với một tên khác: Save as
-Lưu tất cả các tập tin đang mở: Save all
- Đổi thư mục mặc định: Change dir 
- Về DOS tạm thời: DOS shell
- Thoát khỏi Borland Pascal 7.0: Alt+X (Exit)
Chương trình Borland Pascal 7.0
Ctrl + F9: Biên dịch và thực thi chương trình.
Alt + F5: Xem màn hình kết quả.
Alt + F9: Biên dịch chương trình
Tập tin cùng tên, có đuôi exe 
được tạo ra cùng thư mục
3Ví dụ mở đầu
1. Ví dụ 1:
* Source code ( mã nguồn)
(Ctr + F9: biên dịch và thực thi chương trình)
* Kết xuất màn hình: Hello world!
(Alt + F5 để xem màn hình kết xuất)
* Thêm vào lệnh: Readln; sau writeln(‘ Hello 
world’);
* Biên dịch và chạy là để xem kết quả.
Begin
Writeln(‘Hello world’);
End.
Ví dụ mở đầu
2. Ví dụ 2:
* Source code 
* Kết xuất màn hình 
7 + 5 = 12
Var a,b,c :integer;
begin 
a:=7; b:=5;
c:= a + b;
writeln(a,’ + ‘,b,’ = ‘,c);
readln;
end.
4Ví dụ mở đầu
3. Ví dụ 3:
* Source code
* Kết xuất màn hình
Day la chuong trinh tinh tong hai so
Nhap a: 15  {Người dùng nhập}
Nhap b: 17 {Người dùng nhập}
Tong cua 15 va 17 la 32
Uses crt;
Var a,b,c:integer;
Begin
Clrscr; {lệnh xóa màn hình} 
Writeln(‘Day la chuong trinh tinh tong hai so’);
Write(‘Nhap a: ‘);
Readln(a);
Write(‘Nhap b: ‘):
Readln(b);
c:= a + b;
writeln(‘tong cua ‘,a,’ va ‘,b,’ la ‘,c);
readln;
end.
Cấu trúc một chương trình pascal
 Tiêu đề của chương trình (Program vidu;)
 Phần khai báo
 Khai báo thư viện (Uses crt;)
 Hằng, biến (Const, Var), 
 Mô tả kiểu dữ liệu mới (Type) 
 Khai báo chương trình con (Procedure, 
Function)
 Phần thân chương trình
 Chứa các lệnh để máy tính thực hiện
 Các câu lệnh nằm giữa: 
begin
;
end.
5Kiểu dữ liệu
 Kiểu dữ liệu là một bộ T trong đó
 Tập A: tập tất các các giá trị mà kiểu dữ liệu 
T có thể lưu trữ được. 
 Tập B: tập tất cả các phép toán có thể thao 
tác trên kiểu T.
 Ví dụ: kiểu integer
 Tập A: các giá trị nguyên [-32768,32767]
 Tập B: các phép toán: +, -, *, /, div, mod, >, 
=, , 
Kiểu dữ liệu – Kiểu số nguyên
4-2147483648 .. 2147483647LongInt
20 .. 65535Word
2-32768 .. 32767 Integer
10..255Byte
1-128 .. 127 ShortInt
Số bytePhạm vi gía trịTên kiểu 
6Kiểu dữ liệu – Kiểu số nguyên
y=y div 2;
y=y mod 2;
Chia lấy thương, chia lấy dưdiv,mod
y=x*z;Nhân, chia*,/
y=x+z;Cộng, trừ+,-
x>=ylớn hơn hoặc bằng>=
x>ylớn hơn>
x<=ynhỏ hơn hoặc bằng<=
x<ynhỏ hơn<
xykhác nhau
x=ybằng nhau =
Ví dụÝ nghĩaKý hiệu
Kiểu dữ liệu – Kiểu số nguyên
0 XOR 0=00 OR 0=00 AND 0=0
0 XOR 1=10 OR 1=10 AND 1=0
1 XOR 0=11 OR 0=11 AND 0=0NOT 0 = 1
1 XOR 1=0 1 OR 1=11 AND 1=1NOT 1 = 0
7Kiểu dữ liệu – Kiểu số nguyên
 N SHR k : dịch các bít của số nguyên N sang phải đi k bít.
 N SHL k : dịch các bít của số nguyên N sang trái đi k bít.
 Có thể chứng minh được :
N SHR k = N div 2k
N SHL k = N * 2k
 Ví dụ:
120 shr 4 = 7, vì :
120 shr 4 = 120 div 24 = 120 div 16 = 7.
120 shl 3 = 960, vì : 
120 shl 3 = 120 * 23 = 120 * 8 = 960.
 Hai phép toán SHR và SHL được dùng khi muốn tăng tốc độ tính 
toán trên các số nguyên.
Kiểu dữ liệu – char
M
L
K
J
I
H
G
F
E
D
C
B
A
KT
77
76
75
74
73
72
71
70
69
68
67
66
65
MÃ
m
l
k
j
i
h
g
e
f
d
c
b
a
KT
109
108
107
106
105
104
103
102
101
100
99
98
97
MÃ MÃKTMÃKT
122z90Z
121y89Y
120x88X
119w87W
118v86V
117u85U
116t84T
115s83S
114r82R
113q81Q
112p80P
111o79O
110n78N
Mã chữ thường = Mã chữ hoa tương ứng + 32 Thường :=Chr(Ord(Hoa)+32)
8Kiểu dữ liệu – char
57‘9’
56‘8’
55‘7’
54‘6’
53‘5’
52‘4’
51‘3’
50‘2’
49‘1’
48‘0’
32‘ ’
MÃKT
Mã của ký tự số i = số i + 48 
(với 0<=i<=9)
Khoảng trắng
Kiểu dữ liệu – char
 Hàm PRED(ch): cho ký tự đứng ngay trước ch trong bảng mã. 
Ví dụ: Pred(‘B’) = ‘A’
 Hàm SUCC(ch): cho ký tự đứng ngay sau ch trong bảng mã. 
Ví dụ: Succ(‘A’) có giá trị là ‘B’.
 Hàm UpCase(ch): đổi ký tự ch thành chữ hoa. Ví dụ:
Upcase( ‘a’ ) = ‘A’, 
Upcase( ‘b’ ) = ‘B’, 
Upcase( ‘A’ ) = ‘A’ .
 Hàm ORD(ch) : cho mã của ký tự ch. 
Ví dụ: Ord (‘A’) = 65, Ord (‘a’) = 97 .
 Hàm CHR(k): k nguyên, 0<=k<=255, cho ký tự có mã bằng k.
Ví dụ: 
Chr (65)= ‘A’
Chr (97)= ‘a’
Chr(32) là ký tự trắng.
9Kiểu dữ liệu – boolean
TrueFalse
FalseTrue
not AA
FalseFalseFalseFalseFalse
TrueTrueFalseTrueFalse
TrueTrueFalseFalseTrue
FalseTrueTrueTrueTrue
A xor BA or BA and BBA
1. A and B là đúng khi và chỉ khi 
A và B đồng thời đúng. 
(Do đó chỉ cần một trong hai 
biến A hoặc B sai thì A and B 
sẽ sai). 
2. A or B là sai khi và chỉ khi A 
và B đồng thời sai. 
(Do đó chỉ cần một trong hai 
biến A hoặc B đúng thì A or B 
sẽ đúng). 
3. A xor B là đúng khi và chỉ khi 
A khác B.
Kiểu dữ liệu – string
Hàm cho biết độ dài của chuỗi
Giá trị trả về là số nguyên. length()
Thủ tục đổi một số sang một chuỗi. 
VD: str(10.2,chuoi);
Trong đó chuoi là biến kiểu string
str(,)
‘Anh’ < ‘an’ là đúng vì ‘A’ < ‘a’
‘Thong’ > ‘Tha’ là đúng vì ‘o’ > ‘a’>,=,
Phép cộng (nối 2 chuỗi)
kq:=‘Borland ’ + ‘Pascal.’
Thì kq nhận giá trị: ‘Borland Pascal.’
+
Giải thíchPhép toán
Xem thêm tài liệu về các hàm, thủ tục liên quan đến chuỗi: 
delete, insert, strcat, strcopy, 
10
Kiểu dữ liệu – string
 Biến nhận giá trị là các hằng chuỗi gọi là biến kiểu 
chuỗi. 
 Có thể khai báo hai biến chuỗi như sau: 
Var
Ho_ten : string[20];
 st : string; 
 Khi đó Ho_ten là biến chuỗi có thể chứa tối đa 20 ký 
tự, còn biến chuỗi st có thể chứa tối đa 255 ký tự, và
ta có thể gán :
Ho_ten := ‘Nguyen Van An’;
st :=‘Viet chuong trinh bang ngon ngu Pascal’; 
Xem thêm phần 
khai báo biến
Biến
 Biến dùng để lưu trữ dữ liệu đưa từ bên 
ngoài vào bên trong chương trình để có
thể truy xuất, xử lý và xuất ra lại.
Một biến bất kỳ phải thuộc một kiểu dữ
liệu nào đó điều này giúp cho ngôn ngữ
biết các phép toán có thể thực hiện trên 
biến này. Được thể hiện ở việc khai báo 
biến. 
11
Biến – Khai báo
 Cú pháp 
var : ;
 Danh sách biến: gồm một hoặc nhiều tên biến 
cách nhau bởi dấu phẩy (,)
 Kiểu dữ liệu: là một trong các kiểu dữ liệu chuẩn 
của TP
 Sau từ khóa VAR, có thể khai báo nhiều 
danh sách biến khác nhau với cấu trúc: 
 : ;
 Ví dụ
var a,b,c:real;
x,y,z:integer;
hoten: string;
Biến – Nguyên tắc đặt tên
 Không đặt tên biến trùng với các từ khóa
 Tên biến không chứa khoảng trống và
các ký tự đặt biệt như: +,-,,(,),?,.,
 Tên biến không bắt đầu bằng số, tên 
biến phải được bắt đầu bằng ký tự chữ
hoặc dấu gạch chân.
 Theo sau ký tự đầu tiên có thể là các ký 
tự chữ, số hoặc dấu gạch chân.
12
Biến - Lời khuyên về cách đặt tên
 Không nên viết hoa tất cả các ký tự.
 Không nên bắt đầu bằng dấu gạch chân.
 Tránh viết tắt quá nhiều dẫn đến tên biến tối 
nghĩa. 
 Nên đặt tên biến có tên gợi nhớ đến kiểu dữ
liệu và ý nghĩa lưu trữ của nó. 
Ví dụ var s_nameStudent: string;r_markEnglish: real;
Ví dụ về tên biến không hợp lệ
 3a_1 (ký tự đầu là số)
 num-odd (sử dụng dấu gạch ngang-dấu trừ)
 Real (đặt tên trùng với từ khóa)
 del ta (có khoảng trắng)
 f(x) (có dấu ngoặc tròn) 
Ví dụ về tên biến hợp lệ
 iNumber
 Ho_Ten
Biến – ví dụ về đặt tên biến
13
Nhập xuất dữ liệu
 write: lệnh xuất ra màn hình
 writeln: lệnh xuất ra màn hình đồng thời 
xuống dòng
 write (); 
(các biến cách nhau bởi dấu ,)
 writeln(); 
 Ví dụ: 
 Writeln(‘Hello World!’);
 Writeln(a,’+’,b,’=‘,a+b);
Nhập xuất dữ liệu
 readln: dừng chương trình lại đợi cho 
đến khi người dùng bấm enter 
 readln () : nhập giá trị
cho các biến.
 Ví dụ: 
 Readln(a,b,c);
 Readln(z);
14
Câu lệnh gán
 Khái niệm: Là một trong những câu lệnh cơ 
bản nhất của một ngôn ngữ lập trình bất kì nói 
chung
 Cú pháp: :=;
 Chức năng: tính giá trị của và ghi 
giá trị đó vào vùng nhớ của biến có tên ở vế
trái dấu :=, nghĩa là gán giá trị cho biến. 
 Ví dụ: 
x1 := (-b+sqrt(b*b-4*a*c))/(2*a);
x2 := -b/a-x1;
i := i+1;
Phép toán
15
Biểu thức
Thứ tự ưu tiên
16
Thứ tự ưu tiên – Quy tắc
 Quy tắc 1: các phép toán nào có ưu tiên 
cao hơn sẽ được tính trước. 
 Quy tắc 2: trong các phép toán có cùng 
thứ tự ưu tiên thì sự tính toán sẽ được 
thực hiện từ trái sang phải. 
 Quy tắc 3: phần trong ngoặc từ trong ra 
ngoài được tính toán để trở thành một 
giá trị đơn. 
Câu lệnh, khối lệnh
 Câu lệnh
 Câu lệnh là một tác vụ có nhiệm vụ xác định một công việc 
mà máy tính phải thực hiện để xử lý các dữ liệu đã được mô 
tả và khai báo. 
 Có hai loại câu lệnh: 
 Lệnh đơn giản: Read(a);Readln(b);Write, Writeln; RESET, 
REWRITE, ASSIGN; gọi hàm, thủ tục, 
 Lệnh có cấu trúc:If  then  else ;While  do , for 
to/downto  do ;repeat  until , 
 Khối lệnh
 Là câu một hay nhiều câu lệnh đặt giữa begin và end.
 Ví dụ: 
Begin
x:=x+2;
i:=i+1;
End;
17
Câu lệnh rẽ nhánh
 Câu lệnh if
 Công dụng
 Cú pháp
 Bài tập
 Câu lệnh case  of  [else ] end;
 Công dụng
 Cú pháp
 Bài tập
Câu lệnh rẽ nhánh - if
 Công dụng: Sử dụng giải quyết những trường 
hợp liên quan đến việc giải bài toán có sự biện 
luận, phân chia trường hợp. 
 Cú pháp
 Lưu ý: 
Trước else không có dấu chấm phẩy (;)
if () then
[else
]
//thực hiện khi đúng
// thực hiện khi sai
18
Biểu thức Logic
(true/false)
Câu lệnh
Khối lệnh
Câu lệnh
Khối lệnh
true false
Câu lệnh rẽ nhánh - if
1. Nhập a, b, c. Tìm max. Phát triển nhiều số
2. Giải phương trình ax+b=0
3. Giải phương trình ax2+bx+c=0
4. Giải hệ phương trình: a1x+b1y=c1
a2x+b2y=c2
5. Nhập vào điểm trung bình, hãy xếp loại học tập
6. Tính tiền điện (nhập vào số kw)
7. Dạng tam giác (nhập a, b,c )
8. Nhập vào 1 tháng, cho biết tháng này thuộc quý mấy?
Một số bài tập
Câu lệnh rẽ nhánh - if
19
Câu lệnh rẽ nhánh – case  of
Câu lệnh rẽ nhánh – case  of
 Công dụng: Sử dụng giải quyết những trường 
hợp liên quan đến việc giải bài toán có sự biện 
luận, phân chia nhiều trường hợp. 
 Cú pháp
CASE OF
: ; 
: ; 
...........
: ;
ELSE
;
END;
Diễn giải
So sánh giá trị của 
với từng giá trị trong : 
• Nếu có một giá trị nào bằng thì
thực hiện: 
• Ngược lại thì thực hiện: 
Hãy so sánh if với case  of 
20
Một số bài tập
1. Viết chương trình nhập vào tháng, in ra 
tháng đó có bao nhiêu ngày
2. Viết chương trình nhập vào 2 số x, y và
1 trong 4 toán tử +, -, *, /. Sau đó thực 
hiện phép tính (nếu y = 0 thì thông báo 
không chia được)
Câu lệnh rẽ nhánh – case  of
Câu lệnh lặp – Tổng quan
:
;
if () then
goto ;
FOR := TO DO
;
Hoặc:
FOR := DOWNTO 
DO ;
while() do
;
repeat
;
until();
21
Câu lệnh lặp – Diễn giải
:
;
Nếu () thì
nhảyđến ;
cho := lên đến làm
;
Hoặc:
cho := xuống làm
;
TrongKhi() làm
;
LặpLại
;
Cho đến khi();
Hãy phân biệt – so sánh các loại vòng lặp
Hãy tính S = 1+2++n
i:=1;s:=0;
moc: {Phải khai báo nhãn}
s:=s+i;
i:=i+1;
if (i<=n) then
goto moc;
s=0;
for i:=1 to n do
s:=s+i;
i:=1;s:=0;
while (i<=n) do
begin
s:=s+i;
i:=i+1;
end;
i:=1;s:=0;
repeat
s:=s+i;
i:=i+1;
until(i>n);
Câu lệnh lặp – Ví dụ
22
1. Viết hàm, thủ tục: 
1. Truyền vào ký tự và số n. In ra n ký tự đó
2. In hcn các dấu * có kích thước m*n 
3. In hcn rỗng các dấu * có kích thước m*n 
4. In tam giác cân các dấu * có chiều cao h
5. In tam giác rỗng các dấu * có chiều cao h
2. Tính các tổng sau: 
1. S = 1 + 2 +  + n
2. S = 2 + 4 +  + 2.n ( tổng các số chẵn <=n)
3. S = 12+22+  + n2
4. S = 1.2+2.3+  + n.(n+1)
5. S = 1/2 + 2/3 +  n/(n+1)
3. Viết hàm, thủ tục: 
1. Nhập n số, tính tổng.
2. Nhập n số, tìm max
4. Tính số hạng thứ n của dãy fibonaci (f0=f1=1, fn=fn-1+fn-2)
5. Tìm UCLN, BCNN của hai số a,b ( Bảng ghi Phân số)
6. Rút gọn phân số
7. In ra các ước số dương thực sự của n (n=6 thì các ước số là 1,2,3)
8. Tổng các ước số dương thực sự của n
9. Tổng các số chẵn <=n
10. T = n!
11. Kiểm tra n có phải là số nguyên tố hay không
12. Kiểm tra n có phải là số chính phương hay không
13. Phân tích n thành tích các thừa số nguyên tố
Câu lệnh lặp
Bài tập
Hàm – Tổng quan
 Hàm sqrt(x) cho căn hai của x. 
 Tên hàm là sqrt
 Tham số x là số nguyên hay số thực (tập nguồn)
 Giá trị hàm kiểu thực (tập đích)
 Ví dụ sqrt(4)=2.0
 Nhớ lại các hàm trong toán học để có sự liên hệ với môn học
 Khi nói đến hàm ta quan tâm đến 3 yếu tố
 Tập nguồn
 Tập xác định, miền xác định. 
 Đối với tin học thì đây là thông tin đầu vào
 Tập đích
 Tập giá trị, miền giá trị.
 Đối với tin học thì đây là thông tin đầu ra
 Quy tắc của hàm
 Để xác định 1 phần tử thuộc Tập nguồn 1 phần tử thuộc Tập đích
 Trong tin học thì đó là những câu lệnh nhằm xác định thông tin đầu ra từ 
thông tin đầu vào
Người sử dụng hàm
quan tâm
Người viết hàm
quan tâm
23
Hàm – Ví dụ hàm có sẵn
 Hàm sqrt(x): cho căn hai của x. Tên hàm là sqrt, tham số x là
nguyên hay thực còn gía trị hàm kiểu thực, ví dụ sqrt(4)=2.0.
 Hàm chr(k): cho ký tự có mã là k. Tên hàm là chr, tham số k kiểu 
nguyên còn gía trị hàm kiểu ký tự, ví dụ chr(65)=‘A’.
 Hàm odd(k): cho True hay False tùy theo k là lẻ hay chẵn. Tên 
hàm là odd, tham số k kiểu nguyên và gía trị hàm kiểu lôgic, ví dụ
odd(4)=False.
 Hàm copy( st, k, n): cho chuỗi con gồm n ký tự của st tính từ vị
trí k. Tên hàm là copy, có ba tham số là st kiểu chuỗi, k và n kiểu 
nguyên, và gía trị hàm kiểu chuỗi, ví dụ copy(‘ABCD’, 2, 3) = 
‘BCD’.
 Hàm readkey: không có tham số, gía trị hàm kiểu ký tự, hàm 
nhận một ký tự được gõ từ bàn phím. 
Hàm – Ví dụ hàm có sẵn
24
Hàm – Hàm tự viết
Hàm – Cú pháp
function (ds tham số) : kiểu_giá_trị;
const ...
type ...
var ...
begin
{Các lệnh của hàm}
:=;
end;
Kiểu dữ liệu của kết qủa của hàm không thể là mảng (array), 
bản ghi (record), tập hợp (set) hay tập tin (file). 
25
Thủ tục
 Giống như hàm, thủ tục cũng là một chương trình con, 
song thủ tục khác hàm ở chỗ: nếu như hàm luôn trả
về một gía trị duy nhất thông qua tên hàm thì thủ tục 
lại không trả về một giá trị nào. 
 Ví dụ: 
 Thủ tục readln(x, y, z) có nhiệm vụ nhập các gía trị từ bàn 
phím cho các biến x, y, z. 
 Thủ tục write(x, y, z) in gía trị của x, y, z . 
 Thủ tục gotoxy(x, y) định vị con trỏ vào toạ độ cột x, dòng y 
trên màn hình. 
 Thủ tục clrscr thì chỉ đơn giản là xóa màn hình .v.v. . 
 Như vậy thủ tục có thể không có tham số hoặc có từ
một đến nhiều tham số. 
Thủ tục – Cú pháp
procedure ();
{khai báo const, type, var dùng trong thủ tục }
begin
{Các lệnh của thủ tục }
end;
Hãy so sánh cú pháp của thủ tục và hàm
26
Thủ tục
Thủ tục, hàm - Truyền tham số
 Truyền tham số trị
 Khái niệm
 Tác dụng của nó đến biến sau khi ra khỏi 
chương trình con. 
 Truyền tham số biến
 Khái niệm
 Tác dụng của nó đến biến sau khi ra khỏi 
chương trình con
Thủ tục và hàm có một tên gọi chung là chương trình con
27
Thủ tục, hàm – Truyền tham số
 Truyền tham số trị - khái niệm
 Trong phần khai báo tham số hình thức của 
chương trình con, các tham số không có từ
khóa var phía trước được gọi là tham số trị
 Trong lời gọi chương trình con các tham số
trị thực sự có thể là biến, hằng hay biểu 
thức. 
 Ví dụ: 
 x:=max(a,b,5); y:=max(a+1,4,5); 
 Xem lại các ví dụ về thủ tục và hàm trong các 
phần trước.
Thủ tục, hàm – Truyền tham số
 Truyền tham số trị - tác dụng
 Tham số trị hình thức được cấp một ô nhớ riêng khi 
chương trình con được gọi và bị xóa bỏ khi chương 
trình con chạy xong. 
 Giá trị của biến, hằng, biểu thức được copy cho 
tham số của chương trình con (tham số này có thể 
xem như là biến cục bộ trong chương trình con). 
 Không làm thay đổi giá trị của tham số thực sự
 Ví dụ: 
var m,y:integer;
begin
m:=4;
y:=add(m);
writeln(‘m = ‘,m,’, y = ‘,y);
end.
function add(x:integer):integer;
Begin
x=x+5;
add:=x;
End;
m = 4, y = 9 Kết xuất màn hình
m: tham số thực sự
x: tham số hình thức
28
Thủ tục, hàm – Truyền tham số
 Truyền tham số biến – Khái niệm
 Trong khai báo ở đầu của chương trình con, 
các tham số hình thức có từ khóa Var đứng 
trước gọi là tham số biến. 
 Trong lời gọi chương trình con các tham số
biến thực sự chỉ có thể là biến, không thể
là hằng hay biểu thức. 
 Ví dụ: 
HoanVi(3, 4); {Sai vì 3 và 4 là các hằng}
HoanVi(a+1, b);{Sai vì a+1 là một biểu thức}
HoanVi(a,b); {Đúng}
Thủ tục, hàm – Truyền tham số
 Truyền tham số biến – Tác dụng
 Tham số hình thức theo kiểu truyền tham số này không được 
cấp phát vùng nhớ. 
 Khi gọi chương trình con thì tham số hình thức sẽ là một alias 
(biệt danh) khác của biến là tham số thực. 
 Trong hàm nếu có sự tác động làm thay đổi giá trị của biến 
là tham số hình thức thì cũng chính là thay đổi biến là tham 
số thực. 
 Ví dụ: 
var m,y:integer;
begin
m:=4;
y:=add(m);
writeln(‘m = ‘,m,’, y = ‘,y);
end.
function add(var x:integer):integer;
Begin
x=x+5;
add:=x;
End;
m = 9, y = 9 Kết xuất màn hình
m: tham số thực sự
x: tham số hình thức
29
Thủ tục, hàm – Lưu ý
 Kiểu dữ liệu của tham số trong hàm và thủ tục 
thì không hạn chế. Nhưng nếu là kiểu tự xây 
dựng thì phải được định nghĩa trước bằng từ
khóa type. 
 Kiểu dữ liệu của kết qủa của hàm có thể là
các kiểu đơn giản, chuỗi, hay con trỏ. Nếu là
kiểu liệt kê, đoạn con thì phải định nghĩa trước 
thông qua từ khóa type 
 Kiểu dữ liệu của kết qủa của hàm không thể là
mảng (array), bản ghi (record), tập hợp (set) 
hay tập tin (file).
Phạm vi của biến
1. Phạm vi tác dụng 
hay tầm tác dụng 
của biến (hay hằng, 
kiểu dữ liệu, chương 
trình con) là khu vực 
mà trong đó nó có
thể sử dụng được. 
2. Ngoài khu vực đó nó
bị xem là chưa khai 
báo
30
Kiểu bảng ghi (record)
 Giải lại bài HPT
 Phân số
 Quản lý học sinh
 Đơn thức, đa thức một biết
(mảng đơn thức)
 Điểm, đoạn thẳng, tam giác
 Số phức
Mảng
 Mảng một chiều
 Nhập, Xuất
 Sắp Xếp
 Đảo ngược
 Mảng hai chiều
 Nhập, Xuất
 Sắp xếp
 Ma trận 
 tổng, hiệu, tích, 
 tính định thức, 
 chuyển vị
31
Kiểu miền con
Tập hợp (set of)
32
Nhập xuất với tập tin văn bản

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_chuong_5_lap_trinh_voi_pascal_tr.pdf