איפוס משתנים - C

pitbol3

New member
איפוס משתנים - C

שלום,

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

התוכנית בנויה מתחילתה על לולאה( do while).

מבדיקות שעשיתי בתוכנית גיליתי שאני צריך לאפס בתחילת הלולאה(כלומר מייד אחרי ה do) את כלל המשתנים המשתתפים בתוכנית,

כדי שלא יישאר בזכרון של המחשב ספרות של המשתנים ובכך יוציא פלט שגוי.

אני צודק בכך ?

* ד"א, לפני כמה ימים שאלתי פה אודות לימוד השפה באמצעות מכללה (בכדי "להעשיר" ידע), ולבסוף החלטתי ללמוד לבד, אז תודה על העזרה :)

תודה לעונים!
 

BravoMan

Active member
תראה את הקוד שלך...

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

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

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

אבל, לאפס משתנים בתוך לולאה זה סיפור אחר: האם אתה באמת צריך לאפס משתנה בכל מעבר של הלולאה?

למשל, אם יש לך לולאה שסוכמת את המספרים שהמשתמש מכניס, ויש לך משתנה sum שמחזיק את הסכום, האם התוכנה תוכל לעבוד אם תאפס אותו בתוך הלולאה?
 

pitbol3

New member
לא הבנת את שאלתי

אני אעלה את הקוד.

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

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

BravoMan

Active member
תנחומיי...

גם מכריכים אתם לעבוד ב-VS, וגם דוחפים לכם איזה קובץ פרויקט מוזר...

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

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

שים לב אגב, שאינך חייב להראות את כל הקוד, רק את הקטע הרלוונטי, ואם אתה בוחר להעלות קובץ, זכור שקובצי C הם בסה"כ טקסט פשוט, אז מספיק לשנות סיומת ל-txt כדי שתפוז יקבל אותם.

אל תנסה לצלם מסך ולדחוף את זה לקובץ doc או כל מיני דברים הזויים בנוסח הזה. הדבר לא מקובל בפורום ויקשה לעזור לך.
 

pitbol3

New member
מה רע ב VS?

וזה לא שיעורי בית שלי או משהו... זה סתם תרגילים שמצאתי מאתר של קורס כלשהו באונ'
 

BravoMan

Active member
מאיפה להתחיל...

ב-VS, יש הרבה דברים מעצבנים מאוד, אבל כדי להבין עד כמה היא באמת מעצבנת צריך לנסות את התחרות.

בד"כ מלמדים שפת C על לינוקס עם GCC - גם חופשי, גם קרוב יותר לסטנדרט של השפה, גם אין יותר מידי הסחות דעת מסביב.

אבל, אם אתה כבר רגיל ל-VS, אני מניח שזה לא כ"כ משנה...
 

nocgod

New member
אבל...:)

גם VS חופשי...VS חופשי בתור גרסאת אקספרס
ואם יש לך כתובת דוא"ל של מוסד אקדמי (כלומר ac.*) אתה יכול להוריד לעצמך VS2010/12 pro בחינם ממיקרוסופט ועוד המון תוכנות מלאות לשימוש. ככה שפה אני טיפה חולק עלייך.

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

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

BravoMan

Active member
חופשי זה לא חינם...

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

בנוסף, אני עדיין זוכר את הפעם הראשונה שראיתי Visual Studio.
ספציפית, 5 ++Visual C. הצלחתי לפתוח פרויקט חדש, אבל מרוב הקבצים המוזרים והרכיבים של הסביבה נהיה לי שחור בעיניים.

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

לא של-gcc אין 1001 הגדרות, ואפשר להגיע איתו לרמת מורכבות עצומה, אבל לצורך שיעורי בית אין סיבה לגעת ביותר מ-3 פרמטרים בסיסיים.
וגם הם נועדו רק כדי לעזור לתפוס שטויות שאתה עושה, והקוד יתקמפל זהה גם בלעדיהם.

אגב, gcc קיים גם ל-Windows ולא חייבים להתקין לינוקס בשבילו.

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

גם עבור Windows, יש סביבות גרפיות קלות יותר (שעוטפות GCC, איך לא) כמו Dev++ ו-CodeBlocks.
אפילו ל-Geany יש גרסה ל-Windows.

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

עד היום, על עמדת הפיתוח שלי בעבודה יש לי 2 גרסאות של VS (לפעמים 3), כי למרות כל הפרסומים ההמרה האוטומטית שלהם לא עובדת כמצופה 90% מהזמן, ושי פרויקטים שעד היום ממשיכים לתחזק ב-VS 6 כי ככה הם נוצרו...

(למזלי, אני צריך את כל אלא רק לעתים נדירות, ורוב הזמן עובד מ-Ubuntu)
 
למעלה