You are on page 1of 10

Ngôn ngữ lập trình C++

CHUYÊN ĐỀ NGÔN NGỮ LẬP TRÌNH C++


CHƯƠNG II. CÁC CÂU LỆNH ĐIỀU KHIỂN

§ 10. Cấu trúc rẽ nhánh


Để chương trình chỉ thực hiện một số câu lệnh trong trường hợp một điều kiện nào đó được thỏa
mãn, ta phải dùng cấu trúc rẽ nhánh.
1. Câu lệnh if dạng thiếu
Cấu trúc chung:
if (điều kiện)
<Câu lệnh hoặc khối lệnh>
Trong đó:
- Điều kiện là một biểu thức quan hệ hoặc một biểu thức logic đặt trong cặp dấu ngoặc đơn (), có
giá trị là true hoặc false. Điều kiện cũng có thể là một biểu thức số học, ngôn ngữ C++ sẽ tự
chuyển sang dạng logic bằng true nếu giá trị của biểu thức số học đó khác 0 và sang dạng logic
bằng false nếu giá trị của biểu thức bằng 0.
- Câu lệnh hoặc khối lệnh chỉ được thực hiện khi điều kiện có giá trị là true. Khối lệnh là một
dãy các lệnh được bao bởi cặp dấu ngoặc {}.
Ví dụ 1:
int x = 5;
if (x == 5)
cout<<“x bang 5”;
Với đoạn mã lệnh trên thì câu lệnh cout<<“x bang 5”; được thực thi, còn với đoạn mã sau thì lệnh
này không được thực thi:
int x = 5;
if (x > 5)
cout<<“x bang 5”;
Ví dụ 2:
int x=3, y=9;
if (x*x==y && y % 2==1)
{
cout<<“y = x binh Phuong”<<endl;
cout<<“y la so le”;
}
Với đoạn mã trên, vì x*x = 3*3=9 đồng thời y % 2= 9 % 2 = 1 nên biểu thức logic có giá trị là true,
do vậy khối lệnh tiếp theo sẽ được thực thi. Ngược lại, với đoạn mã dưới đây thì khối lệnh sẽ
không được thực thi:
int x=4, y=16;
if (x*x==y && y % 2==1)
{

THPT Tı̃nh Gia 2 Page 1


Ngôn ngữ lập trình C++

cout<<“y = x binh Phuong”<<endl;


cout<<“y la so le”;
}
2. Câu lệnh if dạng đủ
Cấu trúc chung:
if (điều kiện)
<Câu lệnh hoặc khối lệnh 1>
else
<Câu lệnh hoặc khối lệnh 2>
Trong đó:
- Điều kiện là một biểu thức quan hệ hoặc một biểu thức logic đặt trong cặp dấu ngoặc đơn (), có
giá trị là true hoặc false. Điều kiện cũng có thể là một biểu thức số học, ngôn ngữ C++ sẽ tự
chuyển sang dạng logic bằng true nếu giá trị của biểu thức số học đó khác 0 và sang dạng logic
bằng false nếu giá trị của biểu thức bằng 0.
- Câu lệnh hoặc khối lệnh 1 chỉ và chỉ được thực hiện khi điều kiện có giá trị là true.
- Câu lệnh hoặc khối lệnh 2 chỉ và chỉ được thực hiện khi điều kiện có giá trị là false.
- Nếu Câu lệnh hoặc khối lệnh 1 được đặt trong cặp dấu ngoặc {} thì trước else không được có
dấu ; ngược lại, nếu không có dấu ngoặc {} thì bắt buộc phải có dấu ; trước else.
Ví dụ 1:
if (delta >= 0)
cout<< “Phuong trinh co it nhat 1 nghiem”;
else
cout<<“Phuong trinh vo nghiem”;
Trong đoạn lệnh trên, nếu delta >=0 thì câu lệnh cout<< “Phuong trinh co it nhat 1 nghiem”;
sẽ được thực thi và câu lệnh cout<<“Phuong trinh vo nghiem”; sẽ không được thực thi. Ngược
lại, nếu delta <0 thì câu lệnh cout<<“Phuong trinh vo nghiem”; sẽ được thực thi và câu lệnh
cout<<“Phuong trinh co it nhat 1 nghiem”; sẽ không được thực thi.
Ví dụ 2:
if (delta >= 0)
{
float x1 = (-b + sqrt(delta))/ (2*a);
float x2 = (-b - sqrt(delta))/ (2*a);
cout<< “Phuong trinh co 2 nghiem la:”<<fixed<<setprecision(2)<<x1<<“ ”<<x2;
}
else
cout<<“Phuong trinh vo nghiem”;
Ví dụ 3:
if (delta > 0)
{
float x1 = (-b + sqrt(delta))/ (2*a);

THPT Tı̃nh Gia 2 Page 2


Ngôn ngữ lập trình C++

float x2 = (-b - sqrt(delta))/ (2*a);


cout<< “Phuong trinh co 2 nghiem la:”<<fixed<<setprecision(2)<<x1<<“ ”<<x2;
}
else
if (delta==0)
{
float x1 = (-b + sqrt(delta))/ (2*a);
cout<< “Phuong trinh co nghiem kep la:”<<fixed<<setprecision(2)<<x1;
}
else
cout<<“Phuong trinh vo nghiem”;
Sự lồng nhau của toán tử if: Cho phép sử dụng các toản tử if lồng nhau. Điều đó có nghĩa là: các khối
lệnh 1 và khối lệnh 2 lại có thể chứa các toán tử if khác. Trong trường hợp này nếu ta nên sử dụng các
dấu {} đóng mở khối lệnh để tránh gây ra sự hiểu nhầm.
Chú ý: Để chương trình rõ ràng, dễ kiểm tra và tránh nhầm lẫn, ta nên viết chương trình theo quy tắc
sau:
- Các câu lệnh và khối lệnh nằm trong một toán tử điều khiển thì viết thụt vào bên phải.
- Các câu lệnh và khối lệnh cùng cấp thì viết trên cùng một cột (thẳng cột).
- Điểm đầu và điểm cuối của một khối lệnh cũng thẳng cột.

