Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C

pdf 10 trang ngocly 10 Free
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_8_cac_cau_truc_lap_trinh_tro.pdf

Nội dung text: Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nội dung VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG 8.1. Cấu trúc lệnh khối 8.2. Cấu trúc rẽ nhánh 8.2.1. Cấu trúc if, if else TIN HỌC ĐẠI CƯƠNG 8.2.2. Cấu trúc lựa chọn switch Phần 3. Lập trình C 8.3. Cấu trúc lặp 8.3.1. Vòng lặp for 8.3.2. Vòng lặp while 8.4. Các lệnh thay đổi cấu trúc lập trình Bài 8. Các cấu trúc lập trình trong C 8.4.1. continue 8.4.2. break 2 8.1. Cấu trúc lệnh khối 8.1. Cấu trúc lệnh khối (2) • Thể hiện cấu trúc tuần tự • Lệnh khối lồng nhau: • Lệnh khối là dãy các câu lệnh được đặt trong cặp – Trong một lệnh khối có thể chứa lệnh khối khác dấu ngoặc nhọn {} – Sự lồng nhau là không hạn chế { { lenh_1; lenh; lenh_2; { . lenh; lenh_n; } • C cho phép khai báo biến trong lệnh khối, nhưng } phần khai báo phải nằm trước câu lệnh. } 3 4 1
  2. 8.1. Cấu trúc lệnh khối (2) 8.1. Cấu trúc lệnh khối (2) • Ví dụ: #include • Ví dụ (tiếp): #include // bat dau mot khoi lenh khac //Noi dung cua ham main() cung la mot khoi lenh { void main() int c; c = 10; { printf(“\n Gia tri cua c = %d day la c trong”,c); // khai bao bien printf(“\n Tang gia tri cua c them 10 don vi”); int c; c = c + 10; printf(“\n Gia tri cua c = %d day la c trong”,c); c = 10; } printf(“Gia tri cua c = %d day la c ngoai”,c); printf(“\n Gia tri cua c = %d day la c ngoai”,c); getch(); }// ket thuc khoi lenh cua ham main() 5 6 8.1. Cấu trúc lệnh khối (2) Nội dung • Kết quả: • 8.1. Cấu trúc lệnh khối Gia tri cua c = 10 day la c ngoai • 8.2. Cấu trúc rẽ nhánh – 8.2.1. Cấu trúc if, if else Gia tri cua c = 10 day la c trong – 8.2.2. Cấu trúc lựa chọn switch Tang gia tri cua c them 10 don vi • 8.3. Cấu trúc lặp Gia tri cua c = 20 day la c trong – 8.3.1. Vòng lặp for Gia tri cua c = 10 day la c ngoai – 8.3.2. Vòng lặp while • 8.4. Các lệnh thay đổi cấu trúc lập trình – 8.4.1. continue – 8.4.2. break 7 8 2
  3. 8.2.1. Cấu trúc if, if else Kết hợp lệnh khối • Cú pháp cấu trúc if if (bieu_thuc_dieu_kien) { if (bieu_thuc_dieu_kien) lenh_11; lenh; lenh _12; } • Cú pháp cấu trúc if else if (bieu_thuc_đieu_kien) if (bieu_thuc_đieu_kien) { lenh_21; lenh_1; lenh_22; else } lenh_2; else { lenh_31; lenh_32; 9 } 10 8.2.1. Cấu trúc if, if else (2) 8.2.1. Cấu trúc if, if else (tiếp) • Ví dụ: Bài toán tìm số lớn nhất trong 2 số thực a và b: • Ví dụ (tiếp): #include if(a max = b; void main() else { max = a; // khai bao bien printf(“\n So lon nhat trong 2 so float a, b; %.0f va %.0f la %.0f “,a,b,max); float max; getch(); printf(“ Nhap gia tri a va b: “); } //ket thuc ham main() scanf(“%f %f”,&a,&b); • Kết quả: Nhap vao 2 gia tri a va b: 23 247 So lon nhat trong hai so 23 va 247 la 247 11 12 3
  4. 8.2.2. Cấu trúc lựa chọn switch 8.2.2. Cấu trúc lựa chọn switch (2) • Cú pháp cấu trúc switch • Giá trị của biểu thức kiểm tra (bieu_thuc) switch (bieu_thuc) phải là số nguyên: { – Phải có kiểu dữ liệu là char, int, long. case gia_tri_1: lenh_1; [break]; • Tương ứng các giá trị sau case (gia_tri_1, case gia_tri_2: lenh_2; [break]; gia_tri_2, ) cũng phải là số nguyên. case gia_tri_n: lenh_n; [break]; [default: lenh_n+1; [break];] } 13 14 8.2.2. Cấu trúc lựa chọn switch (3) 8.2.2. Cấu trúc lựa chọn switch (4) • Ví dụ: Nhập vào số nguyên không âm, đưa ra • Ví dụ (tiếp): ngày trong tuần tương ứng (theo số dư khi switch(a % 7) chia cho 7). { #include case 0: printf(“ Chu nhat”); break; #include case 1: printf(“ Thu Hai”); break; void main() case 2: printf(“ Thu Ba”); break; case 3: printf(“ Thu Tu”); break; { case 4: printf(“ Thu Nam”); break; int a; case 5: printf(“ Thu Sau”); break; printf(“\nNhap mot gia tri so nguyen case 6: printf(“ Thu Bay”); break; khong am: “); } scanf(“%d”,&a); getch(); } 15 16 4
  5. 8.2.2. Cấu trúc lựa chọn switch (5) 8.2.2. Cấu trúc lựa chọn switch (6) #include • Bài tập: #include void main () – Trong một năm các tháng có 30 ngày là 4, 6, 9, { 11 còn các tháng có 31 ngày là 1, 3, 5, 7, 8, 10, int thang; clrscr(); printf("\n Nhap vao thang trong nam "); 12. Riêng tháng hai có thể có 28 hoặc 29 ngày. scanf("%d",&thang); – Hãy viết chương trình nhập vào 1 tháng, sau đó switch(thang) { đưa ra kết luận tháng đó có bao nhiêu ngày. case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("\n Thang %d co 31 ngay ",thang); break; 17 18 8.2.2. Cấu trúc lựa chọn switch (7) Nội dung case 4: • 8.1. Cấu trúc lệnh khối case 6: case 9: • 8.2. Cấu trúc rẽ nhánh case 11: – 8.2.1. Cấu trúc if, if else printf("\n Thang %d co 30 ngay ",thang); – 8.2.2. Cấu trúc lựa chọn switch break; • case 2: 8.3. Cấu trúc lặp printf ("\ Thang 2 co 28 hoac 29 ngay"); – 8.3.1. Vòng lặp for break; – 8.3.2. Vòng lặp while default : • 8.4. Các lệnh thay đổi cấu trúc lập trình printf("\n Khong co thang %d", thang); – 8.4.1. continue break; } – 8.4.2. break getch(); } 19 20 5
  6. 8.3.1. Vòng lặp for 8.3.1. Vòng lặp for (2) • Mục đích • Ví dụ: Đưa ra màn hình các số nguyên lẻ nhỏ hơn 100 – Dùng để thực hiện lặp đi lặp lại một công việc nào đó với #include số lần lặp xác định. #include • Cú pháp: void main() for(bieu_thuc_1;bieu_thuc_2;bieu_thuc_3) { { int i; day_cac_lenh; for(i = 1;i 1 3 5 7 9 11 13 15 17 19 #include 21 23 25 27 29 31 33 35 37 39 void main() { 41 43 45 47 49 51 53 55 57 59 int i; 61 63 65 67 69 71 73 75 77 79 for(i = 1;i<100;i+=2) { 81 83 85 87 89 91 93 95 97 99 printf(“%5d”,i); if((i+1)%20 ==0) printf(“\n”); } getch(); } 23 24 6
  7. 8.3.2. Vòng lặp while 8.3.2. Vòng lặp while (2) • Mục đích: – Dùng để thực hiện lặp đi lặp lại một công việc nào đó với • while và do{ } while: số lần lặp không xác định. – while: • Cú pháp: Có 2 dạng: • Kiểm tra điều kiện vòng lặp (tức là giá trị của biểu while (bieu_thuc) thức) trước rồi mới thực hiện lệnh. { • Các lenh sau while có thể không được thực hiện lần lenh; nào. } – do{ } while: hoặc • Thực hiện lenh trước rồi mới kiểm tra dieu_kien do của vòng lặp. { • Các lenh sau while được thực hiện ít nhất 1 lần dù lenh; bieu_thuc có giá trị như thế nào. } while (bieu_thuc); 25 26 8.3.2. Vòng lặp while (3) 8.3.2. Vòng lặp while (4) • Ví dụ: Nhập vào điểm của một sinh viên, nếu #include #include điểm đó không [0, 10] thì thông báo cho void main() người dùng nhập lại. { float diem; clrscr(); • Cách làm: printf(“Chuong trinh nhap diem sinh vien\n"); printf("Nhap diem (0 10) { lặp. printf("\nBan nhap khong dung!\n"); printf("Ban hay nhap lai (0<=diem<=10):"); Sử dụng vòng lặp while scanf("%f",&diem); } printf("\nDiem ban vua nhap la: %.2f“, diem); getch(); } 27 28 7
  8. 8.3.2. Vòng lặp while (5) 8.3.2. Vòng lặp while (5) #include void main() { float diem; clrscr(); printf(“Chuong trinh nhap diem sinh vien\n"); do { printf("Nhap diem (0 10) printf("\nBan nhap khong dung!\n"); }while (diem 10); printf("\nDiem ban vua nhap la: %.2f“, diem); getch(); } 29 30 Sửa bài xác định ngày trong tháng Sửa bài xác định ngày trong tháng (2) #include case 4: #include int main () case 6: { case 9: int thang; clrscr(); case 11: do { printf("\n Thang %d co 30 ngay ",thang); printf("\n Nhap vao thang trong nam "); break; scanf("%d",&thang); default : }while(thang 12); printf("\n Thang %d co 31 ngay ", thang); break; switch(thang) } { getch(); case 2: printf ("\ Thang 2 co 28 hoac 29 ngay"); return 0; break; } 31 32 8
  9. Nội dung 8.4. Các lệnh thay đổi cấu trúc lập trình • 8.1. Cấu trúc lệnh khối • Đối với các lệnh lặp: • 8.2. Cấu trúc rẽ nhánh – while, do{ } while, hoặc for – 8.2.1. Cấu trúc if, if else – 8.2.2. Cấu trúc lựa chọn switch • Thay đổi việc thực hiện lệnh trong vòng lặp • 8.3. Cấu trúc lặp C cung cấp 2 lệnh: – 8.3.1. Vòng lặp for – continue; – 8.3.2. Vòng lặp while – break; • 8.4. Các lệnh thay đổi cấu trúc lập trình – 8.4.1. continue – 8.4.2. break 33 34 8.4. Các lệnh thay đổi cấu trúc lập trình 8.4. Các lệnh thay đổi cấu trúc lập trình • Ví dụ: • continue #include – Bỏ qua việc thực hiện các câu lệnh nằm sau lệnh #include void main() continue trong thân vòng lặp. { – int i; Chuyển sang thực hiện một lần lặp mới for(i = 1;i<=10;i++) • break { if(i == 5) continue; – Thoát khỏi vòng lặp ngay cả khi biểu thức điều printf(“%5d”,i); if(i==7) break; kiện của vòng lặp vẫn còn được thỏa mãn. } getch(); } 35 36 9
  10. 8.4. Các lệnh thay đổi cấu trúc lập trình #include #include void main() { • Ví dụ: Nhập vào 1 số nguyên. Kết luận số đó int N, i, OK = 1; printf("\nNhap gia tri N : "); scanf("%d", &N); là số nguyên tố hay là hợp số? if (n #include void main() { int N, i, OK = 1; printf("\nNhap gia tri N : "); scanf("%d", &N); if (n<2) printf("\nSo %d khong la so nguyen to va khong la hop so.", N); else { for (i=2; i<=(int)sqrt(N); i++) if (N%i == 0) { OK = 0; break; } if (OK) printf("\nSo %d la so nguyen to.", N); else printf("\nSo %d la hop so.", N); } getch(); } 39 10