Bài 18. Ví dụ về cách viết và sử dụng chương trình con
Chia sẻ bởi Trần Thanh Chien |
Ngày 10/05/2019 |
59
Chia sẻ tài liệu: Bài 18. Ví dụ về cách viết và sử dụng chương trình con thuộc Tin học 11
Nội dung tài liệu:
KIỂM TRA BÀI CỦ
Câu 1: Thế nào là chương trình con? Cấu trúc chương trình con những phần nào ?
Câu 2: Nêu sự giống nhau và khác nhau giữa thủ tục và hàm?
Xét ví dụ vẽ hình chữ nhật có dạng sau
Ta có thể vẽ hình chữ nhật trên với ba câu lệnh
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Theo em để vẽ được hình chữ nhật trên ta viết câu lệnh nào?
Nếu bài toán yêu cầu vẽ 3 hình chữ nhật có dạng như trên thì ta phải viết câu lệnh như thế nào ?
Ta có thể vẽ hình chữ nhật trên với các câu lệnh
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Ngoài cách viết như trên ta còn có thể viết chương trình bằng cách nào khác ?
Ta có thể viết chương trình
bài toán trên bằng cách
xây dưng thủ tục
Ve_hcn ( vẽ hình chủ nhật)
từ 3 câu lệnh trên
1. Cách viết và sử dụng thủ tục
program VD_thutuc1;
procedure Ve_hcn;{Bat dau thu tuc}
begin
end;{Ket thuc chuong trinh con}
writeln(‘* * * * * * *’);
writeln(‘* *’);
writeln(‘* * * * * * *’);
begin
Ve_Hcn; {Goi thu tuc Ve_Hcn}
writeln; writeln;{De cach hai dong}
Ve_Hcn;
writeln; writeln;
Ve_Hcn;
end.
{=======================}
{=======================}
Cấu trúc chương trình chính:
[]
? Vị trí của thủ tục nằm ở phần nào của chương trình chính?
Nhắc lại :
1. Cách viết và sử dụng thủ tục
program VD_thutuc1;
procedure Ve_hcn;{Bat dau thu tuc}
begin
end;{Ket thuc chuong trinh con}
writeln(‘* * * * * * *’);
writeln(‘* *’);
writeln(‘* * * * * * *’);
begin
Ve_Hcn; {Goi thu tuc Ve_Hcn}
writeln; writeln;{De cach hai dong}
Ve_Hcn;
writeln; writeln;
Ve_Hcn;
end.
{=======================}
{=======================}
Cấu trúc chương trình con gồm :
Nhắc lại :
1. Cách viết và sử dụng thủ tục
Procedure ();
[]
Begin
[< dãy các lệnh>;]
End;
Cách gọi thủ tục trong chương trình chính:
Tên thủ tục ( < danh sách các tham số>);
a. Cấu trúc thủ tục :
- Các thủ tục, nếu có, phải được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo biến
1. Cách viết và sử dụng thủ tục
1. Cách viết và sử dụng thủ tục
a. Cấu trúc của thủ tục
b. Ví dụ về thủ tục
Để thủ tục Ve_Hcn có thể thực hiện được điều đó, cần có hai tham số cho dữ liệu vào là chiều dài và chiều rộng.
Khi đó phần đầu của thủ tục được viết như sau.
Procedure Ve_Hcn (chdai, chrong: integer);
* * * * * * … *
* * * * * * … *
*
*
Chrong
Chdai
Chrong - 2
Theo em ta có thể sử dụng thủ tục trên để vẽ 3 hính chữ nhật có kích thướt khác nhau hay không?
VD ; Hình 1 ; dài= 4 rộng=2
Hình 2 ; dài= 8 rộng=4
Hình 3 ; dài= 16 rộng=8
Các em hãy viết một thủ tục Ve_HCN bằng dấu * với chiều dài, rộng bất kì!
Vẽ cạnh trên HCN
Vẽ hanh cạnh bên
Vẽ Cạnh dưới
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 DO WRITE(‘*’);WRITELN;
* * * * * * … *
* * * * * * … *
*
*
Chrong
Chdai
Chrong - 2
b. Ví dụ về thủ tục
1. Cách viết và sử dụng thủ tục
b. Ví dụ về thủ tục
1. Cách viết và sử dụng thủ tục
Procedure ve_hcn (chdai,chrong: integer);
Var i,j : integer;
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 Do write(‘*’);
Writeln;
end;
b. Ví dụ về thủ tục
Procedure ve_hcn (chdai,chrong: integer);
Var i,j : integer;
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 Do write(‘*’);
Writeln;
end;
Program Vidu1;
Uses CRT;
Var a,b,i:integer;
Begin
(* Chươngtrình chính*)
Clrscr;
Ve_hcn(25,10);
Writeln; Writeln;
Ve_hcn(5,10);
Readln:
CLRSCR;
a:=4; b:=2;
For i:=1 to 4 Do
Begin
Ve_hcn(a,b);
readln; Clrscr;
a:=a*2;
b:=b*2;
End;
Readln;
End.
Ve_hcn(25,10);
chdai,chrong
Ve_hcn(5,10);
Ve_hcn(a,b);
Tham số hình thức
Tham s? th?c s? (tham tr?) )
* Ví dụ 1 ( SGK trang 98)
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.
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.
* Ví dụ 2 (SKG trang99,100)
10
Procedure Hoan_doi(Var a,b:integer);
Var TG: integer;
Begin
TG:= a;
a:= b;
b:=TG;
end;
10 5
5 10
Procedure Hoan_doi(a:integer: var b:integer);
Var TG: integer;
Begin
TG:= a;
a:= b;
b:=TG;
end;
5
5
5
5 5
* Nhận xét: Có 2 cách truyền tham số cho CTC
- Truyền tham biến: Chương trình chính truyền danh sách tham số cho CTC và CTC có thể làm thay đổi giá trị các biến được khai báo trong chương trình chính. Khi đó phần khai báo tham số hình thức trong CTC phải có từ khóa Var và tham số thực sự ( khi gọi) phải là biến.
- Truyền tham trị: Chương trình chính truyền danh sách tham số cho CTC và CTC không làm thay đổi giá trị các biến được khai báo trong chương trình chính. Phần khai báo tham số hình thức trong CTC không có từ khóa Var.
b. Ví dụ về thủ tục
2/ Cách viết và sử dụng Hàm:
a/ Cấu trúc:
Function (): ;
[]
Begin
[< dãy các lệnh>;]
:= ;
End;
Cách gọi hàm trong chương trình chính:
… ( < danh sách các tham số>)…
Chú ý:
Vì việc thực hiện hàm luôn cho 1 giá trị kết quả thuộc 1 kiểu xác định được khai báo trong phần đầu của hàm, cho nên lời gọi hàm không bao giờ đứng riêng rẽ một mình, mà chỉ có thể nằm trong một biểu thức nào đó hoặc trong câu lệnh gán ( vế phải của câu lệnh gán); Bên trong hàm bắt buộc phải có lệnh gán giá trị kết quả cho tên hàm:= ;
2/ Cách viết và sử dụng Hàm:
Hoạt động 3: Hãy đọc chương trình rút gọn phân số , trong đó có sử dụng hàm tính ước số chung lớn nhất. Tìm hiểu cách hoạt động bằng cách chạy thử việc rút gọn phân số 68/119?
b/ Ví dụ về hàm:
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
Program Rutgon_phanso;
Uses CRT;
Var tuso, mauso, a: integer;
Function UCLN (x, y :integer): integer;
Var sodu: integer;
Begin
While y<> 0 Do
Begin
sodu:= x mod y;
x:=y;
y:=sodu;
end;
UCLN:=x;
End;
Begin
clrscr;
Write(‘Nhap tu so và mau so:’);
Readln(tuso, mauso);
a:= UCLN(tuso, mauso);
UCLN(tuso, mauso);
68 119
UCLN(68, 119);
Function UCLN (x, y :integer): integer;
While y<> 0 Do
119
68
119
68
68
51
68
51
51
17
51
17
17
0
17
0
17
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
If a>1 then
Begin
tuso:=tuso div a;
mauso:= mauso div a;
end;
Writeln ( ‘ Phan so rut gon :’, tuso,’/’, mauso);
End.
Hoạt động 4: Sử dụng hàm
Function Min (a,b:real):real;
Begin
If a end;
Hãy viết chương trình tìm số bé nhất của 3 số nhập từ bàn phím ?
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
Chương trình chính:
Begin
Write( ‘Nhap 3 so a,b,c:’);
Readln(a,b,c);
Writeln( ‘ So be nhat:’, Min(Min(a,b),c));
End.
Câu 1: Thế nào là chương trình con? Cấu trúc chương trình con những phần nào ?
Câu 2: Nêu sự giống nhau và khác nhau giữa thủ tục và hàm?
Xét ví dụ vẽ hình chữ nhật có dạng sau
Ta có thể vẽ hình chữ nhật trên với ba câu lệnh
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Theo em để vẽ được hình chữ nhật trên ta viết câu lệnh nào?
Nếu bài toán yêu cầu vẽ 3 hình chữ nhật có dạng như trên thì ta phải viết câu lệnh như thế nào ?
Ta có thể vẽ hình chữ nhật trên với các câu lệnh
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
Ngoài cách viết như trên ta còn có thể viết chương trình bằng cách nào khác ?
Ta có thể viết chương trình
bài toán trên bằng cách
xây dưng thủ tục
Ve_hcn ( vẽ hình chủ nhật)
từ 3 câu lệnh trên
1. Cách viết và sử dụng thủ tục
program VD_thutuc1;
procedure Ve_hcn;{Bat dau thu tuc}
begin
end;{Ket thuc chuong trinh con}
writeln(‘* * * * * * *’);
writeln(‘* *’);
writeln(‘* * * * * * *’);
begin
Ve_Hcn; {Goi thu tuc Ve_Hcn}
writeln; writeln;{De cach hai dong}
Ve_Hcn;
writeln; writeln;
Ve_Hcn;
end.
{=======================}
{=======================}
Cấu trúc chương trình chính:
[
? Vị trí của thủ tục nằm ở phần nào của chương trình chính?
Nhắc lại :
1. Cách viết và sử dụng thủ tục
program VD_thutuc1;
procedure Ve_hcn;{Bat dau thu tuc}
begin
end;{Ket thuc chuong trinh con}
writeln(‘* * * * * * *’);
writeln(‘* *’);
writeln(‘* * * * * * *’);
begin
Ve_Hcn; {Goi thu tuc Ve_Hcn}
writeln; writeln;{De cach hai dong}
Ve_Hcn;
writeln; writeln;
Ve_Hcn;
end.
{=======================}
{=======================}
Cấu trúc chương trình con gồm :
Nhắc lại :
1. Cách viết và sử dụng thủ tục
Procedure
[
Begin
[< dãy các lệnh>;]
End;
Cách gọi thủ tục trong chương trình chính:
Tên thủ tục ( < danh sách các tham số>);
a. Cấu trúc thủ tục :
- Các thủ tục, nếu có, phải được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo biến
1. Cách viết và sử dụng thủ tục
1. Cách viết và sử dụng thủ tục
a. Cấu trúc của thủ tục
b. Ví dụ về thủ tục
Để thủ tục Ve_Hcn có thể thực hiện được điều đó, cần có hai tham số cho dữ liệu vào là chiều dài và chiều rộng.
Khi đó phần đầu của thủ tục được viết như sau.
Procedure Ve_Hcn (chdai, chrong: integer);
* * * * * * … *
* * * * * * … *
*
*
Chrong
Chdai
Chrong - 2
Theo em ta có thể sử dụng thủ tục trên để vẽ 3 hính chữ nhật có kích thướt khác nhau hay không?
VD ; Hình 1 ; dài= 4 rộng=2
Hình 2 ; dài= 8 rộng=4
Hình 3 ; dài= 16 rộng=8
Các em hãy viết một thủ tục Ve_HCN bằng dấu * với chiều dài, rộng bất kì!
Vẽ cạnh trên HCN
Vẽ hanh cạnh bên
Vẽ Cạnh dưới
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 DO WRITE(‘*’);WRITELN;
* * * * * * … *
* * * * * * … *
*
*
Chrong
Chdai
Chrong - 2
b. Ví dụ về thủ tục
1. Cách viết và sử dụng thủ tục
b. Ví dụ về thủ tục
1. Cách viết và sử dụng thủ tục
Procedure ve_hcn (chdai,chrong: integer);
Var i,j : integer;
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 Do write(‘*’);
Writeln;
end;
b. Ví dụ về thủ tục
Procedure ve_hcn (chdai,chrong: integer);
Var i,j : integer;
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 Do write(‘*’);
Writeln;
end;
Program Vidu1;
Uses CRT;
Var a,b,i:integer;
Begin
(* Chươngtrình chính*)
Clrscr;
Ve_hcn(25,10);
Writeln; Writeln;
Ve_hcn(5,10);
Readln:
CLRSCR;
a:=4; b:=2;
For i:=1 to 4 Do
Begin
Ve_hcn(a,b);
readln; Clrscr;
a:=a*2;
b:=b*2;
End;
Readln;
End.
Ve_hcn(25,10);
chdai,chrong
Ve_hcn(5,10);
Ve_hcn(a,b);
Tham số hình thức
Tham s? th?c s? (tham tr?) )
* Ví dụ 1 ( SGK trang 98)
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.
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.
* Ví dụ 2 (SKG trang99,100)
10
Procedure Hoan_doi(Var a,b:integer);
Var TG: integer;
Begin
TG:= a;
a:= b;
b:=TG;
end;
10 5
5 10
Procedure Hoan_doi(a:integer: var b:integer);
Var TG: integer;
Begin
TG:= a;
a:= b;
b:=TG;
end;
5
5
5
5 5
* Nhận xét: Có 2 cách truyền tham số cho CTC
- Truyền tham biến: Chương trình chính truyền danh sách tham số cho CTC và CTC có thể làm thay đổi giá trị các biến được khai báo trong chương trình chính. Khi đó phần khai báo tham số hình thức trong CTC phải có từ khóa Var và tham số thực sự ( khi gọi) phải là biến.
- Truyền tham trị: Chương trình chính truyền danh sách tham số cho CTC và CTC không làm thay đổi giá trị các biến được khai báo trong chương trình chính. Phần khai báo tham số hình thức trong CTC không có từ khóa Var.
b. Ví dụ về thủ tục
2/ Cách viết và sử dụng Hàm:
a/ Cấu trúc:
Function
[
Begin
[< dãy các lệnh>;]
End;
Cách gọi hàm trong chương trình chính:
…
Chú ý:
Vì việc thực hiện hàm luôn cho 1 giá trị kết quả thuộc 1 kiểu xác định được khai báo trong phần đầu của hàm, cho nên lời gọi hàm không bao giờ đứng riêng rẽ một mình, mà chỉ có thể nằm trong một biểu thức nào đó hoặc trong câu lệnh gán ( vế phải của câu lệnh gán); Bên trong hàm bắt buộc phải có lệnh gán giá trị kết quả cho tên hàm
2/ Cách viết và sử dụng Hàm:
Hoạt động 3: Hãy đọc chương trình rút gọn phân số , trong đó có sử dụng hàm tính ước số chung lớn nhất. Tìm hiểu cách hoạt động bằng cách chạy thử việc rút gọn phân số 68/119?
b/ Ví dụ về hàm:
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
Program Rutgon_phanso;
Uses CRT;
Var tuso, mauso, a: integer;
Function UCLN (x, y :integer): integer;
Var sodu: integer;
Begin
While y<> 0 Do
Begin
sodu:= x mod y;
x:=y;
y:=sodu;
end;
UCLN:=x;
End;
Begin
clrscr;
Write(‘Nhap tu so và mau so:’);
Readln(tuso, mauso);
a:= UCLN(tuso, mauso);
UCLN(tuso, mauso);
68 119
UCLN(68, 119);
Function UCLN (x, y :integer): integer;
While y<> 0 Do
119
68
119
68
68
51
68
51
51
17
51
17
17
0
17
0
17
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
If a>1 then
Begin
tuso:=tuso div a;
mauso:= mauso div a;
end;
Writeln ( ‘ Phan so rut gon :’, tuso,’/’, mauso);
End.
Hoạt động 4: Sử dụng hàm
Function Min (a,b:real):real;
Begin
If a end;
Hãy viết chương trình tìm số bé nhất của 3 số nhập từ bàn phím ?
2/ Cách viết và sử dụng Hàm:
b/ Ví dụ về hàm:
Chương trình chính:
Begin
Write( ‘Nhap 3 so a,b,c:’);
Readln(a,b,c);
Writeln( ‘ So be nhat:’, Min(Min(a,b),c));
End.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Thanh Chien
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)