עבור לתוכן

לולאות ב-C

Featured Replies

פורסם

יש לי בעיה קטנה....נו טוב , גדולה , במדעי המחשב - לולאות.

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

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

תודה רבה , ויום טוב :yelclap:

פורסם

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

אם אתה צריך משהו ספציפי יותר, נא לפרט.

פורסם
  • מחבר

אני מתקשה לכתוב את הפקודות אחרי ה

FOR

וכל זה.....ואני גם לא יודע איפה ואם בכלל לשים סוגריים מסולסלות ( {} ) המורה שלי אמרה שכן.....

פורסם

איך לכתוב את שורת הלולאה אתה יודע?

פורסם

לגבי הסוגריים - אם יש לך בתוך ה-FOR רק פקודה אחת, אתה לא חייב לשים אותן (מה שבא לך). אם יש יותר חייבים. אם אתה לא בטוח, פשוט תשים.

לגבי התנאים ב-FOR, אז אפשר להגיד שלולאת FOR שקולה ללולאת WHILE באופן הבא:

הקוד הזה:

for (A; B; C)
{
...
}

שקול לקוד הזה:

A;
while (B)
{
...
C;
}

ובאופן מילולי:

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

אח"כ, כל עוד התנאי B מתקיים, מתבצעות הפקודות שתחת ה-FOR (בתוך הסוגריים), ואחריהן מתקיים הקוד C.

C זה קוד שבדר"כ גורם לתנאי ב-B להשתנות.

כלומר הלולאה מתבצעת כך:

1. ביצוע A

2. בדיקה האם B הוא אמת (ערכו שונה מ-0). אם כן - עבור ל-3, אם לא - עבור ל-6.

3. ביצוע הקוד (...)

4. ביצוע C

5. עבור ל-2.

6. סיום

דוגמא - לולאה שמדפיסה את כל המספרים בין 1 ל-10:

int i;
for (i=1; i<=10; ++i)
{
printf("%d", i);
}

מה קורה פה? i מקבל את הערך 1, ואז כל עוד הוא לא מגיע ל-10, הוא מודפס, ואז ערכו גדל ב-1.

זהו פחות או יותר.

מקווה שהובנתי.

פורסם

רק הערה קטנה לגבי הקוד האחרון של מי שהגיב פה לפני:

במקום I++ תשים ++I -מה שאתה עושה זה להגדיל את I לפני שהלולאה רצה נראה לי(אני לא בטוח שהוא יתחיל ב 2) ולןכ צריך לשים את ה ++ אחרי ה I

פורסם

לא, אין הבדל.

פורסם

עוד הרחבה

משתמשים בלולאות FOR כאשר יש מספר ידוע של פעמים שצריך לבצע פעולה מסוימת

לדוגמה:

הדפסת כל המספרים מ1 עד 10

ומשתמשים בלולאות WHILE כאשר לא יודעים כמה פעמים כלומר שיש תאי עצירה

לדוגמה:

בדיקת אם הכלט שהמשתמש הכניס נכון או במילים פשוטות יותר תקינית כלט

פורסם

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

clang.eitan.ac.il

פורסם
  • מחבר

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

תודה רבה!

(צביקה אתה יכול להחליף את המורה שלי! ;D )

:yelclap:

פורסם

בC זה לא כל כך משנה אם אתה לא מבצע מספר קבוע של פעולות.

בעצם זה נותן כלי חזק יותר(מבחינתי כל שורה פחות מחזק את התוכנית).

p=head(l);

while(p!=end(l))

{

.....

p=next(l, p);

}

או פשוט יותר:

for(p=head(l);p!=end(l);p=next(l, p))

{

...

}

לא "מספר קבוע" של פעולות.

אני אוהב יותר את הצורה השניה.

פורסם

רק הערה קטנה לגבי הקוד האחרון של מי שהגיב פה לפני:

במקום I++ תשים ++I -מה שאתה עושה זה להגדיל את I לפני שהלולאה רצה נראה לי(אני לא בטוח שהוא יתחיל ב 2) ולןכ צריך לשים את ה ++ אחרי ה I

לא, אין הבדל.

כן ולא.

בעיקרון עדיף להשתמש ב-I++ על פני ++I (כלומר קודם להוסיף 1 ל-I, ואז להחזיר את הערך שלו).

למה?

כי במקרה הראשון, המעבד מגדיל את הערך של I ב-1, ואז מחזיר את הערך שלו וזהו.

במקרה השני, המעבד שומר את הערך של I בצד, מוסיף לו 1, ואז מחזיר את הערך הישן שלו.

וזה למעשה גורם להעתקה מיותרת של המספר.

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

ארכיון

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

דיונים חדשים