Ngôn ngữ lập trình - Bài 2: Luồng điều khiển

pdf 38 trang vanle 1860
Bạn đang xem 20 trang mẫu của tài liệu "Ngôn ngữ lập trình - Bài 2: Luồng điều khiển", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfngon_ngu_lap_trinh_bai_2_luong_dieu_khien.pdf

Nội dung text: Ngôn ngữ lập trình - Bài 2: Luồng điều khiển

  1. NGÔN NGỮ LẬP TRÌNH Bài 2: Luồng điều khiển Giảng viên: Lý Anh Tu ấn Email: tuanla@tlu.edu.vn
  2. Nội dung 1. Biểu thức logic ◦ Xây dựng, Đánh giá và các Luật ưu tiên 2. Kỹ thuật rẽ nhánh ◦ if-else ◦ switch ◦ if-else lồng nhau 3. Vòng lặp ◦ while, do-while, for ◦ Vòng lặp lồng nhau 2
  3. Biểu thức logic: Các toán tử so sánh  Các toán tử logic ◦ Toán tử AND (&&) ◦ Toán tử OR (||) 3
  4. Đánh giá biểu thức logic  Kiểu dữ liệu bool: trả về true hoặc false  Bảng chân lý 4
  5. Độ ưu tiên của các toán tử 5
  6. Độ ưu tiên của các toán tử 6
  7. Độ ưu tiên của các toán tử 7
  8. Độ ưu tiên của các toán tử 8
  9. Ví dụ về độ ưu tiên  Số học ưu tiên trước logic ◦ x+1>2 || x+1 2 || (x+1) =0) && (y>1) ◦ Thận trọng với toán tử tăng: (x>1) && (y++)  Giá trị logic của các số nguyên ◦ Tất cả các số khác không -> true ◦ Số không -> false 9
  10. Kỹ thuật rẽ nhánh  Câu lệnh if-else ◦ Chọn một trong hai câu lệnh dựa trên biểu thức điều kiện ◦ Ví dụ: if (hrs > 40) grossPay = rate*40 +1.5*rate*(hrs-40); else grossPay = rate*hrs; 10
  11. Cú pháp câu lệnh if-else  Cú pháp chuẩn: if ( ) else  Lưu ý: mỗi nhánh chỉ có duy nhất một câu lệnh  Để thực thi nhiều câu lệnh trong mỗi nhánh -> sử dụng lệnh kép ◦ Nằm trong cặp dấu { } ◦ Còn được gọi là khối lệnh 11
  12. Ví dụ về câu lệnh kép  Trong câu lệnh lưu ý đến việc thụt vào đầu dòng if (myScore > yourScore) { cout << "I win!\n"; wager = wager + 100; } else { cout << "I wish these were golf scores.\n"; wager = 0; } 12
  13. Một số lỗi thường gặp  Toán tử “=“ và toán tử “==“ ◦ Toán “=“ có nghĩa là phép gán ◦ Toán tử “==“ có nghĩa là phép so sánh bằng  Rất khác nhau trong C++  VD: if (x = 12)  Lưu ý toán tử sử dụng! Do_Something else Do_Something_Else 13
  14. Tự chọn else  Mệnh đề else là tự chọn ◦ Nếu bạn không muốn làm gì trong nhánh sai (else), thì hãy bỏ nó đi ◦ Ví dụ: if (sales >= minimum) salary = salary + bonus; cout << "Salary = %" << salary; ◦ Không làm gì khi điều kiện sai nên không có câu lệnh else ◦ Tiếp tục thực hiện câu lệnh cout 14
  15. Câu lệnh lồng nhau  Câu lệnh if-else chứa các câu lệnh nhỏ hơn ◦ Câu lệnh kép hoặc câu lệnh đơn ◦ Có thể chứa bất kỳ lệnh nào, bao gồm cả câu lệnh if- else khác ◦ Ví dụ: if (speed > 55) if (speed > 80) cout << "You’re really speeding!"; else cout << "You’re speeding."; 15
  16. if-else nhiều nhánh  Chỉ khác ở việc thụt vào đầu dòng, trong đó tránh thụt vào đầu dòng quá nhiều ◦ Cú pháp: 16
  17. if-else nhiều nhánh 17
  18. Câu lệnh switch  Câu lệnh giúp kiểm soát đa nhánh  Sử dụng biểu thức điều kiện trả về kiểu dữ liệu bool 18
  19. Câu lệnh switch: cú pháp 19
  20. Câu lệnh switch: ví dụ 20
  21. Câu lệnh switch: đa nhãn case  Tiếp tục thực hiện cho đến khi gặp break ◦ switch cung cấp một “lối vào” ◦ Ví dụ: case "A": case "a": cout << "Excellent: you got an "A"!\n"; break; case "B": case "b": cout << "Good: you got a "B"!\n"; break; ◦ Lưu ý rằng đa nhãn cung cấp cùng một “lối vào” 21
  22. Câu lệnh switch: ví dụ thực đơn  Câu lệnh switch rất thuận tiện cho việc tạo thực đơn switch (response) { case "1": // Execute menu option 1 break; case "2": // Execute menu option 2 break; case 3": // Execute menu option 3 break; default: cout << "Please enter valid response."; } 22
  23. Toán tử điều kiện  Cho phép nhúng điều kiện vào biểu thức  Về cơ bản là toán tử if-else viết tắt  Ví dụ: if (n1 > n2) max = n1; else max = n2;  Có thể được viết là: max = (n1 > n2) ? n1 : n2; 23
  24. Vòng lặp  Có ba kiểu vòng lặp trong C++ ◦ while  linh hoạt nhất  không bị hạn chế ◦ do-while  kém linh hoạt nhất  luôn luôn thực thi thân vòng lặp ít nhất một lần ◦ for  vòng lặp đếm tự nhiên 24
  25. Vòng lặp while: cú pháp 25
  26. Vòng lặp while: ví dụ  Xét: count = 0; // Initialization while (count < 3) // Loop Condition { cout << "Hi "; // Loop Body count++; // Update expression } ◦ Thân vòng lặp sẽ thực thi bao nhiêu lần? 26
  27. Vòng lặp do-while: cú pháp 27
  28. Vòng lặp do-while: ví dụ  count = 0; // Initialization do { cout << "Hi "; // Loop Body count++; // Update expression } while (count < 3); // Loop Condition ◦ Thân vòng lặp sẽ thực thi bao nhiêu lần ? ◦ Vòng lặp do-while luôn luôn thực thi ít nhất một lần ! 28
  29. while và do-while  Rất giống nhau, nhưng có một khác biệt quan trọng về thời điểm kiểm tra biểu thức logic: ◦ while: kiểm tra trước khi thực thi thân vòng lặp ◦ do-while: kiểm tra sau khi thực thi thân vòng lặp  while là thông dụng hơn, do tính linh hoạt không hạn chế của nó 29
  30. Toán tử phẩy  Đánh giá danh sách biểu thức, trả về giá trị của biểu thức cuối cùng  Thường được sử dụng trong vòng lặp for  Ví dụ: first = (first = 2, second = first + 1); ◦ first được gán giá trị 3 ◦ second được gán giá trị 3  Không đảm bảo trật tự đánh giá các biểu thức 30
  31. Vòng lặp for: cú pháp  Cú pháp: for (Init_Action; Bool_Exp; Update_Action) Body_Statement  Giống như if-else, Body_Statement có thể là một khối lệnh 31
  32. Vòng lặp for: ví dụ  Ví dụ: for (count=0;count<3;count++) { cout << "Hi "; // Loop Body }  Thân vòng lặp sẽ thực thi bao nhiêu lần?  Cấu trúc vòng lặp for: Khởi tạo, điều kiện lặp và cập nhật  Vòng lặp đếm tự nhiên 32
  33. Điều kiện lặp  Biểu thức điều kiện của vòng lặp có thể là bất kỳ biểu thức logic nào  Ví dụ: while (count<3 && done!=0) { // Do something } for (index=0;index<10 && entry!=-99) { // Do something } 33
  34. Một số lỗi thường gặp  Lưu ý việc đặt sai dấu ; while (response != 0) ; { cout > response; } ◦ Kết quả là tạo ra vòng lặp vô hạn  Điều kiện lặp phải được đánh giá là sai ở một bước lặp nào đó, nếu không sẽ tạo ra vòng lặp vô hạn while (1) { cout << "Hello "; } ◦ Một vòng lặp luôn điều kiện luôn đúng lặp vô hạn 34
  35. Câu lệnh break và continue  Trong một số trường hợp có thể sửa đổi luồng tự nhiên  break; ◦ Buộc thoát khỏi vòng lặp ngay lập tức  continue; ◦ Bỏ qua phần còn lại của thân vòng lặp  Các câu lệnh nay vi phạm luồng tự nhiên, nên chỉ sử dụng khi thật sự cần thiết 35
  36. Vòng lặp lồng nhau  Bất cứ câu lệnh C++ đúng nào cũng có thể nằm trong thân vòng lặp  Bao gồm cả các câu lệnh lặp khác được gọi là vòng lặp lồng nhau  Yêu cầu thụt vào đầu dòng: for (outer=0; outer 2; inner ) cout << outer << inner; ◦ Không có { } vì mỗi thân vòng lặp chỉ có một lệnh ◦ Tuy nhiên vẫn có thể sử dụng { } như thường 36
  37. Tóm tắt  Các biểu thức logic: tương tự biểu thức số học nhưng cho kết quả là true hoặc false  Các câu lệnh rẽ nhánh C++ ◦ if-else, switch ◦ câu lệnh switch tiện lợi cho việc tạo thực đơn  Các câu lệnh lặp C++ ◦ while ◦ do-while ◦ for 37
  38. Tóm tắt  Vòng lặp do-while ◦ Luôn luôn thực thi thân vòng lặp của nó ít nhất một lần  Vòng lặp for ◦ Một vòng lặp đếm tự nhiên  Vòng lặp có thể thoát sớm ◦ câu lệnh break ◦ câu lệnh continue ◦ sử dụng hạn chế 38