Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Chapter 4: CẤU TRÚC ĐIỀU KHIỂN

1
NỘI DUNG

1 4.1. CẤU TRÚC LỆNH RẼ NHÁNH

2 4.2 CẤU TRÚC VÒNG LẶP

3 4.3. CÁC CẤU TRÚC LỆNH

2
4.1. Cấu trúc rẽ nhánh
4.1.1 Cấu trúc rẽ nhánh dạng if
4.1.2 Cấu trúc rẽ nhánh if – else
4.1.3 Cấu trúc rẽ nhánh if – elseif – else
4.2. Cấu trúc vòng lặp
4.2.1 Cấu trúc vòng lặp do…while
4.2.2 Cấu trúc vòng lặp while
4.2.3 Cấu trúc vòng lặp for
4.3. Các cấu trúc lệnh
4.3.1 Lệnh switch case
4.3.2 Lệnh rẽ nhánh break
4.3.3 Lệnh continua và goto

3
4.1. CẤU TRÚC LỆNH RẼ NHÁNH
4.1.1. Cấu trúc rẽ nhánh if START
Cú pháp:
if(condition)
{ condition N
statements; !=0?

Y
}
statements;
Giải thích: Kiểm tra điều_kiện
thỏa thì thực hiện các lệnh.
next statements;

4
4.1.2. Cấu trúc rẽ nhánh if và else
Cú pháp:

5
4.1.3. Cấu trúc rẽ nhánh if – else if - else
Cú pháp:
if(điều_kiện)
{ statements 1;

}
else if
{ statements 2;

}
else
statements 3;

6
 LƯU ĐỒ

START

N N
BT1 !=0 ? BT2 !=0 ? BT3 !=0 ?

Y Y Y

KHỐI LỆNH a KHỐI LỆNH b KHỐI LỆNH c

7
4.2. CẤU TRÚC VÒNG LẶP
4.2.1. CẤU TRÚC VÒNG LẶP DO … WHILE

Cú pháp:
do
{
statements;
}
while(condition);

8
Giải thích:

Thực hiện khối lệnh (statements) trước. Sau đó kiểm tra


điều_kiện.

Nếu điều_kiện True (condition!=0) thì thực hiện khối


lệnh tiếp tục, sau đó kiểm tra điều_kiện tiếp…

Nếu điều_kiện False (condition=0) thì thoát khỏi vòng


lặp do … while và thực hiện khối lệnh kế (Next
Statements).

9
 Lưu đồ:

START

statements;

Y
condition!=0?;

next statements;

END

10
Example 4.1:
Cho chương trình sau. Tìm các giá trị X
#include<stdio.h>
#include<conio.h>
void main()
{
int X=10;
printf(“---TINH GIA TRI X---\n”);
do
{
X=X-2; //X=8, X=6, X=4
printf(“GIA TRI X= %d”, X);

}
while(X>=6);
getch();
} KQ: X=4

11
Example 4.2

Viết chương trình nhập 3 số nguyên a, b, n với


a, b > n. Xuất tổng của 3 số vừa nhập?

12
Solution
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,n,S;
printf(“---TINH TONG S---\n”);
do
{
printf(“NHAP SO NGUYEN a= “);
scanf(“%d”, &a);
printf(“NHAP SO NGUYEN b= “);
scanf(“%d”, &b);
printf(“NHAP SO NGUYEN n= “);
scanf(“%d”, &n);
}
while(a<=n || b<=n);
S=a+b+n;
printf(“TONG S= %d”, S);
getch();
KQ: S=24
}

13
4.2.2. CẤU TRÚC VÒNG LẶP WHILE

Cú pháp:
while(condition)
{
statements;
}

14
Giải thích:

Kiểm tra điều_kiện nếu điều_kiện True


(condition!=0) thì thực hiện khối lệnh
(statements).

 Có dữ liệu mới, so sánh với điều_kiện nếu


điều_kiện còn True thì thực hiện khối lệnh tiếp
theo

Thực hiện khối lệnh (statemants) cho đến khi


điều_kiện False (condition=0) thì thoát khỏi vòng
lặp while và thực hiện khối lệnh(next statements)

15
Lưu đồ

START

N
condition!=0?

Next Statemants; statements;

END

16
Example 4.3
Viết chương trình tính tổng các số từ 1 ->8.
#include<stdio.h>
#include<conio.h>
void main()
{
int n=1,S=0;
printf(“TINH TONG CUA DAY SO TU 1 -> 10”)
while(n<8)
{
S+=n; //1, 3, 6, 10, 15, 21, 28

n++; //2, 3, 4, 5, 6, 7, 8
}
printf(“TONG CUA DAY SO TU 1 -> 10 S= %d”,S);
getch();
KQ: S=28
}

17
Example 4.4
Cho chương trình sau. Tìm các giá trị n,X,Y,Z.
#include<stdio.h>
#include<conio.h>
void main()
{
int n=3;
printf(“TINH GIA TRI n,X,Y,Z \n”);
while(n>10)
{
printf(“n= %d \n”, n);
n--;
}
n++;
X=n +5;
Y=X-3;
printf(“n= %d \n”, n)
printf(“X= %d \n”, X)
printf(“Y= %d \n”, Y)
getch();
}

18
4.2.3 CẤU TRÚC VÒNG LẶP FOR

Cú pháp:
for(initialization; condition; increase)
{
statements;
}

19
Giải thích

Giá trị ban đầu so sánh với điều_kiện, nếu


điều_kiện đúng (condition!=0) thì thực hiện khối
lệnh.

Tăng giá trị lên và kiểm tra điều_kiện, nếu


điều_kiện còn đúng (condition!=0) thì thực hiện
khối lệnh tiếp…

Kiểm tra điều_kiện cho đến khi không đúng


(condition=0) thì thoát khỏi vòng lặp for và thực
hiện khối lệnh kế.

20
Lưu đồ

START

initialization;

N
condition!=0?

statements; next statements;

increase;

21
Example 4.5
Cho chương trình sau. Tìm các giá trị X và số lần lặp n.
#include<stdio.h>
#include<conio.h>
unsigned int n,X=1;
void main()
{
for(n=0;n<=4;n++)
{ //3, 5, 7, 9, 11
X=X+2; //8, 10, 12, 14, 16
Y=X+5;
}
}

KQ: X=11,Y=16,n=5

22
4.3. CÁC CẤU TÚC LỆNH
4.3.1. Lệnh switch case
Cú pháp:

23
Example 4.6
switch (z) //make decision
{
case(0):
{
P0=‘0’; break; //send ASCII 0
}
case(1):
{
P0=‘1’; break; //send ASCII 1
}
case(2):
{
P0=‘2’; break; //send ASCII 2
}
}

24
4.3.2. Lệnh break

 break: thoát khỏi vòng lặp,gặp lệnh break trong


vòng lặp, CT thoát khỏi vòng lặp và chỉ đến câu lệnh
liền sau nó;

 Nếu nhiều vòng lặp, break thoát khỏi vòng lặp gần
nhất (switch-case).

25
Example 4.7

26
4.3.3. Lệnh continue

 CT bỏ qua phần còn lại trong vòng lặp và tiếp


tục thực hiện lần lặp tiếp theo;

 for(bt1;bt2;bt3): biểu thức 3 tính giá trị và quay


lại biểu thức 2;

 while(bt_điều kiện),do…while(bt_điều kiện): biểu


thức điều kiện sẽ được kiểm tra và xem xét có
thể thực hiện <công việc> nữa hay không?(dựa
vào KQ ĐK)

27
Example 4.8

28
4.3.4. Lệnh goto (goto nhãn)

29

You might also like