Bài 19: Thư viện chương trình con chuẩn | Tin học | Chương 6: Chương trình con và lập trình có cấu trúc - Lớp 11 - Giáo Dục Việt Nam


Mỗi ngôn ngữ lập trình đều có một số lượng phong phú các chương trình con chuẩn trong các thư viện. Dưới đây giới thiệu sơ lược nội dung của một số thư viện chương trình con chuẩn của Pascal.

1. CRT

Thư viện crt chứa các thủ tục liên quan đến việc quản lí và khai thác màn hình, bàn phím của máy tính. Dùng các thủ tục của thư viện này, người lập trình có thể điều khiển việc đưa dữ liệu ra màn hình, xây dựng các giao diện màn hình-bàn phím, dùng bàn phím điều khiển chương trình hoặc sử dụng âm thanh để xây dựng các chương trình mô phỏng.

Ngoài thủ tục clrscr đã giới thiệu, dưới đây là một số thủ tục tiện ích khác:

Thủ tục TextColor(color) đặt màu cho chữ trên màn hình, trong đó color là hằng hoặc biến xác định màu và có thể nhận giá trị trong bảng sau:

hinh-anh-bai-19-thu-vien-chuong-trinh-con-chuan-4718-0

Thủ tục TextBackground(color) đặt màu cho nền của màn hình, trong đó color là hằng hoặc biến xác định màu và có thể nhận giá trị trong bảng trên.

Thủ tục GotoXY(x, y) đưa con trỏ tới vị trí cột x dòng y của màn hình văn bản. Do màn hình văn bản gồm 25 dòng và 80 cột nên phạm vi giá trị của các tham số là 1<=x<=80, 1<=y<=25

2. GRAPH

Mặc dù Pascal không phải là ngôn ngữ chuyên về đồ hoạ, nhưng với thư viện đồ hoạ người lập trình có thể khai thác khả năng đồ hoạ của máy tính ở những mức độ thông dụng.

Thư viện này chứa các hàm, thủ tục liên quan đến chế độ đồ hoạ của các loại màn hình khác nhau và cho phép thực hiện các thao tác đồ hoạ cơ bản như vẽ điểm, đường, tô màu,...

a) Các thiết bị và chương trình hỗ trợ đồ hoạ

Màn hình có thể làm việc trong hai chế độ: chế độ văn bản và chế độ đồ hoạ. Có thể hình dung màn hình như một bảng các điểm sáng. Hình ảnh đồ hoạ được xây dựng từ các điểm sáng. Mỗi điểm sáng là một điểm ảnh (pixel) và điểm ảnh là đơn vị cơ sở của màn hình đồ hoạ.

Bảng mạch điều khiển màn hình là thiết bị đảm bảo tương tác giữa bộ xử lí và màn hình để thực hiện các chế độ phân giải và màu sắc. Tên gọi của bảng mạch điều khiển màn hình thường trùng với loại màn hình, ví dụ VGA, SVGA,...

Trong Turbo Pascal, thư viện graph cung cấp các chương trình điều khiển tương ứng với các loại bảng mạch đồ hoạ. Các chương trình điều khiển này nằm trong các tệp có phần mở rộng là BGI (Borland Graphics Interface). Muốn hoạt động trong chế độ đồ hoạ, cần phải có tệp BG thích hợp với màn hình đang dùng. Các tệp BGI được Pascal ngầm định để trong thư mục con BGL. Khi khởi động đồ hoạ, cần chỉ rõ đường dẫn đến các tệp này.

Toạ độ trên màn hình đồ hoạ được đánh số từ 0, cột được tính từ trái sang phải và dòng được tính từ trên xuống dưới. Độ phân giải màn hình VGA thường được đặt là 640×480.

b) Khởi tạo chế độ đồ hoạ

Một chương trình đồ hoạ bao giờ cũng mở đầu bằng việc khởi tạo chế độ đồ hoạ. Các thủ tục, hàm của thư viện graph chỉ hoạt động khi chế độ đồ hoạ đã được thiết lập. Khi kết thúc làm việc với chế độ đồ hoạ thì cần quay về chế độ văn bản.

Thủ tục sau dùng để thiết lập chế độ đồ hoạ:
procedure InitGraph (var driver, mode: integer; path: string);
trong đó:

- driver là số hiệu của trình điều khiển BGI
- mode là số hiệu của độ phân giải;
- path là đường dẫn đến các tệp BGI.

Thông thường, ta nên sử dụng cách thiết lập chế độ đồ hoạ tự động với biến driver được gán giá trị 0 (được định sẵn bằng hằng detect).

Ví dụ
Giả sử màn hình làm việc là VGA và các tệp BG đang để ở thư mục C:\TP\BGI, khi đó các lệnh sau sẽ thiết lập đồ hoạ với chế độ VGAHi:
driver:= 0;
InitGraph (driver, mode, 'C:\TP\BGI');

