31
ררררר רררר10 ררררררר רררררר

עקרונות התכנות

Embed Size (px)

DESCRIPTION

עקרונות התכנות. תרגול מספר 10. על מה נדבר?. מצביעים מה זה? איך? למה? מצביעים ומערכים אריתמטיקה של מצביעים מערך של מצביעים מצביעים ופונקציות. משתנים וזכרון. לכל טיפוס בשפה יש גודל לדוגמה: char הוא בגודל 1B int הוא בגודל 4B double הוא בגודל 8B - PowerPoint PPT Presentation

Citation preview

Page 1: עקרונות התכנות

10תרגול מספר

עקרונות התכנות

Page 2: עקרונות התכנות

על מה נדבר?מצביעים

?מה זה? איך? למהמצביעים ומערכיםאריתמטיקה של מצביעיםמערך של מצביעיםמצביעים ופונקציות

2עקרונות התכנות – תשס"ט

Page 3: עקרונות התכנות

משתנים וזכרון לכל טיפוס בשפה יש

גודל:לדוגמה

char 1 הוא בגודלBint 4 הוא בגודלBdouble 8 הוא בגודלB

'הפונsizeof)( מחזירה את הגודל בתאים של

משתנה מסוג כלשהו, אין לנו שימוש מיוחד בה פרט

לדוגמא3 עקרונות התכנות – תשס"ט

Page 4: עקרונות התכנות

