Ngôn ngữ lập trình C và C++ - Bài 3: Dòng điều khiển - Đỗ Đăng Khoa

Tài liệu Ngôn ngữ lập trình C và C++ - Bài 3: Dòng điều khiển - Đỗ Đăng Khoa: 4/21/2015 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Ngôn ngữ lập trình C và C++ Bài 3: Dòng Điều Khiển TS. Đỗ Đăng Khoa Bộ môn Cơ học Ứng dụng Viện Cơ khí 4/21/2015 2 Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức Các câu lệnh được xử lý tuần tự theo thứ tự từ trên xuống dưới Lệnh đơn: là một câu lệnh riêng lẻ được kết thúc bằng dấu chấm phẩy “ ; ”. { int min, i, j; Ví dụ: TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Lệnh phức: Nhóm nhiều lệnh đơn thành một lệnh phức bằng cách rào chúng bên trong các dấu ngoặc nhọn {...}. min = (i < j ? i : j); cout << min << '\n'; } 4/21/2015 3 Dòng điều khiển  Điều khiển rẽ nhánh  Câu lệnh điều kiện if  Câu lệnh lựa chọn switch  Điều khiển chu trình  Chu trình while TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI  Chu trình do while  Chu trình for  Lệnh continue: bắt đầu chu trình tiếp theo  Lệnh break: kết thúc chu trình 4/21/2015 4 Điều khiển Rẽ Nhánh Cho phép thay đổi hướng thực hiện của chương trình Biểu thức ...

