1 / 62

קורס תכנות – סמסטר א' תשס"ז

קורס תכנות – סמסטר א' תשס"ז. שיעור ראשון: מבוא לתכנות. מרצה: אמתי ערמון. www.cs.tau.ac.il/~armon/prog7a.htm l. "ענייני מינהלה". המרצה: אמתי ערמון email : armon@post.tau.ac.il שעת קבלה: יום רביעי 15-16 (אפשר גם בתיאום) בבניין שרייבר ב- open space (קומה 1-)

andren
Download Presentation

קורס תכנות – סמסטר א' תשס"ז

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. קורס תכנות – סמסטר א' תשס"ז שיעור ראשון: מבוא לתכנות מרצה: אמתי ערמון www.cs.tau.ac.il/~armon/prog7a.html

  2. "ענייני מינהלה" • המרצה:אמתי ערמון • email:armon@post.tau.ac.il • שעת קבלה:יום רביעי 15-16 (אפשר גם בתיאום) • בבניין שרייבר ב-open space (קומה 1-) • אתר הקורס (שבו יופיעו כל המצגות): www.cs.tau.ac.il/~armon/prog7a.html

  3. מטרות הקורס • היכרות בסיסית עם מבנה המחשב ויכולותיו • הכרת שפת תכנות: שפת C • שימוש בתכנות לפתרון בעיות

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

  5. הכל באתר הקורס • באמצעות אתר הקורס תוכלו למצוא את החומר שהועבר בשיעור ובתירגול, תרגילי הבית, פתרונות לתרגילי הבית, והודעות משתנות. כאמור הכתובת: www.cs.tau.ac.il/~armon/prog7a.html

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

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

  8. ספרים מומלצים • C How to program / Deitel and Deitel • A Book on C / Kelley and Pohl • The C Programming Language / Kernighan and Ritchie

  9. שאלות? קורס תכנות – "ענייני מנהלה"

  10. נושאי השיעור היום • הכרת המחשב • מבוא לשפות תכנות • שפת C – יתרונות וחסרונות • כלי פיתוח תוכנית • שלבי תרגום התוכנית • תוכניות לדוגמא

  11. מחשבים ותכנותם - מבוא אפשר כידוע לעשות הרבה דברים עם מחשב. למשל: • לשחק איתו שחמט/ברידג'/שש-בש/... • לעשות חישובים מתמטיים. • לראות סרטים. • לתכנן מטוסים. • לגלוש באינטרנט. • להשמיע מוזיקה. • לשלוח דואר-אלקטרוני. • להכין סרטי אנימציה. • לבצע עיבוד-תמלילים. • להכין מצגות. • ועוד ועוד....

  12. מחשבים ותכנותם - מבוא בנוסף, הרבה מאוד מכשירים מכילים בתוכם מחשב. למשל: • כספומט. • טלפון סלולרי. • ממיר טלוויזיה. • DVD. • מענה קולי. • מכונות-חטיפים. • מכוניות. • מטוסים. • לוויינים. • ועוד ועוד...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  33. - חלקי המחשב, חומרה ותוכנה - שפת מכונה ושפות עיליות - תרגום תוכנית משפה עילית - שאלות? סיכום ביניים

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

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

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

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

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

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

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

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

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

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

  44. תוכנית ראשונה – שאלות נוספות? מדפיסה Hello World #include <stdio.h> int main() { printf(“Hello World\n”); return 0; }

  45. תוכנית שניה: חישוב מספר השניות ביממה #include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }

  46. תוכנית שניה: חישוב מספר השניות ביממה את השורות האלה כבר הכרנו #include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }

  47. תוכנית שניה: חישוב מספר השניות ביממה #include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }

  48. תוכנית שנייה – שורה 4 int seconds, hours, minutes; • זאת "הגדרת משתנים". • השורה הזאת מגדירה שלושה מקומות בזיכרון, שהתוכנית תוכל לשמור בהם ערכים ולקרוא מהם את הערכים שאוחסנו בהם. לכל מקום כזה נותנים שם. • ההגדרה הזאת אומרת שערכי המשתנים האלה יהיו מספרים שלמים (מטיפוסint). • הגדרת משתנים, כמו פקודה, מסתיימת ב-;

  49. תוכנית שנייה – זיכרון seconds minutes hours תמונת הזיכרון לאחר הגדרת המשתנים

  50. חישוב מספר השניות ביממה #include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }

More Related