CHNG 3 CC CU TRC IU KHIN Control

  • Slides: 40
Download presentation
CHƯƠNG 3 CÁC CẤU TRÚC ĐIỀU KHIỂN (Control Structures) 1

CHƯƠNG 3 CÁC CẤU TRÚC ĐIỀU KHIỂN (Control Structures) 1

1. Giới thiệu q Các cấu trúc điều khiển thứ tự thực thi các

1. Giới thiệu q 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. q Có 3 loại cấu trúc điều khiển: v Cấu trúc tuần tự (sequence) v Cấu trúc lựa chọn (selection) v. Cấu trúc lặp (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 lệnh

Cấu trúc “Tuần Tự” Ø Cấu trúc tuần tự (sequence): thực hiện các lệnh theo thứ tự từ trên xuống Lệnh 1 Lệnh 2 … Lệnh n 3

Cấu trúc “Lựa chọn” Ø Cấu trúc lựa chọn (selection): dựa vào kết quả

Cấu trúc “Lựa chọn” Ø Cấu trúc lựa chọn (selection): dựa vào kết 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 lựa chọn gồm: − if − switch 4

Cấu trúc “Lặp” Ø Cấu trúc lặp (repetition or loop): lặp lại 1 hay

Cấu trúc “Lặp” Ø Cấu trúc lặp (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. Các cấu trúc lặp gồm: − for − while do. . . while. Ø 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ư continue, break, goto. − 5

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

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

3. 1. Cấu trúc IF “Dạng thiếu” Ø Cú pháp: if (expression) statement; Ø

3. 1. Cấu trúc IF “Dạng thiếu” Ø Cú pháp: if (expression) statement; Ø Ý nghĩa: Lưu đồ Expression được định trị. Nếu kết quả là true thì statement được thực thi, ngược lại, không làm gì cả. 7

Ví dụ Viết chương trình nhập vào một số nguyên a. In ra màn

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ó phải là số dương khô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. ”; getch (); return 0; 8 }

3. 2. Cấu trúc IF “Dạng đủ” Ø Cú pháp if (expression) statement 1;

3. 2. Cấu trúc IF “Dạng đủ” Ø Cú pháp if (expression) statement 1; else statement 2; Ø Ý nghĩa: Lưu đồ − Nếu Expression được định là true thì statement 1 được thực thi. − Ngược lại, thì statement 2 được thực thi. 9

Ví dụ Viết chương trình nhập vào một số nguyên a. In ra màn

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ả 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; } 10

Lưu ý n Ta có thể sử dụng các câu lệnh if…else lồng nhau.

Lưu ý n Ta có thể sử dụng các câu lệnh if…else lồng nhau. Khi dùng if…else lồng nhau thì else sẽ kết hợp với if 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> 11

int main() { unsigned int m; //khai bao m kieu nguyen ko co dau

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; } 12

4. CẤU TRÚC “ switch“

4. CẤU TRÚC “ switch“

Cấu trúc switch là gì? n n Cấu trúc switch là một cấu trúc

Cấu trúc switch là gì? n n 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. Cú pháp: switch(expression) { case value_1: statement_1; [break; ] … case value_n: statement_n; [break; ] [default : statement; ] } 14

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

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

Hoạt động của cấu trúc “switch” 1. 2. 3. 4. Expression sẽ được định

Hoạt động của cấu trúc “switch” 1. 2. 3. 4. Expression sẽ được định trị. Nếu giá trị của expression bằng value_1 thì thực hiện statement_1 và thoát. Nếu giá trị của expression khác value _1 thì so sánh với value_2, nếu bằng value_2 thì thực hiện statement_2 và thoát…. , so sánh tới value_n. Nếu tất cả các phép so sánh đều sai thì thực hiện statement của default. 16

Lưu ý: § Expression trong switch() phải có kết quả là giá trị kiểu

Lưu ý: § 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. 17

Ví dụ: Nhập vào một số nguyên, chia số nguyên này cho 2 lấ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ì 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ẽ”. #include <iostream. h> #include <conio. h> 18

int main () { int n, int. So. Du; cout<<”Nhap mot so: "; cin>>n;

int main () { int n, int. So. Du; cout<<”Nhap mot so: "; cin>>n; //10 int. So. Du = (n % 2); //0 switch(int. So. Du) { case 0: cout << n << ” la so chan. "; break; case 1: cout << n << ” la so le. "; break; } getche(); return 0; } 19

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

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

5. 1 Cấu trúc while Cú pháp: While (expression) statement; Ø Ý nghĩa: 1.

5. 1 Cấu trúc 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. Ø 21

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

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ụ : ch 3 - bai 28 22

5. 2 Cấu trúc do…while Ø Cú pháp: do { statement; }while (expression); Ø

5. 2 Cấu trúc do…while Ø 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. 23

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

Ví dụ Viết chương trình in dãy số nguyên từ 1 đến 10. #include <iostream. h> #include <conio. h> 24

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

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; } 25

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

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

Hoạt động cấu trúc “for” Cú pháp: for (Exp 1; Exp 2; Exp 3)

Hoạt động cấu trúc “for” Cú pháp: for (Exp 1; Exp 2; Exp 3) statement; n Ý nghĩa: 1. Exp 1: là biểu thức khởi tạo được thực hiện. 2. Exp 2: là biểu thức điều kiện dừng 3. Exp 3: biểu thức điều khiển lặp n Đà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 27

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

Ví dụ Viết chương trình tính tổng các số nguyên từ 1 đến n. #include <iostream. h> #include <conio. h> 28

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

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; } 29

Lưu ý n C/C++ cho phép Exp 1 là một định nghĩa biến for(int

Lưu ý n C/C++ cho phép Exp 1 là một định nghĩa biến for(int i=1; i<=n; ++i) n 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; 30

Phân biệt dùng “for” hay while”, ”do…while” Đối với for: Lệnh được lặp lại

Phân biệt dùng “for” hay while”, ”do…while” Đố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. 31

6. Lệnh ngắt “break” 32

6. Lệnh ngắt “break” 32

Ý nghĩa việc dùng lệnh “break” Khi gặp lệnh break thì lặp tức thóat

Ý nghĩa việc dùng lệnh “break” 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

Ví dụ Đọc vào một mật khẩu người dùng tối đa So. Lan. Nhap

Ví dụ Đọc vào một mật khẩu người dùng tối đa So. Lan. Nhap for (i=0; i<So. Lan. Nhap; ++i) { cout<<"Input a password: “; cin >> pass. Word; if (pass. Word= =12345) { cout << "Dang nhap thanh cong!n"; break; // thoat khoi vong lap } else cout <<"Password is wrong!n"; } 34

6. Lệnh “continue” 35

6. Lệnh “continue” 35

Ý nghĩa việc dùng lệnh “continue” Lệnh continue dùng để kết thúc sớm vòng

Ý nghĩa việc dùng lệnh “continue” 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

Ví dụ Một vòng lặp thực hiện nhập vào từ bàn phím một số

Ví dụ 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

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

Tóm tắt các cấu trúc điều khiển 1. 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. 2. Có 3 loại cấu trúc điều khiển: i. Cấu trúc tuần tự (sequence) ii. Cấu trúc lựa chọn (selection): if, switch iii. Cấu trúc lặp (repetition or loop): for, while, do…while 38

Việc dùng lệnh break, continue ? ü Lệnh break: dùng để thoát khỏi một

Việc dùng lệnh break, continue ? ü 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 39

HẾT. 40

HẾT. 40