Logo

רד-בורד: ארכיון

ראשי > תיכנות > תרגול של putchar ואורפוטרים ++

13/06/2006 19:41:06 Rx3vL0n
אוף אני מתחיל להתעצבן ולהתייאש הצלחתי לבנות רק תוכנית אחת בC וגם היא היתה רצח פשוטה
אז ניסתי לעשות משהו חדש
ניסתי לבנות תוכנית שהמשתמש מכניס ערך מספרי והוא יציג לו את המספר +1 כי שימוש בשני דברים שלמדתי לקראת הסוף (אני בקושי לומד=[ )
אז הנה הקוד שהתחלתי לבנות
קוד:#include <stdio.h>
int main()
{
int c=5;
putchar "c"
printf(Print: c = %d++/n )
}
והשגיאה שהוא נותן לי היא כזאת
In function `int main():
13/06/2006 20:12:26 jukka
הפונקציה putchar תפקידה להציג תו על המסך, ולא לקבל תו מהמשתמש.
קוד:#include <stdio.h>
void main()
{
char ch;
ch = getchar();
putchar(++ch);
}
14/06/2006 02:15:13 iTK98
שכחת פה הרבה דברים בסיסים, כמו שסיומה של
פונקציה\הוראה מסתיימת בנקודה פסיק (;). כמו
כן התחביר שלך שגוי במספר מקומות. שמחתי
שרשמת int main ולא כ jukka שרשם void main.
אך הקוד של jukka עדיין יעבוד וישיג את
המטרה שלך.
14/06/2006 08:14:43 Zen[o]r
אז ככה, int main() חייב להחזיר ערך!
שמע, קח ספר, ותשב עליו ברצינות, זה לא משהו שהולך ברגל, שב על זה ואתה תבין אני מבטיח, זה מאוד פשוט יחסית.
אם יש לך שאלות אתה מוזמן, קנה ספר ותלמד.
14/06/2006 13:29:34 jukka
אין לי מושג למה עדיף להשתמש ב- int main ולא ב- void main (אני אשמח אם תוכל להסביר לי, iTK98).
Rx3vL0n, אם אתה משתמש ב- int main אתה צריך להחזיר ערך כלשהו.

הקוד יראה כך:
קוד:#include <stdio.h>
int main()
{
char ch;
ch = getchar();
putchar(++ch);
return 0;
}
14/06/2006 16:50:31 iTK98
jukka, מה שמוזר, כאשר כתבת int main()
שמת בסוף הפונקציה return 0;.

עכשיו למה זה חייב להיות להיות int?
היום זה כבר פחות קריטי (בC בכל מקרה,
C++ לא תסלח לך על הטעות הזאת, ותאלץ
אותך לשנות את סוג הפונקציה ל int).

הפונקציה main מחוייבת (ע"פ ANSI-C) להחזיר
ערך חזרה לתוכנית\מעטפת שקראה לה, והערך
צריך להיות מסוג int. כמו שנאמר קודם, היום
זה כבר לא קריטי ואם תשתמש ב void כנראה
שהמעטפת לא תקרוס או תתקע. אך זה מה שהיה
בתיכנון, הפונקציה main צריכה להיות מסוג
int ולהחזיר ערך לתוכנות\מעטפת שקראה לה.

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

http://homepages.tesco.net/J.deBoynePollard/FGA/legality-of-void-main.html
http://users.aber.ac.uk/auj/voidmain.shtml
14/06/2006 16:51:07 ziv
קוד:
// התוכנה הזו מוגבלת במספר בין 0-8 במקרה 9 יש בעיה
#include <stdio.h>
int main()
{
char ch;
ch = getchar();
putchar(++ch);
return 0;
}


הבנאדם ביקש א’ ונתת לו ב’.
הוא ביקש תוכנה שמקבלת מספר ופולטת את המספר + 1 ואתה נתת לו תוכנה שמקבלת ספרה ופולטת ספרה(עם באג).
סך הכל הוא ביקש את התוכנה הבאה:
קוד:
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
printf("%d",++a);
}

ITK אין שום הבדל בין void ובין int כי מה שמוחזר הוא מספר לווינדוס שאני לא חושב שאכפת לו ממנו יותר מדי ואפילו עדיף void לפי דעתי.[ההודעה נערכה על-ידי ziv ב-14/06/2006 16:52:12]
14/06/2006 19:24:00 jukka
iTK98, אני יודע שב-CPP לא משתמשים ב-VOID, צריך להשתמש ב-INT (זאת בעצם ברירת המחדל של הפונקציה MAIN).
אבל לא ידעתי שב-C לא משתמשים ב-VOID לפונקציה MAIN משום שראיתי בהרבה מקומות שמגדירים את MAIN כ-VOID (תמיד טוב ללמוד משהו חדש )

ziv, אתה צודק במאה אחוז. התוכנית שכתבתי לא מבצעת חיבור מספרי, אלא לערך ה-ASCII. התבלבלתי משום שהנושא הוא "תרגול של putchar..." אז כל מה שעשיתי זה לתקן את התוכנית שהוא כבר כתב.
14/06/2006 20:18:57 ziv
זה שטויות... גם ב C++ אפשר לכתוב את main בתור void וזה לא יהיה משנה...
העניין של החזרת המספר למערכת ההפעלה זה כבר לא קיים.
לא משנה איזה מספר תחזיר לווינדוס לא יהיה אכפת.
מה שכן הוא ש...***אולי*** יש מערכת הפעלה שזה כן משנה לה אבל נו באמת! אף אחד לא סומך על תכנתים P:
15/06/2006 02:26:35 Rx3vL0n
הסיבה שהשתמתי דווקא בint main ולא בvoid main היא כזאת
זאת לא הפעם הראשונה שאני בונה תוכניות את חלקם גם העתקתי מסיבה אחת כול פעם שהייתי כותב void main היא שאני מקבל שגיאה
אתם יכולים לראות פה פוסטים שאמרו לי לכתוב במקום void main להשתמש בint main זו הסיבה
כי המהדר שלי לא מכיר כנראה את הפונקציה הזאת
(devc++ מי שמכיר)
בכול מקרה תודה אתם באמת צודקים אני ממש גרוע בC אבל לאט לאט אני ילמד
ובקשר לזה שהציע לי לקנות ספר אני חשבתי על זה לא מעט אבל אני מתלבט אם לקנות לPHP או לא C למרות שבPHP אני הרבה יותר מתקדם
לעומת C.
15/06/2006 13:14:13 tal
הממ, אני חושב שיש מספר תקנים לכתיבה וכל קומפיילר עובד על פי תקן אחר.. ישנם קומפיילרים שדורשים את החתימה
int main()
ויש כאלה שיכולים לקבל void...
זה תלוי בקומפיילר.. זה הכל..
15/06/2006 21:43:09 devil kide
רק בשביל הפרוטוקול אני חושב שיש קומפיילרים (dev c ) שיתמכו גם ב main() לבד.
15/06/2006 22:21:25 Ratinho
Rx3vL0n, אם ככה, עדיף לך לקנות c/++, PHP הרבה יותר קל, ואפשרי ללמוד מהאינטרנט, מאשר C...
15/06/2006 23:22:17 Rx3vL0n
אני מנסה ללמוד C וכמו שאתה רואה את הפוסט הזה זה לא ממש הולך לי
כנראה יש אנשים שהם יכולים ללמוד ולהבין דרך האינטרנט ויש כאלו שזה יותר קשה וצריכים לשבת על זה יותר ועם ספר זה ילך להם הרבה יותר קל
16/06/2006 13:01:52 Ratinho
C ממש ממש לא כדאי לך ללמוד מהאינטרנט..
תלמד מספר בצורה מקצועית.
ואני ממליץ לך להשיג visual c++
(אם אתה על ווינדוס) לדעתי זה הקומפיילר הכי נוח..
עמודים: 1