סתם שאלה למתחילים

the1andtheonly

New member
סתם שאלה למתחילים

התחלתי לקרוא ספר והוא השתמש בפקודה מפתח , אבל שכח להסביר עליה. קוראים לה :for. ואני לא מבין מתי להשתמש בה. עוד בעיה שהוא שכח גם להסביר מה זה #ifndef #define הוא הסביר שזה הגנה מסויימת אבל לא הבנתי על מה...
 

IP yuval

New member
ספריים מסויימים מציגים על ההתחלה

רשימה של כל מילות המפתח בשפה. בד"כ ההסבר יבוא בהמשך הספר, אם לא (והספר מלמד C או C++), אז הספר הזה גרוע, וכדאי למצוא ספר אחר.
 

the1andtheonly

New member
הוא כן מנסה ללמד אותי אבל הוא זרק

עלי משהו משום מקום.... #ifndef.... הוא אמר לי שזה מגן על מה שאני בוחר... ואני לא מבין מה הוא רוצה מהחיים שלי. הוא גם הסביר לי על arrays וכמה שזה עוזר, אבל לא אמר ל-מה זה עוזר? בשביל מה אני צריך לעשות int f[3]=3,4,5.אני משתגע...
 

IP yuval

New member
אני מבין שזאת שפת התכנות הראשונה

שלך. אם כן, אני ממליץ לך את הספר "יסודות מדעי המחשב - יסודות 1" של מכון ויצמן. הוא מסביר את הכל מהתחלה, ובבירור, כולל הרבה תרגילים. הוא מלמד אמנם פסקל, אבל תוכל ללמוד שפות אחרות אח"כ. אחרי הספר הזה יש את "יסודות מדעי המחב - יסודות 2" שגם מומלץ.
 
טוב.../images/Emo26.gif

לגבי ה-define וה-ifndef - הייתי מתעלם ממהן בינתיים. תתייחס אליהן כאל "קופסאות שחורות". העובדה שאתה לא מבין את מהותן, לא תשפיע על לימוד יסודות השפה בשלב הזה. (ומצד שני - כדי להבין למה השתמשו בהוראות האלה שם - תצטרך ידע הרבה יותר עמוק ממה שיש לך כיום). לגבי for - זה כבר כן חלק מהותי משפת-התכנות (ומשפות תכנות בכלל). מתי להשתמש ב-for? עפ"ר כשאתה רוצה שאוסף קבוע של פקודות, יתבצע מספר פעמים. למשל - אתה רוצה שהתוכנית תדפיס "אני מלך!" 1000 פעמים. במקום לכתוב 1000 פעמים את השורה שמדפיסה "אני מלך!" - for מאפשרת לך "להגיד" לתוכנית: "תריצי את השורה הבאה 1000 פעמים"... סוג הפקודות האלה נקרא "לולאות". תתקל בהן עוד הרבה במהלך הלימודים.
 

pertal

New member
ועוד הסבר קטן על מערך

בעיקרון מערך מאפשר לך דרך נוחה לאחסון מספר רב של משתנים תחת אותו השם. לדוגמא במקום להגדיר 10 משתנים מסוג int כדי שיאחסנו ערכיםת אתה פשוג מגדיר מערך בן 10 איברים: int arr[10]; ואז פשוט ניגש אל התאים ומכניס להם ערכים (ד"א הספירה מתחילה מ0 עד מספר התאים פחות 1-ספירה זתומרת בגישה אליהם) מן התם אתה יכול ליצור מערכים של כל סוגי המשתניםץ אבל אתה קופץ עמוד מידי, עוד תטבע לי פהץ תתחיל לקרוא את הספר ותראה שתביןץ אלו דברים קלים מאוד יחסית למה שיבוא בהמשךץ
 

the1andtheonly

New member
בקשר לספרים

אני ישמח לקבל כמה ספרים למתחילים ואם אפשר זולים. ואני גם ישמח לקבל ספר שמלמד איך עובדים עם c++ ותלת מימד. וכמו שאמרתי שלא היו יקרים יותר מדי. תודה מראש.
 

Zack DA

New member
זה לא ספר שהתלמידים משתמשים

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

IP yuval

New member
כן, זה זה. אבל הוא מסביר את הכל

מרמה נמוכה (הידעת שיש למחשב דיסק קשיח?!), ויש בו הרבה תרגילים קלילים. למישהו שכבר יודע לתכנת, פחות או יותר, בשפת תכנות כלשהי אני ממליץ את The C Programming Language של K&R, אבל אני פשוט חושב שזה לא מתאים לאנשים שעוד לא מבינים מה זה משתנה או לולאה.
 

MC 16

New member
ועוד שאלה של מתחיל

קראתי ספר של c++ג€ עוד לא הספקתי ליישם כלום בגלל בעיה בקומפיילר הספר דיבר על ישומים ריקים סתומרת לא כמו ישומים רגילים של חלונות שיש בהם לחצנים וכאלה השאלה שלי איך עושים שהיישום יהיה כמו תוכנות רגילות של ווינדוס אני מקווה שלא תתעצבנו על הבורות פשוט אין לי מי שיסביר לי
 

HaRmosh

New member
אם אני זוכר נכון, את צריכה

להשוות כך:
CString s1 = "Hey"; Char *s2 = "Hey"; if (strcmp(LPCSTR(s1), s2) == 0) { // whatever }​
LPCSTR הוא אופרטור (סטטי, נדמה לי) של CString, שמחזיר עותק של מחרוזת CString בצורת *char.
 

the1andtheonly

New member
שאלה על המצביעים

ל-מה אני צריך מצביעים? כביכול הם יתנו לי את אותו מספר שהמשתנה יתן לי... אז למה אני צריך אותם?
 

HaRmosh

New member
מצביעים דרושים

בעיקר לצורך שינוי משתנים שמוגדרים בפונקציה אחת ע"י פונקציה אחרת. לדוגמה:
int main() { int a = 5, b = 7; int *aa = &a, *bb = &b; swap(aa, bb); } void swap(int* i, int* j) { int temp = *i; *i = *j; *j = temp; }​
בדוגמה מוסבר כיצד מחליפים תוכן של שני משתנים ע"י פונקציה שהמשתנים אינם מוגדרים בה. נסיון לשלוח את המשתנים רגיל (By Value), ולא דרך מצביע אליהם, היה מוביל לכך שרק בתוך הפונקציה השינוי היה מתבצע, על עותק זמני של המשתנים שנוצר בתוכה, ואילו מחוצה לה, בסיומה או תוך כדי ריצתה, לא הייתה שום השפעה על המשתנים. דוגמה רעה:
int main() { int a = 5, b = 7; swap(a, b); } void swap(int i, int j) { int temp = i; i = j; j = temp; }​
בדוגמה, i ו-j מייצגים בהתאמה עותקים זמניים בפונקציה של a ו-b, שהשינוי יתפוס לגביהם, ואילו במהלך הפונקציה ואחרי סיומה, ערכיהם של a ו-b לא ישתנו כלל. מקווה שעכשיו השימוש למצביעים קצת יותר ברור, ככה לפחות אני למדתי אותו....
 

the1andtheonly

New member
אז כעיקרון מצביעים

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

HaRmosh

New member
יש כמובן עוד שימושים,

אבל זה לדעתי הנפוץ ביותר. ואגב, תיגמל מ"מתוך ה-void". לא כל פונקציה היא void, יש גם פונקציות שמחזירות ערך.
 
למעלה