מה בעצם התפקיד של VOID בשפת C? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מה בעצם התפקיד של VOID בשפת C?


Lost Spirit

Recommended Posts

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

אפשר גם להגדיר מצביע שהוא void. זה מצביע בלי טיפוס מסויים ככה שאתה לא יכול לקדם אותו או לעשות לו dereference (כל דבר שמצריך מידע על הטיפוס). מה שאתה יכול לעשות זה להמיר אותו למצביע מהטיפוס שאתה רוצה. malloc למשל מחזירה מצביע ל void.

קישור לתוכן
שתף באתרים אחרים

למה כותבים void main () או אפשר פשוט main () ?

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

קישור לתוכן
שתף באתרים אחרים

למה כותבים void main () או אפשר פשוט main () ?

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

לכל פונקציה חייב להיות סוג.

ו-main בכלל אמורה להחזיר int...

קישור לתוכן
שתף באתרים אחרים

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

ומה זו הקמצנות הזאת על 4 אותיות מסכנות?

ככה כותבים ב-C, אם אתה לא אוהב את זה, אתה תמיד יכול לתכנת בשפות אחרות שבהן זה אחרת (:

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

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

גם ככה שום קומפיילר נורמלי לא יתן לקמפל main שלא מחזיר int..

קישור לתוכן
שתף באתרים אחרים

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

אני לא ממהר עם הקריאה כי -

א. אני מתקדם הרבה יותר מהכיתה, גם ביגע וגם בהבנה.

ב. אני משחק HL2EP2, Virtua Tennis 3, Test Drive Unlimited וכדומה :smile1:

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

זה לא שהתלמידים לא יכולים להתרים גם בזמן שביתה :screwy:

ותודה רבה לכולם :xyxthumbs:

---

ד"א, שאלה חשובה.

בתחילת השנה הציעו לנו ללמוד , המחנכת אמרה שזה ללא יחידות אבל זה ידע [מי אני שאתנגד לידע? כמובן שנרשמתי].

לאחר מכן המורים שמלמדים את זה אמרו זה 5 יח"ל , מה שאני לא מבין, כיצד ניתן לעשות 5 יח"ל תוך שנה אחת [אני יב']?!

זה הרי לא הגיוני :screwy:

שאלה #2 - מה בדיוק עושים ב'רובוטיקה'? משתמשים באסמבלי [או איזו שפה?] בשביל לתכנת למטרה מסויימת?

או ממש בונים את הרובוט ובנוסוף מתכנתים אותו?

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

שום דבר לא זז, וכשזה זה זז זה מאוחר מדי או זה כבר לא 'טוב מספיק'.

הבחינה ב9.12 [פסיכומטרי] ועוד לא התחלנו כלום :'( :'(

---

ולאחר הפריקה הזו, אשמח אם מישהו יענה לי :xyxthumbs:

קישור לתוכן
שתף באתרים אחרים

בספר למשל כותבים ללא void אלא ישר main() .

ולכן אני מעלה את השאלה, האם הvoid במקרה של void main מיותר?

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

f(int x, int y) {
// some code
}

הייתה תקפה, והייתה יוצרת פונקציה שמחזירה int. מכאן, שההגדרה הבאה:

main() {
// ...
}

הייתה תקנית.

חוץ מזה, יש קומפיילרים שלא מכריחים את ה-main להחזיר int, אלא מאפשרים לו לא להחזיר ערך (כלומר void). ולכן גם אפשר להגדיר

void main() {
// ...
}

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

קישור לתוכן
שתף באתרים אחרים

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

זה עוזר אם חושבים על void בתור משהו כמו


typedef struct { } void; /* <-- this is not the real definition, not legal C, do not use, just for illustration purposes! */

קישור לתוכן
שתף באתרים אחרים

אוקיי, תודה רבה לשניכם :xyxthumbs:

תוכלו בבקשה להתייחס לשאלות הבאות?

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

ד"א, שאלה חשובה.

בתחילת השנה הציעו לנו ללמוד , המחנכת אמרה שזה ללא יחידות אבל זה ידע [מי אני שאתנגד לידע? כמובן שנרשמתי].

לאחר מכן המורים שמלמדים את זה אמרו זה 5 יח"ל , מה שאני לא מבין, כיצד ניתן לעשות 5 יח"ל תוך שנה אחת [אני יב']?!

זה הרי לא הגיוני :screwy:

שאלה #2 - מה בדיוק עושים ב'רובוטיקה'? משתמשים באסמבלי [או איזו שפה?] בשביל לתכנת למטרה מסויימת?

או ממש בונים את הרובוט ובנוסוף מתכנתים אותו?

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

שום דבר לא זז, וכשזה זה זז זה מאוחר מדי או זה כבר לא 'טוב מספיק'.

הבחינה ב9.12 [פסיכומטרי] ועוד לא התחלנו כלום :'( :'(

---

ולאחר הפריקה הזו, אשמח אם מישהו יענה לי :xyxthumbs:

שוב תודה רבה לכולם ;)

קישור לתוכן
שתף באתרים אחרים

אין לי מושג. את ימי הבי"ס שלי גמרתי מזמן...

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...