Presentation is loading. Please wait.

Presentation is loading. Please wait.

מבוא כללי למדעי המחשב מבוא

Similar presentations


Presentation on theme: "מבוא כללי למדעי המחשב מבוא"— Presentation transcript:

1 מבוא כללי למדעי המחשב מבוא www.cs.tau.ac.il/courses/cs4math/10b
מרצה: סוני בן-שמעון

2 "ענייני מינהלה" המרצה: סוני בן שמעון דוא"ל: sonny@post.tau.ac.il
שעת קבלה: בתאום במייל בבניין שרייבר ב-open space קומה 1- אתר הקורס שבו יופיעו כל המצגות

3 מטרות הקורס מבוא למדעי המחשב כדיציפלינה מתמטית הכרת שפת תכנות: שפת C
שימוש בתכנות לפתרון בעיות אלגוריתמיות

4 תירגולים ותרגילים רוב התירגולים יערכו בכיתת-מחשבים, ומטרתם בעיקר תירגול מעשי של החומר שנלמד בהרצאות ומתן הזדמנות להתנסות מול סביבת העבודה החדשה. במהלך הקורס ינתנו בין ארבעה לחמישה תרגילי בית תכנותיים ותאורטיים אשר ציונם מהווה כ-20% מהציון הסופי בקורס. את התרגילים יש להגיש לבד ולפי ההוראות המופיעות באתר הקורס.

5 הכל באתר הקורס באמצעות אתר הקורס תוכלו למצוא את החומר שהועבר בשיעור ובתירגול, תרגילי הבית, הודעות משתנות וחומר עזר. כאמור הכתובת:

6 הציון בקורס 20% מהציון הוא ממוצע תרגילי-הבית (יש בקורס חובת הגשה). ההכנה וההגשה ביחידים. 80% מהציון הוא ציון בחינת הגמר (הבחינה היא על כל החומר, כולל הרצאות, תירגולים, ותרגילי-בית) ציון המעבר הוא 60 (גם בבחינה וגם בציון הסופי)

7 סילבוס – רשימת נושאי הקורס
טיפוסי נתונים בסיסים בC קליטת נתונים והצגתם פעולות אריתמטיות ב C פעולות לוגיות ב C משפטי תנאי if-else לולאות while , do-while , for פונקציות ושימוש בהן מערכים מחרוזות מצביעים הגדרת טיפוסי נתונים - structures הקצאת זיכרון דינאמית רשימות מקושרות סיבוכיות זמן ואנליזה אסימפטוטית רקורסיה מיונים אלגוריתמים נבחרים: מכפלת מטריצות קוד הופמן לקידוד

8 ספרים מומלצים The C Programming Language / Kernighan and Ritchie
Introduction to Algorithms / Cormen, Leiserson and Rivest

9 נושאי השיעור היום מושגים בסיסיים הכרת מכונת החישוב: המחשב
מבוא לשפות תכנות שפת C – יתרונות וחסרונות

10 מושגים בסיסיים מה זה מדעי המחשב? מויקיפדיה
מדעי המחשב הוא ענף מדעי העוסק בלימוד הבסיס התאורטי למידע ולחישוביות, והחלתם של אלה על מערכות מחשב. למדעי המחשב מספר רב של ענפי-משנה; חלקם מדגישים את היבטי החישוביות של תוצאות פרטניות (לדוגמה, גרפיקה ממוחשבת), אחרים עוסקים בחקר התכונות של בעיות חישוביות כלליות (לדוגמא, סיבוכיות), וענפי-משנה אחרים מתמקדים בפתרון הבעיות הכרוכות ביישום מעשי של חישובים ואלגוריתמים.

11 מושגים בסיסיים (המשך) מהו אלגוריתם? מויקיפדיה
אלגוריתם הוא דרך שיטתית (כלומר כזו שצעדיה מוגדרים היטב. לדוגמא, מתכון לעוגה) לביצוע של משימה מסוימת במספר סופי של צעדים. בדרך-כלל משמש מושג זה לפתרון בעיות במתמטיקה או במדעי המחשב. כל תוכנית מחשב היא אלגוריתם, או אוסף של אלגוריתמים. בהגדרה זו של אלגוריתם יש עמימות מסוימת. כדי לפזר עמימות זו יצר טיורינג את "מכונת טיורינג", שהיא "מכונה" המסוגלת לבצע כל אלגוריתם.

