לולאות ב-C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

לולאות ב-C


NiTRo37

Recommended Posts

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

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

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

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

קישור לתוכן
שתף באתרים אחרים

לגבי הסוגריים - אם יש לך בתוך ה-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 כאשר לא יודעים כמה פעמים כלומר שיש תאי עצירה

לדוגמה:

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

קישור לתוכן
שתף באתרים אחרים

ב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, ואז מחזיר את הערך הישן שלו.

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...