משתנים וזכרון )המשך( בשלב הגדרת המשתנה מוקצה

המקום המתאים לו בזכרון המחשב.

שלושה דברים יש לדעת עלמשתנה:

4

c = ‘a’4010

4011

4012

4013i = 1

4014

4015

4016

4017

4018

4019

4020

4021

d = 1.0

4022

4023

4024

4025

dicשם

1.01‘a’ערך

401540114010כתוב

ת

עקרונות התכנות – תשס"ט

Page 5: עקרונות התכנות

משתנים וזכרון )המשך( בעת הרצת התוכנית מערכת ההפעלה קובעת

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

5 עקרונות התכנות – תשס"ט

Page 6: עקרונות התכנות

האופרטור & כאשר מפעילים את האופרטור & על משתנה אנו

ערכול ולא כתובתולמבקשים להתיחס

6 עקרונות התכנות – תשס"ט

Page 7: עקרונות התכנות

מצביעים לאחר שגילינו את כתובתו של משתנה מסוים בזכרון

נרצה "להחזיק" את כתובת זו כלומר, לבצע בה שימוש.

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

המחשב על משתנה מצביעבמילים אחרות – משתנה זה

אחר

7 עקרונות התכנות – תשס"ט

Page 8: עקרונות התכנות

מצביעים )המשך(:לדוגמה

הגדרנו שני משתנים מטיפוסint

b ו-aבזכרון – ברצוננו להגדיר לכל אחד מהם

מצביע המצביע ל-ערךa הוא

a של הכתובת המצביע ל-ערךb הוא

b של הכתובת

8

4010

4011

4012int a = 2

4013

4014

4015

4016int b = 5

4017

4018

4019

4020Pointer To

4010

4021

4022

4023

4024Pointer to

4014

4025

עקרונות התכנות – תשס"ט

Page 9: עקרונות התכנות

האופרטור *:לאופרטור * יש שני תפקידים

הגדרת מצביעגישה לערך המוצבע

9 עקרונות התכנות – תשס"ט

Page 10: עקרונות התכנות

האופרטור * - הגדרת מצביע:הגדרת מצביע תתבצע באופן הבא int *a; כלומר, אנו מגדירים מצביע למשתנה מטיפוסintבאותה צורה ניתן להגדיר מצביע לכל טיפוס אחרגודלו של המצביע תלוי בגודל זכרון המחשב בלבד 4בד"כ גודלוB

10 עקרונות התכנות – תשס"ט

Page 11: עקרונות התכנות

האופרטור * גישה לערך המוצבעלעיתים נרצה לגשת לערך עליו אנו מצביעים :גישה זו תתבצע ע"י האופרטור * באופן הבא

11

intהגדרת משתנה מטיפוס 1ואיתחולו ל-

הגדרת מצביע למשתנה מטיפוס int ואיתחולו לכתובתו של x .

x מצביע על pxכלומר שהוא pxהדפסת ערכו של

xכתובתו של pxהדפסת הערך המוצבע ע"י xכלומר הדפסת ערכו של

עקרונות התכנות – תשס"ט

Page 12: עקרונות התכנות

סיכום ביניים לאופרטור & יש תפקיד אחד

של הכתובתוהוא לקבל את משתנה אחר

:לאופרטור * יש שני תפקידים להגדיר משתנה מטיפוס

מצביע עליו אנו לערךלגשת

מצביעים

12 עקרונות התכנות – תשס"ט

Page 13: עקרונות התכנות

הערותלכל טיפוס יש צורך להגדיר מצביע משלו-ניתן להתיחס לint* או float* וכנ"ל לגבי שאר(

הטיפוסים שהכרנו( כטיפוסים.:אם ננסה להגדיר מספר משתנים בצורה הבאה

:הקומפיילר יפרש זאת כ :לכן הדרך "היפה" והברורה היא כך

13

x-הוא מצביע ל int-ו y-ו z הם intמטיפוס

שלושת המשתנים הם מצביעים intל-

עקרונות התכנות – תשס"ט

Page 14: עקרונות התכנות

1דוגמה איזה מההשמות הבאות אינן

חוקיות

14

int int*

int* int*

int int

int* int

int* int

עקרונות התכנות – תשס"ט

Page 15: עקרונות התכנות

2דוגמה :בהינתן ארבעה משתנים

int i1, i2;float f1, f2;

הדפיסו את ערכם וכתובתם למסך בעזרת מצביע

15 עקרונות התכנות – תשס"ט

Page 16: עקרונות התכנות

)פתרון(2דוגמה

16 עקרונות התכנות – תשס"ט

Page 17: עקרונות התכנות

3דוגמה ?מה תדפיס התוכנית

17

px-ו py מצביעים על x-ו y בהתאמה.

px = *px + *py*השורה משמעה:

מצביע עליו pxכך את הערך ש- py( ותחבר אותו לערך ש-3)

( 7(. את התוצאה )4מצביע עליו ) מצביע pxשים במקום בזכרון ש-

.xעליו – כלומר ב-

.7 הוא xלכן ערכו של עקרונות התכנות – תשס"ט

Page 18: עקרונות התכנות

4דוגמה ?האם הקוד הבא בסדר

18

שורה שניה תגרוםלקריסת התוכנית

אנחנו מנסים לשים ערך במקום מצביע? לא p מצביע. לאן pאליו

ניתן לדעת. לא איתחלנו אותו ולכן הוא מצביע למקום כלשהו בזכרון.

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

עקרונות התכנות – תשס"ט

Page 19: עקרונות התכנות

מצביעים ומערכים:למדנו להגדיר מערך שם המערךarr המצביע לאיבר מצביע קבוע הוא

הראשון במערך. :גישה לאברי המערך גישה זאת אומרת למחשב: "גש לאן שמצביעarr ,

(, והבא את הערך היושב offset צעדים )3זוז בזכרון".

19 עקרונות התכנות – תשס"ט

Page 20: עקרונות התכנות

מצביעים ומערכים )המשך(

20 עקרונות התכנות – תשס"ט

Page 21: עקרונות התכנות

מצביעים ומערכים )המשך( ניתן להשתמש באריתמטיקה של מערכים

ואריתמטיקה של מצביעים בצורה משולבת

21

array &array[0]

*array array[0]

עקרונות התכנות – תשס"ט

Page 22: עקרונות התכנות

אריתמטיקה של מצביעים:הפעולות הבאות חוקיות במצביעים

( קידום והפחתה עצמיתp++, ++p, p--, --p).חיבור וחיסור בין מצביעים ובין מצביע למספר :פעולות לוגיות< ,> ,=> ,=< ,==.

דוגמה. נניחint *p המצביע על מקום מסויים תדע לקדם את המצביע ++pבמערך. הפעולה

בתים(.4 הוא int בתים )מכיוון שגודל בארבעה

22 עקרונות התכנות – תשס"ט

Page 23: עקרונות התכנות

5דוגמה נתון מערךa ומצביע pהמאותחל לתחילת המערך

23

2000

2008

37

2000

4028

39

12

32

עקרונות התכנות – תשס"ט

Page 24: עקרונות התכנות

6דוגמה מהו פלט הקוד

הבא?

24 עקרונות התכנות – תשס"ט

Page 25: עקרונות התכנות

7דוגמה ?מהו פלט הקוד הבא

25 עקרונות התכנות – תשס"ט

Page 26: עקרונות התכנות

מערך של מצביעיםראינו שניתן ליצור מערך של כל טיפוס בשפה.כלומר, ניתן גם ליצור מערך של מצביעים

26

יצירת מערך של איברים שהטיפוס כלומר מצביעים *intשלהם הוא

intל-

איתחול אברי המערך בכתובת המשתנים

הדפסת הערך המוצבע ע"י אופרטור *

עקרונות התכנות – תשס"ט

Page 27: עקרונות התכנות

מצביעים ופונקציות אחד השימושים הנפוצים במצביעים הוא בפרמטר

של פונקציות. הכתובתהעברת מצביע לפונקציה מעתיקה את

ולכן כל שינוי בפרמטרים אלו בתוך הפונקציה משתנה גם מחוץ לפונקציה.

27 עקרונות התכנות – תשס"ט

Page 28: עקרונות התכנות

8דוגמה

28 עקרונות התכנות – תשס"ט

Page 29: עקרונות התכנות

9דוגמה

29 עקרונות התכנות – תשס"ט

Page 30: עקרונות התכנות

10דוגמה פונקציה שמחזירה

מצביע

30 עקרונות התכנות – תשס"ט

Page 31: עקרונות התכנות

שאלות ??

31 עקרונות התכנות – תשס"ט