1 מבוא למדעי המחשב משתנים. 2  סוגי משתנים בשפת C  ההבדלים בין סוגי המשתנים השונים.

Slides:



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

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
1 תרגול 4 – פונקציות מבוא למדעי המחשב/מבוא לתכנות מערכות – סמסטר א' תשע"א.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
תוכנה 1 - חזרה שולי לב יהודי 2 Arrays and Strings מערך - אוסף משתנים בעלי שם משותף. הפנייה לכל איבר נעשית ע ” י אינדקס. ב -C מערך מוגדר.
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
שיעור שישי: מערכים ופונקציות
חלון הפקודות מיועד לבצע פעולה אחת בכל פעם. כיצד אפשר לבצע רשימת פקודות או אפליקציות מורכבות ?
1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
תרגול 10: הכרות עם ++C ++C כ- C משופר
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
מבוא למדעי המחשב שפת c
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 מבוא למדעי המחשב הרצאה 5: פונקציות. 2 מבוא לפונקציות חלוקה של אלגוריתם לתת משימות: משימה - פונקציה: דוגמאות מציאת המקסימלי מבין שני איברים האינדקס של.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
PPL Lecture 3 Slides by Yaron Gonen,
מחלקות classes.
מבוא למדעי המחשב סיבוכיות.
מ- JAVA ל- C קרן כליף.
מצביעים קרן כליף.
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
מבוא למדעי המחשב הרצאה 5: תחומי הכרה של משתנים
פונקציות קרן כליף.
פונקציות קרן כליף.
מבוא כללי למדעי המחשב פונקציות
פונקציות קרן כליף.
ניתוח מערכות מידע תכנות ב C#
מבוא כללי למדעי המחשב תרגול 4
תרגול 8 תחומי הכרה פונקציות
סוגי משתנים קרן כליף.
תירגול 8:מצביעים והקצאה דינאמית
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

1 מבוא למדעי המחשב משתנים

2  סוגי משתנים בשפת C  ההבדלים בין סוגי המשתנים השונים

משתנים /* This program computes m to the power of n */ /* Assumptions: m is an integer; n is a positive integer */ #include int power(int m, int n); /* test the power function */ int main() { int i; for (i=0; i<10; i++) { printf("%d %d %d\n", i, power(2,i), power(-3,i)); } return 0; } /* power: raise base to n-th power; n>=0 */ int power(int base, int n) { int i, p=1; for (i=1; i<=n; i++) { p = p*base; } return p; }  מה קורה כאשר שני משתנים בעלי שם זהה מוגדרים בפונקציות שונות ?  באילו סביבות ניתן להגדיר משתנים והיכן הם מוגדרים ?

4 משתנים אוטומטיים  מוגדרים בתוך פונקציות.  פנימיים לפונקציה בה הוגדרו ואינם קשורים למשתנים בעלי אותו שם המוגדרים בפונקציות אחרות.  המשתנה "נולד" (=מוקצה עבורו זיכרון) כאשר הפונקציה נקראת ו"מת" (=המקום בזיכרון מוחזר למערכת ההפעלה) כאשר הפונקציה מסתיימת.  אינם שומרים על ערכם בין ביצועים שונים של אותה פונקציה.  ניתן להגדיר משתנים בשמות זהים בפונקציות שונות.  יתרונות:  מודולריזציה  הסתרת מידע (information encapsulation)

5 משתנים חיצוניים (external)  מוגדרים מחוץ לכל פונקציה.  ניתן להתייחס אליהם (לקרוא את ערכם ולשנותם) בכל פונקציה.  המשתנה "חי" כל זמן שהתכנית רצה ("נולדים" עם תחילת התכנית ו"מתים" עם סיומה).  שומרים על ערכם גם לאחר שהפונקציה שקבעה את ערכם הסתיימה.

6 משתנים חיצוניים (external)  משתנה חיצוני יש להגדיר, בדיוק פעם אחת, מחוץ לכל פונקציה.  ההגדרה גורמת להקצאת מקום בזיכרון עבור המשתנה.  כל פונקציה המעוניינת להשתמש במשתנה חיצוני צריכה להצהיר על כך: באיזור הגדרות המשתנים, יש להצהיר על המשתנה החיצוני ולפני ההצהרה לציין את המאפיין extern :extern int num;  ההצהרה מכריזה על אופי המשתנה (שם וטיפוס) ללא הקצאת מקום.  לא ניתן לאתחל משתנה עם ההצהרה עליו.  ניתן לוותר על ההצהרה אם המשתנה החיצוני מוגדר בקובץ בו נמצאת הפונקציה שמשתמשת בו, לפני הפונקציה.  מוסכמה: בדר"כ מאגדים את ההצהרות על משתנים חיצוניים בתחילת הקובץ, לפני הגדרות הפונקציות.

7 משתנים חיצוניים - דוגמא #include int num; int main() { num=3; printf("%d\n",num); return 0; } #include int main() { extern int num=3; printf("%d \n",num); return 0; } int num; #include int main() { extern int num; num=3; printf("%d \n",num); return 0; } int num;

8 משתנים חיצוניים (external)  תחליף למנגנון העברת פרמטרים לפונקציות (משתנה חיצוני מוגדר בכל מקום וניתן לשנותו בכל מקום).  סותר את עקרון המודולריות.  סותר את עקרון הסתרת המידע.  שימוש במשתנים חיצוניים צריך להיות מצומצם ומוצדק היטב!

9 משתנים חיצוניים ↔ משתנים אוטומטיים משתנים אוטומטייםמשתנים חיצוניים מוגדרים בתוך פונקציהמוגדרים מחוץ לכל פונקציה נולדים ומתים עם הפונקציהחיים כל זמן שהתכנית חיה אינם שומרים על ערך בין הקריאותערכם נשמר כל זמן ביצוע התכנית מוכרים בתוך הפונקציה בה הוגדרומוכרים בקובץ בו הוגדרו מנקודת הגדרתם ואילך מאותחלים בכל קריאה לפונקציהמאותחלים פעם אחת, בתחילת התכנית

10 חפיפה בתחום החיות (scope) של שני משתנים בעלי אותו שם  כאשר משתנה אוטומטי מוגדר בתוך פונקציה שנמצאת ב- scope של משתנה חיצוני בעל אותו שם. דוגמא: int x; int y; : double func( double x ) { double y; : }  הכלל: משתנים אוטומטיים "מסתירים" משתנים חיצוניים בעלי אותו שם.  לא מומלץ בכלל...

11 חפיפה בתחום החיות (scope) של שני משתנים בעלי אותו שם #include int main() { int num; printf("%d \n",num); return 0; } int num=3; #include int main() { extern int num; printf("%d \n",num); return 0; } int num=3;

12 משתנים סטטיים - חיצוניים  משתנה סטטי חיצוני: מוכר בקובץ בו הוגדר, ובו בלבד. מונע מקבצים "זרים" להשתמש במשתנה. static int num=0;  כנ"ל לגבי פונקציה המוגדרת כסטטית.

13 משתנים סטטיים - אוטומטיים משתנה סטטי אוטומטי: משתנה אוטומטי לכל דבר, אלא שהוא שומר על ערכו בין קריאות שונות לאותה הפונקציה. דוגמת שימוש:  המטרה: ספירת מספר הפעמים שפונקציה התבצעה (לצרכי debugging למשל).  פתרון ללא שימוש במשתנה אוטומטי סטטי:.1.הגדרת משתנה חיצוני בשם counter ולהגדילו לפני כל קריאה לפונקציה. חיסרון: אם יש קריאות רבות לפונקציה ממקומות שונים בפונקציות שונות... 2.שימוש במשתנה חיצוני שהפונקציה תגדיל. חיסרון: משתנה חיצוני...  ע"י שימוש במשתנה סטטי: return_type func (parameters if any) { static int counter=0; printf(“Function func is called. This is its %d’th call.\n”,++counter); : }

14 הגדרת משתנים בבלוקים  ניתן להגדיר (ואף לאתחל) משתנים לאחר הסוגר המסולסל הפותח ( } ) של כל פקודה מורחבת (ולא רק בתחילת כל גוף של פונקציה).  ה- scope של המשתנה הוא הבלוק בו הוא מוגדר.  דוגמא: if (n > 0){ int i; for (i=0 ; i < n ; i++){ : }  משתנה המוגדר בתוך בלוק יאותחל מחדש בכל פעם שהבלוק מתחיל להתבצע. ניתן למנוע זאת ע"י אפיון המשתנה כסטטי.  יתרון: כבמשתנים פנימיים, תחום החיות הינו הבלוק בלבד ולא הפונקציה כולה. מהווה יתרון כאשר הפונקציה גדולה ומורכבת בהקטנת הסיכוי לשגיאות. מצד שני: ב- C כותבים פונקציות קצרות ופשוטות...

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