תכנות תרגול 4 שבוע : 29.03.06. לולאות while לולאות while while (condition)...

21
ללללל ללללל ללללל ללללל4 4 לללל לללל: : 29.03.06 29.03.06
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    229
  • download

    3

Transcript of תכנות תרגול 4 שבוע : 29.03.06. לולאות while לולאות while while (condition)...

44 תכנות תרגולתכנות תרגול

::שבועשבוע

29.03.0629.03.06

whilewhile לולאות לולאות

while (condition)while (condition)

{{

loop bodyloop body

}}

במקרה של קיום התנאימתבצע גוף הלולאה

ברגע שהתנאי לא מתקיים נצא ברגע שהתנאי לא מתקיים נצא !מהלולאהמהלולאה

דוגמא ללולאה – חישוב עצרתדוגמא ללולאה – חישוב עצרת#include <stdio.h>#include <stdio.h>int main()int main(){{

int i,n,fact = 1;int i,n,fact = 1;printf("Enter a number\n");printf("Enter a number\n");scanf("%d", &n);scanf("%d", &n);i=1;i=1;while (i<=n)while (i<=n){{

fact *= i;fact *= i;i++;i++;

}}printf("the factorial is %d\n", fact);printf("the factorial is %d\n", fact);return 0;return 0;

}}

הגדרת משתנים

קליטת ערכים

אתחול מונה

הלולאה עצמה

הדפסת התוצאה

תרגילתרגיל

קלוט שני מספרים וחשב את החזקה שלהם קלוט שני מספרים וחשב את החזקה שלהם

באמצעות פעולות כפל בלבד. באמצעות פעולות כפל בלבד.

פתרון תרגילפתרון תרגיל #include <stdio.h>#include <stdio.h>int main()int main(){{

int a, b, i, power;int a, b, i, power;i = 1;i = 1;power = 1;power = 1;printf("Enter 2 numbers\n");printf("Enter 2 numbers\n");scanf("%d%d", &a, &b);scanf("%d%d", &a, &b);while(i <= b)while(i <= b){

power = power * a;power = power * a;i++;i++;

}}printf("%d power %d is %d\n",a,b, power);printf("%d power %d is %d\n",a,b, power);return 0;return 0;

}}

תנאי הקיום של הלולאה

גוף הלולאה כאשר הוא מכיל יותר מהוראה אחת

{ } נפתח קטע קוד

לולאה שמחשבת סכום סדרת מספריםלולאה שמחשבת סכום סדרת מספרים#include <stdio.h>#include <stdio.h>void main()void main(){{

int num, i=1, counter, sum=0;int num, i=1, counter, sum=0;printf("Enter the expected number of integers\n");printf("Enter the expected number of integers\n");scanf("%d", &counter);scanf("%d", &counter);while( i <= counter)while( i <= counter){{

printf("Enter a number\n");printf("Enter a number\n");scanf("%d", &num);scanf("%d", &num);sum += num;sum += num;i++;i++;

}}printf("The numbers sum is %d\n", sum);printf("The numbers sum is %d\n", sum);

}}

הגדרת משתנים ואתחולם

קליטת מספר הפעמים לביצוע

תנאי קיום הלולאה

:גוף הלולאה

קליטת המספר•סיכום המספר•קידום המונה•

הדפסת הסכום

whilewhile לולאות לולאות

while (condition)while (condition)

{{

loop bodyloop body

}}

במקרה של קיום התנאימתבצע גוף הלולאה

ברגע שהתנאי לא מתקיים נצא ברגע שהתנאי לא מתקיים נצא !מהלולאהמהלולאה

forfor לולאות לולאות

for for (counter=1 ;counter<=7 ; counter+(counter=1 ;counter<=7 ; counter++ )+ )

{{

loop bodyloop body

}}

שם המשתנה שבאמצעותו נשלוט בלולאה

הערך שבו נאתחל אותו

התנאי שכל עוד הוא מתקיים נמשכת הלולאה

קידום משתנה הלולאה

אןמה ערכו של המשתנה כ ?

forfor ( (counter=1 ;counter<=7 ; counter++ counter=1 ;counter<=7 ; counter++ ))forfor ((counter=1counter=1 ;counter<=7 ; counter++ ) ;counter<=7 ; counter++ )forfor ((counter=1 ;counter=1 ;counter<=7counter<=7 ; counter++ ) ; counter++ )forfor ((counter=1 ;counter<=7 ; counter=1 ;counter<=7 ; counter++counter++ ) )forfor ((counter=1 counter=1 ;;counter<=7 counter<=7 ;; counter++ ) counter++ ); ;; ;

לחישוב עצרת לחישוב עצרת forforדוגמא ללולאת דוגמא ללולאת #include <stdio.h>#include <stdio.h>int main()int main(){{

int i,n,fact = 1;int i,n,fact = 1;printf("Enter a number\n");printf("Enter a number\n");scanf("%d", &n);scanf("%d", &n);for (i=1;i<=n;i++)for (i=1;i<=n;i++)

fact *= i;fact *= i;printf("the factorial is %d\n", fact);printf("the factorial is %d\n", fact);return 0;return 0;

}}

forלולאת ה-

תנאי סיום הלולאה נקלט מהמשתמש למשתנה n!

תרגילתרגיל

כתוב תוכנית המקבלת מספר מהמשתמש ומדפיסה כתוב תוכנית המקבלת מספר מהמשתמש ומדפיסה

ריבוע של כוכביות בגודל המספר שנקלטריבוע של כוכביות בגודל המספר שנקלט

