Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1)

LAB 1:CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH if

A. MỤC TIÊU

Trang bị cho sinh viên kỹ năng lập trình cơ bản trong C++:

+ Cấu trúc cơ bản của chương trình

+ Cú pháp câu lệnh if dạng đầy đủ

+ Cú pháp câu lệnh if dạng không đầy đủ

+ Viết chương trình sử dụng câu lệnh if

+ Phát hiện và sửa lỗi

B. NỘI DUNG

1. Cú pháp câu lệnh if dạng đầy đủ

Cú pháp câu lệnh if dạng (if else)

if (<điều kiện="">) { khối lệnh 1; } else { khối lệnh 2; }

Trong đó

- <điều kiện=""> thường là biểu thức logic.

- Phần else là không bắt buộc phải có. Câu lệnh if không có phần else được

gọi là câu lệnh “if thiếu”.

- , là câu lệnh hợp lệ bất kỳ: câu lệnh đơn, hoặc

câu lệnh ghép, hoặc câu lệnh điều khiển.

2. Cú pháp câu lệnh if dạng không đầy đủ

if (<điều kiện="">) { khối lệnh 1; }

Trong đó:

- <điều kiện=""> là một biểu thức logic tức nó có giá trị đúng (khác 0) hoặc

sai (bằng 0).

- có thể là một câu lệnh đơn, một khối lệnh hay một câu

lệnh phức.

C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM

Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB.

Phần mềm C FREE 5.0.

D. KẾT QUẢ SAU KHI HOÀN THÀNH

Sinh viên thành thạo các câu lệnh IF áp dụng giải các bài tập từ đơn giản đến

phức tạp.

E. HƯỚNG DẪN CHI TIẾT2

1.Viết chương trình nhập vào 2 số nguyên, in ra kết quả của các phép toán: cộng, trừ,

nhân, chia của 2 số nguyên đó.

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 1

Trang 1

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 2

Trang 2

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 3

Trang 3

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 4

Trang 4

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 5

Trang 5

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 6

Trang 6

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 7

Trang 7

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 8

Trang 8

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 9

Trang 9

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 79 trang xuanhieu 10280
Bạn đang xem 10 trang mẫu của tài liệu "Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1)

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 1)
ut<<endl; 
} 
Kết quả chạy chương trình: 
53 
4. Xây dựng hàm viết chương trình tính P(n)=1x3x5...x(2n+1) (n>=0). 
Hướng dẫn: 
#include 
using namespace std; 
int Nhap() 
{ 
 int x; 
 do 
 { 
 cin>>x; 
 if(x<0) 
 cout<<"Nhap sai, yeu cau nhap lai!"; 
 }while(x<0); 
 return x; 
} 
long Tinh(int n) 
{ 
 long p=1; 
 for(int i=0; i<=n; i++) 
 p=p*(2*i+1); 
 return p; 
} 
int main() 
{ 
 int n; 
 cout<<"Nhap so nguyen n: "; 
 n=Nhap(); 
 cout<<"Ket qua la: "<< Tinh(n); 
 cout<<endl; 
} 
54 
Kết quả chạy chương trình: 
5. Xây dựng hàm viết chương trình tính S(n)= 1+3+5+n...+(2n+1) (n>=0). 
Hướng dẫn: 
#include 
using namespace std; 
int Nhap() 
{ 
 int x; 
 do 
 { 
 cin>>x; 
 if(x<0) 
 cout<<"Nhap sai, yeu cau nhap lai!"; 
 }while(x<0); 
 return x; 
} 
int Tinh(int n) 
{ 
 int s=0; 
 for(int i=0; i<=n; i++) 
 s=s+(2*i+1); 
 return s; 
} 
int main() 
{ 
 int n; 
 cout<<"Nhap so nguyen n: "; 
 n=Nhap(); 
 cout<<"Ket qua la: "<< Tinh(n); 
55 
 cout<<endl; 
} 
Kết quả chạy chương trình: 
6. Xây dựng hàm viết chương trình tính: 
S(n) = 1-2+3-4+5+...+((-1)^(n+1))*n(n>=0). 
Hướng dẫn: 
#include 
using namespace std; 
int Nhap() 
{ 
 int x; 
 do 
 { 
 cin>>x; 
 if(x<1) 
 cout<<"Nhap sai, yeu cau nhap lai!"; 
 }while(x<1); 
 return x; 
} 
int Tinh(int n) 
{ 
 int s=0; 
 for(int i=1; i<=n; i++) 
 { 
 if(i%2==0) 
 s=s-i; 
 else 
 s=s+i; 
 } 
56 
 return s; 
} 
int main() 
{ 
 int n; 
 cout<<"Nhap so nguyen n: "; 
 n=Nhap(); 
 cout<<"Ket qua la: "<< Tinh(n); 
 cout<<endl; 
} 
Kết quả chạy chương trình: 
7. Viết chương trình nhập ký tự bất kỳ từ bàn phím, in ra màn hình giá trị ASCII của 
ký tự đó, vòng lặp chỉ kết thúc khi nhấn phím ESC. 
Hướng dẫn: 
#include 
using namespace std; 
int main() { 
 char kyTu; 
 cout << "Tim gia tri ascii cua ky tu nhap tu ban phim." << endl; 
 cout << "Nhan phim ESC de thoat chuong trinh" << endl; 
 cout << "-----------------------------------------" << endl; 
 do { 
 cout << "Nhap ky tu: "; 
 cin >> kyTu; 
 if (int(kyTu) != 27) { 
 cout << " Ma ASCII cua ky tu " << kyTu << " la " << int(kyTu) << endl; 
 } else { 
 break; 
 } 
57 
 } while (kyTu != 27); 
 return 0; 
} 
Kết quả chạy chương trình: 
8. Xây dựng hàm viết chương trình xuất ra dãy số Fabonica 
 1 1 2 3 5 8 13 21 34 55 89 ........ 
