2.1 Giới thiệu một số câu trúc điều khiển Thursday, September 21, 2017 7:00 PM Được cắt từ: https://cpp.daynhauhoc.com/2/1-gioi-thieu-mot-so-cau- truc-dieu-khien/ Chào các bạn! Rất vui khi được gặp lại các bạn trong khóa học lập trình trực tuyến ngôn ngữ C++
Như chúng ta đã tìm hiểu, khi chạy một chương trình C++, CPU bắt đầu thực thi các câu lệnh tại điểm trên cùng của hàm main, thực hiện lần lượt
các câu lệnh từ trên xuống dưới, và kết thúc tại điểm dưới cùng của hàm main Chuỗi các câu lệnh được CPU thực thi gọi là program's path Phan lớn các chương trình mà bạn từng thấy được thực thi theo dạng straight- line (tuần tự từ trên xuống dưới) Tuy nhiên, trong một số trường hợp, đây không phải là điêu chúng ta muốn
Ví dụ nếu chúng ta yêu cầu người dùng đưa ra một lựa chọn, và người dùng nhập vào lựa chọn không phù hợp, chúng ta nên yêu cầu người dùng đưa ra một lựa chọn khác Với cấu trúc chương trình dạng straight- line, điêu này là bất khả thi
Một trường hợp khác, chúng ta muốn chương trình thực hiện lặp đi lặp lại một công việc nào đó với số lần thực hiện chưa biết trước Ví dụ chúng ta
muốn in ra điểm số của một trò chơi trên màn hình cho đến khi trò chơi kết thúc, chúng ta không thể biết chính xác thời điểm kết thúc trò chơi là
khi nào
Do đó, ngôn ngữ C++ cung cấp các cấu trúc điều khiển (control flow statements) nó cho phép lập trình viên thay đổi hướng đi của chương
trình Có một số dạng cấu trúc điều khiển khác nhau và mình sẽ giới thiệu
sơ lược để các bạn có sự hình dung ban đầu
Halt
Cấu trúc điều khiển dừng (halt) là một cấu trúc thường gặp, nó yêu cầu chương trình ngừng làm việc ngay lập tức Trong C++, cấu trúc Halt có
thể được thực hiện thông qua hàm exit() trong thư viện cstdlib Hàm
Trang 2exit(-1); //Terminate and return -1 to operating system cout << "This line will never be printed out." << endl;
system("pause"); return 0;
}
Jumps
Cấu trúc điều khiển tiếp theo mình muốn đề cập đến là Jump Cấu trúc Jump không điều kiện khiến CPU nhảy đến thực thi một số các câu lệnh
khác goto, break, continue là các từ khóa được sử dụng trong cấu trúc
Jump, chúng có kiểu Jump khác nhau, chúng ta sẽ được tìm hiểu chỉ tiết trong các bài học sắp tới
Cấu trúc rẽ nhánh có điều kiện
Cấu trúc rẽ nhánh có điều kiện khiến chương trình thay đổi hướng thực thi dựa trên giá trị của biểu thức điều kiện (hoặc các mệnh đề) Tiêu biểu cho cấu trúc rẽ nhánh là câu lệnh ïf int main() { //do A if(expression) //do B; else //do C; //do D return 0; }
Chương trình này có 2 hướng có thể đi Nếu biểu thức expression cho kết quả đúng (true), chương trình sẽ thực thi A rồi đến B và đến D Nếu biểu
thức expression cho kết quả sai (false), chương trình sẽ đi theo hướng A đến C rồi đến D Cấu trúc này không còn dạng straight-line nữa mà là dạng cấu trúc ré nhanh (conditional branches)
Cau truc vong lap (Loops)
Một cấu trúc vòng lặp khiến chương trình thực hiện lặp đi lặp lại một chuỗi các câu lệnh cho đến khi không còn thốa mãn một điều kiện nào đó int main() { //do A //do B @ or more times //do C }
Chương trình này có thể thực hiện theo hướng ABC, ABBC, ABBBC,
Trang 3không phải là straight-line program, hướng thực thi các câu lệnh phụ thuộc vào số lần các câu lệnh trong vòng lặp được thực thi
while, do while, for là 3 cấu trúc vòng lặp mà ngôn ngữ C/C++ cung cấp Chuẩn C++11 còn cung cấp cho chúng ta thêm cấu trúc vòng lặp tên là for each
Exceptions
Cuối cùng, exceptions là một cơ chế xử lý lỗi xảy ra bên trong hàm Nếu một lỗi xảy ra bên trong hàm mà hàm không thể xử lý, hàm đó ném ra một ngoại lệ (exception) Điêu này khiến chương trình nhảy đến khối lệnh
chuyên dùng để xử lý ngoại lệ có kiểu tương ứng với ngoại lệ được hàm
ném ra
Xử lý ngoại lệ là một đặc trưng khá mới được hổ trợ trong ngôn ngữ C++
Kết luận