תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מבוא כללי למדעי המחשב שיעור שלישי: בקרת זרימה.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבוא למדעי המחשב מחרוזות, מצביעים וכתובות
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
מבוא לשפת C תרגול 12: עוד רקורסיה
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
תכנות תרגול 2 שבוע : צור קשר מתרגל – שי גוטנר, ביה " ס למדעי המחשב. מתרגל – שי גוטנר, ביה " ס למדעי המחשב. דואר אלקטרוני : דואר.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
מבוא למדעי המחשב תרגול מספר.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
1 מבוא למדעי המחשב מושגי יסוד. 2 אלפבית תווים המותרים בשימוש בתכניות C: אותיות לטיניות קטנות : a,b,c, …,z אותיות לטיניות גדולות : A,B, C, …,Z ספרות :
תרגול 2: ייצוג מספרים - המשך
מתמטיקה בדידה תרגול 2.
A. Frank File Organization Hardware Size Parameters.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
הרצאה 3 מבוא למדעי המחשב לתעשייה וניהול הודעות : הודעות : או דרך moodle – ושם לפנות ל : אתר מכון טל החומר.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
הרצאה 3: משפטים, תנאים ולולאות
מבוא כללי למדעי המחשב שיעור 2
תרגול 8 תחומי הכרה פונקציות
תוכנה 1 תרגול 13 – סיכום.
עקרונות בסיסיים בתכנות Visual Basic
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

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

מבוא למדעי המחשב. כל הזכויות שמורות © תוכנייה חזרה קצרה על התרגול הקודם חישוב מקוצר משפטי if מקוננים דוגמאות משפטי switch 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © ייצוג ערכי אמת לכל ביטוי לוגי יש ערך אמת. ערך האמת הוא true או false ("נכון" או "שגוי"). אם לביטוי יש ערך אמת true, נהוג לומר שהביטוי "מתקיים". בשפת C: ערך מספרי 0 מייצג false. ערך מספרי שונה מ-0 (ובפרט, הערך 1) מייצג true. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

