You are on page 1of 28

‫יסודות התכנות – מבוא‬

‫מרצה‪ :‬מרסיאנו שגיא‬


‫‪Yeseg.check@gmail.com‬‬
‫מה זה תוכנה ?‬
‫מה זה תוכנה ?‬
‫בעיה‬ ‫מאיפה מתחילים ? ומה זה אלגוריתם?‬

‫בהינתן בעיה מסוימת‪ ,‬האם נוכל לתת למחשב‬


‫לפתור את הבעיה בצורה שבה היא מנוסחת?‬
‫לא‪ ,‬הבעיה מנוסחת בצורה שהמחשב לא יכול להבין‪.‬‬
‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫בעיה‬ ‫אלגוריתם‬

‫למה נתכוון כשתקבלו בעיה ונשאל אתכם‪:‬‬

‫מה האלגוריתם שלך?‬


‫אלגוריתם הוא מתכון‪ ,‬דרך לפתרון הבעיה‪ ,‬הנחיות‬
‫לפתרון‪.‬‬
‫אלגוריתם – אוסף פקודות בסיסיות‪ ,‬שביצוען אחת אחרי‬
‫השניה יביא לפתרון הבעיה‪.‬‬
‫פקודה בסיסית – פקודה שהמחשב יודע לבצע‪.‬‬
‫‪shay.tavor@gmail.com‬‬
‫האלגוריתם הוא סדרתי – פקודה מתחילה רק אחרי‬
‫‪www.shaytavor.com‬‬ ‫שהפקודה הקודמת הסתיימה‪.‬‬
‫‪4‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫ניקח דוגמא פשוטה –‬
‫נניח שנרצה להסביר למישהו איך להכין כוס קפה‪.‬‬
‫אותו בן אדם מכיר את המושגים הבסיסיים‬
‫כמו "מטבח"‪" ,‬קומקום חשמלי"‪" ,‬חלב" וכו'‪,‬‬
‫אבל הוא לא יודע איך לעשות מהם קפה‪.‬‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬ ‫‪5‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫גש למטבח‪.‬‬ ‫‪.1‬‬
‫הוצא ספל‪.‬‬ ‫‪.2‬‬
‫שים בספל סוכר וקפה‪.‬‬ ‫‪.3‬‬
‫מלא קומקום חשמלי במים‪.‬‬ ‫‪.4‬‬
‫הפעל את הקומקום‪.‬‬ ‫‪.5‬‬
‫כל עוד המים לא רתחו‬ ‫‪.6‬‬
‫המתן‬ ‫‪.1‬‬

‫מזוג מים מהקומקום לספל‪.‬‬ ‫‪.7‬‬


‫הוצא חלב מהמקרר ומזוג לספל‪.‬‬ ‫‪.8‬‬
‫ערבב‪.‬‬ ‫‪.9‬‬
‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫בעיה‬ ‫אלגוריתם‬

‫כאשר לרשותנו בעיה‪:‬‬


‫ראשית‪ ,‬נבין את מהות הבעיה‪.‬‬

‫נחקור מה הכלים שלרשותנו לפתרונה –כלים מעולם התוכן‬


‫המדובר‪ ,‬וכן כלים בשפת התכנות שאנו יודעים‪.‬‬
‫כעת נתכנן את הדרך לפתרונה באמצעות אוסף ברור של‬
‫תהליכים בסדר מסוים‪.‬‬

‫ועכשיו ניגש לכתוב בשפת פיתון את הפתרון‪.‬‬


‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪7‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫בעיה‬ ‫אלגוריתם‬

‫אלגוריתם – אוסף פקודות בסיסיות‪ ,‬שביצוען אחת אחרי‬


‫השניה יביא לפתרון הבעיה‪.‬‬
‫דוגמא – נניח שיש לנו מחשב שיודע לבצע ‪ 3‬פעולות בלבד‪:‬‬
‫‪-‬קלוט מספר‬
‫‪-‬חבר שני מספרים‬
‫‪-‬לחלק מספר במספר אחר‬

‫ברצוננו לחשב באמצעות מחשב זה ממוצע של שלושה‬


‫מספרים‬
‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪8‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫• ממוצע = (‪3/)X1+X2+X3‬‬
‫• האלגוריתם‪:‬‬
‫• קלוט מספר‪.‬‬
‫• קלוט מספר‪.‬‬
‫• קלוט מספר‪.‬‬
‫• חבר את שני המספרים הראשונים מספרים‪.‬‬
‫• חבר שני מספרים‪.‬‬
‫• חלק תוצאה ב‪.3-‬‬

‫• למה לא יכולנו לכתוב "קלוט שלושה מספרים"?‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫הסבר על התקנת‬
‫התוכנות‬
:‫הדפסות‬

