chương 3 cẤu trÚc ĐiỀu khiỂn - thayphet.net filekhối lệnh 1; else khối lệnh 2 ; ....

42
1 Chương 3 CẤU TRÚC ĐIỀU KHIỂN Giảng Viên: ThS. Dương Thành Phết Email: [email protected] Website: http://www.thayphet.net Tel: 0918158670 facebook.com/duongthanhphet KỸ THUẬT LẬP TRÌNH C/C++ TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN

Upload: others

Post on 27-Oct-2019

16 views

Category:

Documents


0 download

TRANSCRIPT

1

Chương 3

CẤU TRÚC ĐIỀU KHIỂN

Giảng Viên: ThS. Dương Thành Phết

Email: [email protected]

Website: http://www.thayphet.net

Tel: 0918158670 – facebook.com/duongthanhphet

KỸ THUẬT LẬP TRÌNH C/C++

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

KHOA CÔNG NGHỆ THÔNG TIN

http://www.thayphet.net

2

2

NỘI DUNG

1. Cấu trúc rẽ nhành If

2. Cấu trúc lựa chọn Switch

3. Cấu trúc lặp For

4. Cấu trúc Lặp While

5. Cấu trúc lặp Do. . . While

6. Lệnh Break và Continue

http://www.thayphet.net

3

1. CẤU TRÚC RẼ NHÁNH

3

Lệnh 1

Biểu thức

điều kiện

Lệnh 2

Lệnh 3

true

Cấu trúc rẽ nhánh cho phép thực hiện một khối lệnh dựa

vào kết quả của một biểu thức điều kiện Gồm 2 dạng:

Lệnh 1

Biểu thức

điều kiện

Lệnh 2

Lệnh 3

true

Lệnh 1

Lệnh 3

false

Lệnh 2

http://www.thayphet.net

4

4

if ( Biểu thức ĐK)

khối lệnh 1;

. . . . . . .

if ( Biểu thức ĐK )

khối lệnh 1;

else

khối lệnh 2 ;

. . . . . . .

Nếu biểu thức đk đúng thì

sẽ thực hiện khối lệnh 1 và

sau đó sẽ thực hiện các

lệnh tiếp sau khối lệnh 1..

Nếu biểu thức sai thì bỏ qua

khối lệnh 1 mà thực hiện

ngay các lệnh tiếp sau khối

lệnh 1.

Nếu biểu thức đúng thì sẽ

thực hiện khối lệnh 1 và sau

đó sẽ thực hiện các lệnh tiếp

sau khối lệnh 2.

Nếu biểu thức sai thì bỏ qua

khối lệnh 1 mà thực hiện khối

lệnh 2 sau đó thực hiện tiếp

các lệnh tiếp sau khối lệnh 2.

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

5

Vi du 01:

Viết chương trình nhập vào một số nguyên từ 1 đến 10,

nếu nhập sai thì thông báo

5

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

6

void main()

{

int k;

cout<<"Hay nhap mot so tu 1 den 10: ";

cin>>k;

if (k < 1 || k > 10)

cout<<"So ban vua nhap khong hop le"<<endl;

}

6

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

7

Ví du 02:

Nhập vào số nguyên a và b, nếu a là

bội số của b thì in thông báo “a là

bội số của b”, ngược lại in “a khong

la boi so cua b”

7

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

8

void main()

{

int a, b;

cout<<"Nhap vao a: ";

cin>>a;

cout<<"Nhap vao b: ";

cin>>b;

if(a%b==0)

cout<<"a la boi so cua b"<<endl;

else

cout<<"a khong la boi so cua b"<<endl;

}

8

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

9

Vi du 03:

Giải va biện luận phương trinh: ax+b=0

9

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

10

void main()

{

float a, b;

cout<<"Nhap vao a: ";

cin>>a;

cout<<"Nhap vao b: ";

cin>>b;

if (a == 0)

if (b == 0)

cout<<"Phuong trinh vo so nghiem"<<endl;

else

cout<<"Phuong trinh vo nghiem"<<endl;

else

cout<<"Phuong trinh co nghiem x = "<< -b / a<<endl;

} 10

1. CẤU TRÚC RẼ NHÁNH

http://www.thayphet.net

11

switch (biêu thưc)

case n1:

cac câu lênh ;

break ;

case n2:

cac câu lênh ;

break ;

………

case nk:

<cac câu lênh> ;

break ;

[default: cac câu lênh]

11

2. CẤU TRÚC LỰA CHỌN

http://www.thayphet.net

12

ni la cac hăng sô nguyên hoặc ky tự.

Phu thuộc vao gia tri của biểu thức sau switch, nếu:

Giá tri nay = ni thi thực hiện câu lệnh sau case ni.

Khi giá tri biểu thức không thỏa tất cả cac ni thi

thực hiện câu lệnh sau default nếu có, hoặc thoat

khỏi câu lệnh switch.

Khi chương trinh đã thực hiện xong câu lệnh của

case ni nao đó thi nó sẽ thực hiện luôn cac lệnh

thuộc case bên dươi do đó để chương trinh thoat

khỏi lệnh switch, ta dung lệnh break.

12

2. CẤU TRÚC LỰA CHỌN

http://www.thayphet.net

13

void main()

{

int n;

cout<<"Nhap vao n (1<=n<=5): ";

cin>>n;

switch (n)

{

case 1: cout<<"So mot";break;

case 2: cout<<"So hai";break;

case 3: cout<<"So ba"; break;

case 4: cout<<"So bon"; break;

case 5: cout<<"So nam"; break;

default : cout<<"Khong doc duoc";

}

}

13

Ví dụ 04: Nhập vao số nguyên n có gia tri từ 1 đến 5. In cách

đọc của số đó ra man hinh.

2. CẤU TRÚC LỰA CHỌN

http://www.thayphet.net

14

14

3. CẤU TRÚC LẶP - FOR

for (<BT khơi gan> ; <BT điêu kiên>; <BT tăng/giam>)

{

<khôi lênh>;

}

Bât ky biêu thưc nao trong 3 biêu thưc noi trên đêu co thê

văng nhưng phai giư dâu châm phây (;)

http://www.thayphet.net

15

15

Thöïc hieän caùc leänh

trong voøng laëp

Khôûi gaùn

Ñuùng (Bieåu thöùc

ñieàu kieän khaùc 0)Kieåm tra bieåu

thöùc ñieàu kieän

Taêng/ giaûm chæ

soá laëp

Sai (Biểu thức

ñiều kiện = 0)

Nguyên ly hoạt động

Bươc 1: thực hiên Biêu thưc khơi gán

Bươc 2: Kiêm tra điêu kiên cua biêu thưc điêu kiên.

Nêu biêu thưc điều kiện bằng true thi cho thực hiên cac lênh trong

vong lăp, thực hiên biêu thưc tăng giảm. Quay trơ lai bươc 2.

Ngươc lai thoat khoi lăp.

3. CẤU TRÚC LẶP - FOR

http://www.thayphet.net

16

Vi du 05:

In ra man hinh 10 dòng chữ “Xin chao”

16

void main()

{

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

cout<<"Xin chao“<<endl;

}

3. CẤU TRÚC LẶP - FOR

http://www.thayphet.net

17

Ví dụ 06: Tinh tông: S=1+2+3+ . . +n , vơi n>0

17

BAÉT ÑAÀU

KEÁT THUÙC

S = 0 i = 1

S

n

i n Ñuùng

S = S + i

i = i + 1

Sai

3. CẤU TRÚC LẶP - FOR

http://www.thayphet.net

18

< Khơi gan>

while ( <biêu thưc điêu kiên>)

lênh/ khôi lênh;

<biêu thưc tăng/ giam>

18

4. CẤU TRÚC LẶP - WHILE

Lưu y: Cach hoat đông cua while giông for

Bươc 1: thực hiên Biêu thưc khơi gán

Bươc 2: Kiêm tra điêu kiên cua biêu thưc điêu kiên.

Nêu biêu thưc điều kiện bằng true thi thực hiên cac lênh trong

vong lăp, thực hiên biêu thưc tăng giảm. Quay trơ lai bươc 2.

Ngươc lai thoat khoi lăp.

http://www.thayphet.net

19

void main()

{

int buoc = 1;

while(buoc <= 10)

{

cout<<"Xin chao"<<endl;

buoc++;

}

}

19

Ví dụ 07: In ra màn hinh 10 dòng chữ “Xin chao”

4. CẤU TRÚC LẶP - WHILE

http://www.thayphet.net

20

< Khơi gan>

Do

{

<khôi lênh>;

<biêu thưc tăng/ giam>;

} while (biêu thưc điêu kiên);

20

5. CẤU TRÚC LẶP – DO . . .WHILE

Thực hiên khôi lênh cho đên khi biêu thưc co gia tri

băng false.

Câu trúc lăp do…while thường dùng cho trường hơp

nhập có kiêm tra điêu kiên

http://www.thayphet.net

21

Ví dụ 08: Nhập vào một số nguyên dương, nếu nhập vào số

bằng hoặc nhỏ hơn 0 thì thông báo lỗi và yêu cầu nhập lại.

21

void main()

{

int n;

do

{

cout<<"Nhap vao mot so nguyen duong: ";

cin>>n;

if (n <= 0)

cout<<"Nhap sai, hay nhap lai! "<<endl;

} while (n <= 0);

cout<<"Ban da nhap dung, ket thuc chuong trinh";

}

5. CẤU TRÚC LẶP – DO . . .WHILE

http://www.thayphet.net

22

Ngươc lai vơi câu trúc lăp for và while (kiêm tra điêu

kiên trươc khi thực hiên lăp), vong lăp do…while thực

hiên lênh lăp rôi mơi kiêm tra điêu kiên. Do đo vong lăp

do...while thực hiên lênh it nhât môt lân.

22

5. CẤU TRÚC LẶP – DO . . .WHILE

http://www.thayphet.net

23

6.1. Lệnh break:

Thoát khỏi các cấu trúc switch, while, for, do…while

chứa nó gần nhất.

Tại thời điểm break không cần kiểm tra kết quả của

biểu thức điều kiện.

Tuy nhiên, cần phân biệt vơi lệnh return là lệnh trả về

từ hàm, nghĩa là thoát khỏi hàm đang thi hành, nên

cũng giúp thoát luôn khỏi tất cả các vòng lặp.

23

6. LỆNH BREAK VÀ CONTINUE

http://www.thayphet.net

24

6.2. Lệnh continue:

Được sử dung trong các vòng lặp như while, for,

do…while.

Khi lệnh continue được gọi thì chương trình sẽ quay

trở về đầu vòng lặp để bắt đầu lần lặp mơi (có kiểm tra

điều kiện lặp để xác đinh có lặp tiếp hay không).

Nếu có các lệnh còn lại (cùng trong vòng lặp) đặt sau

continue sẽ không được thực hiện.

Nói tóm lại, lệnh continue thường dùng để bỏ qua một

lần lặp nào đó nếu thỏa điều kiện.

24

6. LỆNH BREAK VÀ CONTINUE

http://www.thayphet.net

25

void main()

{

int n;

while (true) {

cout<<"Nhap gia tri n: “;

cin>>n;

if (n <= 0){

cout<<"Ket thuc vong lap”;

break;

}

}

}

25

Ví dụ 09: Cho phép người dùng nhập liên tuc số nguyên

dương, nếu nhập số nguyên âm thì dừng

6. LỆNH BREAK VÀ CONTINUE

http://www.thayphet.net

26

Ví dụ 10: In ra man hinh gia tri từ 10 đến 20 trừ số 13 va 17.

26

void main()

{

for (int k = 10; k <= 20; k++)

{

if (k == 13 || k == 17)

continue;

cout<<k<<" ";

}

}

6. LỆNH BREAK VÀ CONTINUE

http://www.thayphet.net

27

BÀI TẬP CẤU TRÚC IF

int a=9, b=6;

a++;

a=a+b--;

a=a+(--b);

if(a%2==0)

cout<<"Gia tri cua a la chan"<<endl;

cout<<"Tong cua a va b la: " <<(a + b)<<endl;

27

Bai tập 1: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

28

int a=7, b=8;

a++;

a=a+b--;

--b;

a--;

a = (--a)+(--b);

if(a%2 != 0)

cout<<"a la so le"<<endl;

else

cout<<"a la so chan"<<endl;

cout<<"Gia tri cua a: " <<a<<endl; 28

Bai tập 2: Cho biết kết quả của đoạn chương trinh

BÀI TẬP CẤU TRÚC IF

http://www.thayphet.net

29

int x = 5, y;

y = x++ + 5;

cout<<"x= " <<x<<", y= "<<y<<endl;

y *= 6;

x = y % 7;

cout<<"x= "<<x<<", y= "<<y<<", y/x= "<<y/x<<endl;

29

Bai tập 3: Cho biết kết quả của đoạn chương trinh

BÀI TẬP CẤU TRÚC IF

http://www.thayphet.net

30

Bài tập 4: Viết chương trình nhập vao hai số nguyên a,

b. In ra man hinh gia tri lơn nhất.

Bài tập 5: Viết chương trình nhập vào ba số a, b, c đọc

vao từ ban phim. Hãy tim gia tri lơn nhất của ba số trên

va in ra kết quả.

Bài tập 6: Viết chương trình nhập ba số a, b, c đọc vao

từ ban phim. Hãy in ra man hinh theo thứ tự tăng dần

cac số. (Chi được dung thêm hai biến phu).

Bài tập 7: Viết chương trình nhập vao một số nguyên n

gồm ba chữ số. Xuất ra man hinh chữ số lơn nhất ở vi

tri nao?. Ví dun=291. Chư sô lơn nhât năm ơ hang chuc

(chư sô 9). 30

BÀI TẬP CẤU TRÚC IF

http://www.thayphet.net

31

Bài tập 6: Viết chương trinh nhập vao số nguyên n gồm ba

chữ số. Xuất ra man hinh theo thứ tự tăng dần của cac

chữ số. Vi du: n=291. Xuât ra 129.

Bài tập 7: Viết chương trình nhập vao ngay, thang, năm.

Kiểm tra xem ngay, thang, năm đó có hợp lệ hay không?

In kết quả ra man hinh.

Bài tập 8: Viết chương trình nhập vao giờ, phút, giây. Kiểm

tra xem giờ, phút, giây đó có hợp lệ hay không? In kết quả

ra man hinh.

Bài tập 9: Viết chương trinh nhập vao ngay, thang, năm

hợp lệ. Cho biết năm nay có phải la năm nhuận hay

không? In kết quả ra man hinh.

Bài tập 10: Viết chương trinh tinh diện tich va chu vi cac

hinh: tam giac, hinh vuông, hinh chữ nhật va hinh tròn vơi

những thông tin cần được nhập từ ban phim.

31

BÀI TẬP CẤU TRÚC IF

http://www.thayphet.net

32

Bài tập 11: Viết chương trinh tinh tiền cươc TAXI. Biết

rằng:

km đâu tiên la 13000đ.

Mỗi km tiêp theo la 12000đ.

Nêu lơn hơn 30km thi mỗi km thêm se la 11000đ.

Hãy nhập số km sau đó in ra số tiền phải trả.

Bài tập 12: Viết chương trình nhập vao 3 số nguyên

dương. Kiểm tra xem 3 số đó có lập thanh tam giac không?

Nếu có hãy cho biết tam giac đó thuộc loại nao? (Cân,

vuông, đều, …).

Bài tập 13: Viết chương trinh nhập vao số nguyên dương

n. Kiểm tra xem n có phải la số chinh phương hay không?

(số chinh phương la số khi lấy căn bậc 2 có kết quả la

nguyên).

32

BÀI TẬP CẤU TRÚC IF

http://www.thayphet.net

33

BÀI TẬP CẤU TRÚC SWITCH

Bài tập 14: Viết chương trình nhập vào 1 số nguyên

dương gồm 3 chữ số, in ra cách đọc của số này

33

http://www.thayphet.net

34

int a=18;

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

if(a%i == 0)

cout<<i <<"\t";

34

BÀI TẬP CẤU TRÚC LẶP FOR, WHILE, DO.. WHILE

for(int i = 0; i < 5; i++){

for(int j = 0; j <= i; j++)

cout<<j<<“\t”;

cout<<endl;

}

Bai tập 15: Cho biết kết quả của đoạn chương trinh

Bai tập 16: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

35

int i = 10, s = 0;

while(i > 0){

if(i%2 == 0)

s+=i;

else

if(i > 5)

s+=2*i;

i--;

}

cout<<“s = ” <<s;

35

Bai tập 17: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

36

int a = 18, i = 1;

do{

if(a%i == 0)

cout<<i<<“\t”;

i++;

} while(i <= a);

36

Bai tập 18: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

37

int a = 11, b = 16, i = a;

while( i < b ){

if(i%2 == 0) {

Console.Write(i + "\t");

break;

}

i++;

}

37

Bai tập 19: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

38

int a = 10, s = 0, i = 0;

while( i < a ){

i++;

if (i % 2 == 0)

continue;

else

s=s+i;

}

cout<<"s = " <<s;

38

Bai tập 20: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

39

int i = 1, s = 0;

while(true){

s = s + i++;

if (i % 2)

i = i + 2;

else

i = i + 1;

if (i > 20)

break;

}

cout<<"s = " <<s;

39

Bai tập 21: Cho biết kết quả của đoạn chương trinh

http://www.thayphet.net

40

Bài tập 22: Viết chương trinh nhập số nguyên dương n.

Liệt kê n số nguyên tố đầu tiên.

Bài tập 23: Viết chương trinh nhập vao hai số nguyên

dương a va b. Tim ươc số chung lơn nhất va bội số

chung nhỏ nhất của a va b.

Bài tập 24: Viết chương trinh nhập vao một số nguyên n

gồm tối đa 10 chữ số (4 bytes). In ra man hinh gia tri nhi

phân của số trên. (Hương dân: chia lấy dư cho 2 va xuất

theo thứ tự ngược lại).

Bài tập 25: Viết chương trinh đếm số ươc số của số

nguyên dương N. Vi du: N=12 thì sô ươc sô cua 12 la 6

http://www.thayphet.net

41

Bài tập 26: Một số hoan thiện la một số có tông cac ươc

số của nó (không kể nó) bằng chinh nó. Hãy liệt kê cac

số hoan thiện nhỏ hơn 5000.

Vi du: Sô 6 la sô hoan thiên vi tông cac ươc sô:1+2+3 = 6.

Bài tập 27: Nhập vao ngay, thang, năm. Cho biết đó la

ngay thứ mấy trong năm.

Bài tập 28: In ra dãy số Fibonaci

f1 = f0 =1;

fn = fn-1 + fn-2; (n>1)

41

42

The End.