MỤC LỤC
Một phần rất quan trọng trong một ngôn ngữ lập trình là các cấu trúc điều khiển. Trong Pascal ta đã làm quen với 3 loại cấu trúc điều khiển: Chọn, Rẽ nhánh, Lặp. Ta sẽ lần lợt xem xét các loại cấu trúc điều khiển đó trong ngôn ngữ C++.
Các lệnh if có thể lồng nhau theo nghĩa: Các câu lệnh bên trong một mệnh đề if lại có thể là các mệnh đề if. Trong trờng hợp có n khả năng lựa chọn, ta có thể sử dụng n-1 lệnh if đủ lồng nhau. VD: Viết chơng trình thực hiện việc nhập vào số tiền của khách hàng phải trả.
Nếu các khả năng là loại trừ nhau thì không khi đó có thể sử dụng các lệnh if lồng nhau hoặc có thể sử dụng n lệnh if rời nhau cho n khả. Trờng hợp ngợc lại, thì nhất thiết phải sử dụng các lệnh if rêi nhau. VD: Viết chơng trình nhập vào điểm tổng kết và xếp loại đạo đức của một sinh viên.
Đoạn trình trên sẽ cho kết quả sai trong trờng hợp sinh viên tổng kết >=9.0 và đạo đức tốt. Lý do là sử dụng hai lệnh if lồng nhau khi các khả năng không loại trừ nhau.
Nếu có thành phần [default:], thực hiện <lệnh mặc định> khi biến nguyên không nhận giá trị nào trong các giá trị trên. Nếu có thành phần này, <Lệnh mặc định> sẽ đợc đợc thực hiện sau khi tất cả các trờng hợp case đều không thỏa mãn. VD2: Viết chơng trình nhập vào mã học vị (là một số nguyên) của một nhân viên.
Với cấu trúc rẽ nhánh, các biến trong biểu thức điều kiện có thể có kiểu bất kỳ. Ngợc lại, với cấu trúc chọn, chỉ lựa chọn các trờng hợp của biến nguyên. Do vậy, việc chuyển đổi từ cấu trúc chọn sang cấu trúc rẽ nhánh bao giờ cũng thực hiện đợc, điều ngợc lại không đúng.
Để chuyển đổi một cấu trúc rẽ nhánh mà biểu thức điều kiện có các biến không phải kiểu nguyên sang cấu trúc chọn cần sử dụng thêm một biến nguyên để mã hoá các trờng hợp của nó, sau đó ta áp dụng cấu trúc chọn trên biến nguyên này.
Khi gặp lệnh break; trong thân vòng for, chơng trình sẽ lập tức thoát khỏi vòng lặp for và chuyển tới lệnh tiếp theo bất kể <Biểu thức 2>. Cần chú ý trong trờng hợp 2 lệnh for lồng nhau, khi đó lệnh break chỉ làm cho chơng trình thoát khỏi vòng for gần nhất chứa lệnh break. Vì độ phức tạp của chơng trình tỷ lệ thuận với số lệnh goto sử dụng trong chơng trình, vì vậy nên hạn chế sử dụng goto.
Nhận xét: Các biểu thức 1, 2, 3 trong cú pháp của vòng for có thể bao gồm một dãy các biểu thức con, cách nhay bởi dấu phảy. VD2: Viết chơng trình nhập vào điểm đạo đức của một học sinh (thang điểm 100, nguyên) và số ngày đi học muộn của học sinh đó. Lặp kiểm tra điều kiện sau: Tơng tự nh vòng lặp kiểm tra điều kiện trớc, chỉ khác ở chỗ biểu thức điều kiện đợc kiểm tra mỗi khi đã.
Từ vòng lặp xác định (for), ta có thể chuyển sang vòng lặp không xác định (while hoặc do/ while) bằng cách sử dụng thêm một biến đếm kiểu nguyên trong thân vòng lặp không xác định. Khi đó bắt buộc phải sử dụng lệnh break và goto trong thân vòng for để thoát cỡng bức.
Toàn bộ thuật toán đợc thể hiện trong một đoạn mã từ trên xuống d- ới. + Các đoạn m có thể lặp đi lặp lại, chã ơng trình dài không cần thiết. - Với cách 2: Chơng trình đợc chia nhỏ thành các đơn thể khắc phục đ- ợc hai nhợc điểm cơ bản trên.
Mỗi hàm thực thi một nhiệm vụ tơng đối độc lập, trong đó có một hàm main đóng vai trò nh chơng trình chính để sử dụng các hàm khác. Trong phạm vi môn học, ta chỉ xem xét các đơn thể dới dạng các hàm.
- Thân hàm: là nội dung chính của hàm, chứa toàn bộ các lệnh của hàm.
- Mỗi đối cần đi kèm với kiểu đối, mỗi cặp [kiểu đối] [tên đối] cách nhau bởi dấu phảy. - Nếu hàm có giá trị trả về thì cần có câu lệnh <return Biểu_thức> để gán giá trị của Biểu_Thức cho tên hàm. VD2: Viết hàm giải phơng trình bậc nhất với đối vào là hai hệ số a, b.
VD1: Viết chơng trình kiểm tra một số nguyên n có phải là số nguyên tố không, nếu n là số nguyên tố, hãy tính n!.