מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול מספר 3.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
מבוא כללי למדעי המחשב שיעור שלישי: בקרת זרימה.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא למדעי המחשב תרגול מספר.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
מבוא למדעי המחשב תרגול מספר 1.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תחשיב היחסים (הפרדיקטים)
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
מתמטיקה בדידה תרגול 2.
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 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
1 תרגול 2 – מבוא לתכנות JAVA. היום בתרגול : 2  משתנים וטיפוסים  אופרטורים  פונקציות מתמטיות מהמחלקה Math  המרת טיפוסים  תנאים  Debugger.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
הרצאה 3 מבוא למדעי המחשב לתעשייה וניהול הודעות : הודעות : או דרך moodle – ושם לפנות ל : אתר מכון טל החומר.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
Jan 2016 Solar Lunar Data.
הרצאה 3: משפטים, תנאים ולולאות
תוכנה 1 בשפת Java שיעור מספר 1: "שלום עולם"
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
Average Monthly Temperature and Rainfall
הרצאה 3: משפטים, תנאים ולולאות
מבוא כללי למדעי המחשב שיעור 2
תוכנה 1 תרגול 13 – סיכום.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Gantt Chart Enter Year Here Activities Jan Feb Mar Apr May Jun Jul Aug
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Text for section 1 1 Text for section 2 2 Text for section 3 3
Presentation transcript:

מבוא למדעי המחשב תרגול מספר 4

בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים

בפעם הקודמת... אופרטורים העלה והורדה (++, --) מה ההבדל במיקום? מצד ימין ומצד שמאל? דוגמא: int x=1,y=1; int z = x y; קיצורי דרך בכתיבה sizeof

בפעם הקודמת... המרת טיפוסים מכוונת אוטומטית הערך המומר נשמר בזיכרון רק במהלך חישוב הביטוי מה התוצאה של הביטוי הבא : (int)(4/5)+(double)(3/(float)(2.0)) היכן התבצעה המרה מכוונת והיכן אוטומטית?

בפעם הקודמת... הגדרת טיפוס חדש typedef - יצירת טיפוס חדש מטיפוס קיים (נתינת שם חדש לטיפוס קיים), לדוגמא - typedef long int lint; lint ID = ; enum - יצירת קבוצה של אלמנטים enum Colors {White, Black, Purple=6, Brown=-4} col; col = Brown;

והרי התחזית... ביטויים משפטי תנאי if, if-else אופרטור :? switch

ביטויים בשפת C, לכל ביטוי יש ערך 0 נחשב false, כל ערך שאינו 0 נחשב true סוגי ביטויים: (רשימה חלקית) ביטויים אריתמטיים ביטויי השמה ביטויי יחס ושוויון ביטויים לוגיים

ביטויים אריתמטיים מורכבים מאופרטורים אריתמטיים: +, -, *, /, % דוגמאות: 2+3, x%4, y*(z-3) ערך הביטוי הוא תוצאת הפעולה

ביטויי השמה מורכבים מאופרטורי השמה: =, =+, =-, =*, =/, =%, ++, -- דוגמאות: x=3, y=x=8, z*=2, c=getchar(), i++, --j ערך הביטוי הוא ערך המשתנה שבאגף שמאל: אם האופרטור הוא ++ או -- שמופיע אחרי המשתנה (למשל: i++ או i--) אז ערך הביטוי הוא הערך של המשתנה לפני ההשמה בכל שאר המקרים, ערך הביטוי הוא הערך של המשתנה לאחר ההשמה

ביטויי יחס ושוויון מורכבים מאופרטורי יחס ושוויון: ==, =!, >,, =< דוגמאות: 3>2, 4==5, x!=2, y<=z ערך הביטוי הוא 1 אם השוויון (או אי השוויון) מתקיים, ו-0 אם הוא לא מתקיים למשל, ערך הביטוי 3>2 הוא תמיד 1. ערך הביטוי x==2 הוא 1 אם הערך של x שווה ל-2, ו-0 אחרת מהו ערך הביטוי 3<x<5? תשובה: תמיד 1! ביטוי שערכו 1 אם x גדול מ-3 וקטן מ-5: (x>3) && (x<5)

ביטויים לוגיים מורכבים מאופרטורים לוגיים: &&, ||, ! && פירושו and, || פירושו or, ! פירושו not טבלאות אמת: and && 0לא or || 0לא not ! 01 לא 00

ביטויים לוגיים דוגמאות: (x>3)||(y!=2), 3&&-2, 5||0, !(x&&(y||7)), !!5, ((c=getchar())!=EOF)&&(c>’0’) Short circuit evaluation: (a > b) || (func(c) > 4) אם a גדול מ-b, ערך הביטוי הוא בכל מקרה 1, ולכן ערכו של הביטוי (func(c) > 4) כלל לא יחושב, כלומר הפונקציה func כלל לא תיקרא! דוגמה נוספת: (x != 0) && (y == z/x)