::55דוגמא קלט דוגמא קלט **************************************************

11פתרון תרגיל פתרון תרגיל

#include<stdio.h>#include<stdio.h>#define SIZE 5#define SIZE 5void main()void main(){{

int i,j;int i,j;for (i = 1; i <= SIZE; i++)for (i = 1; i <= SIZE; i++){{

for(j = 1; j <= SIZE; j++)for(j = 1; j <= SIZE; j++)printf("*");printf("*");

printf("\n");printf("\n");}}

}}

5סימן שיוחלף בכל מקום בתוכנית בערך

! לולאה כפולה

פלט

*****

שורה חדשה

חצי ריבוע )משולש(חצי ריבוע )משולש(

#include<stdio.h>#include<stdio.h>#define SIZE 5#define SIZE 5void main()void main(){{

int i,j;int i,j;for (i = 1; i <= SIZE; i++)for (i = 1; i <= SIZE; i++){{

for(j = for(j = ii; j <= SIZE; j++); j <= SIZE; j++)printf("*");printf("*");

printf("\n");printf("\n");}}

}}

5סימן שיוחלף בכל מקום בתוכנית בערך

לולאה כפולה שימו לב מאיפה ! מתחילה הלולאה השנייה

פלט

***************

תרגילתרגיל

כתוב תוכנית המדפיסה משולשים שווי שוקים בצורה כתוב תוכנית המדפיסה משולשים שווי שוקים בצורה

הקלט הוא מספר שיציין את גודל שוק הקלט הוא מספר שיציין את גודל שוק הבאההבאה

. . 55המשולש, בדוגמא כאן המשולש, בדוגמא כאן

*********************************************

פתרון תרגילפתרון תרגילint main()int main(){{

int i,j;int i,j;for (i = 0; i < SIZE; i++)for (i = 0; i < SIZE; i++){{

for(j = 0; j < SIZE – i – 1; j++) for(j = 0; j < SIZE – i – 1; j++) printf(" ");printf(" ");

for(j = 0; j < 2 * i + 1; j++)for(j = 0; j < 2 * i + 1; j++)printf("*");printf("*");

printf("\n");printf("\n");}}return 0;return 0;

}}

לולאהחיצונית

לולאהפנימית ראשונה

לולאהפנימית שנייה

SIZE = 5

1234*

123***

12*****

1*******

*********

charcharעבודה עם עבודה עם

נכתוב את התוכנית הבאה:נכתוב את התוכנית הבאה:

קלט תו. לאחריו רצף של תווים. פלט התוכנית הוא קלט תו. לאחריו רצף של תווים. פלט התוכנית הוא מספר מספר

המופעים של התו הראשון ברצף התווים שלאחריו המופעים של התו הראשון ברצף התווים שלאחריו Input:

r

aBrnetr r rr

Output:

5

void main()void main(){{

char c, ch=0;char c, ch=0;int appear = 0;int appear = 0;printf("Enter a character to be find\n");printf("Enter a character to be find\n");scanf("%c", &c);scanf("%c", &c);printf("Now enter your text\n");printf("Now enter your text\n");flushall();flushall();while (ch != '\n')while (ch != '\n'){{

scanf("%c", &ch);scanf("%c", &ch);if (ch == c)if (ch == c) appear++;appear++;

}}if (appear != 0)if (appear != 0)

printf("%c has appeared %d \n", c, appear);printf("%c has appeared %d \n", c, appear);elseelse

printf("%c was not found\n", c);printf("%c was not found\n", c);}}

קלט של תו

לולאה שקולטת תוים עד ירידת

שורה

חוצץ

a

\n

b

scanf(“%c”,ch);scanf(“%c”,ch);scanf(“%c”,ch);flushall();

33תרגיל תרגיל

כתוב תוכנית הקולטת מספר ומדפיסה אם הוא כתוב תוכנית הקולטת מספר ומדפיסה אם הוא ראשוני או ראשוני או

לא. לא.

void main()void main(){{

int i,prime,sq;int i,prime,sq;printf("enter a number\n");printf("enter a number\n");scanf("%d", &prime);scanf("%d", &prime);sq = (int) sqrt(prime);sq = (int) sqrt(prime);for(i = 2 ; i <= sq; i++)for(i = 2 ; i <= sq; i++){{

if (prime % i == 0)if (prime % i == 0){{ printf("%d not prime divided by %d \n", printf("%d not prime divided by %d \n",

prime, i);prime, i); break;break;}}

}}if (i > sq ) printf("the number %d is prime\n", if (i > sq ) printf("the number %d is prime\n", prime); prime);

}}

בדיקת האם לא ראשוניויציאה אם אכן כך

תרגילתרגיל

כתוב תוכנית הקולטת מספר ומדפיסה את כל כתוב תוכנית הקולטת מספר ומדפיסה את כל המספרים המספרים

הראשונים עד אליו. הראשונים עד אליו.

void main()void main(){{

int i,j,sq,last;int i,j,sq,last;printf("enter a number\n");printf("enter a number\n");scanf("%d", &last);scanf("%d", &last);for(i = 2; i <= last; i++)for(i = 2; i <= last; i++){{

sq = (int) sqrt(i);sq = (int) sqrt(i);for(j = 2 ; j <= sq; j++)for(j = 2 ; j <= sq; j++)

if (i % j == 0)if (i % j == 0)break;break;

if (j > sq ) if (j > sq ) printf("the number %d is prime\n", i); printf("the number %d is prime\n", i);

}}}}

בדיקת הראשוניות