‫() כמו שראינו בדוגמא‬print ‫• על מנת להדפיס על המסך מידע מסויים נשתמש בפקודה‬
:‫הקודמת‬
print("Hello World!")
:”“ = end ‫ נוסיף פסיק ואחריו את הביטוי‬,‫• אם לא נרצה לרדת שורה בסוף ההדפסה‬
print("Hello”, end=“”)
print(”World”, end=“”)
: ‫יודפס‬
shay.tavor@gmail.com
Hello World
www.shaytavor.com
Sagi Marciano
Yeseg.check@gmail.com
‫הערות‬
‫• למה ? – אנחנו צריכים הערות על מנת לתעד את הקוד ואת מה שקורה בו‪.‬‬
‫• לדוגמא כאשר נרצה להגדיר מה כל פעולת הדפסה עושה‪ ,‬המחשב מתעלם מה‬
‫הערה הזאת ולא מפעיל אותה אלה רק מציג לנו אותה בקוד‪ ,‬ולא על מסך‬
‫ההדפסה‪.‬‬
‫• הסימון ‪# :‬‬
‫• דוגמא ‪:‬‬
‫• ‪printing #‬‬
‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫• )"!‪print("Hello World‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬ ‫• ‪print(“Bye") # print something else‬‬
‫טיפוסי נתונים‬
– ‫• המספרים מתחלקים לשני סוגים‬
...1,2,3,4 ‫ – מספרים שלמים‬int •
‫ וכו׳‬100.34 , 1.5, 0.1 ‫ – מספרים ממשיים‬float •
:‫• מחרוזת‬
"hello" ‫״ או‬frFfgk8k‫ – ״‬string •
:‫• ערך אמת או שקר‬
)false ‫ או‬true( ‫ – ערך בוליאני‬bool •

shay.tavor@gmail.com
www.shaytavor.com
Sagi Marciano
Yeseg.check@gmail.com
‫משתנים‬
‫• כדי להשתמש בזיכרון המחשב אנחנו צריכים להגדיר משתנים‪.‬‬
‫• משתנה הוא תא זיכרון‪.‬‬
‫• אנחנו נותנים למשתנה שם יחודי שיאפשר לזהות אותו במהלך התוכנית‬
‫• אנחנו מציבים למשתנה ערך שמאפיין את טיפוס הנתונים שהמשתנה‬
‫שומר‪.‬‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫משתנים‪ -‬כלל בסיס‬
‫• משתנה בנוי מ ‪ 3‬מאפיינים‪:‬‬
‫• השם שלו ‪ -‬שיבטא את מה שאנו רוצים לשמור ותמיד יתחיל באות‬
‫קטנה‬
‫• סימן =‬
‫• הערך – שיגדיר מה הערך של אותו המשתנה‬

‫”‪name = ”jce‬‬

‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫‪x = 4‬‬ ‫הגדרת משתנים‪:‬‬
‫שם המשתנה – השם הזה ישמש אותנו כדי לזהות את המשתנה במהלך התוכנית‬
‫הצבה – הסימן '=' מסמן הצבה‪ .‬אנחנו מציבים ערך כלשהו לתוך המשתנה‪ ,‬כלומר‬
‫מאחסנים ערך כלשהו בתוך תא הזיכרון שהמשתנה מייצג‪.‬‬
‫ערך – בצד ימין של סימן ההצבה אנחנו רושמים ערך כלשהו‪ .‬הערך קובע את טיפוס‬
‫המשתנה‪ .‬במקרה הזה‪ ,‬כיון ש‪ 4-‬הוא מספר שלם‪ ,‬הטיפוס של ‪ x‬הוא ‪.int‬‬

‫‪y = 6.2‬‬ ‫הגדרת משתנה בשם ‪ y‬מסוג ‪ float‬שערכו ‪6.2‬‬

‫‪z = True‬‬ ‫הגדרת משתנה בשם ‪ z‬מסוג ‪ bool‬שערכו‬


‫‪True‬‬
‫‪shay.tavor@gmail.com‬‬ ‫"‪w = "hello‬‬ ‫הגדרת משתנה בשם ‪ w‬מסוג ‪ str‬שערכו‬
‫‪www.shaytavor.com‬‬ ‫“‪”hello‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫הגדרת משתנים‪:‬‬
‫שימו לב שההצבה אפשרית רק מימין לשמאל (כלומר צד ימין הוא הערך אותו‬
‫רוצים להציב‪ ,‬צד שמאל הוא המשתנה אליו רוצים להציב)‪.‬‬
‫‪7=x‬‬ ‫שגיאת קומפילציה‬

‫טיפוס הנתונים של המשתנה יכול להשתנות בהתאם להצבה שנבצע‪:‬‬

‫‪x=4‬‬ ‫המשתנה ‪ x‬מוגדר והוא מסוג ‪int‬‬

‫‪x = 5.3‬‬ ‫כעת ‪ x‬הוא מסוג ‪float‬‬

‫"‪x = "bye‬‬ ‫כעת ‪ x‬הוא מסוג ‪str‬‬


‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫כללי שמות למשתנים‬
‫• שם של משתנה יכול להיות מורכב מהדברים הבאים‪:‬‬
‫• אותיות לועזיות (קטנות וגדולות)‬
‫• מספרים (אבל לא בתחילת השם)‬
‫• קו תחתון (‪)underscore‬‬
‫• שם משתנה הוא יחודי באותה תוכנית‪.‬‬
‫• אי אפשר להגדיר שמות של מילים שמורות בשפה‪.‬‬
‫• רצוי ששמות המשתנים יהיו משמעותיים ככל הניתן ויביעו את מה שהמשתנה‬
‫שומר‪.‬‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫ או‬,‫ שגויה‬,‫עבור כל אחת מהגדרות המשתנים הבאות החליטו אם ההגדרה חוקית‬
:‫חוקית אבל מסוכנת‬
a=3
studentNum = 5335
max_temperature = 36.6
1st_day = “Sunday”
A=5 ‫חוקי אבל מסוכן‬

*age* = 15
print = false
PRINT = false‫חוקי אבל מסוכן‬
shay.tavor@gmail.commaximumSpeedAllowedForCarsInThisRoad = 100 ‫חוקי אבל מעצבן‬
www.shaytavor.com
Sagi Marciano
Yeseg.check@gmail.com
‫אריתמטיקה‬
‫‪x +‬‬
‫• שפת פייתון תומכת בכל פעולות החשבון המוכרות‪.‬‬
‫‪y‬‬
‫אופרטור אופרנד‬
‫• אופרטור הוא הסימן החשבוני (כפל‪ ,‬חילוק‪ ,‬חיבור וכו')‪.‬‬
‫אופרנד‬
‫שמאלי‬ ‫ימני‬ ‫• אופרנדים הם הנתונים עליהם פועל האופרטור‪.‬‬
‫• דוגמא‪:‬‬
‫‪x=4+2‬‬ ‫הערך של ‪ x‬הוא ‪6‬‬

‫‪y=x–3‬‬ ‫הערך של ‪ y‬הוא ‪3‬‬

‫)‪z = 2 * (x + y‬‬ ‫הערך של ‪ z‬הוא‬


‫‪18‬‬
‫‪x=1‬‬ ‫מה ערכו של ‪ y‬לאחר שינוי‬
‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬ ‫‪?x‬‬
‫‪Sagi Marciano‬‬ ‫‪z = y ** 3‬‬ ‫הערך של ‪ z‬הוא ‪)3 ( 27‬‬
‫‪3‬‬

‫‪Yeseg.check@gmail.com‬‬
:‫הצבה מרובה – כל המשתנים מקבלים את אותו הערך‬
x=y=z=7
:‫הצבה מרובה – כל משתנה מקבל ערך אחר לפי הסדר בשורה‬

firstName, lastName, age = "David", "Cohen", 29

firstName = "David“
lastName = "Cohen“
age = 29

shay.tavor@gmail.com
www.shaytavor.com
Sagi Marciano
Yeseg.check@gmail.com
‫‪x=6‬‬ ‫הצבה חוזרת – זכרו שההצבה נעשית תמיד מימין לשמאל‪ ,‬ולכן‬
‫‪x=x+3‬‬ ‫הקומפיילר מחשב את הביטוי בצד ימין (במקרה הזה ‪ )9‬ואז מציב‬
‫אותו ב‪ .x-‬בסוף ההצבה ערכו של ‪ x‬הוא ‪.9‬‬

‫‪x=5‬‬
‫‪x=x+2‬‬ ‫;‪x += 2‬‬
‫‪x=x–8‬‬ ‫;‪x -= 8‬‬
‫‪x=x*6‬‬ ‫;‪x *= 6‬‬
‫‪x = x ** 3‬‬ ‫;‪x **= 3‬‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫הדפסת משתנים – אם נרצה להדפיס את ערך המשתנה‪ ,‬נשתמש בפקודה ‪: print‬‬

‫‪x, y = 2, 3‬‬
‫)‪print("x is: ", x, "y is: ", y‬‬

‫אנחנו מפרידים בפסיק בין מחרוזת מוקפת גרשיים לבין משתנה‪ .‬שימו לב שהפקודה‬
‫‪ print‬מדפיסה גם רווחים באופן אוטומטי‪.‬‬

‫מה היה קורה אם היינו רושמים כך ?? ‪:‬‬

‫‪x, y = 2, 3‬‬
‫)"‪print("x is: x y is: y‬‬

‫‪shay.tavor@gmail.com‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫קלט‬
‫)"‪x = input("Enter a name:‬‬
‫)‪Print(x‬‬

‫שימו לב שהקלט שמתקבל כתוצאה מהפונקציה הוא תמיד מחרוזת!‬


‫לכן נקבל שגיאת ריצה – ‪ x‬הוא לא מספר שלם אלא מחרוזת ולכן אי אפשר לחבר‬
‫אותו עם ‪.2‬‬
‫אם נרצה להתייחס לקלט כאל מספר שלם‪ ,‬נצטרך להמיר אותו‪ ,‬כך‪:‬‬

‫))"‪x = (int)(input("Enter a number:‬‬


