Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תיכנות בלינוקס - קימפול קוד C++ שנכתב במקור לקומפיילר בורלנד ...

ik_5 - 20/09/2003 - 17:07
נושא ההודעה:
שלום,

אני מנסה לקמפל עם קוד שנכתב בבורלנד C++ 4.5 בלינוקס, עכשיו היות והקוד נועד לשיעורים באוניברסיטה יש כמה חוקים "נוקשים" שחייבים להיות כאשר אני כותב קוד כזה.

הבעייה מתחילה כאשר gcc מודיע לי הוא לא מוכן לקבל דברים כגון:

void main
היות והוא אומר ש main חייב להחזיר ערך, בעוד שבאוניברסיטה מחייבים אותנו לא להחזיר ערך ולהשתמש ב void.
האם יש איזושהי הגדרה שאני צריך להגיד לקומפיילר לפני הנסיון לקמפל שכן יתן לי לבצע את הקוד הזה ?
ik_5 - 20/09/2003 - 17:40
נושא ההודעה:
אוקי גיליתי לבד (כמובן בדרך הקשה)
תקן אנסי ה#$%$ חייב להרוס Mad

חזרה לחרוש על גוגל לחפש עוד פתרונות
CooL_SPoT - 20/09/2003 - 18:00
נושא ההודעה:
אז משהו אצלכם לא בסדר
אתה צריך לעשות int main וכדי שהוא לא יחזיר אף ערך אתה רושם return 0 בסוף התוכנית
shlomi-l - 20/09/2003 - 18:22
נושא ההודעה:
void main ????
זה לא תיקני . אני לא יודע איפה אתה לומד , אבל אני במקומך הייתי מחפש מקום אחר ללמוד בו. Razz או לפחות הייתי כותב אימייל למרצים ומסביר להם שהם לא מלמדים C תיקני.

בכל מקרה , ההודעה שהקומפיילר מחזיר היא בסה"כ המלצה (warning( והקוד מתקמפל בלי בעיה.
קוד:

~$ echo "void main(){}" > moo.c
~$ gcc moo.c -o moo
moo.c: In function `main':
moo.c:1: warning: return type of `main' is not `int'
~$ ./moo
~$

ik_5 - 20/09/2003 - 18:45
נושא ההודעה:
כן אני יודע גיליתי את זה שזה לא חוקי... אבל מכריחים אותנו לעבוד ככה Confused

אני שונא תקנים.... תמיד יש משהו שחייב להפר אותם (MS, אוניברסיטה, חברות גדולות, או סתם מי שאוהב להתחכם) .....

ד"א אני לומד באוניברסיטה הפתוחה
Anonymous - 20/09/2003 - 18:46
נושא ההודעה:
מוזר, אני לומד עכשיו ספר על ANSI C, וכל תוכנית שם מתחילה כך-
קוד:
main()


שזה זהה כמובן ל-void main

גם לא קיבלתי שום אזהרה מ-gcc
Anonymous - 20/09/2003 - 18:51
נושא ההודעה:
ציטוט:

ב 2003-09-20 14:07, ik_5 כתב:
שלום,

אני מנסה לקמפל עם קוד שנכתב בבורלנד C++ 4.5 בלינוקס, עכשיו היות והקוד נועד לשיעורים באוניברסיטה יש כמה חוקים "נוקשים" שחייבים להיות כאשר אני כותב קוד כזה.

הבעייה מתחילה כאשר gcc מודיע לי הוא לא מוכן לקבל דברים כגון:

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

ניסית את kylix?
ik_5 - 20/09/2003 - 19:08
נושא ההודעה:
השימוש שלו ב wine הופך אותו להיות יותר כבד ממה שזה אמור להיות.... נראה עכשיו מה יהיה עם הבילדר החדש שבורלנד יוצרים ללינוקס שמשתמש בwxWindows
chenlevy - 20/09/2003 - 19:56
נושא ההודעה:
ציטוט:

ב 2003-09-20 15:46, Anonymous כתב:
מוזר, אני לומד עכשיו ספר על ANSI C, וכל תוכנית שם מתחילה כך-
קוד:
main()

שזה זהה כמובן ל-void main ...

ככל שידיעתי מגעת:
קוד:
main()

היא כתיבה מובלעת (implicit) של:
קוד:
int main()


Anonymous - 20/09/2003 - 20:27
נושא ההודעה:

למה אסור להשתמש ב void main


ציטוט:

ב 2003-09-20 15:46, Anonymous כתב:
מוזר, אני לומד עכשיו ספר על ANSI C, וכל תוכנית שם מתחילה כך-
קוד:
main()


שזה זהה כמובן ל-void main

גם לא קיבלתי שום אזהרה מ-gcc


תנסה לקמפל עם הדגלים :
קוד:
gcc -ansi -pedantic

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

יש רק ספר אחד על ANSIC וזה הספר של קרניגן וריצ'י.

אם אתה קורא ספר בעברית אז סביר להניח שמה שכתוב שם זה אוסף של שטויות.
תקרא את זה ותבין :
C and C++ books you don't want



Anonymous - 20/09/2003 - 20:34
נושא ההודעה:
מדובר כמובן על הספר של kernighan ו-ritchie

וקמפול עם void main לפי תקן ANSI אכן נתן שגיאה
אם ככה, איך מתייחס המהדר ל-main כשהוא מופיע לבד ?
Anonymous - 20/09/2003 - 21:25
נושא ההודעה:
אני לא יודע, נראה כאילו לכתוב main לבד , בלי void תיקני מבחינת gcc ... אולי הוא מתיחס לזה כאל int main כמו שנרמז פה בהודעות קודמות.

בכל מקרה, void main הוא ללא ספק לא תיקני לפי הFAQ
ik_5 - 20/09/2003 - 21:53
נושא ההודעה:
חבל שאי אפשר להעלות לכם פה תמונה, אחרת הייתי מראה לכם בדיוק מה הם כתבו
הבעייה היא שאם אני אוסיף את ה int עוד יש סיכוי שורידו לי ניקוד על זה....
ההבדל בין C ל C++ לפי התקן, זה שבC אין הזכר שחייבים לשים ערך חזרה ל main בעוד שבC++ יש הזכר שהוא חייב להיות int. בגלל זה הקומפיילרים מאוד "מבינים" לליבו של התכנת ששם void לmain.

Anonymous - 20/09/2003 - 22:24
נושא ההודעה:
אם היית קורא בלינק שניתן פה היית מבין ש main void זו לא סתם בעיית סינטקס אלא בעייה אמיתית שעלולה לגרום לכך שהתוכנה שלך לא תפעל במערכות הפעלה מסויימות. לדרך הכתיבה הזו יש השפעה לאופן שבו הקומפיילר מתרגם את התוכנית.
wliad - 20/09/2003 - 22:48
נושא ההודעה:
מספר הבהרות בנוגע ל-ANSI C:

Implicit type defenition:


החזרת 0 בסיום main:

הפונקציה הראשית של התוכנית main חייבת להחזיר ערך על-פי התקן של ANSI-C. הנורמה היא שכאשר התוכנית מסתיימת ללא תקלות מוחזר הערך 0. החזרת כל מספר אחר מציינת שקרתה שגיאה כלשהי.

פונקציות void main

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

בקומפיילר gcc נזרקת אזהרה בעת נסיון להדר קוד המכיל פונקציה ראשית אשר אינה מחזירה ערך, מאחר והקוד אינו תקני. אין זה "טבעי" שתוכנית תסתיים תמיד ללא שגיאה, ולכן באה אזהרה זו.
[addsig]
ik_5 - 20/09/2003 - 22:57
נושא ההודעה:
ציטוט:

ב 2003-09-20 19:48, wliad כתב:
מספר הבהרות בנוגע ל-ANSI C:

Implicit type defenition:
    כאשר אנו מגדירים פונקציה ללא הגדרת טיפוס הערך המוחזר, לדוגמא:
    קוד:
    main()
    {
    }
    הפונקציה מוגדרת כברירת מחדל בתור int ועליה להחזיר ערך.


החזרת 0 בסיום main:

הפונקציה הראשית של התוכנית main חייבת להחזיר ערך על-פי התקן של ANSI-C. הנורמה היא שכאשר התוכנית מסתיימת ללא תקלות מוחזר הערך 0. החזרת כל מספר אחר מציינת שקרתה שגיאה כלשהי.

פונקציות void main

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

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