Sau khi kết thúc làm việc với chế độ đồ hoạ, để trở về chế độ văn bản ta gọi thực hiện thủ tục:
CloseGraph;

c) Các thủ tục vẽ điểm, đoạn thẳng

Vẽ điểm và đoạn thẳng là hai thao tác cơ bản của đồ hoạ.

  • Trước khi vẽ, ta có thể đặt màu cho nét vẽ bằng thủ tục:
    procedure SetColor (color: word);
  • Vẽ điểm được thực hiện bằng thủ tục:
    procedure PutPixel (x, y: integer; color: word);
    trong đó:
    - x và y là toạ độ của điểm;
    - color là màu của điểm.
  • Đoạn thẳng được xác định bởi toạ độ của hai điểm đầu, cuối. Để vẽ đoạn thẳng nối hai điểm ta sử dụng thủ tục:
    procedure Line (x1, y1, x2, y2: integer);
    trong đó (x1, yl) và (x2, y2) là các toạ độ của hai điểm đầu, cuối của đoạn thẳng.
  • Vẽ đoạn thẳng nối điểm hiện tại (vị trí con trỏ) với điểm có toạ độ (x, y):
    procedure LineTo(x, y: integer);
  • Vẽ đoạn thẳng nối điểm hiện tại với điểm có toạ độ bằng toạ độ hiện tại cộng với gia số (dx, dy):
    procedure LineRel (dx, dy: integer);

d) Các thủ tục và hàm liên quan đến vị trí con trỏ

  • Các hàm xác định giá trị lớn nhất có thể của toạ độ màn hình X và Y (để biết độ phân giải màn hình trong chế độ đồ hoạ đang sử dụng):
    function GetMaxX: integer;
    function GetMaxY: integer;
  • Thủ tục chuyển con trỏ tới toạ độ (x, y):
    procedure MoveTo(x, y: integer);

e) Một số thủ tục vẽ hình đơn giản

  • Vẽ đường tròn có tâm tại (x, y), bán kính r:
    procedure Circle (x, y: integer; r: word);
  • Vẽ cung của elip có tâm tại điểm (x, y) với các bán kính trục X, Yr từ góc khởi đầu StAngle đến góc kết thúc EndAngle:
    procedure Ellipse (x, y: integer; StAngle, EndAngle, Xr, Yr: word);
  • Vẽ hình chữ nhật có các cạnh song song với các trục toạ độ, (x1, y1) là toạ độ của đỉnh trái trên còn (x2, y2) là toạ độ của đỉnh phải dưới:
    procedure Rectangle (x1,y1, x2,y2: integer);

3. Một số thư viện khác

System: Trong thư viện chuẩn này chứa các hàm sơ cấp và các thủ tục vào/ra mà các chương trình đều dùng tới.
Dos: Thư viện này chứa các thủ tục cho phép thực hiện trực tiếp các lệnh như tạo thư mục, thiết lập giờ hệ thống,
Printer: Thư viện này cung cấp các thủ tục làm việc với máy in.

4. Sử dụng thư viện

Muốn sử dụng các thủ tục và hàm chuẩn của một (một số) thư viện nào đó (trừ system) phải dùng lệnh khai báo:
uses unitl, unit2,..., unitN;

trong đó, uses là từ khoá, unitl, unit2, ..., unitN là tên các thư viện (được viết cách nhau bởi dấu phẩy).

Khai báo này phải là lệnh đầu tiên trong phần khai báo (nghĩa là nó chỉ viết sau khai báo tên chương trình).

Ví dụ
Để sử dụng các hàm và thủ tục chuẩn trong các thư viện crt, dos, graph, ta cần khai báo:
uses crt, dos, graph;

Bài tập và thực hành

1. Mục đích, yêu cầu

Giới thiệu một số chương trình để học sinh thấy được khả năng đồ hoạ của Pascal.

2. Nội dung

a) Chương trình sau đây vẽ các đường gấp khúc "ngẫu nhiên" nhờ thủ tục LineTo, mỗi đoạn có một màu ngẫu nhiên. Vị trí bắt đầu vẽ là tâm của màn hình. Kết thúc việc vẽ bằng cách nhấn một phím bất kì. Chạy thử chương trình và quan sát kết quả trên màn hình.

uses crt, graph;

var
  stop: boolean;

function DetectInit(path: string): integer;
var
  drive, mode: integer;
begin
  drive := 0;
  InitGraph(drive, mode, path);
  DetectInit := GraphResult;
end;

