Download presentation
Presentation is loading. Please wait.
Published byVerawati Sanjaya Modified over 6 years ago
1
מבוא למדעי המחשב: o234114 (מדעי המחשב) o 234117 (הנדסת חשמל)
מבוסס על השקפים שנערכו ע"י שי ארצי, גיתית רוקנשטיין, איתן אביאור, סאהר אסמיר,מיכאל אלעד, רון קימל ודן רביב. עדכון אחרון: סמסטר חורף 2013
2
מבוא למדעי המחשב. כל הזכויות שמורות ©
מבוא למדעי המחשב? המטרה – פיתוח יכולת לפתרון בעיות בעזרת מחשב תרגולים: שפת תכנות C – הפן הטכני הרצאות: צורת חשיבה – פירוק משימות לגורמים, תכנון אלגוריתם המתאים לפתרון בעיה נתונה, בחינת ביצועים, ועוד. הקורס קל, כל החומר הנלמד בהרצאות והתרגולים יהיה מובן. הקורס קשה, נדרשת הסתגלות ל-שפה חדשה ולתפיסה שמאחוריה. נדרשת עבודת בית לשם לימוד ושליטה בחומר. האוכלוסייה בקורס לא הומוגנית – נלמד את היסודות. מבוא למדעי המחשב. כל הזכויות שמורות ©
3
מבוא למדעי המחשב. כל הזכויות שמורות ©
אדמיניסטרציה אתר הקורס: למידע על חומר עזר וספרים צוות הקורס, שעות קבלה תרגילי בית רשימת תפוצה, אמצעי קשר חומר נוסף באתר – שאלות ותשובות, תקציר המנהלות, ועוד. מידע נוסף בתרגול הראשון. מתרגל אחראי: גב אנסטסיה דוברובינה מרצה אחראי: פרופסור ניר אילון מרצים נוספים: דר תמיר לוי מר חביאר טורק מבוא למדעי המחשב. כל הזכויות שמורות ©
4
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנייה חומרת המחשב – רקע תוכנה – רקע צעדים ראשונים בשפת C How a computer works? * חלקים מפרק זה מבוססים על: מבוא למדעי המחשב. כל הזכויות שמורות ©
5
מבוא למדעי המחשב. כל הזכויות שמורות ©
חומרה (Hardware) אנו מוקפים מחשבים, Laptop, טלוויזיה, DVD, ipod , מכונית, מכונת כביסה, טלפון, ועוד. לכל אלו מבנה עקרוני משותף: Bus התקני אחסון אמצעי קלט CPU זיכרון ראשי אמצעי פלט מבוא למדעי המחשב. כל הזכויות שמורות ©
6
חומרה: המרכיבים השונים
Bus: ערוץ תקשורת פנימי שדרכו עובר מידע בין היחידות השונות. רוחבו מכתיב את מהירותו (לדוגמה, 64bits). CPU (Central Processing Unit - יחידת עיבוד מרכזית): אוסף רכיבים ומעגלים אלקטרוניים המנהלים את פעילות המחשב. יחידה זו מבצעת הבאת פקודות מהזיכרון, פענוחן, וביצוען. זיכרון ראשי (RAM memory): בו נשמרים הנתונים והפקודות של התכניות בזמן ביצועם. Random-Access-Memory – מהיר. המידע ברובו אינו נשמר כאשר מכבים את המחשב. מבוא למדעי המחשב. כל הזכויות שמורות ©
7
חומרה: המרכיבים השונים - המשך
זיכרון משני (hard disk, disk on key, cdrom): עליו נשמרת מידע משני שאינו נחוץ לפעולות המחשב המידיות. בעת הצורך מועבר מידע מהזיכרון המשני לראשי ולהפך. המידע בזיכרון המשני נשמר עד אשר מוחקים אותו. אמצעי קלט ופלט (I/O devices): התקני חומרה כדוגמת מקלדת, עכבר, מסך, מצלמה, מדפסת, אמצעי תקשורת וכיו"ב שבאמצעותם נקלטים נתונים הנחוצים לתכניות שמריץ המחשב ומוצגים (פלט) נתונים שמייצרות תכניות אלו. מבוא למדעי המחשב. כל הזכויות שמורות ©
8
חוק Moore להתקדמות בציוד מחשוב
עליה פי 100 כל כ-10 שנים – פקטור 1.6~ לשנה ניתן להראות גרפים דומים המתייחסים לגידול במהירותם ונפחהם של זיכרונות (RAM וכן Disk). מבוא למדעי המחשב. כל הזכויות שמורות ©
9
חוק Moore מקור: wikimedia
10
מבוא למדעי המחשב. כל הזכויות שמורות ©
CPU: קצב עבודה מחזורי הפקודות מבוצעים תחת פיקוחו של השעון הפנימי. מקובל לכן למדוד את מהירות ה – CPU על פי תדירות השעון (מספר הפעימות בשנייה). דוגמאות: Apple II (מתחילת שנות ה-80): MHz1~ (מיליון תקתוקי שעון בשנייה). מחשב 486 משנת 93': כ- 33MHz (33 מיליון בשנייה). מחשבי:Pentium IV 3.5GHz (כשלושה וחצי מיליארד בשנייה). טלפון סלולארי נוקיה 6680: 280MHz. iPhone 4S של Apple: 800MHz. ביצוע פקודה אחת עשוי להמשך מספר מחזורי שעון. מבוא למדעי המחשב. כל הזכויות שמורות ©
11
מבוא למדעי המחשב. כל הזכויות שמורות ©
מרכיבי ה- CPU ALU (Arithmetic Logic Unit – יחידה אריתמטית לוגית): זוהי יחידת החישוב המבצעת פעולות אריתמטיות (חיבור, כפל, ...). פעולות לוגיות (AND, OR). השוואת נתונים הנמצאים בזיכרון הראשי או ברגיסטרים. רגיסטרים (אוגרים): מספר יחידות זיכרון שהגישה אליהן מהירה במיוחד (מעין RAM מקומי וקטן בתוך ה-CPU). אחד הרגיסטרים משמש כ-program counter (המציין מהי הפקודה הבאה לביצוע). מבוא למדעי המחשב. כל הזכויות שמורות ©
12
מבוא למדעי המחשב. כל הזכויות שמורות ©
פעולת ה- CPU: דוגמה המטרה: חישוב B+C=A והשמת התוצאה ב- .C A, B, וכן C נמצאים ב- RAM. צעדי הפעולה: העבר תוכן A ל- R1, העבר תוכן B ל- R2, חבר R1 ל-R2, העבר התוצאה מ-R3 ל-C. ב- 4 צעדי שעון הושלמה פעולת חיבור ב- CPU. RAM תאי זיכרון A B C CPU ALU רגיסטרים R1 R2 R3 מבוא למדעי המחשב. כל הזכויות שמורות ©
13
מבוא למדעי המחשב. כל הזכויות שמורות ©
ארגון הזיכרון במחשב התקני זיכרון משמשים לכתיבת (שמירת) מידע ו/או לקריאתו (שחזורו). זיכרון פועל כטבלה, בה לכל תא כתובת אליה ניתן לגשת ולטעון ערך או לקוראו. סיבית (bit) הינה יחידת המידע הקטנה ביותר של הזיכרון במחשב. סיבית מקבלת ערכים בינאריים, כלומר 0 או 1. זיכרון מאורגן בבתים (bytes) בני 8 סיביות. בית: יחידת הזיכרון הקטנה ביותר בעלת כתובת. ניתן לפרש סדרה כזו כמספר הכתוב בבסיס 2. משמעויות נוספות שיתכנו: חלק מפקודה, ועוד. מבוא למדעי המחשב. כל הזכויות שמורות ©
14
מבוא למדעי המחשב. כל הזכויות שמורות ©
הזיכרון הראשי התקן זיכרון קטן (יחסית לדיסק) שהגישה אליו מהירה - הזיכרון הראשי בנוי משבבי זיכרון (chips). גודל הזיכרון (RAM) המקובל כיום למחשבים ביתיים הוא GB 1-12. MB= 220 bytes KB = 210 bytes GB = 230 bytes TB = 240 bytes גודל הזיכרון ב- Apple II היה KB 64. הזיכרון הראשי הינו RAM (Random Access Memory). בזיכרון מסוג זה ניתן לגשת לכל כתובת באופן ישיר, כלומר אין צורך לבצע מעבר על כל הזיכרון כדי להגיע לכתובת הרצויה. מבוא למדעי המחשב. כל הזכויות שמורות ©
15
ספירה בבסיס שתיים (בינארי)
דרך בנייתו של מספר עשרוני: ובאנלוגיה, המרה ממספר בינארי לעשרוני תיעשה ע"י 9 3 7 5 * 103 102 101 100 = 9375 1 * 23 22 21 20 = 10 מבוא למדעי המחשב. כל הזכויות שמורות ©
16
מבוא למדעי המחשב. כל הזכויות שמורות ©
וההמרה חזרה ... תרגום ממספר עשרוני לבינארי – 10 (עשרוני) = ? תרגום ממספר עשרוני למספר בינארי – גישה שונה: 20 22 21 23 25 24 1 1 מנה מנה מנה מנה / 2 / 2 / 2 / 2 1 2 5 10 שארית שארית שארית שארית 1 1 1 מבוא למדעי המחשב. כל הזכויות שמורות ©
17
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנייה חומרת המחשב – רקע תוכנה – רקע צעדים ראשונים בשפת C How a computer works? מבוא למדעי המחשב. כל הזכויות שמורות ©
18
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנה (Software) תוכנית מחשב הינה סדרת פקודות שנועדו לבצע משימה מסוימת. פקודות התוכנית, בשעת ריצתה, נמצאות בזיכרון הראשי. ב-CPU יש מנגנון אשר באופן סידרתי קורא פקודה, מפענח אותה ומבצעה. הפקודות מבוצעות בזו אחר זו, לפי סדר ישיבתן בזיכרון, למעט פקודות הסתעפות. מבוא למדעי המחשב. כל הזכויות שמורות ©
19
מבוא למדעי המחשב. כל הזכויות שמורות ©
מערכת ההפעלה מערכת הפעלה – תוכנה (אוסף תוכניות) אשר: מפקחת על ומנהלת את המחשב על התקניו, משאביו ומשימותיו. מאתחלת ביצוע משימות (תוכניות). מקצה משאבים למשימות (תוכניות). מערכת ההפעלה מתווכת בין התוכנה לחמרה. כשמחשב דלוק, מערכת ההפעלה בפעולה ומשרתת אותנו. דוגמאות: Linux מבוא למדעי המחשב. כל הזכויות שמורות ©
20
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנה: שפת מכונה שפת מכונה: השפה שמבין ה-CPU והיא משתנה בין מחשב למחשב. שפות מכונה מכילות פקודות בסיסיות מהסוגים הבאים: העברת נתונים בין הרגיסטרים ותאי הזיכרון. פעולות אריתמטיות ולוגיות. קפיצות והסתעפויות מותנות. שפת מכונה הינה שפה בינארית. פקודה לדוגמא: move from R1 to R2 מבוא למדעי המחשב. כל הזכויות שמורות ©
21
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנה: שפת אסמבלי (סף) שפת סף (Assembly) : ייצוג סמלי של שפת מכונה. למשל, אסמבלר: תכנית המתרגמת פקודות שפת סף לשפת מכונה בינארית. מה עושה התוכנית? #0, x #1, y #0, i #30, n y, t x, y t, x #1, i i, n loop mov add cmp bne loop: השם 0 במשתנה x השם 1 במשתנה y השם 1 במשתנה i השם 30 במשתנה n העתק את ערכו של המשתנה y למשתנה t הוסף את ערכו של המשתנה x למשתנה y העתק את ערכו של המשתנה t למשתנה x הוסף 1 למשתנה i השווה את המשתנה i עם המשתנה n ואם קטן יותר חזור מבוא למדעי המחשב. כל הזכויות שמורות ©
22
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנה: שפה עילית שפה עילית (C, Java, C++, Fortran, Pascal,....): דמוית אנגלית. פקודות מורכבות יותר מפקודות מכונה. תכנית בשפה עילית מתאימה לריצה על מחשבים שונים ואינה תלויה בשפת המכונה של מעבד ספציפי. compiler (מהדר): תכנית המתרגמת תכניות משפה עילית לתכניות בשפת מכונה של מעבד נתון. את קוד המכונה (קובץ הרצה) המתקבל ניתן להריץ פעמים רבות. x = 0; y = 1; i = 0; n = 30; do { t = y; y = y + x; x = t; } while(i++ < n); מה עושה התוכנית? y = 1, 1, 2, 3, 5, 8, 13, 21, 34, … i = 0, 1, 2, 3, 4, 5, 6, 7, 8, … מבוא למדעי המחשב. כל הזכויות שמורות ©
23
מבוא למדעי המחשב. כל הזכויות שמורות ©
שלב התרגום ושלב ההרצה מהדר תוכנית בשפת מכונה my_prog.exe תוכנית בשפה עילית my_prog.c שגיאות הידור (אם יש) תוכנית בשפת מכונה my_prog.exe פלט התוכנית קלט לתוכנית שגיאות הרצה מבוא למדעי המחשב. כל הזכויות שמורות ©
24
מבוא למדעי המחשב. כל הזכויות שמורות ©
מחזור החיים של תוכנה ניתוח הבעיה (הגדרת הקלט והפלט הרצוי) תכנון - Design : מציאת האלגוריתם (algorithm) לפתרון. תכנון מבנה הנתונים. חלוקת האלגוריתם לתתי-מרכיבים. מימוש : קידוד באמצעות שפת התכנות שנבחרה. מציאת שגיאות (debug), שימוש ותחזוקה. כאשר כותבים תוכניות גדולות ומורכבות, שלב 4 הינו הארוך ביותר. ככל ששלבים 1,2 יסודיים יותר, כך שלבים 3 ו- 4 קצרים ופשוטים יותר. במקרים מסוימים (בעיות מורכבות) שלב 2 (i) הוא הקשה ביותר. מבוא למדעי המחשב. כל הזכויות שמורות ©
25
מבוא למדעי המחשב. כל הזכויות שמורות ©
שפת C פותחה ע"י דניס ריצ'י (Dennis Ritchie) בשנות ה-70 (של המאה העשרים). במקור יועדה לכתיבת מערכת הפעלה (UNIX) ומהדר (Compiler). זוהי שפה יעילה המאפשרת כתיבה עילית וירידה לפרטים ברמת הביטים (אם רוצים זאת). בשימוש נרחב במגוון יישומים הנדסיים. שפה זו הינה הבסיס ל- C++, ל- Java, ול-Ada. קל לשגות בה, וקשה לאתר ולתקן שגיאות אלה. זו השפה בה נתמקד בקורס זה מבוא למדעי המחשב. כל הזכויות שמורות ©
26
מבוא למדעי המחשב. כל הזכויות שמורות ©
תוכנייה חומרת המחשב – רקע תוכנה – רקע צעדים ראשונים בשפת C How a computer works? מבוא למדעי המחשב. כל הזכויות שמורות ©
27
איך אומרים 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; } RUN מבוא למדעי המחשב. כל הזכויות שמורות ©
28
מבנה תוכנית בשפת 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; } RUN הכללת קובץ הערה הפונקציה main הדפסה למסך ע"י קריאה לפונקציה ערך מוחזר אנו נעבור על כל אחד ממרכיבי התוכנית בשקפים הבאים מבוא למדעי המחשב. כל הזכויות שמורות ©
29
מבוא למדעי המחשב. כל הזכויות שמורות ©
הערות הערה (Comment) – טקסט בתוך /* ... */ ההערה מתחילה בצירוף */ ומסתיימת בצירוף */ הערה יכולה להשתרע על פני מספר שורות דוגמה: לפי תקן C99 הערה היא גם טקסט שבא אחרי // עד לסוף השורה: /* In this part of the program we handle the computation of the final grades. */ // This is a comment a = b + c; // This is another comment מבוא למדעי המחשב. כל הזכויות שמורות ©
30
מבוא למדעי המחשב. כל הזכויות שמורות ©
פונקציות פונקציה (Function) – יחידת חישוב אשר יכולה: לקבל ערכים (פרמטרים) לחשב חישוב מסוים לבצע קלט/פלט (ודברים נוספים) להחזיר ערך בשפות אחרות משתמשים גם במונחים Procedure, Routine,... לכל פונקציה: הצהרה המתארת את שמה, הפרמטרים שהיא מקבלת ואת ערך החזרה. הגדרת גוף הפונקציה. הגדרה מכילה, בין היתר, את ההצהרה. לפני השימוש בפונקציה חייבת לבוא ההצהרה עליה. נרחיב את נושא הפונקציות בהמשך הקורס. פונקציה ערכי מוצא פרמטרי כניסה קלט\פלט מבוא למדעי המחשב. כל הזכויות שמורות ©
31
מבוא למדעי המחשב. כל הזכויות שמורות ©
פונקציות – דוגמה הצהרה בלבד: הגדרה: שם טיפוס מוחזר float power(float x, int n); שני פרמטרים float power(float x, int n) { float p; int i; p = 1.0; for (i=0;i<n;i++) p = p*x; return p; } מבוא למדעי המחשב. כל הזכויות שמורות ©
32
קבצי כותרת והכללתם ע"י #include
קובץ כותרת (Header File): קובץ בעל סיומת ".h" אשר מכיל הצהרות על עצמים חיצוניים. בתוכנית HelloWorld שראינו, ישנה הכללה של stdio.h כיוון שאנו משתמשים בפונקציה printf המוצהרת שם. ללא הכללה זו הקוד לא היה עובר קומפילציה כי הקומפיילר מצפה לראות הצהרה על הפונקציה לפני השימוש בה. #include<stdio.h> // מכיל הצהרות על פונקציות קלט-פלט #include<math.h> // מכיל הצהרות על פונקציות מתמטיות הנחיה להכליל קובץ כותרת מבוא למדעי המחשב. כל הזכויות שמורות ©
33
stdio.h – פלט חכם ע"י printf
פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה (פירוט בתרגול), ואחריה באים הערכים אותם יש לכתוב לפי הפורמט. כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה. מחרוזת הבקרה יכולה גם להכיל טקסט רגיל (ללא %) שיודפס כמו שהוא. ערך החזרה: מספר התווים שנכתבו, או מספר שלילי בעת כישלון. דוגמאות: printf("Just printing text.\n"); int i = 5; printf("The sum of %d and %d is %d", i, 2, 2+i); מבוא למדעי המחשב. כל הזכויות שמורות ©
34
stdio.h – קלט חכם ע"י scanf
פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה (פירוט בתרגול), ואחריה באים המשתנים אותם יש לקרוא לפי הפורמט. כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה. יש להוסיף & לפני שם המשתנה (נבין מדוע בהמשך). ערך החזרה: מספר הנתונים שנקראו בהצלחה, או -1 במקרה של כשלון. דוגמה: לא לשכוח את ה-& int i; double x; float y; scanf("%d%lf%f", &i, &x, &y); מבוא למדעי המחשב. כל הזכויות שמורות ©
35
מבוא למדעי המחשב. כל הזכויות שמורות ©
הפונקציה main תוכנית ב-C חייבת להכיל פונקציה אשר שמה הוא main. הביצוע המעשי של התוכנית יחל בפונקציה זו. בשלב זה נניח כי main אינה מקבלת פרמטרים. הערך המוחזר ממנה הוא "קוד סיום התוכנית". ערך זה מוחזר למערכת ההפעלה. 0: סיום בהצלחה שונה מ-0: בעיה כלשהי int main() { ... } מבוא למדעי המחשב. כל הזכויות שמורות ©
36
תוכנית ראשונה בשפת C – הגדרת הבעיה
הגדרת הבעיה: קלט: סדרה של 10 מספרים. פלט: סכום המספרים. מבוא למדעי המחשב. כל הזכויות שמורות ©
37
תוכנית ראשונה בשפת C – תכנון
האלגוריתם: אפס את הסכום. בצע 10 פעמים קרא את הערך הבא. הוסף ערך זה לסכום. הוצא את הסכום כפלט. מבנה הנתונים – נזדקק לשלשה תאי זיכרון: הסכום (sum) המספר הנקרא הנוכחי (value) מספר הערכים שקראנו עד כה (i) בחירת האלגוריתם ומבנה הנתונים בד"כ אינה תלויה בשפת התכנות. מבוא למדעי המחשב. כל הזכויות שמורות ©
38
תוכנית ראשונה בשפת C – הקוד
#include <stdio.h> int main() { int i, sum, value; sum = 0; for( i = 0; i < 10; i++ ) { scanf("%d", &value); sum = sum + value; } printf("%d \n", sum); return 0; RUN מבוא למדעי המחשב. כל הזכויות שמורות ©
39
תוכנית לסיכום מספרים – שיפורים
#include <stdio.h> int main() { int i, sum = 0, value, numbers_to_read; printf("Please enter number of values\n"); scanf("%d", &numbers_to_read); for( i = 0; i < numbers_to_read; i++ ) { printf("Enter the next integer: "); scanf("%d", &value); sum = sum + value; } printf("The sum of the %d numbers is %d\n", numbers_to_read, sum); return 0; RUN מבוא למדעי המחשב. כל הזכויות שמורות ©
40
תוכנית לסיכום 10 מספרים – בדיקת קלט
... printf("Please enter number of values\n"); scanf_result = scanf("%d", &numbers_to_read); if(scanf_result < 1) { printf("Failed reading the number of values\n"); return 1; } for( i = 0; i < numbers_to_read; i++ ) { printf("Enter the next integer: "); scanf("%d", &value); sum = sum + value; RUN איזה בדיקה נוספת כדאי לעשות? מה יקרה אם נכניס מספר שאינו שלם? מבוא למדעי המחשב. כל הזכויות שמורות ©
41
מקוד המקור לתוכנית שרצה - התהליך
קוד מקור prog.c מהדר (קומפיילר) קוד מטרה prog.obj קַשָּר (linker) קוד מטרה נוסף other.obj ספריה libc.lib תוכנית לביצוע prog.exe מבוא למדעי המחשב. כל הזכויות שמורות ©
42
מבוא למדעי המחשב. כל הזכויות שמורות ©
סוגי שגיאות שגיאות תחביר (Syntax Errors) – קוד מקור שאינו חוקי: המהדר מגלה בקלות. שגיאות משמעות (Semantic Errors) – קוד מקור חוקי אבל שגוי: קשה יותר לגלות. שגיאות זמן ריצה (Run-time Errors) – כגון חלוקה ב-0 וכד': מתגלות בזמן הריצה. שגיאות לוגיות (Logical Errors) – שגיאות בפיתוח האלגוריתם: לא תמיד מצליחים לאתר את כולן. החלפת השורה בשורה תגרום לקבלת הודעה מהקומפיילר על כך שהמשתנה num אינו מוגדר. sum = sum + value; sum = num + value; החלפת השורה בשורה תוביל לשגיאה בפעולת התוכנית, אך הקומפיילר לא יראה בה שגיאה. printf("%d \n", sum); printf("%d \n", value); Bug! מבוא למדעי המחשב. כל הזכויות שמורות ©
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.