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.. Tham số tại nơi được gọi: Tham số hình thức.. Kiểu tham số
Trang 1Bµi 18
Trang 2Ví 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
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:
Trang 3CÊu tróc cña thñ tôc:
Procedure <tªn thñ tôc> [(<ds tham sè>)]; [< PhÇn khai b¸o >]
Begin
[<D·y c¸c lÖnh>]
End ;
Trang 4Cá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; ‘ ’
Trang 5Program 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
Trang 6* 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
Kiểu tham số
hình thức Khai báo tương ứng sau khi thực thi Giá trị của tham số thực
chương trình con
Tham số hình
thức trị Không có VAR trước khi gọi chương trình con Giữ nguyên giá trị ban đầu như
Tham số hình
thức biến Có VAR trình con Lấy giá trị kết quả của chương
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
Trang 7Program 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
Trang 82 C¸ch viÕt vµ sö dông hµm:
Function <Tªnhµm> [(<ds tham sè>)] :kiÓu cña hµm;
[< PhÇn khai b¸o >]
Begin
[<D·y c¸c lÖnh>]
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.
Trang 9VD: Lập chương trình tính tổng luỹ thừa S = am +bn +cp +dq
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
Trang 10Program 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;
Trang 11• 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ự
Trang 12VD: Lập chương trình tối giản phân 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
Trang 13Program 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 UCLN(6,10) d := 10 div 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
Trang 14Hãy nhớ!
Biến:
Tham số
- Khai báo trong chương trình
- Khai báo trong chương trình
- 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 ở
số thực sự.