Chương 2 Các cCác cấu trúc iều khi ểnccs1.hnue.edu.vn/hungtd/CPL2012/Lecture02.pdf ·...

Preview:

Citation preview

Chương 2

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

Website môn họchttp://ccs1.hnue.edu.vn/hungtd/CPL2012

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

Cấu trúc tuần tự (sequence structures)Cấu trúc rẽ nhánh (selection structures)( )Cấu trúc lăp (repetition structures)

Cấu trúc tuần tự: các lệnh trong chương trình được trình hiện một cách t ầ t th thứ t ất tuần tự theo thứ tự xuất hiện của các lệnh trong chương trình (trừ phi gặp lệnh lặp, hoặc lệnh rẽ

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

ệ ặp, ặ ệnhánh)

I Cá ấ ú ẽ há hI. Các cấu trúc rẽ nhánh

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Biê u thức logic

Mô t biê u thức logic la mô t biê u thức chi co mô t trong hai gia tri True hoăc False

Co ba toa n tử cơ banVà ( d)Và (and)Hoặc (or)Phủ định (not)Phủ định (not)

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Biê u thức logic

Ba ng chân ly cua phe p andP Q P and QP Q P and Q

False False FalseFalse True FalseTrue False FalseTrue True True

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Biê u thức logic

Ba ng chân ly cua phe p or

P Q P or QP Q P or Q

False False FalseFalse True TrueFalse True TrueTrue False TrueTrue True True

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Biê u thức logic

Bang chân ly cua phe p not

P not PP not P

False TrueTrue FalseTrue False

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Biê u thức logic

Co thê tao ra cac biêu thức logic phức tap từ cac biêu thức đơn gian hơn.Vi dVi du

not (P and Q)

Bang chân ly cua biêu thức trên, nhăm xac đinh gia tri g y , g true cu a biêu thức

P Q P and Q not (P and Q)

False False False TrueFalse True False TrueTrue False False True

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

True False False TrueTrue True True False

Dữ liê u kiê u boolean

Kiểu boolean là kiểu dữ liệu chỉ có hai giá trịtrue và false

C không có kiểu boolean chuẩnC không có kiểu boolean chuẩnDùng kiểu char hoặc int để thay thế (chỉ sử dụng 2 giá trị 0/1)Tự định nghĩa kiểu boolean sử dụng lệnh #define

ắ Nhắc lại: To an tử logic trong CPhe p and la : &&Phe p or la : ||Ph t l !Phep not la: !

Chu y:& va | không phải là toán tử logic, mà là các phép toán trên bit .

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Vi du

Giả sử: x = 10 y = 12Tức là x = 1010 y = 1100 trong hệ nhị phân

c = x & y c = 8c 14c = x | y

c = ~x 2

c = 14c = 65525c = 2c = x>>2

c = x<<2

c 2c = 40

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Câ u tru c re nha nh

Co hai câ u tru cCâu tru c ifCâu truc if

ifif-elseif-else-if

Câu tru c switch Câ hiê h hCâu truc re nhiêu nhanh

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Câ u tru c if – da ng 1

Cu pha pif (biêu thức điều kiện)

biể thứ điề kiệ<công việc>

Y nghi a: Nê biê thức điề

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

false

Y nghia: Nêu biêu thức điều kiện co gia tri true thi công việc được thực hiê n, ngược lại <công việc>

true

không làm gì cả.Trong đo: công việc la môt lê nh đơn hoăc la môt khôi lênh năm

<công việc>

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

đơn hoăc la mô t khôi lênh năm trong căp ngoăc { }

Vi du Value < 0

if (Value < 0) {Value = -Value; Value = -Value

true false

}Value Value

Chú ý: Biểu thức điều kiện luôn được đặt trong ngoặc ( )Nếu <công việc> chỉ có một lệnh thì không cần phải đặt vào cặp { }Biểu thức điều kiện có thể là 1 hằng chẳng hạn: (1==2) hoặc (1>2)Biểu thức điều kiện có thể là 1 hằng, chẳng hạn: (1==2) hoặc (1>2)Sử dụng các toán tử logic ||, &&, ! để biểu diễn các biểu thức điều kiện phức tạp, chẳng hạn: ((x > y) && (x + y 10))

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

((x > y) && (x + y == 10))

Vi du: Sắp xếp giá trị của hai biến

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ví dụ: Cho biê t kê t qua đoan tri nh sau

int m = 5;int n = 10;if (m > n); m = m + 1;n = n + 1;

printf(“m = %d”, m);printf(“n = %d”, n);

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Câ u tru c if - da ng 2

Cu pha p

if (biêu thức điều kiện)if (biêu thức điều kiện)<công việc 1>

else<công việc 2>

Biểu thức điều kiện<công việc 2>

Y nghi a: Nêu biê u thức co true false

ggia tri true thi hanh đô ng 1 được thực hiê n ngược lai thi ha nh đông 2 được

<Công việc 1> <Công việc 2>

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

g ợthực hiê n

Vi du : Ti m max cu a hai sô

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ca c lê nh if lô ng nhau

Ca c lê nh if co thê lô ng nhau nhiê u câ p.Vi du :

if ( n < 0 ){printf(“%d la so am”,n);

}}else if ( n > 0 ) {

printf(“%d la so duong”,n);}else {

i f( %d l kh )

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

printf(“%d la so khong”,n);}

