33
www.cs.tau.ac.il/courses/cs4 math/09b יייי יייי ייייי יייי יייי ייייי ייייי ייייי ייייי ייי: ייייי ייייייי

Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

  • View
    230

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

www.cs.tau.ac.il/courses/cs4math/09b

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

שיעור שני: שימוש במשתנים

Page 2: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

תזכורת - נושאי השבוע הראשוןתזכורת - נושאי השבוע הראשון

הכרת המחשבהכרת המחשב•התקני קלט/פלט, זיכרון, מעבד, חומרה ותוכנה.התקני קלט/פלט, זיכרון, מעבד, חומרה ותוכנה.•

מבוא לשפות תכנות מבוא לשפות תכנות •שפת מכונה, אסמבלי, שפות עיליות, קומפילציה.שפת מכונה, אסמבלי, שפות עיליות, קומפילציה.•

CCמבוא לשפת מבוא לשפת •יתרונות וחסרונות, מבנה בסיסי של תוכנית, דוגמאות.יתרונות וחסרונות, מבנה בסיסי של תוכנית, דוגמאות.•

Page 3: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

CCתזכורת: תוכנית ראשונה בשפת תזכורת: תוכנית ראשונה בשפת

#include <stdio.h>

int main()

{

printf(“Hello World\n”);

return 0;

}

מאפשר שימוש בפעולות קלט/פלט

stdio.hמתוך

שורה קבועה, שמשמעותה העברת למערכת ההפעלה )מסמן סיום 0הערך תקין(

Helloמדפיס World ועובר לשורה הבאה

שורה קבועה שבה מתחיל ביצוע התוכנית

Page 4: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

תזכורת: דוגמא לחישוב מספר השניות תזכורת: דוגמא לחישוב מספר השניות <include <stdio.h#ביממהביממה

int main)(

{

int seconds, hours, minutes;

hours = 24;

minutes = 60;

seconds = hours * minutes * 60 ;

printf)“Number of seconds is %d\n”, seconds(;

return 0;

}

הגדרת משתנים בזיכרון

השמת ערכים בתוכם

חישוב מכפלה

הדפסת התוצאה

Number of seconds is 86400

Page 5: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

תוכנית שנייה - זיכרוןתוכנית שנייה - זיכרון

minutes hours

24

תמונת הזיכרון לאחר

; seconds = hours * minutes * 60

6086400

seconds

Page 6: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

נושאי השיעור היוםנושאי השיעור היום

מה זה משתנהמה זה משתנה•

הגדרת משתנים והשמת ערכים לתוכםהגדרת משתנים והשמת ערכים לתוכם•

CCסוגי משתנים בשפת סוגי משתנים בשפת •

קריאה והדפסה של ערכי משתנים )קלט/פלט(קריאה והדפסה של ערכי משתנים )קלט/פלט(•

פעולות שניתן לבצע על משתניםפעולות שניתן לבצע על משתנים•

Page 7: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

שימוש במשתנים בתכנותשימוש במשתנים בתכנות

בתוכניות מחשב רבות נירצה לבצע חישובים ולעבד נתונים.בתוכניות מחשב רבות נירצה לבצע חישובים ולעבד נתונים.•

ברוב המקרים הנתונים האלה מתקבלים כקלט מהמשתמש או ברוב המקרים הנתונים האלה מתקבלים כקלט מהמשתמש או • להמשיך לזכור אותםלהמשיך לזכור אותםמחושבים בתחילת התוכנית, והמחשב צריך מחושבים בתחילת התוכנית, והמחשב צריך

בהמשך התוכנית.בהמשך התוכנית.

, , שםשם, ולתת להם , ולתת להם מקום בזיכרוןמקום בזיכרוןלצורך זה צריך להגדיר לנתונים כאלה לצורך זה צריך להגדיר לנתונים כאלה •כך שנוכל להתייחס אליהם בהמשך.כך שנוכל להתייחס אליהם בהמשך.

שנשמור )למשל מס' שלם/מס' שנשמור )למשל מס' שלם/מס' סוג הנתוןסוג הנתוןנצטרך גם לציין את נצטרך גם לציין את •ממשי/אות( כי לכל סוג דרוש שטח זיכרון שונה.ממשי/אות( כי לכל סוג דרוש שטח זיכרון שונה.

Page 8: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

??מה זה משתנהמה זה משתנה

בו ערכים מסוג בו ערכים מסוג לאחסןלאחסן, ואפשר , ואפשר מקום בזיכרון שקיבל שםמקום בזיכרון שקיבל שם• ממנו את הערך ממנו את הערך ולקרואולקרואמסויים )אותיות/שלמים/ממשיים( מסויים )אותיות/שלמים/ממשיים(

שמאוחסן בו. שמאוחסן בו.

אותו, כלומר נציין את אותו, כלומר נציין את נגדירנגדירכדי להשתמש במשתנה, קודם כדי להשתמש במשתנה, קודם •שמו ואת סוג הערכים שהוא יאחסן.שמו ואת סוג הערכים שהוא יאחסן.

- משתנים הם האמצעי לטיפול בנתונים בתוכנית.- משתנים הם האמצעי לטיפול בנתונים בתוכנית.

Page 9: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

הגדרת משתניםהגדרת משתנים

. )אפשר גם . )אפשר גם שמושמו ואת ואת טיפוס המשתנהטיפוס המשתנההגדרת משתנה כוללת את הגדרת משתנה כוללת את •לציין מאפיינים נוספים שנכיר בהמשך(.לציין מאפיינים נוספים שנכיר בהמשך(.

הגדרות המשתנים מופיעות מייד אחרי פתיחת סוגריים הגדרות המשתנים מופיעות מייד אחרי פתיחת סוגריים • , ולפני שאר הפקודות )יכולות להופיע הגדרות של , ולפני שאר הפקודות )יכולות להופיע הגדרות של }}מסולסלים מסולסלים

הרבה משתנים(.הרבה משתנים(.

כשמגדירים משתנה הערך שנמצא בו אינו מוגדר עדיין, וצריך לשים כשמגדירים משתנה הערך שנמצא בו אינו מוגדר עדיין, וצריך לשים •בו ערך כדי להשתמש בו.בו ערך כדי להשתמש בו.

אפשר לבצע השמת ערך התחלתי כבר בשורת ההגדרה )ניראה אפשר לבצע השמת ערך התחלתי כבר בשורת ההגדרה )ניראה •דוגמא(.דוגמא(.

Page 10: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

בדוגמא מהשבוע שעבר:בדוגמא מהשבוע שעבר:#include <stdio.h>int main)({

int seconds, hours, minutes;hours = 24;minutes = 60;seconds = hours * minutes * 60 ;printf)“Number of seconds is %d\n”, seconds(;return 0;

}

הגדרת שמות המשתנים וסוגם

השמת ערכים במשתנים ופעולות עליהם

Page 11: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

תוכנית חישוב השניות ביממה - תוכנית חישוב השניות ביממה - זיכרוןזיכרון

seconds minutes hours

תמונת הזיכרון לאחר הגדרת המשתנים עם ערך התחלתי

2460

Page 12: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

הגדרת משתנים: טיפוסים בסיסייםהגדרת משתנים: טיפוסים בסיסיים•intint (.(.223131- לבין - לבין 223131 – מספר שלם )הטווח האפשרי הוא בין – מספר שלם )הטווח האפשרי הוא בין

•floatfloat השבר הכי ±, השבר הכי 10103838 – מספר ממשי )הטווח הוא בערך עד – מספר ממשי )הטווח הוא בערך עד ,± ספרות. ספרות.66(. דיוק של (. דיוק של 10±10±- - 3838קטן שניתן לייצג הוא בערך קטן שניתן לייצג הוא בערך

•doubledouble מספר ממשי )משתמש במקום כפול בזיכרון(. הטווח - מספר ממשי )משתמש במקום כפול בזיכרון(. הטווח - . השבר הכי קטן שניתן לייצג הוא בערך . השבר הכי קטן שניתן לייצג הוא בערך 10±10± 308308הוא בערך עד הוא בערך עד

ספרות. ספרות. 1515. דיוק של . דיוק של 1010- - 308308

•charchar כל סימן שיש במחשב, למשל( כל סימן שיש במחשב, למשל – תו בודד( תו בודד – ‘‘aa’’ אואו' ' ??'' .) .)

- יתכנו הבדלים בטווחים בין סוגי מחשבים וקומפיילרים.- יתכנו הבדלים בטווחים בין סוגי מחשבים וקומפיילרים.

Page 13: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

דוגמאות להגדרות משתניםדוגמאות להגדרות משתנים char c;char c; int i;int i; float the_max_percent;float the_max_percent; double average;double average;

:הגדרה עם השמת ערך התחלתי:הגדרה עם השמת ערך התחלתיchar c=char c=‘A’‘A’;;int sum=0;int sum=0;

' מוכנס למשתנה בשם Aהתו ‘c

‘A’

c

Page 14: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

הגדרת משתנים: שמות מותריםהגדרת משתנים: שמות מותריםשם משתנה יכול לכלול אותיות אנגליות, ספרות, וקו תחתון.שם משתנה יכול לכלול אותיות אנגליות, ספרות, וקו תחתון.•

התו הראשון בשם לא יכול להיות סיפרה.התו הראשון בשם לא יכול להיות סיפרה.•

(. (. case-sensitivecase-sensitiveיש הבדל בין אות גדולה לאות קטנה )יש הבדל בין אות גדולה לאות קטנה )• הם שמות שונים. הם שמות שונים.AA ו- ו- aaכלומר כלומר

• Counter, new_sum, total1Counter, new_sum, total1..• percent% , 2counter, new-sumpercent% , 2counter, new-sum..

..בעלי משמעותבעלי משמעות כדאי מאוד לתת למשתנים שמות כדאי מאוד לתת למשתנים שמות הערה:הערה:•

::מותרמותר

::אסוראסור

Page 15: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

??למה זה טוב שיש טיפוסי משתניםלמה זה טוב שיש טיפוסי משתנים מאחרים, ולכן מאחרים, ולכן פחות מקום בזיכרוןפחות מקום בזיכרוןטיפוסים מסוימים דורשים טיפוסים מסוימים דורשים

חבל לבזבז מקום.חבל לבזבז מקום.

למשל ידיעת . למשל ידיעת יטפל אחרת בטיפוסי משתנים שוניםיטפל אחרת בטיפוסי משתנים שוניםהמחשב המחשב .הטיפוס מאפשרת ביצוע פעולות מהיר יותר )לדוגמא כפל הטיפוס מאפשרת ביצוע פעולות מהיר יותר )לדוגמא כפל

