Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển
Tuần tự(sequence)
Rẽnhánh (branch)
Lặp (loop) (Böhm-Jacopini theorem)
Tóm tắt nội dung Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Nội dung Cấu trúc rẽ nhánh if, switch Cấu trúc lặp while, for, do – while Các từ khóa break, continue 2 Tuần tự (sequence) Rẽ nhánh (branch) Lặp (loop) (Böhm-Jacopini theorem) 3 bool exprT F 4 block 1 block 2 bool expr block 1 T F- Dạng thiếu: if (bool expr) statement; if (bool expr) { … } Dạng đủ: if (bool expr) statement1; else statement2; if (bool expr) {…} else {…} 5 //Tìm số lớn nhất trong 2 số int a, b, max; cin >> a >> b; if (a > b) max = a; else max = b; cout << ”max = ” << max << endl; 6 //In ra 2 số a,b nhập từ bàn phím sao cho b luôn mang giá trị lớn nhất int a, b; cin >> a >> b; if (a > b) { int tmp = a; a = b; b = tmp; } cout << a << ”, ” << b << endl; 7 Lưu ý Nếu đặt dấu chấm phẩy (;) ở ngay sau biểu thức điều kiện thì lệnh S của if xem như “KHÔNG LÀM GÌ” if (expr1) statement1; else if (expr2) statement2; else if (expr3) statement3; … else statementn; 9 Ví dụ về if-else-if if ( N< 0 ){ cout << N << " là số âm" << endl; } else if ( N > 0 ) { cout << N << " là số dương " << endl; } else { cout << N << " bằng 0" << endl; } Chuyển if, switch, for sang while if(BTDK) { Lệnh; } while(BTDK) { Lệnh; break; } 11 if(BTDK1) Khối Lệnh 1; else if (BTDK2) Khối lệnh 2; else khối lệnh; bool flag = true; while(BTDK1) 12 { khối lệnh 1; flag = false; break; } while(BTDK2) { khối lệnh 2; flag = false; break; } while(flag){ Khối lệnh; break; } Yêu cầu: Viết chương trình thực hiện: 1. nhập từ bàn phím số nguyên dương year 2. in ra màn hình Yes nếu là năm nhuận, No nếu không 13 Dễ nhầm với toán tử gán, kết quả của toán tử gán cũng có thể đổi thành giá trị logic if (a = 10) luôn đúng if (a = 0) luôn sai if (a = b) tương đương if ( (a=b) > 0) Đảo thứ tự if ( 0 == a) if (10 == a) 14 Cấu trúc switch Cú pháp: switch (biểu thức){ case : Lệnh/Khối lệnh 1; break; case : Lệnh/Khối lệnh 2; break; case : Lệnh/Khối lệnh 3; break; … case : Lệnh/Khối lệnh n; break; default: Lệnh/Khối lệnh; } 15 Ví dụ về switch char ch; cout> ch; switch (ch) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': cout << ch << " là nguyên âm" << endl; break; default: cout << ch << " không phảI nguyên âm" << endl; } cout << “Nhập vào biểu thức: "; int a; int b; char Operator; cin >> a>> Operator >> b; cout << a<< " " << Operator << " " << b << " = "; switch (Operator) { case '+' : cout << a + b << endl; break; case '-' : cout << a – b << endl; break; case '*' : cout << a * b << endl; break; case '/' : cout << a / b << endl; break; default: cout << “Không hợp lệ" << endl; } Ví dụ khác – switch //Doan chuong trinh doc so 0..9 switch(so) { case 0: cout<<“khong”<<endl; case 1: cout<<“mot"<<endl; 2 h i dlcase : cout<<“ a "<<en ; case 3: cout<<“ba"<<endl; case 4: cout<<“bon"<<endl; case 5: cout<<“nam"<<endl; case 6: cout<<“sau"<<endl; case 7: cout<<“bay"<<endl; case 8: cout<<“tam"<<endl; case 9: cout<<“chin"<<endl; } block block 19 bool exprT F bool exprT F while (BT điều kiện) lệnh; while (BT điều kiện) { … } 20 int i = 1, n, gt = 1; cin >> n; while (i++ < n) gt *= i; // while (i < n) gt *= ++i; /* while (i < n) { i++; gt *= i; } */ cout << gt << endl; 21 Lưu ý dấu chấm phẩy ; Dấu ‘;’ đặt ngay sau biểu thức điều kiện đồng nghĩa với lệnh S là rỗng. int j = 5; while(j > 0); cout<<"j = “<<j--; Chương trình bị lặp không thoát được Yêu cầu: Viết chơng trình: 1. Nhập vào 2 số nguyên dương m, n 2. In ra ước số chung lớn nhất của 2 số này 23 for (state1; bool expr; expr2) state2; int i, gt=1, n; cin >> n; for (i=1; i<=n; i++) gt *= i; cout << gt << endl; 24 int gt=1, n; … for (int i=1; i<=n; i++) gt *= i; ------------------------------------- int i=1, gt=1, n; … for (; i<=n;) gt *= i++; 25 Thường được sử dụng cho lặp với số lần xác định Không nhất thiết bước lặp là 1 Trong C/C++, vòng lặp for là sự mở rộng của while 26 for (state1; bool expr; expr2) state2; Tương đương với: { state1; while (bool expr) { state2; expr2; } } 27 Nói thêm về for Phần lệnh khởi động và lệnh điều khiển có thể gồm nhiều lệnh đơn giản, các lệnh này cách nhau bởi dấu phẩy (,) i t i j kn , , ; for(i = 0, j = 5, k = -1; i < 10; i++, j++, k--) Các phần: khởi động, điều kiện lặp, điều khiển có thể không có lệnh nào. for(; i < 10; i++, j++, k--) for(;i < 10;) for(;;) Dùng while sẽ hợp lý hơn Vòng lặp không kết thúc do statement; while (bool expr); do { … } while (bool expr); 29 do{ khối lệnh; }while (biểu thức điều kiện); 30 khối lệnh; while(biểu thức điều kiện) { khối lệnh; } int n; do { cout << ”n = ”; cin >> n; } while (0 >= n); 31 Chờ nhập phím thích hợp char TraLoi; do { cout << “Có hay không? (c/k): "; if (cin >> TraLoi) TraLoi = tolower(Traloi); else TraLoi = ‘k'; } while ((TraLoi != ‘c') && (TraLoi != ‘k')); Các vòng lặp chiếm nhiều thời gian thực hiện chương trình nhất Cần tối ưu vòng lặp dùng các phép toán có tốc độ cao đưa ra khỏi vòng lặp các giá trị có thể tính toán trước, không thay đổi trong vòng lặp Kiểm tra về tính dừng 33 break: lệnh nhảy, đến vị trí ngay sau vòng lặp thoát khỏi vòng lặp continue: lệnh nhảy, đến vị trí ngay sau câu lệnh cuối cùng trong vòng lặp bắt đầu lượt lặp mới 34 //Nhập và In các số lẻ từ bàn phím cho tới nhập giá trị 0 int n; while (true) { cout << ”n = ”; cin >> n; if (0 == n) break; if (0 == n%2) continue; cout << n << endl; } 35 Nhập số nguyên dương n từ bàn phím, in ra màn hình Yes nếu là số nguyên tố, No nếu không Nh p các số nguyên t bàn phím, d ng l i khi ậ ừ ừ ạ gặp số nguyên tố, in ra màn hình tổng số các số đã nhập 36 Nhập số nguyên dương m, in ra m số Fibonacy đầu tiên, mỗi số cách nhau một dấu cách (space) f(1) = 1, f(2) = 1; f(i+2) = f(i+1) + f(i) : i >0; 37 Nhập số thực dương a, tính căn bậc 2 của a với độ chính xác đến 5 chữ số thập phân. Không sử dụng hàm thư viện. Ph ng pháp Newton ươ s(1) = 1; s(i+1) = ( s(i) + a/s(i) )/2 : i > 0; 38 Thao tác thành thạo với các câu lệnh điều khiển đã học Cài đặt hoàn chỉnh các ví dụ trong bài giảng 39
File đính kèm:
- Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển.pdf