T IN ĐẠI CƯƠNG

Bài 4: CÁC CẤU TRÚC ĐIỀU KHIỂN

Ths. Nguyễn Thị Phương Thảo

Trường Đại học Thủy Lợi

1

Bộ môn Kỹ thuật máy tính và mạng, Khoa CNTT

Các cấu trúc điều khiển

 Cấu trúc tuần tự

 Cấu trúc rẽ nhánh

 Cấu trúc lặp

 Từ khoá break và continue

3

Cấu trúc tuần tự

Các lệnh được lần lượt thực hiện Tất cả các chương trình học đến thời điểm này đều theo cấu trúc tuần tự

Câu lệnh rẽ nhánh

Câu lệnh IF

đúng

Điều kiện

sai

Công việc

Cú pháp : if (<điều kiện>) {

}

Quá trình thực hiện

1.Kiểm tra <điều kiện> (biểu thức logic).

Nếu sai : bỏ qua

2.Thực hiện (một lệnh hoặc

khối lệnh)

Câu lệnh IF-ELSE

Cú pháp: if (<điều kiện>) {

đúng

Điều kiện sai

} else {

Công việc 1

Công việc 2

}

Quá trình thực hiện

1.Kiểm tra <điều kiện>. Nếu sai : chuyển đến bước 3

2.Thực hiện và bỏ qua bước 3

3.Thực hiện

Bài tập

1. Nhập vào một số n từ bàn phím và kiểm tra xem

n có là số chẵn. In câu trả lời ra màn hình

2. Viết chương trình nhập vào 3 số thực. In ra màn

hình số lớn nhất trong 3 số

3. Viết chương trình tính và in ra màn hình giá trị

biểu thức sau:

𝑥 + 1 3𝑥

Với x là số nguyên được nhập từ bàn phím

Câu lệnh SWITCH

 Cú pháp switch() {

break ; break ;

break ;

case : ; case : ; . . . case : ; default : ;

}

 Chú ý

- phải có kiểu nguyên hoặc kí tự

- Không được phép quên lệnh break đằng sau mỗi !

- Không bắt buộc phải có default

- Có thể gom nhiều để thực hiện một

Ví dụ

Viết chương trình C++ để nhập số nguyên

dương n và in ra số dư của phép chia n cho

4:

Ví dụ nhập n=13, In ra màn hình dòng

13 chia 4 dư 1

Bài 1

Ví dụ

Bài 2

Viết chương trình nhập vào 1 ký tự (A,B, C,

D, F), hiển thị kết quả điểm đạt của bạn (4,

3, 2, 1, 0) tương ứng với ký tự nhập vào.

Các trường hợp khác ghi “Không phải

điểm trong thang điểm 4”.

Bài 2

Bài 2: xử lý khi nhập ký tự in thường

Bài 2: xử lý khi nhập ký tự in thường

Cấu trúc lặp

120 sinh viên lớp N03 và tính điểm trung bình của lớp.

 Ví dụ : Nhập dữ liệu điểm môn Tin học đại cương cho

- Khai báo 120 biến để lưu điểm của 120 sinh viên

- Viết 120 lần lệnh nhập dữ liệu

- Viết 120 lần lệnh cộng các biến

 Vấn đề : chương trình quá dài, nhàm chán, rất dễ

Nếu dùng cấu trúc tuần tự :

→ Giải pháp : sử dụng cấu trúc lặp, làm lặp đi lặp lại công

phát sinh lỗi, không tổng quát hóa

14

việc nào đó cho đến khi thỏa mãn một điều kiện

Cấu trúc lặp

- lặp sử dụng biến đếm (biết trước số lần lặp), ví dụ : nhập điểm

của 120 sinh viên

- lặp sử dụng điều kiện dừng, ví dụ : nhập mật khẩu cho đến khi

nhập đúng

 Có hai kiểu lặp thông dụng

 Tương ứng với những kiểu lặp này, C++ cung cấp các

15

lệnh lặp for, while và do-while

Vòng lặp FOR

Khởi tạo

Cú pháp : for ( ; <điều kiện> ; ) {

sai

}

Điều kiện

đúng

Quá trình thực hiện

1. : gán giá trị ban đầu cho biến điều

khiển

công việệc

2. Kiểm tra <điều kiện> (biểu thức logic). Nếu sai :

dừng lặp

thay đổi

3. Thực hiện (một lệnh hoặc khối lệnh)

4. Thực hiện (tăng hoặc giảm giá trị

biến điều khiển)

5. Quay về bước 2

for (int a=10; a>=0; a--) { công việc} Hoặc for (int a=0; a<=10; a++) {công việc}

16