שלמים מבוצע מהר יותר מכפל ממשיים(.שלמים מבוצע מהר יותר מכפל ממשיים(.

לאתר שגיאות בתוכניתלאתר שגיאות בתוכניתעוזר לנו ולקומפיילר עוזר לנו ולקומפיילר..

נציין שהכל מיוצג בזיכרון כרצף של אפסים ואחדות, ללא ציון נציין שהכל מיוצג בזיכרון כרצף של אפסים ואחדות, ללא ציון -הטיפוס או מקום ההתחלה של המשתנה. הטיפוס או מקום ההתחלה של המשתנה.

דואג שהתוכנית תתייחס לאפסים ולאחדות האלה דואג שהתוכנית תתייחס לאפסים ולאחדות האלה הקומפיילרהקומפיילר-בהתאם למשתנה שהוגדר.בהתאם למשתנה שהוגדר.

Page 16: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פלט )הדפסה( של ערכי משתניםפלט )הדפסה( של ערכי משתנים

שמאפשרת הדפסה של ערך המשתנה שמאפשרת הדפסה של ערך המשתנה printfprintfהכרנו את הפונקציה הכרנו את הפונקציה •למסך. למשל:למסך. למשל:

;; printf)“The sum is %d”, sum(printf)“The sum is %d”, sum(

מציין שכאן יודפס תוכן של משתנה, ומתאים לסוג מציין שכאן יודפס תוכן של משתנה, ומתאים לסוג dd%%הצירוף הצירוף •(.(.intint מתאים ל- מתאים ל-dd%%המשתנה שאותו מדפיסים )המשתנה שאותו מדפיסים )

עצמו לא מודפס. עצמו לא מודפס.dd%%ה- ה- •

..בפסיקבפסיקשם המשתנה שיודפס כאן מופיע לאחר הגרשיים, מופרד שם המשתנה שיודפס כאן מופיע לאחר הגרשיים, מופרד •

לכל סוג משתנה יש סימון הדפסה אחר, כמפורט בשקף הבא.לכל סוג משתנה יש סימון הדפסה אחר, כמפורט בשקף הבא.•

Page 17: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פורמטי הדפסה נפוציםפורמטי הדפסה נפוצים

•%%d – d – intint כרגיל( כרגיל(1010 )בבסיס )בבסיס •charchar - - %c%c•float, doublefloat, double - - %f%f ((21.5421.54 )הצגה עם נקודה עשרונית )הצגה עם נקודה עשרונית

%%ee הצגה עם מעריך( הצגה עם מעריך( e+001e+0012.1542.154 ) )

%%gg)נבחרת ההצגה היותר ברורה( )נבחרת ההצגה היותר ברורה(

)“%%”(;)“%%”(;printfprintfכדי להדפיס את הסימן %, נכתוב כדי להדפיס את הסימן %, נכתוב •

Page 18: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

דוגמא: כפל של שני מספרים דוגמא: כפל של שני מספרים ממשייםממשיים

#include <stdio.h>#include <stdio.h>

int main()int main(){{      doubledouble a,b,c; a,b,c;

   a = 2.5   a = 2.511;;   b =    b = 22;;   c = a   c = a**b;b;   printf("The product is    printf("The product is %g%g\n", c);\n", c);   return 0;   return 0;

}}

The product isThe product is 5.025.02הפלט: הפלט:

Page 19: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

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

#include <stdio.h>#include <stdio.h>

int main()int main(){{   double a,b,c;   double a,b,c;

   a = 2.5   a = 2.511;;   b =    b = 22;;   c = a   c = a**b;b;   printf(“   printf(“%g%g * * %g%g = = %g%g\n", \n", aa,,bb,,cc););   return 0;   return 0;

}}

= = 22 * * 5.025.022.512.51הפלט: הפלט:

Page 20: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

מותרות פעולות בפקודת ההדפסהמותרות פעולות בפקודת ההדפסה#include <stdio.h>#include <stdio.h>

int main()int main(){{   double a,b;   double a,b;

   a = 2.5   a = 2.511;;   b =    b = 22;;   printf(“%g * %g = %g\n", a,b,   printf(“%g * %g = %g\n", a,b,a*ba*b););   return 0;   return 0;

}}

= = 22 * * 5.025.022.512.51הפלט: הפלט:

Page 21: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

#include <stdio.h>#include <stdio.h>

int main()int main()

{{   printf("The product is    printf("The product is %g%g\n",\n",2.51*22.51*2););   return 0;   return 0;

}}

The product isThe product is 5.025.02הפלט: הפלט:

אפשר גם להדפיס כך מספריםאפשר גם להדפיס כך מספרים

Page 22: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

עיגול בהדפסת ממשייםעיגול בהדפסת ממשיים

כשמדפיסים ערך ממשי ניתן לציין את מספר כשמדפיסים ערך ממשי ניתן לציין את מספר •. . %4f4f.%.הספרות שיודפסו אחרי הנקודה. למשל: הספרות שיודפסו אחרי הנקודה. למשל:

במידת הצורך יתבצע עיגול. למשל:במידת הצורך יתבצע עיגול. למשל:•

printf(“%.2f”, 123.456);printf(“%.2f”, 123.456); 123.46 123.46

Page 23: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פירוט על הטיפוספירוט על הטיפוס charchar))תותו(( מאפשר מאפשר charcharאמרנו שהמחשב עובד רק עם מספרים, אבל הטיפוס אמרנו שהמחשב עובד רק עם מספרים, אבל הטיפוס •

גם תווים מיוצגים במחשב גם תווים מיוצגים במחשב לשמור בזיכרון אותיות, סימנים, וכו'. לשמור בזיכרון אותיות, סימנים, וכו'. כמספרים.כמספרים.

"טבלת "טבלת תווים אפשריים )שנקראת תווים אפשריים )שנקראת 256256יש לקומפיילר טבלה של יש לקומפיילר טבלה של •ASCIIASCII"" של התו של התו במספר הסידוריבמספר הסידורי(. כדי לייצג תו, הקומפיילר משתמש (. כדי לייצג תו, הקומפיילר משתמש

הזה בטבלה. הזה בטבלה.

, , 65-9065-90 נמצאות בטבלה לפי הסדר במקומות נמצאות בטבלה לפי הסדר במקומות ’’A’ - ’ZA’ - ’Z''למשל האותיות למשל האותיות • לפי לפי ''00' – '' – '99'' והספרותוהספרות, , 97-12297-122 לפי הסדר במקומות לפי הסדר במקומות ’’a’ - ’za’ - ’z''האותיות האותיות

בטבלה. בטבלה. 48-5748-57הסדר במקומות הסדר במקומות ;;char c=65char c=65 מתורגם ע"י הקומפיילר ל- מתורגם ע"י הקומפיילר ל- ’;’;char c=‘Achar c=‘Aלמשל למשל •

כל הסימנים שיש במחשב, כולל רווח, ירידת-שורה, וכו' נמצאים בטבלה. כל הסימנים שיש במחשב, כולל רווח, ירידת-שורה, וכו' נמצאים בטבלה. •(.(.' ' nn\\'' התו ירידת-שורה התו ירידת-שורה ' '' ')התו רווח מסומן על-ידי )התו רווח מסומן על-ידי

Page 24: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

charchar פירוט על הטיפוספירוט על הטיפוס

כיוון שתווים מתורגמים למספרים, אפשר גם לעשות כיוון שתווים מתורגמים למספרים, אפשר גם לעשות •עליהם פעולות חשבון.עליהם פעולות חשבון.

..’’bb‘‘ זה זה a’+1a’+1‘‘למשל למשל •'.'.99 זה ' זה '11’+’+88 ‘ ‘•

Page 25: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

תווים מיוצגים כמספרים - דוגמאתווים מיוצגים כמספרים - דוגמא#include<stdio.h>#include<stdio.h>int main()int main(){{char i = ‘A';char i = ‘A';

printf(“i as a character is: printf(“i as a character is: %c%c\n", i);\n", i);printf("i as an integer is: printf("i as an integer is: %d%d\n", i);\n", i);printf("The character after printf("The character after %c%c is: is: %c%c\n", \n", i, i+1);i, i+1);

return 0;return 0;}}