משפט התנאי if התחביר של משפט תנאי if (exp) Command; exp הוא ביטוי הפקודה תתבצע אם ורק אם ערכו של exp שונה מ-0 תחביר מתוחכם יותר: if (exp) Command1; else Command2; אם ערכו של exp שונה מ-0, Command1 תתבצע. אחרת (ערכו של exp הוא 0), Command2 תתבצע.

משפט התנאי if בד"כ משתמשים ב-if עם ביטויי שוויון והשמה או עם ביטויים לוגיים, אך לא בהכרח ניתן, למשל, לכתוב if (1) או if (a+b) שימו לב: האופרטור = הוא אופרטור השמה, האופרטור == הוא אופרטור שוויון טעות נפוצה: לכתוב if (x = 3)... כשבעצם מתכוונים ל- if (x == 3)... מה המשמעות של if (x = 3)?

דוגמא לשימוש במשפט if-else #include int main(void) { int HW_grade, int Exam_grade; double Final_grade; printf(“Enter average HW grade : ”); scanf(“%d”,&HW_grade); printf(“Enter exam grade : ”); scanf(“%d”,&Exam_grade); if (Exam_grade >= 55) Final_grade = 0.9 * Exam_grade * HW_grade; else Final_grade = Exam_grade; return 0; }

משפטי if-else ביצוע "בלוק פקודות" (יותר מפקודה אחת) אם תנאי מסוים מתקיים if (x == 0) { x += 4; y = z + x; } else y = x * y; if (y < 5) { printf(“Hi”); x = 1; y = 4; z = 6; } if (x >= 60) { x += 4; y = z + x; } else { y = x * y; z = 60; }

משפטי if-else קינון משפטי :if לאיזה if שייך ה-else? תשובה: ל-if השני! כל else משויך למשפט הif- הקרוב ביותר אליו שאינו "סגור" ע"י else אחר if (x > 7) if (y > x) z = 4; else z = 9; if (x > 7) if (y > x) z = 4;

משפטי if-else כלומר, יותר נכון היה לכתוב את הדוגמא הקודמת כך: דוגמא נוספת: if (x > 7) if (y > x) z = 4; else z = 9; if ((c = getchar()) != EOF) if ((c>='a' && c ='A' && c<='Z')) printf("A letter\n"); else printf("Not a letter"\n); else printf("End Of File, bye! \n");

משפטי if-else ואם אנחנו רוצים משפט if מקונן, עם else שמתייחס ל-if הראשון, ובלי else שמתייחס ל- if השני? נשתמש בסוגריים מסולסלים: if (x > 7) { if (y > x) z = 4; } else z = 9;

אופרטור ?: שימו לב, זהו אופרטור ולא משפט! התחביר : exp1 ? exp2 : exp3 אם exp1 שונה מ-0 (כלומר true) אזי ערכו של כל הביטוי הוא exp2, אחרת - exp3 דוגמאות - max_XY = (x > y) ? x : y; (a==0) ? printf("Hello") : printf("Bye”);

משפט התנאי switch נניח שאנחנו רוצים לממש מחשבון, ויש לנו משתנה מטיפוס char, ששמו op, והוא מכיל תו שמתאר את הפעולה שצריך לבצע if (op == '+') statements... else if (op == '-') statements... else if (op == '*') statements... else if (op == '/') statements... else statements...

משפט התנאי switch שיטה נוחה יותר (במקום סדרת משפטי if) switch (op) { case '+': statements… break; case '-': statements… break; case '*': statements... break; case '/': statements… break; default: statements… }

switch משפט התנאי תחביר משפט switch: switch (exp) { case const_1: statements… break; case const_2: statements… break; … case const_k: statements… break; default: statements… }

משפט התנאי switch הערות: exp חייב להיות ביטוי מטיפוס שלם const_1,...,const_k הם קבועים מטיפוס שלם, שונים האחד מהשני, מספרם אינו מוגבל התוכנית מוצאת את הקבוע הראשון שערכו שווה לזה של exp, ומבצעת את הפקודות של ה-case שלו פקודת ה-break בסוף כל case אינה הכרחית. אם היא לא מופיעה, התוכנית תמשיך ל-case הבא. אם היא מופיעה, היא תגרום לתוכנית לצאת מה-switch ה-deafult אינו הכרחי. אם הוא מופיע ו-exp לא שווה לאף אחד מהביטויים שלפניו, התוכנית תבצע את הפקודות שלו

דוגמא מסכמת #include #define LEAF_YEAR 1 enum month {Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; typedef enum month month; int main(void) { month m; printf ("Enter a number of a month\n"); if (scanf("%d",&m) < 1) { printf("Input Error\n"); return 1; }

המשך הדוגמא switch (m) { case Jan: case Mar: case May: case Jul: case Aug: case Oct: case Dec: days = 31; break; case Apr: case Jun: case Sep: case Nov: days = 30; break; case Feb: days = (LEAF_YEAR) ? 29 : 28; break; default: days = -1; /* error */ }

המשך הדוגמא if (days == -1) printf("This is not a month!\n"); else printf("There are %d days in this month.\n”,days); return 0; }