Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 8: Các lệnh điều khiển và vòng lặp

pdf 74 trang phuongnguyen 2360
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 8: Các lệnh điều khiển và vòng lặp", để 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_he_thong_may_tinh_va_ngon_ngu_c_chuong_8_cac_lenh.pdf

Nội dung text: Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 8: Các lệnh điều khiển và vòng lặp

  1. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.1 Leänh ñôn vaø leänh phöùc 8.9 Leänh GOTO 8.2 Leänh IF 8.10 Leänh ROÃNG 8.3 Leänh SWITCH-CASE Baøi taäp cuoái chöông 8.4 Leänh WHILE 8.5 Leänh DO-WHILE 8.6 Leänh FOR 8.7 Leänh BREAK vaø leänh CONTINUE 8.8 Leänh RETURN
  2. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC (SIMPLE STATEMENT VAØ COMPOUND STATEMENT) - Leänh ñôn laø moät bieåu thöùc thuoäc loaïi baát kyø theo sau noù laø moät daáu chaám phaåy (;), do ñoù leänh ñôn coøn ñöôïc goïi laø leänh bieåu thöùc. Ví duï: Caùc leänh sau ñaây laø caùc leänh ñôn a = a + 1; b >>= 3; printf ( );
  3. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC (SIMPLE STATEMENT VAØ COMPOUND STATEMENT) -Leänh phöùc bao haøm moät hay nhieàu leänh ñôn ñöôïc bao beân trong caëp daáu ngoaëc nhoïn ({ }) vaø ñöôïc boä dòch C xem nhö laø moät leänh ñôn. Ví duï: Xeùt leänh if sau if (a > 0) { i += 2;  a++;  leänh phöùc, ñöôïc xem la ømoät leänh } n = a * i;
  4. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC (SIMPLE STATEMENT VAØ COMPOUND STATEMENT) Caùc leänh ñieàu khieån naøy coù theå ñöôïc chia ra laøm hai nhoùm: - Nhoùm leänh lieân quan ñeán vieäc reõ nhaùnh chöông trình: if- else, switch-case, goto, - Nhoùm leänh laëp: while, for, do_while
  5. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Leänh if cho pheùp laäp trình vieân thöïc hieän moät leänh ñôn hay moät leänh phöùc tuøy theo bieåu thöùc ñieàu kieän, neáu bieåu thöùc coù trò khaùc 0 thì leänh ñöôïc thöïc thi.
  6. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Daïng 1: if (bieu_thuc) leänh; - bieåu_thöùc laø moät bieåu thöùc baát kyø, coù theå coù haèng, bieán hoaëc goïi haøm trong ñoù vaø sau cuøng laø bieåu thöùc naøy seõ coù trò 0 hoaëc 1
  7. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Daïng 1: if (bieu_thuc) leänh; - leänh laø leänh thöïc thi cuûa if, coù theå laø leänh ñôn, phöùc hoaëc leänh roãng.
  8. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Daïng 2: if (bieu_thuc) leänh_1; else leänh_2;
  9. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Ví duï: Xeùt chöông trình sau ñaây #include #include main() { int n; clrscr(); printf (Moi nhap mot so: ); scanf (%d, &n); if (n % 2 == 0) printf ("So la so chan \n"); printf ("Moi ban nhan mot phim de ket thuc \n"); getch(); }
  10. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Ví duï: Xeùt chöông trình sau ñaây #include #include main() { int n; clrscr(); printf ("Moi nhap mot so: "); scanf ("%d", &n); if (n % 2 == 0) printf ("So la so chan \n"); vaãn coù daáu chaám phaåy else printf ("So la so le \n"); printf ("Moi ban nhan mot phim de ket thuc \n"); getch(); }
  11. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Ví duï: Xeùt chöông trình sau ñaây if (a > 0) if (a > 0) if (b > 0) { c = b + a; if (b > 0) else c = b – a; c = b – a; } else c = b – a;
  12. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF if (bieåu_thöùc_1) Khi thöïc hieän leänh if_else loàng lenh_1; nhau nhö theá naøy caùc bieåu thöùc else if (bieåu_thöùc_2) seõ ñöôïc tính laàn löôït töø treân lenh_2; xuoáng döôùi neáu coù bieåu thöùc else if (bieåu_thöùc_3) naøo khaùc 0, leänh töông öùng vôùi lenh_3; if ñoù seõ ñöôïc thi haønh vaø toaøn boä phaàn coøn laïi cuûa leänh if-else else ñöôïc boû qua. lenh_n;
  13. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF Ví duï: Chöông trình ví duï sau nhaäp vaøo moät kyù töï, kieåm tra kyù töï ñoù laø thöôøng, hoa, kyù soá hoaëc kyù töï keát thuùc file hay kyù töï khaùc. #include #include main() { char c; clrscr(); printf ("Nhap mot ky tu: "); c = getchar();
  14. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.2 LEÄNH IF if (c == EOF) printf ("Da den cuoi file \n"); else if (c >= 'a' && c = 'A' && c = '0' && c <= '9') printf ("ky tu so\n"); else printf ("ky tu khac\n"); getch(); }
  15. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE switch (bieåu_thöùc) : { case haèng_n: case haèng_1: leänh_n; leänh_1; break; break; default: case haèng_2: leänh; leänh_2; break; break; } :
  16. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE
  17. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE Ví duï: Vieát chöông trình nhaäp moät trò, neáu trò ñoù chia heát cho 5 thì coäng theâm 5 vaøo cho soá ñoù, neáu trò ñoù chia cho 5 dö 1 thì coäng theâm 1, töông töï cho 3, neáu laø soá khaùc thì baùo khoâng thoûa. #include #include main() { int so; clrscr(); printf ("Nhap mot so: "); scanf ("%d", &so);
  18. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE switch (so % 5) { case 0: so += 5; printf ("Tri la: %d\n", so); break; case 1: so += 1; printf ("Tri la: %d\n", so); break;
  19. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE case 3: so += 3; printf ("Tri la: %d\n", so); break; default: printf ("Khong thoa\n"); break; } getch(); }
  20. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE Leänh break cuoái moãi case seõ chuyeån ñieàu khieån chöông trình ra khoûi leänh switch. Neáu khoâng coù break, caùc leänh tieáp ngay sau seõ ñöôïc thöïc thi duø caùc leänh naøy coù theå laø cuûa moät case khaùc.
  21. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE Ví duï: Xeùt ví duï nhaäp thaùng vaø naêm, kieåm tra soá ngaøy trong thaùng. switch (thang) { case 4: case 6: case 9: case 11: so_ngay = 30; break;
  22. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.3 LEÄNH SWITCH-CASE case 2: if (nam % 4 == 0) so_ngay = 29; else so_ngay = 28; break; default: so_ngay = 31; break; } printf("Thang %d nam %d co %d ngay\n", thang, nam, so_ngay);
  23. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE Coù theå noùi while laø leänh laëp cô baûn cuûa ngoân ngöõ laäp trình coù caáu truùc, noù cho pheùp chuùng ta laëp laïi moät leänh hay moät nhoùm leänh trong khi ñieàu kieän coøn ñuùng (true-töùc khaùc 0). Cuù phaùp cuûa leänh while: while (bieu-thuc) lenh
  24. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE
  25. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE Ví duï: Chöông trình sau ñaây seõ in ra maøn hình 10 soá ngaãu nhieân töø 0 ñeán 99. #include #include #include > #include main() { int i = 1; clrscr(); randomize(); printf ("So ngau nhien trong khoang 0- 99 la: ");
  26. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE while (i <= 10) { printf ("%d", random(100)); i++; } getch(); }
  27. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE Caùch khaùc: int i = 10; clrscr(); randomize(); printf ("So ngau nhien trong khoang 0-99 la: "); while (i) { printf ("%d", random(100)); i; }
  28. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE Ví duï: Nhaäp caùc kyù töï cho ñeán khi naøo nhaän ñöôïc kyù töï ESC coù maõ ASCII laø 27 thì keát thuùc chöông trình. #include #include #define ESC 27 main() { char c; clrscr(); printf ("Cac ky tu duoc nhap la: ");
  29. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE while (1) { c = getche(); if (c == ESC) break; } }
  30. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.4 LEÄNH WHILE #include #include #define ESC 27 main() { char c; clrscr(); printf ("Cac ky tu duoc nhap la: "); while (getche() - ESC) ; leänh thöïc thi roãng }
  31. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE Neáu leänh while cho pheùp kieåm tra ñieàu kieän tröôùc roài thöïc thi leänh sau, nhö vaäy ngay töø ñaàu maø ñieàu kieän ñaõ sai thì leänh cuûa while khoâng ñöôïc thöïc thi, thì leänh laëp do-while laïi thöïc thi leänh tröôùc roài môùi kieåm tra ñieàu kieän sau. Cuù phaùp cuûa leänh do-while nhö sau: do lenh while (bieåu_thöùc);
  32. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE
  33. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE Ví duï: Vieát chöông trình cho pheùp kieåm tra vaø in ra phím muõi teân ñaõ ñöôïc nhaán. #include #include #define ESC 27 main() { char c; clrscr(); printf ("\n Moi an cac phim mui ten \n");
  34. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE do { c = getch(); if (c == 0) { c = getch(); switch(c) { case 'H': printf ("Ban da an mui ten len\n"); break;
  35. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE case 'P': printf ("Ban da an mui ten xuong\n"); break; case 'K': printf ("Ban da an mui ten qua trai\n"); break; case 'M': printf ("Ban da an mui ten qua phai\n");
  36. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE break; } /* end switch */ } }while (c != 27); }
  37. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.5 LEÄNH DO-WHILE Chuù yù raèng moãi phím muõi teân khi ñöôïc aán ñeàu sinh ra hai kyù töï: kyù töï ñaàu luoân laø kyù töï coù maõ ASCII laø 0 (töùc kyù töï NUL), kyù töï thöù hai laø caùc maõ ASII töông öùng vôùi phím, trong ví duï treân thì + Phím muõi teân leân coù maõ laø 0 vaø 'H' + Phím muõi teân xuoáng coù maõ laø 0 vaø 'P' + Phím muõi teân qua traùi coù maõ laø 0 vaø 'K' + Phím muõi teân coù maõ laø 0 vaø 'M'.
  38. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.6 LEÄNH FOR Töông töï nhö ngoân ngöõ PASCAL, trong ngoân ngöõ C cuõng coù voøng laëp for, ñaây cuõng laø moät leänh laëp cho pheùp kieåm tra ñieàu kieän tröôùc, gioáng nhö while. Cuù phaùp cuûa leänh for nhö sau: for (bieåu_thöùc1; bieåu_thöùc2; bieåu_thöùc3) leänh
  39. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.6 LEÄNH FOR - bieåu_thöùc1 coù yù nghóa laø bieåu thöùc ñeå khôûi ñoäng trò ñaàu cho bieán ñieàu khieån voøng for, noù coù theå laø bieåu thöùc gaùn hay bieåu thöùc phaåy, coù theå khoâng coù. - bieåu_thöùc2 coù yù nghóa laø bieåu thöùc cho pheùp kieåm tra xem voøng laëp coù ñöôïc tieáp tuïc laëp nöõa hay khoâng. - bieåu_thöùc3 laø bieåu thöùc coù yù nghóa cho pheùp thay ñoåi bieán ñieàu khieån voøng laëp ñeå voøng laëp tieán daàn ñeán keát thuùc. Bieåu thöùc naøy ñöôïc tính sau khi caùc leänh thöïc thi trong thaân voøng for ñöôïc thöïc hieän xong.
  40. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.6 LEÄNH FOR
  41. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.6 LEÄNH FOR Ví duï: voøng laëp for ñeå tính toång töø 1 tôùi n nhö sau s = 0; for (i = 1; i <= n; i++) s += i; Coù theå vieát ngaén goïn hôn nhö sau for (i = 1, s = 0; i <= n; i++) s += i;
  42. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.6 LEÄNH FOR Ví duï: Nhaäp caùc kyù töï cho ñeán khi naøo nhaän ñöôïc kyù töï ESC coù maõ ASCII laø 27 thì keát thuùc chöông trình. #include #include #define ESC 27 main() { char c; clrscr(); printf ("Cac ky tu duoc nhap la: "); for ( ; (c = getch()) != ESC;) ; }
  43. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE Ñaây laø hai leänh nhaûy khoâng ñieàu kieän cuûa C, chuùng cho pheùp laäp trình vieân coù theå thay ñoåi tieán trình laëp cuûa caùc caáu truùc laëp maø ta ñaõ bieát: for, while, do-while.
  44. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 1. Leänh break Trong caáu truùc switch-case, leänh break seõ keát thuùc leänh switch-case; coøn trong caùc caáu truùc laëp thì leänh break cho pheùp thoaùt sôùm ra khoûi voøng laëp (while, for hoaëc do-while) chöùa noù maø khoâng caàn xeùt ñieàu kieän cuûa leänh keá tieáp sau voøng laëp. Cuù phaùp cuûa leänh break: break;
  45. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 1. Leänh break
  46. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 1. Leänh break Ví duï:
  47. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 1. Leänh break Ví duï:
  48. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue leänh continue coù taùc duïng chuyeån ñieàu khieån chöông trình veà ñaàu voøng laëp chuaån bò cho chu kyø laëp môùi, boû qua caùc leänh coøn laïi naèm ngay sau leänh noù trong chu kyø laëp hieän haønh. Leänh naøy chæ ñöôïc duøng trong caùc voøng laëp, ñeå boû qua caùc leänh khoâng caàn thöïc thi trong voøng laëp khi caàn thieát. Cuù phaùp leänh continue: continue;
  49. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue
  50. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue Ví duï: i = 0; while (i = 6 && i <= 8) continue; printf ("Trò hieän thôøi cuûa i laø %d\n", i); }
  51. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue Ví duï: Vieát chöông trình nhaäp moät daõy soá, tính toång cuûa caùc soá döông trong daõy soá ñoù vaø thöông soá cuûa toång ñoù vôùi töøng soá döông naøy.
  52. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue #include #include main() { double a[100]; double tong; int i, n; clrscr(); printf ("Co bao nhieu so can tinh: "); scanf ("%d", &n); printf ("Nhap cac so can tinh tong: ");
  53. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue for (i = 0; i < n; i++) scanf ("%lf", &a[i]); for (i = 0, tong = 0; i < n; i++) { if (a[i] <= 0) continue; tong += a[i]; } printf ("Tong cua cac so duong la %/. 2f\n", tong);
  54. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE 2. Leänh continue for (i = 0; i < n; i++) { if (a[i] <= 0) continue; printf("Thuong cua tong voi so thu %d la %5,2f\n",i,tong/a[i]); } getch(); }
  55. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 2.8 LEÄNH RETURN Leänh naøy duøng ñeå thoaùt ra khoûi haøm hieän thôøi trôû veà haøm ñaõ goïi noù, coù theå traû veà cho haøm goïi moät trò. Leänh naøy seõ keát thuùc haøm duø noù naèm ôû ñaâu trong thaân haøm. Khi gaëp leänh naøy C seõ khoâng thöïc hieän baát cöù leänh naøo sau leänh return nöõa. Caùc cuù phaùp cuûa leänh return nhö sau: return; return (bieåu-thöùc); return bieåu-thöùc;
  56. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: Thieát keá haøm traû veà keát quaû so saùnh hai soá theo quy taéc sau ñaây: soá ñaàu > soá sau: haøm traû veà trò 1 soá ñaàu = soá sau: haøm traû veà trò 0 soá ñaàu < soá sau: haøm traû veà trò -1
  57. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: int so_sanh (int a, int b) { if (a > b)/* Leänh return keát thuùc haøm, traû veà trò i cho */ return 1; /* nôi ñaõ goïi haøm */ else if (a == b) return 0; /* Traû veà trò 0 cho nôi goïi haøm khi a = b */ else /* a < b */ return -1; /* Traû veà trò -1 cho nôi goïi haøm khi a < b */ }
  58. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: int so_sanh (int a, int b) { if (a > b) /* Leänh return keát thuùc haøm, traû veà trò 1 cho */ return 1; /* nôi ñaõ goïi haøm */ else if (a == b) return 0; /* Traû veà trò 0 cho nôi goïi haøm khi a = b */ return -1; /* Traû veà trò -1 cho nôi goïi haøm khi a < b */ }
  59. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: int so_sanh (int a, int b) { return (a > b) ? 1 : (a == b) ? 0 : -1; }
  60. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: Chöông trình sau duøng leänh return ñeå keát thuùc voøng laëp laëp voâ taän khi ñieàu kieän thoûa (laø phím ESC ñöôïc nhaán).
  61. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: #include #include #define ESC '\x1b' void nhan_ky_tu (void);  prototype cuûa haøm main() { char c; clrscr(); printf ("Moi ban nhap cac ky tu: "); nhan_ky_tu ();  goïi haøm }
  62. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.8 LEÄNH RETURN Ví duï: void nhan_ky_tu (void) ñònh nghóa haøm { while (1) if (getche() == ESC) return; }
  63. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.9 LEÄNH GOTO Maëc duø khoâng uûng hoä cho vieäc laäp trình coù goto nhöng C vaãn coù leänh reõ nhaùnh khoâng ñieàu kieän goto, leänh naøy cho pheùp chuyeån ñieàu khieån chöông trình cho moät leänh naøo ñoù. Cuù phaùp cuûa leänh goto: goto nhaõn;
  64. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.9 LEÄNH GOTO Vôùi nhaõn laø moät danh hieäu khoâng chuaån, danh hieäu naøy seõ ñöôïc ñaët ôû tröôùc leänh maø ta muoán nhaûy ñeán theo cuù phaùp sau: nhan: leänh nhaõn maø leänh goto muoán nhaûy ñeán phaûi naèm trong cuøng moät haøm vôùi leänh goto ñoù, do ñoù trong nhöõng haøm khaùc nhau coù theå coù caùc teân nhaõn gioáng nhau, nhöng trong cuøng moät haøm caùc teân nhaõn naøy phaûi khaùc nhau.
  65. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.9 LEÄNH GOTO Ví duï: Caùch söû duïng leänh goto trong moät chöông trình C main() { lap_lai: clrscr(); if ((c = getch()) != ESC) goto lap_lai; }
  66. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.10 LEÄNH ROÃNG Trong C coù khaùi nieäm leänh roãng, leänh naøy chæ coù moät daáu chaám phaåy (;), noù raát caàn thieát trong nhieàu tröôøng hôïp, nhö ñoái vôùi caùc voøng laëp, khi ta ñaët caùc leänh bieåu thöùc thöïc thi vaøo trong caùc bieåu thöùc cuûa leänh thì ta khoâng caàn coù theâm leänh thöïc thi laøm thaân cho chuùng nöõa, khi ñoù neáu ñeå troáng, C seõ hieåu nhaàm raèng leänh keá tieáp seõ laø thaân cuûa voøng laëp, do ñoù chæ coøn caùch cho moät leänh roãng laøm thaân cuûa chuùng.
  67. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.10 LEÄNH ROÃNG Ví duï: Voøng laëp for ñeå tính giai thöøa töø 1 tôùi n nhö sau for (i = gt = 1; i <= n; gt *= i++) ; printf ("Giai thua %d! = %d\n", n, gt);
  68. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP 8.10 LEÄNH ROÃNG Ví duï: for (i =1,s = 0; i < 10; i++) ; s += i; printf("Tong la %d \n",s);
  69. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP BAØI TAÄP CUOÁI CHÖÔNG 1. Vieát moät chöông trình nhaäp 4 soá vaø in ra a) soá lôùn nhaát trong 4 soá ñoù b) soá nhoû nhaát trong 4 soá ñoù 2. Vieát chöông trình tìm soá nguyeân toá töø 1 tôùi 100 3. Nhaäp moät soá nguyeân töø baøn phím, in ra maøn hình theo thöù töï ngöôïc laïi. Ví duï nhaäp: 54321 xuaát: 12345
  70. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP BAØI TAÄP CUOÁI CHÖÔNG 4. In ra maøn hình baûn cöûu chöông caàn bieát. 5. In ra maøn hình caùc baûn cöûu chöông töø 2 ñeán 9. 6. Veõ ra maøn hình hình sau:
  71. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP BAØI TAÄP CUOÁI CHÖÔNG 7. Tính bieåu thöùc sau ñaây a) T =1! + 2! + +n! thoâng soá nhaäp laø n b) 1 ! ( 1 2 )! ( 1 n )! thoâng soá nhaäp laø n T n! c) e 1 e 2 e n thoâng soá nhaäp laø n T !!! Bieát trong C 1coù haøm 2 exp(x) n ñeå tính , prototype haøm naøy naèm trong file math.h.
  72. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP BAØI TAÄP CUOÁI CHÖÔNG 8. Tính bieåu thöùc sau: 1 1 1 1 s 1 2 (1) 2 4 8 n Haõy vieát chöông trình nhaäp moät soá a thoûa: 1 < a < 2, sau ñoù tìm soá n thoûa ñieàu kieän (1): s < a
  73. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP BAØI TAÄP CUOÁI CHÖÔNG 9. Moät ngöôøi muoán gôûi moät soá tieàn vaøo ngaân haøng, haõy vieát chöông trình tính toång soá tieàn maø ngöôøi ñoù coù ñöôïc sau khi ñaõ gôûi ngaân haøng theo moät trong hai caùch gôûi: - Gôûi töøng thaùng ruùt tieàn laõi - Gôûi khoâng ruùt laõi töøng thaùng, maø nhaäp laõi vaøo voán Thoâng soá nhaäp caàn thieát:- Soá tieàn gôûi luùc ñaàu - Thôøi gian gôûi (theo thaùng) - Laõi suaát/thaùng
  74. CHÖÔNG 8 CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP KEÁT THUÙC CHÖÔNG 8