12 המשך... לביצועה של משימה מסוימת ייתכנו אלגוריתמים אחדים, מצב שמצדיק בחינה של יעילות האלגוריתמים, בהתאם למדדי יעילות נאותים.  במסגרת מדעי המחשב נבחנת יעילותם של אלגוריתמים  על-פי הזמן והזיכרון הנדרשים לביצוע האלגוריתם כפונקציה של גודל הקלט לאלגוריתם. דהיינו, ככל שזמן הריצה (מספר פעולות החישוב הבסיסיות אותן המחשב נדרש לעשות) או שטח הזיכרון הדרוש לריצתו של האלגוריתם ביחס לגודל הקלט קטן יותר, האלגוריתם ייחשב טוב יותר. דוגמאות לאלגוריתמים: מיון n אנשים לפי גובה. פעולה בסיסית השוואת גבהי שני אנשים מספר הפעולות n(n-1)/2 חיפוש שם בספר טלפונים המכיל n שמות לא ממוין: n ממוין: log n

13 מכונת החישוב: מחשב (אישי)
מסך מדפסת רמקולים מקלדת עכבר סורק כונן תקליטורים כונן דיסקטים דיסק-קשיח אמצעי פלט אמצעי קלט אמצעי קלט/פלט זיכרון מעבד ה"מוח" של המחשב

