סוגי משתנים קרן כליף.

Slides:



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

בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
תרגול 8 היכרות עם ++C. C++ מעל שפת Cשפת תכנות שנבנתה מעל שפת C CC++ –כמעט כל תכנית ב -C היא גם תכנית ב C++ עד כדי מספר הבדלים קטן C99C שאימץ כמה מהתכונות.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
תרגול מס' 2  העברת פרמטרים לתוכניות ב-C  קלט ופלט ב-C  I/O redirection  זיכרון דינמי  מצביעים  מערכים  גישות לא חוקיות לזיכרון.
1 מבוא למדעי המחשב משתנים. 2  סוגי משתנים בשפת C  ההבדלים בין סוגי המשתנים השונים.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
משטר סטטי שערים לוגיים Wired Drives – © Dima Elenbogen 2009, Moshe Malka :29.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבוא למדעי המחשב מחרוזות, מצביעים וכתובות
מבוא כללי למדעי המחשב תרגול 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;
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
1 אופטימיזציה של קוד ASU פרק מה זה אופטימיזציה? שיפור ביצועי התוכנית. בניגוד למה שמשתמע מהשם, בדרך-כלל לא מגיעים לאופטימום.
תרגול 10: הכרות עם ++C היכרות עם ++C
מבוא כללי למדעי המחשב הקצאת זיכרון דינאמית
מתמטיקה בדידה תרגול 2.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב תרגול 12 – הקצאת זיכרון דינאמית שעת קבלה : יום שני 11:00-12:00 דוא " ל :
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.
הגדרת משתנים יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר.
פיתוח מערכות מידע 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.
1 תרגול 11: Design Patterns ומחלקות פנימיות 1 תוכנה 1.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבנים קרן כליף. ביחידה זו נלמד :  מהו מבנה (struct)  איתחול מבנה  השמת מבנים  השוואת מבנים  העברת מבנה לפונקציה  מבנה בתוך מבנה  מערך של מבנים.
1 מבוא למדעי המחשב הרצאה 5: פונקציות. 2 מבוא לפונקציות חלוקה של אלגוריתם לתת משימות: משימה - פונקציה: דוגמאות מציאת המקסימלי מבין שני איברים האינדקס של.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
מחרוזות – הטיפוס String
Aho, Lam, Sethi and Ullman – Chapter 8
Object Oriented Programming
Object Oriented Programming
הרצאה 10 פונקציות עם מספר משתנה של פרמטרים
Object Oriented Programming
Object Oriented Programming
מחלקות classes.
מ- JAVA ל- C קרן כליף.
אבני היסוד של תוכנית ב- JAVA
Web DevelopmEnt Java Script
מצביעים קרן כליף.
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
מבוא למדעי המחשב הרצאה 5: תחומי הכרה של משתנים
פונקציות קרן כליף.
פונקציות קרן כליף.
תכנות מכוון עצמים בשפת JAVA
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
מצביעים קרן כליף.
פונקציות קרן כליף.
הקצאת זיכרון דינאמית מבוא כללי למדעי המחשב
תכנות מכוון עצמים ושפת JAVA
תוכנה 1 תרגול 13 – סיכום.
תכנות מכוון עצמים ו- C++ יחידה 02 העמסת פונקציות, ערכי ברירת מחדל, enum, קימפול מותנה קרן כליף.
תירגול 8:מצביעים והקצאה דינאמית
Presentation transcript:

סוגי משתנים קרן כליף

ביחידה זו נלמד: משתנה לוקאלי (אוטומטי) משתנה גלובאלי משתנה סטטי extern משתנה גלובאלי סטטי

משתנים מקומיים משתנה המוגדר בתוך בלוק (if, לולאה, פונקציה, סתם בתוך {}) נקרא משתנה מקומי (לוקאלי/אוטומטי) וטווח ההכרה שלו הוא רק בבלוק בו הוגדר ערכו של משתנה לוקאלי נשמר כל עוד אנחנו בבלוק, והוא נמחק ביציאה ממנו משתנה לוקאלי מאוחסן במחסנית של הפונקציה ערכו זבל במידה ולא אותחל משתנה שמוגדר בתוך פונקציה (גם פרמטר המתקבל) "חי" כל עוד הריצה היא בתוך הפונקציה

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

משתנים סטטיים משתנה סטטי הוא משתנה שערכו נשמר בין הקריאות השונות לפונקציה משתנה סטטי מאותחל רק בקריאה הראשונה לפונקציה בדומה למשתנים מקומיים, המשתנים הסטטיים מוכרים אך ורק בתוך הבלוק אשר בה הם הוגדרו. משך חייהם מרגע תחילת הריצה של התוכנית ועד סיום ריצת התוכנית. מאחר ושטח הזיכרון של כל פונקציה נמחק עם היציאה ממנה, משתנים סטטיים נשמרים באזור זיכרון אחר הנקרא data- segment, הקיים לאורך כל חיי התוכנית, והם משתחררים רק עם היציאה מהתוכנית כדי להגדיר משתנה סטטי נשתמש במילת המפתח static לפני טיפוס המשתנה

משתנים סטטיים - דוגמא #include <stdio.h> int counter() { static int count = 0; count++; return count; } void main() printf("'counter' was called %d times\n", ); counter::count = ? 1 2 3 זיכרון ה- data segment counter() counter counter() counter() main ( line 3) main ( line 2) main ( line 1) מחסנית הקריאות

משתנה סטטי ברקורסיה הבעיה היא מאחר והמשתנה הסטטי אינו מתאפס עבור כל מספר מחדש, ולכן עבור המספר השני ממשיך לספור את הספרות מבלי לאפס את המונה...

משתנים גלובליים משתנה אשר מוגדר מחוץ לפונקציה הוא משתנה גלובלי (אינו משויך לאף פונקציה) במידה ולא אותחל ערכו 0, ולא זבל כל הפונקציות שכתובות מתחת למשתנה הגלובלי בקובץ בו הוגדר, יכולות לגשת אליו ולשנות את ערכו השימוש בו הוא בעייתי ולכן נשמר למצבים מיוחדים בלבד כל אחד יכול לשנות אותו זה פוגע ברעיון של הסתרת המידע ושכל פונקציה מסתמכת רק על נתונים שהם פנימיים לה משתנה גלובלי קיים לאורך כל חיי התוכנית מאחר ואינו משויך לאף פונקציה, הוא אינו נמצא על המחסנית, אלא על חלקת הזיכרון המשותפת לכל הפונקציות ה- data- segment

משתנים גלובליים - דוגמא int global = 3; void incGlobal() { global++; printf("In function: global=%d\n", global); } void main() printf("At first, global=%d\n", global); incGlobal(); printf("After function (1), global=%d\n", global); global = 10; printf("In main after change global, global=%d\n", global); printf("After function (2), global=%d\n", global); global = 11 10 4 3 זיכרון ה- data segment incGlobal main מחסנית הקריאות

המשתנה מוכר מנקודה זו ומטה ניסיון גישה למשתנה גלובלי שהוגדר למעלה extern יבוא משתנה שטרם הוגדר שימוש במשתנה גלובלי לפני הגדרתו שימוש במשתנה גלובלי מקובץ אחר שלא עשינו לו include התחייבות בפני הקומפיילר שהמשתנה יוגדר בהמשך. אם המשתנה לא יוגדר בהמשך תתקבל שגיאת לינקר. המשתנה מוכר מנקודה זו ומטה ניסיון גישה למשתנה גלובלי שהוגדר למעלה

משתנה סטטי גלובלי משתנה גלובלי שלא ניתן לייבא אותו באמצעות extern ניסיון ייבוא משתנה סטטי גלובלי יגרור שגיאת לינקר

סיכום והשוואה בין סוגי המשתנים משתנה סטטי גלובלי משתנה גלובלי משתנה סטטי משתנה לוקאלי זבל אתחול ב"מ כל אורך התוכנית סיום הבלוק בו הוגדר אורך חיים מנקודת הגדרתו בקובץ ומטה, לא ניתן להשתמש בו באמצעות extern מנקודת הגדרתו בקובץ ומטה, או ע"י extern, גם בקבצים אחרים הבלוק בו הוגדר טווח הכרה data segment stack של הפונקציה מיקום בזכרון משתנה סטטי גלובלי משתנה גלובלי משתנה סטטי משתנה לוקאלי זבל אתחול ב"מ כל אורך התוכנית סיום הבלוק בו הוגדר אורך חיים מנקודת הגדרתו בקובץ ומטה, לא ניתן להשתמש בו באמצעות extern מנקודת הגדרתו בקובץ ומטה, או ע"י extern, גם בקבצים אחרים הבלוק בו הוגדר טווח הכרה data segment stack של הפונקציה מיקום בזכרון

משתנה לוקאלי (אוטומטי) משתנה גלובאלי משתנה סטטי extern ביחידה זו למדנו: משתנה לוקאלי (אוטומטי) משתנה גלובאלי משתנה סטטי extern משתנה גלובאלי סטטי