Cấu trúc rẽ nhiều nhánh switch

switch (<biểu thức>) {Cú pháp

case gt1 : congviec1; break;case gt2 : congviec2; break;case gt3 : congviec3; break;........

tN i N b kcase gtN : congviecN; break;default: congviecN+1;

}

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

}

Cấu trúc rẽ nhiều nhánh switch

Ý nghĩa: tương ứng với từng giá trị của <biểu thức> mà <công việc i> được thực hiện. Trong trường hợp iá t ị ủ biể thứ khô t ù ới iá t ị à thì giá trị của biểu thức không trùng với giá trị nào, thì

<công việc thứ N+1> được thực hiện.Chú ýChú ý

<biểu thức> phải có kiểu dữ liệu là kiểu đếm được: char, int, long int. Không thể là kiểu thực (double, float).Sau mỗi <công việc> phải có lệnh break nếu không thì các Sau mỗi <công việc> phải có lệnh break, nếu không thì các công việc sau nó đều được thực hiện cho đến khi gặp 1 lệnh break khác.

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ví dụ:

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ba i tâ p tại lớp

Bai 2.1: Ha y viê t chương tri nh ti m max cu a ba sô nguyên a,b,c.

Bai 2.2: Lâ p tri nh nhâ n va o toa đô 3 điê m trên hê truc toa đô, ha y cho biê t điêm gâ n với điêm hê tru c toa đô , hay cho biêt điêm gân với điêm (0,0) nhâ t.

Bai 2.3: Ha y viêt chương tri nh đôi gia tri hai biê n co kiê u sô cho nhau ma không được sử dung biên trung gian.

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

du ng biên trung gian.

II. Các cấu trúc lặpII. Các cấu trúc lặp

Các cấu trúc lặp

Có ba cấu trúcfor for whiledo while do-while

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Câ u tru c for

Cu phapfor (Khởi tao ; Biêu thức 1; Biêu thức 2)

<công việc>

Vi duVi dufor (i = 0; i < 3; ++i) {

printf(“gia tri cua i la: %d”, i);printf(“\n”);

}

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Khởi ta o

biêu thức 1

true falseSơ đô khối

Công việccủa lệnh for

biểu thức 2biểu thức 2

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Vi du

Tinh gia tri biê u thức: S = 1*2 + 2*3 + ... (n-1)*nint i = 0;long S = 0;int n = 3;for (i = 1; i < n; i++) {

S +=i*(i+1);}}printf(“S = %d”, S);

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ghi chú

ể ể<Biểu thức 1> phải là biểu thức logic.Trong <biểu thức 2> cần có lệnh làm thay đổi giá trị của <biểu thức 1>, nếu không thì vòng lặp sẽ vô hạnbiểu thức 1 , nếu không thì vòng lặp sẽ vô hạnCác vòng lặp for có thể lồng nhau.

Ví dụ: for (i 1; i < 3; i++)for (i = 1; i < 3; i++)

for (j = 1; j < 3; j++) { printf(“a”); }

Có thể ó hiề biế h t ù 1 ò fCó thể có nhiều biến chạy trong cùng 1 vòng for.Ví dụ:

for ( i = 1, j = 1; (i+j) < 4; i++, j++) { printf(“a”); }

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ví dụ: Đưa ra các số có 3 chữ số mà tổng Ví dụ: Đưa ra các số có 3 chữ số mà tổng của các chữ số bằng 10

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Cấu trúc while

Cú pháp

while ( biểu thức )

ô iệ<công việc>

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ý nghĩaBiểu thức

được xác định giá trịtại mỗi lần bắt đầu

th hiệ ò g lặ

thực hiện vòng lặp

biểu thức

Nếu biểu thứccho giá trị True , thì

Công việc

true falsecông việc được thực hiện Nếu biểu thức chogiá trị false thì

chương trình sẽg ệtiếp tục với đoạnlệnh tiếp theo

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Ví dụ: Tính giá trị trung bình

int n = 4;int i = 0;double value, sum = 0;while (i < n) {scanf(“%d”, &value); /* nhap 1 so tu ban phim */sum += value;

i++i; }double TB = sum / i ;

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

double TB = sum / i ;printf("TB: %6.2f“, TB);

Câ u tru c do - while

Cu phapdo

<công việc>while (biê u thức)

Công việc

Y nghia:Thực hiên công việcNê biê thứ i t i

true

Biểu thứcNêu biêu thức co gia tri True thi quay lai thực hiên công việc. false

Biểu thức

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Lăp như thê cho đên khi Biêu thức co gia tri False

Vi du

Tinh tô ng S theo vi du trênint x = 0;int x 0;int n = 10;long int S = 0;g ;do {S +=++x;;} while (x<n);printf(“S = %ld”, S);

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

p ( )

Ba i tâ p tại lớp

Bai 2.4: ha y ti nh tô ng S = 1*3*5 + 3*5*7+..+n*(n+2)*(n+4) Bai 2.5: Cho sô nguyên n (n<2 ti ). Ha y ti nh tô ng cac

chữ sô cua n.Bai 2 6: Tim tât ca ca c sô đôi xứng co 5 chữ sô Bai 2.6: Tim tât ca cac sô đôi xứng co 5 chữ sô.Bai 2.7: Ti m tâ t ca cac sô nguyên tô nho hơn sô N cho trước.

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Recommended