Giới thiệu lập trình có cấu trúc trong Pascal

Thứ bảy - 01/08/2020 09:47

Một ngôn ngữ có cấu trúc khối là ngôn ngữ mà ta có thể tách các thông tin dữ liệu (biến, hằng...) và các lệnh cần dùng cho một nhiệm vụ xác định thành những khối, tách ra khỏi phần còn lại của chương trình để người lập trình có thể giải quyết dần từng phần một, từng khối một và thậm chí có thể có nhiều người tham gia lập trình, mỗi người phụ trách một vài khối.

1. MỤC ĐÍCH
Muốn công nghệ hóa hoạt động lập trình người ta phải quan tâm giải quyết các vấn đề sau:
- Phải xây dựng chương trình không chỉ với mục đích cho máy hiểu mà người cũng phải hiểu, tức là chương trình trong sáng, dễ đọc, dễ hiểu.
- Trong trường hợp chương trình có lỗi hoặc trong trường hợp muốn sửa đổi chương trình cho tốt hơn, mạnh hơn, người sử dụng chương trình có thể sửa đổi một cách dễ dàng.
Một trong các giải pháp cho các vấn đề trên là phương pháp viết chương trình thành các khối lớn hơn. Để đọc chương trình người ta tiến hành đọc từ sơ đồ chính sau đó tìm hiểu đến từng khối. Khi phát hiện thấy sai sót hoặc có yêu cầu phải sửa chữa ở khối nào thì chỉ tiến hành sửa đối ở khối đó.
Ban đầu các nhà nghiên cứu tin học sử dụng 3 khối đơn vị chính gọi là các cấu trúc và chỉ cần 3 cấu trúc đó là có thể triển khai mọi thuật toán, đó là các cấu trúc:
- Gán (X:= A)
- Chuyển đến (GOTO)
- Rẽ nhánh (Nếu... thì...)
Nhưng kinh nghiệm cho thấy không nên lạm dụng cấu trúc GOTO, vì nó sẽ .làm chương trình rắc rối khó hiểu. Một chương trình được viết một cách tùy tiện, không có tổ chức, nghĩ đến đâu viết đến đó thường chứa nhiều lệnh GOTO, phát biểu GOTO là cho chương trình rườm ra, khó đọc, khó hiểu, khó kiêm soát và khó cải tiến, sửa sai.

2. PASCAL LÀ MỘT NGÔN NGỮ CÓ CẤU TRÚC
Một ngôn ngữ có cấu trúc khối là ngôn ngữ mà ta có thể tách các thông tin dữ liệu (biến, hằng...) và các lệnh cần dùng cho một nhiệm vụ xác định thành những khối, tách ra khỏi phần còn lại của chương trình để người lập trình có thể giải quyết dần từng phần một, từng khối một và thậm chí có thể có nhiều người tham gia lập trình, mỗi người phụ trách một vài khối. Thông thường các khối ứng với các nhiệm vụ cụ thể xác định, được thực hiện bằng các chương trình con với các biến địa phương là các biến tạm thời của chương trình con đó. Có thể nói ngôn ngữ PASCAL được thiết kế nhằm đáp ứng tất cả các yêu cầu trên của lập trình cấu trúc. Tính cấu trúc của PASCAL được thể hiện trên 3 mặt:
- Cấu trúc về mặt dữ liệu: từ các dữ liệu đó ta có thể xây dựng các cấu trúc dữ liệu phức tạp hơn.
- Cấu trúc về mặt lệnh: từ các lệnh đã có (lệnh đơn giản hoặc lệnh có cấu trúc) ta có thể nhóm chúng lại với nhau và đặt giữa hai từ khóa Begin và End thành câu lệnh phức tạp hơn, gọi là lệnh hợp hay lệnh ghép.
- Cấu trúc về mặt chương trình: Một chương trình có thể chia thành các chương trình con độc lập (gọi là các Môđun).

3. PHƯƠNG PHÁP LẬP TRÌNH CẤU TRÚC
a) Thiết kế từ trên xuống
Là cách phân tích tổng quát toàn bộ vấn đề, thiết kế những công việc chính yếu rồi sau đó mới đi vào giải quyết các phần chi tiết cụ thể.
b) Viết chương trình có tính rõ ràng dễ hiểu đối với người
Nghĩa là khi đọc chúng ta có thể giải đáp dễ dàng các câu hỏi sau:
WHAT        Chương trình làm gì ?
HOW          Chương trình làm thế nào ?
WHY          Tại sao chương trình làm như vậy ?
c) Chỉ sử dụng các cấu trúc điểu khiển chuẩn sau
•  Cấu trúc ghép tuần tự:


• Cấu trúc lặp LOOP - EXIT

Q := False;
REPEAT
     S1;
     If Điều kiện THEN q:= True
     ELSE S2;
UNTIL q 

• Gọi chương trình con:
Có dạng: Tên chương trình con (Các tham số)
Tóm lại một chương trình có cấu trúc chỉ nên và chỉ cần sử dụng các cấu trúc điều khiển đã nêu trên.
Sau đây là các ví dụ diễn tả các cấu trúc bằng PASCAL.

■ Ví dụ 1:
Mặc dù hơi khó đấy, nhưng lưu đồ này có dạng đơn giản sau:

Repeat S
Until Cl or (not C2)
• Chú ý: Khi có điều kiện ở cuối vòng lặp thì nên nghĩ đến cẩu trúc Repeat.

■ Ví dụ 2:

While C1 do
If C2 then S1 else S2
Điều kiện xét trước: nghĩ tới vòng While.

■ Ví dụ 3:
Hình vẽ cho thấy một cấu trúc loop-exit. Có thể dùng repeat. Ở đây đưa ra cách dùng While:

q := false
while not q do
begin
    S1;
    if not C1 then q := true
    else if C2 then S2
end;

■ Ví dụ 4:
Đây là một loop-exit mở rộng. Ta dùng biến boolean q để đánh dấu điểm thoát của vòng lặp: tại những điểm thoát, cho q có trị là true, q không được xuất hiện trong các phát biểu và điều kiện c.
Bản quyền bài viết thuộc về Sachgiai.com. Ghi nguồn Sách giải.com khi đăng lại bài viết này.

  Ý kiến bạn đọc

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây