Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Trường Cao đẳng Công nghệ Thông Tin

Khoa Công nghệ Thông Tin

CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN PHẦN 1: CẤU TRÚC ĐIỀU KIỆN và RẼ NHÁNH

GV: ThS. TRẦN NGUYỄN ANH CHI

TpHCM, 02/2011

Câu lệnh điều kiện IF

Câu lệnh IF thiếu (chỉ xét trường hợp ĐÚNG)

Đúng

Biểu thức điều kiện

Lệnh 1

2

Lệnh n

GV: ThS. Trần Nguyễn Anh Chi 1

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh điều kiện IF (tt)

Cú pháp:

if(biểu thức điều kiện)

;

if(biểu thức điều kiện) {

;

Ví dụ 1:

}

void main() {

int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y)

3

cout<<“Gia tri cua x lon hon y“;

}

Câu lệnh điều kiện IF (tt)

Ví dụ 2:

void main() {

int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y) {

cout<<“Gia tri cua x lon hon y“; x = x – y; cout<<“Gia tri x moi: “<

}

4

}

GV: ThS. Trần Nguyễn Anh Chi 2

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh điều kiện IF (tt)

Câu lệnh IF đủ (xét trường hợp ĐÚNG và SAI)

Sai Đúng

Biểu thức điều kiện

Lệnh 1’ Lệnh 1

5

Lệnh n’ Lệnh n

Câu lệnh điều kiện IF (tt)

Cú pháp:

if(biểu thức điều kiện)

;

if(biểu thức điều kiện) {

else

;

;

} else {

;

}

6

GV: ThS. Trần Nguyễn Anh Chi 3

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh điều kiện IF (tt)

Ví dụ 1:

void main() {

int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y)

cout<<“Gia tri cua x lon hon y“;

else

//x < y

cout<<“Gia tri cua x nho hon y“;

7

}

Câu lệnh điều kiện IF (tt) void main() {

Ví dụ 2:

int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y) {

cout<<“Gia tri cua x lon hon y“; x = x – y; cout<<“Gia tri x moi: “<

//x < y

} else {

cout<<“Gia tri cua y lon hon x“; y = y – x; cout<<“Gia tri y moi: “<

}

8

}

GV: ThS. Trần Nguyễn Anh Chi 4

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh điều kiện IF (tt)

Một số lưu ý:

• Không được thêm ; sau điều kiện của if. • Câu lệnh if có thể lồng nhau và else sẽ tương ứng với if

gần nó nhất. Ví dụ:

if (a != 0)

if (b > 0)

cout<<“a != 0 va b > 0”;

else

cout<<“a != 0 va b <= 0”; if (a !=0) {

if (b > 0)

cout<<“a != 0 va b > 0”;

else

cout<<“a != 0 va b <= 0”;

9

}

Câu lệnh điều kiện IF (tt)

• Nên dùng else để loại trừ trường hợp.

if (delta < 0)

cout<<“PT vo nghiem”;

if (delta == 0)

cout<<“PT co nghiem kep”;

if (delta > 0)

cout<<“PT co 2 nghiem phan biet”;

if (delta < 0)

cout<<“PT vo nghiem”;

else //delta >= 0 {

if (delta == 0)

cout<<“PT co nghiem kep”;

else //delta > 0

cout<<“PT co 2 nghiem phan biet”;

10

}

GV: ThS. Trần Nguyễn Anh Chi 5

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh SWITCH

Đ

=

S

Đ

=

S

11

Cú pháp:

Câu lệnh SWITCH (tt) switch (biểu thức) 

case n1:

; break ; case n2:

; break ;

……… case nk:

; break ;

[default: ; ]

12

GV: ThS. Trần Nguyễn Anh Chi 6

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh SWITCH (tt)

Ví dụ 1:

void main() {

int n; cout<<“Nhap gia tri cho n (1<=n<=3)“; cin>>n; switch(n) {

case 1:

cout<<“Mot”; break;

case 2:

cout<<“Hai”; break;

default:

cout<<“Ba”;

}

13

}

Câu lệnh SWITCH (tt)

Một số lưu ý:

• ni là các hằng số nguyên hoặc ký tự • Các giá trị trong mỗi trường hợp phải khác nhau • 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. Ví dụ:

14

7 GV: ThS. Trần Nguyễn Anh Chi

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh SWITCH (tt)

switch(n) {

case 1:

cout<<“Mot”;

case 2:

cout<<“Hai”;

case 3:

cout<<“Ba”;

}

switch(n) {

case 1:

cout<<“Mot”; break;

case 2:

cout<<“Hai”; break;

case 3:

cout<<“Ba”;

15

}

Trường Cao đẳng Công nghệ Thông Tin Khoa Công nghệ Thông Tin

CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN PHẦN 2: CẤU TRÚC LẶP

GV: ThS. TRẦN NGUYỄN ANH CHI

TpHCM, 02/2011

GV: ThS. Trần Nguyễn Anh Chi 8

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Đặt vấn đề

Ví dụ

 Viết chương trình xuất các số từ 1 đến 10

 Sử dụng 10 câu lệnh cout

 Viết chương trình xuất các số từ 1 đến 1000

 Sử dụng 1000 câu lệnh cout !!!

Giải pháp

 Sử dụng cấu trúc lặp để lặp lại một hành động trong khi còn

thỏa một điều kiện nào đó.

 Có 3 câu lệnh lặp: for, while, do… while

17

Câu lệnh FOR

Bước

buoc

Đk

Xuất

Cú pháp for(;;) Ví dụ 1: Xuất câu “Hello!” 10 lần,

mỗi lần trên 1 dòng

Hello

1

1

buoc  10?

Hello

2

2

buoc  10?

void main() {

Hello

3

3

buoc  10?

Hello

4

4

buoc  10?

int buoc; for(buoc=1 ; buoc<=10 ; buoc++)

Hello

5

5

buoc  10?

cout<<“Hello“<

buoc  10?

Hello

6

6

}

buoc  10?

Hello

7

7

buoc  10?

Hello

8

8

Hello

9

9

buoc  10?

10

10

Hello

buoc  10?

18

11

buoc  10?

Biểu thức khởi đầu Biểu thức điều kiện Bước nhảy

GV: ThS. Trần Nguyễn Anh Chi 9

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh FOR (tt)

Khởi gán

Sơ đồ

Sai (Biểu thức ĐK = 0) Đúng (Biểu thức ĐK  0)

Kiểm tra biểu thức điều kiện

Thực hiện (các) lệnh trong vòng lặp

19

Tăng/Giảm chỉ số lặp (bước nhảy)

Câu lệnh FOR (tt)

Ví dụ 2: Tính tổng S(n) = 1+2+3+…+n, n>0

Ví dụ: n = 5

void main() {

Bước

i

Đk

s

int s=0, i; cout<<“Nhap n: “; cin>>n; for(i=1 ; i<=n ; i++)

s=s+i;

cout<<“Tong = “<

}

20

GV: ThS. Trần Nguyễn Anh Chi 10

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh FOR (tt)

Ví dụ 3: Tính tổng S(n)=1+3+…+(2n-1), n>0

Ví dụ: n = 3

void main() {

Bước

i

Đk

s

int s=0, i; for(i=1 ; i<=n ; i++)

s=s+i;

cout<<“Tong = “<

}

21

Câu lệnh WHILE

Cú pháp

; while() {

; ;

}

Ví dụ 1: Xuất câu “Hello!” 10 lần, mỗi lần trên 1 dòng

22

GV: ThS. Trần Nguyễn Anh Chi 11

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh WHILE (tt)

Biểu thức khởi đầu

void main() {

Biểu thức điều kiện

int buoc; buoc = 1; while(buoc <= 10) {

cout<<“Hello“<

23

} Bước nhảy }

Câu lệnh WHILE (tt)

Ví dụ 2: Tính tích S(n) = 1*2*3*…*n, n>0

Ví dụ: n = 5

void main() {

Bước

i

Đk

s

int i; long s = ; i = 1; while(i<=n) {

s=s*i; i++;

24

} cout<<“Tich = “<

}

GV: ThS. Trần Nguyễn Anh Chi 12

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh WHILE (tt)

Ví dụ 3: Tính tích S(n) = 2*4*…*2n, n>0

Ví dụ: n = 5

void main() {

Bước

i

Đk

s

int i; long s = ; i = ; while(i=1 i++) {

s = i = ; ;

25

} cout<<“Tich = “<

}

Câu lệnh DO…WHILE

Cú pháp

; do {

; ;

} while();

26

GV: ThS. Trần Nguyễn Anh Chi 13

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh DO…WHILE (tt)

Sơ đồ

Khởi gán

Lệnh 1

Tăng/Giảm chỉ số lặp

Đúng

Sai

Biểu thức điều kiện

27

Câu lệnh DO…WHILE (tt)

Ví dụ : Xuất câu “Hello!” 10 lần, mỗi lần trên 1 dòng

void main() {

Biểu thức khởi đầu

int buoc; buoc = 1; do {

Bước nhảy cout<<“Hello“<

28

} while(buoc<10); Biểu thức điều kiện }

GV: ThS. Trần Nguyễn Anh Chi 14

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Câu lệnh DO…WHILE (tt)

• Câu lệnh DO… WHILE sẽ được thực hiện ít nhất 1 lần

