פורסם 2007 במרץ 318 שנים אני לומד ++C והגעתי לIF וכתוב לי שיש כמה דרכים לכתוב IF:1)לכתוב כל הזמן IF דוגמא:if (X >Y) cout << "Go x !\n"; if (x< y) { cout << "Go y!\n"; cout << "Happy for you!\n"; } (if (x ==yIF (2 ולאחר מכן ELSE דוגמא:if ( (firstNumber % secondNumber) == 0) // evenly divisible? { if (firstNumber == secondNumber) cout << "They are the same!\n"; else cout << "They are evenly divisible!\n"; } else cout << "They are not evenly divisible!\n";קיצר אני רציתי לשאול במה עדיף להישתמש :1\2
פורסם 2007 במרץ 318 שנים תלוי מה אתה צריך. אם אתה צריך שהתנאי השני יתקיים רק במידה שהראשון לא התקיים, תשתמש בELSE. אם אתה סתם מבצע IFים בלי קשר לוגי אחד לשני, אל תשתמש בELSE.בדוגמא הראשונה שלך, כדאי להשתמש בELSE IF ובELSE, מכיוון שאם התנאי הראשון מתקיים או לא, זה משפיע בצורה כלשהי על התנאים האחרים.
פורסם 2007 במרץ 518 שנים רק לידע כלליהבעיה עם ה if והelse היא בעיה ידועה בc (טוב זה ידוע למי שלמד compilers או programing languages או קורס דומה באוניברסיטה ) הבעיה מושרשת מהעובדה ששפת תיכנות חיבת להיות context free שאומר שלכל ביטוי (statement )יש רק פירוש אחד. לif if else יש שני פירושים בגלל שהelse יכול להיות שייך או לif הראשון או לשני. בשפות אחרות לרוב יש פקודה שנקראת "endif " כמו ב preprocessor כדי לפתור את הבעיה ב C משתמשים ב {} כדי להיות ברורים.שפה שהיא לא context free ולכל ביטוי יש יותר מפירוש אחד נקראת context sensetive שאומר שהביטוי תלוי בתוכן שבא לפניו או יבוא אחריו . דוגמה לשפה כזאת היא השפה שבני האדם משתמשים בה. דוגמה פשוטה היא "יריתי באיש עם האקדח" האם האקדח שייך לי או לאיש שיריתי בו? ("I shot the man with the gun ")אפשר לענות על השאלה לפי המשפטים הקודמים (ראיתי איש עם אקדח/ שלפתי את האקדח )או המשפטים שיבואו (האקדח נפל לו מהיד / החזרתי את האקדח לנרתיק ) .עוד משהו שצריך להזהר איתו בC נקרא precedence אני לא זוכר איך עושים את זה בקומפילר אבל לרוב תמיד כדאי להכניס ביטויים לסוגריים . הנה דוגמה לביטוי ואלידי שלא יתבצע נכון בגלל הכללים של ה precedence : a&1==0זה בודק אם a הוא זוגי הבעיה היא שלפעולה == יש עדיפות על הפעולה & ומה שיקרה זה שהביטוי אף פעם לא יעבוד בגלל שהקומפילר רואה אותו ככהa&(1==0)במקום (a&1)==0אפשר לכתוב אותו בדרך אחרת או להוסיף סוגריים בשביל שהקומפילר יבין מה אתה רוצה בדיוק לעשות.
פורסם 2007 במרץ 518 שנים כמו ש UnsignedInteger אמר, לדעתי מאוד רצוי שבמשפט הראשון שלך יהיה else בגלל 2 סיבות:א. זה קצת יותר יעיל.ב. זה יותר קריא.ככה אני הייתי כותב אותו:if (x > y) statement;else if (x < y) statement;else statement; גם המשפט השני הוא לדעתי די מכוער, אני אישית הייתי בונה אותו ככה:if (firstNumber == secondNumber) cout << "They are the same!\n";else if ( (firstNumber % secondNumber) == 0 ) cout << "They are evenly divisible!\n";else cout << "They are not evenly divisible!\n"; לדעתי אפילו יותר טוב לתקוע שם משפט ?:
פורסם 2007 במרץ 618 שנים לי אמרו שתמיד אם אין ELSE יש לרשום הערה אם הסבר למה אין ELSE אחרת אתה בטוח עושה משהו לא נכון
פורסם 2007 במרץ 618 שנים לי אמרו שתמיד אם אין ELSE יש לרשום הערה אם הסבר למה אין ELSE אחרת אתה בטוח עושה משהו לא נכון אחרת מי שאומר לך את זה טועה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.