אני מדבר על C++ בC יש הרבה קומפיילרים סלחניים שמוכנים לפרש את זה... זה אבל בנושא הספציפי הזה לא מעניין אותי ... הבעייה היא שאני נדרש ע"י אוניברסיטה שבאה ללמד אותי לתכנת ב C++ (למרות שיש לי ידע בשפה) ומלמדת אותי בניגוד לתקן דבר ש97 אחוזים מהקומפיילרים שניסיתי לא היו מוכנים לקבל את הכתיבה הזאת (רק 3 קומפיילרים וכולם ד"א של בורלנד !!! הסכימו, וזה C++ BUILDER 5, BC 5.51 Open command tools ו BC4.45) כל שאר הקומפיילרים, גדוגמת GNU, DJGPP ועוד כמה פחות ידועים ולמערכות הפעלה שונות שלא הסכימו לקמפל את זה.

הבעייה העיקרית היא שלפי הספר של ריצ'י (בC) יש לי את הספר באנגלית ד"א אין הזכר שאסור לשים void ו/או (אני מתחיל להרגיש כמו עורך דין) חייבים לשים integer, דבר שגורם לפרשנות מצד כותבי הקומפיילרים. מבחינת C++ כתוב במפורש בתקן (היה לי פה איפשהו לינק לגביו שאני לא מוצא) שmain חייב להחזיר ערך מסוג int.
wliad - 21/09/2003 - 00:46
נושא ההודעה:
תקן שפת ++C בדומה לזה של שפת C קובע כי הפונקציה הראשית חייבת להחזיר ערך שלם המהווה מספר השגיאה. אגב, גם התקן של שפת אסמבלר 80/86 קובע את אותו דבר ואכן אינטרפט סיום הריצה של תוכנית מחזיר Return Code.

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

עניין ה"חיוב" הזה מאד מרגיז אותי. אוניברסיטה היא מקום אשר אמור לדבוק ברוח האקדמית שהיא ביסודה מונחית על-ידי חופש החשיבה. הגבלות שכאלה, אין מקומן במוסד אקדמי. אשמח אם תציין באיזו אוניברסיטה מדובר.
[addsig]
ik_5 - 21/09/2003 - 00:56
נושא ההודעה:
מדובר באוניברסיטה הפתוחה...

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

ולמרות שאני חושב שgcc יחסית להרבה קומפיילרים אחרים שעבדתי איתם, די איטי וההרגשה שלי לפחות הוא לא גמור עד הסוף (כלומר חסר לי דברים שאני לא יכול להצביע עליהם מה בדיוק), הוא מאוד ידידותי למשתמש (בייחוד בהודעות שלו) והכי חשוב הוא עובד לפי התקן !!! ומעצבן למשל שלא נותנים אפשרות פיזית לעבוד איתו עם תמיכה מלאה, דבר כזה היה גם דורש מהאוניברסיטה לעבוד לפי התקן ולא ללמד דברים לא נכונים.
wliad - 21/09/2003 - 01:06
נושא ההודעה:
מספר דברים:

מקווה שזה מבהיר לך את הסוגיה.
[addsig]
ik_5 - 21/09/2003 - 01:56
נושא ההודעה:
התכוונתי שלינוקס ויוניקס תומכים בהרבה סוגי מעבדים יכול להיות שכתבתי את זה לא ברור .. ואני מצטער על כך...

כי היוניקס ה"ראשון" שלי היה שרת יוניקס של IBM ישן Smile זאת היתה הפעם הראשונה שלי Rolling Eyes עם העולם הזה....

ובקשר למהדרים, בבורלנד יש למשל אפשרות לקמפל לפי תקן "בורלנד" לפי תקן "יוניקס" לפי תקן אנסי ויש עוד איזה תקן אחד שאני לא זוכר בראש...
ומה שהתכוונתי הוא שדווקא בGCC ההקפדה על התקן היא יותר משמעותית ... עם פלאג אחד של -wall אני פותר הרבה בעיות Smile
shlomi-l - 21/09/2003 - 03:25
נושא ההודעה:
יש מקומות שבהם מלמדים לפי התקן, בטכניון למשל יש קורס מבוא לתכנות מערכות ושם יורידו לך נקודות והרבה אם תגיש תוכנית שמתחילה ב void main או אם לא כתבת לפי התקן ו gcc זורק לך הערות.

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

