Cơ bản về Lập trình Pascal và Các Cấu trúc

MỤC LỤC

Cấu trúc tuần tự

- Một quá trình tính toán có thể coi như là một quá trình làm thay đổi giá trị của một (hay một số) ô nhớ nào đó, cho đến khi đạt được giá trị cần tìm. b) Lệnh ghép (Compound statement). Một khối chương trình thường được dùng để nhóm từ 2 lệnh trở lên để tạo thành một <Công việc> của các lệnh có cấu trúc, ta có thể gặp khái niệm này trong nhiều ví dụ ở các phần sau.

Cấu trúc rẽ nhánh

Trong chương trình trên, a ta thấy có dạng a :m :n với ý nghĩa m là số định khoảng mà phần nguyên của a sẽ chiếm chỗ và n là khoảng cho số trị phần thập phân của a. - Biểu thức chọn là kiểu rời rạc như Integer, Char, không chọn kiểu Real - Nếu muốn ứng với nhiều giá trị khác nhau của biểu thức chọn vẫn thi hành một lệnh thì giá trị đó có thể viết trên cùng một hàng cách nhau bởi dấu phẩy (,) : Giá trị k1, k2, .., kp : Lệnh k ;.

Hình 6.4:  Lưu đồ lệnh CASE .. OF
Hình 6.4: Lưu đồ lệnh CASE .. OF

Cấu trúc lặp

UNTIL thì <Công việc> sẽ được thực thi trước sau đó mới kiểm tra <Ðiều kiện>, nếu không thỏa <Ðiều kiện> thì tiếp tục thi hành <Công việc> cho đến khi <Ðiều kiện> là đúng. UNTIL thường được sử dụng trong lập trình, nhất là lúc người sử dụng muốn tiếp tục bài toán ở trường hợp thay đổi biến mà không phải trở về chương trình và nhấn tổ hợp phím Ctrl + F9 lại.

Hình 6. 6:  Lưu đồ cấu trúc WHILE .. DO
Hình 6. 6: Lưu đồ cấu trúc WHILE .. DO

CHƯƠNG TRÌNH CON VÀ ÐƠN VỊ CHƯƠNG TRÌNH

Một số khái niệm biến

- Biến cục bộ (local variable): Còn được gọi là biến riêng, là biến được khai báo ở đầu chương trình con, và nó chỉ được sử dụng bên trong thân chương trình con hoặc bên trong thân chương trình con khác nằm bên trong nó (các chương trình con lồng nhau). - Tham số thực (actual parameter) là một tham số mà nó có thể là một biến toàn cục, một biểu thức hoặc một giá trị số (cũng có thể biến cục bộ khi sử dụng chương trình con lồng nhau) mà ta dùng chúng khi truyền giá trị cho các tham số hình thức tương ứng của chương trình con.

Lời gọi chương trình con (thủ tục và hàm)

Nếu kiểu dữ liệu của các tham số hình thức là các kiểu dữ liệu có cấu trúc (kiểu array, string, kiểu record,.. ) thì việc khai báo kiểu dữ liệu cho các tham số hình thức nên được khai báo theo cách gián tiếp, tức là phải thông qua từ khóa TYPE. Các tham số trị nhận giá trị từ tham số thực khi truyền như là giá trị ban đầu, khi giá trị của tham số trị thay đổi thì nó sẽ không làm thay đổi giá trị của tham số thực, nghĩa là giá trị của tham số thực sau khi thoát khỏi chương trình con vẫn luôn bằng với giá trị của tham số thực trước khi truyền đến chương trình con đó.

Sơ đồ minh họa cách vận hành và quản lý biến của chương trình:
Sơ đồ minh họa cách vận hành và quản lý biến của chương trình:

PHẦN ĐỌC THÊM

Các Unit chuẩn

* LowVideo và NormVideo: thủ tục màn hình, khi gọi LowVideo thì mọi ký tự viết ra màn hình có độ sáng yếu dần đi cho đến khi nhận thủ tục NormVideo mới về độ sáng bình thường. Các phím chức năng từ F1 đến F10 sinh ra một trong 4 ký tự tùy theo ta dùng với tổ hợp phím Alt, Ctrl hay Shift hay dùng một mình.

Ví dụ

Chia bài toán ra thành những bài nhỏ, rồi tiếp tục chẻ những bài nhỏ này thành những phần nhỏ hơn, nếu được, chẻ tiếp những phần nhỏ này thành những mảnh nhỏ hơn nữa, sau đó giải quyế từng phần hay mảnh nhỏ này. Ðiểm cơ bản trong lập trình cấu trúc là tổ chức chương trình thành một hệ phân cấp (hierarchy) và phải điều khiển sao cho các mối tương tác giữa các thành phần trong hệ là tối thiểu.

