שאלות תרגיל בית 0

return or exit

return or exit

על ידי עידן שפר בתאריך
מספר תגובות: 3

שלום,

בהוראות התרגיל כתוב שצריך להחזיר 0 בכל מקרה.

האם הכוונה שצריך תמיד לעשות return 0 

גם במקרה שהתוכנה לא הסתיימה כמו שצריך למשל אם הוכנס תו לא תקין?

או שצריך לעשות exit במקרה כזה?

 

אני מנסה לפענח למה למרות שהפלט שלי זהה לגמרי לשלכם הdiff מפיל לי הכל וחושב שאולי זה הכיוון

בתגובה ל: עידן שפר

תשובה ל: return or exit

על ידי יורי פלדמן בתאריך

צריך לעשות return 0. אין להשתמש ב-exit

לגבי ה-diff תבדוק רווחים / סיומות שורות. אתה יכול להשתמש בדגלים -vet ל-cat ככה: diff file1 file2 | cat -vet

או להשתמש בעורך טקסט שיכול להציג תווים סמויים, כמו notepad++

בתגובה ל: יורי פלדמן

תשובה ל: return or exit

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

תודה והמשך שבוע נעים.
בתגובה ל: איתי נקאש

תשובה ל: return or exit

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

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

2. שימוש ב-exit זה רעיון גרוע כי זה יוצר מספר נקודות יציאה מהתוכנית (בנוסף ל-return מה-main). בזמן דיבוג (במיוחד של קוד שלא אתה כתבת או בדומה שכתבת לפני כמה שבועות) זה יהיה סיוט להבין באיזו מהנק' התוכנית יוצאת ולמה.  
בקורס אנחנו לומדים ליצור תוכנה שקופה וקלה לתחזוקה - חלק מזה זה לא להשתמש ב-exit.
אין להשתמש ב-exit בקורס.