14 ה"מוח" של המחשב - פירוט הזיכרון:
אוסף של מיליוני או מיליארדי רכיבים אלקטרוניים זעירים. כל אחד מהם מסוגל לשמור מספר (בטווח מסויים(. (כידוע?!) כשמכבים את המחשב תוכן הזיכרון נמחק, בשונה ממידע שנשמר על כונן קשיח/ דיסקט/ תקליטור שנשאר גם אחרי שמכבים את המחשב. תאי הזיכרון ממוספרים (יש להם "כתובת").

15 ה"מוח" של המחשב - פירוט המעבד (CPU – Central Processing Unit):
אוסף של רכיבים אלקטרוניים זעירים. מסוגל לבצע פעולות בסיסיות על מספרים, כמו חיבור, חיסור, כפל, חילוק, שמירת מספר בזיכרון, קריאת מספר מהזיכרון, השוואת מספרים, וכדומה. מסוגל לבצע מיליארדי פעולות כאלה בשניה.

16 מה המחשב באמת יודע לעשות
כאמור, לבצע פעולות בסיסיות על מספרים (חיבור, חיסור, כפל, חילוק, השוואה, וכדומה). לקבל מידע והוראות כ-קלט ולתת מידע כ-פלט. כל המידע וההוראות מיוצגים במחשב כמספרים. לשמור את מה שהוכנס אליו ואת תוצאות העבודה שלו. לבצע פעולות בתלות בתוצאת פעולות אחרות. לשלב פעולות רבות, ע"י שמירת תוצאות-ביניים בזיכרון.

17 אופן הפעולה הבסיסי של מחשב
המחשב מקבל מידע והוראות כקלט ומאחסן אותם בזיכרון. המעבד מבצע הוראות שנמצאות בזיכרון עם הנתונים שמאוחסנים בו, ושומר בזיכרון את התוצאות. ההוראות מבוצעות לפי הסדר, אלא אם מתקבלת הוראה אחרת. התוצאות מוחזרות כפלט למשתמש במחשב. - מבוסס על "ארכיטקטורת פון-נוימן" (ארה"ב, 1946.(

18 אופן הפעולה הבסיסי של מחשב
קלט זיכרון פלט מעבד

19 חומרה ותוכנה כל החלקים הפיזיים של המחשב ביחד נקראים "חומרה".
כדי להשתמש במחשב צריך לתת לו את סדרת הפעולות שרוצים שהוא יבצע. לסדרת פעולות כזאת שמיועדת למטרה מסויימת קוראים "תוכנית מחשב" או "תוכנת מחשב". התוכנית צריכה להיות בשפה שהמחשב מבין (נסביר בהמשך). כשמדליקים את המחשב מופעלת תוכנה בסיסית שנקראת "מערכת ההפעלה" ומאוחסנת על הדיסק הקשיח של המחשב. מערכת ההפעלה היא התוכנה שמתווכת בין חלקי החומרה של המחשב, ובינם לבין תוכנות אחרות ולבין המשתמש במחשב.

20 חומרה ותוכנה במהלך הקורס נלמד ליצור תוכנות מחשב.
לצורך זה נלמד שפה שתאפשר לנו לתת למחשב הוראות לביצוע, שפה בשםC .

21 מבוא לשפות תכנות איך מתקשרים עם המחשב כדי ליצור תוכנה חדשה

22 מהי שפת תכנות? מויקיפדיה: שפת תכנות היא אוסף של חוקים תחביריים (Syntax) וסמנטיים Semantic)) שבאמצעותם ניתן להגדיר למחשב באופן מפורט את הפעולות שעליו לבצע במצבים שונים, על סוגי קלט שונים. המושג שפת מחשב (Computer Language ) הוא מושג רחב מאשר שפת תכנות (Programming Language) ולכן השימוש בו נפוץ יותר.

23 שפות תכנות: שפת מכונה השפה הבסיסית של המחשב: לפי זרמים חשמליים
המעבד מבצע פעולות בסיסיות, כמו פעולות חשבון, בהתאם לאותות חשמליים שהוא מקבל (חוזק הזרם בכל חיבור שלו קובע את הפעולה שתבוצע). במחשבים הראשונים כל פעולה בסיסית הצריכה הזזת מתגים חשמליים רבים כדי להעביר זרמים מתאימים (כמו שרואים בסרטים ישנים).

24 שפות תכנות: שפת מכונה הוראות כאלה למעבד יוצגו ע"י רצפים של 0/1-ים, שמייצגים אם מועבר זרם גבוה/נמוך בכל חיבור. לדוגמא כיום המחשב יודע לקרוא את הרצפים האלה (ההוראות) מדיסקים, CD ים, וכו'. אז אין צורך להזיז מתגים חשמליים, אבל זה עדיין מאוד מסובך ולא-פרקטי לכתוב תוכנית בשפת מכונה. כמו-כן, כל מעבד מכיר אך ורק את שפת המכונה שלו, ויתכנו שפות מכונה שונות למעבדים שונים.

25 שפות תכנות: שפת אסמבלי שפה בסיסית עם פקודות פשוטות באנגלית MOV R1 7
(MOV,ADD,PUSH), שכל אחת מהן מתורגמת לפקודת שפת-מכונה אחת על-ידי תוכנה בשם אסמבלר. באסמבלי לא צריך לכתוב את רצפי ה-0/1-ים, אבל גם בשפת אסמבלי מאוד מסובך לתכנת. MOV R1 7 R2 R1 AX MOV R2 9 9 7 16 ADD R1 R2

26 שפות תכנות: שפות עיליות
אלה שפות שכבר קצת יותר מזכירות אנגלית שפות עיליות לדוגמא: פסקל, בייסיק, , C, C++ וכו'. כל פקודה בשפה עילית מתורגמת בדרך-כלל לסדרת פקודות בשפת מכונה (לא רק פקודה אחת(. הן משתמשות גם בסימנים מתמטיים נדרש קומפיילר (מהדר) בכדי לתרגמן לשפת מכונה לכל שפה יתרונות וחסרונות והתאמה לישומים שונים

27 מאפייני שפת C - השפה העילית שנלמד
חסרונות יש מקרים בהם אותו סימן משמש לכמה משמעויות (ניראה בהמשך)‏ גישה "לקרביים" של המחשב (לפעמים זה פתח לטעויות)‏ יתרונות שפה פרוצדוראלית – מאפשרת הגדרת הוראות חדשות ("פונקציות")‏ מודולרית – מאפשרת שימוש חוזר בחלקים של תוכניות תאימות למחשבים שונים שפה יעילה (מהירות ביצוע)‏ באופן יחסי, נותנת גישה "לקרביים" של המחשב

28 כלים (תוכנות) שישמשו אותנו לתכנות
כדי לכתוב תוכנית בשפת C ניעזר בכמה תוכנות שכבר קיימות: Editor - תוכנה לכתיבת ועריכת התוכנית בשפת C (ה- source code). ) Compilerמהדר) – מתרגם את התוכנית משפה עילית לשפת מכונה ("object code") . Linker - מחבר כמה קבצי object (אחד או יותר) ומייצר קובץ הרצה (“executable”) יחיד (בשפת מכונה). Debugger- מאפשר הרצה מבוקרת של התוכנית פקודה- אחר-פקודה, לצורך בדיקה ותיקון.

