1
2
Tin häc 11
CHƯƠNG VI
§ 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
§ 18. VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
§ 19. THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN
3
1. Bài toán
1. Bài toán
2. Khái niệm
2. Khái niệm
3. Phân loại chương trình con
3. Phân loại chương trình con
4
1. Bài toán
1. Bài toán
Lập trình tính:
Ta có:
S1:= 1;
For i:=1 to x do
S1:= S1 * a;
Tương tự ta sẽ tính s2,s3,…s6
5
1. Bài toán
1. Bài toán
PROGAM baitoan1;
Var a,b,c,d,e,f,x,y,z,t,m,n ,i: integer;
S,S1,S2,S3,S4,S5, S6 : longint;
BEGIN
Writeln(‘Nhap co so:’); readln(a,b,c,d,e,f);
Writeln(‘Nhap so mu :’); readln(x,y,z,t,m,n);
S:= S1 +S2 + S3 + S4 + S5 + S6;
Writeln(‘Tong la S=‘, S)
Readln
END.
S1:= 1;
For i:=1 to x do S1:= S1 * a;
S2:= 1;
For i:=1 to y do S2:= S2 * b;
S3:= 1;
For i:=1 to z do S3:= S3 * c;
S4:= 1;
For i:=1 to t do S4:= S4 * d;
S5:= 1;
For i:=1 to m do S5:= S5 * e;
S6:= 1;
For i:=1 to n do S6:= S6 * f;
6
1. Bài toán
1. Bài toán
Nhận xét:
•
Lặp đi lặp lại câu lệnh tính lũy thừa 6 lần
(Chương trình viết dài, tốn thời gian).
•
Sử dụng thêm 6 biến S: (lãng phí bộ nhớ).
7
1. Bài toán
1. Bài toán
PROGAM baitoan1;
Var a,b,c,d,e,f,x,y,z,t,m,n ,i: integer;
S:longint;
BEGIN
Writeln(‘Nhap co so:’); readln(a,b,c,d,e,f);
Writeln(‘Nhap so mu:’); readln(x,y,z,,e,f);
S:= LT(a,x) + LT(b,y) + LT(c,z)+ LT(d,t)+ LT(e,m)+ LT(f,n)
Writeln(‘Tong la S=‘, S)
Readln
END.
Function LT(a,x:integer) : Longint;
Var S1:Longint; i : integer;
Begin
S1:= 1;
For i:=1 to x do S1:= S1 * a;
LT := S1;
End;
CHƯƠNG TRÌNH
CON
8
2. Khái niệm
2. Khái niệm
Chương trình con là một dãy lệnh,
mô tả một số thao tác nhất định và có
thể được thực hiện (được gọi) từ
nhiều vị trí trong chương trình chính.
9
CHƯƠNG TRÌNH CON
CHƯƠNG TRÌNH CON
HÀM (Function)
- Là chương trình con
thực hiện dãy lệnh.
- Trả về giá trị cụ thể
qua tên của nó.
HÀM (Function)
- Là chương trình con
thực hiện dãy lệnh.
- Trả về giá trị cụ thể
qua tên của nó.
THỦ TỤC (Procedure)
- Là chương trình con
thực hiện dãy lệnh.
- Không trả về giá trị nào
qua tên của nó.
THỦ TỤC (Procedure)
- Là chương trình con
thực hiện dãy lệnh.
- Không trả về giá trị nào
qua tên của nó.
Ví dụ hàm:
3! = 6
3
2
= 9
Sin(30
o
) = 0.5
Ví dụ thủ tục:
Length(S);
Readln;
Writeln;
a) Phân loại:
3. Phân loại chương trình con
3. Phân loại chương trình con
10
<PHẦN KHAI BÁO>
< PHẦN THÂN>
<PHẦN KHAI BÁO>
< PHẦN THÂN>
Function <TÊNHÀM>[(<ds tham sỐ>)] : Kiểu của hàm;
[< Phần khai báo >]
Begin
[<Dãy lệnh>];
TÊNHÀM := Giá trị;
End;
Procedure <TÊNTHỦTỤC> [(<ds tham số>)];
[< Phần khai báo >]
Begin
[<Dãy lệnh>];
End;
HÀM(Function) THỦ TỤC (Procedure)
b) Cấu trúc:
3. Phân loại chương trình con
3. Phân loại chương trình con
11
<PHẦN KHAI BÁO>
< PHẦN THÂN>
<PHẦN KHAI BÁO>
< PHẦN THÂN>
Function <TÊNHÀM>[(<ds tham sỐ>)] :Kiểu của hàm;
[< Phần khai báo >]
Begin
[<Dãy lệnh>]
TÊNHÀM := Giá trị;
End;
HÀM(Function) Ví dụ 1:
b) Cấu trúc:
Function Luythua(a,x:integer): longint;
Var i: integer; s:longint;
Begin
s:=1;
For i:=1 to x do s:=s*a;
Luythua:= S;
End;
3. Phân loại chương trình con
3. Phân loại chương trình con
x
x
a
12
Ví dụ 2: Vẽ hình chữ nhật bằng sao
b) Cấu trúc:
Procedure veHCN ;
Begin
Writeln('****************');
Writeln('* *');
Writeln('************');
Writeln;
End;
Procedure <TÊN THỦ TỤC> [(<ds thamsố>)];
[< Phần khai báo >]
Begin
[<Dãy lệnh>]
End;
<PHẦN KHAI BÁO>
< PHẦN THÂN>
<PHẦN KHAI BÁO>
< PHẦN THÂN>
3. Phân loại chương trình con
3. Phân loại chương trình con
13
•
Hoán đổi hai số a và b: Hoandoi(a,b)
•
Hoán đổi hai số a và b: Hoandoi(a,b)
Các bài toán sau dùng hàm hay thủ tục:
2. Tìm ước chung lớn nhất của a và b: UCLN(a,b)
2. Tìm ước chung lớn nhất của a và b: UCLN(a,b)
3.Xóa xâu S tại vị trí v, xóa n phần tử: Delete(s,v,n)
3.Xóa xâu S tại vị trí v, xóa n phần tử: Delete(s,v,n)
4. Kiểm tra a,b,c có là ba cạnh của một tam giác: KT(a,b,c)
4. Kiểm tra a,b,c có là ba cạnh của một tam giác: KT(a,b,c)
Procedure Delete (s:string;v,n:byte)
Function tamgiac (a,b,c: word): Boolean;
Procedure Hoandoi (a,b:real)
Function UCLN (a,b: integer): integer;
14
Program tong_luy_thua;
Uses crt;
Var a,b,c,d, n,m,p,q :integer;
S:longint;
Function luythua(a,n:integer): longint;
Var i: integer; S : longint;
begin
S:=1;
For i:=1 to n do S:=S*a;
Luythua:=S;
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,n)+ luythua(b,m)+ luythua(c,p)+ luythua(d,q);
Writeln(‘ Tong luy thua =’, S:7:2);
Readln;
END.
Ví dụ 1: S= 2
4
+ 3
3
+ 4
2
+ 5
1
15
Program tong_luy_thua;
Uses crt;
Var a,b,c,d,S , n,m,p,q :integer;
S: Longint;
Function luythua(a,n:integer): longint;
Var i: integer; S: Longint;
begin
S:=1;
For i:=1 to n do S:=Lt*a;
Luythua:=Lt;
end;
BEGIN
Write(‘ Nhap vao cac co so a,b,c,d ‘); readln(2,3,4,5);
write(‘ Nhap vao cac so mu m,n,p,q: ’); readln(4,3,2,1);
S:=
Writeln(‘ Tong luy thua =’, S:0:0);
Readln;
END.
luythua(a,n) + luythua(b,m) + luythua(c,p) +
luythua(d,q);
16 +
luythua(2,4) +
27 +
16 +
Function luythua(2,4): Longint;
For i:=1 to 4 do Lt:=Lt*2
Luythua:=16;
5
Tong luy thua S = 64
Ví dụ 1: S= 2
4
+ 3
3
+ 4
2
+ 5
1
16
Program HINHCHUNHAT;
Uses crt;
Procedure veHCN ;
Begin
Writeln('* * * * * * * * *');
Writeln('* *');
Writeln('* * * * * * * * *');
Writeln;
End;
BEGIN
Clrscr;
Writeln(‘ket qua:’);
veHCN ; veHCN ; veHCN ; veHCN ; veHCN ;
Readln
END.
Ví dụ 2:VẼ RA MÀN HÌNH 5 HÌNH CHỮ NHẬT
ket qua:
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
17
Lưu ý:
•
Vị trí của chương trình con được viết:
•
Sau phần khai báo Var và
•
Trước từ khóa BEGIN của chương
trình chính.
•
Sử dụng CTC thì ta gọi hàm:
TênCTC (giá trị)
Lưu ý:
•
Vị trí của chương trình con được viết:
•
Sau phần khai báo Var và
•
Trước từ khóa BEGIN của chương
trình chính.
•
Sử dụng CTC thì ta gọi hàm:
TênCTC (giá trị)
a) Phân loại:
b) Cấu trúc:
3. Phân loại chương trình con
3. Phân loại chương trình con
18
H·y nhí!
3. Cấu trúc:
1. Chương trình con là dãy lệnh được
sử dụng nhiều lần trong chương trình
chính
2. Chương trình con gồm hai loại
a. Hàm: Trả về một giá trị qua tên
b. Thủ tục: Không trả về giá trị cụ thể nào
19
1. Viết chương trình tính:
1. Viết chương trình tính:
2. Viết chương trình rút gọn phân số:
a/b
2. Viết chương trình rút gọn phân số:
a/b
Bài tập về nhà