1 / 19

מבוא למדעי המחשב

מבוא למדעי המחשב. לולאות. לולאות. הרעיון - ביצוע של הוראה אחת, או סדרה של הוראות, מספר כלשהוא של פעמים : מספר הפעמים ידוע מראש (למשל – סיכום חמישה מספרים הנתונים בקלט). או מספר לא ידוע מראש של פעמים. התנאי לסיום הביצוע נקבע באופן דינאמי בזמן ריצת התכנית.

meghanp
Download Presentation

מבוא למדעי המחשב

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מבוא למדעי המחשב לולאות

  2. לולאות הרעיון - ביצוע של הוראה אחת, או סדרה של הוראות, מספר כלשהוא של פעמים: • מספר הפעמים ידוע מראש (למשל – סיכום חמישה מספרים הנתונים בקלט). או • מספר לא ידוע מראש של פעמים. התנאי לסיום הביצוע נקבע באופן דינאמי בזמן ריצת התכנית.

  3. תנאי הלולאה נבדק לפני ביצוע ההוראה שאחריו לולאות - מוטיבציה המטרה: ניסוח אלגוריתם לחישוב הערך של n! . n!=1*2*3*…*(n-1)*n אלגוריתם לחישוב n! : אתחל את result ל- 1 (האיבר הניטראלי לכפל) אתחל את i ל- 1 (מונה) כל עוד i קטן או שווה ל- n כפול את result ב- i הגדל את i ב- 1

  4. כן לא לולאות – תיאור גרפי • לולאה יכולה להתבצע אפס פעמים (אם התנאי אינו מתקיים כבר בחישוב הראשון). • אין שום מניעה לכתוב תכנית שבה תבוצע לולאה אינסופית!

  5. לולאות while תחביר: while (expression) statement • while – מילה שמורה • הסוגריים הם חלק מן התחביר • expression – ביטוי • statement – הוראה אחת (שיכולה להיות גם הוראה מורכבת).

  6. לולאות while משמעות: while (expression) statement • expression משוערך. • אמת ← ההוראה statement מתבצעת והביצוע חוזר אל expression. שקר ← הבקרה מועברת אל ההוראה הבאה לאחר ה- while.

  7. n! הוא מספר שלם לכל n, אבל ערכו גדל במהירות (מקום אחסון מספיק) לולאות while - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n,i; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { i=1; while (i<=n) { result *= i; i++; } printf("%d!=%.0f\n", n, result); } return 0; } • בקרת קלט: • האם המספר שלם? • האם המספר חיובי?

  8. לולאות while - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n,i; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { i=1; while (i<=n) { result *= i; i++; } printf("%d!=%.0f\n", n, result); } return 0; }

  9. לולאות while /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n,i; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { i=1; while (i<=n) { result *= i; i++; } printf("%d!=%.0f\n", n, result); } return 0; } • אתחול משתנה המשמש כמונה • תנאי הבודק את ערכו של המשתנה • גוף הלולאה • עדכון המשתנה

  10. לולאות for תחביר: for (expr1 ; expr2 ; expr3) statement • for – מילה שמורה • הסוגריים הם חלק מן התחביר • כל expr – ביטוי • statement – הוראה אחת (שיכולה להיות גם הוראה מורכבת).

  11. (*) בדיקת תנאי – ביטוי יחס (מחזיר ערך לוגי) (*) קידום – ביטוי השמה (*) אתחול – ביטוי השמה לולאות for for (expr1 ; expr2 ; expr3) statement שקול ל: expr1 while (expr2) { statement expr3 } (*) בדר"כ

  12. (*) אתחול – ביטוי השמה (*) בדיקת תנאי – ביטוי יחס (מחזיר ערך לוגי) (*) קידום – ביטוי השמה לולאות for for (expr1 ; expr2 ; expr3) statement • מבחינה תחבירית, כל אחד משלושת הביטויים יכול להיות מושמט, אך סימני ה- ; הכרחיים. • מבחינה סמנטית, הלולאה תתבצע כל עוד expr2 משוערך כאמת (כלומר, ≠0). אם expr2 חסר, הוא מתפרש כאמת תמיד.

  13. לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n,i; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { for (i=1 ; i<=n ; i++) { result *= i; } printf(“%d!=%.0f\n", n, result); } return 0; }

  14. לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n,i; double result; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { for (i=1 , result=1 ; i<=n ; i++) { result *= i; } printf(“%d!=%.0f\n", n, result); } return 0; }

  15. לולאות for - דוגמא for (i=1 , result=1 ; i<=n ; i++) { result *= i; } ידוע: n! = 1*2*…*(n-1)*n = n*(n-1)*…*2*1 ההגדרה n! = n*(n-1)*…*2*1 מאפשרת לארגן את הלולאה בסדר הפוך, מ- n עד 1. יתרון: משתנה הקלט (n) יכול לשמש גם כמונה ← אין יותר צורך במשתנה i !!! for (result=1 ; n>0 ; n--) { result *= n; }

  16. לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n; double result; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { printf("%d!=", n); for (result=1 ; n>0 ; n--) { result *= n; } printf(%.0f\n", result); } return 0; }

  17. לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { printf(“%d!=“, n); for ( ; n>0 ; n--) { result *= n; } printf("%.0f\n", result); } return 0; }

  18. while (n>0) result*=n--; לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { printf(“%d!=“, n); for ( ; n>0 ; ) { result *= n--; } printf("%.0f\n", result); } return 0; }

  19. לולאות for - דוגמא /* This program computes n!, the factorial of n */ #include <stdio.h> int main() { int n; double result=1; printf("Enter a natural number: "); if (scanf("%d", &n) != 1) { printf("Input error.\n"); return 1; } else if (n<0) { printf("Factorial is undefined for negative integers.\n"); return -1; } else { printf(“%d!=“, n); while (n>0) result*=n--; printf("%.0f\n", n, result); } return 0; }

More Related