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; }điều>
Trong đó
- <điều kiện=""> thường là biểu thức logic.điều>
- 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”.
-
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; }điều>
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điều>
sai (bằng 0).
-
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 đó.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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)
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:
- tai_lieu_hoc_tap_mon_thuc_tap_lap_trinh_co_ban_phan_1.pdf