begin
  if DetectInit('C:\TP\BGI') <> 0 then
  begin
    writeln('Loi do hoa! Nhan phim Enter de ket thuc...');
    readln;
  end
  else
  begin
    Randomize;
    MoveTo(GetMaxX div 2, GetMaxY div 2);
    stop := false;
    while not stop do
    begin
      SetColor(Random(GetMaxColor));
      { Thiet lap mau mot cach ngau nhien }
      LineTo(Random(GetMaxX), Random(GetMaxY));
      Delay(200); { Tam dung }
      stop := KeyPressed;
    end;
  end;
  CloseGraph;
end.

b) Chương trình dưới đây minh hoạ việc sử dụng các thủ tục vẽ hình đơn giản. Hãy chạy chương trình rồi thay đổi một số tham số như màu vẽ, toạ độ và quan sát kết quả trên màn hình.

program GraphDemo;
uses graph;

var
  gd, gm: integer;
  xm, ym: word;

begin
  gd := Detect;
  InitGraph(gd, gm, 'C:\TP\BGI');
  
  xm := GetMaxX div 2;
  ym := GetMaxY div 2;

  { Vẽ hình chữ nhật với nét vẽ màu vàng }
  SetColor(Yellow);
  Rectangle(10, 10, xm, ym);

  readln;

  { Vẽ đường tròn màu xanh lá cây, tâm (450, 100) bán kính 50 }
  SetColor(LightGreen);
  Circle(450, 100, 50);

  readln;

  { Vẽ ellipse màu đỏ }
  SetColor(Red);
  Ellipse(100, 200, 0, 360, 50, 120);

  readln;

  CloseGraph;
end.

TÓM TẮT

  • Chương trình con đóng vai trò quan trọng trong lập trình, đặc biệt trong lập trình có cấu trúc.
  • Dùng chương trình con sẽ thuận lợi cho việc tổ chức, viết, kiểm tra chương trình và sử dụng lại.
  • Chương trình con có phần đầu, phần khai báo và phần thân.
  • Chương trình con có thể có tham số hình thức khi khai báo và được thay bằng tham số thực sự khi gọi. Các tham số hình thức và thực sự phải tương ứng về thứ tự và kiểu dữ liệu.
  • Chương trình con được gọi bằng tên của nó.
  • Biến được khai báo trong chương trình con là biến cục bộ.
  • Thư viện cung cấp những chương trình con chuẩn mở rộng khả năng ứng dụng.

CÂU HỎI VÀ BÀI TẬP

1. Hãy nêu sự giống nhau và khác nhau giữa thủ tục và hàm.
2. Chương trình con có thể không có tham số được không? Cho ví dụ. 3. Hãy cho ví dụ chương trình con có nhiều hơn một kết quả ra.
4. Viết chương trình con (hàm, thủ tục) tính bội số chung nhỏ nhất của hai số nguyên dương a, b. Hãy cho biết trong trường hợp này viết chương trình con dưới dạng hàm hay thủ tục là thuận tiện hơn ? Vì sao?

hinh-anh-bai-19-thu-vien-chuong-trinh-con-chuan-4718-1

hinh-anh-bai-19-thu-vien-chuong-trinh-con-chuan-4718-2
hinh-anh-bai-19-thu-vien-chuong-trinh-con-chuan-4718-3

Tin tức mới


Đánh giá

Bài 19: Thư viện chương trình con chuẩn | Tin học | Chương 6: Chương trình con và lập trình có cấu trúc - Lớp 11 - Giáo Dục Việt Nam

Tổng số sao của bài viết là: 5 trong 1 đánh giá
Xếp hạng: 5 / 5 sao

Bình Luận

Để Lại Bình Luận Của Bạn

Tin tức mới

Bộ Sách Lớp 11

Giáo Dục Việt Nam

Bộ Sách Giáo Khoa của Nhà Xuất Bản Giáo Dục Việt Nam

Tài liệu học tập

Đây là tài liệu tham khảo hỗ trợ trong quá trình học tập

Kết Nối Tri Thức Với Cuộc Sống

Sách giáo khoa của nhà xuất bản Kết Nối Tri Thức Với Cuộc Sống

Sách Giáo Dục Việt Nam

Lớp 6

Sách giáo khoa dành cho lớp 6

Lớp 5

Sách giáo khoa dành cho lớp 5

Lớp 4

Sách giáo khoa dành cho lớp 4

Lớp 3

Sách giáo khoa dành cho lớp 3

Lớp 7

Sách giáo khoa dành cho lớp 7

Lớp 8

Sách giáo khoa dành cho lớp 8

Lớp 9

Sách giáo khoa dành cho lớp 9

Lớp 10

Sách giáo khoa dành cho lớp 10

Lớp 11

Sách giáo khoa dành cho lớp 11

Lớp 12

Sách giáo khoa dành cho lớp 12

Liên Kết Chia Sẻ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.