מבוא למדעי המחשב -...

22
1 שיעור2 יסודות פייתון.1 משתנים, טיפוסים ואופרטורים.2 משפטי תנאי.3 אוספים: מחרוזות( str ) ורשימות( lists ) .4 פונקציות מבוא כללי לתכנות ולמדעי המחשב1843-0310 מרצה: אמיר רובינשטיין מתרגל: דין שמואל אוניברסיטת תל אביב סמסטר חורף2017-8

Upload: others

Post on 10-Sep-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

1

יסודות פייתון – 2שיעור

טיפוסים ואופרטורים, משתנים1.

משפטי תנאי2.

(lists)ורשימות ( str)מחרוזות : אוספים3.

פונקציות4.

מבוא כללי לתכנות ולמדעי המחשב1843-0310

אמיר רובינשטיין: מרצה

דין שמואל: מתרגל

אוניברסיטת תל אביב 2017-8סמסטר חורף

Page 2: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

Pythonיסודות התכנות בשפת

. בהרצאות ובתרגולים הראשונים אנו סוקרים את יסודות התכנות בשפת פייתון

.וההסברים יינתנו בכיתה, סיכום הפרטים העיקריים מופיע בשקפים הבאים

:הערה חשובה

. החדשים שנלמדו Pythonעם רכיבי " לשחק"אחרי כל שיעור חשוב מאוד

.להיכשל ולהצליח, להריץ, לשנות, ולנסות IDLEפשוט לפתוח

2

Page 3: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

!בואו נתחיל

:השקפים הבאים מכילים סיכום של הנושאים שראיתם בשני התרגולים הראשונים•

טיפוסים ואופרטורים, משתנים -

תנאימשפטי -

. לאחר מכן נמשיך לנושאים חדשים•

(lists)ורשימות ( str)מחרוזות : אוספים סדורים -

פונקציות -

3

Page 4: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(types)וטיפוסים ( Variables)משתנים . 1

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

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

:למשל>>> x = 3

>>> print(x)

3

:טיפוסים בפייתון

... int. -97 0 3או בקיצור , integer – שלםמספר •

... float 0.389 -4.7 6.0או בקיצור , *floating point – ממשימספר •

... "str "hello" "aאו בקיצור string –( טקסט) מחרוזת •

.boolean True False – בוליאני •

...בהמשך נראה עוד•

.אולי יוסבר בהמשך הקורס .באופן שבו מיוצגים מספרים ממשיים בזיכרון המחשב" נקודה צפה"מקור השם * 4

Page 5: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

:עוד על טיפוסים

(conversions)והמרות typeהפונקציה

.שלו הטיפוסמקבלת אובייקט ומחזירה את ()type* הפקודה

:למשל>>> x=3

>>> type(x)

<class 'int'>

>>> type(x+4.6)

<class 'float'>

xשל ערכו של ( conversionאו casting) המרהביצע Pythonשימו לב כי בדוגמה האחרונה . float -ל int -מ

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

5 מושג עליו נרחיב בהמשך, פונקציהזוהי למעשה *

Page 6: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(Operators)אופרטורים

(. operands)שנקראים בהקשר זה אופרנדים , היא פעולה על ערכים אופרטור

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

(:את חלקם ראיתם בתרגול)אופרטורים נפוצים בשפת פייתון

לוגיים השוואתיים טקסטואליים נומריים

and (שוויון)== (שרשור)+ +

or (שוויון-אי)=! (שכפול)* (אונארי ובינארי) -

* > not

/ <

// =>

** =<

%

6

Page 7: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(:טבלאות אמתשנקראות )נוח להגדיר אופרטורים לוגיים באמצעות טבלאות

X Y X and Y X or Y

F F F F

F T F T

T F F T

T T T T

X not X

F T

T F

7

(logical operators)אופרטורים לוגיים

T = True

F = False

Page 8: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(Conditionals) תנאימשפטי . 2

.של פקודות מותנהביצוע

(: syntax) תחביר