THPT Tı̃nh Gia 2 Page 3


Ngôn ngữ lập trình C++

§ 11. Cấu trúc lặp


Cấu trúc lặp cho phép chương trình thực thi lặp đi lặp lại một lệnh hoặc một khối lệnh cho đến
khi thỏa mãn 1 điều kiện cụ thể.
1. Cấu trúc lặp for
Cấu trúc chung:
for ([<biểu thức 1>] ; [<điều kiện>]; [<biểu thức 2>])
<Câu lệnh hoặc khối lệnh;>
Trong đó:
- Biểu thức 1: là biểu thức khởi đầu (thường là biểu thức số học để gán giá trị cho biến chạy), sẽ
được thực thi một lần duy nhất khi vòng lặp bắt đầu.
- Điều kiện: là biểu thức cho giá trị logic (true hoặc false), nếu có giá trị bằng true thì câu lệnh
hoặc khối lệnh sẽ được thực thi, nếu không thì vòng lặp sẽ kết thúc.
- Biểu thức 2: là biểu thức sẽ được thực thi sau mỗi lần lặp, tức là sau mỗi lần câu lệnh hoặc
khối lệnh được thực hiện. Sau khi biểu thức 3 được thực thi thì điều kiện lại được kiểm tra và
quá trình lặp tiếp tục.
Sơ đồ khối mô tả hoạt động của cấu trúc lặp for:

Biểu thức 1

S
Điều kiện

Câu lệnh hoặc khối lệnh

Biểu thức 2

THPT Tı̃nh Gia 2 Page 4


Ngôn ngữ lập trình C++

