intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Ngôn ngữ lập trình pascal - GV. Nguyễn Thị Lan

Chia sẻ: Nguyễn Thị Lan | Ngày: | Loại File: DOC | Số trang:27

123
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Ngôn ngữ lập trình pascal - GV. Nguyễn Thị Lan

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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,9x10­39    đế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
  6. Ng«n ng÷ lËp tr×nh pascal Gv: NguyÔn ThÞ Lan Nhỏ hơn hoặc bằng
  7. 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)/(x­1/2)­(x­z)/(x*y) x− 2 2 x­x 2*sqrt(x) ­ abs(x) ( x − a) + ( y − b)   2 2 R  sqrt((x­a)*(x­a)+(y­b)+(y­b)*(y­b))=5) and (x
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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.6666666667E­01 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0