i as a character is: Ai as a character is: A

i as an integer is: 65i as an integer is: 65

The character after A is: BThe character after A is: B

;char i=65זה כמו

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

כמספר

Page 26: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

קלט של ערכי משתניםקלט של ערכי משתנים..קלט שמכניס המשתמשקלט שמכניס המשתמשבד"כ נרצה שהתוכנית תעבוד על בד"כ נרצה שהתוכנית תעבוד על •

שקולטת ערך שקולטת ערך scanfscanf, קיימת הפונקציה , קיימת הפונקציה printfprintfבדומה לפונקציה בדומה לפונקציה •מהמשתמש לתוך משתנה. למשל קלט של שלם וממשי )בהנחה מהמשתמש לתוך משתנה. למשל קלט של שלם וממשי )בהנחה

(:(:floatfloat ו- ו- intintשהמשתנים האלה כבר הוגדרו כ- שהמשתנים האלה כבר הוגדרו כ- scanfscanf(“%d %f”, (“%d %f”, &&student_num, student_num, &&average);average);

המחשב ממתין לקלט, ומכניס אותו למשתנים שרשומים. המחשב ממתין לקלט, ומכניס אותו למשתנים שרשומים. •..EnterEnterאחרי הקשת הקלט על המשתמש להקיש אחרי הקשת הקלט על המשתמש להקיש •

, למעט זה שב- , למעט זה שב- printfprintf סימוני הקלט זהים לסימוני ההדפסה ב- סימוני הקלט זהים לסימוני ההדפסה ב- •doubledouble :צריך לכתוב: צריך לכתוב %%lflf

Page 27: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

דוגמא: סכום של מספרים מהקלטדוגמא: סכום של מספרים מהקלט#include <stdio.h>int main(){

int a, b, sum;

printf(“Enter an integer\n”);scanf(“%d”, &a);printf(“Enter an integer\n”);scanf(“%d”, &b);sum = a + b;

printf(“Answer: %d\n”, sum);

return 0;}

Enter an integerEnter an integer

55

Enter an integerEnter an integer

77

Answer: 12Answer: 12

a b sum

5 7 12

Page 28: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פעולות נפוצות על משתניםפעולות נפוצות על משתנים"נקראות גם "אופרטורים אריתמטיים"נקראות גם "אופרטורים אריתמטיים

סוגריים סוגריים)()( השמה השמה== חיבור חיבור++ חיסור חיסור–– כפל כפל** חילוק חילוק// )מודולו )שארית( מודולו )שארית%%

.מודולו זה השארית בחלוקה של מספרים שלמים.מודולו זה השארית בחלוקה של מספרים שלמים..8%38%3 = = 22 7%27%2= = 11 למשל: למשל:

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

Page 29: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

#include <stdio.h>#include <stdio.h>

int main()int main(){{

double cels, fahr;double cels, fahr;

printf("Please enter a fahrenheit temperature:\n");printf("Please enter a fahrenheit temperature:\n");scanf("scanf("%lf%lf",",&&fahr);fahr);

cels = 5*(fahr-32)/9;cels = 5*(fahr-32)/9;printf("This is equal to %g degrees celsius\n", cels);printf("This is equal to %g degrees celsius\n", cels);

return 0;return 0;} }