לסיכום, כתיבה לפי התקן היא הרגל טוב שאני ממליץ לאמץ.
CooL_SPoT - 21/09/2003 - 10:04
נושא ההודעה:
Smile זאת אחת הסיבות לדעתי שבחלונות יש יותר קריסות, קומפיילר לא תקני
ik_5 - 21/09/2003 - 13:30
נושא ההודעה:
זאת הסיבה (יותר נכון אחת מהן) למה אני שונה את שפות C ו C++ השפה שאני הכי אוהב לתכנת בה היא פסקל ויותר נכון פסקל מונחה עצמם (AKA דלפי). אבל זה כבר סיפור אחר... Smile לפחות שם התקן יותר מחמיר מהרבה דברים שקיימים בשפות הC למינהם (כולל C++ ואף ג'אווה)

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

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

בקיצור אני הולך להגיש את הממ"ן עם int ונקווה שלא ירדו לי מזה נקודות... מקסימום נראה כבר מה יהיה...

אני רוצה להגיד תודה רבה לכל התגובות והעזרה שנתתם לי פה :)

[ נערך על-ידי ik_5 בתאריך 21/09/03 10:31:26 ]
CooL_SPoT - 21/09/2003 - 13:37
נושא ההודעה:
ואל תשכח לעשות return 0 בסוף התוכנית
wliad - 21/09/2003 - 15:15
נושא ההודעה:
הערה קטנה: פסקל מונחה עצמים זאת הרחבה לשפת פסקל שביצעה בורלנד והיתה זמינה כבר עבור Turbo Pascal 6.0 (אם לא 5.0). לעומת זאת Delphi היא שפה נפרדת, בעלת סינטקס דומה לזה של פסקל - אך היא אינה פסקל ואף לא פסקל מונחה עצמים.

_________________
חתימה? אוקיי אבל שתהיה דיגיטלית LOL

[ נערך על-ידי wliad בתאריך 21/09/03 12:15:57 ]
Anonymous - 21/09/2003 - 15:23
נושא ההודעה:
אני מניח שלא יורידו לך נקודות.
סה"כ הבודק אמור לדעת שההנחייה שניתנה לכם היא לא לפי התקן.
מן הסתם הוא אפילו יתעצבן מחדש בכל פעם שהוא יראה בתרגילים
הצמד:
void main

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

גיל.

shlomi-l - 21/09/2003 - 16:56
נושא ההודעה:
ציטוט:

ב 2003-09-21 10:30, ik_5 כתב:

בקיצור אני הולך להגיש את הממ"ן עם int ונקווה שלא ירדו לי מזה נקודות... מקסימום נראה כבר מה יהיה...



אממ ... לא חבל? לא עדיף שתכתוב אליהם אימייל קודם ותשאל? מה המדיניות שלהם?
ik_5 - 21/09/2003 - 17:12
נושא ההודעה:
המדיניות זה לעשות את התרגילים לפי איך שהם מלמדים (אני חושב שזה בכל אוניברסיטה ככה)
הבעייה היא שזה לא רק לפי מרצה, אלא זה בתוך חומר הלימוד כגון, דפים, ספרים וכו .. וכאן מתחילה הבעייה, הרי אם הבעייה היתה רק במרצה אחד, אני בטוח שאני לא הראשון שנתקל בזה וכבר היו מטפלים בזה...

בקיצור נראה לי שהאוניברסיטה רוצה ליצור תקן משל עצמה (או לפחות זה יהיה עד שהם ילמדו אותנו מזה "פונקציות" כאילו שאנחנו לא משתמשים בזה עכשיו עם main)
Anonymous - 21/09/2003 - 17:31
נושא ההודעה:
רק לאחרונה החליטה בורלנד למתג את Delphi כשפה שונה מפסקל (לפני כחצי שנה כמדומני). היו אולי 4 הבדלים בין TP7 ל-Delphi 1. כך שקשה להגיד שבאופן מובהק שdelphi אינה פסקל.

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

Anonymous - 21/09/2003 - 17:34
נושא ההודעה:
חכה עד שתגיע ל"מבוא לתכנות מערכות ושפת C". הם מחייבים שם להשתמש ב-MS Visual C Sad
מצד שני, הצוות בקורס "הנדסת תוכנה ושפת עדה" היה נחמד ואישר לי להשתמש במהדר ללינוקס ולהגיש רק קבצי קוד מקור (ללא קבצי exe)
Anonymous - 21/09/2003 - 18:27
נושא ההודעה:
ציטוט:

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