MỘT SỐ CẤU TRÚC DỮ LIỆU CƠ SỞ

    Ta có thể gán cho biến các giá trị của kiểu tương ứng:. Biến theo định nghĩa của kiểu nào chỉ nhận giá trị của kiểu đó mà thôi. ở trên, ta không thể có MauVe := Mon ; Kiểu vô hướng liệt kê là một kiểu đếm được. Theo định nghĩa kiểu vô hướng liệt kê, thứ tự danh sách giá trị liệt kê được ngầm đánh số tăng tuyến tính bắt đầu từ số 0 trở đi theo thứ tự từ trái sang phải. b)Một số hàm chuẩn áp dụng cho kiểu vô hướng. Hàm này cho ta thứ tự của giá trị x trong kiểu vô hướng đếm được. Hàm ORD thực chất là hàm biến đổi một giá trị kiểu vô hướng đếm được sang giá trị kiểu số nguyên. Theo ví dụ trên:. Hàm này cho giá trị đứng trước x trong định nghĩa kiểu của x. Theo ví dụ trên :. Hàm này cho giá trị đứng sau x trong định nghĩa kiểu của x. Theo ví dụ trên:. * Hàm chuyển một số nguyên thành một giá trị vô hướng Tên hàm này chính là tên kiểu vô hướng mà ta đã khai báo trước. Theo ví dụ trên:. c) Viết ra và đọc vào kiểu liệt kê. Dữ liệu kiểu mảng (Array-Type Data). Một mảng dữ liệu là một tập hợp số hữu hạn phần tử có giống như các biến, có cùng kiểu, gọi là kiểu cơ bản. Mảng được được tổ chức theo một trật tự xác định. Số phần tử của mảng được khai báo ngay từ khi định nghĩa ra mảng. a) Mảng một chiều (One-Dimensional Array).

    TYPE

    Một chuỗi dữ liệu là một loạt các ký tự được định nghĩa bằng từ khoá STRING theo sau là số ký tự cực đại có thể có của chuỗi ký tự. Chiều dài tối đa của chuỗi ký tự phải là một hằng nguyên và được đặt trong dấu ngoặc vuông [ ].

    END;

    BEGIN

    Các Record lồng nhau

    Record lồng nhau là record mà có trường (field) của nó lại có kiểu là một record khác. Ta có thể định nghĩa các record lồng nhau theo một cách trực tiếp hay gián tiếp nhau và cách khai báo cũng hoàn toàn tương tự như cách khai báo record ở trên.

    WITH R2 DO

    Bản ghi có cấu trúc thay đổi

    - Trong các trường cố định, ta chọn một trường làm chỉ tiêu để phân loại cho các trường hợp mà mỗi trường hợp có một số trường khác nhau (trường thay đổi) tương ứng với từng giá trị mà trường làm chỉ tiêu phân loại nhận. Ghi chú: Danh sách của trường thay đổi tùy thuộc vào từng giá trị cụ thể của trường phân loại, dấu ngoặc đơn ( .. ) bao danh sách của trường thay đổi là bắt buộc phải có kể cả khi nó rỗng.

    INPUT OUTPUT

    Vòng WHILE - DO bên trong thực hiện thao tác đọc một dòng văn bản từ oldtext và viết vào newtext. Vòng WHILE - DO bên ngoài thực hiện thao tác lặp lại trên cơ sở từng dòng cho đến khi nhận được chỉ thị end-of-file trong oldtext. d) Các thiết bị ngoại vi coi như text file. Từ Turbo Pascal version 3.0 trở đi, chúng ta có thể sử dụng các câu lệnh gọi các thiết bị ngoại vi như các text file nghĩa là việc xuất nhập được thực hiện bằng các thao tác như với text file.

    END; (* CASE *)

    Thông tin này sẽ được mã hóa, mỗi ký tự một lần, sau đó được trữ trong tập tin văn bản text. Nếu người sử dụng bây giờ chọn số 2, dữ liệu đã mã hóa sau sẽ được đọc từ tập tin văn bản code và thể hiện ra màn hình.

    ÐỒ HỌA TRONG TURBO PASCAL

    Việc nhớ các loại màn hình và mốt màn hình là điều gây dễ nhầm lẫn, do vậy ta có thể để cho máy tự động dò tìm loại và mốt màn hình. Như vậy ở chương trình trên ta bỏ dòng (1) thì khi thực hiện máy sẽ tự động dò tìm (DECTECT), đây là điểm rất hay vì nó sẽ cho khởi động loại màn hình đang sử dụng và mốt đồ họa có độ phân giải cao nhất.

    DETECT (0)

      SetLineStype(linestyle:word;pattern:word;thickness:word);. Với tham số LineStyle có các giá trị như bảng 5 sau:. Bảng 5: Tham số LineStyle Hằng Giá trị Diễn giải SolidLn. DottedLn CenterLn DashedLn UserBitLn. Nét đậm Nét chấm Nét chấm gạch Nét gạch. Mẫu tự tạo Với tham số thickness có các giá trị như bảng 6 sau:. Bảng 6: Tham số Thickness. Hằng Giá trị Diễn giải. Bề dày bình thường Bề dày đậm. Các hình không tô. a) Thủ tục vẽ hình chữ nhật. b) Thủ tục vẽ hình tròn. SetTextStyle(font,direction,charsize:word);. Với: Tham số font có thể nhận một trong các giá trị sau:. Hằng DefauFont hay giá trị 0. Hằng TriplexFont hay giá trị 1 Hằng SmallFont hay giá trị 2 Hằng SansSerifFont hay giá trị 3 Hằng GothicFont hay giá trị 4 Tham số direction có thể nhận một trong các giá trị sau:. Hằng HorizDir hay giá trị 0 Hằng VertDir hay giá trị 1. Tham số charsize là cỡ ký tự và nó có thể nhận một trong các giá trị từ 1 đến 10. b) Thủ tục đặt chế độ căn chỉnh chuỗi văn bản SetTextJustify(horiz, vert :word);. Tham số horiz có thể là một trong các hằng: LeftText, CenterText, RightText. Tham số vert có thể là một trong các hằng: BottomText, CenterText, TopText. c) Thủ tục hiển thị chuỗi văn bản tại vị trí con nháy OutText (text:string);. d) Thủ tục hiển thị chuỗi văn bản tại tọa độ (x,y) OutTextXY (x,y:integer;text:string);.

      Bảng 2:     Các lỗi  đồ họa
      Bảng 2: Các lỗi đồ họa