אחרי התנאי ):(שימו לב לנקודותיים •

!! tab -שימו לב ל•

.באמצעות אופרטורים לוגיים, התנאי יכול להיות מורכב•

.יכולות להיות בעצמן משפטי תנאי( statements)הפקודות •

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

(:else)אפשר גם להגדיר מה קורה אם התנאי לא מתקיים •

.דיאגרמת זרימה+ דוגמה בכיתה •

8

if condition : statements . . .

statements

if condition : statements . . .

else: statements . . .

Page 9: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(Conditionals) תנאימשפטי . 2

9

temp = 30

if temp > 25:

print("It's hot today!")

elif temp == 25:

print("perfect temperature")

else:

print("wear something warm")

print("Good bye")

temp = 30

if temp > 25:

print("It's hot today!")

else:

if temp == 25:

print("perfect temperature")

else:

print("wear something warm")

print("Good bye")

=

Page 10: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(Conditionals) תנאימשפטי . 2

:ל לתוכנית הבאה"השוו את הנ

10

temp = 30

if temp > 25:

print("It's hot today!")

else:

if temp == 25:

print("perfect temperature")

else:

print("wear something warm")

print("Good bye")

temp = 30

if temp > 25:

print("It's hot today!")

else:

if temp == 25:

print("perfect temperature

print("wear something warm")

print("Good bye")

Page 11: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(collections)אוספים . 3

.מכילים עצמים אחריםבפייתון הוא שם כללי לעצמים ש אוסף

(תוויםמכילה ) מחרוזת: דוגמה אחת שכבר ראינו •

(כל טיפוסיכולה להכיל ) רשימה: דוגמה נוספת שנראה כעת •

11

Page 12: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(lists)רשימות

(.לא בהכרח תווים כמו במחרוזת) כלשהםשל איברים סדורהיא אוסף רשימה

.בפסיקיםכאשר האיברים מופרדים , ] [י הסוגרים "ע בפייתוןמיוצגת

:הדפסת תוכן הרשימה

>>> print(lst)

[23, 5.6, -17, "computer"]

:בדיקת האורך של הרשימה

>>> len(lst)

4

:סכום האיברים

>>> sum([1,2,3,4])

10

12

>>> lst = [23, 5.6, -17, "computer"]

>>> type(lst)

<class 'list'>

Page 13: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

פעולות משותפות למחרוזות ולרשימות

13

שרשור•

שכפול•

בדיקת אורך•

השוואה•

(איבר-איבר)

בדיקת שייכות•

:מיון•

>>> "good" + "day"

'goodday'

>>> "good" *3

'goodgoodgood'

>>> len("good")

4

>>> "good" == "Good"

False

>>> "good" == "good"

True

>>> "o" in "good"

True

>>> "a" in "good"

False

>>> sorted("good")

['d', 'g', 'o', 'o']

>>> [1,2] + [3]

[1,2,3]

>>> [1,2] *4

[1,2,1,2,1,2,1,2]

>>> len([1,2])

2

>>> [1,2] == [2,1]

False

>>> [1,2] == [1]+[2]

True

>>> 2 in [1,2]

True

>>> 3 in [1,2]

False

>>> sorted([3,1,2])

[1,2,3]

Page 14: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

(2)פעולות משותפות למחרוזות ולרשימות

14

לאיברגישה •

(לפי אינדקס)

0 -אינדקסים מתחילים מ

(slicing)חיתוך •

כולל –התחלה אינדקס

כולל לא –סוף אינדקס

>>> st = "Clinton"

>>> st[0]

'C'

>>> st[1]

'l'

>>> st[len(st)-1]

'n'

>>> st[len(st)]

???

>>> st[0:len(st)]

'Clinton'

>>> st[0:3]

'Cli'

>>> st[3:7]

'nton'

>>> lst = [6,33,-5]

>>> lst[0]

6

>>> lst[1]

33

>>> lst[2]

-5

>>> lst[3]

???

>>> lst[0:3]

[6,33,-5]

>>> lst[0:2]

[6,33]

>>> lst[1:3]

[33,-5]

Page 15: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

Functions -פונקציות . 4

15

Page 16: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

Functions -פונקציות . 4

.שמבצעות פעילות מוגדרת כלשהיבהקשר של תכנות היא אוסף פקודות פונקציה • .כלומר לגרום לביצוע אוסף הפקודות, לפונקציה" לקרוא"באמצעותו ניתן . לפונקציה יש שם -

(פרמטרים) קלטהפונקציה יכולה לקבל -

(תוצאה כלשהי של החישוב) פלטמחזירה -

(.black box)" קופסה שחורה"אפשר להסתכל על פונקציה כעל •

:של פייתון( built-in)פונקציות מובנות ראינו כבר כמה •

- type - print - len - sum

".קופסאות שקופות"הן יהיו . נלמד כעת לכתוב פונקציות בעצמנו 16

len :פרמטר

אורך הרשימה (למשל רשימה)אוסף

קלט פלט

Page 17: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

חישוב מקסימום: דוגמה

>>> max2(3,5)

5

>>> a=14

>>> max2(3,a)

14

>>> max3(5,6,1)

6

>>> max3(a,16,-4)

16

17

def max2(a,b):

if a>=b:

return a

else:

return b

def max3(a,b,c):

if a>=b:

if a>=c:

return a

else:

return c

else:

if b>=c:

return b

else:

return c

In a file with a .py extension: Run in interactive mode (shell)

Page 18: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

המשך -פונקציות

:יתרונות עיקריים לשימוש בפונקציות •

כותבים פעם אחת , במקום לכתוב אותו קוד או קוד דומה הרבה פעמים –" שכפול קוד"מונע 1.

.וקוראים בכל פעם עם הפרמטרים המתאימים

המבנה של כלל התוכנית ברור יותר2.

המשתמש בפונקציה לא צריך לדעת את פרטי מימושה –הפשטה 3.

:תחביר •

:לפונקציה קריאהזרימת הביצוע בעת • .י רישום שמה עם הפרמטרים המתאימים בסוגריים"ע( לה" קוראים)"מפעילים את הפונקציה (:call)קריאה 1.

.ערכי הפרמטרים שבקריאה מוצבים לתוך הפרמטרים של הפונקציה: לפונקציה" שליטה"העברת ה2.

.returnעד הפעם הראשונה שנתקלים בפקודת , גוף הפונקציה מתבצע: (execution)ביצוע 3.

.הקוראת" סביבה"מוחזר ל return -הערך שבפקודת ה: לסביבה הקוראת" שליטה"החזרת ה4.

18

def func_name (parameters) : function body . . .

return value

Page 19: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

אלטרנטיבות לחישוב מקסימום .בדרכים שונות max3אפשר היה לכתוב את

:לדוגמה

?גרסה יעילה יותראיזו : נקודה למחשבה

.ההשוואותכאן נגדיר יעילות כמספר •

.נרצה להבחין בין המקרה הכי גרוע למקרה הכי טוב מבחינת כמות השוואות•

...הביתבתרגיל / אולי בתרגול •

19

def max3_v1(a,b,c):

if a>=b:

if a>=c:

return a

else:

return c

else:

if b>=c:

return b

else:

return c

def max3_v2(a,b,c):

if a>=b and a>=c:

return a

elif b>=a and b>=c:

return b

else:

return c

Page 20: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

פונקציה שקוראת לפונקציה

max3 יכולה להשתמש ב- max2 !

.על הלוח –זרימת הנתונים דיאגרמת

תרגיל

?ערכים 4באילו דרכים ניתן לחשב מקסימום של

.ציירו דיאגרמה וכיתבו את הפונקציה עבור אחת הדרכים

20

def max3_v3(a,b,c):

max_first_two = max2(a,b)

max_all = max2(max_first_two, c)

return max_all

Page 21: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

21

בפייתוןפונקציות

:מקורות אפשריים 2לפונקציות בפייתון

:def max3(a,b,c) :שהוגדרו בקודפונקציות חדשות 1.

...

:קיימותפונקציות 2.

I . מובנות פונציותbuilt-in):)

…,print, len, sum :למשל

II . מחלקותפונקציות מובנות של*:

str: >>> str.count(“abbabcb”, “b”)של המחלקה countלמשל הפונקציה

4

III . י פקודת "ע" לייבא"שצריך חבילות פונצקיות שלimport*

import math <<< :למשל >>> math.factorial(5) 120

נכיר אותן בהתאם לצורך במהלך הקורס. בתרגילי הבית/ תרגולים / נראה עוד בהרצאות *

Page 22: מבוא למדעי המחשב - cs4cyber.wdfiles.comcs4cyber.wdfiles.com/local--files/lectures/lec2.pdf · 1 ןותייפ תודוסי – 2 רועיש םירוטרפואו םיסופיט

...מה לעשות אחרי השיעור: תזכורת

22