Ngôn ngữ lập trình pascal - GV. Nguyễn Thị Lan
lượt xem 10
download
Với kết cấu nội dung gồm 4 chương, tài liệu "Ngôn ngữ lập trình pascal" giới thiệu đến các bạn những nội dung về các thành phần của ngôn ngữ lập trình pascal, các câu lệnh đơn, các lệnh có cấu trúc, kiểu mảng. Mời các bạn cùng tham khảo nội dung tài liệu để nắm bắt nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Ngôn ngữ lập trình pascal - GV. Nguyễn Thị Lan
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan CHƯƠNG I : CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH PASCAL I. CÁC THÀNH PHẦN CƠ BẢN 1. Bộ Chữ Viết Bộ chữ viết trong ngôn ngữ Pascal gồm: Các chữ cái in hoa và in thường của bảng chữ cái tiếng Anh: A, B, C… Z. a, b, c, … z Bộ chữ số Ả rập: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Các ký hiệu đặc biệt: . , : ; [ ] ? % @ \ | ! # $ { } Các ký hiệu toán học: +, , *, /, =, , (, ) Dấu gạch dưới _ (đánh vào bằng cách kết hợp phím Shift với dấu trừ). Dấu khoảng cách (Space). 2. Cú pháp Là bộ quy tắc để viết chương trình. Dựa vào chúng mà chương trình dịch nhận biết được tính hợp lệ của các tổ hợp kí tự và các câu lệnh. Nếu câu lệnh bị viết sai quy tắc, chương trình dịch sẽ nhận biết và thông báo lỗi. 3. Ngữ nghĩa Xác định ý nghĩa của các tổ hợp ký tự trong chương trình, chương trình dịch không nhận biết được các lỗi về mặt ngữ nghĩa cũng như lỗi thuật toán của chương trình. II. MỘT SỐ KHÁI NIỆM 1. Tên (identifier) Mọi đối tượng dùng trong chương trình đều phải được đặt tên theo quy tắc: Tên là một dãy liên tiếp không quá 127 kí tự, bao gồm: Chữ cái, chữ số, dấu gạch dưới (_) và không được bắt đầu bằng chữ số. *Lưu ý: + Không có khoảng trống (dấu cách) ở giữa tên. + Tên không được trùng với từ khoá. Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 1
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan + Độ dài tối đa của tên là 127 ký tự, tuy nhiên nên đặt sao cho tên gọn và có ý nghĩa. + Pascal không bắt lỗi việc đặt tên trùng với tên chuẩn, nhưng khi đó ý nghĩa của tên chuẩn không còn giá trị nữa. + Pascal không phân biệt chữ hoa và chữ thường (case insensitive). Ví dụ “BEGIN” hay “begin” hay “BeGin” là như nhau. Tuy nhiên các em nên tập thói quen viết một cách thống nhất tên trong toàn bộ chương trình. Tên dùng để đặt cho tên chương trình, tên biến, tên hằng, tên kiểu,…và được chia thành 3 loại. a. Tên dành riêng (Từ khóa): Tên được dùng với ý nghĩa riêng xác định, người lập trình không thể sử dụng với ý nghĩa khác. (Chú ý: Từ khóa viết trong chương trình pascal có màu trắng.) Ví dụ: Program (Từ khóa trong cú pháp khai báo tên chương trình) Uses (Từ khóa trong khai báo thư viện) Var (Từ khóa trong cú pháp khai báo biến) Const (Từ khóa khai báo hằng) Begin (Từ khóa bắt đầu phần thân chương trình hoặc câu lệnh ghép) End (Từ khóa kết thúc phần thân chương trình hoặc câu lệnh ghép) If (Nếu), then (thì), else (Ngược lại thì): trong câu lệnh rẽ nhánh For, to, down to, do,While: trong câu lệnh lặp And(và), or(hoặc), not(phủ định), div(phép chia lấy phần nguyên), mod (phép chia lấy phần dư): là các phép toán … b. Tên chuẩn: tên đã được PASCAL đặt trước: ví dụ các hàm số Sin, Cos,… hằng số Pi, kiểu Integer, Real…(người lập trình vẫn có thể dùng chúng với ý nghĩa, mục đích khác nhưng nếu dùng phải khai báo). c. Tên do người lập trình đặt (Ví dụ: tên chương trình, tên biến, tên hằng, tên kiểu,…) Phải khai báo trước khi sử dụng và không được trùng với từ khóa. Ví dụ1: Program chuvi_dientich_hcn; Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 2
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Uses crt; Var dai,rong,cv,dt: real; Begin Clrscr; Write(‘nhap chieu dai hcn:’); readln(dai); Write(‘nhap chieu rong hcn:’); readln(rong); cv:=(dai+rong)*2; dt:=dai*rong; Writeln(‘chu vi hcn la:’, cv:10:2); Writeln(‘dien tich hcn la:’, dt:10:2); Readln End. Phân biệt các tên trong chương trình trên như sau: Từ khóa Tên chuẩn Tên do người lập trình đặt Program crt chuvi_dientich_hcn Uses real dai Var Write rong Begin Readln cv end. Writeln dt 2. Hằng, Biến, Kiểu dữ liệu a. Hằng (Constant) Hằng là đại lượng có giá trị không đổi trong quá trình thực hiện chương trình. Có hai loại hằng là: hằng chuẩn và hằng do người dùng định nghĩa Cú pháp khai báo hằng do người dùng định nghĩa: Const = ; Khai báo hằng thường sử dụng cho những giá trị không đổi xuất hiện nhiều lần trong chương trình. Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 3
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Ví dụ: Const n = 100; pi = 3,14; b. Biến Biến là đại lượng được đặt tên, dùng để lưu trữ dữ liệu, giá trị của biến có thể thay đổi trong quá trình thực hiện chương trình” Chương trình quản lý biến thông qua tên biến và mỗi biến mang một kiểu dữ liệu xác định. Mọi biến dùng trong chương trình đều phải được đặt tên và khai báo cho chương trình dịch biết để lưu trữ và xử lý, biến sẽ được giải phóng (thu hồi ô nhớ) khi chương trình kết thúc. Cú pháp khai báo biến: Var : ; Danh sách biến là một hoặc nhiều tên biến đơn, các tên biến trong danh sách viết ngăn cách nhau bởi dấu phẩy. Trong phần khai báo biến, từ khóa var chỉ viết một lần, còn : ; có thể xuất hiện nhiều lần. Các biến có cùng kiểu dữ liệu thì viết trong một danh sách biến. Ví dụ 1: var s: string; Ví dụ 2: var x,y: Integer; Ví dụ 3: var a, b, hieu: Integer; thuong: real; * Chú ý: Tên biến do người lập trình tự đặt theo quy tắc đặt tên trong NNLT (nêu ở mục I.1) nhưng cần chú ý thêm: Cần đặt tên biến sao cho gợi nhớ đến ý nghĩa của biến đó (Để chương trình dễ đọc, dễ hiểu, dễ sửa chữa). Tên biến trong một chương trình không được trùng nhau (Không khai báo hai lần) Không nên đặt tên biến quá ngắn hay quá dài. Ví dụ: Nếu cần đặt tên cho hai biến điểm môn toán và điểm môn tin thì nên đặt là dtoan, dtin chứ ko nên đặt là d1, d2 (vì ngắn gọn nhưng không có ý nghĩa gợi Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 4
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan nhớ) và cũng không nên đặt là diemmontoan, diemmontin (vì quá dài) mặc dù các cách đặt tên trên đều không sai. - Khi khai báo cần chú ý đến phạm vi giá trị của biến. Ví dụ: Var soluong: integer; Dongia, thanhtien: real; Khi chạy chương trình nếu nhập giá trị 35000 cho biến soluong thì chương trình sẽ chạy và cho kết quả sai, do giá trị nhập vào vượt quá phạm vi giá trị của biến được khai báo. (Kiểu integer có miền giá trị từ 32768 đến 32768) c. Kiểu dữ liệu Kiểu dữ liệu quy định rõ phạm vi giá trị của biến và các phép toán có thể áp dụng trên kiểu dữ liệu đó Một số kiểu dữ liệu chuẩn Bộ nhớ lưu Tên Dữ liệu trữ một giá Phạm vi giá trị kiểu trị Số Byte 1 byte Số nguyên từ 0 đến 255 Integer 2 byte Số nguyên từ 32768 đến 32768 nguyên Longint 4 byte Số nguyên từ 2147483648 đến 2147483648 Số thực có gt tuyệt đối từ 2,9x1039 đến Số thực Real 6 byte 1,7x1038 và số 0 Kí tự Char 1 byte Kí tự trong bảng mã Ascii Xâu kí tự String Dãy liên tiếp gồm tối đa 255 kí tự III. PHÉP TOÁN, CÁC HÀM SỐ HỌC CHUẨN, BIỂU THỨC 1. Phép toán Phép toán Trong toán học Trong pascal Cộng + + Phép toán Trừ Nhân x * số học Chia lấy phần nguyên div : Chia lấy phần dư mod Phép toán Lớn hơn > > Lớn hơn hoặc bằng >= so sánh Nhỏ hơn < < Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 5
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Nhỏ hơn hoặc bằng
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan + Riêng đối với biểu thức trong lệnh gán thì thứ tự thực hiện là từ phải qua trái. (Ví dụ: lệnh gán x:= y+25; thì tính tổng y+25 sau đó gán giá trị đó cho x ) Ví dụ: Biểu thức trong toán học Biểu thức trong pascal ax2+bx+c = 0 a*x*x+b*x+c = 0 x+ y x−z − 1 xy (x+y)/(x1/2)(xz)/(x*y) x− 2 2 xx 2*sqrt(x) abs(x) ( x − a) + ( y − b) 2 2 R sqrt((xa)*(xa)+(yb)+(yb)*(yb))=5) and (x
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan ….. Ví dụ: Program dientich_htron; Uses crt; Const pi=3.14; Var r,s: real; 2. Phần thân chương trình Bắt đầu bằng từ khoá Begin (dấu hiệu mở đầu chương trình) và kết thúc bằng từ khoá End. (end và dấu chấm). Giữa Begin và End. là các câu lệnh. Ví dụ: Program ……………….. Uses ……….. Phần khai báo Const …………. Var ……….. Begin Phần thân End. CHƯƠNG II: CÁC CÂU LỆNH ĐƠN I. GIỚI THIỆU VỀ CÂU LỆNH Câu lệnh đơn: xác định một công việc cụ thể mà chương trình phải thực hiện để xử lý các dữ liệu đã được mô tả và khai báo. Các câu lệnh được phân cách bởi dấu ; (chấm phẩy). Ví dụ: Write(‘Nhap so a:’); Readln(a); Nếu kết thúc câu lệnh không có dấu (;) thì chương trình dịch sẽ báo lỗi (Lỗi 85: ";" expected: Cần có dấu chấm phẩy) trừ một vài trường hợp đặt biệt ví dụ: lệnh readln để dừng màn hình và xem kết quả đặt trước từ khóa (end.) Thì không cần dấu (;) để kết thúc lện. Ví dụ: Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 8
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Writeln(‘Nhap chieu dai:’);{Xuất ra màn hình dãy kí tự thông báo: Nhap chieu dai} Readln(x); {Nhận giá trị nhập từ bàn phím và lưu vào biến x} Writeln(‘Chu vi la: ’, cv); {Xuất ra màn hình 2 kết quả: dòng thông báo Chu vi la và giá trị của biến cv} - Câu lệnh ghép : Nếu trong chương trình có nhiều câu lệnh liên tiếp cần được xử lí và xem cả dãy câu lệnh đó như một câu lệnh chúng ta cần bao chúng giữa hai từ khóa Begin và End; - Câu lệnh có cấu trúc : Cấu trúc rẽ nhánh, cấu trúc lặp,... : Mỗi câu lệnh có cấu trúc xác định một câu lệnh tương đương một câu lệnh đơn. Trong câu lệnh có cấu trúc có thể chứa câu lệnh ghép Ví dụ: …. Writeln(‘Cho biet so tuoi:’); Câu lệnh đơn. Readln(Tuoi); Câu lệnh đơn If (Tuoi
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan 2. Lệnh gán Lệnh gán dùng để gán giá trị của một biểu thức vào một biến. Giá trị biểu thức khi tính xong sẽ được gán vào biến. Phép gán được thực hiện theo thứ tự từ phải qua trái. Cú pháp := ; Ví dụ Program LenhGan; Var x, y, z: Integer; Begin x := 1; Tại vị trí này trước khi thực hiện phép gán biến x có giá trị là 1, Biến y có giá trị là 2, và y := 2; sau khi thực hiện phép gán y có giá trị là 3. y:=y+x; z := x + y; Z có giá trị là 4 sau khi thực hiện phép gán End. Chú ý - Khi gán một giá trị cho biến, gía trị này sẽ thay thế giá trị cũ mà biến đã lưu giữ trước đó (khi đó biến sẽ nhận được giá trị mới). - Trong lệnh gán, biểu thức ở bên phải và biến ở bên trái phép gán phải cùng kiểu dữ liệu. Nếu không sẽ có thông báo lỗi khi biên dịch chương trình. ( Lỗi 26: “Type Mismatch” : Kiểu không tương thích) 3. Lệnh nhập dữ liệu từ bàn phím Nhập các giá trị từ bàn phím và gán các giá trị này cho các biến trong danh sách. - Cú pháp : Read (Biến1, Biến2,…, BiếnN); Hoặc Readln (Biến1, Biến2,…, BiếnN); Ho Tµi liÖuReadln; ặc «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 10
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Ví dụ1: read (n); {Nhập một giá trị từ bàn phím, gán cho biến n} Ví dụ2: readln (a,b,c); {Nhập lần lượt ba giá trị từ bàn phím và gán các giá trị đó tương ứng cho 3 biến a,b,c} Read và Readln khác nhau ở chỗ là đối với Readln sau khi gõ Enter thì con trỏ xuống dòng tiếp theo, còn Read thì không. Nên dùng lệnh Readln (Biến1, Biến2,…, BiếnN); để nhập dữ liệu vì dễ phân biệt trên màn hình. Khi nhập giá trị cho nhiều biến, những giá trị này được gõ cách nhau ít nhất một dấu cách (Space Bar) hoặc kí tự xuống dòng (Enter). Kết thúc việc gán bởi phím Enter. Ví dụ: Để nhập các giá trị 1,5,6 cho các biến a,b,c trong câu lệnh readln (a,b,c) ta có thể gõ 7 kí tự sau: 1 dấu cách 5 dấu cách 6 enter Readln; là lệnh không đọc gì cả, chỉ chờ ta gõ phím Enter, thường viết Readln cuối chương trình trước End. để khi chương trình chạy xong, màn hình dừng lại cho ta xem kết quả, gõ Enter để về chế độ soạn thảo. Nói chung là khi gặp lệnh Readln; thì chương trình ngừng lại, đợi ta gõ Enter thì chương trình thực hiện tiếp. Ta thường phải kết hợp giữa lệnh Write và Readln để việc nhập liệu được rõ ràng. Ví dụ: Program chuvi_dientich_hcn; Uses crt; Var dai,rong,cv,dt: real; Begin Clrscr; Write(‘nhap chieu dai hcn:’); readln(dai); Write(‘nhap chieu rong hcn:’); readln(rong); cv:=(dai+rong)*2; Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 11
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan dt:=dai*rong; writeln(‘chu vi hcn la:’, cv:10:2); writeln(‘dien tich hcn la:’, dt:10:2); readln end. 4. Lệnh in dữ liệu ra màn hình Write (Mục1, Mục2,…, MụcN); Hoặc Writeln (Mục1, Mục2,…, MụcN); Hoặc Writeln; Trong đó Mục1, Mục2,…,MụcN là các mục cần đưa ra màn hình. Có thể là biến, hằng, biểu thức… Ví dụ: Hai biến nguyên a,b Sau khi gán gía trị a:=2; b:=3 và thực hiện một trong các lệnh dưới đây thì kết quả in ra trên màn hình như sau: Câu lệnh Kết quả in ra trên màn hình Write( a, b ); 23 Write( a,’ ’, b ); 2 3 Writeln( a, b ); 23 Write( a ); 23 Write( b); Writeln( a ); 2 Writeln( b); 3 Write(‘Gia tri cua so a la:’, a ); Gia tri cua so a la: 2Gia tri cua so b la: 3 Write(‘Gia tri cua so b la:’,b); Writeln(‘Gia tri cua so a la:’, a ); Gia tri cua so a la: 2 Writeln(‘Gia tri cua so b la:’,b); Gia tri cua so b la: 3 Write( a/b ); 6.6666666667E01 Write( a/b:6:2 ); 0.67 Write( a*b ); 6 Các hằng xâu kí tự thường được dùng để tách kết quả hoặc đưa ra chú thích. Ví dụ: Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 12
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Write( a,’ ’, b ); 2 3 Writeln(‘Gia tri cua so a la:’, a ); Gia tri cua so a la: 2 Writeln(‘Gia tri cua so b la:’,b); Gia tri cua so b la: 3 * Lệnh Writeln; chỉ có tác dụng xuống dòng và không in dữ liệu gì ra màn hình. * Với câu lệnh Write (Mục1, Mục2,…, MụcN); sau khi đưa kết quả ra màn hình, con trỏ không chuyển xuống đầu dòng tiếp theo. * Còn với câu lệnh Writeln(Mục1, Mục2,…,MụcN); sau khi đưa kết quả ra màn hình, con trỏ chuyển xuống đầu dòng tiếp theo. Do đó lệnh này tương đương với 2 lệnh Write(Mục1, Mục2,…,MụcN); Writeln; Ví dụ: Program chuvi_dientich_hcn; Uses crt; Var dai,rong,cv,dt: real; Begin Clrscr; Write(‘nhap chieu dai hcn:’); readln(dai); Write(‘nhap chieu rong hcn:’); readln(rong); cv:=(dai+rong)*2; dt:=dai*rong; writeln(‘chu vi hcn la:’, cv:10:2); writeln(‘dien tich hcn la:’, dt:10:2); readln End. Chú ý: Trong câu lệnh write, writeln có thể đặt quy cách ra cho các kết quả. - Đối với kết quả kiểu số thực: :: Ví dụ: writeln(‘Chu vi hcn la:’, cv:10:2); writeln(‘Dien tich hcn la:’, dt:10:2); Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 13
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Giả sử cv=29 và dt=49.5 thì kết quả in lên màn hình của hai câu lệnh trên như sau: Chu vi hcn la: ????? 29.00 {? là kí tự cách (backspace)} Dien tich hcn la: ????? 49.50 Đối với các kết quả khác: : Ví dụ1: write(x:3); Giả sử x=14 thì kết quả in lên màn hình của câu lệnh trên như sau:? 14 Ví dụ2: write(a:3,b:4,a+b:8:3); Giả sử a=425, b=56 thì kết quả in lên màn hình của câu lệnh trên như sau: 425˽˽56??81.000 5. Lời giải thích Trong khi lập trình nhiều lúc cần phải đưa vào lời giải thích nhằm diễn giải công việc mà đoạn chương trình đó thực hiện, làm cho người đọc chương trình dễ hiểu. Dĩ nhiên, việc thêm lời giải thích này có thể có hoặc không và không làm ảnh hưởng đến việc thực hiện chương trình cũng như kết quả của chương trình. Có thể chọn một trong 2 cách viết lời giải thích sau: Cú pháp: { } hoặc (* *) Ví dụ: Program chuvi_dientich_hcn; Uses crt; Var dai,rong,cv,dt: real; Begin Clrscr; { Nhap chieu dai, chieu rong cua hinh chu nhat } Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 14
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Write(‘nhap chieu dai hcn:’); readln(dai); Write(‘nhap chieu rong hcn:’); readln(rong); (* Tính chu vi, dien tich *) cv:=(dai+rong)*2; dt:=dai*rong; (*In ket qua chu vi, dien tich ra man hinh*) writeln(‘chu vi hcn la:’, cv:10:2); writeln(‘dien tich hcn la:’, dt:10:2); readln end. CHƯƠNG III: CÁC LỆNH CÓ CẤU TRÚC I. CẤU TRÚC RẼ NHÁNH Xét các ví dụ: VD1: Chiều mai nếu trời không mưa thì Hùng đến nhà Tâm để học nhóm. VD2: Chiều mai nếu trời không mưa thì Hùng đến nhà Tâm để học nhóm, nếu trời mưa thì Hùng gọi điện cho Tâm trao đổi. Cách diễn đạt Nếu…thì… ở VD1 thuộc dạng thiếu. Cách diễn đạt Nếu…thì, nếu không… thì… ở VD2 thuộc dạng đủ. Cấu trúc dùng để mô tả các mệnh đề có dạng như trên được gọi là cấu trúc rẽ nhánh (Có 2 dạng: rẽ nhánh dạng thiếu và rẽ nhánh dạng đủ). => Cấu trúc rẽ nhánh được sử dụng trong lập trình để chỉ dẫn cho máy tính thực hiện các hoạt động khác nhau tùy theo một điều kiện cụ thể có được thỏa mãn hay không. 1. Câu lệnh rẽ nhánh dạng thiếu Cú pháp: If then ; Trong đó: + If, then là các từ khóa Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 15
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan + Điều kiện là một biểu thức lôgic. (Ví dụ: a0) and (a mod 2=0), …) Hoạt động của câu lệnh rẽ nhánh dạng thiếu: Điều kiện được tính và kiểm tra. Nếu điều kiện đúng ĐK Sai thì câu lệnh được thực hiện ngược lại (điều kiện sai) thì câu Đúng lệnh bị bỏ qua. Câu lệnh Sơ đồ hoạt động (hình bên) Ví dụ: Var a: Integer; Begin Write( ‘Nhập a: ’); Readln(a); If a mod 2 = 0 then Write (‘a la so chan’); If a mod 2 0 then Write (‘a la so le’); Readln; End. 2. Câu lệnh rẽ nhánh dạng đủ Cú pháp: If then else ; Trong đó: If, then, else là các từ khóa Hoạt động của câu lệnh rẽ nhánh dạng đủ: ĐK Sai Điều kiện được tính và kiểm tra. Nếu điều kiện đúng Đúng thì câu lệnh 1 được thực hiện, ngược lại (điều kiện sai) thì CL1 CL2 bỏ qua câu lệnh 1 và thực hiện câu lệnh 2. Chú ý: trước từ khóa else không có dấu ; (chấm phẩy). Ví dụ: Var a: Integer; Begin Write( ‘Nhập a: ’); Readln(a); Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 16
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan If a mod 2 = 0 then Write (‘a la so chan’) Else Write (‘a la so le’); Readln; End. 3. Câu lệnh ghép. Trong nhiều trường hợp, các thao tác để giải bài toán khá phức tạp, ngôn ngữ lập trình cho phép gộp một dãy các câu lệnh đơn thành một câu lệnh ghép. Cú pháp: begin ; end ; Chú ý: + Sau end của câu lệnh ghép phải có dấu chấm phẩy (;). + Thuật ngữ câu lệnh trong các cú pháp được hiểu chung cho câu lệnh đơn và câu lệnh ghép. Ví dụ: if d
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan 1. Lặp với số lần biết trước và câu lệnh For...Do Tác dụng: Dùng để xây dựng chu trình với số lần lặp xác định (hữu hạn biết trước). Cú pháp: + Dạng lặp tiến: For := to do ; + Dạng lặp lùi: For := down to do ; Trong đó: + For, to, do là các từ khóa. + Biến đếm thường có kiểu số nguyên. + Giá trị đầu và giá trị cuối là các giá trị nguyên; giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.( Nếu giá trị đầu lớn hơn giá trị cuối thì vòng lặp không thực hiện được). + Câu lệnh sau từ khóa do có thể là o Câu lệnh đơn (Lệnh gán, lệnh write, writeln, read, readln, lệnh if..then, lệnh lặp,...) o Câu lệnh ghép (begin..end;) Nguyên lý hoạt động của câu lệnh For...Do + Dạng tiến: Bước 1. Biến đếm nhận giá trị đầu. Bước 2. Kiểm tra xem giá trị của biến đếm còn nhỏ hơn giá trị cuối hay không Bước 3. Nếu việc kiểm tra: Cho giá trị đúng: + Thực hiện câu lệnh sau từ khóa do. + Tăng giá trị của biến đếm lên 1 đơn vị (biến đếm:=biến đếm + 1) + Quay trở lại bước 2 Cho giá trị sai câu lệnh sẽ bị bỏ qua. + Dạng lùi: Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 18
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Bước 1. Biến đếm nhận giá trị cuối. Bước 2. Kiểm tra xem giá trị của biến đếm còn lớn hơn giá trị đầu hay không Bước 3. Nếu việc kiểm tra: Cho giá trị đúng: + Thực hiện câu lệnh sau từ khóa do. + Giảm giá trị của biến đếm xuống 1 đơn vị (biến đếm:=biến đếm 1) + Quay trở lại bước 2 Cho giá trị sai câu lệnh sẽ bị bỏ qua. Chú ý: Câu lệnh sau từ khóa do được thực hiện lặp đi lặp lại nhiều lần, sau mỗi vòng lặp, không cần câu lệnh gán biến đếm:=biến đếm+1 mà biến đếm vẫn được tự động tăng giá trị lên 1 đơn vị. Số vòng lặp là biết trước và bằng: giá trị cuối – giá trị đầu + 1 * Ví dụ 1: Tính tổng 1 1 1 1 • Thuật toán: S ... 1 2 N 1 N Bước 1: S ß 0, i ß 0. Bước 2: i ß i+1. Bước 3: Nếu i≤ n, thì S ß S + 1/i và quay lại bước 2 Bước 4: Thông báo kết quả và kết thúc thuật toán. • Chương trình: Sử dụng vòng lặp For .. do Var i, n: Integer; S: real; Begin Write('Nhap so nguyen n='); Readln(n); S:=0; For i:=1 to n do S:= S + 1/ i; Writeln( ' Tong S =', S ); Readln; End. Tµi liÖu «n thi häc sinh giái m«n Tin häc – Trêng THCS Kim §ång 19
- Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan 2. Lặp với số lần chưa biết trước và câu lệnh lặp While...do Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định (chưa biết trước). Cú pháp: While do ; Trong đó: + while, do là các từ khóa. + Điều kiện: là biểu thức logic trả về 1 trong 2 giá trị đúng hoặc sai. (thường là một phép so sánh) + Câu lệnh : có thể là câu lệnh đơn hoặc câu lệnh ghép. Nguyên lý hoạt động câu lệnh lặp While...do: Bước 1: Kiểm tra điều kiện. Bước 2: Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nhận xét: + Chương trình sẽ kiểm tra điều kiện, nếu điều kiện đúng thì thực hiện câu lệnh, sau đó quay lại kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện sai thì kết thúc. + Câu lệnh được thực hiện lặp đi lặp lại cho đến khi nhận giá trị sai. Câu lệnh sẽ không được thực hiện lần nào nếu nhận giá trị sai ngay từ khi bắt đầu vào chương trình. + Trong thân chương trình phải có câu lệnh làm thay đổi giá trị của để tránh xảy ra vòng lặp vô tận. Ví dụ: Chương trình sau đây sẽ lặp lại vô hạn Var a: integer; Begin a:=5; While a
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình Ngôn ngữ lập trình Pascal - TS. Nguyễn Ngọc Cương (chủ biên)
221 p | 302 | 106
-
Ngôn ngữ lập trình Pascal - ĐH Hoa Lư
149 p | 120 | 25
-
Bài giảng Ngôn ngữ lập trình Pascal - ĐH Phạm Văn Đồng
125 p | 112 | 21
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 9 - Chương trình con - Thủ tục và hàm (Procedure và Function)
23 p | 200 | 18
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 5 - Các câu lệnh điều kiện
17 p | 172 | 18
-
Giáo trình Ngôn ngữ lập trình Pascal: Phần 1
18 p | 89 | 10
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 8 - Vòng lặp xác định for và không xác định repeat và while
16 p | 110 | 9
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 13 - Kiểu dữ liệu có cấu trúc - Kiểu bản ghi (Record)
15 p | 90 | 8
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 1 - 2 - 3
36 p | 114 | 8
-
Giáo trình Ngôn ngữ lập trình Pascal: Phần 2
16 p | 104 | 7
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 6 - Thực hành Turbo Pascal
6 p | 126 | 6
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 4 - Thủ tục vào ra dữ liệu
23 p | 93 | 6
-
Ngôn ngữ lập trình Pascal: Hướng dẫn giải bài tập với Turbo Pascal - Phần 1
88 p | 9 | 4
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 7 - Kiểu vô hướng liệt kê và kiểu đoạn con
6 p | 78 | 3
-
Ngôn ngữ lập trình Pascal: Hướng dẫn giải bài tập (Tập 2) - Phần 1
67 p | 13 | 3
-
Ngôn ngữ lập trình Pascal: Hướng dẫn giải bài tập (Tập 2) - Phần 2
72 p | 6 | 3
-
Ngôn ngữ lập trình Pascal: Hướng dẫn giải bài tập với Turbo Pascal - Phần 2
101 p | 7 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn