Download presentation
Presentation is loading. Please wait.
Published byGeoffrey Mervin Lindsey Modified over 9 years ago
1
לולאות 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 1 Department of Computer Science-BGU
2
מבנה הלולאה ? ? 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 2 Department of Computer Science-BGU
3
לולאה (loop) Used to repeat the same instruction(s) over and over again. C provides some flexible ways of deciding how many times to loop, or when to exit a loop. for, while, do-while loops. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 3 Department of Computer Science-BGU
4
While while (condition) { statement(s); } The statements are executed as long as condition is true When the condition is no longer true, the loop is exited. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 4 Department of Computer Science-BGU
5
דוגמא - factorial #include void main() { int i, n, fact = 1; printf("Enter a number\n"); scanf("%d", &n); i=1; while (i<=n) { fact = fact*i; i++; } printf("the factorial is %d\n", fact); } This is a counter Every iteration i is incremented by 1. (Equivalent to i=i+1) 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 5 Department of Computer Science-BGU
6
Exercise Input – Two integers – A and B Output – How many times A contains B This is the result of the integer division A/B Note – Do not use the division operator! 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 6 Department of Computer Science-BGU
7
Solution #include void main() { int a, b, res; printf("Please enter two numbers.\n"); scanf("%d%d", &a, &b); res = 0; while ( (res+1) * b <= a) res = res + 1; printf("%d / %d = %d", a, b, res); } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 7 Department of Computer Science-BGU
8
Additional Exercise Input – Two integers – A and B Output – Only if A and B are Digits Otherwise return to input. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 8 Department of Computer Science-BGU
9
Solution #include void main() { int a, b, flag = 1; while ( flag){ flag = 0; printf("Please enter two numbers.\n"); scanf("%d%d", &a, &b); if(a > 9 || a < 0) flag = 1; else if (b > 9 || b < 0 ) flag = 1; } // executing statements using a and b } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 9 Department of Computer Science-BGU
10
Compact Solution #include void main() { int a, b, flag = 1; while ( flag){ flag = 0; printf("Please enter two numbers.\n"); scanf("%d%d", &a, &b); if(a > 9 || a 9 || b < 0 ) flag = 1; } // executing statements using a and b } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 10 Department of Computer Science-BGU
11
לולאה do - while do { statement(s) } while (expression); Similar to while loops Except the condition is evaluated after the loop body The loop body is always executed at least once, even if the expression is never true (equals zero) 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 11 Department of Computer Science-BGU
12
לקלוט נתון לפי הדרישה #include void main() { int i; printf("Please enter a positive number.\n"); do { scanf("%d", &i); if (i<=0) printf("That's not a positive number! Try again.\n"); } while (i<=0); /* The program continues.... */ } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 12 Department of Computer Science-BGU
13
לולאה for - מבנה /* Program before the for loop */ for( ; ; ) { loop body; } /* Continue the program after for loop */ initiali zeconditionincrement True False 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 13 Department of Computer Science-BGU
14
דוגמא For loops are controlled by a counter variable. for( c =init_value; c<=fin_value ; c+=increment_value) { loop body; } c is a counter. c is a incremented after every iteration (can also be decreased!) 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 14 Department of Computer Science-BGU
15
for vs. while for is equivalent to while… Any for loop can be converted to while loop and vice versa. If we want to perform something for a predefined number of times, better use for. If we just wait for something to happen (not after a certain number or iterations), better use while. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 15 Department of Computer Science-BGU
16
break When break is encountered, the loop is exited regardless of whether the condition is still true. The program then continues to run from the first line after the while loop. If called within a nested loop, break breaks out of the inner loop only. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 16 Department of Computer Science-BGU
17
שימושים ב - break void main () {. loop(expression) {. break;. } // continue with the program } void main () {. loop1(expression1) {. loop2(expression2) {. break;. } // end loop2 // continue with loop1 } // end loop1. } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 17 Department of Computer Science-BGU
18
לקלוט נתון לפי הדרישה עם break #include void main() { int i; printf("Please enter a positive number.\n"); do { scanf("%d", &i); if (i >= 0) break; // after break no needed else printf("That's not a positive number! Try again.\n"); } while (1); /* The program continues.... */ } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 18 Department of Computer Science-BGU
19
continue When continue is encountered, the rest of the loop is ignored. The program then continues to run from the beginning of the loop. Rarely used. Can usually be replaced by an appropriate if- else statement. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 19 Department of Computer Science-BGU
20
שימוש ב - continue void main () {. loop(expression) {. continue;. } // continue with the program } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 20 Department of Computer Science-BGU
21
תרגיל פשוט כתוב תכנית שמדפיסה את טבלת הכפל פתרון : #include void main(){ int i,j; printf("Printing the multiplication table: \n\r"); for (i = 1 ; i <= 4 ; i++) { printf("\n\r"); for (j = 1 ; j <= 5 ; j++) printf ("(%2d, %2d)", i, j); } } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 Department of Computer Science-BGU
22
תרגיל Write a program that accepts a number from the user, and checks whether it is prime. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 22 Department of Computer Science-BGU
23
פתרון #include void main() { int i, num; printf("enter a number\n"); scanf("%d", &num); for(i = 2 ; i < num; i++) if (num % i == 0) /* Then we know it's not a prime */ break; if (i < num) printf("%d is not a prime number!\n", num); else printf("%d is indeed a prime number!\n", num); } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 23 Department of Computer Science-BGU
24
תרגיל נוסף Extend the former program so it accepts a number from the user, and prints out all of the prime numbers up to that number (Hint – gotta use nested loops here...) 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 24 Department of Computer Science-BGU
25
פתרון #include void main() { int i, j, last; printf("enter a number\n"); scanf("%d", &last); for(i = 2; i <= last; i++) { for(j = 2 ; j < i; j++) if (i % j == 0) break; if (j == i) printf("the number %d is prime\n", i); } // end for } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 25 Department of Computer Science-BGU
26
תרגיל נוסף Write a program that prints an upside-down half triangle of *. The height of the pyramid is the input. ***** **** *** ** * 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 26 Department of Computer Science-BGU
27
הנה הפתרון #include void main() { int i, j, size; printf(“Please enter a size:\n”); scanf(“%d”,&size); for (i = 1; i <= size; i++) { for(j = i; j <= size; j++) printf("*"); printf("\n"); } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 27 Department of Computer Science-BGU
28
שינוי בתרגיל Change the former prime-listing program, so that is displays only the largest prime number which is smaller than or equal to the user’s input. 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 28 Department of Computer Science-BGU
29
פתרון 1 #include void main() { int i, j, last; int found = 0; /* This indicates whether we found the largest prime */ printf("enter a number\n"); scanf("%d", &last); i = last; while (!found) { /* Loop until we find our guy */ for(j = 2 ; j < i; j++) if (i % j == 0) break; if (j == i) /* If this is true then i is prime */ found = 1; else i--; } printf("The largest prime not larger than %d is %d.\n", last, i); } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 29 Department of Computer Science-BGU
30
פתרון 2 – עם break #include void main() { int i, j, last; printf("enter a number\n"); scanf("%d", &last); for(i=last ; i>1 ; i--) { for(j = 2 ; j < i; j++) if (i % j == 0) break; // break the inner for loop only !! if (j == i) // i is prime. We found our guy break; } printf("The largest prime not larger than %d is %d.\n", last, i); } 02 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 1502 יולי 15 02 יולי 15 02 יולי 15 30 Department of Computer Science-BGU
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.