משפט if אחד השימושים של ביטוים לוגים הינו משפט if. פקודות לביצוע אם התנאי מתקיים } else { פקודות לביצוע אם התנאי לא מתקיים תנאי הינו ביטוי כלשהו אם if או else מכיל רק פקודה אחת – אפשר לא לכתוב את הסוגריים המסולסלים else הינו חלק אופציונאלי 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

הרכבת ביטוי לוגי - פעולות השוואה פעולות השוואה בין ביטויים: ==, >=, <=, <, <, != שווה, גדול-שווה, קטן-שווה, גדול, קטן, שונה זכרו את ההבדל בין "==" (השוואה) לבין "=" (השמה)! אם ההשוואה מצליחה, לביטוי יש ערך 1 (כלומר, true). אחרת, לביטוי יש ערך 0 (כלומר, false). 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

הרכבת ביטוי לוגי - אופרטורים בוליאניים אופרטור "וגם": x && y, מתקיים רק אם גם x וגם y הם true (כלומר, שונים מאפס). אופרטור "או": x || y, מתקיים אם לפחות אחד משני הביטויים x ו-y הוא true (כלומר, שונה מאפס). האופרטור שלילה ("not"): !x, "הופך" את ערך האמת של ביטוי: אם האופרטור פועל על 0, התוצאה היא 1. אם האופרטור פועל על ערך שונה מ-0, התוצאה היא 0. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

אופרטורים בוליאניים - טבלת אמת טבלת אמת מציינת לכל סט פרמטרים אפשרי את ערך הביטוי הלוגי: x ו-y יכולים להיות ביטוי כלשהו: קבוע, משתנה, ביטוי לוגי, ביטוי מתמטי. x y x && y x || y !x 1 לא 0 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © חידה: שלילה כפולה מה תדפיס התוכנית הבאה? int a, b, c; a = 7; b = !a; c = !!a; printf(“%d, %d, %d\n”, a, b, c); 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

תקן את התוכנית מצא שלוש שגיאות בתוכנית הבאה: #include <stdio.h> int main(void) { int grade, factor, need_factor; scanf("%d", &grade); need_factor = (grade <= 55); /* grade <= 55 gets 10 points factor */ if (need_factor = 0) printf(“No factor is required.\n”); factor = 0; else factor += 10; printf("The final grade is %d.\n", grade + factor); return 0; } אילו מהשגיאות הן שגיאות קומפילציה? השמה בתוך if איננה שגיאת קומפילציה, אבל Visual Studio מזהה בתור Warning כנ"ל שימוש במשתנים לא מאותחלים 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

אופרטורים וביטוים – חזרה והרחבה

מבוא למדעי המחשב. כל הזכויות שמורות © מהו אופרטור? אופרטור (operator) הוא פעולה של C, המקבלת ערך יחיד, זוג או שלושה ערכים ומחזירה ערך כלשהו. ערכים שהאופרטור מקבל נקראים אופרנדים (operands): X + 5 כל אופרנד יכול להיות ערך קבוע, משתנה, הערך המוחזר של פונקציה או ביטוי מורכב כלשהו: y = scanf(“%d”, &x) < 1; z += ((x + y) * 3) != (x – y); left operand right operand ‘+’ operator 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מהו ביטוי? ביטוי (expression) הינו הרכבה של אחד או יותר אופרטורים: (x > 0) && (x < 100) y = x*8 + 1 בשביל לחשב ביטוי מחשבים כל אחד מהאופרטורים המרכיבים אותו לפי סדר הקדימויות. חישוב של כל אופרטור נותן ערך שנשמר במקום זמני בזיכרון ונהרס כאשר לא צריכים אותו יותר. דוגמה: מה עושים הביטויים הבאים: int a, b, c, d, num_of_positive; a=b=c=d=0; scanf(“%d%d%d%d”, &a, &b, &c, &d); num_of_positive = (a>0) + (b>0) + (c>0) + (d>0); האם מותר להוריד את הסוגריים בביטוי הזה? 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © סוגי אופרטורים אופרטור אונארי (unary operator) מקבל ערך יחיד. לדוגמה: ++, --, !, (type), sizeof אופרטור בינארי (binary operator) מקבל שני ערכים. לדוגמה: +, -, %, ||, &&, >, <, ==, =, += אופרטור טרנארי (ternary operator) מקבל שלושה ערכים. ב-C קיים רק אופרטור טרנארי אחד: ""?: 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

האופרטורים שלמדנו ו-side effects ישנם אופרטורים שחוץ מלחשב את הערך, גם משנים את האופרנדים שלהם. השפעה זו נקראת תוצאת לוואי (side effect) של האופרטור. אופרטורים ללא side effects: פעולות חשבון: +, -, /, *, % אופרטורים לוגיים: >, <, <=, >=, ==, !=, &&, ||, ! אופרטור המרה: (type) אופרטור למציאת גודל המשתנה: sizeof אופרטורים עם side effects (שמשנים אחד האופרנדים): השמה: =, +=, -=, /=, *=, %= קידום/נסיגה: ++, -- מהו הערך המתקבל מהחישוב של כל אחד מהאופרטורים? 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © האופרטור ?: תחביר : expr1 ? expr2 : expr3 אם expr1 הוא TRUE אז הערך של הביטוי כולו הוא expr2, אחרת expr3. דוגמה 1 – חישוב maximum: max = (x > y) ? x : y; דוגמה 2 – שינוי של אות קטנה לאות גדולה: char ch; printf(“Enter a letter\n”); scanf(“%c”, &ch); ch = (ch>=’a’ && ch<=’z’) ? (ch - ‘a’ + ‘A’) : ch ; 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

חישוב מקוצר

מבוא למדעי המחשב. כל הזכויות שמורות © חידה: מספיק לדעת חצי? התבוננו בתוכנית הבאה: int x, y, z; printf(“Enter value for x:”); scanf(“%d”, &x); printf(“Enter value for y:”); scanf(“%d”, &y); z = x * y; printf(“Result is %d\n”, z); האם אפשר (לפעמים) לדעת מה תדפיס התוכנית, מבלי לדעת איזה ערך יזין המשתמש עבור y? כלומר, לדעת את ערכו של z על-סמך x בלבד? 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

חידה: כנ"ל, באלגברה בוליאנית? בכפל, ניתן לדעת את התוצאה אם יודעים שאחד הגורמים הוא 0 – וזאת, מבלי לדעת מהו הגורם השני. ומה לגבי אלגברה בוליאנית? מהו הערך של הביטוי הבא: (1>3) && (x==y) && (x<12) && (17<19) && (y<8) האם יש טעם לחשב את כל הביטוי מהתחלה ועד הסוף? (x!=x) || (x==x) || (x<12) || (17<19) || (y<8) 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

חישוב מקוצר במקרה של אלגברה בוליאנית, שפת C מנצלת את העובדות שהכרנו בשקפים הקודמים. אופרטור “||” (OR): אם האופרנד השמאלי הינו true, לא מתבצע חישוב של האופרנד הימני. התוצאה שווה ל-1 בכל מקרה. אופרטור “&&” (AND): אם האופרנד השמאלי הינו false, לא מתבצע חישוב של האופרנד הימני. התוצאה שווה ל-0 בכל מקרה. חישוב מקוצר זה נקרא lazy evaluation (או short-circuit evaluation). להזכירכם, החישוב של האופרטורים || ו-&& מתבצע משמאל לימין 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

חידה: השפעת חישוב מקוצר מה תדפיס התוכנית הבאה: אם המשתמש סיפק את הערך "7" עבור x? אם המשתמש סיפק את הערך "-3"? אם המשתמש סיפק את הערך "-2"? int x; scanf(“%d”, &x); if (x != 0) { x += 2; if (x || ++x) { x++; } printf(“%d\n”, x); 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © תכנות מחשבון כעת ננסה לתכנת "מחשבון כיס". המשתמש יזין: מספר (x), פעולת חשבון (+ או – או * או /), מספר נוסף (y) התוכנית תדפיס את תוצאת הפעולה על x ועל y. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

printf(“Operation: ”); scanf(“%lf%c%lf”, &x, &op, &y); שלב הקלט ראשית, נבקש מהמשתמש להקליד את הערכים. double x, y, result; char op; printf(“Operation: ”); scanf(“%lf%c%lf”, &x, &op, &y); פעולת scanf אחת יכולה לשמש לקליטת כמה ערכים (ללא Enter ביניהם). 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © שלב החישוב אם הפעולה היא חיבור, נבצע חיבור. אחרת, אם הפעולה היא חיסור, נבצע חיסור. אחרת, אם הפעולה היא כפל, נבצע כפל. אחרת, אם הפעולה היא חילוק, נבצע חילוק. ועכשיו, בשפת C... 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

שלב החישוב: ועכשיו, בשפת C if (op == ‘+’) result = x + y; else if (op == ‘–’) result = x – y; if (op == ‘*’) result = x * y; if (op == ‘/’) result = x / y; else { printf(“Error, unknown operator.”); return 1; } כזכור, תו בודד (ערך מסוג char) מיוצג בין גרשיים בודדים (ולא מרכאות כפולות). אם עוקבים אחרי כללי ההזחה באופן נוקשה, מתקבלת תוצאה קצת... מוזרה. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

שלב החישוב: תיקון קל if (op == ‘+’) result = x + y; else if (op == ‘–’) result = x – y; else if (op == ‘*’) result = x * y; else if (op == ‘/’) result = x / y; else { printf(“Error, unknown operator.”); return 1; } מה שינינו? רק את הרווחים השונים בין הפקודות. מבחינת שפת C, אין שום הבדל. מבחינת הקריאות, יש הבדל של עולם ומלואו... 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © הדפסת התוצאה ועכשיו, לאחר שחישבנו את התוצאה, צריך רק להדפיס אותה: printf(“%lf %c %lf = %lf\n”, x, op, y, result); return 0; 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © והתוצאה: 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © חידה האם תוכלו להרחיב את המחשבון כך שיכלול גם פעולת חזקה? מקובל לסמן את החזקה בעזרת התו ^. שימו לב: אין פעולת חזקה כחלק מובנה של שפת C! רמז: בספריה הסטנדרטית math.h קיימת הפונקציה pow(x,y). 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

משפטי switch

מבוא למדעי המחשב. כל הזכויות שמורות © אם... ואם לא... ואם לא... ואם לא... בתוכנית המחשבון נתקלנו במצב שהוא, למעשה, נפוץ למדי: רצף של בדיקות ערך עבור משתנה יחיד. במקרה זה, המשתנה op, מטיפוס char. היות שמצבים אלה נפוצים כאמור, יש בשפת C מבנה מיוחד שנועד להקל על הטיפול בהם: משפטי switch. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

משפטי switch המבנה הכללי של משפטי switch הוא: switch (expression) { case v1: op1a; op1b; : break; case v2: op2a; op2b; } 1. הביטוי חייב להיות מטיפוס שלם (int או long או char). 2. כל ערך של case חייב להיות קבוע (לא משתנה) 3. ערך של case לא יכול להופיע יותר מפעם אחת 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © הסבר – משפטי switch בעת ריצת התוכנית, משפט switch מתבצע באופן הבא: א. מחשבים את ערך הביטוי (value). ב. משווים את value לערך ה-case הראשון (v1). אם הם שווים: מבצעים את הפעולות op1a, op1b וכו', עד ל-break. יוצאים ממשפט ה-switch. ג. משווים את value לערך ה-case השני (v2). אם הם שווים: מבצעים את הפעולות op2a, op2b וכו', עד ל-break. וכו'... אין הגבלה על מספר סעיפי ה-case בתוך ה-switch. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

למשל: שימוש ב-switch במחשבון switch (op) { case ‘+’: result = x + y; break; case ‘–’: result = x – y; case ‘*’: result = x * y; case ‘/’: result = x / y; } 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © ברירת מחדל ומה אם אף אחת מהאפשרויות לא מתאימה? בגרסת ה-if-else-if, פשוט היה בסוף else ללא תנאי נוסף. התאים ל"כל מקרה אחר". במשפטי switch, ניתן להוסיף סעיף default אחרי ה-case האחרון. יתאים ל"כל מקרה אחר". 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © דוגמה: ברירת מחדל switch (op) { : case ‘*’: result = x * y; break; case ‘/’: result = x / y; default: printf(“Error, unknown operator.”); return 1; } 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

שתי אפשרויות, אותה התוצאה במשפטי switch, ניתן לציין שעבור שתי אפשרויות שונות, אנו מעוניינים באותה התוצאה. השיטה: שתי שורות case בזו אחר זו (או יותר משתיים...). אחרי הראשונה, לא מציינים אף פקודה וגם לא break. אחרי השניה, ממשיכים כרגיל. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

דוגמה: שתי אפשרויות זהות switch (op) { case ‘+’: result = x + y; break; case ‘–’: result = x – y; case ‘x’: case ‘*’: result = x * y; case ‘/’: : } בדוגמה זו, סימן x (אות X קטנה) יכול לשמש כתחליף לסימן הכפל *. 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

דוגמה נוספת – תחרות בין מסעדות הגורמה בטכניון #include <stdio.h> int main(void) { int Gscore=0, Sscore=0, Cscore=0; char c; printf("Enter your favorite restaurant in the Technion:\n"); printf("Greg Coffee (near Taub) press - G\n"); printf("Student house press - S\n"); printf("Chemical Engineering - C\n"); printf("if you want to end the voting please press q\n"); המשך בעמוד הבא... 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

המשך while( (c=getchar()) != 'q') { switch (c) { case 'g': case 'G': Gscore++; break; case 's': case 'S': Sscore++; case 'c': case 'C': Cscore++; default: printf("Please don't invent new restaurants!\n"); } /* end of switch */ } /* end of while */ המשך בעמוד הבא... 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © המשך printf("\nThe scores of the restaurants are as follows:\n"); printf("Greg Coffee: %d\n", Gscore); printf("Student house: %d\n", Sscore); printf("Chemical Engineering: %d\n", Cscore); if (Sscore>Gscore && Sscore>Cscore) printf("Impossible... Logical error!!! \n"); } /* end of main */ 5 תרגול מבוא למדעי המחשב. כל הזכויות שמורות ©