מבוא למדעי המחשב תירגול 1: מבוא 1
אתר הקורס webcourse.cs.technion.ac.il/234114 חדשות הקורס תרגילי בית חומר עזר, מבחנים קודמים, שאלות נפוצות, ועוד... הרצאות ותירגולים 2
אתר הקורס 3
רשימת תפוצה חובה להירשם! הודעות חשובות לפני הרישום לאתר הקורס עליכם להרשם לאתר grades כתובת האתר: https://grades.cs.technion.ac.il 4
אתר grades מספר זהות ססמת t2 שלכם אפשר לקבל עוד עזרה בקישור הבא: https://grades.cs.technion.ac.il/help.cgi#firststeps 5
רשימת תפוצה חובה להירשם! הודעות חשובות אתר הקורס ססמת t2 שלכם 6
שיעורי בית ינתנו שבועיים לפתרון בבודדים! 6 תרגילי בית 10% מהציון הסופי כולם חובה! הגשה אלקטרונית בלבד! )דרך האתר( - - 7
שיעורי בית אישור הגשה חשוב לשמור על קוד האישור של ההגשה האלקטרונית! 012345678 012345678.zip 8
חשוב לדעת! העתקות נבדק בתוכנה אוטומטית. דמיון חריג מועבר לבירור מול ועדת המשמעת של הטכניון. סמסטר קודם: 4 סטודנטים קיבלו 0 בשיעורי הבית והרחקה על תנאי לסמסטר. מותר לחשוב ביחד על דרך לפתרון לפני שיושבים על המחשב. אסור לכתוב קוד ביחד. אסור להסתכל בקוד של מישהו אחר. אסור לשלוח קוד שלי למישהו אחר. 9
חשוב לדעת! מילואים כל יום מילואים = יום דחייה בתרגיל. אנא פנו למתרגל האחראי על התרגיל לפרטים 10
מטרות הקורס.C הבנה בסיסית של מה זה מחשב. מה זו "שפת תכנות". איך כותבים תוכניות בשפת התכנות מה זה "אלגוריתם". איך להשוות אלגוריתמים. 11
מבנה המחשב Bus )ערוץ תקשורת בין הרכיבים( אמצעי פלט זיכרון CPU אמצעי קלט ראשי התקני זיכרון אחרים 12
מערכת ההפעלה רצה מרגע הפעלת המחשב ועד כיבויו שולטת על פעילות המחשב ורכיביו מקשרת בין החומרה לבין התוכנות המשתמשות בה מספקת למשתמש ממשק להפעלת וניהול המחשב 13
קבצים מידע קבצים זכרון 0101100 במחשב, מידע מורכב מאוסף סיביות. כל קובץ הינו רצף סיביות. בתוך מחשב יש מאות אלפי קבצים... איך אפשר לארגן כזו כמות של מידע? 14
קבצים שם של קובץ מורכב )בד"כ( משם, נקודה וסיומת. Extension סיומת Name שם הקובץ לדוגמה: my_file.doc מערכת ההפעלה מסתכלת על הסיומת וכך קובעת כיצד לפענח את תוכן הקובץ: טקסט ו- word ).txt.doc( תמונות.bmp( ).gif.jpg סרטים.mpg( ).avi מוזיקה.mp3( ).wav תוכניות ).exe( תוכנית היא בעצם אוסף פקודות בשפת מכונה 15
Windows ארגון קבצים - קבצים מאוחסנים בתוך מחיצות הנקראות כוננים Partitions) (Drives / לכל כונן יש שם המורכב מאות ונקודותיים )לדוגמה :C ) בתוך הכוננים, הקבצים מאורגנים בתוך תיקייה. תיקייה נקראת לפעמים "ספריה", או "מגירה" Directory) (Folder / כל תיקייה יכולה להכיל מספר כלשהו של קבצים וגם תיקיות אחרות. כונן תיקיות תיקיות קבצים 16
ארגון קבצים C: בראש העץ נמצאת "התיקייה הראשית", או "תיקיית השורש" של הדיסק. home my pictures song.mp3 מקובל להציג קבצים ותיקיות בשרטוט של עץ. ex2.c ex1.c progs my_dog.jpg my_cat.gif main.c ex1.c הארגון זה נקרא גם ארגון הירארכי. 17
מסלולים )path( C: לכל קובץ בתיקייה חייב להיות שם ייחודי, אך מותר שיהיו קבצים עם שמות זהים בתיקיות שונות. home my pictures song.mp3 לכן בשביל להתייחס לקובץ מסוים, לא מספיק לציין את שם הקובץ. ex2.c ex1.c main.c progs ex1.c כדי להתגבר על הבעיה, נציין את המסלול מהשורש עד לקובץ עצמו. המסלול המלא לקובץ my_dog.jpg my_cat.gif ex1.c הימני הוא: C:\home\progs\ex1.c מפרידים בין צעדים במסלול בעזרת התו "\". מהו המסלול לקובץ ex1.c האחר? 18
תיקיית העבודה C: לכל תוכנה, בזמן שהיא רצה, משוייכת תיקיית עבודה או תיקייה נוכחית. home my pictures כאשר התוכנה מנסה לפנות לקובץ אבל מציינת רק את שמו "הפרטי" בלי היררכיה, סימן שהקובץ אמור להימצא בתיקייה הנוכחית שלה. song.mp3 ex2.c ex1.c progs my_dog.jpg my_cat.gif main.c ex1.c אם התיקייה הנוכחית הינה C:\home\progs הקובץ ex1.c הימני הוא בתיקייה הנוכחית ולכן מתייחסים אליו כ: ex1.c מהו המסלול לקובץ ex1.c האחר? 19
מסלולים יחסיים path( )relative C: כאשר ניגשים לקובץ, ניתן )במקום לציין את שמו המלא( לציין את מיקומו ביחס לתיקייה הנוכחית. ex2.c home my pictures ex1.c progs main.c ex1.c my_dog.jpg לכן בשביל להתייחס לקובץ מסוים, ניתן לתת את המסלול היחסי החל מהתיקייה הנוכחית. song.mp3 מציינים עליה של שלב אחד בהיררכית התיקיות על ידי שימוש בשתי נקודות )..( בתור שם התיקייה. my_cat.gif המסלול היחסי לקובץ my_cat.gif הוא:..\.. \my pictures\my_cat.gif 20
שפת C ועבודה עם Code::Blocks 21
מהדר )Compiler( 01011001 RUN! צריך לתרגם בין שפות שפה עילית )שפת C( מהדר )"המתרגם "( שפת מכונה תוכנית תרגום נקראת מהדר )קומפיילר(. תהליך תרגום זה נקרא הידור )קומפילציה(. 22
כתיבת תוכנית בשפת C שפה שאנחנו מבינים כותבים תוכנית בשפת C ושומרים אותה בקובץ "c." מבצעים קומפילציה ומקבלים קובץ ".exe" המכיל פקודות מכונה שפה שהמחשב מבין מריצים קובץ ".exe" את כל התהליך הזה נבצע בעזרת.Code::Blocks 23
מה זה?Code::Blocks סביבת פיתוח חופשית וחינמית מלאה הכוללת: עורך לעריכת תוכניות )editor( מהדר )compiler( כלים לניפוי שגיאות )debugger( התוכנה תומכת בהרבה שפות תיכנות וביניהן, שפת C. כמו בכל תעשייה, יש תקנים שונים ל- C, אנו נעבוד עם תקן C99. ישנן גירסאות ל- Windows,,Mac OS X ו- Linux. 24
התקנת Code::Blocks בשביל לעבוד עם,Code::Blocks תצטרכו להתקין אותה עם תוספת )אשף- Wizard ( מיוחדת של הקורס. C99 צריך לכייל את Code::Blocks ידני! לעבודה עם באופן כל הוראות ההתקנה והעבודה, כולל התוכנה עצמה נמצאים באתר הקורס תחת.Course Material עוד עזרה תוכלו לקבל בשעות קבלה של המתרגלים. 25
עבודה עם Code::Blocks 26
כתיבת תוכנית חדשה.Project בתפריט,File ובחירה של New ואחר כך 234114 27
כתיבת תוכנית ראשונה בוחרים את האפשרות של תרגיל בית ולאחר מספר צעדים, מקבלים פרוייקט חדש לכתיבת התוכנית. בתוך העורך של,Code::Blocks הטקסט מופיע בצבעים שונים. לכל צבע יש משמעות נלמד על הפרטים בהמשך. בהמשך הקורס נכיר לעומק את כל הרכיבים של התוכנית הפשוטה הזו. 28
מריצים את התוכנית לוחצים על מקש F9 או כפתור )להדר ולהריץ( לפעמים העבודה מסתבכת ותצטרכו ללחוץ על Ctrl+F11 כדי להבטיח עבודה נקייה. Code::Blocks תהדר את התוכנית. אם אין בה שגיאות שמנעו מההידור להצליח, היא תיצור קובץ.exe ותריץ אותו. נראה את פלט התוכנית בחלון שייפתח: 29
שגיאות קומפילציה בדומה לעברית, גם בשפת C שגיאות אפשר. אם יש שגיאה בתוכנית, ההידור ייכשל, התוכנית לא תרוץ ואתם תקבלו את הודעה הבאה: תאור השגיאה הידור נכשל מספר כולל של השגיאות מספר שורה לחיצת על השגיאה תביא אתכם למקום השגיאה. חשוב: יש לתקן את השגיאות לפי הסדר )מלמעלה למטה(. 30
פתיחה של תוכנה קיימת ).c ניתן לשמור תוכנית שכתבתם File( )File Save ולהמשיך בזמן ומקום אחר. חשוב: כדי לפתוח מחדש יש ללחוץ על הקובץ הפרוייקט )עם סיומת ).cbp ולא בקובץ )סיומת אחרת הסביבה לא מוגדרת לפי דרישות הקורס ברוב המקרים עלול לגרום להורדת נקודות בתרגילי בית ניתן גם לפתוח מתוך )File Open( Code::Blocks כאשר שוב צריכים לבחור את הקובץ עם סיומת.cbp אם ב- Windows לא רואים את סיומות הקבצים, ניתן לשנות זאת. באתר הקורס מוסבר תחת כפתור.FAQ 31
הרצה של תוכנית: עבודה בתרגילי הבית 32
הרצה של תוכנית ראינו שניתן להריץ תוכנית מתוך.Code::Blocks ניתן גם להריץ קובץ.exe ישירות מתוך Windows ע"י.double click חסרון: חלון הפלט נסגר לפני שאנחנו רואים את התוצאה. דרך נוספת שנשתמש בה: הרצה מתוך חלון הפקודות של.)Command Prompt) Windows חלון הפקודות הוא זכר למערכת הפעלה קודמת של,Microsoft שנקראה.)Disk Operating System( DOS לכן, הפקודות שנקליד נקראות לעיתים "פקודות."DOS במערכות הפעלה אחרות, חלון זה נקרא.Terminal 33
Window 7 פתיחת חלון -DOS ומטה כדי להגיע לחלון הפקודות, לחצו על,Start בחרו באפשרות,Run הקישו: cmd ואח"כ לחצו על מקש.Enter 34
Windows 8 פתיחת חלון -DOS הגיעו למסך Start ע"י לחיצה על מקש ווינדוס והקלידו.cmd בחרו ב- prompt.command 35
פתיחת חלון DOS בתיקיה ספציפית פתחו את התיקיה )back כתבו cmd בשורה למעלה )ליד כפתור ה 36
עבודה בחלון הפקודות בחלון הפקודות ניתן להקליד פקודות שתבוצענה מייד על-ידי המחשב. אם החלון קטן מדי, הכתב לא קריא, DOS שונות, וכו': אפשר לעבור לעבודה במסך מלא על-ידי לחיצה על.Alt+Enter לחיצה נוספת על המקורי. Alt+Enter תחזיר את החלון למצבו 37
התיקייה הנוכחית כשמוצג בפניכם חלון הפקודות, המערכת ממתינה לפקודה. לפני כל פקודה, המערכת מספרת לנו באיזו תיקייה היא "נמצאת" כרגע. זהו המסלול מתיקיית השורש ועד לתיקייה הנוכחית. 38
מעבר בין תיקיות ניתן לעבור לתיקייה אחרת )"להחליף את התיקייה הנוכחית"( בעזרת פקודת.cd name יש להחליף את "name" בשם הספרייה מלא או יחסי..Change Directory קיצור של = cd שם ספרייה יחסי : שם ספרייה מלא : 39
שגיאות מה יקרה אם נקליד name" "cd לא קיימת? עבור שם של תיקייה קיבלנו הודעת שגיאה. לא קרה שום אסון; אפשר להמשיך ולהקליד פקודות אחרות. 40
מעבר לתיקיית האב שם התיקייה ".." )שתי נקודות( הוא שם מיוחד, שמייצג את התיקייה המכילה את התיקייה הנוכחית. כלומר, התיקייה שהתיקייה הנוכחית היא תת-תיקייה שלה; "תיקיית האב" של התיקייה הנוכחית. ניתן להשתמש בשם זה בפקודת למשל:.cd 41
תוכן התיקייה ניתן לראות את רשימת הקבצים בספרייה הנוכחית באמצעות הפקודה.DIR שימו לב ששמות הקבצים מוצגים עם הסיומת שלהם : ספריית האב ספריות קבצים 42
מעבר לכונן אחר על מנת להחליף את הכונן בו אנו נמצאים, נכתוב את האות שלו עם סימן : בסוף. DOS יעביר אותנו לכונן שבחרנו, לספרייה האחרונה שבה היינו בכונן זה: 43
הרצה של תוכנית כדי להריץ כל קובץ.exe מתיקיה הנוכחית יש להקיש את השם שלו וללחוץ.Enter לפי ברירת מחדל, Code::Blocks שומרת קבצי exe בתוך המסלול שבחרתם לתוכנית שלכם בזמן יצירתה. 44 מותר גם להקיש את שם הקובץ בלי סיומת ".exe" מקש TAB ינסה להשלים עבורכם שמות קבצים וספריות.
קלט/פלט אמצעי קלט תוכנית אמצעי פלט הכנסת מידע הצגת תוצאות כל תוכנית יכולה לקבל נתונים מהמשתמש כקלט כל תוכנית יכולה להציג נתונים למשתמש כפלט המקלדת והמסך הם ברירת המחדל לקלט ופלט 45
ניתוב קלט/פלט - Redirection מערכת ההפעלה מאפשר לכל תוכנית לקבל קלט מהמקלדת ולהוציא פלט למסך. במידה ומריצים את התוכנה מ- DOS, ניתן לגרום להחלפה זמנית של אלו )רק עבור אותה הרצה( באמצעות.redirection התוצאה הינה שבכל עת שהתוכנית אמורה לקבל קלט מהמקלדת, היא פונה במקום זאת לקובץ הקלט שציינו. באופן דומה, בכל עת שהתוכנית אמורה להדפיס פלט למסך, היא כותבת אותו במקום זאת לקובץ הפלט שציינו. 46
ניתוב קלט/פלט - Redirection קריאת הקלט מהקובץ in.txt במקום מהמקלדת: C:\Sfat-C> hw1q1 < in.txt כתיבת הפלט לקובץ out.txt במקום למסך: C:\Sfat-C> hw1q1 > out.txt שילוב של השניים )אין חשיבות לסדר(: C:\Sfat-C> hw1q1 < in.txt > out.txt C:\Sfat-C> hw1q1 > out.txt < in.txt 47
השוואת קבצי פלט DiffMerge הינה תוכנה שמאפשרת לגלות הבדלים בין קבצי טקסט דומים. חובה! לבדוק את תקינות הפלט שנתנו לכם עם מה שאתם יוצרים לפני הגשת התרגילים. קישור להורדה נמצא באתר הקורס תחת: Course Material - Code::Blocks 48
DiffMerge בחירה של קובץ 1 49
DiffMerge בחירה של קובץ 2 50
DiffMerge בחירה של קובץ 2 יש הבדלים! 51
בדיקת הקוד באתר הבדיקה בנוסף לבדיקת הקוד על המחשב שלכם, מסופק לכם אתר לבדיקת התרגילים שלכם. עליכם להעלות את הקוד שלכם לאתר: http://csm.cs.technion.ac.il/~cs234114/ ולהריץ. האתר יציג לכם איזה טסטים הקוד שלכם עבר ואיזה לא, וכן מה הפלט הרצוי. הקוד רץ באותה סביבה שבה אנו בודקים את התרגילים שלכם. ייתכן שתמצאו טעויות שלא יבואו לידי ביטוי על המחשב שלכם. שימו לב! חובה לבדוק את הקוד באתר הבדיקה לפני ההגשה. לא ניתן לערער על ציון של קוד שלא עובר את הטסטים שבאתר הבדיקה. 52
יצירת קובץ ZIP להגשה את העבודה תצטרכו להגיש בקובץ כל קבצי העבודה הנדרשים. ZIP שיכיל בתוכו רשימת הקבצים הנדרשים תצוין בהוראות התרגיל. אין להוסיף ספריות או קבצי.exe אם אין לכם תוכנה שמבצעת זאת, תוכלו להוריד תוכנת 7zip הנמצאת באתר הקורס. איך עושים? מעתיקים כל הקבצים להגשה בתוך תיקייה יוצרים את הקובץ ZIP 53
יצירת קובץ ZIP להגשה 54
סיכום: איך פותרים עבודות בית? חושבים איך פותרים על הנייר! הכי חשוב! פותחים.Code::Blocks פותחים פרוייקט חדש. כותבים את התוכנית ומפעילים את המהדר Ctrl+F11( או F9(. פותחים חלון.DOS משנים את הספרייה הנוכחית עם.CD מריצים את התוכנית עם.redirection משתמשים בקובץ הקלט לדוגמא שמופיע ביחד עם שיעורי הבית )בש"ב 0:.)expected.txt מוודאים שקובץ הפלט תקין DiffMerge( במקרה ויש לכם דוגמאות פלט(. חוזרים לשלב 7 ובודקים עם קלט שונה )חשוב לבדוק כל מיני אפשרויות, אתם יכולים לכתוב קבצי קלט ופלט משלכם בnotepad ( ממלאים קובץ students.txt עם הפרטים האישיים. מייצרים קובץ.zip עם הקבצים שהתבקשתם ומגישים באתר..1.2.3.4.5.6.7.8.9.10.11 55
תרגיל בית 0 תרגיל בית 0 פורסם: ניתן למצוא באתר הקורס. התרגיל נועד לבדוק שהתקנתם Code::blocks תקינה ואתם יודעים להגיש תרגילי בית. מומלץ להגיש את התרגיל בהקדם. בצורה חשוב: יש לקרוא את הוראות התרגיל וההוראות שניתנו במצגת זו. סטודנט שלא יעקוב אחרי ההוראות במדוייק כנראה יקבל 0. 56