pdf41 trang | Chia sẻ: putihuynh11 | Lượt xem: 384 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Ngôn ngữ lập trình C và C++ - Bài 3: Dòng điều khiển - Đỗ Đăng Khoa, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
4/21/2015 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Ngôn ngữ lập trình C và C++ Bài 3: Dòng Điều Khiển TS. Đỗ Đăng Khoa Bộ môn Cơ học Ứng dụng Viện Cơ khí 4/21/2015 2 Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức Các câu lệnh được xử lý tuần tự theo thứ tự từ trên xuống dưới Lệnh đơn: là một câu lệnh riêng lẻ được kết thúc bằng dấu chấm phẩy “ ; ”. { int min, i, j; Ví dụ: TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Lệnh phức: Nhóm nhiều lệnh đơn thành một lệnh phức bằng cách rào chúng bên trong các dấu ngoặc nhọn {...}. min = (i < j ? i : j); cout << min << '\n'; } 4/21/2015 3 Dòng điều khiển  Điều khiển rẽ nhánh  Câu lệnh điều kiện if  Câu lệnh lựa chọn switch  Điều khiển chu trình  Chu trình while TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI  Chu trình do while  Chu trình for  Lệnh continue: bắt đầu chu trình tiếp theo  Lệnh break: kết thúc chu trình 4/21/2015 4 Điều khiển Rẽ Nhánh Cho phép thay đổi hướng thực hiện của chương trình Biểu thức điều kiện trả về giá trị đúng hoặc sai Ví dụ: Xác định một số là số chẵn hay số lẻ: TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI 1) Nhập vào một số 2) Chia số đó cho 2 để xác định số dư 3) Nếu số dư là 0, số đó là “SỐ CHẴN” 4) Ngược lại số dư không bằng 0, số đó là “SỐ LẺ” 4/21/2015 5 Điều khiển Rẽ Nhánh: If Cú pháp: if (điều kiện) lệnh đơn / lệnh phức; Ý nghĩa: Nếu biểu thức điều kiện có giá trị đúng (true), khối lệnh theo sau Điều kiện Đúng Sai TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI lệnh if được thực thi. Điều kiện: biến, hằng, biểu thức, hàm Chú ý: “đúng” là một giá trị khác 0 “sai” là giá trị 0 Lệnh Đơn/ Lệnh Phức 4/21/2015 6 Điều khiển Rẽ Nhánh: If •Ví dụ 1: lấy trị tuyệt đối if(value < 0) value = -value; •Ví dụ 2: xếp 2 số từ nhỏ đến lớn if(value1 > value2) TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI { temp = value1; value1 = value2; value2 = temp; } 4/21/2015 7 Điều khiển Rẽ Nhánh: If - Else Cú pháp: if (điều kiện) lệnh đơn 1 / lệnh phức 1; else lệnh đơn 2 / lệnh phức 2; Ý nghĩa: Biểu thức điều kiện TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nếu biểu thức điều kiện trả về giá trị đúng, lệnh đơn 1/ lệnh phức 1 được thực hiện. Nếu biểu thức của if không trả về giá trị đúng thì lệnh đơn 2/ lệnh phức 2 được thực hiện. Lệnh đơn 1/ Lệnh phức 1 Đúng Sai Lệnh đơn 2/ Lệnh phức 2 4/21/2015 8 Điều khiển Rẽ Nhánh: If - Else •Ví dụ 1: tìm số lớn hơn trong 2 số if(value1 > value2) larger = value1; else TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI larger = value2; 4/21/2015 9 Điều khiển Rẽ Nhánh: If - Else Ví dụ 2: Kiểm tra một số là chẵn hay lẻ #include int main () { int n; printf(L"Nhập một số nguyên:"); #include using namespace std; int main () { int n; cout << "Nhập một số nguyên:"; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI scanf("%d", &n); if(n%2 == 0) printf("n là số chẵn"); else printf("n là số lẻ"); return 0; } cin >> n; if(n%2 == 0) cout << "n là số chẵn"; else cout << "n là số lẻ"; return 0; } 4/21/2015 10 Điều khiển Rẽ Nhánh: If – Else - If Cú pháp: if (điều kiện 1) lệnh đơn 1 / lệnh phức 1; else if (điều kiện 2) lệnh đơn 2 / lệnh phức 2; ....... TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI else if (điều kiện n-1) lệnh đơn n-1 / lệnh phức n-1; else lệnh đơn n / lệnh phức n; 4/21/2015 11 Điều khiển Rẽ Nhánh: If – Else - If Ý nghĩa: Khi biểu thức điều kiện mang nhiều giá trị Các biểu thức được kiểm tra theo thứ tự đã viết Nếu một biểu thức nào đó đúng if Ngày =={ học Toán; } else if Ngày=={ học C++; } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI thì câu lệnh tương ứng sẽ được thực hiện và rồi kết thúc toàn bộ kết cấu Phần else xử lý khi không có điêu kiện nào được thỏa mãn. Phần này có thể được bỏ đi else if Ngày=={ chơi; } else{ ngủ; } 4/21/2015 12 Điều khiển Rẽ Nhánh: If – Else - If •Ví dụ 1: if(diem_so >= 90) cout << “Diem = A" << endl; else if(diem_so >= 80) cout << “Diem = B" << endl; else if(diem_so >= 70) TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI cout << “Diem = C" << endl; else if(diem_so >= 60) cout << “Diem = D" << endl; else cout << “Diem = F" << endl; 4/21/2015 13 Điều khiển Rẽ Nhánh: If – Else - If #include #include using namespace std; int main () { { cout << “Nghiệm kép: "; cout << -b/(2*a) << endl; } else { Tệp chứa các hàm toán học: sin, cos, tan, ln, log, fabs.(trị tuyệt đối), pow (mũ), sqrt(căn)... Ví dụ 2: Giải phương trình ax2+bx+c=0 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI double a, b, c; cout << "Nhập a, b, c:"; cin >> a >> b >> c; double delta = b*b – 4*a*c; if(delta < 0.0) cout << "Nghiệm phức"; else if (fabs(delta) < 1.0E-5) double x1, x2; x1 = (-b + sqrt(delta))/(2*a); x2 = (-b - sqrt(delta))/(2*a); cout << “x1 = “<< x1 << endl; cout << “x2 = “<< x2 << endl; } return 0; } 4/21/2015 14 Điều khiển Rẽ Nhánh: If lồng nhau Lệnh if lồng nhau là một lệnh if được đặt trong một lệnh if hoặc else khác Sự nhập nhằng khi dẫy if lồng nhau (else luôn được gắn với if không có else int a=-1, b=1,c=1; if(a>0) TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI gần nhất trước đó) Nên sử dụng móc nhọn {..} để làm rõ các khối lệnh trong mọi trường hợp if(b>0) c = 2; else c = 3; 4/21/2015 15 Điều khiển Rẽ Nhánh: Switch Cú pháp: Switch (Biểu thức) { case giá trị hằng 1: khối lệnh 1; case giá trị hằng 2: Điều kiện Khối lệnh 1 Case 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI khối lệnh 2; ...... default: khối lệnh n; } Khối lệnh 2 Case 2 Khối lệnh n default 4/21/2015 16 Câu lệnh lựa chọn switch Cú pháp switch (expression) { case value1: Statement-1; break; case value2: Biến, hằng, biểu thức, hàm (kiểu trả về) có kiểu kí tự hoặc số nguyên Hằng kí tự hoặc nguyên - Tùy chọn - Không có lệnh break, tất cả các case sẽ được thực hiện sau khi so khớp giá trị TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Statement-2; break; ...... default: Statement; } - Dùng break để thoát ngay khỏi switch (không phải tiếp tục chuyển sang các case còn lại). - Tùy chọn - Các lệnh trong default sẽ được thực hiện nếu tất cả các case đều không khớp giá trị 4/21/2015 17 Câu lệnh lựa chọn switch Cú pháp Thứ tự của các case và default tùy ý switch (expression) { case value2: Statement-2; break; default: TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Statement; case value1: Statement-1; break; ...... } 4/21/2015 18 Câu lệnh lựa chọn switch Cú pháp Gộp lại các case để thực hiện cùng các lệnh switch (expression) { case value1: case value2: Statement-x; break; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ...... default: Statement; } 4/21/2015 19 Điều khiển Rẽ Nhánh: Switch Ý nghĩa: •Tạo quyết định nhiều nhánh đặc biệt (Nếu dùng if rẽ nhiều nhánh khiến chương trình khó đọc ) • Kiểm tra xem một biểu thức có ứng với một trong số giá trị hằng hay không (từ đầu) và nhảy đến lệnh tương ứng khi so trúng TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI • Dùng câu lệnh break để thoát ra ngay khỏi switch khi không muốn kiểm tra tiếp các trường hợp còn lại •Không cần bao dãy lệnh bởi cặp dấu {} •Nhánh default có thể nằm bất cứ đâu, không cần ở cuối cùng 4/21/2015 20 Điều khiển Rẽ Nhánh: Switch Minh họa switch và case int x,y,z; char a,b; float f; hàm func() có giá trị trả về là số nguyên. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI switch đúng switch sai case đúng case sai switch(x) switch(f) case 3: case 2.5: switch(x>y) switch(x+2.5) case 'a‘: case x: switch(a+b-2) case 1+2: case x+2: switch(func(x,y)) case 'x'>'y‘: case 1,2,3: 4/21/2015 21 Điều khiển Rẽ Nhánh: Switch •Ví dụ: int th; cout > th ; switch (th) { case 1: case 3: case 5: case 7: case 8: case 10: TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI case 12: cout << “thang nay co 31 ngay" ; break ; case 2: cout << “thang nay co 28 ngay" ; break; case 4: case 6: case 9: case 11: cout << “thang nay co 30 ngay" ; break; default: cout << “Nhap sai thang" ; } 4/21/2015 22 Điều khiển Vòng Lặp Vòng lặp: Một đoạn mã lệnh trong chương trình thực hiện lặp đi lặp lại cho đến khi một điều kiện xác định được thỏa mãn Ba điều khiển vòng lặp: • Vòng lặp For TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI • Vòng lặp While • Vòng lặp Do.. While 4/21/2015 23 Điều khiển Vòng Lặp- For Cú pháp: for (khởi gán biến lặp ; điều kiện lặp ; thay đổi biến lặp) { khối lệnh lặp; } •Ví dụ: Điều kiện lặp Khởi gán biến lặp TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI int i; for(i=1; i<=20; i++) cout << "i is " << i << endl; Khối lệnh lặp Đúng Sai Thay đổi biến lặp 4/21/2015 24 Điều khiển Vòng Lặp- For Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì thực hiện khối lệnh và cập nhật, sai thì dừng. Cú pháp for(initialization;condition;incr/decr) { Statement } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Thực hiện đầu tiên - Các lệnh khai báo hoặc khởi tạo biến for(i = 0; Khởi tạo for(i = 0, j = 5; for(int i = 0; Khai báo for(int i = 0, j = 0; và khởi tạo 4/21/2015 25 Điều khiển Vòng Lặp- For Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì thực hiện khối lệnh và cập nhật, sai thì dừng. Cú pháp for(initialization;condition;incr/decr) { Statement } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - hằng, biến, biểu thức và hàm - Nếu đúng, thực hiện các lệnh trong chu trình - Nếu sai thì kết thúc chu trình 4/21/2015 26 Điều khiển Vòng Lặp- For Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì thực hiện khối lệnh và cập nhật, sai thì dừng. Cú pháp for(initialization;condition;incr/decr) { Statement } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Thực hiện ngay sau các lệnh trong chu trình - Các lệnh cập nhật các biến đã khởi tạo (thường là tăng/giảm các biến đếm) for(...; ....; i++) for(...; ....; i ++, j ++) 4/21/2015 27 Điều khiển Vòng Lặp- For Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì thực hiện khối lệnh và cập nhật, sai thì dừng. Cú pháp for(initialization;condition;incr/decr) { Statement } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI 4/21/2015 28 Điều khiển Vòng Lặp- For Ý nghĩa:  Khởi gán biến lặp: là một lệnh gán để khởi tạo biến điều khiển của vòng lặp  Điều kiện lặp: là một biểu thức quan hệ qui định khi nào vòng lặp sẽ kết thúc TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Thay đổi biến lặp: định nghĩa cách thức thay đổi của biến điều khiển vòng lặp mỗi khi vòng lặp được thực thi Ba phần của vòng lặp for phải được phân cách bởi dấu chấm phẩy(;) 4/21/2015 29 Điều khiển Vòng Lặp- For Ý nghĩa: Ba phần này có thể để trống nhưng vẫn phải phân cách bởi dấu chấm phẩy ; Phần lệnh tạo nên thân vòng lặp có thể là một lệnh đơn hoặc một lệnh phức (một tập nhiều lệnh) TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Vòng lặp for tiếp tục được thực thi khi biểu thức kiểm tra điều kiện vẫn có giá trị đúng(true). Khi điều kiện trở thành sai(false), chương trình thực hiện lệnh theo sau vòng lặp for 4/21/2015 30 Điều khiển Vòng Lặp- For •Ví dụ: tính n! int n, giai_thua, i; cout << “Nhap so tinh giai thua: "; cin >> n; giai_thua= 1; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI for(i=1; i<=n; i++) giai_thua *= i; cout << “Giai thua cua" << n << " la " << giai_thua<< endl; 4/21/2015 31 Điều khiển Vòng Lặp- For Một số trường hợp đặc biệt: •Vòng lặp for có thể được mở rộng bằng cách chứa nhiều giá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả của vòng lặp for #include using namespace std; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI void main() { int i, j , max; cout<<“Nhap gia tri lơn nhat\n”); cin>>max; for(i = 0 , j = max ; i <=max ; i++, j--) cout<<i + j; } 4/21/2015 32 Điều khiển Vòng Lặp- For •Vòng lặp for có thể để trống các biểu thức Chu trình sau là một chu trình vô hạn: for ( ; ; ) { ... } TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI 4/21/2015 33 Điều khiển Vòng Lặp- For Vòng lặp for có thể lồng nhau: for (i = 1; i<=max1; i++) { for (j = 0; j < = max2; j++){ TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI } } 4/21/2015 34 Điều khiển Vòng Lặp- doawhile Cú pháp: do{ khối lệnh; } while (điều kiện); Ý nghĩa: Thân của vòng lặp được thực thi Khối lệnh đúng TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI trước khi biểu thức điều kiện được kiểm tra  Khi điều kiện mang giá trị sai (False), vòng lặp do while sẽ được kết thúc, và điều khiển chuyển đến lệnh xuất hiện ngay sau lệnh while sai Điều kiện 4/21/2015 35 Điều khiển Vòng Lặp- do..while •Ví dụ: tính n! int n, giai_thua, i; cout << “Nhap so tinh giai thua: "; cin >> n; giai_thua= 1; i = 1; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI do{ giai_thua*= i; i++; }while(i <= n); cout << “Giai thua cua" << n << " la " << giai_thua<< endl; 4/21/2015 36 Điều khiển Vòng Lặp- while Cú pháp: while (điều kiện){ khối lệnh; } Ý nghĩa: •Vòng lặp while lặp lại các lệnh Điều kiện TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI trong khi một biểu thức điều kiện mang giá trị đúng (True) Khối lệnh đúng sai 4/21/2015 37 Điều khiển Vòng Lặp- while •Ví dụ: tính n! int n, giai_thua, i; cout << “Nhap so tinh giai thua: "; cin >> n; giai_thua= 1; i = 1; TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI while(i <= n){ giai_thua*= n; i++; } cout << “Giai thua cua " << n << " la " << giai_thua<< endl; 4/21/2015 38 Cách chọn vòng lặp? Vòng lặp For Dùng khi số lần lặp biết trước Vòng lặp while •Dùng khi số lần lặp chưa biết trước •Điều kiện lặp hay dừng phụ thuộc biểu thức logic •Sử dụng khi khả năng thực hiện khối lặp không xảy TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ra lần nào Vòng lặp do-while Giống với vòng lặp while, khác biệt duy nhất là sử dụng khi ta biết chắc chắn khối lệnh lặp phải được thực hiện ít nhất một lần 4/21/2015 39 Một số lệnh chuyển điều khiển Lệnh Break:  Lệnh break được sử dụng để kết thúc một mệnh đề case trong câu lệnh switch  Nó cũng có thể được sử dụng để kết thúc ngang giữa vòng lặp  Khi gặp lệnh break, vòng lặp sẽ kết thúc ngay và TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI điều khiển được chuyển đến lệnh kế tiếp bên ngoài vòng lặp 4/21/2015 40 Một số lệnh chuyển điều khiển Lệnh Continue:  Lệnh continue dùng để bắt đầu thực hiện lần lặp kế tiếp của vòng lặp  Khi gặp lệnh continue, các câu lệnh còn lại trong thân vòng lặp bị bỏ qua và điều khiển được chuyển TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI đến lần lặp kế tiếp 4/21/2015 41 Một số lệnh chuyển điều khiển Lệnh Continue: Đoạn mã sau xử lý các phần tử dương trong bảng a, bỏ qua các giá trị âm. for (i = 0; i < n; i++) TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI if (a[i] < 0) /* nhảy qua các phần tử âm */ continue; ... /* xử lý phần tử dương*/

Các file đính kèm theo tài liệu này:

  • pdfngon_ngu_lap_trinh_c_va_c_bai_3_dong_dieu_khien_2633_1993519.pdf
Tài liệu liên quan