דוגמא: תרגום מפרנהייט לצלזיוסדוגמא: תרגום מפרנהייט לצלזיוס

קליטת ערך למשתנה

חישוב והדפסת התוצאה

הגדרת המשתנים

Page 30: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פעולות – נקודות לתשומת-לבפעולות – נקודות לתשומת-לב:בחלוקת מספרים שלמים תתקבל המנה ללא השארית:בחלוקת מספרים שלמים תתקבל המנה ללא השארית

33==7/27/2

אם פעולה נעשית על משתנים מסוגים שונים, המחשב ימיר את אם פעולה נעשית על משתנים מסוגים שונים, המחשב ימיר את7/2.07/2.0==3.53.5כולם לסוג שיש לו טווח/דיוק יותר גדול מביניהם. למשל: כולם לסוג שיש לו טווח/דיוק יותר גדול מביניהם. למשל:

אם נכניס למשתנה ערך גדול מהטווח המקסימלי שלו, נקבל אם נכניס למשתנה ערך גדול מהטווח המקסימלי שלו, נקבל(. לכן כשעובדים עם מספרים גדולים (. לכן כשעובדים עם מספרים גדולים overflowoverflowתוצאה שגויה )תוצאה שגויה )

..doubledoubleבמיוחד יש להשתמש ב- במיוחד יש להשתמש ב-

Page 31: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פעולות – נקודות לתשומת-לבפעולות – נקודות לתשומת-לב

אם רוצים שהמחשב יתייחס למשתנה באופן חד-פעמי כאילו הוא אם רוצים שהמחשב יתייחס למשתנה באופן חד-פעמי כאילו הוא

. . castingcasting, אז ניתן לציין זאת במפורש. זה נקרא , אז ניתן לציין זאת במפורש. זה נקרא מדויק יותרמדויק יותרמטיפוס מטיפוס :למשל:למשל

int i=1, j=2;int i=1, j=2;printf(“%g”, (printf(“%g”, ((double)(double) i ) / j);i ) / j);

והפלט יהיה:והפלט יהיה:

0.50.5

Page 32: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

פעולות – נקודות לתשומת-לבפעולות – נקודות לתשומת-לב

אפשרות נוספת לביצוע חילוק במספרים ממשיים ולא בשלמים אפשרות נוספת לביצוע חילוק במספרים ממשיים ולא בשלמים

בהתחלה )כי אמרנו שהפעולה מתבצעת בהתחלה )כי אמרנו שהפעולה מתבצעת 1.01.0היא הכפלה ב- היא הכפלה ב- בהתאם לסוג הכי מדויק של ערך שמשתתף בה(:בהתאם לסוג הכי מדויק של ערך שמשתתף בה(:

int i=1, j=2;int i=1, j=2;printf(“%g”, printf(“%g”, 1.0 1.0 * i / j);* i / j);

ושוב הפלט יהיה:ושוב הפלט יהיה:

0.50.5

למשתנה למשתנה jj או של או של ii)אופציה נוספת היא כמובן להעביר את הערך של )אופציה נוספת היא כמובן להעביר את הערך של (.(.doubledouble לפני החלוקה, ופשוט לחלק משתנה מסוג לפני החלוקה, ופשוט לחלק משתנה מסוג doubledoubleמסוג מסוג

Page 33: Www.cs.tau.ac.il/courses/cs4math/09b מבוא כללי למדעי המחשב שיעור שני: שימוש במשתנים

סיכוםסיכום

ראינו:

הגדרת משתנים•

טיפוסי משתנים בסיסיים•

פלט וקלט של משתנים•

ביצוע פעולות על משתנים•