1 LẬP TRÌNH CĂN BẢN CÁC LỆNHCÓCẤU TRÚC 2 Nộidung chươngnày l Khối lệnh trongC l Cấu trúc rẽ nhánh l Cấu trúc lựa chọn l Cấu trúc vòng lặp l Các câu lệnh“đặc biệt” 3 Khối lệnh trongC (1) l Là1 dãy các khai báo cùng với các câu lệnh nằm trong cặp dấu ngoặc móc { và }. 4 Khối lệnh trongC (2) l 1khối lệnh cóthể chứa nhiều khối lệnh khác gọi là khối lệnh lồng nhau (không hạn chế). 5 Phạm vi các biến l Cóthể khai báo các biến cùng tên trong các khối. l Nếu một biến được khai báo bên ngoài khối lệnh vàkhông trùng tên với biến bên trong khối lệnh thìnócũng dùng đượcbên trong khối. l Một khối lệnh con cóthể sử dụng các biến bên ngoài, nhưng điều ngược lại không đúng. 6 Cấu trúc rẽ nhánh(if) l Statement được thực hiện nếu boolean_expression cógiátrị đúng (true), !=0. l Khối else làtùy chọn boolean_expression !=0 => Statement1 được thực hiện boolean_expression ==0 => Statement2 được thực hiện 7 Vídụ-Lệnh if #include <stdio.h> #include <conio.h> int main (){ float a; printf("Nhapa = ");scanf("%f",&a); if (a !=0 ) printf("Nghich dao cua%f la %f",a,1/a); getch(); return 0; } 8 Vídụ-Lệnh if-else #include <stdio.h> #include <conio.h> int main (){ float a; printf("Nhap a = "); scanf("%f",&a); if (a !=0 ) printf("Nghich dao cua %f la %f",a,1/a); else printf(“Khong the tim duoc nghich dao cua a”); getch(); return 0; } 9 Câu lệnh vàkhối lệnh l C cho phép nhóm các câu lệnh liên tiếp vào 1 khối. l 1 khối lệnh cóthể được dùng như 1 lệnh đơn. l Vídụ: 10 Nhầm lẫn khi dùng if l Chương trình trên sai ở đâu? 11 Chúý khi dùng if-else l Câu lệnh if-else lồng nhau l else sẽ kết hợp với if gần nhất chứa cóelse l Trong trường if bên trong không có else thìphải viết nó trong cặp dấu {} để tránh sự kết hợp else if sai. l Vídụ 12 Cấu trúc lựa chọn (switch-case) (1) l C cung cấp 1 cấu trúc đẹp -dùng 1 dãy các câu lệnh if. 13 Cấu trúc lựa chọn (switch-case) (2) l switch-case cóthể đưa đến mã máy (machine code) hiệu quả hơn (vìjump tables cóthể được dùng) 14 Cấu trúc lựa chọn (switch-case) (3) l Cúpháp: l Tính giátrị của biểu thức expr trước. l Nếu giátrị expr bằng value1 thìthực hiện statement_sequence1 rồi thoát. l Nếu giátrị expr khác value1 thìso sánh nóvới value2, nếu bằng value2 thìthực hiện statement_sequence2 rồi thoát. l Cứ như thế, so sánh tới giátrị n. l Nếu tất cả các phép so sánh trên đều sai thìthực hiện default_statements của trường hợp default. 15 Cấu trúc lựa chọn (switch-case) (4) l Các chúý: l Kiểu của expr vàcác valuei phải làkiểu số nguyên (int, chat, long, …). l Nếu break/return vắng mặt, câu lệnh trong các case bên dưới cóthể được thực hiện cho đến khi gặp break/return hoặc kết thúc lệnh switch. 16 Vídụ-switch-case (1) 17 Vídụ-switch-case (2) In ra số ngày của 1 tháng 18 Cấu trúc lặp l Cho phép lặp lại thực hiện 1 công việc nhiều lần. l Có2 loại: l Lặp với số lần xác định l for l Lặp với số lần không xác định l while l do-while 19 Vòng lặp for (1) l Thứ tự thực hiện: B1: Tính giátrị biểu thức 1 B2: Tính giátrị biểu thức 2 l Nếu giátrị biểu thức 2 là sai (==0) => thoát khỏi for l Nếu giátrị biểu thức 2 là đúng (!=0) => thực hiện <Công việc> B3: Tính giátrị biểu thức 3 rồi quay lại B2 for (Biểu thức 1; biểu thức 2; biểu thức 3) <Công việc>; 20 Vòng lặp for (2) 21 Vòng lặp for (2) l Chương trình in dãy số nguyên từ 1 10 output 22 Vòng lặp for (3) l Nhập số nguyên n. Tính tổng các số nguyên từ 1 n. output 23 Vòng lặp while (1) l <Công việc>: cóthể là1 câu lệnh hay 1 khối lệnh. l Các bước thực hiện: - Kiểm tra Biểu thức điều kiện trước. - Nếu điều kiện sai (==0) thì thoát khỏi lệnh while. - Nếu điều kiện đúng (!=0) thì thực hiện công việc rồi quay lại kiểm tra điều kiện tiếp. while (Biểu thức điều kiện) <Công việc>; 24 Vòng lặp while (2) l Chương trình in dãy số nguyên từ 1 10 output 25 Vòng lặp while (3) l Nhập số nguyên n. Tính tổng các số nguyên từ 1 n. output 26 Vòng lặp do-while (1) l <Công việc>: cóthể là1 câu lệnh hay 1 khối lệnh. l Các bước thực hiện: l Công việc được thực hiện trước, sau đó mới kiểm tra điều kiện. l Nếu điều kiện sai thìthoát khỏi lệnh do- while. l Nếu điều kiện còn đúng thìthực hiện công việc rồi quay lại kiểm tra điều kiện tiếp. do <Công việc> while (<Biểu thức điều kiện>); 27 Vòng lặp do-while (2) l Chương trình in dãy số nguyên từ 1 10 output 28 Vòng lặp do-while (3) l Nhập số nguyên n. Tính tổng các số nguyên từ1 n. output 29 So sánh các vòng lặp l Vòng lặp for/while: l Kiểm tra điều kiện trước thực hiện công việc sau. l Công việc cóthể không được thực hiệnlần nào. l Vòng lặp kết thúc khi nào điều kiện sai. l Vòng lặp do-while l Thực hiện công việc trước kiểm tra điều kiện sau. l Công việc được thực hiện ít nhất 1 lần. l Vòng lặp kết thúc khi nào điều kiện sai. 30 Câu lệnh đặc biệt l Lệnh break l Dùng để thoát khỏi vòng lặp hoặc switch-case. l Tiếp tục thực hiện lệnh liền sau đó. l Lệnh continue l Trong vòng lặp, khi gặp lệnh continue, chương trình sẽ bỏ qua các câu lệnh sau continue l for: quay lên tính trị cho biểu thức 3, rồi kiểm tra điều kiện coi cólặp tiếp không. l while/do-while: kiểm tra điều kiện coi cólặp tiếp không. . 1 LẬP TRÌNH CĂN BẢN CÁC LỆNHCÓCẤU TRÚC 2 Nộidung chươngnày l Khối lệnh trongC l Cấu trúc rẽ nhánh l Cấu trúc lựa chọn l Cấu trúc vòng lặp l Các câu lệnh đặc biệt” 3 Khối lệnh trongC. else if sai. l Vídụ 12 Cấu trúc lựa chọn (switch-case) (1) l C cung cấp 1 cấu trúc đẹp -dùng 1 dãy các câu lệnh if. 13 Cấu trúc lựa chọn (switch-case) (2) l switch-case cóthể đưa đến mã máy (machine. lệnh trong các case bên dưới cóthể được thực hiện cho đến khi gặp break/return hoặc kết thúc lệnh switch. 16 Vídụ-switch-case (1) 17 Vídụ-switch-case (2) In ra số ngày của 1 tháng 18 Cấu trúc