Bài 18. Ví dụ về cách viết và sử dụng chương trình con
Chia sẻ bởi Dương Quốc Đạt |
Ngày 10/05/2019 |
70
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:
Bài 18
ví dụ về cách viết và
sử dụng chương trình con
Ví dụ 1: Lập chương trình vẽ các hình chữ nhật bằng dấu * có kích thước khác nhau.
Theo bạn để viết chương trình cho ví dụ trên ta nên dùng loại chương trình con nào?
Cách2: Dùng chương trình con thủ tục Ve_HCN(dai,rong) để vẽ một hình chữ nhật.
Trong chương trình chính, dùng lời gọi thủ tục và truyền các tham số với giá trị khác nhau để vẽ các hình chữ nhật khác.
Ví dụ: Ve_HCN(25,20); Ve_HCN(3,7)
Cách 1: Sử dụng nhiều lần các câu lệnh:
Writeln(`* * * * * * *`);
Writeln(`* *`);
Writeln(`* * * * * * *`);
1. Cách viết và sử dụng thủ tục:
Cấu trúc của thủ tục:
Procedure [()];
[< Phần khai báo >]
Begin
[]
End;
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ì!
**********************************
* *
* *
* *
**********************************
Dài
Rộng
Vẽ cạnh trên của HCN
Vẽ hai 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;
Program VD;
Uses crt;
var a,b: byte;
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;
BEGIN
CLRSCR;
Ve_HCN(25,10);
Writeln; a:=5 ; b:=10;
Ve_HCN(a,b);
readln;
END.
Biến cục bộ
Tham số thực sự (tham trị)
Tham số hình thức
Biến toàn cục
* Tham số và cách truyền tham số:
Tham số tại nơi gọi:Tham số thực.
Tham số tại nơi được gọi: Tham số hình thức.
Tham số hình thức trị -> tham số giá trị gọi tắt là tham trị.
Tham số hình thức biến -> tham số biến gọi tắt là tham biến.
Program VD;
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.
Biến cục bộ
Tham số thực sự
Tham số hình thức biến
Biến toàn cục
2. Cách viết và sử dụng hàm:
Function[()] :kiểu của hàm;
[< Phần khai báo >]
Begin
[]
tênhàm := giátrị;
End;
Lưu ý khi sử dụng hàm:
Việc sử dụng hàm tương tự như các hàm chuẩn.
Kết quả trả về qua tên hàm chỉ có thể thuộc các kiểu dữ liệu chuẩn: integer, real, boolean, char, string.
Vì kết quả trả về đã gán cho tên hàm nên thông thường các tham số trong hàm là các tham số giá trị.
Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí là tham số của lời gọi hàm, thủ tục khác.
VD: Lập chương trình tính tổng luỹ thừa S = am +bn +cp +dq
Viết chương trình con dạng tổng quát Luythua = xk
Trong đó: Luythua, x kiểu thực, k kiểu nguyên.
Khi tính luỹ thừa của các số hạng trong tổng trên ta chỉ cần gọi tên chương trình con Luythua và thay thế (x,k) bằng các giá trị tương ứng. Ví dụ như: Luythua(a,m). luythua(b,n), luythua(c,p),luythua(d,q).
* INPUT : Các cơ số a,b,c,d và các số mũ lần lượt n,m,p,q
* OUTPUT : S
Program tong_luy_thua;
Uses crt;
Var a,b,c,d,S : real;
n,m,p,q :integer;
Function luythua(x: real,k:integer): real;
Var j: integer; Lt:Real;
begin
Lt:=1;
For j:=1 to k do Lt:=Lt*x;
Luythua:=Lt;
end;
BEGIN
Write(` Nhap vao cac co so a,b,c,d `); readln(a,b,c,d);
write(` Nhap vao cac so mu m,n,p,q: `); readln(n,m,p,q);
s:= luythua(a,m)+luythua(b,n)+luythua(c,p)+luythua(d,q);
Writeln(` Tong luy thua =`, S:7:2);
Readln;
END.
Nhận xét
Biến được khai báo ở trong CTC chỉ có tác dụng trong CTC gọi là biến cục bộ.
Biến khai báo ở CT chính có tác dụng ở mọi chương trình gọi là biến toàn cục.
Biến được khai báo cho dữ liệu vào/ra ở CTC gọi là tham số hình thức.
Biến chứa trong lời gọi CTC ở chương trình chính là tham số thực sự.
VD: Lập chương trình tối giản phân số
Ví dụ: nhập 6/10 => ra 3/5
* INPUT : Nhập phân số a/b;
* OUTPUT : Phân số c/d - Trong đó: c = a/ƯCLN(a,b);
d = b/ƯCLN(a,b);
? Viết chương trình con thực hiện tìm ƯCLN(a,b) và gọi nó khi tính c,d trong chương trình chính.
Program tgps;
Uses crt;
Var tu,mau,c,d : integer;
Function UCLN( a,b :integer) : integer;
Begin
While a<> b do
if a>b then a := a-b else b:=b-a;
UCLN := a;
end;
BEGIN
Write(` Nhap vao tu so và mau so:`); readln(tu,mau);
C := tu div UCLN(tu,mau) ; d := mau div UCLN(tu,mau);
Writeln(` Phan so toi gian = `, c, ` / `, d);
Readln;
END.
Write(`Nhap vao tu so va mau so:`);
C := 6 div
d := 10 div
UCLN(6,10)
UCLN(6,10);
Writeln(` Phan so toi gian = `, 3, ` / `, 5);
Readln;
END.
BEGIN
Readln(tu,mau);
USCLN=2;
USCLN=2;
Nhap vao tu so va mau so:
6 10
Phan so toi gian = 3/5
Hãy nhớ!
? Biến:
? Tham số
- Khai báo trong chương trình chính là biến toàn cục.
- Khai báo trong chương trình con là biến cục bộ.
- Biến khai báo cho dữ liệu vào ra trong chương trình con gọi là tham số hình thức.
- Biến chứa trong lời gọi CTC ở chương trình chính là các tham số thực sự.
ví dụ về cách viết và
sử dụng chương trình con
Ví dụ 1: Lập chương trình vẽ các hình chữ nhật bằng dấu * có kích thước khác nhau.
Theo bạn để viết chương trình cho ví dụ trên ta nên dùng loại chương trình con nào?
Cách2: Dùng chương trình con thủ tục Ve_HCN(dai,rong) để vẽ một hình chữ nhật.
Trong chương trình chính, dùng lời gọi thủ tục và truyền các tham số với giá trị khác nhau để vẽ các hình chữ nhật khác.
Ví dụ: Ve_HCN(25,20); Ve_HCN(3,7)
Cách 1: Sử dụng nhiều lần các câu lệnh:
Writeln(`* * * * * * *`);
Writeln(`* *`);
Writeln(`* * * * * * *`);
1. Cách viết và sử dụng thủ tục:
Cấu trúc của thủ tục:
Procedure
[< Phần khai báo >]
Begin
[
End;
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ì!
**********************************
* *
* *
* *
**********************************
Dài
Rộng
Vẽ cạnh trên của HCN
Vẽ hai 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;
Program VD;
Uses crt;
var a,b: byte;
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;
BEGIN
CLRSCR;
Ve_HCN(25,10);
Writeln; a:=5 ; b:=10;
Ve_HCN(a,b);
readln;
END.
Biến cục bộ
Tham số thực sự (tham trị)
Tham số hình thức
Biến toàn cục
* Tham số và cách truyền tham số:
Tham số tại nơi gọi:Tham số thực.
Tham số tại nơi được gọi: Tham số hình thức.
Tham số hình thức trị -> tham số giá trị gọi tắt là tham trị.
Tham số hình thức biến -> tham số biến gọi tắt là tham biến.
Program VD;
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.
Biến cục bộ
Tham số thực sự
Tham số hình thức biến
Biến toàn cục
2. Cách viết và sử dụng hàm:
Function
[< Phần khai báo >]
Begin
[
tênhàm := giátrị;
End;
Lưu ý khi sử dụng hàm:
Việc sử dụng hàm tương tự như các hàm chuẩn.
Kết quả trả về qua tên hàm chỉ có thể thuộc các kiểu dữ liệu chuẩn: integer, real, boolean, char, string.
Vì kết quả trả về đã gán cho tên hàm nên thông thường các tham số trong hàm là các tham số giá trị.
Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí là tham số của lời gọi hàm, thủ tục khác.
VD: Lập chương trình tính tổng luỹ thừa S = am +bn +cp +dq
Viết chương trình con dạng tổng quát Luythua = xk
Trong đó: Luythua, x kiểu thực, k kiểu nguyên.
Khi tính luỹ thừa của các số hạng trong tổng trên ta chỉ cần gọi tên chương trình con Luythua và thay thế (x,k) bằng các giá trị tương ứng. Ví dụ như: Luythua(a,m). luythua(b,n), luythua(c,p),luythua(d,q).
* INPUT : Các cơ số a,b,c,d và các số mũ lần lượt n,m,p,q
* OUTPUT : S
Program tong_luy_thua;
Uses crt;
Var a,b,c,d,S : real;
n,m,p,q :integer;
Function luythua(x: real,k:integer): real;
Var j: integer; Lt:Real;
begin
Lt:=1;
For j:=1 to k do Lt:=Lt*x;
Luythua:=Lt;
end;
BEGIN
Write(` Nhap vao cac co so a,b,c,d `); readln(a,b,c,d);
write(` Nhap vao cac so mu m,n,p,q: `); readln(n,m,p,q);
s:= luythua(a,m)+luythua(b,n)+luythua(c,p)+luythua(d,q);
Writeln(` Tong luy thua =`, S:7:2);
Readln;
END.
Nhận xét
Biến được khai báo ở trong CTC chỉ có tác dụng trong CTC gọi là biến cục bộ.
Biến khai báo ở CT chính có tác dụng ở mọi chương trình gọi là biến toàn cục.
Biến được khai báo cho dữ liệu vào/ra ở CTC gọi là tham số hình thức.
Biến chứa trong lời gọi CTC ở chương trình chính là tham số thực sự.
VD: Lập chương trình tối giản phân số
Ví dụ: nhập 6/10 => ra 3/5
* INPUT : Nhập phân số a/b;
* OUTPUT : Phân số c/d - Trong đó: c = a/ƯCLN(a,b);
d = b/ƯCLN(a,b);
? Viết chương trình con thực hiện tìm ƯCLN(a,b) và gọi nó khi tính c,d trong chương trình chính.
Program tgps;
Uses crt;
Var tu,mau,c,d : integer;
Function UCLN( a,b :integer) : integer;
Begin
While a<> b do
if a>b then a := a-b else b:=b-a;
UCLN := a;
end;
BEGIN
Write(` Nhap vao tu so và mau so:`); readln(tu,mau);
C := tu div UCLN(tu,mau) ; d := mau div UCLN(tu,mau);
Writeln(` Phan so toi gian = `, c, ` / `, d);
Readln;
END.
Write(`Nhap vao tu so va mau so:`);
C := 6 div
d := 10 div
UCLN(6,10)
UCLN(6,10);
Writeln(` Phan so toi gian = `, 3, ` / `, 5);
Readln;
END.
BEGIN
Readln(tu,mau);
USCLN=2;
USCLN=2;
Nhap vao tu so va mau so:
6 10
Phan so toi gian = 3/5
Hãy nhớ!
? Biến:
? Tham số
- Khai báo trong chương trình chính là biến toàn cục.
- Khai báo trong chương trình con là biến cục bộ.
- Biến khai báo cho dữ liệu vào ra trong chương trình con gọi là tham số hình thức.
- Biến chứa trong lời gọi CTC ở chương trình chính là các tham số thực sự.
* 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ẻ: Dương Quốc Đạt
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)