Các biến được khai báo trong chương trình chính được gọi là biến toàn cục. Các biến này có thể được dùng ở mọi nơi trong chương trình và nó chiếm dụng bộ nhớ đến khi nào chương trình thoát mới được giải phóng. Các biến được khai báo trong một chương trình con được gọi là biến địa phương và nó chỉ có tác dụng trong phạm vi chương trình con đó. Khi chương trình con kết thúc thì các biến này cũng bị giải phóng khỏi bộ nhớ.
Ví dụ về cách sử dụng biến địa phương và biến toàn cục:
Program su_dung_bien; Var i:integer; (*---*) Procedure bien_dia_phuong; Var i: integer; Begin
117 i:=5; Writeln(i:6); End; (*---*) Begin i:=5; Writeln(i:6); Bien_dia_phuong; Writeln(i:6); Readln End.
Khi chạy chương trình, kết quả cho ra là: 5 (Đây là giá trị của i toàn cục)
7 (Đây là giá trị của i địa phương)
5 (Đây là giá trị của i toàn cục)
Trong ví dụ ở trên, chúng tôi muốn sử dụng biến i được dùng cho cả biến toàn cục và biến địa phương để minh họa về cách Pascal dùng biến. Đầu tiên, biến i toàn cục nhận giá trị bằng 5. Sau đó thủ tục bien_dia_phuong được gọi. Vì lúc này cũng có biến tên là i (biến được khai báo trong chương trình con) nên biến i toàn cục được xem như tạm bị che chắn, không dùng đến. Lúc này biến địa phương lấy giá trị bằng 7. Sau khi thoát khỏi chương trình con, biến i địa phương bị giải phóng và biến toàn cục lại được khôi phục lại. Lúc nào nó vẫn giữ giá trị bằng 5 là giá trị có được trước khi gọi thủ tục bien_dia_phuong.
Các chương trình con có sẵn của Pascal như:
- Các hàm số học: Abs, Arctan, Cos, Sin, Exp, Ln, Sqrt, Sqr - Các hàm vô hướng: Succ, Pred, Odd
- Các hàm chuyển đổi: Chr, Ord, Round, Trunc
Ngoài ra, Pascal còn có một số hàm và thủ tục thông dụng được liệt kê trong bảng dưới đây để bạn đọc tham khảo, sử dụng khi cần thiết.
118
TT Tên hàm/thủ tục Tác dụng Thuộc Unit
1 Thủ tục
GotoXY(x, y)
Thủ tục đưa con trỏ của màn hình về
vị trí có tọa độ (x,y) trên màn hình CRT
2 Thủ tục Clrscr Thủ tục Clear Screen có tác dụng xóa
toàn bộ màn hình và đặt con trỏ về vị trí phía trên bên trái.
CRT
3 Thủ tục DelLine Xóa toàn bộ dòng màn hình chứa con
trỏ CRT
4 Thủ tục DelEol Xóa toàn bộ các kí tự bên phải con trỏ
màn hình. Sau khi xóa, con trỏ vẫn ở tại chỗ. CRT 5 Thủ tục InsLine Chèn một dòng trắng vào màn hình từ vị trí con trỏ. CRT 6 Thủ tục LowVideo và NormVideo
Sau khi gọi Lowvideo, mọi kí tự viết ra màn hình đều có độ sáng yếu đi cho tới khi gọi thủ tục NormVideo.
CRT
7 Thủ tục
Delay(time)
Tạo thời gian trễ (khoảng mili giây). Tham số time là số nguyên. Delay thường được dùng để làm chậm chương trình hoặc tạo điểm dừng cho xem nội dung một khoảng thời gian nào đó.
CRT
8 Thủ tục Sound(f)
và NoSound
Tạo ra dao động âm thanh với tần số F (F là số nguyên) cho đến khi gặp thủ tục Nosound thì mới tắt tiếng.
CRT
Bảng 12 - Một số hàm, thủ tục thông dụng
119
Câu hỏi và bài tập chương 3
1. Hãy viết chương trình in ra giữa màn hình dòng chữ Welcome to Hethongthongtin Noivu với màu đỏ và nhấp nháy.
Gợi ý: Sử dụng hàm Gotoxy, TextColor
2. Hãy viết chương trình in ra màn hình máy tính mô hình tam giác và chữ nhật bằng các ký tự hoa thị (*)
3. Hãy viết chương trình đọc 4 số từ bàn phím, lưu trữ vào các biến a, b, c, d sau đó tính tổng của chúng và in kết quả ra màn hình.
4. Không sử dụng máy tính, anh/chị hãy kiểm tra và sửa lỗi trong chương trình sau:
Var x: Integer ; Begin
x := 8 / 2 ; end.
5. Hãy xác định kết quả hiển thị trên màn hình sau khi thực hiện chương trình sau:(không sử dụng máy tính)
Uses CRT; Var X: Real; Begin
X := 1.2 ; Clrscr ; gotoxy(30, 13 );
TextColor (RED + BLINK ); Write( ' X*2 = ', X*2:8:2); ReadKey;
End.
6. Viết chương trình tính giá trị trung bình của ba số a, b, c ( a,b,c là các số dương và được nhập vào từ bàn phím).
7. Hãy viết chương trính hoán vị giá trị của hai biến a, b 8. Hãy viết chương trình để thực hiện các công việc sau;
- Nhập một số thuộc bảng mã ASCII, in ra ký tự đại diện cho số đó
120
- Nhập một ký tự từ bàn phím, hiển thị mã ASCII của ký tự đó
Gợi ý: Sử dụng hàm Ord và Chr để chuyển đổi từ ký tự sang số và ngược lại 9. Hãy xác định kết quả hiển thị trên màn hình sau khi thực hiện chương trình sau:(không sử dụng máy tính) Uses CRT; Var ch : Char ; Begin Clrscr; ch := 'A' ; Writeln ( Chr ( Ord(ch) - 33)); Readln; End.
10. Viết chương trình tính chu vi và diện tích của hình chữ nhật.
11. Biết rằng bộ ba số nguyên dương a, b, c được gọi là bộ số Pi-ta-go nếu tổng các bình phương của hai số bằng bình phương của số còn lại. Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có là bộ số Pi-ta-go hay không.
12. Nhập 3 giá trị đại diện cho 3 cạnh của tam giác vào từ bàn phím. Kiểm tra xem 3 cạnh đó có đúng là ba cạnh của tam giác hay không. Nếu đúng thì:
a. In ra màn hình chu vi và diện tích của tam giác đó (sử dụng công thức Heron).
b. Cho biết tam giác này là tam giác thường, vuông, cân hay đều.
c. Nếu sai thì in ra màn hình 3 giá trị nhập vào không phải là 3 cạnh của tam giác
Ghi chú: Trong hình học, công thức Heron là công thức tính diện tích của một tam giác theo độ dài 3 cạnh. Gọi S là diện tích và độ dài 3 cạnh tam giác lần lượt là a, b, và c.
𝑆 = √𝑝 (𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐) ; 𝑣ớ𝑖 𝑝 = 𝑎 + 𝑏 + 𝑐 2
13. Dãy F là dãy Phi-bo-na-xi nếu:
𝐹0 = 0; 𝐹1 = 1; 𝐹𝑁 = 𝐹𝑁−1 + 𝐹𝑁−2; 𝑣ớ𝑖 𝑁 ≥ 2
121
Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi-bo-na-xi. Chương trình của bạn thực hiện với giá trị lớn nhất của N là bao nhiêu?
14. Xây dựng menu sau:
a. Tính diện tích, chu vi hình chữ nhật b. Tính diện tích, chu vi hình tròn c. Tính diện tích, chu vi hình tam giác d. Không tính toán.
Lựa chọn của bạn?
Người sử dụng sẽ chọn một trong các mục trên bằng cách sử dụng ký hiệu ở đầu mỗi mục của menu. Lựa chọn mục nào sẽ thực hiện chức năng của mục đó. Ví dụ: Người sử dụng nhấn vào ký tự “c” hoặc “C”, chương trình sẽ yêu cầu người sử dụng nhập vào độ dài các cạnh của một tam giác, sau đó chương trình sẽ tính toán và hiển thị diện tích và chu vi của tam giác đó.
15. Anh/chị hãy sử dụng chương trình con (dạng thủ tục và hàm) viết chương trình tính n giai thừa (n!)
122
TÀI LIỆU THAM KHẢO CHƯƠNG 3
[1]. Quách Tuấn Ngọc (2003), Ngôn ngữ lập trình Pascal (Chương 3, 4), Nhà
xuất bản Thống kê.
[2]. Nguyễn Ngọc Cương (Chủ biên) (2015), Giáo trình ngôn ngữ lập trình Pascal (Chương 3), Nhà xuất bản Thông tin truyền thông.
[3]. Bùi Thế Tâm (2004), Giáo trình Turbo Pascal 7.0 (Chương 4,5), Nhà xuất
bản Giao thông vận tải
[4]. Nguyễn Tô Thành (2001), Lập trình nâng cao trên ngôn ngữ Pascal (Chương
2), Nhà xuất bản Đại học quốc gia Hà Nội