void main() {

int n; do {

 Thường sử dụng trong trường hợp nhập có kiểm tra.

29

cout<<“Nhap n: ”; cin>>n; }while (n < 1 || n > 100); }

So sánh FOR, WHILE và DO…WHILE

• Đều có thể lặp lại nhiều hành động. Ví dụ: n = 10;

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

int i = 1; while (i <= n) {

cout<

int i = 1; do {

30

cout<

GV: ThS. Trần Nguyễn Anh Chi 15

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

So sánh (tt)

• Số lần lặp thường được xác định ngay trong câu lệnh FOR, trong khi WHILE và DO…WHILE có thể sử dụng điều kiện khác để thoát.

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

int i = 1; while (1) { …; }

int i = 1; do {

31

…; } while (1);

So sánh (tt)

• FOR, WHILE có thể không thực hiện lần nào. • DO… WHILE sẽ được thực hiện ít nhất 1 lần.

int n = 100; while (n < 10) {

cout<

}

int n = 100; do {

32

cout<

GV: ThS. Trần Nguyễn Anh Chi 16

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý

• Không được thêm ; ngay sau lệnh FOR, WHILE  Tương đương câu lệnh rỗng. Ví dụ:

for (i = 1 ; i <= 10 ; i++ ); {

cout<

int i = 1; while(i <= 10); {

33

cout<

Một số lưu ý (tt)

• Nếu có nhiều thành phần trong từng biểu thức của FOR,

thì các thành phần cách nhau bằng dấu ,

Ví dụ:

int i, j; for (i=1, j=2 ; i+j < 10 ; i++, j+=2)

cout<<(i + j);

34

GV: ThS. Trần Nguyễn Anh Chi 17

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý (tt)

• Nếu có nhiều thành phần trong biểu thức điều kiện của WHILE và DO…WHILE, thì các điều kiện kết hợp với nhau bằng phép AND (&&) hoặc phép OR (||)

Ví dụ:

int i=1, j=1, n = 3, m = 5; while(i<=n && j

35

cout<

Một số lưu ý (tt)

• Có thể có các câu lệnh lặp lồng nhau. Ví dụ:

int i, j, n = 3, m = 5; for (i = 1; i <= n; i++) {

for (j = 1; j <= m; j++) {

36

cout<<(i + j); cout<<“\n”; } }

GV: ThS. Trần Nguyễn Anh Chi 18

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý (tt)

• Trong câu lệnh FOR có thể không có Ví dụ:

int i; for (i = 1 ; i <= 10 ; i++) cout<

37

int i = 1; for ( ; i <= 10 ; i++) cout<

Một số lưu ý (tt)

• Trong câu lệnh lặp có thể không có Ví dụ:

int i; for (i = 1 ; i <= 10 ; i++ ) cout<

int i; for (i = 1 ; i <= 10 ; ) {

38

cout<

GV: ThS. Trần Nguyễn Anh Chi 19

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý (tt)

• Trong câu lệnh lặp có thể không có Ví dụ:

int i; for (i = 1; i <= 10; i++ ) cout<

39

int i; for (i = 1; ; i++ ) { if(i > 10) break; cout<

Một số lưu ý (tt)

• Lệnh break làm kết thúc vòng lặp • Lệnh continue bỏ qua lần lặp hiện tại Ví dụ:

for (i = 1; i <= 10; i++) {

if (i % 2 == 0) break; cout<

40

for (i = 1; i <= 10; i++) { if (i % 2 == 0) continue; cout<

GV: ThS. Trần Nguyễn Anh Chi 20

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý (tt)

• Vòng lặp đi xuôi: giá trị bước nhảy tăng dần • Vòng lặp đi ngược: giá trị bước nhảy giảm dần Ví dụ:

 Xuất:

int i; for (i = 1 ; i <= 10 ; i++) cout<

 Xuất:

41

int i; for (i = 10 ; i >= 1 ; i--) cout<

Một số lưu ý (tt)

• Câu lệnh lặp có thể bị lặp vô tận (bị loop). Ví dụ 1:

int i; for (i = 1 ; i <= 10 ; i--)

 Xuất:

Ví dụ 2:

cout<

int n = 1; while (n < 10) { cout<

}

42

 Xuất:

GV: ThS. Trần Nguyễn Anh Chi 21

Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản

Một số lưu ý (tt)

• Câu lệnh lặp có thể không được thực hiện lần nào, nếu ngay

từ lần đầu điều kiện lặp đã không thỏa. Ví dụ:

int i, n=0; for (i = 1 ; i <= n ; i++) cout<

int n = 1; while (n > 10) {

43

cout<

GV: ThS. Trần Nguyễn Anh Chi 22