אלגוריתם

Download Report

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‬‬