CÁC CẤU TRÚC ĐIỀU KHIỂN (Control Structures)

Preview:

DESCRIPTION

CÁC CẤU TRÚC ĐIỀU KHIỂN (Control Structures). CHƯƠNG 3. 1. Giới thiệu. Các cấu trúc điều khiển thứ tự thực thi các lệnh của chương trình. Có 3 loại cấu trúc điều khiển: Cấu trúc tuần tự (sequence) Cấu trúc lựa chọn (selection) Cấu trúc lặp ( repetition or loop). Cấu trúc “Tuần Tự”. - PowerPoint PPT Presentation

Citation preview

CÁC CẤU TRÚC ĐIỀU KHIỂNCÁC CẤU TRÚC ĐIỀU KHIỂN(Control Structures)(Control Structures)

1

CHƯƠNG 3

1. Giới thiệu 1. Giới thiệu

Các cấu trúc điều khiển thứ tự thực thi các lệnh Các cấu trúc điều khiển thứ tự thực thi các lệnh của chương trình. của chương trình.

Có 3 loại cấu trúc điều khiển:Có 3 loại cấu trúc điều khiển: Cấu trúc tuần tự Cấu trúc tuần tự (sequence)(sequence) Cấu trúc lựa chọn Cấu trúc lựa chọn (selection) (selection) Cấu trúc lặp (Cấu trúc lặp (repetition or loop)repetition or loop)

2

Cấu trúc tuần tự Cấu trúc tuần tự (sequence): thực hiện các (sequence): thực hiện các lệnh theo thứ tự từ trên xuốnglệnh theo thứ tự từ trên xuống

Cấu trúc “Tuần Tự”

3

Lệnh 1

Lệnh 2

Lệnh n

Cấu trúc lựa chọn Cấu trúc lựa chọn (selection): dựa vào kết (selection): dựa vào kết quả của biểu thức điều kiện mà những lệnh quả của biểu thức điều kiện mà những lệnh tương ứng sẽ được thực hiện. Các cấu trúc tương ứng sẽ được thực hiện. Các cấu trúc lựa chọn gồm:lựa chọn gồm:

− if if

− switchswitch

Cấu trúc “Lựa chọn”Cấu trúc “Lựa chọn”

4

Cấu trúc lặp Cấu trúc lặp (repetition or loop): lặp lại 1 hay nhiều (repetition or loop): lặp lại 1 hay nhiều lệnh cho đến khi biểu thức điều kiện có giá trị sai. lệnh cho đến khi biểu thức điều kiện có giá trị sai. Các cấu trúc lặp gồm:Các cấu trúc lặp gồm:

− forfor

− whilewhile

− do ... while. do ... while. Tuy nhiên, thứ tự thực hiện các lệnh của chương Tuy nhiên, thứ tự thực hiện các lệnh của chương

trình còn bị chi phối bởi các lệnh nhảy như trình còn bị chi phối bởi các lệnh nhảy như continue, continue, break, gotobreak, goto. .

Cấu trúc “Lặp”Cấu trúc “Lặp”

5

3. CẤU TRÚC “3. CẤU TRÚC “IF IF “ “

6

3.1. Cấu trúc IF “Dạng thiếu”3.1. Cấu trúc IF “Dạng thiếu”

Cú pháp: Cú pháp:

if (if (expressionexpression) )

statementstatement; ;

Ý nghĩa: Ý nghĩa:

ExpressionExpression được định trị. Nếu được định trị. Nếu

kết quả là kết quả là truetrue thì thì statementstatement được thực thi, được thực thi, ngược lại, không làm gì cả.ngược lại, không làm gì cả.

Lưu đồ

7

Ví dụVí dụViết chương trình nhập vào một số nguyên a. In ra màn hình kết quả a có Viết chương trình nhập vào một số nguyên a. In ra màn hình kết quả a có phải là số dương không. phải là số dương không.

