Slide 1

מסמכים קשורים
Slide 1

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word B

Slide 1

Slide 1

PowerPoint Presentation

סדנת תכנות ב C/C++

Slide 1

Slide 1

הגשה תוך שבוע בשעת התרגול

PowerPoint Presentation

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

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

Slide 1

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

תכנות מונחה עצמים א' – תש"ע

Slide 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

תרגול 1

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

Microsoft Word - c_SimA_MoedB2005.doc

PowerPoint Presentation

PowerPoint Presentation

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

תוכן העניינים

פייתון

Microsoft PowerPoint - rec1.ppt

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

מהוא לתכנות ב- JAVA מעבדה 3

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה:

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

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

<4D F736F F D20E7E5F7E920E0E9EEE5FA20E1E8E1ECE42E646F63>

Slide 1

מבוא לתכנות ב- JAVA תרגול 7

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

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

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

Tutorial 11

Slide 1

Microsoft Word - Ass1Bgu2019b_java docx

שקופית 1

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

PRESENTATION NAME

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

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Slide 1

תוכן העניינים

Microsoft PowerPoint - rec3.ppt

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

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

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

234114

הגשה תוך שבוע בשעת התרגול

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

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

ex1-bash

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

Microsoft Word - pitaron222Java_2007.doc

PowerPoint Presentation

<4D F736F F D20F4F2E5ECE5FA20EEE5EEF6E0E5FA20312E646F63>

תורת הקומפילציה

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

סקירה מקרו – כלכלית שבועית

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

סקירה מקרו – כלכלית שבועית

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft PowerPoint - lec2.ppt

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

שיעור 1

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

מצגת של PowerPoint

Microsoft PowerPoint - YL-05.ppt

תרגיל בית מספר 1#

שעור 6

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

דף נגזרות ואינטגרלים לשאלון 608 כללים למציאת נגזרת של פונקציה: n 1. y' n x n, y הנגזרת x.1 נכפול בחזקה )נרשום אותה משמאל ל- (. x א. נחסר אחד מהחזקה. ב

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

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

PowerPoint Presentation

מבוא לאסמבלי

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft PowerPoint - lec10.ppt

Slide 1

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

מתכונת עיצוב 3013

Microsoft PowerPoint - L01-n.ppt

תמליל:

מבוא לשפת C תירגול 3: טיפוסים והמרות 1

