Upload
san-ngoai-con-la
View
3.103
Download
1
Embed Size (px)
Citation preview
Chào các em đến với buổi học
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>
Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG
CHƯƠNG TRÌNH CON( 2 TIẾT)
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:
* * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * *
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
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
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”
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;
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
• 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
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.
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.
• 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:
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
• 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ị
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;
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>;
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}
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.
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.
• 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ộ
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
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ố.
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é.
Cảm ơn các em đã chú ý lắng nghe.