B ài
17
1. Chương trình con
Để viết chương trình giải các bài toán lớn, phức tạp người
lập trình có thể chia thành nhiều bài toán nhỏ, mỗi bài toán
là một dãy lệnh mô tả một số thao tác nhất định (gọi là ctc).
Sau đó ghép nối các chương trình con thành chương trình
chính.
Việ
cA
Vi ệc B
Nhóm
trưởng
Có thể sử dụng chương trình con khi
lập trình giải các bài toán sau không?
Chương trình con đó thực hiện thao tác nào?
Bài 1: In ra màn hình 5 dòng chữ
‘Chúc mừng bạn Chinh đạt điểm tốt’
‘Chúc mừng bạn Như đạt điểm tốt’
‘Chúc mừng bạn Việt đạt điểm tốt’
‘Chúc mừng bạn Vân đạt điểm tốt’
‘Chúc mừng bạn Hương đạt điểm tốt’
Chucmung(ten);
Có thể sử dụng chương trình con khi
lập trình giải các bài toán sau không?
Chương trình con đó thực hiện thao tác nào?
Bài2: Nhập vào 2 số nguyên a,b.
Tính ước chung lớn nhất và bội chung
nhỏ nhất của 2 số này?
UCLN(x,y)
Có thể sử dụng chương trình con khi
lập trình giải các bài toán sau không?
Chương trình con đó thực hiện thao tác nào?
Bài 3: Tính độ dài 3 cạnh của tam giác khi biết
toạ độ các đỉnh
Dodai(x,y);
2. Phân loại và cấu trúc của chương trình con
Chương trình
trìnhcon
con
Chương
Hàm
Hàm(Function)
(Function)
Thủ
Thủtục
tục (Procedure)
(Procedure)
Là chương trình con
Là chương trình con
Thực hiện một số thao tác nào đó
Thực hiện một số thao tác nào đó
Trả về một giá trị qua tên của nó.
Không trả về giá trị qua tên của nó.
VD:
- Hàm toán học sin(x),
sqrt(x), abs(x),...
- Length(x)
VD:
-Writeln,
.
Write, readln, read,
- copy(s, vt, n),
insert(s1,s2,vt)
b. CU TRC CA CHNG TRèNH CON
<Phn u>
u>
khai bỏo>
bỏo>
Phn thõn>
thõn>
<< Phn
-Phần đầu: Bắt buộc phải có, dùng để khai báo tên chơng
trình con, biến cho dữ liệu vào ra, nếu là hàm phải khai báo giá
trị trả lại của hàm.
- Phần khai báo: Khai báo các hằng và biến dùng trong ch
ơng trình con.
- Phần thân: Dãy các lệnh thực hiện nhiệm vụ của chơng trình
con.
b. CẤU TRÚC CỦA CHƯƠNG TRÌNH CON
<Phần đầu>
đầu>
khai báo>
báo>
Phần thân>
thân>
<< Phần
Hàm (Function)
Function <Tên hàm>[(
Thủ tục (Procedure)
Procedure <tên thủ tục> [(
số>)];
số>)] :kiểu của hàm;
[< Phần khai bao >]
[< Phần khai báo >]
Begin
Begin
[<Dãy các lệnh>]
[<Dãy các lệnh>]
tênhàm := giátrị;
End;
End;
b. CẤU TRÚC CỦA CHƯƠNG TRÌNH CON
PhÇn ®Çu
Procedure Hoan_doi(Var x,y:integer);
Var TG: integer;
PhÇn khai b¸o
Begin
TG:= x;
x:= y;
y:=TG;
end;
PhÇn th©n
b. CẤU TRÚC CỦA CHƯƠNG TRÌNH CON
PhÇn ®Çu
Procedure Ve_HCN( chdai,chrong:integer);
Var i,j: integer;
PhÇn khai b¸o
Begin
For i:=1 to chdai do write(‘ * ’);
PhÇn th©n
Writeln;
For j:=1 to chrong-2 do
begin
write(‘ * ’);
for i:=1 to chdai-2 do write(‘ ‘);
writeln(‘ * ’);
end;
end;
Program VD;
Uses crt;
var a,b: integer;
BiÕn toµn côc
BiÕn côc bé
Tham sè h×nh
thøc biÕn
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.
Tham sè thùc sù
Program VD; BiÕn toµn côc
BiÕn côc bé
Uses crt;
var a,b: byte;
Procedure Ve_HCN( chdai,chrong:integer);
Var i,j: integer;
Begin
For i:=1 to chdai do write(‘ * ’);
Tham sè
Writeln;
h×nh thøc
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;
Tham sè thùc sù
end;
(tham trÞ)
BEGIN
CLRSCR;
Ve_HCN(25,10);
Writeln; a:=5 ; b:=10;
Ve_HCN(a,b);
readln;
END.
c. Thực hiện chương trình con
Lập
Lậpchương
chươngtrình
trìnhtối
tốigiản
giảnphân
phânsố
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;
Nhap vao tu so va mau so:
Phan so toi gian= 3/5
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;
USCLN=2;
USCLN=2;
UCLN
:= a;
end;
BEGIN
BEGIN
Write(‘Nhap
vao
tu tu
so va
Write(‘
Nhap
vao
so mau
vµ mau Readln(tu,mau);
so:‘);
readln(tu,mau);
Cso:‘);
:= 6 div UCLN(6,10)
d := 10 div
UCLN(6,10);
C := tu div UCLN(tu,mau) ; d := mau div
Writeln(‘
Phan so toi gian = ‘, 3, ‘ / ‘, 5);
UCLN(tu,mau);
Readln;
Writeln(‘ Phan so toi gian = ‘, c, ‘ / ‘, d);
END.
Readln;
6 10
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.
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 ở trong
CTC chỉ có tác dụng trong
CTC gọi là biến cục bộ.
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ự.
Hãy nhớ!
Chương trình con là một dãy
lệnh giải quyết một bài toán
con cụ thể.
Phân loại chương trình con:
+ Hàm: trả về giá trị
+ Thủ tục: không trả về
giá trị
Cấu trúc chương trình gồm:
<Phầnđầu>
đầu>
khaibáo>
báo>
Phầnthân>
thân>
<
Hãy nhớ!
Biến:
- 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ộ.
Tham số
- 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ự.
Trß ch¬i
C©u hái 1
Sự khác biệt cơ bản giữa hàm và thủ tục ?
Hµm tr¶ vÒ mét gi¸ trÞ,
§¸p ¸n
Thñ tôc kh«ng tr¶ vÒ gi¸ trÞ
HÕt
giê
526789341
10s
Home
C©u hái 2
Trong c¸c CTC sau, ch¬ng tr×nh con nµo lµ thủ
tục
A. delete(st,vt,n)
§¸p ¸n
B. pos(s1,s2)
C. length(s)
HÕt
giê
526789341
10s
Home
C©u hái 3
“BiÕn khai b¸o cho d÷ liÖu vµo ra trong ch¬ng tr×nh
con gäi lµ ?
A. biÕn toµn côc
§¸p ¸n
B. biÕn côc bé
C. tham sè h×nh thøc
D. tham sè thùc sù.
10s
HÕt
giê
526789341
Home
C©u hái 4
BiÕn khai b¸o trong ch¬ng tr×nh con lµ?
§¸p ¸n
biÕn côc bé
HÕt
giê
526789341
10s
Home
Câu hỏi 5
Biến chứa trong lời gọi CTC ở chơng trình chính là
?
Đáp án
Tham số thực sự
Hết
giờ
526789341
10s
Home