Lưu ý:
Biểu thức 1, điều kiện, biểu thức 2 có thể có hoặc không nhưng bắt buộc phải có 2 dấu ;, nếu
không có điều kiện thì mặc định là điều kiện có giá trị true.
Ví dụ 1:
Chương trình sau sẽ đưa ra màn hình các số tự nhiên liên tiếp từ 1 đến 10:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i;
for (i=1;i<=10;i=i+1)
cout<<i<<" ";
}
Lưu ý:
- Ta có thể khai báo biến i ngay trong biểu thức 1 như sau:
for (int i=1;i<=10;i=i+1)
cout<<i<<" ";
- Lệnh gán i = i+1 thường được viết tắt là i++ hoặc ++i;
Ví dụ 2:
Chương trình sau sẽ đưa ra màn hình các số tự nhiên chẵn liên tiếp giảm dần từ 20 về 2:
#include <bits/stdc++.h>
using namespace std;
int main()
{
for (int i=20;i>=210;i--)
cout<<i<<" ";
}
2. Cấu trúc lặp while
Cấu trúc chung:
while (<điều kiện>)
câu lệnh hoặc khối lệnh;
Trong đó:
- Điều kiện: là một biểu thức cho giá trị logic (true hoặc false), nếu điều kiện cho giá trị true thì
câu lệnh hoặc khối lệnh; sẽ được thực hiện, nếu cho giá trị false thì vòng lặp kết thúc.
- Câu lệnh hoặc khối lệnh: được thực thi nếu điều kiện cho giá trị là true, sau mỗi lần thực thi
thì điều kiện lại được kiểm tra và quá trình lặp tiếp tục.

THPT Tı̃nh Gia 2 Page 5


Ngôn ngữ lập trình C++

Sơ đồ khối thể hiện cấu trúc lặp while:

S
Điều kiện

Câu lệnh hoặc khối lệnh

Ví dụ 1:
Chương trình đưa ra màn hình các số tự nhiên liên tiếp từ 1 đến 10:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i =1;
while (i<=10)
{
cout<<i<<" ";
i++;
}
}
Ví dụ 2:
Chương trình đưa ra màn hình các số tự nhiên chẵn liên tiếp giảm dần từ 20 về 2:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i =20;
while (i>=2)
{
cout<<i<<" ";
i-=2;
}
}
3. Cấu trúc lặp do … while
Cấu trúc chung:
do
câu lệnh hoặc khối lệnh;
while (<điều kiện>);

THPT Tı̃nh Gia 2 Page 6


Ngôn ngữ lập trình C++

Trong đó:
- Câu lệnh hoặc khối lệnh: được thực thi trước khi điều kiện được kiểm tra giá trị.
- Điều kiện: là một biểu thức cho giá trị logic (true hoặc false), nếu điều kiện cho giá trị true thì
câu lệnh hoặc khối lệnh; sẽ tiếp tục được thực hiện, nếu cho giá trị false thì vòng lặp kết thúc.
Sơ đồ khối thể hiện cấu trúc lặp do…while:

Câu lệnh hoặc khối lệnh

Đ S
Điều kiện

Ví dụ 1:
Chương trình đưa ra màn hình các số tự nhiên liên tiếp từ 1 đến 10:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i =1;
do
{
cout<<i<<" ";
i++;
}
while (i<=10);
}
Ví dụ 2:
Chương trình đưa ra màn hình các số tự nhiên chẵn liên tiếp giảm dần từ 20 về 2:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i =20;
do
{
cout<<i<<" ";
i-=2;
}
while (i>=2);
}

THPT Tı̃nh Gia 2 Page 7


Ngôn ngữ lập trình C++

4. Lệnh break
Sử dụng lệnh break để ta có thể thoát khỏi vòng lặp ngay lập tức mà không cần biết điều kiện kết
thúc đã thỏa mãn chưa. Lệnh này hữu ích khi chúng ta muốn vòng lặp kết thúc giữa chừng thay vì kết
thúc bình thường.
Ví dụ:
Chương trình sau đưa ra các số tự nhiên liên tiếp bắt đầu từ số n, cho đến khi gặp một số là bội của
m thì thôi (n,m được nhập từ bàn phím):
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin >>n>>m;
for (int i=n; ;i=i+1)
{
cout<<i<<" ";
if (i % m==0) break;
}
}
Hoặc sử dụng cấu trúc lặp while như sau:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin >>n>>m;
int i=n;
while (true)
{
cout<<i<<" ";
if (i % m==0) break;
i++;
}
}
5. Lệnh continue
Lệnh continue làm cho chương trình bỏ qua phần còn lại của khối lệnh để nhảy sang lần lặp tiếp
theo. Ví dụ sau đây đưa ra các số tự nhiên từ 1 đến 10 nhưng bỏ qua số 5:
#include <bits/stdc++.h>
using namespace std;

