Bài giảng Ngôn ngữ lập trình - Bài 2: Luồng điều khiển - Lý Anh Tuấn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình - Bài 2: Luồng điều khiển - Lý Anh Tuấ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:
- bai_giang_ngon_ngu_lap_trinh_bai_2_luong_dieu_khien_ly_anh_t.pdf
Nội dung text: Bài giảng Ngôn ngữ lập trình - Bài 2: Luồng điều khiển - Lý Anh Tuấn
- 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
- 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
- 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
- Đá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
- Độ ưu tiên của các toán tử 5
- Độ ưu tiên của các toán tử 6
- Độ ưu tiên của các toán tử 7
- Độ ưu tiên của các toán tử 8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- if-else nhiều nhánh 17
- 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
- Câu lệnh switch: cú pháp 19
- Câu lệnh switch: ví dụ 20
- 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
- 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
- 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
- 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
- Vòng lặp while: cú pháp 25
- 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
- Vòng lặp do-while: cú pháp 27
- 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
- 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
- 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
- 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
- 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
- Đ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
- 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
- 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
- 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
- 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
- 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