Upload
others
View
5
Download
0
Embed Size (px)
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