Bài giảng Lập trình cơ bản - Bài 7: Các cấu trúc điều khiển

ppt 44 trang phuongnguyen 3440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình cơ bản - Bài 7: Các cấu trúc điều khiển", để 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:

  • pptbai_giang_lap_trinh_co_ban_bai_7_cac_cau_truc_dieu_khien.ppt

Nội dung text: Bài giảng Lập trình cơ bản - Bài 7: Các cấu trúc điều khiển

  1. KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM Bài 7: Các cấu trúc điều khiển Bài giảng LẬP TRÌNH CƠ BẢN
  2. Nội dung ▪ Tìm hiểu về cấu trúc lựa chọn • Lệnh if • Lệnh if – else • Lệnh nhiều if • Lệnh if lồng nhau ▪ Lệnh switch 2 Các cấu trúc điều khiển
  3. Nội dung  Tìm hiểu về vòng lặp ‘for’ trong C  Làm việc với toán tử dấu phẩy (,)  Tìm hiểu về các vòng lặp lồng nhau  Tìm hiểu về vòng lặp ‘while’ và ‘do-while’  Làm việc với các lệnh break và continue  Tìm hiểu về hàm exit() 3 Các cấu trúc điều khiển
  4. Câu lệnh điều kiện  Các câu lệnh điều kiện cho phép chúng ta thay đổi hướng thực hiện của chương trình  Một câu lệnh điều kiện trả về giá trị đúng hoặc sai  Ví dụ: Để xác định một số là số chẵn hay số lẻ chúng ta tiến hành như sau : 1) Nhập vào một số 2) Chia số đó cho 2 để xác định số dư 3) Nếu số dư là 0, số đó là “SỐ CHẴN” 4) Ngược lại số dư không bằng 0, số đó là “SỐ LẺ” 4 Các cấu trúc điều khiển
  5. Các cấu trúc lựa chọn C cung cấp hai dạng câu lệnh lựa chọn 5 Các cấu trúc điều khiển
  6. Lệnh if  Cú pháp: if (expression) statement;  Nếu biểu thức của lệnh if có giá trị đúng (true), khối lệnh theo sau lệnh if được thực thi 6 Các cấu trúc điều khiển
  7. Lệnh if (tt.) Chương trình hiển thị các giá trị dựa vào một điều kiện. #include void main(){ int x, y; char a = ‘y’; x = y = 0; if (a == ‘y’){ x += 5; printf(“The numbers are %d and \t%d”,x,y); } } 7 Các cấu trúc điều khiển
  8. Lệnh if – else if (expression) statement; else statement; 8 Các cấu trúc điều khiển
  9. Lệnh if – else (tt.) ▪ Nếu biểu thức của if trả về giá trị true, khối lệnh theo sau lệnh if được thực thi ▪ Nếu biểu thức của if không trả về giá trị true thì các lệnh theo sau else được thực thi ▪ Lệnh else là một tùy chọn. Lệnh else được dùng để thực thi các lệnh khi biểu thức trong if trả về giá trị false 9 Các cấu trúc điều khiển
  10. Lệnh if – else (tt.) Chương trình xác định một số là số chẵn hay lẻ #include void main(){ int num ,res ; printf(“Enter a number :”); scanf(“%d”,&num); res = num % 2; if (res == 0) printf(“Then number is Even”); else printf(“The number is Odd”); } 10 Các cấu trúc điều khiển
  11. Lệnh if–else–if Cú pháp: if (expression) statement; else if (expression) statement; else if (expression) statement; else statement; Các cấu trúc điều khiển
  12. Lệnh if–else–if (tt.) ▪ Lệnh if - else - if còn được gọi là lệnh if-else-if bậc thang ▪ Các biểu thức được xác định giá trị theo hướng từ trên xuống 12 Các cấu trúc điều khiển
  13. Lệnh if–else–if (tt.) Chương trình hiển thị thông báo dựa vào một giá trị : #include #include main() { int x; x = 0; clrscr (); printf(“Enter Choice (1 - 3) : “); scanf(“%d”, &x); if (x == 1) printf (“\nChoice is 1”); else if ( x == 2) printf (“\nChoice is 2”); else if ( x == 3) printf (“\nChoice is 3”); else printf (“\nInvalid Choice “); } 13 Các cấu trúc điều khiển
  14. Lệnh if lồng nhau  Lệnh if lồng nhau là một lệnh if được đặt trong một lệnh if hoặc else khác  Trong C, một lệnh else luôn kết hợp với một lệnh if gần nhất cùng khối lệnh nếu lệnh else đó chưa được kết hợp với một lệnh if nào khác 14 Các cấu trúc điều khiển
  15. Lệnh if lồng nhau (tt.) ◼ Cú pháp: ▪ Lệnh else bên trong được kết hợp với if(exp3) ▪ Theo chuẩn ANSI, một trình biên dịch hỗ trợ ít nhất là 15 mức lồng nhau Các cấu trúc điều khiển
  16. Lệnh if lồng nhau (tt.) #include #include void main (){ int x, y; x = y = 0; clrscr (); printf (“Enter Choice (1 - 3) : “); scanf (“%d”, &x); if (x == 1){ printf(“\nEnter value for y (1 - 5) : “); scanf (“%d”, &y); if (y <= 5) printf(“\nThe value for y is : %d”, y); else printf(“\nThe value of y exceeds 5 “); } else printf (“\nChoice entered was not 1”); } 16 Các cấu trúc điều khiển
  17. Lệnh switch ▪ Lệnh switch là một bộ lựa chọn đa hướng, nó so sánh giá trị của một biểu thức với một danh sách các hằng số nguyên hoặc hằng ký tự ▪ Khi gặp một sự so sánh khớp, các lệnh kết hợp với hằng đó được thực thi 17 Các cấu trúc điều khiển
  18. Lệnh switch (tt.)  Cú pháp: Các cấu trúc điều khiển
  19. Lệnh switch (tt.) Chương trình kiểm tra một ký tự thường được nhập vào là một nguyên âm, là ký tự ‘z’ hay là một phụ âm #include #include main (){ char ch; clrscr (); printf (“\nEnter a lower cased alphabet (a - z) : “); scanf(“%c”, &ch); còn tiếp 19 Các cấu trúc điều khiển
  20. Lệnh switch (tt.) if (ch ‘z’) printf(“\nCharacter not a lower cased alphabet”); else switch (ch) { case ‘a’ : case ‘e’ : case ‘i’ : case ‘o’ : case ‘u’ : printf(“\nCharacter is a vowel”); break; case ‘z’ : printf (“\nLast Alphabet (z) was entered”); break; default : printf(“\nCharacter is a consonant”); break; } } 20 Các cấu trúc điều khiển
  21. Vòng lặp là gì? Một đoạn mã lệnh trong chương trình thực hiện lặp đi lặp lại cho đến khi một điều kiện xác định được thỏa mãn 21 Các cấu trúc điều khiển
  22. 3 kiểu cấu trúc vòng lặp Vòng lặp for Vòng lặp while Vòng lặp do .while 22 Các cấu trúc điều khiển
  23. Vòng lặp for Cú pháp: for (initialize counter; conditional test; re-evaluation parameter){ statement } ▪ initialize counter là một lệnh gán để khởi tạo biến điều khiển của vòng lặp trước khi đi vào vòng lặp ▪ conditional test là một biểu thức quan hệ để chỉ định khi nào vòng lặp sẽ kết thúc  re-evaluation parameter định nghĩa cách thức thay đổi của biến điều khiển vòng lặp mỗi khi vòng lặp được thực thi Các cấu trúc điều khiển
  24. Vòng lặp for (tt.) ▪ Ba phần của vòng lặp for phải được phân cách bởi dấu chấm phẩy(;)  Phần lệnh tạo nên thân vòng lặp có thể là một lệnh đơn hoặc một lệnh ghép (một tập nhiều lệnh) ▪ Vòng lặp for tiếp tục được thực thi khi biểu thức kiểm tra điều kiện vẫn có giá trị true. Khi điều kiện trở thành false, chương trình thực hiện lệnh theo sau vòng lặp for 24 Các cấu trúc điều khiển
  25. Vòng lặp for - Ví dụ /*This program demonstrates the for loop in a C program*/ #include main() { int count; printf(“\tThis is a \n”); for(count = 1;count <=6;count++) printf(“\n\t\t nice”); printf(“\n\t\t world. \n”); } 25 Các cấu trúc điều khiển
  26. Toán tử dấu phẩy Vòng lặp for có thể được mở rộng bằng cách chứa nhiều giá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả của vòng lặp for Cú pháp: exprn1 , exprn2 ; #include main() { int i, j , max; printf(“Please enter the maximum value \n”); printf(“for which a table can be printed:“); scanf(“%d”, &max); for(i = 0 , j = max ; i <=max ; i++, j ) printf(”\n%d + %d = %d”,i, j, i + j); } 26 Các cấu trúc điều khiển
  27. Vòng lặp for lồng nhau Các vòng lặp for lồng nhau khi nó có dạng như sau for (i = 1; i<max1; i++) { for (j = 0; j < = max2; j++){ } } 27 Các cấu trúc điều khiển
  28. Vòng lặp for lồng nhau - Ví dụ #include main() { int i, j, k; i = 0; printf("Enter no. of rows :"); scanf("%d", &i); printf("\n"); for (j = 0; j < i ; j++){ printf("\n"); for (k = 0; k <= j; k++) /*inner for loop*/ printf("*"); } } 28 Các cấu trúc điều khiển
  29. Vòng lặp while Cú pháp while (condition is true) statement ; Vòng lặp while lặp lại các lệnh trong khi một biểu thức điều kiện mang giá trị True 29 Các cấu trúc điều khiển
  30. Vòng lặp while -Ví dụ /*A simple program using the while loop*/ #include main() { int count = 1; while( count <= 10) { printf(“\n This is iteration %d\n”,count); count++; } printf(“\n The loop is completed.\n”); } 30 Các cấu trúc điều khiển
  31. Vòng lặp do while Cú pháp do{ statement; } while (condition); ▪ Trong vòng lặp do while phần thân của vòng lặp được thực thi trước khi biểu thức điều kiện được kiểm tra ▪ Khi điều kiện mang giá trị False, vòng lặp do while sẽ được kết thúc, và điều khiển chuyển đến lệnh xuất hiện ngay sau lệnh while 31 Các cấu trúc điều khiển
  32. Vòng lặp do while - Ví dụ #include main (){ int num1, num2; num2 = 0; do { printf( "\nEnter a number : "); scanf(“%d”,&num1); printf( " No. is %d",num1); num2++; } while (num1 != 0); printf ("\nThe total numbers entered were %d", num2); /*num2 is decremented before printing because count for last integer (0) is not to be considered */ } 32 Các cấu trúc điều khiển
  33. Các lệnh chuyển điều khiển expression ▪ Lệnh return được sử dụng để trở về từ một hàm ▪ Thực hiện lệnh return để trở về vị trí mà tại đó hàm được gọi ▪ Lệnh return có thể có một giá trị đi cùng, giá trị này được trả về cho chương trình gọi 33 Các cấu trúc điều khiển
  34. Các lệnh chuyển điều khiển (tt.) label ▪ Lệnh goto chuyển điều khiển đến một câu lệnh bất kỳ khác bên trong cùng một hàm trong một chương trình C ▪ Điều này thật ra vi phạm đến qui luật của một ngôn ngữ lập trình cấu trúc. ▪ Chúng làm giảm độ tin cậy của chương trình và chương trình khó bảo trì. 34 Các cấu trúc điều khiển
  35. Các lệnh chuyển điều khiển (tt.) statement ▪ Lệnh break được sử dụng để kết thúc một mệnh đề case trong câu lệnh switch ▪ Nó cũng có thể được sử dụng để kết thúc ngang giữa vòng lặp ▪ Khi gặp lệnh break, vòng lặp sẽ kết thúc ngay và điều khiển được chuyển đến lệnh kế tiếp bên ngoài vòng lặp 35 Các cấu trúc điều khiển
  36. Lệnh break – Ví dụ #include main (){ int count1, count2; for(count1 = 1, count2 = 0; count1 <=100; count1++){ printf("Enter %d count2: ",count1); scanf("%d", &count2); if(count2==100) break; } } 36 Các cấu trúc điều khiển
  37. Các lệnh chuyển điều khiển (tt.) statement ▪ Lệnh continue dùng để bắt đầu thực hiện lần lặp kế tiếp của vòng lặp ▪ Khi gặp lệnh continue, các câu lệnh còn lại trong thân vòng lặp bị bỏ qua và điều khiển được chuyển đến lần lặp kế tiếp 37 Các cấu trúc điều khiển
  38. Lệnh continue – Ví dụ #include main () { int num; for(num = 1;num<=100; num++){ if(num % 9 == 0) continue; printf("%d\t",num); } } 38 Các cấu trúc điều khiển
  39. Các lệnh chuyển điều khiển (tt) hàm ▪ Hàm exit() được sử dụng để thoát khỏi chương trình ▪ Sử dụng hàm này sẽ kết thúc ngay chương trình và điều khiển được chuyển về cho hệ điều hành 39 Các cấu trúc điều khiển
  40. Tóm tắt nội dung  Cấu trúc tuần tự  Cấu trúc rẽ nhánh (if, switch)  Cấu trúc lặp  for  while  do while 40 Các cấu trúc điều khiển
  41. Thảo luận  So sánh các vòng lặp  Ý nghĩa sử dụng của từng loại vòng lặp  Hạn chế khi sử dụng break 41 Các cấu trúc điều khiển
  42. CÂU HỎI VÀ BÀI TẬP  Bài 6 -Viết chương trình nhập số n, tìm và in các số nguyên tố thuộc 2 n  Bài 7: Kiểm tra số fibonaxi  Bài 8: Kiểm tra số hoàn chỉnh  Bài 9: Tính sin(x) theo công thức khai triển Taylor với độ chính xác cho trước  Bài 10: Nhập dãy có n số thực, hãy xác định trật tự của dãy đó (tăng, giảm, điều hay không có thứ tự)  Bài 11: Nhập n, in n số fibonaxi đầu tiên  Bài 12: Nhập số n, in các số nguyên tố 2 n  Bài 13: Viết chương trình nhập dãy các số nguyên dương từ bàn phím, cho tới khi nhập số âm thì kết thúc nhập, tìm giá trị lớn nhất và số phần tử bằng giá trị lớn 42 Các cấu trúc điều khiển
  43. CÂU HỎI VÀ BÀI TẬP  - C1: tính cos(x) theo công thức khai triển Taylor  - C2: Tính tổng 1/(i!) với i: 1÷n  - C3: Tìm n số nguyên tố đầu tiên  - C4: Nhập n số thực, tìm và in giá trị lớn nhất, nhỏ nhất  - C5: Viết chương trình nhập dãy các số nguyên dương từ bàn phím, cho tới khi nhập số âm thì kết thúc nhập, tìm giá trị lớn nhất và số phần tử bằng giá trị lớn nhất đó  - C6: Viết chương trình chọn ngẫu nhiên một kí tự c nào đó, cho phép lặp nhập một kí tự từ bàn phím, nếu trùng với c thì thông báo chọn đúng và kết thúc  - C7: Viết chương in bảng cửu chương ra màn hình  - C8: Tính đại lượng với n cho trước S= 2 + 4 + + 2(n −1) + 2n 43 Các cấu trúc điều khiển
  44. HỎI VÀ ĐÁP Máy tính điện tử và xử lý thông tin