Các lệnh có cấu trúc trong C

20 940 3
Các lệnh có cấu trúc trong C

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các lệnh có cấu trúc trong C

Lập trình Chương CÁC LỆNH CĨ CẤU TRÚC Học xong chương này, sinh viên nắm vấn đề sau: ƒ Khối lệnh C ƒ Cấu trúc rẽ nhánh ƒ Cấu trúc lựa chọn ƒ Cấu trúc vòng lặp ƒ Các câu lệnh “đặc biệt” I KHỐI LỆNH Một dãy khai báo với câu lệnh nằm cặp dấu ngoặc móc { } gọi khối lệnh Ví dụ 1: { char ten[30]; printf(“\n Nhap vao ten cua ban:”); scanf(“%s”, ten); printf(“\n Chao Ban %s”,ten); } Ví dụ 2: #include #include int main () { /*đây đầu khối*/ char ten[50]; printf("Xin cho biet ten cua ban !"); scanf("%s",ten); getch(); return 0; } /*đây cuối khối*/ Một khối lệnh chứa bên nhiều khối lệnh khác gọi khối lệnh lồng Sự lồng khối lệnh không hạn chế Minh họa: { … lệnh; { … lệnh; { … lệnh; } … lệnh; } … lệnh; } Trang 44 Lập trình Lưu ý phạm vi tác động biến khối lệnh lồng nhau: - Trong khối lệnh khác hay khối lệnh lồng khai báo biến tên Ví dụ 1: { … lệnh; { int a,b; /*biến a, b khối lệnh thứ nhất*/ … lệnh; } …lệnh; { int a,b; /*biến a,b khối lệnh thứ hai*/ … lệnh; } } Ví dụ 2: { int a, b; /*biến a,b khối lệnh “bên ngoài”*/ … lệnh; { int a,b; /*biến a,b bên khối lệnh con*/ } } - Nếu biến khai báo bên khối lệnh không trùng tên với biến bên khối lệnh sử dụng bên khối lệnh - Một khối lệnh sử dụng biến bên ngồi, lệnh bên ngồi khơng thể sử dụng biến bên khối lệnh Ví dụ: { int a, b, c; …lệnh; { int c, d; …lệnh; } } II CẤU TRÚC RẼ NHÁNH Cấu trúc rẽ nhánh cấu trúc dùng phổ biến ngơn ngữ lập trình nói chung Trong C, có hai dạng: dạng khơng đầy đủ dạng đầy đủ II.1 Dạng không đầy đủ Cú pháp: if () Trang 45 Lập trình Lưu đồ cú pháp: Bt đkiện Đúng Cơng việc Sai Giải thích: thể câu lệnh hay khối lệnh Kiểm tra Biểu thức điều kiện trước Nếu điều kiện (!= 0) thực câu lệnh khối lệnh liền sau điều kiện Nếu điều kiện sai bỏ qua lệnh khối lệnh liền sau điều kiện (những lệnh khối lệnh sau thực bình thường khơng phụ thuộc vào điều kiện sau if) Thốt Ví dụ 1: u cầu người thực chương trình nhập vào số thực a In hình kết nghịch đảo a a ≠ #include #include int main () { float a; printf("Nhap a = "); scanf("%f",&a); if (a !=0 ) printf("Nghich dao cua %f la %f",a,1/a); getch(); return 0; } Giải thích: - Nếu nhập vào a ≠ câu lệnh printf("Nghich dao cua %f la %f",a,1/a)được thực hiện, ngược lại câu lệnh không thực - Lệnh getch() luôn thực khơng phải “lệnh liền sau” điều kiện if Ví dụ 2: Yêu cầu người chạy chương trình nhập vào giá trị số a b, a lớn b in thơng báo “Gia trị a lớn giá trị b”, sau hiển thị giá trị cụ thể số lên hình #include #include int main () { int a,b; printf("Nhap vao gia tri cua so a, b!"); scanf("%d%d",&a,&b); if (a>b) Trang 46 Lập trình { printf("\n Gia tri cua a lon hon gia tri cua b"); printf("\n a=%d, b=%d",a,b); } getch(); return 0; } Giải thích: Nếu nhập vào giá trị a lớn giá trị b khối lệnh: { printf("\n Gia tri cua a lon hon gia tri cua b"); printf("\n a=%d, b=%d",a,b); } thực hiện, ngược lại khối lệnh không thực II.2 Dạng đầy đủ Cú pháp: if () else Lưu đồ cú pháp: Biểu thức điều kiện Sai Đúng Công việc Cơng việc Giải thích: Cơng việc 1, công việc thể câu lệnh hay khối lệnh Đầu tiên Biểu thức điều kiện kiểm tra trước Nếu điều kiện thực cơng việc Nếu điều kiện sai thực cơng việc Các lệnh phía sau cơng việc khơng phụ thuộc vào điều kiện Thốt Ví dụ 1: Yêu cầu người thực chương trình nhập vào số thực a In hình kết nghịch đảo a a ≠ 0, a =0 in thông báo “Khong the tim duoc nghich dao cua a” #include #include 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”); Trang 47 Lập trình } getch(); return 0; Giải thích: - Nếu nhập vào a ≠ câu lệnh printf("Nghich dao cua %f la %f",a,1/a)được thực hiện, ngược lại câu lệnh printf(“Khong the tim duoc nghich dao cua a”) thực - Lệnh getch() luôn thực Ví dụ 2: Yêu cầu người chạy chương trình nhập vào giá trị số a b, a lớn b in thơng báo “Gia trị a lớn giá trị b, giá trị số”, ngược lại in hình câu thơng báo “Giá trị a nhỏ giá trị b, giá trị số” #include #include int main () { int a, b; printf("Nhap vao gia tri cua so a va b !"); scanf("%d%d",&a,&b); if (a>b) { printf("\n a lon hon b”); printf("\n a=%d b=%d ",a,b); } else { printf("\n a nho hon hoac bang b"); printf("\n a=%d b=%d",a,b); } printf("\n Thuc hien xong lenh if"); getch(); return 0; } Giải thích: - Nếu nhập vào 40 30 ↵ kết hiển hình a lon hon b a=40 b=30 Thuc hien xong lenh if - Còn nhập 40 50 ↵ kết hiển hình a nho hon hoac bang b a=40 b=50 Thuc hien xong lenh if Ví dụ 3: Yêu cầu người thực chương trình nhập vào số nguyên dương tháng năm in số ngày tháng - Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12 - Tháng có 30 ngày: 4, 6, 9, 10 - Tháng có 28 29 ngày : #include #include Trang 48 Lập trình int main () { int thg; printf("Nhap vao thang nam !"); scanf("%d",&thg); if (thg==1||thg==3||thg==5||thg==7||thg==8||thg==10||thg==12) printf("\n Thang %d co 31 ",thg); else if (thg==4||thg==6||thg==9||thg==11) printf("\n Thang %d co 30 ngay",thg); else if (thg==2) printf("\n Thang %d co 28 hoac 29 ngay",thg); else printf("Khong co thang %d",thg); printf("\n Thuc hien xong lenh if"); getch(); return 0; } Giải thích: - Nếu nhập vào số 1, 3, 5, 7, 8, 10, 12 kết xuất hình Thang co 31 Thuc hien xong lenh if - Nếu nhập vào số 4, 6, 9, 11 kết xuất hình Thang co 30 Thuc hien xong lenh if - Nếu nhập vào số kết xuất hình Thang co 28 hoac 29 Thuc hien xong lenh if - Nếu nhập vào số nhỏ lớn 12 kết xuất hình Khong co thang Thuc hien xong lenh if Trong số mà nhập vào Lưu ý: - Ta sử dụng câu lệnh if…else lồng Trong trường hợp if…else lồng else kết hợp với if gần chưa có else - Trong trường hợp câu lệnh if “bên trong” khơng có else phải viết cặp dấu {} (coi khối lệnh) để tránh kết hợp else if sai Ví dụ 1: if ( so1>0) if (so2 > so3) a=so2; else /*else if (so2>so3) */ a=so3; Ví dụ 2: if (so1>0) { if (so2>so3) a=so2; } /*lệnh if khơng có else*/ Trang 49 Lập trình else /*else if (so1>0)*/ a=so3; III CẤU TRÚC LỰA CHỌN Cấu trúc lựa chọn cho phép lựa chọn nhiều trường hợp Trong C, câu lệnh switch Cú pháp: switch () { case giá trị 1: Khối lệnh thực công việc 1; break; … case giá trị n: Khối lệnh thực công việc n; break; [default : Khối lệnh thực công việc mặc định; break;] } Lưu đồ: Tính giá trị =Giá trị 1 Đúng Sai =Giá trị Đúng Sai =Giá trị n Sai Đúng Công việc Công việc Công việc n Công việc n+1 Thốt Giải thích: - Tính giá trị biểu thức trước - Nếu giá trị biểu thức giá trị thực cơng việc Trang 50 Lập trình - Nếu giá trị biểu thức khác giá trị so sánh với giá trị 2, giá trị thực cơng việc - Cứ thế, so sánh tới giá trị n - Nếu tất phép so sánh sai thực công việc mặc định trường hợp default Lưu ý: - Biểu thức switch() phải có kết giá trị kiểu số nguyên (int, char, long, …) - Các giá trị sau case phải kiểu số ngun - Khơng bắt buộc phải có default Ví dụ 1: Nhập vào số nguyên, chia số nguyên cho lấy phần dư Kiểm tra phần dư in thơng báo “số chẵn”, số dư in thơng báo “số lẻ” #include #include int main () { int songuyen, phandu; clrscr(); printf("\n Nhap vao so nguyen "); scanf("%d",&songuyen); phandu=(songuyen % 2); switch(phandu) { case 0: printf("%d la so chan ",songuyen); break; case 1: printf("%d la so le ",songuyen); break; } getch(); return 0; } Ví dụ 2: Nhập vào số nguyên phép toán - Nếu phép tốn ‘+’, ‘-‘, ‘*’ in kết qua tổng, hiệu, tích số - Nếu phép tốn ‘/’ kiểm tra xem số thứ có khác khơng hay khơng? Nếu khác khơng in thương chúng, ngược lại in thông báo “khong chia cho 0” #include #include int main () { int so1, so2; float thuong; char pheptoan; clrscr(); printf("\n Nhap vao so nguyen "); scanf("%d%d",&so1,&so2); fflush(stdin); /*Xóa ký tự enter vùng đệm trước nhập phép toán */ printf("\n Nhap vao phep toan "); scanf("%c",&pheptoan); switch(pheptoan) { Trang 51 Lập trình case '+': printf("\n %d + %d =%d",so1, so2, so1+so2); break; case '-': printf("\n %d - %d =%d",so1, so2, so1-so2); break; case '*': printf("\n %d * %d =%d",so1, so2, so1*so2); break; case '/': if (so2!=0) { thuong=float(so1)/float(so2); printf("\n %d / %d =%f", so1, so2, thuong); } else printf("Khong chia duoc cho 0"); break; default : printf("\n Chua ho tro phep toan %c", pheptoan); break; } getch(); return 0; } Trong ví dụ trên, phải xóa ký tự vùng đệm trước nhập phép tốn? Ví dụ 3: u cầu người thực chương trình nhập vào số nguyên dương tháng năm in số ngày tháng - Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12 - Tháng có 30 ngày: 4, 6, 9, 10 - Tháng có 28 29 ngày : - Nếu nhập vào số 12 in câu thơng báo “khơng có tháng “ #include #include int main () { int thang; clrscr(); printf("\n Nhap vao thangs nam "); scanf("%d",&thang); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("\n Thang %d co 31 ",thang); break; case 4: case 6: case 9: case 11: printf("\n Thang %d co 30 ",thang); break; Trang 52 Lập trình case 2: printf ("\ Thang co 28 hoac 29 ngay"); break; default : printf("\n Khong co thang %d", thang); break; } getch(); return 0; } Trong ví dụ trên, phải sử dụng case 1:, case 3:, …case 12: ? IV CẤU TRÚC VỊNG LẶP Cấu trúc vịng lặp cho phép lặp lại nhiều lần công việc (được thể câu lệnh hay khối lệnh) thỏa mãn điều kiện cụ thể IV.1 Vòng lặp for Lệnh for cho phép lặp lại công việc điều kiện sai Cú pháp: for (Biểu thức 1; biểu thức 2; biểu thức 3) Lưu đồ: Begin Tính giá trị Biểu thức Biểu thức End S Đ Cơng việc Tính giá trị Biểu thức Giải thích: : thể câu lệnh hay khối lệnh Thứ tự thực câu lệnh for sau: B1: Tính giá trị biểu thức B2: Tính giá trị biểu thức Trang 53 Lập trình - Nếu giá trị biểu thức sai (=0): thoát khỏi câu lệnh for - Nếu giá trị biểu thức (!=0): thực B3: Tính giá trị biểu thức quay lại B2 Một số lưu ý sử dụng câu lệnh for: - Khi biểu thức vắng mặt coi ln ln - Biểu thức 1: thông thường phép gán để khởi tạo giá trị ban đầu cho biến điều kiện - Biểu thức 2: biểu thức kiểm tra điều kiện sai để dừng vòng lặp - Biểu thức 3: thông thường phép gán để thay đổi giá trị biến điều kiện - Trong biểu thức có nhiều biểu thức Các biểu thức phân biệt dấu phẩy Ví dụ 1: Viết đoạn chương trình in dãy số nguyên từ đến 10 #include #include int main () { int i; clrscr(); printf("\n Day so tu den 10 :"); for (i=1; i

Ngày đăng: 16/08/2012, 11:34

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan