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

Slides:



Advertisements
מצגות קשורות
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
Advertisements

אוגרים ומונים – Registers & Counters
למנוע שגיאות בעזרת הכלים של "האתגר 5": המקרה של נקודת פיתול
אוגרים ומונים – Registers & Counters
תכנות בשפת C תרגול 11 - קבצים.
תוכנה 1 בשפת Java שיעור מספר 5: עצמים
© Keren Kalif JPA קרן כליף.
מבנה מחשבים ספרתיים זיכרון מטמון - המשך
Computer Programming Fall 2012 תרגול 6 פונקציות
מבוא לתכנות ב-JAVA מעבדה 1
תוכנה 1 תרגול 13 – סיכום.
תרגול 11: רקורסיה ופיתוח טלסקופי
תרגול 1: סביבת העבודה ומבוא ל-Java
תרגול 11 מלכודות בניית ה-Debugger
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תוכנה 1 תרגול 12 – סיכום.
תרגול מס' 8 משתנים מיוחסים מבוא ל-C++ קלט/פלט ב-C++
מבוא למדעי המחשב מ' - תירגול 9
תירגול 10: מבנים (structs) וקבצים
Marina Kogan Sadetsky –
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
תירגול 11: מיונים וחיפוש בינארי
תוכנה 1 בשפת Java שיעור מספר 13: "אל תסתכל בקנקן"
תכנות בשפת C תרגול 8 רקורסיה
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
מבוא למדעי המחשב הרצאה 9: רקורסיה
תרגול 6: פונקציות, סוגי משתנים, top-down design
תירגול 2: מבוא לתיכנות ב-C
פתרון של מערכת משוואות לינארית
© האוניברסיטה העברית בירושלים, 2008
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Web Services Delegates and Events ליווי מקצועי : ארז קלר
מבוא לתכנות מונחה עצמים Object Oriented Programming
זיכרון מטמון 1 מבנה מחשבים ספרתיים
זיכרון מטמון 2 מבנה מחשבים ספרתיים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
Computer Architecture and System Programming Laboratory
אלגוריתמי מיון רקורסיביים
המשך תכנות מונחה עצמים תרגול מס' 9.
כל הזכויות שמורות לגבריאל אנקרי © 2017
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
Marina Kogan Sadetsky –
מת"מ מעבדה 7-8 רשימות.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
צמצום בעזרת מפת קרנו.
מבוא לתכנות ב- JAVA מעבדה 4
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Introduction to Programming in C
עקרונות תכנות מונחה עצמים תרגול 8: OOP in C++
מצביעים Pointers – המשך...
Data Structures, CS, TAU, Perfect Hashing
מבנה מחשבים ספרתיים תרגול מס' 4: זכרון מטמון 2.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
הפונקציה מחזירה את מספר התווים במחרוזת נתונה.
Engineering Programming A
רשימות מקושרות עבודה עם קבצים דוגמה
תמליל מצגת:

הרצאה 02 סוגי משתנים קרן כליף

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

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

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

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

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

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

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

משתנים גלובליים - דוגמא 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); זיכרון ה- data segment global = 10 11 4 3 זיכרון ה- heap incGlobal main מחסנית הקריאות © Keren Kalif

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

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

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

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