מה היה שבוע שעבר? משתנים קלט/פלט scanf( ו- printf ( Redirection The Input Buffer 2

תוכנייה טיפוסי משתנים קלט/פלט מעוצב המרה בין טיפוסים קבועים 3

חישוב ממוצע בין שני מספרים #include <stdio.h> int main(void) { int a, b, average, nrofreadvalues; printf("enter the first value:"); nrofreadvalues = scanf("%d",&a); if(nrofreadvalues < 1) return 1; printf("enter the second value:"); nrofreadvalues = scanf("%d",&b); if(nrofreadvalues < 1) return 1; average = (a + b) / 2; printf("the average is %d.\n", average); return 0; } 4

התוכנית השתגעה? 5

מקור הבעיה אמרנו שהתוכן של כל תא בזיכרון הוא ספרות בינאריות. ניתן לפרש תוכן זה איך שנרצה )מספר, אות, תו מוזיקלי, צבע...(. כשאנו מגדירים משתנה, אנו מצהירים מהו הטיפוס של המשתנה. טיפוס המשתנה = האופן בו התוכנה מפרשת את תוכן התא. בתוכנית שלנו, הגדרנו את כל המשתנים בעזרת המלה השמורה,int שהיא קיצור של integer )מספר שלם(. לכן, החישוב התבצע בעזרת אריתמטיקה של שלמים: (1 + 4) / 2 = 5 / 2 = 2.5 = 2 אם מקבלים מספר לא שלם זורקים את החלק שאחרי הנקודה עבור מספרים חיוביים שקול ל - עבור מספרים שליליים שקול ל - תוצאה של כל פעולה בין שני מספרים שלמים היא מספר שלם 6

איך עובדים עם שברים? כדי לעבוד עם שברים, ניתן להגדיר משתנים מסוג,double המייצגים שבר עשרוני. למשל: double a, b, average; a = 1; b = 4; average = (a+b) / 2; average הינו!2.5 7

קלט ופלט של ערכים מטיפוס double כדי לקלוט ערכים מטיפוס,double יש להשתמש ב- lf % בפונקציה scanf כדי להדפיס ערכים מטיפוס,double יש להשתמש ב- f % בפונקציה printf double total, price; int nrofreadvalues; nrofreadvalues = scanf("%lf", &price); if(nrofreadvalues < 1) return 1; total = price * 9; printf("the total is %f", total); 8

לתקן את התוכנית האם תוכלו לתקן את התוכנית, נכונה את הממוצע של 4 ו- 1? כך שתחשב 9

משתנים וטיפוסים / חשוב לזכור: לכל משתנה יש טיפוס. טיפוסים מסוגים שונים יש להדפיס באופן שונה. לקלוט הטיפוס של משתנה נקבע כשמגדירים את המשתנה, ואינו יכול להשתנות במהלך פעולת התוכנית. 10

טיפוסי משתנים 11

טיפוסי משתנים הכרנו עד כה שני טיפוסים שונים למשתנים: int משמש לציין משתנים המכילים ערכים שלמים חיוביים או שליליים.,)integer( למשל, עבור הערכים 1, 12, -132, 56, 10,343,455 וכו'. double משמש לציין משתנים שיכולים לכלול שברים עשרוניים. למשל, עבור הערכים 1.0, 1.2, -324.32, 3.1415, 10.3e12 וכו'. חשוב להבין: בשני המקרים, המשתנה שמור בזיכרון כאוסף סיביות. ההבדל הוא איך מתרגמים את ערך המשתנה לסיביות וחזרה. 12

כמה סיביות? אפשר לגלות מה הגודל של כל משתנה תופס בזיכרון( בעזרת אופרטור.sizeof )כמה בתים הוא האופרטור מקבל שם של טיפוס )או משתנה( כפרמטר, ומחזיר את כמות הזיכרון )בבתים( שהמשתנים מטיפוס זה תופסים. זכרו: בית אחד = 8 סיביות. למשל: כאן מותר לכתוב שם משתנה או טיפוס int size = sizeof(double); printf("type double has size: %d bytes.", size); 13

טיפוסים אחרים מעבר לשני טיפוסי המשתנים שכבר פגשנו, כמה סוגי טיפוסים אחרים: C יש בשפת * שם הטיפוס סוג המידע הנשמר גודל )בבתים (* טווח ייצוג char מספרים שלמים.. 127 1-128 int מספרים שלמים -2,147,483,648..2,147,483,647 4 long מספרים שלמים -2,147,483,648..2,147,483,647 4 float מספרים עם שברים ±3.4*10 38 4.. -38 ±3.4*10 double מספרים עם שברים ±1.7*10 308 8.. -308 ±1.7*10 זהו הגודל ש- Code::Blocks מקצה עבור משתנים מסוג זה. מהדרים שונים יכולים להקצות גדלים שונים! למשל, במהדרים רבים, int ו- long הם בני 8 בתים. במחשבים ישנים int היה תופס 2 בתים וטווח הייצוג היה.. 32,767 32,768-14

לשם מה הכפילות? אם )למשל( יש אפשרות לשמור מספרים-עם-שברים ב- 4 בתים בלבד, לשם מה יש צורך במשתנה המאפשר לשמור מספרים-עם-שברים ב- 8 בתים? במילים אחרות: אם יש את,float אם יש את לשם מה צריך את,char בשביל מה צריך את )זכרו כי זיכרון המחשב מוגבל. האם שימוש במשתנים מטיפוסים "גדולים" יותר אינו אלא בזבוז?(?double?int 15

התשובה: עניין של דיוק! כמה ספרות אחרי הנקודה העשרונית אפשר לשמור במשתנה מסוג?float... ובמשתנה מסוג?double מהו הערך הגדול ביותר שניתן לשמור במשתנה מסוג?float... ובמשתנה מסוג?double התשובות לשאלות האלו לא חשובות לנו. אלא הרעיון שעומד מאחריהן. )כלומר שיש הבדל!( 16

קלט / פלט וטיפוסים שונים ראינו שהשימוש ב- scanf וב- printf שונה מעט בין int לבין )d% double לעומת %lf ו- f %, בהתאמה(. למעשה, לכל טיפוס יש סימון משלו לשם שימוש ב-.printf/scanf בחירה בסימון הלא נכון לא תמנע מהתוכנית לרוץ, אולם התוכנית תדפיס ערכים שגויים! משום שהמחשב "יפענח" את הסיביות באופן שגוי. char int long float double %c %d %ld %f scanf: %lf printf: %f אבל ניתן להדפיס בדרך נוספת... 17

טיפוס char 18

לפענח char קצת אחרת... משתנה מסוג char שונים. יכול לשמור אחד מ- 256 ערכים ישנה טבלה סטנדרטית )ASCII( להמרה בין 256 מספריים, לבין 256 תווים שונים. ערכים,%c אם נדפיס משתנה מסוג char המתאים ולא הערך המספרי! בעזרת יודפס התו שם המשתנה, שימוש זה. הוא קיצור ל- character,char ורומז על 19

טבלת :ASCII ממספרים לתווים 20

דוגמה: הדפסת תווים #include <stdio.h> int main(void) { char c = 65; printf("the numeric value is %d\n", c); printf("the character is %c\n", c); return 0; } The numeric value is 65 The character is A ניתן להדפיס char באמצעות d% אך לא לקלוט char באמצעות d% )למה?( והפלט: 21

שימוש בתווים בתוכנית ניתן לקבוע את ערכו של משתנה מסוג char לא רק בעזרת השמת ערך מספרי, אלא גם בעזרת השמת תו. התו צריך להיות מוקף בתווי גרש בודד לא מרכאות! למשל: char ch = 'B'; מה יהיה ערכו המספרי של ch במקרה זה? ניתן גם לקרוא תווים מהמשתמש בעזרת scanf עם פרמטר c%. למשל, scanf("%c", &ch); 22

דוגמה: מיקום אות בא"ב איך אפשר לדעת באיזה מיקום נמצאת אות בא"ב? Z A B C X Y אות ASCII מספר x x+1 x+2 x+23 x+24 x+25 23 24 25 2 0 1 מספר יחסי )ל-' A '( שימו לב לקשר בין האות X לבין האות A: 'X' 'A' = 23 ניתן לחשב את הערך היחסי לכל אות ע"י: ערך ASCII של 'A' - האות המדוברת = ערך יחסי של האות המדוברת 23

דוגמה: מיקום אות בא"ב #include <stdio.h> int main() { char ch; int position; printf("enter an uppercase letter: "); scanf("%c",&ch); position = ch - 'A'; printf("position ASCII table: %d\n", ch); printf("position AlphaBet: %d\n", position); return 0; } 24

קלט / פלט מעוצב 25

פלט מעוצב מה תדפיס התוכנית הבאה כשהקלט הוא 100? #include <stdio.h> int main(void) { double per_year; double per_month; printf("how much do you earn per year? "); scanf("%lf", &per_year); per_month = per_year / 12; printf("you earn %f per month.", per_month); return 0; } 26

והתוצאה 6 ספרות אחרי הנקודה? האם זה הכרחי במקרה זה? 27

שליטה באופן ההדפסה ניתן לשלוט באופן הדפסה של printf בעזרת ערכים מיוחדים בין סימן ה-% לאות הטיפוס. למשל, עבור הדפסת,double ניתן לקבוע כמה ספרות יודפסו אחרי הנקודה: printf("%.2f", per_month); יעגל את המספר לשתי ספרות אחרי הנקודה. ניתן גם לקבוע אורך מינימאלי של המספר המודפס: printf("%6.2f", per_month); אם מספר המודפס לפי הצורך: קטן מ- 6 תווים, פחות מ- 6 תווים יוספו רווחים לפני המספר בדיוק 6 תווים יותר מ- 6 תווים 28

והתוצאה... והתוצאה של printf("you earn %.2f per month.", per_month); תהיה: 29

קלט מעוצב בדומה לפלט מעוצב, עיצוב נתון: scanf יכולה לקלוט קלט לפי רווחים לבנים: מצפים לרווח בקלט ולא מדלגים עליהם. תווים אחרים: מצפים להתאמה בקלט ולא יוכנסו למשתנים. תווים מיוחדים עם %: מצפים לערכים לפי הטיפוס המתואר על ידי התו ליד ה-%. במקרה והקלט לא מעוצב לפי הדרישה ב- scanf, רק התווים התואמים לדרישה נקראים והיתר נשארים ב-.Input Buffer 30

דוגמה: קריאת קלט מעוצב איך ניתן לקלוט תאריך מהצורה dd/mm/yyyy לתוך שלושה משתנים שלמים: m d, ו- y? #include <stdio.h> int main(void) { int d, m, y; printf("enter the date: "); scanf("%d/%d/%d", &d, &m, &y); printf( In the USA the date is written: %d/%d/%d.", m, d, y); return 0; } 31

דוגמה: קליטת תווים מה נקלט בכל משתנה בתוכנית הבאה: char currency; int payment; printf("payment amount ($-dollars, N-NIS): "); scanf("%d",&payment); scanf("%c",&currency); 4000 N payment 4000 currency \n 1000$ payment 1000 currency $ 32

דוגמה: קליטת תווים )בלי שגיאות( לפני קליטה של תו בודד כדאי להבטיח כי ה- buffer Input ריק. אחרת התו הראשון ב- Buffer נקלט לתוך המשתנה. לפעמים, ניתן להימנע ממצבים כאלה בעזרת קלט מעוצב. בדוגמה הקודמת, אומרים ל- scanf לדלג על התו של הורדת שורה ע"י הוספת n\ לפני קליטת התו: scanf("\n%c",&currency); 33

לקלוט תו, תו... בספרייה stdio.h תו בודד בלבד: אם ה- Buffer Input הבא. הפעולה היא בדיוק כמו קיימת פונקציה נוספת לקליטת ריק, אז הפעולה תמתין לתו עם scanf char במקום int מחזירה getchar כי מודיעה על שגיאות ע"י ערכים מחוץ לתחום 0...255. %c int ch; ch = getchar(); אחד. לדוגמה, הפעולה שימושית לקליטת הרבה תווים רצופים. 34

המרת טיפוסים 35

מהי המרת טיפוסים? לעיתים קרובות נרצה לבצע חישוב המבוסס על ערכים, השמורים במשתנים מטיפוסים שונים. למשל, לחבר char עם.int לשם כך, יש להמיר את אחד הערכים כדי ששניהם יהיו מאותו טיפוס. או להמיר את שניהם לטיפוס שלישי כלשהו )למשל,.)double ישנם שני סוגי המרות: המרה אוטומטית מתבצעת עבורנו מבלי שנבקש המרה מכוונת מתבצעת על-פי בקשה מפורשת. 36

המרה מכוונת int i = 5; float f = 5.5; double d = 5.9;.type-cast המרה מכוונת נקראת לעיתים cast אופן הכתיבה: (type) expression למשל: או i = (int) f; f = (float) d + (float) i + 2.0; d = (double) (i * 2); f = (float) 4; למרות שזהו מספר שלם, כל מספר עם נקודה עשרונית נחשב תמיד לשבר )כלומר ערך מטיפוס float או.)double מה הערך של i אחרי שורה זו? 37

המרה אוטומטית האופרטורים בשפת C )חיבור, חיסור וכו'( פועלים רק על שני ערכים מאותו טיפוס. לכן, כשאנו מנסים להפעיל אופרטור על שני ערכים מטיפוסים שונים, למעשה מתבצעת המרה אוטומטית של טיפוס אחד למשנהו... למשל: לא ניתן לחבר double ו- int, לכן מתבצעת כאן המרה אוטומטית. איזה משני הערכים עובר המרה לטיפוס השני? int i = 2; double d = 4.5; double total = d + i; 38

המרה אוטומטית גם בעת הצבה למשתנים עשויה להתבצע המרה. למשל, כשמציבים ערך מטיפוס לא מתאים אל משתנה, מתרחשת המרה אוטומטית לטיפוס של המשתנה. למשל: מה יהיו הערכים של i ושל j לאחר שתי ההשמות? באילו סוגי המרות יכול להתרחש "אובדן מידע"? באילו סוגי המרות לעולם אין אובדן מידע? double d = 4.5; int i = d * 3; int j = 7.9; 39

