Bài 17. Chương trình con và phân loại

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Vũ Đình Việt
Ngày gửi: 11h:19' 05-04-2022
Dung lượng: 1.4 MB
Số lượt tải: 225
Nguồn:
Người gửi: Vũ Đình Việt
Ngày gửi: 11h:19' 05-04-2022
Dung lượng: 1.4 MB
Số lượt tải: 225
Số lượt thích:
0 người
Bài 17
CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (T1)
CHƯƠNG VI: CHƯƠNG TRÌNH CON
VÀ LẬP TRÌNH CÓ CẤU TRÚC
Tiết
Nhập giá trị cho các sô a,b,c,d,m,n,p,q từ bàn phím. Viết chương trình tính tổng
Tluythua = an +bm + cp + dq
1. Tìm hiểu bài toán
B2: Ý tưởng
Để tính giá trị lũy thừa xk ta dùng vòng lặp for – do như sau: LT= 1;
For (i=1;i<=k;i++) LT= LT *x;
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Viết chương trình tính tổng: Tluythua = an + bm + cp +dq
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt2=1.0;
For (i:=1 i<=m;i++) Lt2=Lt2*b;
Lt3=1.0;
For (i=1 i<=p;i++) Lt3:=Lt3*c;
Lt4=1.0;
For (i=1 i<=q;i++) Lt4=Lt4*d;
TLuythua=Lt1+ Lt2+ Lt3+ Lt4;
cout<<“Tong Luy thua =“<< TLuythua;
return 0;
}
Em nhận xét gì về bốn đoạn chương trình này?
Nhận xét:
Trong chương trình có 4 đoạn lệnh tương tự nhau, việc lặp lại những đoạn lệnh tương tự nhau làm cho chương trình vừa dài vừa khó theo dõi.
Chạy CT
Để xử lý vấn đề này các ngôn ngữ lập trình bậc cao cung cấp khả năng xây dựng các đoạn lệnh tổng quát “đại diện” cho nhiều đoạn lệnh tương tự nhau.
Ví dụ: Tính luỹ thừa
Luythua = xk
Trong đó Luythua và x là giá trị kiểu thực, k thuộc kiểu nguyên
Đây là đoạn lệnh tổng quát được đặt tên là Luythua(x,k)
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Chương trình con
Thực hiện (gọi) chương trình con
Chương trình chính
Viết chương trình tính tổng: Tluythua = an + bm + cp +dq
Với x = a và k = n thì:
an =
Với x = b và k = m thì
bm =
Với x = c và k = p thì
cp =
Với x = d và k = q thì
dq =
Luythua(a,n)
Luythua(b,m)
Luythua(c,p)
Luythua(d,q)
Tính xk
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt2=1.0;
For (i:=1 i<=m;i++) Lt2=Lt2*b;
Lt3=1.0;
For (i=1 i<=p;i++) Lt3:=Lt3*c;
Lt4=1.0;
For (i=1 i<=q;i++) Lt4=Lt4*d;
CHƯƠNG TRÌNH CON LÀ GÌ?
TLuythua=Lt1+ Lt2+ Lt3+ Lt4;
cout<<“Tong Luy thua =“<< TLuythua;
return 0;
}
2. Khái niệm
Chương trình con
3. Lợi ích của chương trình con
VD: CTC sqr(x) Tính bình phương của x
Luythua(x,k) Tính lũy thừa xk
Là một dãy lệnh mô tả một số thao tác nhất định.
Được thực hiện từ nhiều vị trí trong chương trình.
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
# include
Using namespace std;
Double LT(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
Double a,b,c,d,TLT;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
TLT= LT(a,n)+LT(b,m)+LT(c,p)+LT(d,q);
Cout<Return 0;
}
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4, TLT;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
Lt2=1.0;
For (i=1; i<=n;i++) Lt2=Lt2*a;
Lt3=1.0;
For (i=1; i<=n;i++) Lt3=Lt3*a;
Lt4=1.0;
For (i=1; i<=n;i++) Lt4=Lt4*a;
TLT=Lt1+Lt2+Lt3+Lt4;
Cout<Return 0;
}
4. Phân loại chương trình con
VD: Hàm sqrt(x) với x=4 thì sqrt(4) = 2
Hàm Luythua(2,3) = 23 = 8
- Hàm (Function):
a. Phân loại
Là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó.
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
4. Phân loại chương trình con
- Hàm (Function): Là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó.
- Thủ tục (Procedure):
VD: cout<<“Chao cac ban”; Chao cac ban
Chạy CT
a. Phân loại
Thủ tục vehinh(a)
Là chương trình con thực hiện một số thao tác
nào đó, và không trả về giá trị nào qua tên của nó.
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++) cout<<“* ”;
return 0;
}
b. Cấu trúc chương trình con
Nhắc lại cấu trúc của một chương trình c++.
Chương trình con
# include
Using namespace std;
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++) cout<<“* ”;
return 0;
}
Int n,i;
Int main( )
{ cout<<“Nhap so hinh”; cin>>n;
For(i=1;i<=n;i++) {vehinh(i); cout<Return 0;
}
b. Cấu trúc chương trình con
< Phần Thân>
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++)
cout<<“* ”;
return 0;
}
Trong đó:
- Phần đầu: bắt buộc phải có, dùng để phân loại, khai báo tên chương trình con và các tham số.
- Phần thân: là bắt buộc nằm trong kí hiệu bắt đầu và kết thúc { }, chứa các dãy lệnh của CTC.
b. Cấu trúc chương trình con
Void vehinh(int a)
{ int j;
For (j=1; j<=a;j++) cout<<“* ”;
return 0;
}
Int n,i;
Int main( )
{ cout<<“Nhap so hinh”;
cin>>n;
For(i=1;i<=n;i++) {vehinh(i); cout<Return 0;
}
Tham số hình thức: là các biến, hằng nhận giá trị vào/ra của CTC.
VD: Biến a
Biến cục bộ: là biến được khai báo dùng riêng cho chương trình con.
VD: Biến j
Biến toàn cục: là biến khai báo dùng cho chương trình chính.
VD: Biến n, i
c. Thực hiện chương trình con
Void vehinh(int a)
{ int j;
For (j=1; j<=a;j++) cout<<“* ”;
Cout< return 0;
}
Int x,i;
Int main( )
{ cout<<“nhap x ”; cin>>x;
vehinh(7);
vehinh(x);
Return 0;
}
Để thực hiện CTC ta phải có lệnh gọi tới tên của CTC với các giá trị tương ứng của tham số hình thức
VD: Vehinh(7); vehinh(x);
Tham số thật sự: là các giá trị tương ứng của tham số hình thức khi thực hiện lời gọi CTC.
Cú pháp gọi CTC:
(tham số thực sự);
VD: Giá trị x và 7 là các tham số thực sự của tham số hình thức a
Các CTC thường được đặt sau lệnh using namespace std;.
Lời gọi CTC được thực hiện trong phần thân chương trình chính.
Lưu ý:
# include
Using namespace std;
Double LT(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
Double a,b,c,d,TLT;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
TLT= LT(a,n)+LT(b,m)+LT(c,p)+LT(d,q);
Cout<Return 0;
}
Hàm có tên LT
Tham số hình thức: x,k
Tham số thực sự: a,n,b,m,c,p,d,q
Biến cục bộ: i, Lt
Biến toàn cục: a,b,c,d,TLT, m,n,p,q
Có 4 lời gọi CTC là
LT(a,m); LT(b,n); LT(c,p); LT(d,q);
Hãy nhớ!
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 từ nhiều vị trí trong chương trình.
Xây dựng CTC giúp cho người lập trình thuận lợi khi viết chương trình đối với các bài toán lớn.
- Khái niệm
- Lợi ích.
BTVN
Xem lại thuật toán tìm ước chung lớn nhất của 2 số đã học.
Bài học kết thúc
Xin cám ơn các thầy cô và các em
CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (T1)
CHƯƠNG VI: CHƯƠNG TRÌNH CON
VÀ LẬP TRÌNH CÓ CẤU TRÚC
Tiết
Nhập giá trị cho các sô a,b,c,d,m,n,p,q từ bàn phím. Viết chương trình tính tổng
Tluythua = an +bm + cp + dq
1. Tìm hiểu bài toán
B2: Ý tưởng
Để tính giá trị lũy thừa xk ta dùng vòng lặp for – do như sau: LT= 1;
For (i=1;i<=k;i++) LT= LT *x;
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Viết chương trình tính tổng: Tluythua = an + bm + cp +dq
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt2=1.0;
For (i:=1 i<=m;i++) Lt2=Lt2*b;
Lt3=1.0;
For (i=1 i<=p;i++) Lt3:=Lt3*c;
Lt4=1.0;
For (i=1 i<=q;i++) Lt4=Lt4*d;
TLuythua=Lt1+ Lt2+ Lt3+ Lt4;
cout<<“Tong Luy thua =“<< TLuythua;
return 0;
}
Em nhận xét gì về bốn đoạn chương trình này?
Nhận xét:
Trong chương trình có 4 đoạn lệnh tương tự nhau, việc lặp lại những đoạn lệnh tương tự nhau làm cho chương trình vừa dài vừa khó theo dõi.
Chạy CT
Để xử lý vấn đề này các ngôn ngữ lập trình bậc cao cung cấp khả năng xây dựng các đoạn lệnh tổng quát “đại diện” cho nhiều đoạn lệnh tương tự nhau.
Ví dụ: Tính luỹ thừa
Luythua = xk
Trong đó Luythua và x là giá trị kiểu thực, k thuộc kiểu nguyên
Đây là đoạn lệnh tổng quát được đặt tên là Luythua(x,k)
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Chương trình con
Thực hiện (gọi) chương trình con
Chương trình chính
Viết chương trình tính tổng: Tluythua = an + bm + cp +dq
Với x = a và k = n thì:
an =
Với x = b và k = m thì
bm =
Với x = c và k = p thì
cp =
Với x = d và k = q thì
dq =
Luythua(a,n)
Luythua(b,m)
Luythua(c,p)
Luythua(d,q)
Tính xk
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt2=1.0;
For (i:=1 i<=m;i++) Lt2=Lt2*b;
Lt3=1.0;
For (i=1 i<=p;i++) Lt3:=Lt3*c;
Lt4=1.0;
For (i=1 i<=q;i++) Lt4=Lt4*d;
CHƯƠNG TRÌNH CON LÀ GÌ?
TLuythua=Lt1+ Lt2+ Lt3+ Lt4;
cout<<“Tong Luy thua =“<< TLuythua;
return 0;
}
2. Khái niệm
Chương trình con
3. Lợi ích của chương trình con
VD: CTC sqr(x) Tính bình phương của x
Luythua(x,k) Tính lũy thừa xk
Là một dãy lệnh mô tả một số thao tác nhất định.
Được thực hiện từ nhiều vị trí trong chương trình.
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
# include
Using namespace std;
Double LT(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
Double a,b,c,d,TLT;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
TLT= LT(a,n)+LT(b,m)+LT(c,p)+LT(d,q);
Cout<
}
# include
Using namespace std;
Double Lt1, Lt2, Lt3, Lt4, TLT;
Double a,b,c,d;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
Lt1=1.0;
For (i=1; i<=n;i++) Lt1=Lt1*a;
Lt2=1.0;
For (i=1; i<=n;i++) Lt2=Lt2*a;
Lt3=1.0;
For (i=1; i<=n;i++) Lt3=Lt3*a;
Lt4=1.0;
For (i=1; i<=n;i++) Lt4=Lt4*a;
TLT=Lt1+Lt2+Lt3+Lt4;
Cout<
}
4. Phân loại chương trình con
VD: Hàm sqrt(x) với x=4 thì sqrt(4) = 2
Hàm Luythua(2,3) = 23 = 8
- Hàm (Function):
a. Phân loại
Là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó.
BÀI 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Double Luythua(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
4. Phân loại chương trình con
- Hàm (Function): Là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó.
- Thủ tục (Procedure):
VD: cout<<“Chao cac ban”; Chao cac ban
Chạy CT
a. Phân loại
Thủ tục vehinh(a)
Là chương trình con thực hiện một số thao tác
nào đó, và không trả về giá trị nào qua tên của nó.
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++) cout<<“* ”;
return 0;
}
b. Cấu trúc chương trình con
Nhắc lại cấu trúc của một chương trình c++.
Chương trình con
# include
Using namespace std;
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++) cout<<“* ”;
return 0;
}
Int n,i;
Int main( )
{ cout<<“Nhap so hinh”; cin>>n;
For(i=1;i<=n;i++) {vehinh(i); cout<
}
b. Cấu trúc chương trình con
< Phần Thân>
Void vehinh(int a)
{ int i;
For (i=1; i<=a;i++)
cout<<“* ”;
return 0;
}
Trong đó:
- Phần đầu: bắt buộc phải có, dùng để phân loại, khai báo tên chương trình con và các tham số.
- Phần thân: là bắt buộc nằm trong kí hiệu bắt đầu và kết thúc { }, chứa các dãy lệnh của CTC.
b. Cấu trúc chương trình con
Void vehinh(int a)
{ int j;
For (j=1; j<=a;j++) cout<<“* ”;
return 0;
}
Int n,i;
Int main( )
{ cout<<“Nhap so hinh”;
cin>>n;
For(i=1;i<=n;i++) {vehinh(i); cout<
}
Tham số hình thức: là các biến, hằng nhận giá trị vào/ra của CTC.
VD: Biến a
Biến cục bộ: là biến được khai báo dùng riêng cho chương trình con.
VD: Biến j
Biến toàn cục: là biến khai báo dùng cho chương trình chính.
VD: Biến n, i
c. Thực hiện chương trình con
Void vehinh(int a)
{ int j;
For (j=1; j<=a;j++) cout<<“* ”;
Cout<
}
Int x,i;
Int main( )
{ cout<<“nhap x ”; cin>>x;
vehinh(7);
vehinh(x);
Return 0;
}
Để thực hiện CTC ta phải có lệnh gọi tới tên của CTC với các giá trị tương ứng của tham số hình thức
VD: Vehinh(7); vehinh(x);
Tham số thật sự: là các giá trị tương ứng của tham số hình thức khi thực hiện lời gọi CTC.
Cú pháp gọi CTC:
VD: Giá trị x và 7 là các tham số thực sự của tham số hình thức a
Các CTC thường được đặt sau lệnh using namespace std;.
Lời gọi CTC được thực hiện trong phần thân chương trình chính.
Lưu ý:
# include
Using namespace std;
Double LT(double x, int k)
{ int i; double Lt;
Lt=1.0;
For (i=1; i<=k;i++) Lt=Lt*x;
return Lt;
}
Double a,b,c,d,TLT;
int i,n,m,p,q;
int main ( )
{cout<<“Hay nhap du lieu theo thu tu a,b,c,d,n,m,p,q: ”;
cin>>a>>b>>c>>d>>n>>m>>p>>q;
TLT= LT(a,n)+LT(b,m)+LT(c,p)+LT(d,q);
Cout<
}
Hàm có tên LT
Tham số hình thức: x,k
Tham số thực sự: a,n,b,m,c,p,d,q
Biến cục bộ: i, Lt
Biến toàn cục: a,b,c,d,TLT, m,n,p,q
Có 4 lời gọi CTC là
LT(a,m); LT(b,n); LT(c,p); LT(d,q);
Hãy nhớ!
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 từ nhiều vị trí trong chương trình.
Xây dựng CTC giúp cho người lập trình thuận lợi khi viết chương trình đối với các bài toán lớn.
- Khái niệm
- Lợi ích.
BTVN
Xem lại thuật toán tìm ước chung lớn nhất của 2 số đã học.
Bài học kết thúc
Xin cám ơn các thầy cô và các em
 







Các ý kiến mới nhất