Ví dụ: đoạn chương trình sau thực hiện công việc gì

2. Vòng lặp FOR

. . .

vòng lặp, không in -1 ra màn hình

18

 Khởi gán a = 10 ; 10 có >= 0 không ? → có → in ra 10  Bớt a đi 1 → a = 9 ; 9 có >= 0 không ? → có → in ra 9   Bớt a đi 1 → a = 0 ; 0 có >= 0 không ? → có → in ra 0  Bớt a đi 1 → a = -1 ; -1 có >= 0 không ? → không → dừng

Ví dụ

Nhập vào một số nguyên

dương n, tính tổng các số

nguyên dương nhỏ hơn n.

Vòng lặp FOR : ví dụ

//tính tổng các số nguyên từ 10 đến 20 for (int i = 10, tong = 0 ; i <= 20 ; i++) {

tong = tong + i ;

} //vòng lặp này làm gì ? for (int i = 10, tich = 1 ; i <= 20 ; i = i+2) {

tich = tich * i ;

}

20

3. Vòng lặp WHILE

Cú pháp :

while (<điều kiện>)

{

sai

Điều kiện

đúng

}

công việc

Quá trình thực hiện

1. Kiểm tra <điều kiện>. Nếu sai : dừng lặp

2. Thực hiện

3. Quay về bước 1

21

Vòng lặp WHILE

 Vòng lặp While được dùng khi không biết chính xác số lần

lặp, chỉ biết điều kiện dừng

 Chú ý khởi tạo các biến cần thiết trước khi vào vòng lặp

lần nào nếubiểuthức <điều kiện> sai ngay từ đầu

 Các lệnh trong khối có thể không được thực hiện

đến giá trị của biểu thức <điều kiện>, làm cho biểu thức

 Trong thường có ít nhất một lệnh ảnh hưởng

<điều kiện> đang đúng trở thành sai

22

 Lỗi hay gặp: vòng lặp vô hạn

Vòng lặp WHILE - ví dụ

int a = 10; while (a > = 0) {

cout << a << endl; a− − ; }

 Khởi tạo giá trị của abằng10

1. In ra màn hình giá trị của a

2. Bớt a đi 1, lệnh này ảnh hưởng đến giá trị của biểu thức <điều kiện>

23

 Khi a vẫn còn lớn hơn hoặc bằng 0 thì làm công việc sau

Vòng lặp WHILE - ví dụ

 Vòng lặp vô hạn int a = 10; while (a > = 0)

{ cout << a << endl; }

 Chương trình sau đây làm gì ? int a = n-1 ;

}

24

while ( (n % a) != 0 ) { a = a - 1;

Ví dụ

Viết chương trình nhập vào số nguyên dương N. Yêu cầu nhập lại nếu N <=0. In ra màn hình các số dương chia hết cho 4 nhỏ hơn N.

Ví dụ

4. Vòng lặp DO-WHILE

Cú pháp : do {

công việcc

} while (<điều kiện>) ;

đúng

Quá trình thực hiện

Điều kiện

1. Thực hiện

sai

2. Kiểm tra <điều kiện>. Nếu sai: dừng lặp

3. Quay về bước 1

27

Khác nhau giữa DO-WHILE và WHILE

 DO-WHILE: làm trước, kiểm tra điều kiện dừng sau,

do đó được thực hiện ít nhất 1 lần

28

 WHILE: kiểm tra điều kiện dừng trước, làm sau

Khác nhau giữa DO-WHILE và WHILE

 DO-WHILE: làm trước, kiểm tra điều kiện dừng sau,

do đó được thực hiện ít nhất 1 lần

Cú pháp :

while (<điều kiện>)

Cú pháp : do {

{

} while (<điều kiện>) ;

}

29

 WHILE: kiểm tra điều kiện dừng trước, làm sau

Vòng lặp DO-WHILE – Làm lại ví dụ trên

30

5. Từ khoá break và continue

◮ break: được dùng khi cần thoát khỏi vòng lặp

◮ continue: được dùng khi cần dừng bước lặp

hiện tại để tiếp tục bước lặp mới

31

6. Bài tập

Bài 1

Nhập vào số nguyên dương n. Tính tổng các số từ 0 đến n.

trúc lặp khác nhau : do-while, while, for.

Viết ba hàm cùng làm công việc trên nhưng sử dụng các cấu

Nhập vào số nguyên dương n. Tính giá trị của biểu thức

Bài 2

X = 1 + 1/2 + 1/3 +. . . + 1/n.

Bài 3

Nhập các số thực từ bàn phím cho đến khi tổng của chúng lớn

32

hơn hoặc bằng 100 thì dừng.