"עדיפות טיפוסים" בהמרות כדי לשמור על דיוק במידת האפשר ולמנוע אובדן מידע, תמיד המרות העדיפות על אחרות. יש למשל, כדי לחבר int ל- char, נמיר את ה- char ל- int ולא להיפך, משום שכל ערך הניתן לייצוג ע"י char ניתן לייצוג גם ע"י,int אבל לא להיפך! ההמרות מתבצעות לפי מדרג )הירארכיה(; תמיד נעדיף להמיר לטיפוס המופיע במקום גבוה יותר במדרג הבא: double float long int char 40

דוגמה נתבונן בסדרת הפעולות הבאה: int v1 = 3; int v2 = 4; double v3 = 7.3; double result; result = v3 + v1 / v2; קודם מתבצע החילוק, בשל סדר פעולות החשבון. זהו חילוק של שני int םי- אין צורך בהמרה. התוצאה היא 0, מטיפוס.int כעת, חיבור של double ושל :int ממירים את ה- int ל- double, ומחשבים את הסכום. התוצאה היא.double אין בעיה להציב תוצאה מסוג double למשתנה מסוג.double 41

כבר כאן יש המרה, מ- int דוגמה 2 )הטיפוס של 3( ל- double. כעת, נחליף את הטיפוס של שני משתנים... double v1 = 3; בשל סדר int v2 = 4; פעולות החשבון. double ב- int דורש המרה. double v3 = 7.3;,0.75 מטיפוס.double int result; result = v3 + v1 / v2; קודם מתבצע החילוק, חילוק של התוצאה היא כעת, חיבור של שני :double אין צורך בהמרה. התוצאה היא מטיפוס.double לבסוף, אנו מציבים ערך מסוג double במשתנה מסוג :int נדרשת המרה. 42

קבועים 43

רשימה של קבועים לפעמים נרצה להגדיר משתנה שיכול לקבל ערך אחד מבין רשימה של קבועים אפשריים. enum מאפשר לנו להגדיר רשימה כזו, כך שכל איבר בה מקבל ערך שלם. לכל איבר ניתן לציין את ערכו השלם. אם לא צויין, אז כל איבר מקבל ערך עוקב. ברירת מחדל היא 0 עבור האיבר הראשון ברשימה. כל האיברים מופרדים בפסיקים enum boolean { NO, YES };."," 44

דוגמה איך ניתן להגדיר רשימה של חודשים? enum months { שם הרשימה JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC }; JAN שמות הקבועים ואיך נשתמש בה במהלך התוכנית? קביעת ערך עבור קבוע ינואר enum months now;.int now = MAR; printf("we are in month %d\n", now); לא לשכוח ";" בסוף! הגדרת משתנה now אשר בעצם הינו מטיפוס מה יודפס כאן? 45

הגדרת קבועים באמצעות #define הוראת #define מאפשרת להגדיר קבועים. לדוגמה, ההוראה הבאה מגדירה קבוע :PI #define PI 3.14 בעצם זאת הוראה לתהליך preprocessing שמתבצע לפני כל קומפילציה, והיא אומרת להחליף כל מחרוזת PI המופיעה בקוד במחרוזת 3.14. אם נרצה להגדיל את הדיוק של PI בתוכנית שלנו, לא נצטרך לעבור על כל הקוד. מספיק לשנות את ה- define ולקמפל. #define PI 3.14159 46

הגדרת קבועים באמצעות #define #include <stdio.h> #define SECONDS 60 int main() { int minutes = 127; printf("%d minutes are %d seconds.", minutes, SECONDS * minutes); return 0; } בדרך כלל שמים הוראות #define בתחילת הקובץ, מיד אחרי הוראות.#include נהוג לתת לקבועים שמות באותיות גדולות. ";" אחרי #define אין נקודה-פסיק 47