ABA


"בעיה שניתקלתי בה - לומד תיכנות באופן עצמאי"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20744 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20744
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   01:54   14.06.14   
אל הפורום  
  בעיה שניתקלתי בה - לומד תיכנות באופן עצמאי  
 
התחלתי ללמוד היום שפת c לפי ספר שwarez_man המליץ לי עליו, the big nerd ranch guide

הגעתי לעמוד 28 ולא הבנתי כמה דברים:
1. מתי משתמשים בסוגריים כאלו {} ?
2. boolean זה קיצור דרך באמצעות הסימנים (!,!!,&&? במקום לכתוב את הקוד בצורה ארוכה יותר?

הגעתי לאתגר בסוף הפרק וניתקלתי בבעיה בכתיבת הקוד

זו המשימה:

וזה הקוד שכתבתי:

מה הבעיה?

זה הבסיס של הבסיס אני יודע.. ,אשמח לעזרה, תודה רבה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  כנס :) afroman50 14.06.14 03:15 1
     תודה רבה אחי :) SHaLeV  14.06.14 09:43 2
         כנס.. inno3D 14.06.14 11:01 3
             תודה רבה אחי עזרת לי SHaLeV  14.06.14 11:38 5
                 בכיף, רק דבר אחד בנוגע לכתיבה.. inno3D 14.06.14 11:48 6
                     אוקיי, זה נראה תקין יותר? קריא יותר? SHaLeV  14.06.14 13:09 7
  ובלי קשר תמיד שאתה פותח סוגריים (מסולסלים או לא) תמיד תשים סוגר, תחזור לבפנים nimroder 14.06.14 11:15 4
  ראשית, כל הכבוד שהתחלת warez_man 14.06.14 17:51 8
     קודם כל תודה רבה אחי על כל העזרה, הספר ממש עוזר איך להתחיל את זה בכלל SHaLeV  14.06.14 18:18 9
         אנסה להסביר בפשטות warez_man 14.06.14 20:22 10
             מלך .. SHaLeV  14.06.14 23:21 11
                 הגעתי לפונקציות והבנתי את המטרה שלהן, SHaLeV  15.06.14 00:31 12
                     פונקציה זה קטע קוד warez_man 15.06.14 23:33 13
  עוד טיפ GaBrIeL 28.06.14 15:13 14

       
afroman50
חבר מתאריך 16.8.04
12555 הודעות, 1 פידבק, 0 נקודות
   03:15   14.06.14   
אל הפורום  
  1. כנס :)  
בתגובה להודעה מספר 0
 
אז בתור התחלה ה{} מסמנים פתיחה וסגירה של SCOPE, אתה צריך ללמוד עוד קצת מהספר וזה על הפנים אם לא הסבירו לך את המשמעות של SCOPE לפנ ישהתחחילו להשתמש בו.

1) כשאתה פותח IF אתה צריך להגדיר SCOPE שהIF הזה יהיה אחראי עליו, אחרת אם נחשוב על זה מבחינת היגיון - כל הקוד יהיה ב IF שלך וזה לא מה שאנחנו רוצים.

אז פתחת את הפונקציית MAIN עם } אבל לא סגרת אותו בסוף - אבל רגע סגרת! אה לא, סגרת את ה SCOPE של ה ELSE האחרון

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

2) http://stackoverflow.com/questions/1921539/using-boolean-values-in-c
בעיקרון בשפה המקורית אין משתנה מסוג boolean, ואם אתה עדיין לא בטוח מה סוג המשתנה הזה אומר בכלל אז זה מאוד פשוט:
זה משתנה עם אפשרות בינארית, או 0 או 1 כאשר 1 = TRUE ו 0 = FALSE.
תחשוב על סיטואציות בהן יהיה חשוב לך לבדוק או לקבל או להחזיר ערך של הצלחה או כישלון וזה כבר יסגור לך את הפינה בראש מבחינת ההיגיון מאחורי סוג המשתנה.

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

בהצלחה!!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   09:43   14.06.14   
אל הפורום  
  2. תודה רבה אחי :)  
