:Altair 8800 המחשב האישי הראשון 1975 21
1977 Apple][ 22
1981 IBM PC 23
וכיום? 24 מבוא למדעי המחשב. כל הזכויות שמורות 1 הרצאה
מיק רוסופ ט 1975 ב- 1975 מציעים ביל גייטס ופול אלן לחברת MITS המייצרת את ה- Altair לפתח עבורם קומפיילר. ב- 1980, Microsoft מכרה ל- IBM את מערכת ההפעלה למחשבים האישיים,.MS-DOS כיום זו אחת החברות הגדולות בעולם, המפתחת תוכנה מגוונת, הכוללת מערכות הפעלה, תוכנות שירות שונות, תוכנות לסביבת אינטרנט, ועוד. 25
If you can t make it good, at least make it look good. 26
1975 Apple ב- 1975 סטיב ג'ובס וסטיב ווזניאק הקימו את Apple והחלו משווקים מחשב אישי פשוט למדי I Apple עם מסך טלוויזיה חידוש בזמנו. חברת Apple התפתחה יפה מאז, עם סידרת מוצרים למחשוב אישי ותחנות עבודה, כשהמוצר שלהם כולל הן חומרה והן תוכנה מבית. 27
תוכנ ייה How a computer works? מבנה המחשב רקע כללי היסטוריה רקע כללי ה תוכנ תוכנית ראשונה בשפת C 28
תוכנה (Software) תוכנ ית מחשב הי נה סדרה של הורא ות אשר מבצעות משימה אלגור יתמית מסו ימת. בזמן "ריצת" התוכנית, סידרת ההוראות נמצאת בזיכרון הראשי. ההוראות ניתנות בשפת ה- CPU אשר אחראי לביצועם. הוראה נקראת מהזיכרון הראשי ע"פ הסדר, מפוענחת ומבוצעת ע"י ה- CPU. כל 29
מער כת ההפעלה מערכת הפעלה תוכנה (אוסף תוכניות) אשר: מפקחת ומנהלת את המחשב, התקניו, משאביו ומשימותיו. מאתחלת ביצוע משימות (תוכניות). מקצה משאבים למשימות (תוכניות). Linux מערכת ההפעל ה מתווכת בין הת וכנ ה לחמרה. כשמחשב דלו ק, מערכת ההפעלה בפעול ה ומשרתת אותנ ו. דוגמאות: 30
שפת אסמבלי (סף) השפה של ה- CPU. מכילה את אוסף ההור אות שה- CPU "יודע" לבצע. מה עושה התו כני ת? העתק את ערכו של המשתנה הוסף את ערכו של המשתנ ה העתק את ערכו של המשתנה השווה את המש תנ ה השם 0 במשתנה השם 1 במשתנה השם 1 במשתנה loop: mov mov mov mov mov add mov add cmp Bne #0, x #1, y #0, i #30, n y, t x, y t, x #1, i i, n Loop x y i השם 30 במשתנה n t y y למשתנה x למשתנה t למשתנה הוסף 1 למשת נה i עם המשתנה x i n ואם קטן יותר חזור אסמבלר: תכנ ית המתרגמ ת פקודות שפת סף לשפת מכונ ה בינא רית. 31
שפת מכו נה שפת מכונה ה ינ ה התרגום הבינ ארי של שפת אסמב לר. פקודה לדוגמ א: 01000010 00010000 movefrom R1 to R2 32
שפה עיל ית x = 0; y = 1; i = 0; n = 30; do { t = y; y = y + x; x = t; } while(i++ < n); :(...,Pascal שפה עילית,C),Fortran,C++,Java דמוית אנגלית. פקודות מורכבות יותר מפקודות מכונה. מה עושה התו כני ת? y = 1, 1, 2, 3, 5, 8, 13, 21, 34, i = 0, 1, 2, 3, 4, 5, 6, 7, 8, תכנית בשפה עילית מתאימה לריצה על מחשבים שונים ואינה תלויה בשפת המכונה של מעבד ספציפי. compiler (מהדר): תכנית המתרגמת תכניות משפה עילית לתכניות בשפת מכונה של מעבד נתון. את קוד המכונה (קובץ הרצה) המתקבל ניתן להריץ פעמים רבות. 33
שפות עיל יות על צי ר הזמן D. Ritchie B. Stroustrup B. Kernighan FORTRAN :1957 LISP,ALGOL :1958 COBOL :1959 Pascal :1968 C :1972 ML :1973 Ada :1980 C++ :1983 Perl :1987 (American national Standard Inst.) ANSI-C :1989 Java :1994 JavaScript :1995 (International Org. for Standardization) ISO-C :1999 34
מחזו ר החי ים של ת וכ נה 1. ניתוח הבעיה (הגדרת הקלט והפלט הרצוי).2 תכנון - Design : i. מציאת האלגוריתם (algorithm) לפתרון..ii תכנון מבנה הנתונים..iii חלוקת האלגוריתם לתתי-מרכיבים. 3. מימוש : קידוד באמצעות שפת התכנות שנבחרה. 4. בדיקות,(testing) מציאת שגיאות ותיקונן.(debug) 5. שימוש ותחזוקה. כאשר כותבים תוכניות גדולות ומורכבות, שלב 4 הינו הארוך ביותר. ככל ששלבים 1,2 יסודיים יותר, כך שלבים 3 ו- 4 קצרים ופשוטים יותר. במקרים מסוימים (בעיות מורכבות) שלב (i) 2 הוא הקשה ביותר. 35
שפת C פותחה ע"י העשרים). דניס ריצ'י Ritchie) (Dennis במקור יוע דה לכת יבת מער כת הפעלה בשנות ה- 70 (של המאה (UNIX) ומהדר.(Compiler) זוהי שפה יעילה המאפשרת כתיבה עילית וירידה לפרטים ברמת הביטים (אם רוצים זאת). בשימו ש נרחב במגוו ן יי שומ ים הנדס יים. שפה זו הינ ה הבס יס ל- ++C, קל לשגות ב ה, ל-,Java ול- Ada. וקשה לאת ר ולתקן שג יאות א לה. זו השפה בה נתמקד בקורס זה 36
תוכנ ייה How a computer works? מבנה המחשב רקע כללי היסטוריה תוכנה רקע כללי ית ראש ונה בשפת C תוכנ 37
אי ך א ומ רים Hello World בשפת C? /* The traditional first program in honor of Dennis Ritchie who invented C at Bell Labs in 1972 */ #include<stdio.h> int main() { printf("hello World!\n"); return 0; } 38
תוכנ ית ר אשו נה בשפת C הגדרת הבעיה נכתוב ת כנית מחשב בשפ ת C הקוראת 10 מספרים מהמשתמש ומדפיסה את סכ ומם. הגדרת הבעיה: קלט: סדרה של 10 מספרים. פלט: סכום המספרים. 39
תוכנ ית ר אשו נה בשפת C תכנ ון האלגוריתם: אפס את הסכום. בצע 10 פעמים קרא את הערך הבא. הוסף ערך זה לסכום. הוצא את הסכום כפלט. מבנה הנתונים נזדקק לשלשה תאי זיכרון:.1 הסכום (sum) 2. המספר הנקרא הנוכחי (value) 3. מספר הערכים שקראנו עד כה (i) בחירת האלג וריתם ומב נה הנתו נים א ינה תל וי ה יש ירו ת בשפת התכנות. 40
תוכנ ית ר אשו נה בשפת C הקו ד #include <stdio.h> int main() { int sum = 0; RUN for(int i = 0; i < 10; ++i) { int num; scanf("%d", &num); sum += num; } printf("%d\n", sum); } return 0; 41
מקוד המק ו ר לתו כנ ית שרצה - התהליך קוד מטרה נוסף other.obj קוד מקור prog.c מהדר (קומפיילר) קוד מטרה prog.obj ספריה libc.lib ק שּ ר (linker) תוכ נ ית לב יצ ו ע prog.exe 42
סוגי שגי אות שגיאות תחביר Errors) (Syntax קוד מקור "בלתי חוקי": המהדר מגלה בקלות. &num); scanf("%d", החלפת השורה scanf("%d", &mum); בשורה תגרום לקבלת הודעה מהקומפיילר על כך שהמשתנה שגיאות משמע ות החלפת השורה בשורה החלפת השורה בשורה Errors) (Semantic קוד מקור חוקי אבל ש גו י: קשה יותר לג לות. שגיאות זמן ריצה Errors) (Run-time כגון חלוקה ב- 0 וכד': מתגלות בזמן הריצה. שגיאות לוגיות Errors) (Logical שגיאות בפיתוח האלגוריתם: לפעמים קשה מאד לסנן את כולן. Bug! scanf("%d", &num); scanf("%d", &sum); mum אינו מוגדר. תוביל לשגיאה בפעולת התוכנית, אך הקומפיילר לא יראה בה שגיאה printf("%d\n", sum); printf("%d\n", num); תגרום לקבלת הודעה מהקומפיילר על כך שהמשתנה num אינו מוגדר. (אולי אזהרה). רק בגלל מקום הגדרת num קבלנו שגיאת תחביר 43