Transcript אלגוריתם
מבוא למדעי המחשב לתעשייה וניהול
ד"ר אריאלה ריכרדסון (מכון טל)
ד"ר גדעון גרדוול (מכון לב)
תשע"ד
1
מידע שימושי
מרצים
מכון לב -ד"ר גדעון גרדוול
מכון טל – ד"ר אריאלה ריכרדסון
שעות קבלה :בתאום מראש בדוא"ל
אתר הקורס
http://www.jct.ac.il/~richards/intro-program.htm
או דרך moodle
עדכונים ,מצגות ,דוגמאות וחומר לחזרה ,סילבוס
2
הערכה
הציון מורכב מ:
בוחן ()10%
תרגילים ()10%
מבחן סופי ()80%
אסור לעבוד בזוגות בכל חלק (גם בתרגילים וגם בבוחן וגם במבחן)
נוכחות אינה חובה (אבל מומלצת)
מועד ב' – מורשה לתלמיד(ה) בעל(ת) לפחות %70נוכחות.
הערה :חובה לעבור את המבחן הסופי בציון של 55לפחות.
תרגילים:
חובה להגיש תרגילי בית בזמן.
3
נושאים שילמדו בקורס
מבוא
טיפוסים ושימוש במשתנים
פלט ,קלט
פעולות אריתמטיות ,השמה
לוגיקה ומשפטי תנאי
לולאות
פלט וקלט עם קבצים
שימוש בפונקציות
תווים ומחרוזות
מערך חד ממדי
Structure
4
מבוא
5
סיפור מפעל השעווה
במפעל לייצור נרות רוצים לדעת כמה שעווה יש להזמין לייצור
נרות לחנוכה.
לכאורה שאלה פשוטה...
חשיבות
הזמנת מעט מדי :מחסור בשוק
הזמנת יותר מדי :בזבוז
כדאי לנתח את הבעיה ולהיעזר במחשב
איך המחשב יכול לעזור?
איך נותנים את הבעיה למחשב?
מה המחשב יודע לעשות?
מה המגבלות של המחשב?
6
)דוגמא לתוכנית שמחשבת כמה שעווה להזמין (נבין בהמשך
Module Module1
Sub Main()
Dim storageWax As Integer = 4000
Const WaxPerCandle As Integer = 10
Dim numCandles As Integer = 4400
Dim totalWax As Integer
Dim buyWax As Integer
totalWax = WaxPerCandle * numCandles
buyWax = totalWax - storageWax
Console.WriteLine("The amount of wax to buy is: " & buyWax)
Console.ReadKey()
End Sub
End Module
המחשב
המחשב הוא מכונה אלקטרונית הקולטת נתונים הנקראים
"קלט" ,מעבדת אותם ומוציאה מידע הנקרא "פלט".
העיבוד מבוצע ע"י אוסף של הוראות הנקראות "תוכנית"
קלט
עיבוד
פלט
בבעיית מפעל השעווה
מה יהיה הקלט?
מה יהיה הפלט?
מה יקרה בעיבוד?
8
חומרה ותוכנה
נוהגים להבחין בין שני מרכיבים במחשב
חומרה
המרכיבים הפיזיים של המחשב
התקני קלט ופלט
– CPUיחידת עיבוד מרכזית
זיכרון
תוכנה
אוסף הוראות לפיהן המרכיבים הפיזיים פועלים
מערכת הפעלה
שפות תכנות
מהדר -קומפיילר
9
רכיבי חומרה
התקני קלט
התקני פלט
מסך ,מדפסת ,מקרן...
) - CPU (central processing unitיחידת עיבוד מרכזית
עכבר ,מקלדת ,סורק ,מסך מגע...
המוח של המחשב
אחראית על עיבוד מידע ,ביצוע חישובים ,ניהול התהליכים במחשב
זיכרון
10
- CPUמבנה המעבד
המעבד של המחשב מורכב משני חלקים עיקריים
ALU – Arithmetic Logic Unit
יחידת חישוב
מבצעת פעולות אריתמטיות ולוגיות
CU – Control Unit
יחידת בקרה
שולפת הוראות מהזיכרון מפענחת ומבצעת אותם
הבקר ( )CUקורא ליחידת החישוב ( )ALUלפי הצורך
11
סוגי זיכרון
זיכרון מרכזי -אזור אחסון ראשי לתוכניות ונתונים הנמצאים בשימוש
RAM – Random Access Memory
ROM – Read Only Memory
מאפשר גישה מהירה בצורה רנדומלית (לא סדרתית)
מתאים לעבודה עם המעבד
נמחק כאשר המחשב נכבה
זיכרון שנשמר גם כאשר המחשב כבוי ומשמש לאתחול המחשב
זיכרון משני -אחסון ארוך טווח
מאפשר שמירה של מידע רב
גישה איטית יותר מאשר בזיכרון המרכזי
בדרך כלל ניגשים דרך אמצעי קלט ופלט
דוגמאות :דיסק קשיח ,דיסק CD, DVD ,)"disk on key”( USB
12
תהליך החישוב
הנתונים מתקבלים דרך התקני הקלט
הנתונים עוברים עיבוד ב CPU
ה CPU-משתמש בזיכרון לצורך החישובים
התוצאות מועברות להתקני הפלט
.1
.2
.3
.4
איך החומרה מופעלת?
זיכרון מרכזי
אמצעי קלט
CPU
איך הנתונים נכנסים ויוצאים?
איך ה CPUיודע מהי המטלה הרצויה?
התשובה :תוכנה!
אמצעי פלט
13
תוכנה
אוסף של תוכניות מחשב שמדריכות את החומרה איך לפעול
מערכת הפעלה
מנהלת את התוכניות האחרות ומקצה להן את משאבי החומרה
דוגמאותWindows, Unix, Linux, Mac OS :
אפליקציות
כל תוכנה אחרת (שאינה מערכת הפעלה)
דוגמאות :עיבוד תמלילים (,)WORDמערכות בקרה של טילים,
משחקים...
גם תוכנית שאתם תכתבו!
14
כתיבת אפליקציות – שפת מכונה
לאדם הכותב אפליקציה קוראים מתכנת
באיזו שפה כדאי לכתוב אפליקציה?
שפת מכונה
שפת תכנות שיש בה הוראות לביצוע פעולות על סיביות
במעבד ( )CPUמתבצעות פעולות על סיביות
קשה לכתיבה ולקריאה
לכל מעבד שפת מכונה משלו
האם כדאי לכתוב בשפת מכונה?
לא!
15
כתיבת אפליקציות – שפה עילית
שפה עילית
שפת תכנות עם הוראות שדומות לשפה טבעית (אנגלית)
הכתיבה אינה חופשית (מדוע?) יש לה כללי תחביר ( )syntaxמוגדרים
הכתיבה והקריאה נוחים
שפה עילית אינה תלויה במעבד
דוגמאותVisualBasic, C, C++, C#, Java :
האם כדאי לכתוב בשפה עילית?
האם המחשב מבין שפה עילית?
כן!
לא!
16
כתיבת אפליקציות – תפקיד המהדר ()compiler
מהדר compiler-
מתרגם את השפה העילית (בה כתבנו) לשפת מכונה (עבור המעבד)
הקומפיילר גם אחראי על בדיקת התחביר (סינטקס)
בכך מאתר שגיאות בכתיבה
יודע לתרגם לכל מחשב לשפת המכונה המתאימה
לתהליך נקרא הידור או קומפילציה
מצאנו דרך לכתוב בצורה נוחה
והמעבד ידע לקרוא את ההוראות!
17
פיתוח תוכנה -אלגוריתם
נחזור למפעל השעווה
הבעיה :במפעל רוצים לדעת כמה שעווה יש להזמין לייצור נרות
לחנוכה.
רוצים למצוא אלגוריתם לפתרון הבעיה
אלגוריתם " -סדרת הוראות" שמגדירות איך לפתור את הבעיה
למציאת האלגוריתם צריך להבין היטב את הבעיה
לייצר סדרה של פעולות הפותרות אותה
מהו האלגוריתם לפתרון הבעיה שלנו?
18
תהליך התכנות (חלקי)
בעיה
כתיבת אלגוריתם
קידוד (בשפה עילית)
קומפילציה (מעבר לשפת מכונה)
הרצה
19
סביבת פיתוח
תפקידי סביבת הפיתוח
כתיבת תוכנית
בדיקת תוכנית
בדיקות
debugger
הרצת התוכנית
עורך Editor -
באופן חלקי שימוש ב ))Interpreter
הרצה מלאה (לאחר קומפילציה)
דוגמאות לסביבות פיתוח
eclipse, visual studio
20
בדיקות ושגיאות
שגיאת קומפילציה
סינטקס ( )syntaxשגוי
חוסר התאמה בין סוגי נתונים
אי אפשר להריץ את התוכנית.
שגיאת ריצה
חלוקה באפס
( שימוש בזיכרון לא חוקי)
אפשר להריץ את התוכנית ,אבל היא מסתיימת באופן חריג.
שגיאה לוגית
טעות בביצוע התוכנית
התוכנית רצה אבל אינה מבצעת את מה שרצינו.
21
תהליך התכנות (מלא)
בעיה
כתיבת אלגוריתם
שגיאה
בדיקת
קומפילציה
תקין
קידוד
שגיאה
קומפילציה
בדיקת ריצה
הרצה
תקין
הצלחה וסיום!
22
תוכנית ראשונה
23
הדפסת Hello Worldלמסך
בעיה:
רוצים להדפיס על המסך ""Hello World
אלגוריתם:
במקרה זה מאד פשוט:
הדפס ""Hello World
(ע"י שימוש בפקודת הדפסה)
נוסיף עוד פקודה שתשאיר את המסך פתוח עד שמקלידים על תו
קידוד:
נשתמש בקורס בשפת )VB( Visual Basic
24
שלד של תוכנית ב VB
Module Module1
)(Sub Main
פה נכניס את הקוד של התוכנית
End Sub
End Module
מודול ( - )Moduleיחידת תוכנה ,אצלנו יהיה תמיד רק אחד
– Mainהחלק העיקרי של התוכנית .תמיד חייב להופיע ,והתוכנית
תמיד תתחיל מפה.
25
Hello World קידוד האלגוריתם – להדפסת
Module Module1
Sub Main()
Console.Write("Hello World")
Console.ReadKey()
End Sub
End Module
26
הוספת רווח בין השורות
Module Module1
Sub Main()
Console.WriteLine()
Console.WriteLine("Hello World")
Console.WriteLine()
Console.ReadKey()
End Sub
End Module
27
MsgBox - שימוש בתיבת הודעה
ניתן גם לפתוח תיבת הודעה ולרשום בה טקסט כלשהו
Module Module1
Sub Main()
MsgBox("Hello World")
Console.ReadKey()
End Sub
End Module
28
שימוש בסביבת עבודה -פתיחת פרויקט חדש
מייצר אפליקציה
מסוג Console
איפה לשמור את התיקייה.
שימו לב לשמור בכונן שלכם ()Z
ולא במחשב ()C
שם הפרויקט
(זה יהיה גם
שם התיקייה)
29
אזורים בסביבת העבודה
אזור לכתיבת קוד
תיאור הקבצים
בפרויקט
30
שמירה
יש לוודא שבחרתם את כל
הפרויקט (בעזרת העכבר)
לפני השמירה
יש לבחור :
שמירה ()save
או
שמירה בשם...
()save as
31