1 / 54

Chương 3 : BIỂU THỨC LOGIC VÀ CÁC CẤU TRÚC ĐIỀU KHIỂN

Chương 3 : BIỂU THỨC LOGIC VÀ CÁC CẤU TRÚC ĐIỀU KHIỂN. Mục tiêu Giới thiệu về biểu thức logic; các cấu trúc điều khiển trong C++. Vận dụng các cấu trúc này vào việc giải quyết các bài toán đặt ra. Nội dung Biểu thức Logic Các cấu trúc điều khiển Một số câu lệnh đặc biệt.

Download Presentation

Chương 3 : BIỂU THỨC LOGIC VÀ CÁC CẤU TRÚC ĐIỀU KHIỂN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chương 3: BIỂU THỨC LOGIC VÀ CÁC CẤU TRÚC ĐIỀU KHIỂN • Mục tiêu • Giới thiệu về biểu thức logic; các cấu trúc điều khiển trong C++. Vận dụng các cấu trúc này vào việc giải quyết các bài toán đặt ra. • Nội dung • Biểu thức Logic • Các cấu trúc điều khiển • Một số câu lệnh đặc biệt

  2. 3.1 Biểu thức Logic • Dữ liệu kiểu boolean • Biểu thức logic • Ước lượng mạch ngắn

  3. Dữ liệu kiểu Boolean • Là kiểu dữ liệu xây dựng sẵn (built-in) • Gồm có hai giá trị: truevà false • Từ khóa khai báo dữ liệu kiểu boolean: bool • Chẳng hạn,bool x; • //Biến x chỉ được nhận 2 giá trị là true hoặc false • Lưu ý: Trong C++ giá trị true tương ứng với 1 và false tương ứng với 0. Do đó, khi trả về true hoặc false thực chất là trả về 1 hoặc 0 (số nguyên).

  4. Biểu thức Logic • Còn gọi là biểu thức boolean • Làm việc với các kiểu giá trị và phép toán logic hoặc các phép toán quan hệ. • Giá trị trả về của biểu thức logic là gì? Các phép toán logic và quan hệ đã học là gì?

  5. Biểu thức Logic • Cú pháp xây dựng biểu thức logic: • Bieu_thuc_A Phep_toan Bieu_thuc_B • Trong đó: • Bieu_thuc_A hoặc Bieu_thuc_B: có thể là hằng, biến, hàm trả về giá trị hay biểu thức. • Phep_toan: Các phép toán quan hệ và phép toán logic (trừ phép phủ định !) • Ví dụ: Ta có một số biểu thức: • 5 > 8 delta > 0 • (a > b) && (a > c) a != 0 || b != 0

  6. Ước lượng mạch ngắn Không ước lượng • Sử dụng cho các biểu thức logic • Khi ước lượng các biểu thức logic, chương trình sẽ thực hiện từ trái qua phải và sẽ dừng lại khi giá trị thật cuối cùng của biểu thức được xác định. Ví dụ: Xét đoạn chương trình sau: int toan = 4, ly = 6, hoa = 7; bool kq; kq = (toan >= 5 ) && (ly >= 5 ) && (hoa >= 5);

  7. Ước lượng mạch ngắn • Các lợi ích đối với ước lượng mạch ngắn • Tiết kiệm được thời gian tính toán trong các biểu thức có sự tham gia của phép && và phép || • Xây dựng biểu thức đóng vai trò “canh gác” cho biểu thức thứ 2 không an toàn • Ví dụ: Xét đoạn chương trình sau: • int tu, mau; • float x; • bool kq; • kq = (mau != 0) && ( x < tu/mau);

  8. 3.2 Các cấu trúc điều khiển • Cấu trúc tuần tự • Cấu trúc rẽ nhánh • Cấu trúc lặp • Một số câu lệnh đặc biệt

  9. Cấu trúc tuần tự • Lưu đồ Câu lệnh 1 Câu lệnh 2 lệnh n • Là cấu trúc mặc định trong tất cả các ngôn ngữ lập trình • Các lệnh được thực hiện theo thứ tự từ trên xuống; lệnh nào viết trước được thực hiện trước. • Cú pháp • Câu lệnh 1; • Câu lệnh 2; • …. • Câu lệnh n; Câu

  10. Cấu trúc rẽ nhánh • Là cấu trúc xác định thứ tự thực hiện các câu lệnh dựa vào giá trị của biểu thức Logic. • Sử dụng từ khóa ifhoặc if … else, switch để viết câu lệnh rẽ nhánh • Các câu lệnh rẽ nhánh: • Câu lệnh if • Câu lệnh ifelse • Câu lệnh elseif (if lồng nhau) • Câu lệnh switch

  11. Câu lệnh if • Cú pháp • if (bieu_thuc_logic) • câu lệnh; • Trong đó • bieu_thuc_logic: là biểu thức cho 2 giá trị true hoặc false • câu lệnh: có thể là một lệnh hoặc một khối lệnh

  12. Câu lệnh if true Bieu_thuc_logic Câu lệnh false • Sơ đồ khối • Hoạt động: • Khi gặp câu lệnh if Máy kiểm tra Bieu_thuc_logic. Nếu kết quả là true thì thực hiện câu lệnh. Ngược lại bỏ qua câu lệnh trong thân if và tiếp tục thực hiện các lệnh sau if.

  13. Câu lệnh if Bài tập 1: Viết đoạn chương trình kiểm tra một số nhập vào có phải là số dương hay không. Nếu đúng là số dương thì đưa ra câu thông báo “số vừa nhập vào là số dương”. Bài tập 2: Viết đoạn chương trình tìm và xuất ra màn hình giá trị lớn nhất của 2 số a và b bất kỳ được nhập vào từ bàn phím

  14. Câu lệnh if ... else • Cú pháp • if (bieu_thuc_logic) • câu lệnh 1; • else • câu lệnh 2; • Trong đó • bieu_thuc_logic: là biểu thức cho 2 giá trị true hoặc false • câu lệnh1, câu lệnh 2: có thể là một lệnh hoặc một khối lệnh

  15. Câu lệnh if ... else true false Bieu_thuc_logic Câu lệnh 2 Câu lệnh 1 • Sơ đồ khối • Hoạt động: • B1: Máy kiểm tra Bieu_thuc_logic. Nếu kết quả là true thì qua B2, ngược lại qua B3. • B2: Thực hiện câu lệnh 1 rồi thoát khỏi if • B3: Thực hiện câu lệnh 2 rồi thoát khỏi if

  16. Câu lệnh if ... else Bài tập 3: Viết đoạn chương trình kiểm tra một số nguyên bất kỳ nhập vào từ bàn phím có là nguyên dương chẵn hay không? Bài tập 4: Viết đoạn chương trình kiểm tra 3 số a, b, c bất kỳ được nhập vào từ bàn phím có thõa mãn là 3 cạnh của một tam giác hay không? Xuất kết quả ra màn hình.

  17. Câu lệnh else if (if lồng nhau) if ( bieu_thuc_logic 1 ) Cau lenh 1 • Sử dụng trong trường hợp kiểm tra nhiều điều kiện với các mức giá trị khác nhau. • Cú pháp elseif ( bieu_thuc_logic 2 ) cau lenh 2 . elseif ( bieu_thuc_logic n ) cau lenh n elsecau lenh n+1

  18. Câu lệnh else if (if lồng nhau) • Các bieu_thuc_logic sẽ được kiểm tra tuần tự cho đến khi có biểu thức cho kết quả true • Chỉ có những lệnh theo sau biểu thức có giá trị true mới được thi hành • Nếu không có biểu thức nào true thì câu lệnh sau else cuối cùng sẽ được thực hiện • else luôn được kết hợp với if gần nhất chứa nó.

  19. Câu lệnh else if (if lồng nhau) Ví dụ: Với n = 20, 2 đoạn chương trình sau xuất ra màn hình kết quả là gì? if(n>0) if (n>0) if(n<15) else cout<<“You are fail”<<endl; if(n<15) else cout<<“You are fail”<<endl; cout<<“You are pass”<<endl; else cout<<“You are pass”<<endl;

  20. Câu lệnh else if (if lồng nhau) • Bài tập 5: Viết đoạn chương trình xếp loại học lực của sinh viên. Với điểm tổng của sinh viên được nhập vào từ bàn phím theo các mức sau. • Nếu DT >=3.5 thì thông báo “Xuất sắc” • Nếu DT >=3.2 thì thông báo “Giỏi” • Nếu DT >= 2.5 thì thông báo “Khá” • Nếu DT >=2.0 thì thông báo “Trung bình” • Ngược lại thông báo “Yếu” • Bài tập 6: Viết đoạn chương trình nhập vào một tháng bất kỳ trong năm và xuất ra màn hình số ngày của tháng đó.

  21. Câu lệnh switch • Cú pháp • switch (bieu_thuc_nguyen hoặc ky_tu) • { case gia_tri 1 : • câu lệnh 1; break; • case gia_tri 2 : • câu lệnh 2; break; • . • . • . • case gia_tri n : • câu lệnh n; break; • default : câu lệnh n+1; • }

  22. Câu lệnh switch Bieu_thuc_nguyen hoac ky_tu Bt_nguyen hoac ky tu == gia_tri 1 true Câu lệnh 1 false Bt_nguyen hoac ky tu == gia_tri 2 true Câu lệnh 2 false Câu lệnh n+1 • Sơ đồ khối

  23. Câu lệnh switch • Hoạt động • Máy sẽ tiến hành so sánh kết quả của bieu_thuc_nguyen hoặc ký tự lần lượt với các giá trị sau nhãn case. Nếu giá trị nào thỏa mãn, thì câu lệnh sau giá trị đó sẽ được thực hiện cho đến khi gặp câu lệnh break. Sau đó thoát khỏi switch • Trường hợp không có lệnhbreak thì khi gặp một giá trị thỏa mãn, tất cả các câu lệnh sau nó và sau tất cả các nhãn sau nó cũng được thực hiện cho đến hết switch • Trường hợp không có giá trị nào thỏa mãnthì câu lệnh sau default (nếu có) sẽ được thực hiện.

  24. Câu lệnh switch Ví dụ: Với f = ‘O’ thì đoạn chương trình sau cho kết quả như thế nào? switch(f) { case ‘P’: cout<<“\nP”<<endl; case ‘F’: cout<<“\nF”<<endl; case ‘C’: cout<<“\nC”<<endl; case ‘O’: cout<<“\nO”<<endl; case ‘M’: cout<<“\nM”<<endl; default: cout<<“\nError”<<endl; }

  25. Câu lệnh switch • Bài tập 7: làm lại bài tập 6 với tháng và năm nhập vào từ bàn phím sau đó hiển thị số ngày của tháng đó. Với: • + Tháng 2: • - Năm nhuận có 29 ngày • - Năm không nhuận có 28 ngày • + Năm nhuận là năm: • - Chia hết cho 4 nhưng không chia hết cho 100 • - Hoặc chia hết cho 400

  26. Cấu trúc lặp • Cho phép thực hiện lặp lại nhiều lần một công việc nào • Việc thực hiện công việc sẽ dừng lại khi thỏa mãn một điều kiện nào đó. • Có 3 dạng cấu trúc lặp • Cấu trúc lặp for • Cấu trúc lặp while • Cấu trúc lặp dowhile

  27. Câu lệnh for • Cú pháp for (bt_1; bt_2; bt_3) công việc; // có thể là một lệnh hoặc khối lệnh • Trong đó: • bt_1: thông thường là một phép gán để khởi tạo giá trị ban đầu cho biến điều khiển. • bt_2: là biểu thức kiểm tra điều kiện lặp • bt_3: thông thường là phép gán để thay đổi giá trị của biến điều khiển nhằm đến một lúc nào đó nó sẽ làm cho bt_2 nhận giá trị sai và vòng lặp sẽ kết thúc.

  28. Câu lệnh for Tính giá trị bt_1 false Bt_2 true Thực hiện Công việc Thoát Tính giá trị bt_3 Sơ đồ khối

  29. Câu lệnh for • Hoạt động • B1: Máy tính giá trị của bt_1 và chuyển sang B2 • B2: Kiểm tra điều kiện của bt_2. Nếu bt_2 cho giá trị true (==1) chuyển qua B3, ngược lại thoát khỏi for • B3: Thực hiện công việc trong thân for và qua B4 • B4: Tính giá trị bt_3 và quay lại B2.

  30. Câu lệnh for • Lưu ý: • Bất kỳ biểu thức nào trong 3 biểu thức trên có thể vắng mặt nhưng phải giữ lại dấu chấm phẩy (;) • Khi bt_2 vắng mặt thì nó được coi là luôn đúng. Trong trường hợp này việc thoát khỏi vòng lặp phải nhờ vào một trong các câu lệnh goto, break, return trong thân vòng lặp for • Trong mỗi biểu thức có thể gồm nhiều biểu thức con nhưng phải viết phân cách nhau bởi dấu phẩy (,) và được thực hiện từ trái qua phải.

  31. Câu lệnh for Bài tập 8: Viết chương trình hiển thị lên màn hình các giá trị từ 1 đến 10 trên 1 hàng hoặc 1 cột Bài tập 9: Viết chương trình hiển thị lên màn hình các giá trị từ 1 đến 20 trên 4 hàng Bài tập 10: Viết chương trình tính tổng S = 1 + 2 + 3 + …+ n. Với n nguyên dương được nhập vào từ bàn phím Bài tập 11: Viết chương trình tính n! với n nguyên dương được nhập vào từ bàn phím Bài tập 12: Viết chương trình tính tổng các số nguyên dương chẵn <= n với n bất kỳ được nhập vào từ bàn phím

  32. Câu lệnh while • Cú pháp while (bt_logic) { câu lệnh; // có thể là một lệnh hoặc khối lệnh } Trong đó: • bt_logic: cho kết quả true hoặc false.

  33. Câu lệnh while true Câu lệnh bt_logic false • Sơ đồ khối • Hoạt động • B1: Tính giá trị của bt_logic. Nếu bt_logic cho giá trị đúng thì chuyển qua B2, ngược lại thoát khỏi while • B2: Thực hiện câu lệnh trong thân while sau đó quay lại B1.

  34. Câu lệnh while Lưu ý: Trong thân while cần có lệnh tác động đến biến điều khiển để sau một số hữu hạn các bước lặp sẽ làm cho bt_logic nhận giá trị false. Làm lại các bài tập 8-12 sử dụng cấu trúc lặp while

  35. Câu lệnh do ... while • Cú pháp do { câu lệnh; // có thể là một lệnh hoặc khối lệnh } while (bt_logic); Trong đó: • bt_logic: cho kết quả true hoặc false.

  36. Câu lệnh do ... while Câu lệnh true bt_logic false • Sơ đồ khối • Hoạt động: • B1: Máy thực hiện câu lệnh rồi chuyển qua B2 • B2: Tính giá trị bt_logic. Nếu bt_logic cho giá trị true thì chuyển qua B1, ngược lại thoát khỏi dowhile

  37. Câu lệnh do ... while Sử dụng cấu trúc lặp do while để làm lại các bài tập trên

  38. Cấu trúc lặp So sánh hai cấu trúc lặp while và do while

  39. Cấu trúc lặp Nhận xét: cấu trúc lặp được thực hiện trên 2 cơ chế: • count – controlled (lặp theo biến đếm) • event – controlled (lặp theo sự kiện)

  40. Cơ chế lặp count - controlled • Đầu tiên khởi tạo biến điều khiển vòng lặp • Có biểu thức kiểm tra điều kiện lặp • Có lệnh làm thay đổi giá trị của biến điều khiển • Ví dụ: Xét đoạn code sau: • int i = 0; • while (i < 10) • { • cout<<i; • i++; • }

  41. Cơ chế lặp event - controlled Việc lặp việc thực hiện một công việc nào đó phụ thuộc vào một sự kiện: nhập hệ số khác không, đánh dấu giá trị cờ, … Ví dụ 1: Xét đoạn code sau: int a; do { cout<<“Nhap he so a khac khong a= ”; cin>>a; } while (a==0);

  42. Cơ chế lặp event - controlled Ví dụ 2: Xét đoạn code sau: int a; bool kt = true; while (kt) { cout<<“Nhap he so a khac khong a= ”; cin>>a; if (a!=0) kt = false; else cout<<“Gia tri ban nhap bang 0”<<endl; }

  43. Một số câu lệnh đặc biệt • Câu lệnh break • Câu lệnh continue

  44. Câu lệnh break • Sử dụng cho cấu trúc lựa chọn switch hoặc trong thân cấu trúc lặp. • Khi gặp lệnh break thì chương trình sẽ dừng thực hiện các câu lệnh trong thân các câu trúc trên và thoát khỏi các cấu trúc đó • Trong trường hợp các cấu trúc lồng nhau thì khi gặp lệnh break chương trình sẽ thoát khỏi cấu trúc sâu nhất chứa nó.

  45. Câu lệnh break Ví dụ 1: Xét đoạn chương trình int i=0; for ( ; i<=9; i++) if (i==5) break; else cout<<i;

  46. Câu lệnh break Ví dụ 2: Xét đoạn chương trình int i=0, j; while (i<=4) { for (j=0;j<=9;j++) if (j==3) break; else cout<<i+j; cout<<i; i++; }

  47. Câu lệnh continue • Sử dụng trong thân cấu trúc lặp. • Khi gặp lệnh continue thì chương trình sẽ kết thúc việc lặp của vòng lặp hiện tại, nhưng không phải toàn bộ vòng lặp • Bỏ qua việc thực hiện các lệnh trong thân lặp nằm sau lệnh continue và chuẩn bị cho vòng lặp tiếp theo.

  48. Câu lệnh continue Ví dụ : Xét đoạn chương trình int i=0; for ( ; i<=9; i++) if (i==5) continue; else cout<<i;

  49. BÀI THỰC HÀNH • Viết chương trình giải phương trình bậc 2 ax2 + bx + c=0. với các hệ số a, b, c được nhập vào từ bàn phím (a khác 0) • Viết chương trình nhập vào tháng và năm bất kỳ. Sau đó hiển thị số ngày của tháng đó. Với: + Tháng 2: • - Năm nhuận có 29 ngày • - Năm không nhuận có 28 ngày • + Năm nhuận là năm: • - Chia hết cho 4 nhưng không chia hết cho 100 • - Hoặc chia hết cho 400

  50. BÀI THỰC HÀNH 3. Viết chương trình tính n! với n nguyên dương được nhập vào từ bàn phím 4. Viết chương trình tính tổng các số nguyên dương chẵn <= n với n bất kỳ được nhập vào từ bàn phím 5. Viết chương trình giải và biện luận hệ phương trình bậc nhất sau: ax + by = c dx + ey = f

More Related