Professional Documents
Culture Documents
Chapter 3
Chapter 3
1
ThS. Nguyễn Văn Tiến
Nội dung
4. Lệnh break/continue
2
Cấu trúc lệnh tuần tự
Cấu trúc lệnh tuần tự được xây dựng trong C/C++. Trừ khi có hướng dẫn
khác, các câu lệnh C/C++ thực hiện lần lượt từng câu lệnh theo thứ tự mà
chúng được viết.
Lệnh 1
Lệnh 2
Lệnh 3
3
Cấu trúc lệnh rẽ nhánh
C cung cấp ba loại lựa chọn. Câu lệnh lựa chọn if thực hiện (chọn) một
hành động nếu điều kiện là đúng hoặc bỏ qua hành động nếu điều kiện
sai.
Trong ( ), cho kết quả
(false = 0, true ≠ 0)
Điều kiện? F if (<điều kiện>)
<Lệnh 1>;
T Lệnh đơn hoặc khối lệnh
Lệnh 1 (nằm giữa { và })
4
Cấu trúc lệnh rẽ nhánh
int main()
{
if (a == 0)
printf(“a bang 0”);
if (a == 0)
{
printf(“a bang 0”);
a = 2912;
}
}
5
Cấu trúc lệnh rẽ nhánh
Câu lệnh lựa chọn if...else thực hiện một hành động nếu điều kiện đúng
hoặc thực hiện một hành động khác nếu điều kiện sai.
Trong ( ), cho kết quả
(false = 0, true ≠ 0)
F if (<điều kiện>)
Điều kiện? Lệnh 2
<Lệnh 1>;
Lệnh đơn hoặc khối lệnh
T else (nằm giữa { và })
Lệnh 1 <Lệnh 2>;
6
Cấu trúc lệnh rẽ nhánh
int main(){
if (a == 0)
printf(“a bang 0”);
else
printf(“a khac 0”);
if (a == 0){
printf(“a bang 0”);
a = 2912;
}
else
printf(“a khac 0”);
}
7
Cấu trúc lệnh rẽ nhánh
Câu lệnh if có thể lồng vào nhau và else sẽ tương ứng với if gần nó nhất.
if (a != 0)
if (b > 0)
printf(“a != 0 va b > 0”);
else
printf(“a != 0 va b <= 0”);
if (a !=0){
if (b > 0)
printf(“a != 0 va b > 0”);
else
printf(“a != 0 va b <= 0”);
}
8
Cấu trúc lệnh rẽ nhánh
if (delta < 0)
printf(“PT vo nghiem”);
else // delta >= 0
if (delta == 0)
printf(“PT co nghiem kep”);
else
printf(“PT co 2 nghiem”);
9
Cấu trúc lệnh rẽ nhánh
if (a != 0);
printf(“a khac 0.”);
if (a != 0){
};
printf(“a khac 0.”);
}
10
Cấu trúc lệnh rẽ nhánh
Câu lệnh switch case thực hiện một trong nhiều hành động khác nhau,
tùy thuộc vào giá trị của một biểu thức số nguyên.
11
Cấu trúc lệnh rẽ nhánh
int main(){
int a;
printf(“Nhap a: ”);
scanf(“%d”, &a);
switch (a)
{
case 1 : printf(“Mot”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
}
}
12
Cấu trúc lệnh rẽ nhánh
switch (<Biến/BT>)
<Biến/BT> Đ
= <GT1>
<Lệnh 1> {
S <GT1>:<Lệnh 1>;break;
<Biến/BT> Đ
<Lệnh 2>
<GT2>:<Lệnh 2>;break;
= <GT2>
…
S
default:
<Lệnh n>;
<Lệnh n>
}
13
Cấu trúc lệnh rẽ nhánh
int main(){
int a;
printf(“Nhap a: ”);
scanf(“%d”, &a);
switch (a)
{
case 1 : printf(“Mot”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
default : printf(“Ko biet doc”);
}
}
14
Cấu trúc lệnh rẽ nhánh
Câu lệnh switch là một câu lệnh đơn và có thể lồng nhau.
{
switch (a)
{
case 1 : printf(“Mot”); break;
case 2 : switch (b)
{
case 1 : printf(“A”); break;
case 2 : printf(“B”); break;
} break;
case 3 : printf(“Ba”); break;
default : printf(“Khong biet doc”);
}
}
15
Cấu trúc lệnh rẽ nhánh
Các giá trị trong mỗi trường hợp phải khác nhau.
switch (a){
case 1 : printf(“Mot”); break;
case 1 : printf(“MOT”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
case 1 : printf(“1”); break;
case 1 : printf(“mot”); break;
default : printf(“Khong biet doc”);
}
16
Cấu trúc lệnh rẽ nhánh
switch sẽ nhảy đến case tương ứng và thực hiện đến khi nào gặp break
hoặc cuối switch sẽ kết thúc.
switch (a)
{
case 1 : printf(“Mot”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
}
17
Cấu trúc lệnh rẽ nhánh
switch sẽ nhảy đến case tương ứng và thực hiện đến khi nào gặp break
hoặc cuối switch sẽ kết thúc.
switch (a){
case 1 : printf(“Mot”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
}
switch (a){
case 1 : printf(“Mot”); break;
case 2 : printf(“Hai”); break;
case 3 : printf(“Ba”); break;
}
18
Cấu trúc lệnh rẽ nhánh
19
Cấu trúc lệnh rẽ nhánh
if (a == 1) switch (a)
printf(“Mot”); {
if (a == 2) case 1: printf(“Mot”);
printf(“Hai”); break;
if (a == 3) case 2: printf(“Hai”);
printf(“Ba”); break;
if (a == 4) case 3: printf(“Ba”);
printf(“Bon”); break;
if (a == 5) case 4: printf(“Bon”);
printf(“Nam”); break;
case 5: printf(“Nam”);
}
20
Cấu trúc lệnh rẽ nhánh
21
Cấu trúc lệnh lặp
22
Cấu trúc lệnh lặp
C cung cấp ba loại câu lệnh lặp (loop statements) cho phép các chương
trình thực hiện các câu lệnh lặp đi lặp lại miễn là điều kiện vẫn đúng. Các
câu lệnh lặp lại là các câu lệnh while, do...while và for
23
Cấu trúc lệnh lặp
Vòng lặp for là một cấu trúc điều khiển lặp lại cho phép chúng ta viết
một vòng lặp được thực hiện trong một số lần cụ thể.
Vòng lặp cho phép chúng ta thực hiện n số Khởi tạo
Bước nhảy
của các bước với nhau trong một dòng.
T
Điều kiện lặp Câu lệnh
int main()
{
int i;
for (i = 0; i < 10; i++)
printf(“%d\n”, i);
for (int j = 0; j < 10; j = j + 1)
printf(“%d\n”, j);
for (int k = 0; k < 10; k += 2){
printf(“%d”, k);
printf(“\n”);
}
}
25
Cấu trúc lệnh lặp
Câu lệnh FOR là một câu lệnh đơn và có thể lồng nhau.
if (n < 10 && m < 20){
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
printf(“%d”, i + j);
printf(“\n”);
}
}
}
26
Cấu trúc lệnh lặp
Vòng lặp while được sử dụng trong trường hợp chúng ta không biết
trước chính xác số lần lặp của vòng lặp. Việc thực hiện vòng lặp được kết
thúc trên cơ sở điều kiện. Các vòng lặp được sử dụng khi chúng ta cần
thực hiện lặp đi lặp lại một khối lệnh.
27
Cấu trúc lệnh lặp
28
Cấu trúc lệnh lặp
int i = 0;
while (i < 10){
printf(“%d\n”, i);
i++;
}
int i = 0;
for (; i < 10; ){
printf(“%d\n”, i);
i++;
}
29
Cấu trúc lệnh lặp
Câu lệnh while là một câu lệnh đơn và có thể lồng nhau.
if (n < 10 && m < 20){
while (n >= 1){
while (m >= 1){
printf(“%d”, m);
m--;
}
n--;
}
}
30
Cấu trúc lệnh lặp
Câu lệnh while có thể không thực hiện lần nào do điều kiện lặp ngay từ
lần đầu đã không thỏa mãn.
int main(){
int n = 1;
while (n > 10){
printf(“%d\n”, n);
n--;
}
…
}
31
Cấu trúc lệnh lặp
n = 1;
while (n < 10)
printf(“%d”, n);
}
32
Cấu trúc lệnh lặp
Giống như while, việc thực hiện vòng lặp do-while cũng bị chấm dứt
trên cơ sở một điều kiện. Sự khác biệt chính giữa vòng lặp do-while và
vòng lặp while là trong vòng lặp do-while, điều kiện được kiểm tra ở
cuối vòng lặp
33
Cấu trúc lệnh lặp
T
Điều kiện
lặp
F Lệnh đơn hoặc khối lệnh
do (nằm giữa { và })
<Câu lệnh>; là biểu thức bất kỳ,
while (<Điều kiện lặp>); thường là biểu thức quan hệ
cho kết quả
0 (false) và != 0 (true)
34
Cấu trúc lệnh lặp
int i = 0;
do{
printf(“%d\n”, i);
i++;
}
while (i < 10);
int i = 0;
printf(“%d\n”, i);
i++;
for (; i < 10; ){
printf(“%d\n”, i);
i++;
}
35
Cấu trúc lệnh lặp
Câu lệnh do… while sẽ được thực hiện ít nhất 1 lần do điều kiện lặp được
kiểm tra ở cuối.
int main(){
int n;
do{
printf(“Nhap n: ”);
scanf(“%d”, &n);
}
while (n < 1 || n > 100);
}
36
Lệnh break/continue
• Lệnh break trong C hoặc C++ là câu lệnh điều khiển vòng lặp được sử
dụng để kết thúc vòng lặp
• Lệnh continue cũng là một câu lệnh điều khiển vòng lặp giống như câu
lệnh break. câu lệnh continue ngược với câu lệnh break, thay vì kết thúc
vòng lặp, nó bắt buộc thực hiện lần lặp tiếp theo của vòng lặp.
37
Lệnh break/continue
Ví dụ
for (i = 0; i < 10; i++){
if (i % 2 == 0)
break;
printf(“%d\n”, i);
}
Ví dụ
while (x != y) {
…
if (x==a) continue;
b+=6;
…
if (y==b) break;
…
}
39
THANK YOU FOR YOUR ATTENTION!
40