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

Post on 13-Apr-2017

3.102 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

top related