1 - timg.co.il

Download Report

Transcript 1 - timg.co.il

‫יסודות מדעי המחשב ‪1‬‬
‫שעור ‪2‬‬
‫מהו מחשב‬
‫•‬
‫•‬
‫•‬
‫•‬
‫מחשב מכונה אלקטרונית הקולטת נתונים‪ ,‬מעבדת‬
‫אותם ופולטת מידע הנוצר בתהליך העיבוד‪.‬‬
‫קלט הנתונים שקולט המחשב‬
‫פלט המידע שפולט המחשב‬
‫העיבוד המבוצע במחשב מונחה על ידי אוסף‬
‫הוראות הנקרא תוכנית מחשב‬
‫דוגמאות‬
‫• קניית כרטיסים לסרט בקופה‬
‫– קלט‪ :‬מספר הכרטיסים‪ ,‬פלט‪:‬כרטיסים מסומנים‬
‫• הגדרת תנועת אנימציה‬
‫– קלט‪:‬נקודות התחלה וסיום‪ ,‬פלט‪ :‬תנועת הדמות‬
‫• עיבוד תלוש משכורת‬
‫– קלט‪:‬פרטי עובד‪+‬ימי עבודה‪ ,‬פלט‪ :‬תלוש משכורת‬
‫אחרונה‬
‫• חישוב מסלול תעופה של טיל‬
‫– קלט‪ :‬מקום השיגור‪ ,‬זמן‪ ,‬מהירות רוח‪ ,‬מהירות הטיל‬
‫– פלט‪ :‬נקודת נחיתה‪ ,‬מסלול‬
‫דוגמאות נוספות‬
‫הביאו דוגמאות נוספות‬
‫מאפייני המחשב‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫מגוון שימושים רחב‬
‫ביצוע מהיר ומדוייק‬
‫נפח איכסון גדול‬
‫ניטרול רגשות‬
‫פלט שגוי תוצאה של קלט שגוי או תוכנה שגוייה‬
‫מהי תוכנה שגוייה?‬
‫תוכנה שגוייה?‬
‫• תוכנה שגוייה אינה מבצעת את העיבוד הדרוש‬
‫• התוכנה נכתבת על ידי אנשים שעלולים לטעות‬
‫• דוגמא‪ :‬חישוב ממוצע של מספרים‪:‬‬
‫– סיכום ‪ n‬המספרים בקלט וחלוקה ב ‪n-1‬‬
‫מרכיבי המחשב‬
‫• חומרה‪:‬‬
‫– הרכיבים הפיסיים שמרכיבים את המחשב‬
‫• תוכנה‪:‬‬
‫– אוסף תוכניות המחשב‬
‫חומרה‬
‫יע"מ (‪)CPU‬‬
‫• היא ה״מוח של המחשב״‪.‬‬
‫• מבצעת את ההוראות בתוכניות המחשב‪,‬‬
‫– הוראות לביצוע פעולות חישוב‪,‬‬
‫– פעולות השוואה ‪ ,‬התנייות ובקרה‬
‫• פונה אל הזיכרון ואל אמצעי הקלט והפלט‬
‫הזיכרון‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫מורכב מאוסף גדול מאוד של תאים‪.‬‬
‫לכל תא בזיכרון מותאם מספר סידורי‪ ,‬הנקרא מען (כתובת)‪.‬‬
‫‪address‬‬
‫יחידת העיבוד המרכזית משתמשת במידע השמור בזיכרון‬
‫ולעתים משנה אותו‪,‬‬
‫הפנייה לתאי הזיכרון‪ :‬על ידי המען שלהם‪address .‬‬
‫יש שני סוגי פניות לזיכרון‪:‬‬
‫– כתיבת מידע בזיכרון ‪ :‬למחיקת מידע ולשמירת מידע חדש במקומו‬
‫– קריאת מידע מהזיכרון‪ :.‬העברת המידע מהזיכרון אל היע"מ‬
‫• כאשר אנו קוראים ספר‪ ,‬השורות אינן נעלמות מדפי הספר‪ ,‬אלא‬
‫רק ״מועתקות״ לזיכרוננו‬
‫הזכרון ‪2‬‬
‫• ייצוג על ידי סיביות‪ .‬סיבית (‪)bit‬‬
‫– קיצור של ספרה בינארית (‪ -(binary digit‬היא אחת מן‬
‫הספרות ‪ 0‬או ‪ ,1‬כמו שספרה עשרונית היא אחת מן‬
‫הספרות ‪.9 ,... ,0‬‬
‫• תא בזיכרון המחשב מכיל סדרה של סיביות‪ ,‬בדרך‬
‫כלל ‪ 32 ,16‬או ‪ 64‬סיביות‪,‬‬
‫• כל המשימות המורכבות המתבצעות על ידי מחשב הן‬
‫אוסף של פעולות על סדרות המורכבות מהספרות ‪ 0‬ו‪-‬‬
‫‪!1‬‬
‫• המחשב מפרש סדרות של סיביות כמספרים או‬
‫כאותיות‪ ,‬לעתים סדרות של סיביות מפורשות‬
‫כהוראות לביצוע או כטיפוסי מידע אחרים‪.‬‬
‫מה עושה ה יע"מ?‬
‫• מבצעת הוראות פשוטות‪:‬‬
‫– ״קרא את סדרות הסיביות שנמצאות בתאי הזיכרון‬
‫שהכתובות שלהם הם ‪ 13‬ו‪ ,37-‬התייחס לכל סדרת‬
‫סיביות כאל מספר‪ ,‬חבר אותם וכתוב את התוצאה‬
‫בתא שהכתובת שלו ‪116‬״‪.‬‬
‫סוגי זכרון‬
‫• זיכרון ראשי משמש לשמירת תוכניות בזמן‬
‫ביצוען‪ ,‬ולשמירת נתונים ותוצאות ביניים של‬
‫תוכניות שמתבצעות‪.‬‬
‫• זיכרון משני משמש לאחסון לזמן בלתי מוגבל של‬
‫מידע ושל תוכניות מחשב‪.‬‬
‫סוגי זכרון ‪2‬‬
‫• הזיכרון הראשי‬
‫– נפח קטן ‪Gbyte 2-8‬‬
‫– מהירות הקריאה וכתיבה גדולה‬
‫– ממוקם צמוד ליחידת העיבוד המרכזית‪,‬‬
‫• הזיכרון המשני‬
‫– נפח עצום ‪Gbyte 500‬‬
‫– מהירות הקריאה וכתיבה נמוכה בהרבה‬
‫– נמצא באמצעי אחסון חיצוניים כמו דיסק נייד או דיסק קשיח‪.‬‬
‫• במהלך הביצוע ‪ ,‬יחידת העיבוד המרכזית מעתיקה את‬
‫התוכנית מהזיכרון המשני אל הזיכרון הראשי‪ .‬במובנים‬
‫רבים‪ ,‬ניתן להתייחס לזיכרון הראשי כאל זיכרון לטווח קצר‪,‬‬
‫ואל הזיכרון המשני כאל זיכרון לטווח ארוך‪.‬‬
‫• דוגמאות לזכרון ראשי ומישני?‬
‫אמצעי קלט‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫משמשים להעברת נתונים אל המחשב‪.‬‬
‫עכבר ולוח מקשים‪.‬‬
‫סורק דיגיטלי‪ ,‬מצלמה דיגיטלית‬
‫מיקרופון‬
‫דוגמאות נוספות?‬
‫אמצעי פלט‬
‫•‬
‫•‬
‫•‬
‫•‬
‫משמשים להעברת מידע מן המחשב אל‬
‫המשתמשים בו‪.‬‬
‫למשל‪ ,‬מסך ומדפסת‪.‬‬
‫מקרן או רמקול‬
‫דוגמאות נוספות?‬
‫שאלות‬
‫• מחשבון נועד לבצע פעולות חשבון‪ .‬מהו אמצעי‬
‫הקלט למחשבון? מהו אמצעי הפלט למחשבון?‬
‫• המחשב קולט מידע‪ ,‬מעבד אותו ונותן כפלט את‬
‫תוצאת העיבוד‪ .‬גם מוח האדם קולט מידע‪ ,‬מעבד‬
‫אותו ופולט את תוצאת העיבוד‪.‬‬
‫א‪ .‬הביאו דוגמאות לאיברים קולטי מידע ולאיברים פולטי‬
‫מידע בגוף האדם‪.‬‬
‫ב‪ .‬הביאו דוגמאות למידע השמור בזיכרון האדם‪.‬‬
‫תוכנה‬
‫• אוסף תוכניות מחשב‪.‬‬
‫• מנחות את העיבוד המתבצע על ידי החומרה‪.‬‬
‫• דוגמאות‪ :‬ביצוע חישובים מתמטיים‪ ,‬ניהול מאגרי‬
‫מידע‪ ,‬בקרה על תהליכים‪ ,‬הדמיית מערכות‪ ,‬עיבוד‬
‫תמלילים‪ ,‬למשחקים וליישומים שונים ורבים‬
‫נוספים‪.‬‬
‫מערכת הפעלה )‪(OS‬‬
‫• מהווה את הקשר בין התוכנה לחומרה‪:‬‬
‫• מנהלת את שאר התוכניות ומקצה לשימושן את‬
‫משאבי החומרה השונים (יע״מ‪ ,‬זיכרון‪ ,‬אמצעי‬
‫קלט ואמצעי פלט)‪.‬‬
‫• כל תוכנית מחשב נכתבת על ידי מתכנת בשפת‬
‫תכנות‪.‬‬
‫שפת תכנות‬
‫)‪ (programming language‬היא‬
‫• שפת תכנות‬
‫אוסף של כל הכללים הקובעים כיצד נכתבות‬
‫ההוראות בתוכנית מחשב‪ ,‬ומה המשמעות של כל‬
‫הוראה‪.‬‬
‫• דןגמאות‪,C++ ,C ,JAVA :‬‬
‫מתכנת‬
‫• מתכנת )‪ (programmer‬הוא אדם הכותב תוכניות‬
‫בשפת מחשב‪.‬‬
‫• עבודתו של מתכנת ‪ -‬תהליך התכנות –‬
‫– ניתוח של משימות המיועדות לביצוע במחשב‪,‬‬
‫– כתיבת מתכון לביצוע המשימה‪,‬‬
‫– יישומו של המתכון בשפת מחשב‪.‬‬
‫שפת מכונה)‪(machine language‬‬
‫• הפעולות המתבצעות ביחידת העיבוד המרכזית הן‬
‫פעולות על סיביות‪.‬‬
‫• השפה שבאמצעותה ניתן לתקשר עם מחשב‪,‬‬
‫צריכה להיות שפה מאוד פשוטה‪ ,‬הכוללת הוראות‬
‫לביצוע פעולות על סיביות‪ .‬שפת מכונה‬
‫שפת מכונה ‪(machine language) 2‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫כל הוראה בשפת מכונה מורה על ביצוע פעולות‬
‫על סדרות של סיביות (למשל‪ ,‬חיבור שתי סדרות)‪.‬‬
‫גם ההוראות של שפת מכונה נכתבות בקוד‬
‫המבוסס על סיביות‪,‬‬
‫תוכנית בשפת מכונה היא סדרה ארוכה של‬
‫סיביות‪ ,‬כלומר‪ ,‬רצף ארוך של ‪ 0‬ו‪.1-‬‬
‫לכל סוג מחשב שפת מכונה משלו‪.‬‬
‫שפת מכונה‪(machine language) 3‬‬
‫• התוכניות הראשונות שנכתבו עבור מחשבים‬
‫(שנות ה‪ 40-‬של המאה העשרים) נכתבו בשפת‬
‫מכונה‪.‬‬
‫• תהליך הכתיבה היה מסורבל מאוד‪ ,‬לא נוח‪,‬‬
‫• למה?‬
‫חסרונות שפת מכונה‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫קשה מאוד לכתוב אותה‬
‫וקשה עוד יותר לקרוא אותה‪ ,‬לעקוב אחר מהלך‬
‫ביצועה ולהבין את מטרתה‪.‬‬
‫לעתים מתגלות שגיאות בתוכנית וצריך לתקן‪,‬‬
‫לפעמים צריך לעדכן אותה כדי להתאימה לדרישות‬
‫חדשות‪.‬‬
‫לא תמיד התיקונים והעדכונים מתבצעים על ידי‬
‫הכותב המקורי‪,‬‬
‫חסרונות שפת מכונה ‪2‬‬
‫• לכל סוג מחשב יש שפת מכונה יחודית‬
‫• לא ניתן לקחת תוכנית שנכתבה בשפת מכונה של‬
‫מחשב מסוג אחד‪ ,‬ולהריץ אותה כמו שהיא‬
‫במחשב מסוג אחר‪.‬‬
‫• מעבר בין סוגי מחשבים דורש כתיבה מחודשת של‬
‫התוכנית‪.‬‬
‫שפה עילית‬
‫• שפה עילית )‪ (high level language‬היא שפת תכנות‪,‬‬
‫אשר ההוראות בה דומות למשפטים בשפה טבעית‬
‫(כמו אנגלית) או לנוסחאות מתמטיות‪.‬‬
‫• למרות הדמיון לשפה טבעית‪ ,‬ההוראות אינן נכתבות‬
‫בכתיבה חופשית‪ ,‬אלא על פי כללים מוגדרים‪,‬‬
‫שנקראים כללי התחביר של השפה)‪.)syntax‬‬
‫• כיצד ניתן לגרום למחשב ״להבין״ תוכנית הכתובה‬
‫בשפה עילית?‬
‫מהדר‬
‫• תוכנית הכתובה בשפה עילית מתורגמת לשפת‬
‫מכונה‪.‬‬
‫• התרגום נעשה על ידי תוכנית מחשב מיוחדת‪,‬‬
‫הנקראת מהדר‪:‬‬
‫• מהדר )‪ (compiler‬היא תוכנית המתרגמת משפה‬
‫עילית לשפת מכונה‪ .‬תהליך התרגום נקרא הידור‬
‫או קומפילציה (‪ .)compilation‬הקלט של המהדר‬
‫הוא תוכנית בשפה עילית והפלט שלו הוא תוכנית‬
‫בשפת מכונה‪ ,‬שהיא התרגום של תוכנית הקלט‪.‬‬
‫מהדר ‪2‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫שלב ההידור‪ ,‬במהלכו התוכנית בשפה העילית עוברת‬
‫תרגום לתוכנית בשפת מכונה‪.‬‬
‫שלב ההרצה‪ ,‬במהלכו מתבצעת המשימה עצמה‪ ,‬כלומר‪,‬‬
‫המחשב מבצע את ההוראות הכתובות בשפת מכונה‪ ,‬ונותן‬
‫את תוצאת העיבוד כפלט‪.‬‬
‫לכל זוג של שפה עילית ושפת מכונה דרוש מהדר נפרד‬
‫שיבצע את התרגום ביניהן‪.‬‬
‫כדי להריץ תוכניות הכתובות בכמה שפות עיליות‪ ,‬יש לדאוג‬
‫שיהיה מותקן מהדר מתאים לכל אחת מהשפות העיליות ‪.‬‬
‫כדי להריץ תוכניות בשפה עילית בכמה מחשבים מסוגים‬
‫שונים‪ ,‬יש לדאוג שיהיה מהדר עבור כל סוג מחשב‪.‬‬
‫מהדר ‪3‬‬
‫שפה עילית‬
‫• יותר נוחה לקריאה ולכתיבה‪,‬‬
‫• מגשרת על פני ההבדלים בין סוגים שונים של‬
‫מחשבים‪.‬‬
‫– בעזרת מהדר מתאים ניתן לתרגם כל תוכנית בשפה‬
‫עילית לתוכנית בשפת מכונה של מחשב זה או אחר‪.‬‬
‫• תהליך ההידור מורכב משני שלבים‪:‬‬
‫– בדיקת תחביר התוכנית בשפה העילית‬
‫– תרגום התוכנית בשפה העילית לתוכנית בשפת מכונה‪.‬‬
‫בדיקת תחביר‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫בדיקה שהתוכנית בשפה העילית עומדת בכללי‬
‫התחביר של השפה שבה נכתבה‪.‬‬
‫אם לא‪ :‬יש בה שגיאות תחביר )‪.(syntax errors‬‬
‫הפלט של המהדר הוא פירוט שגיאות התחביר‬
‫שמצא‪.‬‬
‫יש לתקן את כל שגיאות התחביר שבה‪ ,‬כלומר‪,‬‬
‫לעבור בהצלחה את השלב הזה‪.‬‬
‫למשל‪ ,‬תוכנית בשפת ‪ Java.‬חייבת להכיל בתוכה‬
‫לפחות פעם אחת את המילה ‪ ..class‬אם ננסה‬
‫לתרגם תוכנית בשפת שאינה מכילה את המילה‬
‫‪.class‬המהדר יודיע על שגיאת תחביר‪.‬‬
‫שגיאות ריצה‬
‫• אם אין בתוכנית שגיאות תחביר‪ ,‬התוכנית מיתרגמת‬
‫לשפת מכונה‪ ,‬ומתקבלת תוכנית שיכולה לרוץ‬
‫במחשב‪.‬‬
‫• במהלך הריצה של התוכנית עלולות להתגלות שגיאות‬
‫שיגרמו לעצירת הריצה לפני סיומה‪ ,‬או להודעות‬
‫שגיאה‪ .‬אלו הן שגיאות ריצה)‪,(run-time errors‬‬
‫• שגיאות ריצה אינן יכולות להתגלות בזמן ההידור‪.‬‬
‫למשל‪ ,‬הניסיון לחלק ערך השמור בזיכרון המחשב ב‪-‬‬
‫‪ 0‬יגרום לשגיאת ריצה ולהדפסת הודעה מתאימה‪.‬‬
‫באגים‬
‫• תהליך איתור שגיאות ריצה ותיקונן נקרא ניפוי‬
‫)‪(debugging‬‬
‫• מקור המונח בשלבים המוקדמים של שימוש‬
‫במחשבים‪ ,‬כאשר מחשבים היו כה גדולים עד כי‬
‫מחשב אחד מילא אולם שלם‪ .‬מחשב מסוים חדל‬
‫לפעול‪ ,‬ולאחר זמן התגלה בין רכיביו חרק גדול‬
‫שנתקע שם והפריע לפעולתו התקינה של מחשב‪.‬‬
‫מאז נוהגים לקרוא לשגיאה בתוכנית באג ‪ -‬חרק‬
‫באנגלית)‪.‬‬
‫למה יש הרבה שפות עיליות?‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫מאז תחילת פיתוח השפות העיליות‪ ,‬באמצע שנות‬
‫ה‪ 50-‬של המאה העשרים‪ ,‬פותח מספר גדול מאוד‬
‫של שפות‪.‬‬
‫מדוע יש צורך בכל כך הרבה שפות?‬
‫האם לא עדיפה שפה אחת אחידה שבה ייכתבו כל‬
‫התוכניות‪ ,‬ואשר אותה יוכל כל אחד ללמוד‬
‫בקלות?‬
‫מה מבדיל בין השפות השונות?‬
‫מי משתמש באילו שפות ולאילו מטרות?‬
‫כי‬
‫• סיבה אחת צרכים המתעוררים בשטחים חדשים‬
‫ושונים של יישומים‪.‬‬
‫– לכל שפה מאפיינים ייחודיים משלה‪ :‬חישובים מדעיים‪,‬‬
‫לעיבוד נתונים מנהלי (הפקת משכורות‪ ,‬הנהלת‬
‫חשבונות וכוי)‪.‬‬
‫• הסיבה השנייה היא התקדמות המחקר המדעי‬
‫העוסק בשפות תכנות ומסייע בשיפור השפות‪.‬‬
‫סוגי שפות עיליות‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪ JAVA‬שייכת לקבוצת השפות הקרויות מונחות‬
‫עצמים )‪.(object oriented‬‬
‫קבוצת השפות הפרוצדורליות (כמו פסקל או ‪,)C‬‬
‫קבוצת השפות הפונקציונליות (כמו ‪)scheme‬‬
‫קבוצת השפות הלוגיות (כמו פרולוג)‪.‬‬