יש לך את gpc .. קומפיילר פתוח לפסקל .. מבוסס על gcc .
ik_5 - 21/09/2003 - 20:31
נושא ההודעה:
טוב אישרו לנו להשתמש בצורה הרגילה של כתיבת ה main כל עוד אנחנו מסבירים בקוד למה אנחנו עושים ככה, ומזכירים את השם של מרכז המגמה הזאת באוניברסיטה Smile
Anonymous - 10/11/2004 - 11:40
נושא ההודעה:
ik_5 :
זאת הסיבה (יותר נכון אחת מהן) למה אני שונה את שפות C ו C++ השפה שאני הכי אוהב לתכנת בה היא פסקל ויותר נכון פסקל מונחה עצמם (AKA דלפי). אבל זה כבר סיפור אחר... Smile לפחות שם התקן יותר מחמיר מהרבה דברים שקיימים בשפות הC למינהם (כולל C++ ואף ג'אווה)

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

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

בקיצור אני הולך להגיש את הממ"ן עם int ונקווה שלא ירדו לי מזה נקודות... מקסימום נראה כבר מה יהיה...

אני רוצה להגיד תודה רבה לכל התגובות והעזרה שנתתם לי פה Smile

<font size=-1>[ נערך על-ידי ik_5 בתאריך 21/09/03 10:31:26 ]</font>


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

אני אישית בהערות התיעוד ציינתי והסברתי מדוע השתמשתי בint ולא בvoid, והמנחה לא הוריד נקודות, על אף שציין שבכל השנים שהוא מתכנת, לא נתקל במהדר שמסרב לvoid(לא מפתיע בהתחשב בעובדה שהוא הפנה את הסטודנטים לרפרנס של MSDN).

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

אני דואג לציין בעבודות כאשר יש צורך במשתנה שהגודל שלו קריטי מדוע בחרתי בint ואין צורך בlong. אף על פי שעוד לא קיבלתי את ציון הממ"ן השני, אני בספק אם המנחה, שמודע גם לבעיה הזו, יוריד ניקוד.
wliad - 10/11/2004 - 12:14
נושא ההודעה:
אמ זכרוני אינו מטעני, ההגבלות היחידות על גדלי המספרים השלמים גם ב C וגם ב ++C הן:
  1. sizeof(short) >= 8bit
  2. (sizeof(int) >= sizeof(short
  3. (sizeof(long) >= sizeof(int
  4. sizeof(long) <= Max word length
  5. (sizeof(long) > sizeof(short

pooh - 10/11/2004 - 21:49
נושא ההודעה: במכללת ת"א יפו גם משתמשים ב VISUAL
נותנים לך עותק של VISUAL SUDIO ושל XP או 2000.....

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

מקרה אחר היה שבקשו לבדוק האם CIN יכול לקלוט קלט מסוג:0X17 למשתנה, CIN של ++G לא ממש מקבל את זה.... CIN של VISUAL כן....
ביננו... יותר נוח לעבוד בלינוקס עם VI,BASH, MAN PAGE וכל התכונות היפות של SHELL PROGRAMING שמאפשר לי גמישות בעבודה, מה עוד ש VIM צובע טקסט לעיננין כולל מרכאות ומונע בלבול ושגיאות שVISUAL GDI לא מונע....

בכל מקרה יש לי גם קומפיילר G++,GCC בשרת של המכללה, שיש לנו גישה אליו ולסיפריות הבית שלנו והבית (SSH) רץ עליו SUNOS 5.4 ויש עליו גם BASH!
גם התקינו MANDRAKE 10 עם כל המחשבים, אבל לאף אחד שאני מכיר אין שם משתמש וסיסמא אליו (בטח רק אלה שעוברים קורס יוניקס)...
אני מקווה שהמכללה תשנה טיפה את דרכיהה.. נראה אולי אני גם אוכל לשנות משהו Wink
Anonymous - 10/11/2004 - 21:59
נושא ההודעה:
תמצא מקרה שבו התוכנית שלך לא עובדת נכון (לדוגמה: תבדוק מתי malloc/new נכשל) ובמקרה הזה תגרום לתוכנית לצאת עם ערך שגיאה.

נראה איזה מדריך יעז לטעון שאין צורך בערך החזרה של תוכנית במקרה הזה.
כל הזמנים הם GMT + 2 שעות