25
Chào các em đến với buổi học

Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Embed Size (px)

Citation preview

Page 1: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Chào các em đến với buổi học

Page 2: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Trong ngôn ngữ 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: <Phần đầu>

[<Phần khai báo]> <Phần thân>

Page 3: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG

CHƯƠNG TRÌNH CON( 2 TIẾT)

Page 4: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

1.Cách viết và 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:

* * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * *

Page 5: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Program VD_thutuc1;uses crt;procedure ve_hcn; begin writeln('* * * * * * *'); writeln('* *'); writeln('* * * * * * *'); end;beginclrscr;ve_hcn;writeln;writeln;ve_hcn;writeln;writeln;ve_hcn;readln;end.

Chạy chương trình: Ctrl+F9

Page 6: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Vị trí của 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

Page 7: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Hãy nêu sự 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” 

Page 8: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Program VD_thutuc2;uses crt;Var 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;

Page 9: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

writeln; end; begin {bat dau 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

Page 10: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

• Trong chương 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

Page 11: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Trong lệnh gọi 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.

Page 12: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

program vd_thambien1;uses crt;var 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.

Page 13: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

• Chúng ta 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:

Page 14: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

program vd_thambien2;uses crt;var 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

Page 15: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

• Khai báo 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ị

Page 16: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

2. Cách viết và sử dụng hàmHã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;

Page 17: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Cấu trúc của hàm

• function <tên hàm> [(<ds tham số >)] :<Kiểu dữ liệu> ;

• 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

<tên hàm> : <giá trị biểu thức>;

Page 18: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

program Rutgon_phanso;User crt;var 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}

Page 19: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Beginclrscr;write(‘Nhap tu so, 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.

Page 20: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Chương trình có 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àmHà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, soduCá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.

Page 21: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

• biến được 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ộ

Page 22: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

program Minbaso;var a,b,c: real;

{ Hàm tìm số nhỏ nhất trong 2 số}Function Min (a, b: real) : real;Begin

if a<b then Min:= aelse Min:=b;

end; begin

write (‘nhap vao 3 so:’);readln (a,b,c);writeln (‘so nho nhat trong 3 so la: ‘,Min(Min(a,b),c));readln

end.

Chạy chương trình: Ctrl+F9

Page 23: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Trong chương trình 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ố.

Page 24: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Củng cố bài 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é.

Page 25: Bài 18. Ví dụ về cách viết và sử dụng chương trình con

Cảm ơn các em đã chú ý lắng nghe.