THPT Tı̃nh Gia 2 Page 8


Ngôn ngữ lập trình C++

int main()
{
for (int i=1; i<=10; i=i+1)
{
if (i ==5) continue;
cout<<i<<" ";
}
}

THPT Tı̃nh Gia 2 Page 9


Ngôn ngữ lập trình C++

Bài tập chương II

Bài 1. Viết chương trình nhập vào từ file “bai1.inp” ba số nguyên a, b, c. Tìm và thông báo số bé nhất,
lớn nhất của ba số trên, kết quả đưa ra file “bai1.out” theo quy cách số bé nhất rồi đến số lớn nhất, hai
số cách nhau 1 dấu cách.
Bài 2. Nhập 3 số a, b, c bất kì từ file “bai2.inp”. Hãy kiểm tra xem ba số đó có thể là độ dài ba cạnh
của một tam giác hay không? Nếu có thì đó là tam giác nhọn, vuông hay tù? Kết quả đưa ra file
“bai2.out”, nếu là tam giác thì ghi số 1, tiếp theo nếu là tam giác nhọn thì ghi số 1, vuông thì ghi số 2,
tù thì ghi số 3. Nếu không phải tam giác thì ghi 1 số -1.
Bài 3. Viết chương trình giải bất phương trình ax + b > 0 với a, b là hai số thực được nhập từ bàn
phím.
Bài 4. Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0 với a!=0. Các hệ số a, b, c nhập từ
file “bai4.inp”, kết quả ghi ra file “bai4.out” các nghiệm của phương trình, đưa ra dòng chữ NO
SOLUTION nếu phương trình vô nghiệm.
Bài 5. Viết chương trình nhập từ file “bai5.inp” số tự nhiên N, hãy đưa ra file “bai5.out” giá trị N!.
Bài 6. Viết chương trình đọc từ file “bai6.inp” số tự nhiên N (N<1018). Yêu cầu đưa ra file “bai6.out”
tổng các chữ số của N.
Bài 7. Nhập số tự nhiên n từ file “bai7.inp”. Hãy tính các giá trị sau:
a) 1+ + +…+
b) (1+ ) * (1+ ) *(1+ )*…*(1+ )
Kết quả ghi ra file “bai7.out”.
Bài 8. Viết chương trình đọc từ file “bai8.inp” số tự nhiên N (N<106). Yêu cầu đưa ra file “bai6.out”
số các số nguyên tố không lớn hơn N.
Bài 9. Viết chương trình đọc từ file “bai9.inp” số N ở dạng nhị phân (N không quá 10 chữ số). Yêu cầu
chuyển đổi số N sang dạng thập phân, kết quả đưa ra file “bai9.out”.
Bài 10. Viết chương trình đọc từ file “bai10.inp” 2 số tự nhiên N và M (N,M <=109). Yêu cầu đưa ra
file “bai10.out” ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số N và M.
Bài 11. Hai số tự nhiên a và b gọi là số bạn bè nếu tổng các ước của a (trừ 1 và chính nó) bằng b hoặc
ngược lại. Viết chương trình đọc 2 số a, b từ file “bai11.inp”, hãy kiểm tra xem a, b có phải là số bạn
bè không? Nếu đúng thì đưa ra số 1, sai thì đưa ra số -1, kết quả ghi ra file “bai11.out”.
Bài 12. Số hoàn hảo là số có tính chất tổng các ước của nó (trừ nó ra) bằng chính nó, ví dụ 6 là số hoàn
hảo vì 6 = 1+2+3, với 1, 2, 3 là ước của 6. Hãy viết chương trình đọc từ file “bai12.inp” số N, ghi ra
file “bai12.out” tất cả các số hoàn hảo trong phạm vi từ 1 đến N.

THPT Tı̃nh Gia 2 Page 10

You might also like