Lecture 1 Flashcards
Bus
ערוץ תקשורת פנימי שדרכו עובר מידע בין היחידות השונות.
רוחבו מכתיב את מהירותו (לדוגמה, 64bits)
CPU
CPU - Central Proccing Unit -
יחידת עיבוד מרכזית: אוסף רכיבים ומעגלים אלקטרוניים המנהלים את פעילות המחשב.
יחידה זו מבצעת הבאת פקודות מהזיכרון, פענוחן, וביצוען.
RAM memory
זיכרון ראשי:
• בו נשמרים הנתונים והפקודות של התכניות בזמן ביצועם.
• מהיר – Random-Access-Memory
• המידע ברובו אינו נשמר כאשר מכבים את המחשב
זיכרון משני
cdrom, disk on key, hard disk
• עליו נשמרים מידע משני שאינו נחוץ לפעולות המחשב המידיות
• בעת הצורך מועבר מידע מהזיכרון המשני לראשי ולהפך
• המידע בזיכרון המשני נשמר עד אשר מוחקים אותו
I/O devices
אמצעי קלט ופלט:
התקני חומרה כדוגמת מקלדת, עכבר, מסך, מצלמה, מדפסת, אמצעי תקשורת וכיו”ב שבאמצעותם נקלטים נתונים הנחוצים לתכניות שמריץ המחשב ומוצגים (פלט) נתונים שמייצרות תכניות אלו.
Moore Law
Moore’s law is the observation that the number of transistors in a dense integrated circuit doubles approximately every two years.
CPU :קצב עבודה
מחזורי הפקודות מבוצעים תחת פיקוחו של השעון הפנימי. מקובל לכן
למדוד את מהירות ה – CPU
על פי תדירות השעון (מספר הפעימות בשנייה)
דוגמאות:
1 .II Apple 1MHz ( ~מיליון תקתוקי שעון בשנייה)
2 .מחשב 486 משנת 93 :’כ- 33MHz) 33) מיליון בשנייה
3 .מחשבי IV Pentium :5GHz.3 (כשלושה וחצי מיליארד בשנייה)
4 .טלפון סלולארי נוקיה 6680 :280MHz.
.800MHz : Apple של iPhone 4S .5
ALU
Arithmetic Logic Unit יחידה אריתמטית לוגית - זוהי יחידת החישוב המבצעת – פעולות אריתמטיות (חיבור, כפל, ...) – פעולות לוגיות (OR, AND.) – השוואת נתונים הנמצאים בזיכרון הראשי או ברגיסטרים.
רגיסטרים
(אוגרים): מספר יחידות זיכרון שהגישה אליהן מהירה
במיוחד (מעין RAM מקומי וקטן בתוך ה-CPU.)
– אחד הרגיסטרים משמש כ-counter program (המציין מהי הפקודה
הבאה לביצוע).
bit
בעברית - סיבית
הינה יחידת המידע הקטנה ביותר של הזיכרון במחשב.
– סיבית מקבלת ערכים בינאריים, כלומר 0 או 1.
bytes
זיכרון - מאורגן בבתים בני 8 סיביות
בית: יחידת הזיכרון הקטנה ביותר בעלת כתובת
ניתן לפרש סדרה כזו כמספר הכתוב בבסיס 2
משמעויות נוספות שיתכנו: חלק מפקודה, ועוד.
זיכרון ראשי
התקן זיכרון קטן (יחסית לדיסק) שהגישה אליו מהירה - הזיכרון הראשי בנוי משבבי זיכרון
chips
שבבי זיכרון
Software
תוכנה
• תוכנית מחשב הינה סדרת פקודות שנועדו לבצע משימה
מסוימת.
• פקודות התוכנית, בשעת ריצתה, נמצאות בזיכרון הראשי.
• ב-CPU יש מנגנון אשר באופן סידרתי קורא פקודה, מפענח
אותה ומבצעה.
• הפקודות מבוצעות בזו אחר זו, לפי סדר ישיבתן בזיכרון,
למעט פקודות הסתעפות.
מערכת ההפעלה
• מערכת הפעלה – תוכנה (אוסף תוכניות) אשר:
מפקחת על ומנהלת את המחשב על התקניו, משאביו ומשימותיו.
מאתחלת ביצוע משימות (תוכניות).
מקצה משאבים למשימות (תוכניות).
• מערכת ההפעלה מתווכת בין התוכנה לחמרה.
• כשמחשב דלוק, מערכת ההפעלה בפעולה ומשרתת אותנו.
• דוגמאות - אנדרואיד, MSDOS, WINDOWS,
שפת מכונה
השפה שמבין ה-CPU והיא משתנה בין מחשב למחשב
שפות מכונה מכילות פקודות בסיסיות מהסוגים הבאים:
– העברת נתונים בין הרגיסטרים ותאי הזיכרון.
– פעולות אריתמטיות ולוגיות.
– קפיצות והסתעפויות מותנות.
שפת מכונה הינה שפה בינארית
שפת אסמבלי(סף)
ייצוג סמלי של שפת מכונה
אסמבלר
תכנית המתרגמת פקודות שפת סף לשפת מכונה בינארית
שפה עילית
שפה עילית Pascal, Fortran, C++, Java, C, Python -דמוית אנגלית -פקודות מורכבות יותר מפקודות מכונה -תוכנית בשפה עלילית מתאימה לריצה על מחשבים שונים ואינה תלויה בשפת המכונה של מעבד ספציפי
Compiler
מהדר - תוכנית המתרגמת תכניות משפה עילית לתכניות בשפת מכונה של מעבד נתון
את הקוד המכונה קובץ הרצה המתקבל ניתן להריץ פעמים רבות
שלב התרגום
- כתיבת תוכנית בשפה עילית prog.c
- מהדר compiler
- מקבלים תוכנית בשפת מכונה prog.exe
- שגיאות הידור אם יש נקראות compilation errors כלומר שגיאות בזמן תרגום = קומפילציה
שלב ההרצה
- תוכנית בשפת מכונה prog.exe
- קלט לתוכנית input
- פלט התוכנית output
- שגיאות הרצה אם יש נקראות runtime errors כלומר שגיאות בזמן הריצה
שפת C - רקע
• פותחה ע”י דניס ריצ’י (Ritchie Dennis) בשנות ה-70 של המאה ה-20
• במקור יועדה לכתיבת מערכת הפעלה (UNIX) ומהדר (Compiler)
• זוהי שפה יעילה המאפשרת כתיבה עילית וירידה לפרטים ברמת
הביטים (אם רוצים זאת)
• בשימוש נרחב במגוון יישומים הנדסיים.
• שפה זו הינה הבסיס ל- ++C ,ל- Java ,ול-Ada.
• קל לשגות בה, וקשה לאתר ולתקן שגיאות אלה.
– הרגלים נכונים בתכנות משפרים את המצב, ממש!
הערות - comments
טקסט בתוך
/* … */
ההערה מתחילה בצירוף */ ומסתיימת בצירוף /
הערה יכולה להשתרע על פני מספר שורות
לפי תקן 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
Function פונקציה
יחידת חישוב אשר יכולה: – לקבל ערכים (פרמטרים) – לחשב חישוב מסוים – לבצע קלט/פלט (ודברים נוספים) – להחזיר ערך בשפות אחרות משתמשים גם במונחים Routine, Procedure ועוד..
לכל פונקציה יש
– הצהרה המתארת את שמה, הפרמטרים שהיא מקבלת ואת ערך החזרה.
– הגדרת גוף הפונקציה. הגדרה מכילה, בין היתר, את ההצהרה.
לפני השימוש בפונקציה
חייבת לבוא
ההצהרה עלייה
לדוגמא:
double power(double x, int n); הפונצקיה מחזירה טיפוס double שמה power והיא מקבלת שני פרמטרים מטיפוסים שונים
קובץ כותרת
Header File קובץ בעלת סיומת "h." אשר מכיל הצהרות על עצמים חיצוניים. ללא ההכללה הקוד לא יעבור קומפילציה כי הקומפיילר מצפה לראות הצהרה על פונקציה לפני השימוש בה לדוגמא: stdio - מכיל הצהרות על פונצקיות קלט-פלט math - מכיל הצהרות על פונקציות מתמטיות
stdio.h פלט מעוצב printf
• פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה
ואחריה באים הערכים אותם יש לכתוב לפי הפורמט.
– כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה.
– מחרוזת הבקרה יכולה גם להכיל טקסט רגיל (ללא %) שיודפס כמו שהוא.
• ערך החזרה: מספר התווים שנכתבו, או מספר שלילי בעת כישלון.
h.stdio – קלט מעוצב ע”י scanf
• פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה
ואחריה באים המשתנים אותם יש לקרוא לפי הפורמט.
– כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה.
– יש להוסיף & לפני שם המשתנה (נבין מדוע בהמשך)
• ערך החזרה: מספר הנתונים שנקראו בהצלחה, או 1 -במקרה של
כשלון.
הפונקציה main
תוכנית ב-C חייבת להכיל פונקציה אשר שמה הוא main .הביצוע
המעשי של התוכנית יחל בפונקציה זו.
בשלב זה נניח כי main אינה מקבלת פרמטרים
הערך המוחזר ממנה הוא “קוד סיום התוכנית” ערך מוחזר למערכת ההפעלה.
מוחזר 0 = סיום בהצלחה אחרת יש בעיה כלשהי
מחזור החיים של תוכנה
- ניתוח הבעיה - הגדרת הקלט והפלט הרצוי
- תכנות - Desgin
מציאת אלגוריתם לפתרון, תכנון מבנה הנתונים, חלוקת האלגוריתם לתתי מרכיבים - מימוש
- מציאת שגיאות debug, שימוש ותחזוקה
debug
השלב של מציאת השגיאות - כאשר כותבים תוכניות גדולות ומורכבות השלב הזה יחד עם השימוש והתחזוקה הוא הארוך ביותר
ככל ששלב ניתוח הבעיה והתכנון יסודיים יותר
כך שלב המימוש ומציאת השגיאות קצרים ופשוטים יותר
Syntax Errors
שגיאות תחביר - קוד מקור שאינו חוקי - המהדר מגלה בקלות
Semantics Errors
שגיאות משמעות - קוד מקור חוקי אבל שגוי - קשה יותר לגלות. תוביל לשגיאה בפעולת התוכנית אך הקומפיילר לא יזהה אותה
Run Time Errors
שגיאות זמן ריצה כגון חלוקה ב 0 וכד’
Logical Errors
שגיאות לוגיות - שגיאות בפיתוח האלוגריתם - לא תמיד מצליחים לאתר את כולם
circuit
מעגל חשמלי