Hướng dẫn: 
#include 
using namespace std; 
void FBNC(int n) 
{ 
 int f0=1, f1=1, t; 
 cout<< f0 <<"\t"<< f1 <<"\t"; 
 for(int i=1; i<n; i++) 
 { 
 t = f0 + f1; 
 cout<< t <<"\t"; 
 f0=f1; 
 f1=t; 
 } 
} 
int main() 
{ 
 int n; 
 cout<<"Nhap n: "; 
 cin>>n; 
 FBNC(n); 
58 
 cout<<endl; 
} 
Kết quả chạy chương trình: 
9. Xây dựng hàm viết chương trình tính: 
S(n)= 1 + (1+2) + (1+2+3) + ... + (1+2+3+..+n). 
Hướng dẫn: 
#include 
using namespace std; 
int Nhap() 
{ 
 int x; 
 do 
 { 
 cin>>x; 
 if(x<1) 
 cout<<"Nhap sai, yeu cau nhap lai!"; 
 }while(x<1); 
 return x; 
} 
int Tinh(int n) 
{ 
 int s=0, t=0; 
 for(int i=1; i<=n; i++) 
 { 
 t=t+i; 
 s=s+t; 
 } 
 return s; 
} 
59 
int main() 
{ 
 int n; 
 cout<<"Nhap so nguyen n: "; 
 n=Nhap(); 
 cout<<"Ket qua la: "<< Tinh(n); 
 cout<<endl; 
} 
Kết quả chạy chương trình: 
10. Xây dựng hàm viết chương trình tính P(x,y)=x^y. 
Hướng dẫn: 
#include 
using namespace std; 
int Nhap() 
{ 
 int x; 
 do 
 { 
 cin>>x; 
 if(x<1) 
 cout<<"Nhap sai, yeu cau nhap lai!"; 
 }while(x<1); 
 return x; 
} 
long Tinh(int x, int y) 
{ 
 float p=1; 
 for(int i=1; i<=y; i++) 
 p=p*x; 
 return p; 
60 
} 
int main() 
{ 
 int x, y; 
 cout<<"Nhap so nguyen x: "; 
 cin>>x; 
 cout<<"Nhap so nguyen y: "; 
 cin>>y; 
 cout<< x << " ^ "<< y <<" = "<< Tinh(x,y); 
 cout<<endl; 
} 
Kết quả chạy chương trình: 
11.Xây dựng hàm viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0 (với a 
khác 0). 
Hướng dẫn: 
#include 
#include 
using namespace std; 
int giaiPT(float a, float b, float c,float &x1, float &x2){ 
 float delta = b*b - 4*a*c; 
 if(delta<0){ 
 x1=x2=0.0; 
 return 0; 
 } 
 else if(delta==0){ 
 x1 = x2 = -b/(2*a); 
 return 1; 
 } 
 else{ 
61 
 delta = sqrt(delta); 
 x1 = (-b + delta) / (2*a); 
 x2 = (-b - delta) / (2*a); 
 return 2; 
 } 
} 
int main() 
{ 
 float a,b,c; 
 float x1,x2; 
 do{ 
 cout<<"Nhap a (a!=0): "; 
 cin>>a; 
 cout<<"Nhap b: "; 
 cin>>b; 
 cout<<"Nhap c: "; 
 cin>>c; 
 } 
 while(!a); 
 if(giaiPT(a,b,c,x1,x2)==0 ) { 
 cout<<"Phuong trinh vo nghiem"; 
 } 
 else if(giaiPT(a,b,c,x1,x2)==1){ 
 cout<<"Phuong trinh co nghiem kep x=%.4f" << x1; 
 } 
 else{ 
 cout<<"Phuong trinh co hai nghiem phan biet"<<endl; 
 cout<< "x1=" << x1<<endl; 
 cout<< "x2=" << x2<<endl; 
 } 
} 
Kết quả chạy chương trình: 
62 
F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 
1. Xây dựng hàm viết chương trình in ra màn hình số kế tiếp của số nguyên bạn vừa 
nhập. 
Hướng dẫn: Định nghĩa một hàm value(int x) để tính số kế tiếp của số bạn vừa nhập 
và sử dụng lệnh cout để in ra màn hình kết quả. 
2. Xây dựng hàm viết chương trình cho phép thực hiện rút gọn phân số. 
(Hướng dẫn: 
- Tìm UCLN của tử số và mẫu số. 
- Chia tử và mẫu của phân số cho UCLN vừa tìm được). 
3. Viết chương trình in ra các số nguyên tố nhỏ hơn n với yêu cầu dùng hàm để kiểm 
tra một số có phải là số nguyên tố hay không. 
4. Xây dựng hàm viết chương trình để nhập một số nguyên và tìm lập phương của số 
đó. 
5. Xây dựng hàm tìm ước chung lớn nhất của 2 số a, b. 
6. Xây dựng hàm tìm bội chung nhỏ nhất của 2 số a, b. 
7. Viết chương trình nhập 3 số nguyên và sau đó in các số nhỏ nhất và lớn nhất bởi sử 
dụng hàm. 
8. Viết hàm tính chu vi và diện tích hình tròn. 
9. Xây dựng hàm viết chương trình thực hiện các phép tính gồm cộng, trừ, nhân và 
chia hai số a,b. 
(Yêu cầu xây dựng các hàm: hàm tính tổng, hàm tính trừ, hàm tính nhân, hàm tính 
chia). 
10. Xây dựng hàm viết chương trình nhập số nguyên dương n và in ra màn hình các 
ước số của n. 
11. Viết chương trình nhập Họ tên, điểm Toán, điểm Lý, điểm Hóa của một sinh viên. 
Tính điểm trung bình và xuất ra kết quả. 
(Yêu cầu: Viết hàm nhập, xuất, tính trung bình). 
12. Chương trình tính lương của nhân viên 
- Viết hàm nhập họ tên, quê quán, thâm niên công tác của một nhân viên. 
- Viết hàm tính lương dựa vào thâm niên công tác. 
- Viết hàm xuất họ tên, quê quán, thâm niên công tác và lương của nhân viên. 
63 
- Viết chương trình nhập thông tin của nhân viên, tính lương và xuất thông tin của 
nhân viên (kể cả lương) ra màn hình bằng cách sử dụng ba hàm trên. 
13. Viết chương trình bao gồm các hàm sau: 
- Hàm kiểm tra năm y cho trước có nhuận hay không. 
- Hàm xác định số ngày tối đa của tháng m trong năm y cho trước. 
64 
LAB 6: LẬP TRÌNH ĐỆ QUY 
A. MỤC TIÊU 
Trang bị cho sinh viên ky ̃năng lập trình cơ bản trong C++: 
+ Hàm đệ quy 
+ Viết chương trình sử dụng hàm đệ quy 
+ Phát hiện và sửa lỗi 
B. NỘI DUNG 
Cấu trúc chung của hàm đệ qui 
Dạng thức chung của một chương trình đệ qui như sau: 
if (trường hợp suy biến) 
{ 
 trình bày cách giải // giả định đã có cách giải 
} 
else // trường hợp tổng quát 
{ 
 gọi lại hàm với tham số "bé" hơn 
} 
C. YÊU CẦU PHẦN CỨNG, PHẦN MỀM 
Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. 
Phần mềm C FREE 5.0. 
D. KẾT QUẢ SAU KHI HOÀN THÀNH 
Sinh viên thành thạo cách khai báo và định nghĩa hàm đệ quy, viết chương 
trình sử dụng hàm đệ quy áp dụng giải các bài tập từ đơn giản đến phức tạp. 
E. HƯỚNG DẪN CHI TIẾT 
1. Viết chương trình sử dụng hàm đệ quy tính giai thừa của một số nguyên. 
Theo định nghĩa giai thừa ta có: 
0! = 1 
n! = 1.2.3n 
Nếu n = 0 thì giai thừa bằng 1. Nếu n > 0 thì giai thừa sẽ là tích từ 1 đến n. Và không 
có giai thừa của số âm. 
Hướng dẫn: 
65 
#include 
using namespace std; 
int GiaiThua(int n) { 
 if (n == 1) 
 return 1; 
 else 
 return (n * GiaiThua(n - 1)); 
} 
int main() 
{ 
 int n; 
 while(true) { 
 cout << "Nhap so n: "; 
 cin >> n; 
 //Nhap n nho hon 0 de thoat khoi vong lap 
 if(n < 0) { 
 cout << "So am khong co giai thua" << endl; 
 break; 
 } 
 cout << " Giai thua cua " << n << " la: " << GiaiThua(n) << endl; 
 } 
 return 0; 
} 
Kết quả chạy chương trình: 
2. Viết chương trình sử dụng hàm đệ qui để tính tích sau: 
66 
1 2 3 41 1 1 1 .... nnS n 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
double bieuthuc(int); 
int main(int argc, char *argv[]) 
{ 
 int n; 
 cout<<"Nhap n = "; 
 cin>>n; 
 cout<<"Ket qua: "<<bieuthuc(n)<<endl; 
 return 0; 
} 
double bieuthuc(int n){ 
 if(n==1) return 1; //co so co so 
 else return(pow((float)n,n)* bieuthuc(n-1)); //co so chung 
} 
Kết quả chạy chương trình: 
3. Viết chương trình sử dụng hàm đệ qui để tính tổng1+1/2+1/3+..+1/n. 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
float DeQuy(int n) 
67 
{ 
 if(n==1) 
 { 
 return 1; 
 } 
 else 
 return DeQuy(n-1)+1.0/n; 
} 
int main() 
{ 
int n; 
 cout<<"Nhap n = "; 
 cin>>n; 
cout<<"\nDe quy: "<<DeQuy(n); 
system("pause"); 
return 0; 
} 
Kết quả chạy chương trình: 
4. Viết chương trình sử dụng hàm đệ qui, khử đệ qui để tính xn. 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
int KhuDeQuy(int n,int x) 
{ 
 float Tong=1; 
 for(int i=1;i<=n;i++) 
68 
 { 
 Tong*=x; 
 } 
 return Tong; 
} 
float DeQuy(int n,int x) 
{ 
 if(n==1) 
 { 
 return 1*x; 
 } 
 else 
 return DeQuy(n-1,x)*x; 
} 
int main() 
{ 
int n, x; 
 cout<<"Nhap n = "; 
 cin>>n; 
cout<<"Nhap x = "; 
 cin>>x; 
 cout<<"\nDe quy: "<<DeQuy(n,x); 
 cout<<"\nKhu De quy:"<<KhuDeQuy(n,x); 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
5. Viết chương trình sử dụng hàm đệ qui để tính ước số lẻ lớn nhất của số nguyên n. 
69 
Hướng dẫn: 
#include 
using namespace std; 
int UocSo(int n) 
{ 
 if(n%2!=0) 
 return n; 
 for(int i=n/2;i>=1;i--) 
 { 
 if(n%i==0&&i%2!=0) 
 { 
 return i; 
 } 
 } 
} 
int DeQuy(int n) 
{ 
 if(n%2!=0) 
 return n; 
 else 
 return DeQuy(n/2); 
} 
int main() 
{ 
int n; 
 cout<<"Nhap n = "; 
 cin>>n; 
 cout<<"\nla"<<DeQuy(n); 
 cout<<"\nla"<<UocSo(n); 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
70 
6. Viết chương trình giải bất phương trình bậc nhất ax+b>0 theo yêu cầu: 
(Viết 1 hàm nhập các hệ số a, b; một hàm giải bất phương trình. 
Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần giải các bất phương trình 
khác nhau.) 
Hướng dẫn: 
#include 
#include 
#include 
void nhap(float &,float &); 
void giaibpt(float,float); 
int main() 
{ 
float a,b; 
char c; 
do 
{ 
nhap(a,b); 
giaibpt(a,b); 
fflush(stdin); 
cout>c; 
} 
while ((c=='c')||(c=='C')); 
} 
void nhap(float &a, float &b) 
{ 
cout>a>>b; 
} 
void giaibpt(float a, float b) 
{ 
71 
if(a>0)cout"<<-b/a; 
else if(a<0)cout<<"Nghiem x<"<<-b/a; 
 else if(b>0) cout<<"Vo so nghiem"; 
 else cout<<"Vo nghiem"; 
} 
Kết quả chạy chương trình: 
7. Viết chương trình nhập vào 3 cạnh a, b, c của tam giác, viết hàm chỉ ra loại tam giác 
đó. 
Hướng dẫn: 
#include 
#include 
using namespace std; 
void Tam_Giac(float a, float b,float c) 
{ 
 if((a*a==(b*b+c*c))||(b*b==(a*a+c*c))||(c*c==(a*a+b*b))) 
 { 
 if(a==b||a==c||b==c) 
 cout<<"La tam giac vuong can.\n"; 
 else 
 cout<<"La tam giac vuong.\n"; 
 } 
 else 
 { 
 if(a==b||b==c||c==a) 
 { 
 if(a==b&&a==c&&c==a) 
 cout<<"La tam giac deu.\n"; 
 else 
72 
 cout<<"La tam giac can.\n"; 
 } 
 else 
 cout<<"Tam giac thuong.\n"; 
 } 
} 
int main() 
{ 
 float a,b,c; 
 do 
 { 
 cout<<"Nhap 3 canh cua tam giac.\n"; 
 cout>a; 
 cout>b; 
 cout>c; 
 if(a+b<=c||a+c<=b||b+c<=a||a<=0||b<=0||c<=0) 
 { 
 system("cls"); 
 cout<<"Tam giac khong hop le moi ban nhap lai.\n"; 
 } 
 } 
 while(a+b<=c||a+c<=b||b+c<=a||a<=0||b<=0||c<=0); 
 Tam_Giac(a,b,c); 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
73 
8. Cho số n, viết chương trình sử dụng hàm tìm m nhỏ nhất sao cho 
 (n<1+1/2+....+1/m). 
Hướng dẫn: 
#include 
using namespace std; 
int main() 
{ 
 double n,m; 
 double S=0; 
 cout<<"Nhap n= "; 
 cin>>n; 
 for(m=1;;m++) 
 { 
 S+=1.0/m; 
 if(n<S) 
 { 
 cout<<"Cap n="<<n<<" va m= "<<m<<" la nho nhat."; 
 break; 
 } 
 } 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
9. 
9. Viết hàm in ra các số chẵn trong khoảng [a,b]. 
Hướng dẫn: 
#include 
#include 
74 
using namespace std; 
void Name(int a,int b) 
{ 
 for(int i=a;i<=b;i++) 
 if(i%2==0) 
 cout<<i<<" "; 
} 
int main() 
{ 
 int a,b; 
 cout<<"Nhap so nguyen a="; 
 cin>>a; 
 cout<<"Nhap so nguyen b="; 
 cin>>b; 
 Name(a,b); 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 
1. Sử dụng hàm đệ quy tìm chữ số có giá trị lớn nhất của số nguyên dương n. 
2. Sử dụng đệ quy tìm chữ số đầu tiên của số nguyên dương n. 
3. Sử dụng hàm đệ quy tìm dãy nhị phân dài nhất sao cho trên dãy này không có hai 
bộ k bất kỳ trùng nhau. Bộ k là dãy con có k số liên tiếp nhau trên dãy tìm được. 
Ví dụ: k = 3, kết quả: 000 101 110 0 
4. Sử dụng hàm đệ quy tính P(x,y)=xy 
5. Sử dụng hàm đệ quy tính tổng n số tự nhiên đầu tiên TONG(n) = 1 + 2 ++ n. 
6. Sử dụng hàm đệ quy tính tổng chẵn lẻ n số tự nhiên đầu tiên TONGCHANLE(n) 
nếu n chẵn thì TONGCHANLE(n)= 2+4++n, còn nếu n lẻ thì 
75 
TONGCHANLE(n)= 1+3++n. 
7. Sử dụng hàm đệ quy tính tích chẵn lẻ n số tự nhiên đầu tiên TICHCHANLE(n) 
nếu n chẵn thì TICHCHANLE(n)= 2 x 4 xx n, còn nếu n lẻ thì 
TICHCHANLE(n)= 1x3xxn. 
8. Viết hàm tính tổng n phần tử đầu tiên của cấp số cộng bằng cách gọi đệ quy. 
9. Viết hàm đệ quy giải bài toán tháp Hà Nội: cần chuyển n tầng tháp từ vị trí A sang 
vị trí B dùng vị trí C làm trung gian. 
Yêu cầu: Mỗi lần chỉ chuyển 1 tầng, chỉ được dùng các vị trí A, B, C để đặt các tầng 
tháp, không được đặt tầng lớn lên trên tầng nhỏ. 
10. Nhập vào số nguyên n viết hàm trả về tổng của các chữ số đó. 

File đính kèm:

  • pdftai_lieu_hoc_tap_mon_thuc_tap_lap_trinh_co_ban_phan_1.pdf