1.Thuật giải
Thuật giải (algorithm) là một tập hữu hạn các thao tác (các công việc, các phép toán) có thể đặt tên được và chúng được thực hiện theo một trình tự thích hợp trên một số đối tượng để đạt được mục đích mong muốn. "Hữu hạn" ở đây được hiểu cả về mặt thời gian thực hiện lẫn công cụ thực hiện.
2. Chương trình
Chương trình là tập hợp dãy các lệnh điều khiển máy tính thực hiện. Như vậy, có thể nói một chương trình là một cách diễn tả thuật giải trong một ngôn ngữ chính xác để máy tính có thể hiểu được.
Thuật toán + Cấu trúc dữ liệu = Chương trình
118 trang |
Chia sẻ: lylyngoc | Lượt xem: 1722 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Phần III: Ngôn ngữ lập trình Pascal, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Phần III: Ngôn ngữ lập trình Pascal Chương 1: Thuật giải và chương trình I. Khái niệm 1.Thuật giải Thuật giải (algorithm) là một tập hữu hạn các thao tác (các công việc, các phép toán) có thể đặt tên được và chúng được thực hiện theo một trình tự thích hợp trên một số đối tượng để đạt được mục đích mong muốn. "Hữu hạn" ở đây được hiểu cả về mặt thời gian thực hiện lẫn công cụ thực hiện. 2. Chương trình Chương trình là tập hợp dãy các lệnh điều khiển máy tính thực hiện. Như vậy, có thể nói một chương trình là một cách diễn tả thuật giải trong một ngôn ngữ chính xác để máy tính có thể hiểu được. Thuật toán + Cấu trúc dữ liệu = Chương trình II. Các đặc trưng của thuật toán Thuật toán trong tin học phải có các tính chất sau: + Tính dừng: Thuật toán phải kết thúc sau một số hữu hạn bước. + Tính xác định: Các thao tác ở mỗi bước phải hết sức rõ ràng và chỉ được hiểu theo một nghĩa duy nhất. Trong cùng một điều kiện hai máy khác nhau hoặc hai lần thao tác khác nhau phải cho cùng một kết quả khi thực hiện cùng một thuật toán. + Tính hàng loạt: Thuật toán có hiệu lực như nhau đối với các bài toán cùng loại (có cùng miền áp dụng thuật toán). + Tính khả thi: Thuật toán phải bao gồm các thao tác mà máy có thể thực hiện được nghĩa là chỉ bao gồm những phép toán số học, các phép so sánh, các phép logic, các phép nhập xuất thông tin tiêu chuẩn. + Tính đầy đủ: Thuật toán phải vét được hết các tình huống, các khả năng có thể xảy ra, không bỏ sót bất kỳ một trường hợp nào. III. Các dạng diễn tả thuật toán 1. Diễn đạt bằng văn bản (ngôn ngữ tự nhiên) Ví dụ1: Thuật giải nấu cơm có thể được viết như sau: Bước 1: lấy gạo theo định lượng cần thiết Bước 2: vo gạo và đổ nước vào nồi Bước 3: đun sôi cạn nước Bước 4: giữ lửa nhỏ Bước 5: cách 5 phút một nếm cơm xem chín chưa. Nếu chưa chín quay về bước 5 Nếu đã chín thì chuyển sang bước 6 Bước 6: tắt lửa và bắc nồi cơm ra. Kết thúc Cách diễn đạt bằng văn bản này tuy khá đơn giản và gần gũi với tư duy của con người nhưng phụ thuộc rất nhiều vào cách diễn đạt của người sử dụng. Vì vậy nó không tránh khỏi có những chỗ rườm rà khiến cho người đọc không có được một cái nhìn khái quát với toàn bộ thuật toán. III. Các dạng diễn tả thuật toán 2. Diễn đạt bằng ngôn ngữ lập trình Ngôn ngữ lập trình (language program) là ngôn ngữ do các chuyên gia tin học tạo ra chuyên dùng để viết chương trình cho máy tính. Nó được xây dựng khá đơn giản về chính tả và ngữ pháp khá gần gũi với ngôn ngữ khoa học kỹ thuật, quản lý. 3. Diễn đạt bằng lưu đồ Một số ký hiệu hay dùng: Điểm bắt đầu và chấm dứt thuật toán Thao tác nhập hay xuất dữ liệu Khối xử lý công việc Khối quyết định lựa chọn Điểm nối Chuẩn bị Khối chương trình con Đường đi của chương trình Ví dụ 2: Thuật toán giải phương trình bậc nhất ax + b = 0, gồm các bước: Bước 1: Nhập vào 2 hệ số a và b. Bước 2: Xét điều kiện a = 0 ? Nếu đúng là a = 0, thì đi đến bước 3. Nếu không, nghĩa là a ≠ 0, thì đi đến bước 4. Bước 3: Xét điều kiện b = 0 ? Nếu b = 0, thì báo phương trình có vô số nghiệm. Chuyển đến bước 5. Nếu b 0, thông báo phương trình vô nghiệm. Chuyển đến bước 5. Bước 4: Phương trình có một nghiệm duy nhất là x = - b/a. Bước 5: Kết thúc thuật toán Ví dụ 3 : Tính tổng S của n số nguyên đầu tiên, ta tiến hành theo hai thuật giải sau: Ví dụ 4: Thuật giải đổi chỗ Viết thuật giải để nhập vào 2 số A, B từ bàn phím sau đó đổi giá trị của biến A cho biến B và ngược lại. Dùng thêm một biến trung gian (TG) sau đó tiến hành: Chuyển giá trị của biến A cho biến TG Chuyển giá trị của biến B cho biến A Chuyển giá trị của biến TG cho biến B. Ví dụ 5: Thuật giải tìm số lớn nhất trong 2 số Bài tập 1. Viết thuật giải nhập 1 số từ bàn phím và in ra bình phương của số đó nếu số đó là số dương. 2.Viết thuật giải nhập từ bàn phím một số tự nhiên N và in ra các số nguyên trong phạm vi từ 1 đến N 3. Viết thuật giải nhập từ bàn phím 2 số tự nhiên m, n (mn UCLn(m,n-m) với n>m BCNN(m,n)=(m*n)/UCLN(m,n) CHƯƠNG 2: Các khái niệm cơ bản của Pascal I. Giới thiệu Pascal là ngôn ngữ lập trình cấp cao do giáo sư Niklaus Writh (trường ĐH kỹ thuật Zurich, Thuỵ sỹ) sáng tác và công bố vào đầu những năm 1970. Nó giúp cho sinh viên cũng như người mới học lập trình có được thói quen viết một chương trình có cấu trúc sáng sủa, rõ ràng dễ đọc và dễ hiểu. ưu điểm của Pascal Pascal là một ngôn ngữ có định kiểu mạnh mẽ. Có nghĩa một biến và một hằng của một kiểu dữ liệu không thể tự do đem trộn lẫn với biến và hằng của một kiểu dữ liệu khác. Khi sử dụng phải khai báo rõ kiểu của chúng. Các kiểu dữ liệu trong Pascal hết sức phong phú thể hiện được nhiều kiểu dữ liệu từ đơn giản đến phức tạp. 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à một 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 riêng để người lập trình có thể giải quyết dần dần từng khối một hoặc cho nhiều người cùng tham gia lập trình. 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 kiểu đơn giản hoặc lệnh có cấu trúc ta có thể xây dựng các dữ liệu có cấu trúc phức tạp hơn Cấu trúc về mặt lệnh: từ các lệnh đơn giản hoặc lệnh có cấu trúc ta có thể xây dựng các lệnh phức tạp hơn. Cấu trúc về mặt chương trình: một chương trình có thể chia thành những đơn thể (modul) tương đối độc lập và những chương trình con. II. Các phần tử cơ bản của ngôn ngữ PASCAL 2.1. Bộ ký tự Ngôn ngữ Pascal được xây dựng từ bộ ký hiệu cơ bản sau: - Bộ 26 chữ cái La tinh: 26 chữ cái thường a, b, c, ... , z 26 chữ cái hoa: A,B,C,... Z Bộ 10 chữ số thập phân: 0, 1, ... , 9 - Bộ dấu các phép toán: cộng + trừ - nhân * chia / luỹ thừa ^ bằng = lớn hơn > nhỏ hơn mở ngoặc ( đóng ngoặc ) - Bộ các ký hiệu đặc biệt: dấu gạch dưới _ dấu chấm . dấu chấm phẩy ; dấu nháy đơn ' các ký hiệu khác như [] $ ... - Dấu cách (space) được dùng để ngăn cách các từ. 2.2. Từ khoá Là các từ riêng của Pascal, có ngữ nghĩa đã được xác định, không được dùng nó vào các việc khác hoặc đặt tên mới trùng với các từ khóa. - Từ khóa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION - Từ khóa để khai báo: CONST, VAR, TYPE, ARRAY, STRING, RECORD, SET, FILE, LABEL - Từ khóa của lệnh lựa chọn: IF ... THEN ... ELSE, CASE ... OF - Từ khóa của lệnh lặp: FOR... TO... DO, FOR... DOWNTO... DO, WHILE... DO, REPEAT... UNTIL Từ khóa điều khiển: WITH, GOTO, EXIT, HALT - Từ khóa toán tử: AND, OR, NOT, IN, DIV, MOD 2.3. Tên chuẩn Tên chuẩn là tên đã được định nghĩa sẵn trong Pascal, nhưng người ta có thể định nghĩa lại nếu muốn. Trong Pascal ta có các tên chuẩn sau đây: Boolean, Char, Integer, Word, Byte, Real, Text False, True, MaxInt Abs, Chr, Cos, Sin, Eof, Eoln Exp, Ln, Odd, Ord Round, Trunc, Sqr, Pred, Succ Dispose, New, Get, Put, Read, Readln, Write, Writeln, Reset, Rewrite 2.4. Tên hay định danh Tên hay định danh là một dãy ký tự do người sử dụng tự đặt cho các hằng, biến, hàm, thủ tục, tên chương trình, tên kiểu dữ liệu mới. Tên hay định danh trong Pascal phải tuân thủ các qui định sau: Tên phải được bắt đầu bằng một chữ cái hoặc chữ số. Trong tên không chứa dấu cách Tên không được trùng với một từ khoá của Pascal Số ký tự của tên bị hạn chế là 8 (Pascal chuẩn), 127 (Turbo Pascal) Ví dụ: Các tên viết như sau là sai vì Pascal không chấp nhận: #DLTA sai vì tên bắt đầu bằng một ký tự đặc biệt ARRAY sai vì tên trùng với từ khoá VI DU sai vì tên có dấu cách Chú ý: Để làm cho tên được sáng sủa người ta cho phép dùng dấu gạch dưới (_) khi viết tên. Ví dụ: GIAI_PHUONG_TRINH Các từ trong Pascal có thể viết hoa hoặc viết thường mà giá trị và ý nghĩa của chúng không thay đổi. IV. Cấu trúc của một chương trình Pascal PROGRAM Tên_chương_trình; USES… LABEL…. CONST… TYPE… VAR… PROCEDURE… FUNCTION… BEGIN … END. Một chương trình Pascal có các phần: * Phần tiêu đề: Phần này bắt đầu bằng từ khóa Program rồi tiếp đến là tên của chương trình và chấm dứt bằng dấu chấm phẩy (;) Tên chương trình phải được đặt theo đúng qui cách của danh hiệu tự đặt. Phần tiêu đề có hoặc không. * Phần khai báo dữ liệu: Một chương trình Pascal có thể có một số hoặc tất cả các khai báo dữ liệu sau: USES : khai báo các thư viện chương trình CONST : khai báo hằng TYPE : định nghĩa kiểu dữ liệu mới VAR : khai báo các biến Phần khai báo chương trình con (có thể có hoặc không tùy theo nhu cầu). * Phần thân chương trình: Phần thân chương trình là phần quan trọng nhất và bắt buộc phải có, phần này luôn nằm giữa 2 từ khoá là BEGIN và END. ở giữa là lệnh mà các chương trình chính cần thực hiện. Sau từ khóa END là dấu chấm (.) để báo kết thúc chương trình. * Dấu chấm phẩy (;): Dấu ; dùng để ngăn cách các câu lệnh của Pascal và không thể thiếu được. * Lời chú thích: Lời chú thích dùng để chú giải cho người sử dụng chương trình nhớ nhằm trao đổi thông tin giữa người và người, máy tính sẽ không để ý đến lời chú thích này. Lời chú thích nằm giữa ký hiệu: { } hoặc (* *) Ví dụ: Viết chương trình tính diện tích hình tròn biết bán kính là R , tính diện tích hình vuông biết cạnh là a. PROGRAM VI_DU; (* Dòng tiêu đề *) VAR R, A, Dientich: Real; (* Khai báo ba biến thực *) BEGIN Write ('Ban kinh : R= '); Readln (R); Dientich:=3.14*R*R; (* Tính diện tích hình tròn *) Writeln (‘Dien tich hinh tron la:', Dientich:10:3); Write ('Do dai canh hinh vuong: A= '); Readln (A); Dientich:=A*A; Writeln (‘Dien tich hinh vuong la’, Dientich:10:3); Readln; END. V. Các kiểu dữ liệu cơ sở 5.1. Khái niệm Dữ liệu (DATA) được định nghĩa là tất cả những gì được máy tính xử lý. Các kiểu dữ liệu cần tới máy tính xử lý có rất nhiều, tồn tại dưới nhiều dạng khác nhau về bản chất, ý nghĩa, không chỉ là số liệu mà còn là các kí tự, các mệnh đề logic thể hiện qua các đối tượng cụ thể cần xử lý như tiền lương, địa chỉ, tên, tuổi, văn bản, tín hiệu. Về phương diện ngôn ngữ bậc cao thì dữ liệu đã được khái quát hoá với các kiểu dữ liệu. Một kiểu dữ liệu (Data Type) được định nghĩa với hai điểm chính như sau: - Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được - Trên đó xác định một số phép toán. Cần nhớ rằng một biến phải gắn liền với một kiểu dữ liệu. Trong Pascal, các kiểu dữ liệu có thể rất phức tạp song nói chung đều được định nghĩa ra từ các kiểu đơn giản nhất, không có cấu trúc. 5.2. Kiểu số nguyên (Integer type) a. Kiểu số nguyên trong Turbo Pascal Được định nghĩa với các từ khóa sau: b. Các phép toán số học đối với số nguyên 5.3. Kiểu số thực (Real type) Có năm kiểu số thực được tổng kết qua bảng sau: Các giá trị thực được biểu diễn theo hai cách: dạng dấu phẩy tĩnh và dạng dấu phẩy động. Cách viết số thực theo dạng dấu phẩy tĩnh: viết dạng thập phân bình thường. Ví dụ: 2.14, +5.0, -25.345678, 0.0006 Cách viết số thực theo dạng dấu phẩy động: số được tách thành hai phần là định trị và bậc. Phần định trị là một số nguyên hay số thực viết dưới dạng dấu phẩy tĩnh.Phần bậc là một số nguyên.Hai phần cách nhau bởi chữ E hay e. Ví dụ: 123.456E-4: biểu diễn số 0.0123456 0.15E+5: biểu diễn số 15000.0 5E8: biểu diễn 500000000.0 -55.3e2: biểu diễn -5530.0 Các ký tự biểu diễn một số thực phải viết liền nhau. Các phép toán số học cơ bản +, -, * , / được sử dụng trong kiểu real. Chú ý: Riêng phép toán DIV và MOD không thực hiện đối với kiểu số thực Bảng dưới đây là các hàm số học cho kiểu số thực: 5.4. Kiểu logic (Boolean) Một dữ liệu thuộc kiểu BOOLEAN là một đại lượng được chứa trong 1 byte ở Turbo Pascal và chỉ có thể nhận được một trong hai giá trị logic là TRUE (đúng) và FALSE (sai). Qui ước: TRUE > FALSE Các phép toán trên kiểu Boolean: Nhận xét: + Phép AND (và) chỉ cho kết quả là TRUE khi cả 2 toán hạng là TRUE + Phép OR (hoặc) chỉ cho kết quả là FALSE khi cả 2 toán hạng là FALSE + Phép XOR (hoặc triệt tiêu) luôn cho kết quả là TRUE khi cả 2 toán hạng là khác nhau và ngược lại. Các phép toán quan hệ cho kết quả kiểu Boolean: 5.5. Kiểu ký tự (Char type) Tất cả các dữ liệu viết ở dạng chữ ký tự được khai báo bởi từ khóa CHAR. Một ký tự được viết trong hai dấu nháy đơn ‘ ‘. Để tiện trao đổi thông tin cần phải sắp xếp, đánh số các ký tự, mỗi cách sắp xếp như vậy gọi là bảng mã. Bảng mã thông dụng hiện nay là bảng mã ASCII . Để thực hiện các phép toán số học và so sánh, ta dựa vào giá trị số thứ tự mã ASCII của từng ký tự, chẳng hạn: 'A' = ; Ví dụ CONST Siso = 100; X = ‘xxx ‘; 6.2. Biến (variable) a. Định nghĩa Biến là một cấu trúc ghi nhớ có tên (đó là tên biến hay danh hiệu của biến). Biến ghi nhớ một dữ liệu nào đó gọi là giá trị (value) của biến. Giá trị của biến có thể được biến đổi trong thời gian sử dụng biến. Sự truy xuất của biến nghĩa là đọc giá trị hay thay đổi giá trị của biến được thực hiện thông qua tên biến. Ví dụ : Readln (x) ; Writeln (x) ; x := 9 ; VI. Khai báo biến, hằng, kiểu và biểu thức 6.1. Hằng (constant) 6.2. Biến (variable) a. Định nghĩa Biến là một đại lượng mà giá trị của nó có thể thay đổi nhiều lần trong chương trình. Tên biến là tên của ô nhớ cất giữ dữ liệu Ví dụ : Readln (x) ; Writeln (x) ; x := 9 ; Biến là một cấu trúc ghi nhớ dữ liệu vì vậy nó phải tuân theo qui định của kiểu dữ liệu : một biến phải thuộc một kiểu dữ liệu nhất định. b. Cách khai báo VAR : ; Ví dụ : VAR a : Real ; b, c : Integer ; TEN : String [20]; X : Boolean ; Chon : Char ; Cần khai báo các biến trước khi sử dụng chúng trong chương trình. Khai báo một biến là khai báo sự tồn tại của biến đó và cho biết nó thuộc kiểu gì. VI. Khai báo biến, hằng, kiểu và biểu thức 6.1. Hằng (constant) 6.2. Biến (variable) 6.3. Kiểu (Type) a. Định nghĩa Ngoài các kiểu đã định sẵn, Pascal còn cho phép ta định nghĩa các kiểu dữ liệu khác từ các kiểu căn bản theo qui tắc xây dựng của Pascal. b. Cách khai báo TYPE = ; Ví dụ : TYPE SoNguyen = Integer ; Diem = Real; Tuoi = 1 .. 100 ; Color = (Red, Blue, Green) ; Thu = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; khi đã khai báo kiểu gì thì ta có quyền sử dụng để khai báo biến như ở ví dụ sau: Ví dụ : VAR i, j : SoNguyen ; Dtb : Diem ; T : tuoi ; Mau : Color ; Ngay_hoc : Thu; VI. Khai báo biến, hằng, kiểu và biểu thức 6.4. Biểu thức (Expression) a. Định nghĩa Một biểu thức là một công thức tính toán bao gồm các phép toán, hằng, biến, hàm và các dấu ngoặc. Ví dụ : 5 + A * SQRT(B) / SIN(X) (A AND B) OR C b. Thứ tự ưu tiên Khi tính giá trị của một biểu thức, ngôn ngữ Pascal qui ước thứ tự ưu tiên của các phép toán từ cao đến thấp như sau: Mức ưu tiên: Các phép toán: 1. Biểu thức trong ngoặc đơn ( ) 2. Phép gọi hàm 3. Not, - 4. *, /, DIV, MOD, AND 5. +, -, OR, XOR 6. =, , =, , IN Ví dụ : (4+5)/3 + 6 - (sin((/2)+3)*2 = (9)/3 + 6 - (1+3)*2 = 3 + 6 - 8 = 1 VI. Khai báo biến, hằng, kiểu và biểu thức 6.4. Biểu thức (Expression) c. Qui ước tính thứ tự ưu tiên Khi tính một biểu thức có 3 qui tắc về thứ tự ưu tiên như sau: Qui tắc 1 : Các phép toán nào có ưu tiên cao hơn sẽ được tính trước. Qui 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. Qui 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. d. Kiểu của biểu thức Là kiểu của kết quả sau khi tính biểu thức. Ví dụ : Biểu thức sau được gọi là biểu thức Boolean: not (('a'>'c') and ('c'>'C')) or ('B'='b') có giá trị TRUE VII. Các câu lệnh đơn giản 7.1. Câu lệnh (statement) + Trong một chương trình Pascal, sau phần mô tả dữ liệu là phần mô tả các câu lệnh. Các câu lệnh có nhiệm vụ xác định các 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âu lệnh được chia thành câu lệnh đơn giản và câu lệnh có cấu trúc. - Câu lệnh đơn giản + Vào dữ liệu : Read, Readln + Ra dữ liệu : Write, Writeln + Lệnh gán : := + Lời gọi chương trình con (gọi trực tiếp tên của chương trình con) + Xử lý tập tin : RESET, REWRITE, ASSIGN ... - Câu lệnh có cấu trúc + Lệnh ghép : BEGIN .. END + Lệnh chọn : IF .. THEN .. ELSE CASE .. OF . + Lệnh lặp : FOR .. TO .. DO REPEAT .. UNTIL WHILE .. DO + Các câu lệnh phải được ngăn cách với nhau bởi dấu chấm phẩy ( ; ) và các câu lệnh có thể viết trên một dòng hay nhiều dòng. 7.2. Cấu trúc tuần tự a. Lệnh gán (Assignment statement) Một trong các lệnh đơn giản và cơ bản nhất của Pascal là lệnh gán. Mục đích của lệnh này là gán cho một biến đã khai báo một giá trị nào đó cùng kiểu với biến. Cách viết: := ; Ví dụ : VAR c : Char ; i,j : Integer ; x, y : Real ; p, q : Boolean ; thì ta có thể có các phép gán sau : c := ‘A’ ; c := Chr(90) ; i := (35+7)*2 mod 4 ; i := i div 7 ; x := 0.5 ; q := i > 2*j +1 ; q := not p ; ý nghĩa: Phép gán có ý nghĩa - Lưu trữ các giá trị khác nhau vào một ô nhớ tại những thời điểm khác nhau. - 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 nhóm câu lệnh đơn được đặt giữa 2 chữ BEGIN và END sẽ tạo thành một câu lệnh ghép. Bài tập 1. Tính giá trị của các biểu thức dưới đây: (‘d’>‘g’) and (18 div 4 * 4 >125) = (True 76) and (‘B’ 76) and (‘B’ y) OR (SQRT(x)>SQR(y)); T=? 5 10 True False e) x:=5; T:=(Sqr(x)>20) And (x>0); T= ? 7 8 True False Chương 4: Các lệnh có cấu trúc trong pascal I. Cấu trúc lựa chọn 1.1. Câu lệnh IF Pascal cung cấp cho người lập trình hai mẫu câu lệnh IF với dạng lệnh và lưu đồ như sau: Nếu biểu thức Boolean có giá trị TRUE thì máy sẽ thực hiện công việc 1. Nếu không thì kết thúc câu lệnh đối với mẫu thứ nhất hoặc máy sẽ thực hiện việc 2 đối với mẫu lệnh thứ 2 Chú ý: - Trước Else không có dấu chấm phẩy - Nếu hoặc gồm từ 2 câu lệnh trở lên thì phải đặt chúng trong câu lệnh ghép Begin .. End; Ví dụ 1: Để thực hiện phép chia hai số a cho b với điều kiện b0 ta viết như sau: IF b0 THEN T:=a/b ELSE Writeln (‘Khong chia duoc’); Ví dụ 2: Tìm giá trị lớn nhất, nhỏ nhất của 2 số a, b IF a OF Tập_Hằng1: ; Tập_Hằng2: ; ..... Tập_HằngN: ; END; Mẫu 2: Dạng đầy đủ CASE OF Tập_Hằng1: ; Tập_Hằng2: ; ..... Tập_HằngN: ELSE ; END; Trong đó giá trị của và giá trị của Tập_hằng phải có cùng kiểu và phải là kiểu vô hướng đếm được (như: nguyên, logic, ký tự, liệt kê). 1.2. Câu lệnh CASE Hai mẫu câu lệnh IF ở trên chỉ thực hiện lựa chọn một trong hai nhánh tương ứng với giá trị của biểu thức Boolean. Việc thử và chọn một trong nhiều nhánh sẽ được thực hiện với câu lệnh CASE. Cú pháp: Sự thực hiện của lệnh CASE .. OF phụ thuộc vào giá trị của : - Nếu tập_hằng_i là tập đầu tiên chứa giá trị của thì máy thực hiện , sau đó thoát khỏi CASE .. OF. - Trong trường hợp không có tập_hằng_i nào chứa giá trị của thì: khi không có ELSE máy thoát ngay ra khỏi CASE .. OF, khi có ELSE máy thực hiện rồi mới thoát khỏi CASE .. OF. Chú ý: lệnh CASE bao giờ cũng kết thúc bằng từ khoá END. Ví dụ 4: Chương trình tính số ngày của một tháng: VAR So_ngay, thang, nam: integer; BEGIN Write ('Thang: '); Readln(Thang); Write ('Nam: '); Readln (Nam); CASE Thang OF 4,6,9,11:So_ngay:=30; 2: CASE Nam MOD 4 OF 0: So_ngay:=29; 1,2,3: So_ngay:=28; END; 1,3,5,7,8,10,12: So_ngay:=31; END; Writeln ('So ngay cua thang',Thang,'Nam',Nam,'la',So_ngay); END. Ví dụ 5: Viết chương trình chọn màu PROGRAM Chon_mau ; VAR color : char ; BEGIN Write (' Chon mau theo mot trong 3 ky tu dau la R/ W/ B ') ; Readln (color) ; CASE color OF 'R' ,'r' : write (' RED = mau do ') ; 'W', 'w' : write (' WHITE = mau trang ') ; 'B' , 'b' : write (' BLUE = mau xanh duong ') ; END ; Readln; END. II. Cấu trúc lặp 2.1 Câu lệnh FOR FOR Biến_điều_khiển := Giá_trị_đầu TO Giá_trị_cuối DO ; Trong mẫu trên, kiểu của biến điều khiển, giá trị đầu, giá trị cuối là kiểu vô hướng đếm được. Vì vậy, mỗi lần biến điều khiển nhận giá trị mới tiếp theo, chúng ta ghi một cách tổng quát: Biến_điều_khiển:= Succ(Biến_điều_khiển) FOR Biến_điều_khiển := Giá_trị_đầu DOWNTO Giá_trị_cuối DO ; Trong mẫu 2 máy tính sẽ làm theo chiều ngược lại tức là theo chiều giảm dầ