Các bài tập về chương trình con trong pascal năm 2024

  • 1. đến với buổi học
  • 2. lập trình Pascal, chương trình con gồm mấy loại? Có tên gọi là gì? Hãy nêu cấu trúc chương trình con? Chương trình con gồm có hai loại: Hàm (Function) và Thủ tục (Procedure) Cấu trúc của chương trình con gồm: [
  • 3. DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON ( 2 TIẾT)
  • 4. sử dụng thủ tục: Xét ví dụ vẽ hình chữ nhật có dạng sau: * * * * * * * * * * * * * * * * Input: ngôi sao Thuật toán: Output: Hình chữ nhật Dùng ba câu lệnh sau để vẽ hình chữ nhật trên: writeln(‘* * * * * * *’); writeln(‘* *’); writeln(‘* * * * * * *’); Chương trình minh họa Pascal: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  • 5. ve_hcn; begin writeln('* * * * * * *'); writeln('* *'); writeln('* * * * * * *'); end; begin clrscr; ve_hcn; writeln;writeln; ve_hcn; writeln;writeln; ve_hcn; readln; end. Chạy chương trình: Ctrl+F9
  • 6. thủ tục nằm ở phần nào của chương trình? •Phía sau phần khai báo biến. Cấu trúc chung của chương trình bao gồm mấy phần? •3 phần: tên thủ tục, khai báo và phần thân
  • 7. giống nhau và khác nhau giữa thủ tục và chương trình chính? Giống: Đều được khai báo trong một chương trình Khác: Thủ tục nằm ở trong chương trình chính, thủ tục mở đầu bằng từ khóa “procedure”
  • 8. a,b,i: int; procedure ve_hcn(chdai, chrong: interger); Var I,j : interger begin for i:=1 to chdai do write (‘*’); writeln; for j:=1 to chrong-2 do begin write(‘*’); for( i:=1 to chdai-2 do write(‘ ‘); writeln (‘*’); end; for i:=1 to chdai-2 do write(‘*’); writeln; end;
  • 9. chuong trinh chinh} clrscr; {ve hinh chu nhat co kich thuoc 25x10} ve_hcn(25,10); writeln;writeln; {ve hinh chu nhat co kicj thuoc 5x10} ve_hcn(5,10); readln; clrscr; {ve 4 hinh chu nhat: hinh dau tien co kich thuoc 4x2, moi hinh sau co kich thuoc gap doi hinh truoc} a:=4; b:=4; for i:=1 to 4 do begin ve_hcn(a,b); readln;clrscr; a:=a*2;b:=b*2; end; readln; end. Chạy chương trình: Ctrl+F9
  • 10. trình ở VD_thutuc2 chúng ta vẽ được bao nhiêu hình chữ nhật? Vì sao? “Trong lời gọi ve_hcn(a,b) vì có vòng lặp ( for i:=1 to 4 do )=> Nên ta vẽ được 4 hcn. • Theo em các tham số sau: chdai, chrong, a, b, 25, 10 được gọi là gì? => Tham số hình thức
  • 11. thủ tục các tham số hình thức được thay thế bằng các tham số thực sự được gọi là tham trị. • Các tham số chdai, chrong của thủ tục Ve_Hcn là tham trị. Lệnh gọi thủ tục Ve_Hcn(5, 3) thì tham số chdai=5, chrong=3.Còn lệnh gọi thủ tục Ve_Hcn(a,b) thì tham số chdai=giá trị hiện thời của biến a, chrong= giá trị hiện thời của biến b Trong lệnh gọi thủ tục các tham số hình thức được thay bằng các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra gọi là tham số biến hay ( tham biến). • Tham biến bắt đầu bằng từ khóa var.
  • 12. a,b: integer; procedure hoan_doi(var x,y:integer); var tg: integer; begin tg:=x; x:=y; y:=tg; end; begin clrscr; a:=5;b:=10; writeln(a:6,b:6); hoan_doi(a,b); writeln(a:6,b:6); readln; end. Chạy chương trình: Ctrl+F9 Cho biết tham số trong ví dụ này thuộc loại nào? Ví dụ: Thủ tục Hoan_doi giá trị 2 biến x,y. IN PUT : Giá trị x, y trước khi gọi thủ tục hoán đổi OUT PUT: Giá tri x, y sau lời gọi thủ tục.
  • 13. thấy rằng sau khi goi thủ tục Hoan_doi(a,b), với a=5, b=10 thì kết quả sau khi thực hiện thủ tục ta có: a=10, b=5. • Kết quả đó có được là do việc khai báo biến x, y ở dạng tham biến (tức là biến đươc khai báo sau từ khóa Var) • Để thấy được sự khác nhau khi chương trình con dùng tham số giá trị ( tham trị) và tham số biến (tham biến) hay (có hay không khai báo với từ khóa Var) ta xét chương trình sau:
  • 14. a,b: integer; procedure hoan_doi(x:integer;var y: integer); var tg: integer; begin tg:=x; x:=y; y:=tg; end; begin clrscr; a:=5;b:=10; writeln(a:6,b:6); hoan_doi(a,b); writeln(a:6,b:6); readln; end. Chạy chương trình: Ctrl+F9
  • 15. phải có từ khoá Var. Khi gọi chương trình con, các tham số hình thức là biến chỉ được phép thay thế bằng các tham số thực sự là biến. Tham biến • Khi khai báo không có từ khoá Var ở trước, khi gọi chương trình con, các tham số giá trị sẽ được thay thế bằng các tham số thực sự là giá trị hoặc biến. Tham trị
  • 16. và sử dụng hàm Hãy kể tên một số hàm chuẩn mà e biết? abs(), sqrt (),… Hãy cho biết sự giống nhau và khác nhau giữa hàm và thủ tục? Giống: có cấu trúc tương tự, có các tham số… Khác: tên hàm phải quy định kiểu dữ liệu. Trong thân hàm phải có lệnh: Ten_ham:=bieu_thức;
  • 17. hàm •function [()] : ; • Khác với thủ tục, trong thân hàm cần cần có lệnh gán giá trị cho tên hàm : ;
  • 18. Tuso, Mauso, a:interger; { Hàm UCLN} Function UCLN( x,y:interger):interger; Var sodu: interger; Begin while y<>0 do begin sodu:=x mod y; x:= y; y:= sodu; end; UCLN:x; end; { hết hàm UCLN}
  • 19. mau so vao !’) readln (Tuso, Mauso); a:= UCLN( Tuso, Mauso); if a>1 then begin Tuso:= Tuso div a; Mauso:= Mauso div a; end; writeln( Tuso : 5, Mauso: 5); End.
  • 20. bao nhiêu hàm? Hàm UCLN() dung để làm gì? Lời gọi hàm ở đâu? Có gì khác só với thủ tục trong lời gọi hàm? Có những biến nào được khai báo, khai báo chỗ nào trong chương trình? Có 1 hàm Hàm UCLN() dung để tính ước chung lớn nhất của x và y Lời gọi hàm phải được đặt trong một lệnh hoặc trong một lời gọi chương trình con khác. các biến Tuso, Mauso, a, sodu Các biến : Tuso, Mauso,a được khai báo ở đầu chương trình. Biến: sodu được khai báo trong các hàm.
  • 21. khai báo trong chương trình và nó được sử dụng trong tất cả các chương trình khác thuộc nó Biến toàn cục • biến được khai báo và chỉ sử dụng trong chương trình con mà khai báo nó. Biến cục bộ
  • 22. real; { Hàm tìm số nhỏ nhất trong 2 số} Function Min (a, b: real) : real; Begin if a
  • 23. có bao nhiêu hàm, chức năng mỗi hàm? •Chương trình sử dụng 1 hàm, dung để tìm số nhỏ nhất trong 3 số.
  • 24. và dặn dò: • Cách viết và sử dụng hàm và thủ tục • Phân biệt các loại tham số Các em về làm bài tập trong SBT nhé.
  • 25. em đã chú ý lắng nghe.