‫או למספר ממשי‪:‬‬
‫))"‪y = (float)(input("Enter another number:‬‬
‫‪shay.tavor@gmail.com‬‬ ‫מה יקרה אם הקלט עבור השורה הראשונה יהיה “‪ ”abc‬או ‪?3.5‬‬
‫‪www.shaytavor.com‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
:1 ‫תרגיל‬
‫בכל תרגיל יש להוסיף תיעוד של השם‬
: Print in the‫בתחילת‬
!‫הדף‬ screen ‫זהות‬
the next data
‫ותעודת‬ •
‫שלכם‬
First Name: your first name •
Last Name: your last name •
Id : your Id number •
:Your age •
.Your favorite color •

Sagi Marciano
Yeseg.check@gmail.com
‫תרגיל ‪:2‬‬
‫בכל תרגיל יש להוסיף תיעוד של השם‬
‫שלכם ותעודת זהות בתחילת הדף!‬
‫• נרצה לבנות מערכת אולמות קולנוע‪ ,‬כתבו שמות משמעותיים עבור המשתנים הבאים ‪:‬‬
‫• שם הסינמה שלכם‬
‫• מספר אולמות הקולנוע בסינמה שלכם‬
‫• האם הכניסה מותרת למעל גיל ‪13‬‬
‫• שם הסרט הנצפה ביותר‬
‫• רשות‪ :‬בנוסף נבנה אלגוריתם בכתב אשר יתאר תהליך הזמנת כרטיס בקופת הכרטיסים‪.‬‬

‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬
‫בכל תרגיל יש להוסיף תיעוד של השם‬
:3 ‫תרגיל‬
!‫שלכם ותעודת זהות בתחילת הדף‬
: Create a new project with the name “Ex1.3” and Print in the screen the next data •
Print (1+1) •
firstNumber = 1 •
SecoundNumber = 1
Print (firstNumber + SecoundNumber) •
SecoundNumber = (int)(input ("Enter a number:")) •
Print (firstNumber * SecoundNumber)
firstNumber =(int)(input ("Enter a number:")) •
firstNumber = firstNumber * firstNumber + SecoundNumber
Sagi Marciano
Yeseg.check@gmail.com Print (“firstNumber:” , firstNumber) •
‫תרגיל ‪:4‬‬
‫בכל תרגיל יש להוסיף תיעוד של השם‬
‫שלכם ותעודת זהות בתחילת הדף!‬
‫• ‪: ”Create a new project with the name “Ex1.4‬‬
‫• כתבו תוכנית שקולטת מהמשתמש מספר שלם של שקלים‪.‬‬
‫• התוכנית תדפיס על המסך כמה דולרים‪ ,‬יורו‪ ,‬ופאונד שווה המספר‪.‬‬
‫• ‪ 1‬דולר = ‪ 3.8‬שקלים‪.‬‬
‫למשל‪ ,‬אם הקלט הוא ‪ 256‬שקלים הפלט יהיה‬ ‫• ‪ 1‬יורו = ‪ 4‬שקלים‪.‬‬
‫‪ 71.1‬דולר‪ 64 ,‬יורו‪ 53.3 ,‬פאונד‪ 256 ,‬שקלים‪.‬‬
‫אם הקלט הוא ‪ 98744‬שקלים‪ ,‬הפלט יהיה‬ ‫• ‪ 1‬פאונד = ‪ 4.8‬שקלים‪.‬‬
‫‪ 27428.8‬דולר‪ 24686 ,‬יורו‪ 20571.6 ,‬פאונד‪,‬‬
‫‪ 98744‬שקלים‪.‬‬
‫‪Sagi Marciano‬‬
‫‪Yeseg.check@gmail.com‬‬

You might also like