29 שלבי יצירת התוכנית תוכנית C - כתיבת התוכנית Editor

30 שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler

31 שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler מחבר מספר קבצי object לקובץ הרצה Linker

32 שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler מחבר מספר קבצי object לקובץ הרצה Linker (exe) קובץ הרצה

33 שלבי יצירת התוכנית - כתיבת התוכנית Editor Compiler Linker
השלבים האלה נעשים אוטומטית על-ידי תוכנה קיימת שנכיר בתירגול. Linker (exe) קובץ הרצה

34 שלבי יצירת התוכנית - כתיבת התוכנית Editor Compiler Linker
השלבים האלה נעשים אוטומטית על-ידי תוכנה קיימת שנכיר בתירגול. הדבר העיקרי שנלמד בקורס יהיה איך לכתוב את תוכנית ה-C עצמה. Linker (exe) קובץ הרצה

35 Cאיך ניראית תוכנית-מחשב בשפת

36 תוכנית ראשונה בשפת C #include <stdio.h> int main() {
printf(“Hello World\n”); return 0; }

37 תוכנית ראשונה – שורה 1 #include – מאפשר שימוש בפעולות שנכתבו כבר ע"י מישהו אחר ונשמרו על-ידו בנפרד #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } stdio.h הוא קובץ ("ספריה") של פעולות שמטפלות בקלט/פלט (standard input/output)

38 תוכנית ראשונה – שורה 1 אז משמעות שורה 1: משתמשים בפעולות קלט/פלט שמפורטות בקובץ stdio.h. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } (הקומפיילר פשוט מצרף את הקובץ הזה לתחילת התוכנית שלנו לפני תחילת התרגום לשפת מכונה).

39 תוכנית ראשונה – שורה 1 אז משמעות שורה 1: משתמשים בפעולות קלט/פלט שמפורטות בקובץ stdio.h. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } באופן כללי, # מסמן עיבוד מוקדם, שהקומפיילר מבצע על התוכנית לפני תחילת התרגום לשפת מכונה (זה מבוצע ע"י חלק בקומפיילר שנקרא (preprocessor.

40 תוכנית ראשונה – שורה 2 שורה קבועה שבה מתחיל ביצוע תוכנית C. משמעותה: זאת "הפונקציה הראשית לביצוע". #include <stdio.h> int main() { printf(“Hello World\n”); return 0; }

41 תוכנית ראשונה – שורות 3+6 שורה קבועה שבה מתחיל ביצוע תוכנית C. משמעותה: זאת "הפונקציה הראשית לביצוע". #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } מייד אחריה יופיעו סוגריים מסולסלים פותחים, ובסיום סוגריים מסולסלים סוגרים.

42 תוכנית ראשונה – שורה 4 משתמשים בפעולה printf מתוך stdio.h
#include <stdio.h> int main() { printf(“Hello World\n”); return 0; } היא מקבלת רצף של תווים בין גרשיים כפולים, ומדפיסה אותם על המסך \nהוא סימון מיוחד שמסמן ירידת שורה. בסיום כל פקודה בגוף התוכנית יש לרשום ; אחרת הקומפיילר טועה בתרגום ונותן הודעת שגיאה.

43 תוכנית ראשונה – שורה 4 משתמשים בפעולה printf מתוך stdio.h
#include <stdio.h> int main() { printf(“Hello World\n”); return 0; } היא מקבלת רצף של תווים בין גרשיים כפולים, ומדפיסה אותם על המסך \nהוא סימון מיוחד שמסמן ירידת שורה. (כדי להדפיס את התו \ צריך לרשום printf(“\\”); )

44 תוכנית ראשונה – שורות 2+5 המילה int אומרת כאן שבסיום התוכנית יועבר למערכת ההפעלה מספר שלם (integer), שייצג את אופן סיומה מייצג סיום תקין. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } התוכנית מעבירה למערכת ההפעלה את הערך 0 עם סיומה (כך נעשה בסיום כל תוכנית(


Download ppt "מבוא כללי למדעי המחשב מבוא"

Similar presentations


Ads by Google