#include <iostream.h> #include <iostream.h>

#include <conio.h> #include <conio.h>

int int main() main()

{ {

intint a; a;

cout << "Input a = "; cin>>a; // 10cout << "Input a = "; cin>>a; // 10

ifif(a>=(a>=00) )

cout << a << " is a positive.”; cout << a << " is a positive.”;

getch getch ()(); ;

return 0return 0; ;

} }

8

Cú phápCú phápif (if (expressionexpression) )

statement1statement1; ; else else

statement2statement2;;

Ý nghĩa: Ý nghĩa:

− NếuNếu ExpressionExpression được định là được định là truetrue thì thì statement1statement1 được thực thi. được thực thi.

− Ngược lại, thì Ngược lại, thì statement2statement2 được thực thi. được thực thi.

Lưu đồ

3.2. Cấu trúc IF “Dạng đủ”3.2. Cấu trúc IF “Dạng đủ”

9

Viết chương trình nhập vào một số nguyên a. In ra màn hình kết quả kiểm tra a là số âm hay dương.

#include <iostream.h>

#include <conio.h>

int main()

{

int a;

cout << "Input a = "; cin >> a; //10

if(a>=0)

cout << a << " is a positive.”;

else

cout << a << " is a negative.”;

getche();

return 0;

}

Ví dụVí dụ

10

Ta có thể sử dụng các câu lệnh Ta có thể sử dụng các câu lệnh if…elseif…else lồng lồng nhau. Khi dùng nhau. Khi dùng if…elseif…else lồng nhau thì lồng nhau thì elseelse sẽ kết hợp với sẽ kết hợp với if if gần nhất. gần nhất. Ví dụ: Cho biết tháng m (m được nhập từ bàn phím) có bao nhiêu ngày?

#include <iostream.h>#include <conio.h>

Lưu ýLưu ý

11

12

int main(){ unsigned int m;//khai bao m kieu nguyen ko co dau cout << "Input month: "; cin >> m; //13 if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) cout << "Month “ << m << ” has 31 days."; else if(m==4 || m==6 || m==9 || m==11) cout << "Month “ << m << ” has 30 days."; else if(m==2) cout << "Month “ << m << ” has 28 or 29 days."; else cout << "This is not a valid month: ” << m; getche(); return 0;}

4. CẤU TRÚC “ 4. CẤU TRÚC “ swswitchitch“ “

Cấu trúc switch là gì? Cấu trúc switch là gì?

Cấu trúc switch là một cấu trúc lựa chọn có nhiều Cấu trúc switch là một cấu trúc lựa chọn có nhiều nhánh, được sử dụng khi có nhiều lựa chọn.nhánh, được sử dụng khi có nhiều lựa chọn.

Cú pháp: Cú pháp:

switchswitch((expressionexpression) )

{ {

case case value_1value_1:: statement_1statement_1;; [break [break;;] ]

… …

case case value_nvalue_n: : statement_nstatement_n;; [break [break;;] ]

[default [default :: statementstatement;;] ]

}}

14

Lưu đồ cấu trúc switchLưu đồ cấu trúc switch

15

1.1. ExpressionExpression sẽ được định trị. sẽ được định trị.

2.2. Nếu giá trị của Nếu giá trị của expressionexpression bằng bằng value_1value_1 thì thì thực hiện thực hiện statement_1statement_1 và và thoát thoát. .

3.3. Nếu giá trị của Nếu giá trị của expressionexpression khác khác value _1 value _1 thì so thì so sánh với sánh với value_2value_2, nếu bằng , nếu bằng value_2value_2 thì thực hiện thì thực hiện statement_2statement_2 và và thoátthoát…., so sánh tới …., so sánh tới value_nvalue_n. .

4.4. Nếu tất cả các phép so sánh đều sai thì thực hiện Nếu tất cả các phép so sánh đều sai thì thực hiện statement statement của của defaultdefault. .

Hoạt động của cấu trúc “switch”Hoạt động của cấu trúc “switch”

16

Expression trong switch() phải có kết quả là giá trị kiểu số nguyên (int, char, long).

Các giá trị sau case phải là hằng nguyên. Không bắt buộc phải có default. Khi thực hiện lệnh tương ứng của case có giá

trị bằng expression, chương trình thực hiện lệnh break để thoát khỏi cấu trúc switch.

Lưu ý:Lưu ý:

17

Ví dụ: Nhập vào một số nguyên, chia số nguyên này Ví dụ: Nhập vào một số nguyên, chia số nguyên này cho 2 lấy phần dư. Kiểm tra nếu phần dư bằng 0 thì cho 2 lấy phần dư. Kiểm tra nếu phần dư bằng 0 thì in ra thông báo “là số chẳn”, nếu số dư bằng 1 thì in in ra thông báo “là số chẳn”, nếu số dư bằng 1 thì in thông báo “là số lẽ”. thông báo “là số lẽ”.

#include <iostream.h> #include <iostream.h>

#include <conio.h> #include <conio.h>

Ví dụVí dụ

18

19

int main () {

int n, intSoDu; cout<<”Nhap mot so: "; cin>>n; //10 intSoDu = (n % 2); //0switch(intSoDu) {

case 0: cout << n << ” la so chan."; break; case 1: cout << n << ” la so le."; break;

} getche(); return 0;

}