בתגובה להודעה מספר 1
 
ערכתי לאחרונה בתאריך 14.06.14 בשעה 10:01 בברכה, SHaLeV
 
,

הצלחתי להריץ את התוכנה רק לא הבנתי כמה דברים,
1. שאני כותב ערכים אני פותח עם } ואחריי שסיימתי לכתוב את כולם אני סוגר עם { ?

2. בכל ערך של if, else אני פותח אותו וסוגר אותו?

3. מה שעשיתי נכון?

תודה אחי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   11:01   14.06.14   
אל הפורום  
  3. כנס..  
בתגובה להודעה מספר 2
 
   סוגריים מסולסלים אתה שם כאשר פקודה לוקחת יותר משורת קוד אחת.

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

הסוגריים לפני int i = 20 הם הסוגריים הפותחים את הפונקציה main.

שים לב שהסוגריים אחרי השורה int k = (i > j) ? 10 : 5
מיותרות, כי לפני הפקודה הבאה (פקודת ה if) אתה סוגר את הסוגריים ואין בתוכם קוד.

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

תכנות טוב זה להוסיף לכל if else while for סוגריים אפילו אם יש בתוכם רק פקודה אחת.
למשל, אפשר לכתוב


if (i > 5)
printf("i is bigger than 5");


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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   11:38   14.06.14   
אל הפורום  
  5. תודה רבה אחי עזרת לי  
בתגובה להודעה מספר 3
 
ערכתי לאחרונה בתאריך 14.06.14 בשעה 11:44 בברכה, SHaLeV
 

אחרי ״ניקיון״


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   11:48   14.06.14   
אל הפורום  
  6. בכיף, רק דבר אחד בנוגע לכתיבה..  
בתגובה להודעה מספר 5
 
   אני אוהב לכתוב את הסוגריים בשורה חדשה
לא כמו שכתבת פה וגם לא כמו שכתבו לך בספר

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

למשל אין סיבה שהפקודה int k = (i > j) ? 10 : 5 תיהיה עם רווח מתחילת השורה
וגם כל השורות if else אחריהם

בגדול, אם פתחת סוגריים מסולסלים, הפקודה הבאה תיהיה עם רווח של TAB


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   13:09   14.06.14   
אל הפורום  
  7. אוקיי, זה נראה תקין יותר? קריא יותר?  
בתגובה להודעה מספר 6
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nimroder לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 25.9.09
8557 הודעות, 4 פידבק, 8 נקודות
   11:15   14.06.14   
אל הפורום  
  4. ובלי קשר תמיד שאתה פותח סוגריים (מסולסלים או לא) תמיד תשים סוגר, תחזור לבפנים  
בתגובה להודעה מספר 0
 
   ותתחיל לכתוב את התוכן

ככה אף פעם לא שוכחים וזה שומר על סדר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
warez_man לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
3992 הודעות, 2 פידבק, 4 נקודות
   17:51   14.06.14   
אל הפורום  
  8. ראשית, כל הכבוד שהתחלת  
בתגובה להודעה מספר 0
 
   ובהצלחה!

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

בשפת C אין משתנה מסוג BOOL, אם רוצים משתנה שיסמן אמת או שקר משתמשים ב-int ומשימים לתוכו 0 או 1.

אבל בגלל שאתה עובד עם Xcode ועם הקומפיילר של Objective-C, תוכל להשתמש במשתנה מסוג BOOL שיכול לקבל YES או NO.

זה מה שהוא כותב בעמ' 24 למטה:

A variable that can be true or false is a boolean variable. Historically, C programmers have always
used an int to hold a boolean value. Objective-C programmers typically use the type BOOL for boolean
variables, so that’s what we use here. (BOOL is just an alias for an integer type.)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   18:18   14.06.14   
אל הפורום  
  9. קודם כל תודה רבה אחי על כל העזרה, הספר ממש עוזר איך להתחיל את זה בכלל  
בתגובה להודעה מספר 8
 
לגבי הbool עדיין לא תפסתי את זה, לא בדיוק הבנתי מה המטרה של זה, מתי להשתמש בזה וברמת העיקרון מה זה בעצם.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
warez_man לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
3992 הודעות, 2 פידבק, 4 נקודות
   20:22   14.06.14   
אל הפורום  
  10. אנסה להסביר בפשטות  
בתגובה להודעה מספר 9
 
   משתנה זה חלק בזיכרון שמוקצה כדי לשמור ערך מסוים.

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

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

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

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

אם אני רוצה משתנה שישמור שמות של אנשים, אבחר בטיפוס string (ב-C מסוג char* - תגיע לזה מאוחר יותר בספר), אפשר לאחסן בו שמות כמו "hello",
"SHaLeV".

את רשימת טיפוסי המשתנים בשפת C תוכל לראות כאן:
http://en.wikipedia.org/wiki/C_data_types

האמת היא שפגשתי את הספר הזה כשנכנסתי לעולם ה-iOS כדי ללמוד Objective-C, והוא גם נראה לי אחלה ספר כדי להתחיל לתכנת בכלל כשהיעד הוא אפליקציות לאפל.

הראש של הסופר הוא שהוא ילמד אותך C באופן יחסית מעמיק אבל קצר, ואז יצלול ל-Objective-C אחרי שיש לך כבר בסיס ב-C ואח"כ מה שצריך לדעת כדי לפתח אפליקציות.

אבל הגעתי לספר כשכבר היה לי רקע רחב ב-C וב-C++, אז אני מנסה להיכנס לנעליים שלך ולחשוב איפה ומה אתה מתקשה להבין

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   23:21   14.06.14   
אל הפורום  
  11. מלך ..  
בתגובה להודעה מספר 10
 
תודה רבה אחי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SHaLeV 
חבר מתאריך 8.12.04
1495 הודעות, דרג אמינות חבר זה
   00:31   15.06.14   
אל הפורום  
  12. הגעתי לפונקציות והבנתי את המטרה שלהן,  
בתגובה להודעה מספר 11
 
ברגע שיוצאת פונקציה ומתחילה לפעול היא פועלת עד שנכנסת פונקציה אחרת לפעולה, ברגע שהיא נגמרה הפונקציה שהתחילה ממשיכה את העבודה, נכון? ואם הבנתי נכון אז הפונקצייה שתמיד עובדת ראשונה ללא קשר למקומה בקוד היא main?

הגעתי לסיום הפרק של ה״כרטסיות״ וההסבר בסוף לא הכי מובן

זה הקוד שכתבתי לפי ההנחייה שלהם

זה ההסבר בסוף הפרק


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
warez_man לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
3992 הודעות, 2 פידבק, 4 נקודות
   23:33   15.06.14   
אל הפורום  
  13. פונקציה זה קטע קוד  
בתגובה להודעה מספר 12
 
   שנועד לבצע משימה מסוימת.

ראשית אתה מגדיר את המשימה (מגדיר את הפונקציה) ואח"כ מבקש לבצע את המשימה (קורא לפונקציה).

הבנת נכון, בהרצת כל תוכנית ב-C, ראשית תהיה קריאה לפונקציה main ומשם הקריאות לפונקציות האחרות שכתבת.

בקטע שהבאת הוא מתאר את מחסנית הקריאות בהקשר לקטע הקוד שכתבת, תוכל לקרוא עליה כאן:
http://he.wikipedia.org/wiki/%D7%9E%D7%97%D7%A1%D7%A0%D7%99%D7%AA_%D7%A7%D7%A8%D7%99%D7%90%D7%95%D7%AA


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
GaBrIeL
חבר מתאריך 13.4.03
3131 הודעות
   15:13   28.06.14   
אל הפורום  
  14. עוד טיפ  
בתגובה להודעה מספר 0
 
   בשביל לעשות סדר בסוגריים המסולסלים, כשאתה סוגר אתה יכול להוסיף הערה ולכתוב מה זה הסוגר הזה.
כלומר:


function()
{
code...
if (condition)
{
code...
} // end of if
code...
} // end of function


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net