Lecture 2 Flashcards
variable
משתנה: תא בזיכרון, שערכו עשוי להשתנות במהלך התכנית, בו נשמרים נתונים הנחוצים עבור פעולת התכנית
identifier
מזהה: נועד כדי לתת שם למשתנה, לטיפוס או לפונקציה
• יכול להיות מורכב מאותיות, ספרות, ומקף תחתון אך אינו יכול להתחיל בספרה
• מומלץ לבחור מזהים בעלי משמעות
• מזהים ארוכים מדי פוגעים בקריאות
constants
ניתן להגדיר ולהשתמש בקבועים מטיפוסים שונים - שלמים וממשיים
string constant
קבוע מחרוזת
נתון בתוך מרכאות “…”
לדוגמא “a = b + c”;
what’s the diffrence between ‘a’ and “a”?
‘a’ - הינו קבוע תו
“a” - הינו קבוע מחרוזת
’ \n ‘
קבוע תו מיוחד שמשמעותו מעבר שורה
’ ' ‘
קבוע תו מיוחד שמשמעותו גרש
’ " ‘
קבוע תו מיוחד שמשמעותו גרשיים
’ \0 ‘
קבוע תו מיוחד שמשמעותו סוף מחורזת
define constant
הגדרת קבועים סימבוליים על ידי define#
• ההוראה גורמת לכך שבשלב ה preprocessing יוחלפו כל המופעים של הקבוע בסדרת התווים המוגדרת
• מופעים בתוך מחורזת אינם מוחלפים
• הקבוע אינו משתנה ולא מוקצה עבורו זיכרון
סיבות לשימוש בקבועים סימבוליים
- שמות משמעותיים תורמים לקריאות התכנית
- הדרת קבוע תורמת לקריאות התכנית (וחוסכת הקלדות חוזרות של מספר ארוך - π לדוגמא)
- הגדרת קבוע למעלה מאפשרת באמצעות שינוי בודד לשנות את סך המופעים בתכנית
טיפוסי משתנים וקבועים בשפת C
יש להגדיר משתנים ואת טיפוסיהם לפני שנעשה בהם שימוש
ההגדרה הינה הוראה לקומפיילר:
• להקצות תא בזיכרון בגודל המתאים
• לקרוא לו בשם הנתון
• לפרש את תוכנו לפי הטיפוס הנתון
ניתן להוסיף גם אתחול
טיפוס המשתנה קובע את גודל תא הזיכרון שמוקצה עבורו, כיצד מפרשים את הסדרה הבינארית השמורה בו ואת הפעולות אותן ניתן לבצע עליו
טיפוס מסוג int
כל קבוע שלם הינו מטיפוס int, אלא אם מסומן אחרת
גודלו מוקצה בדרך כלל ל 4 בתים
טיפוסים שלמים נוספים
char, short, long
1=char<=short<=int<=long
על ידי הוספת המילה השמורה unsigned לפני שמות הטיפוסים השלמים נוותר על ייצוג המספרים השליליים ונכפיל את תחום המספרים החיוביים הניתנים לייצוג
ייצוג תווים
קבועי תו הינם מטיפוס שלם.
קיימות טבלאות ידועות המשייכות לכל תו ערך שלם כדוגמאת טבלת ASCII
משתנה בודד מטיפוס char שגודלו בית בודד, מספיק על מנת לשמור את כל הערכים המופעים בטבלת ASCII
הטיפוס הבסיסי double
קבועים ממשיים הינם מטיפוס double אלא אם מסומן אחרת
ישנם טיפוסים נוספים ממשיים
float
האופרטור (sizeof(object
האופרטור מחזיר את מספר הבתים הדרוש כדי לאחסן את הפריט בזיכרון כאשר הפריט הוא: שם של טיפוס type או ביטוי expression
casting
המרת טיפוסים מפורשת casting זהו אופרטור המרה שהוא קודם לסדר פעולות חשבון חיבור חיסור כפל וחילוק
expressions
ביטויים:
לכל ביטוי יש טיפוס ויש ערך
ביטוי הינו צירוף בעל משמעות של קבועים, משתנים ואופרטורים. ביטויים לפעמים מורכבים מתתי ביטויים.
נשים לב לסוגים שונים של פעולות שיכולות להרכיב ביטוי:
חד מקומית unary
דו מקומית binary
תלת מקומית ternary
הטיפוס של ביטוי חשבוני
פעולות חשבון המתבצעות על ערכים מאותו טיפוס מובילות לתוצאות מאותו הטיפוס
אם בביטוי מעורבים משתנים/קבועים מטיפוסים שונים, מתבצעת המרה אוטומטית (conversion/promotion) של הערכים לטיפוס הכללי יותר
char->short->int->long->float->double
מומלץ לא להשתמש ב float
פעולות חשבון וחילוק בשלמים
פעולות החשבון לפי סדר פעולות כפל חילוק חיבור חיסור. קיבוציות משמאל לימין.
חלוקה בשלמים היא מספר שלם
a / b
[a : b}
a % b
a - [a : b] * b
+11 / +5
2 (1)
8 / -3
-2 (2)
-23 / 5
-4 (-3)
-9 / -2
4 (-1)
Assignment Operation
פעולת השמה מעתיקה את ערכו של הביטוי בצד הימני אל המקום אשר מצוין בביטוי בצד שמאלי
לשים לב כי בשפת C “=” הוא אפרטור השמה.
הביטוי משמאל חייב לציין מקום ואילו הביטוי מימין מציין ערך.
האסוציאטיביות של אופרטורי השמה היא מימין לשמאל לדוגמא איפוס של 3 משתנים בביטוי אחד a=b=c=0
טיפוס וערך של ביטוי השמה
טיפוסו כטיפוס העצם משמאל
ערכו כערך החדש של העצם משמאל
כאשר הטיפוס של הערך המושם שונה מזה של המקום אליו מתבצעת ההשמה
נדרשת המרה!
לפעמים המרה תגרום לאובדן אינפורמציה - אם ממירים לטיפוס “קטן” יותר.
תזכורת - בפעולות בין טיפוסים שונים תתבצע המרה אוטומטית לטיפוס הכללי יותר
פעולת חשבון: +
פעולת ס”ביות: &
פעולת חשבון: -
פעולת ס”ביות: ^
פעולת חשבון: *
פעולת ס”ביות: |
פעולת חשבון: /
פעולת ס”ביות: <
פעולת חשבון: %
פעולת ס”ביות:»_space;
increment
פעולת קידום
decrement
פעולת נסיגה
4 שיטות לקידום משתנה לאחר השינוי
מה המשמעות של השוני?
++x
x++
x+=1
x=x+1
מה הבדל אם פעולת הקידום או הנסיגה בצד שמאל או ימין של הביטוי?
כאשר פעולת הקידום/נסיגה
בצד שמאל - ערך הביטוי כולו כערכו לאחר השינוי
בצד ימין - ערך הביטוי כולו כערכו לפני השינוי
ערך לוגי - ביטויי וערכי אמת
לכל ביטוי חשבוני שנכתוב ב-C ניתן גם לייחס ערך לוגי. אם ערכו המספרי של הביטוי הינו 0 אזי ערך האמת שלו הינו False אחרת ערך האמת שלו הוא True
אופרטור &&
and
אופרטור ||
or
אופרטור !
not
מה קודם למה אופרטורים של השוואה או אופרטורים לוגיים?
אופרטורים של השוואה קודמים לאופרטורים לוגיים
system(“pause”);
מאפשר להשהות את מה שרואים על המסך עד לחיצה על מקש כלשהו