2020

5. CẤU TRÚC LẶP 5. CẤU TRÚC LẶP ““whilewhile”” và “ và “do…whiledo…while””

Cú pháp: While (expression)

statement; Ý nghĩa:1. Expression được định trị 2. Nếu kết quả là true thì

statement thực thi và quay lại (1)

3. Nếu kết quả là false thì thoát khỏi vòng lặp while.

5.1 Cấu trúc while5.1 Cấu trúc while

21

Viết chương trình tính tổng các số nguyên từ 1 tới n.

#include<iostream.h>

#include<conio.h>

int main ()

{

int i, n, sum;

cout<<”Input n= ”; cin >> n; // 10

i = 1; sum = 0;

if(n>=0)

{

While (i<=n) // khi i<=n la dung thi thưc hien

{

sum += i; i++;

}

cout<< “i=: ” <<i<<“tong la: ”<<sum;

}

else

cout<<“ n<0, không thuc hien!”;

getche();

return 0;

}

Ví dụ : ch3- bai 28Ví dụ : ch3- bai 28

22

Cú pháp:

do { statement;

}while (expression); Ý nghĩa:

1. Statement được thực hiện

2. Expression được định trị.

3. Nếu Expression là true thì quay lại bước 1

4. Nếu Expression là false thì thoát khỏi vòng lặp.

5.2 Cấu trúc do…while5.2 Cấu trúc do…while

23

Viết chương trình in dãy số nguyên từ 1 đến 10. Viết chương trình in dãy số nguyên từ 1 đến 10.

#include <iostream.h> #include <iostream.h>

#include <conio.h> #include <conio.h>

Ví dụVí dụ

24

25

int main () {

int i; clrscr(); cout<<"Display one to ten: "; i=1; do {

cout << setw(7) << i; i+=1;

} while(i<=10); getche(); return 0;

}

26

5. CẤU TRÚC LẶP “for”

Cú pháp: for (Exp1; Exp2; Exp3)

statement; Ý nghĩa:1. Exp1: là biểu thức khởi

tạo được thực hiện.2. Exp2: là biểu thức điều

kiện dừng3. Exp3: biểu thức điều

khiển lặp

Hoạt động cấu trúc “for”Hoạt động cấu trúc “for”

27Đào Thị Cẩm Hằng- Khoa KH và KT Máy Tính- Trường ĐẠI HỌC CÔNG NGHIỆP TP.HCM

Viết chương trình tính tổng các số nguyên từ 1 đến n. Viết chương trình tính tổng các số nguyên từ 1 đến n.

