Bài toánNhậ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... Khái niệmmô tả một số thao tác nhất định và có nhiều vị trí trong chương trình c
Trang 11
Trang 2CHƯƠ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
Trang 31 Bài toán
2 Khái niệm
3 Phân loại chương trình con
Trang 41 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
Trang 51 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;
Trang 61 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ớ)
Trang 71 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
Trang 82 Khái niệm
mô tả một số thao tác nhất định và có
nhiều vị trí trong chương trình chính.
Trang 9CHƯƠ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
Trang 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;
b) Cấu trúc:
3 Phân loại chương trình con
Trang 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;
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
x
x
a
Trang 12Ví dụ 2: Vẽ hình chữ nhật bằng sao
b) Cấu trúc:
Procedure veHCN ; Begin
Writeln('****************');
Writeln('* *');
Writeln('************');
Writeln;
End;
P rocedure <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
Trang 13• 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)
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)
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;
Trang 14Program 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;
Ví dụ 1: S= 2 4 + 3 3 + 4 2 + 5 1
Trang 15Program 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) 16 + + luythua(b,m) + luythua(c,p) + luythua(d,q );
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
Trang 16Program 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:
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
* *
* * * * * * * * *
* * * * * * * * *
Trang 17Lư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
Trang 18H·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
Trang 191 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à