#include <iostream.h> #include <iostream.h>

#include <conio.h> #include <conio.h>

Ví dụVí dụ

28

29

int main() { int i, n, sum; cout<<”Input a number:”; cin >> n; sum = 0;

for (i=1 ; i<=n ; i++) sum += i; cout<<”Sum from 1 to “ << n << ” is: ” << sum; getch(); return 0; }

C/C++ cho phép Exp1 là một định nghĩa biến

for(int i=1; i<=n; ++i)

Xóa tất cả các biểu thức trong vòng lặp for sẽ cho một vòng lặp vô tận.

for (;;)

statement;

Lưu ýLưu ý

30

Phân biệt dùng “for” hay while”,”do…while”Phân biệt dùng “for” hay while”,”do…while”

31

Đối với for: Lệnh được lặp lại với số lần lặp mà ta biết trước.

Đối với while, do…while: Lệnh được lặp lại khi thỏa điều kiện nào đó và ta không biết trước số lần lặp.

32

6. Lệnh ngắt “6. Lệnh ngắt “breakbreak””

Khi gặp lệnh break thì lặp tức thóat khỏi một cấu trúc điều khiển mà không chờ đến biểu thức điều kiện được định trị.

Điều khiển (control flow) tự động nhảy đến lệnh tiếp theo.

Trong vòng lặp câu lệnh break thường đi kèm với câu lệnh if.

33

Ý nghĩa việc dùng lệnh “break”

Đọc vào một mật khẩu người dùng tối đa SoLanNhap

for (i=0; i<SoLanNhap; ++i)

{

cout<<"Input a password:“;

cin >> passWord;

if (passWord= =12345)

{

cout << "Dang nhap thanh cong!\n";

break; // thoat khoi vong lap }

else

cout <<"Password is wrong!\n";

}

34

Ví dụVí dụ

35

6. Lệnh “6. Lệnh “continuecontinue””

Lệnh continue dùng để kết thúc sớm vòng lặp hiện tại và quay về đầu vòng lặp.

Lệnh continue chỉ được dùng trong thân các cấu trúc lặp như for, while, do...while.

Câu lệnh continue thường đi kèm với câu lệnh if.

36

Ý nghĩa việc dùng lệnh “continue”

Một vòng lặp thực hiện nhập vào từ bàn phím một số dương, nếu nhập âm thì bắt buộc người dùng nhập lại.

do

{

cout<<“ Nhap vao mot so: ”;

cin >> num;

if (num <= 0)

continue; // quay về đầu vòng lặp

else

cout<<“So vua nhap la so duong”;

} while (num <= 0);

37

Ví dụVí dụ

Tóm tắt các cấu trúc điều khiển

38

1.1. Các cấu trúc điều khiển qui định thứ tự thực Các cấu trúc điều khiển qui định thứ tự thực thi các lệnh của chương trình. thi các lệnh của chương trình.

2.2. Có 3 loại cấu trúc điều khiển:Có 3 loại cấu trúc điều khiển:

i.i. Cấu trúc tuần tự Cấu trúc tuần tự (sequence)(sequence)

ii.ii. Cấu trúc lựa chọn Cấu trúc lựa chọn (selection): (selection): if, switch if, switch

iii.iii. Cấu trúc lặp (Cấu trúc lặp (repetition or loop): repetition or loop): for, for, while, do…whilewhile, do…while

Việc dùng lệnh break, continue ?

39

Lệnh break: dùng để thoát khỏi một cấu trúc lệnh hiện tại và thực hiện lệnh tiếp theo.

Lệnh continue: khi gặp lệnh continue sẽ quay về đầu vòng lặp và thực hiện lần lặp tiếp theo.

Trong cấu trúc lặp (for, while, do…while) thì lệnh break, continue thường nằm trong cấu trúc lệnh if

40

HẾT.HẾT.