logo

For vs. While לולאה ב-C

הבנת ההבדל בין לולאת for ללולאת while

הצהרות האיטרציה ב-C++, כגון for loop, while loop, ו-do-while loop, מאפשרות לבצע קבוצה של הוראות שוב ושוב עד שהתנאי מתקיים, ולאחר מכן מסתיימות כאשר התנאי הוא false. להצהרות איטרציה יכולות להיות תנאים מוגדרים מראש, כגון בלולאת for, או תנאים פתוחים, כגון בלולאת while.

ב-C++, מגוון וריאציות לולאה 'עבור' משתמעות כדי להגביר את הישימות, העוצמה והגמישות של השפה. לדוגמה, לולאת for מאפשרת לנו לשלוט בלולאה על ידי שימוש במספר משתנים בתוכה, כמו גם שימוש בפונקציית ההתכנסות עם לולאת ה'for'. לעומת זאת, איננו יכולים להשתמש בווריאציות רבות עם לולאת ה-while; יש להשתמש בו עם התחביר הסטנדרטי.

ישנם כמה הבדלים משמעותיים בין לולאות for ו-while, אשר מוסברים עוד באמצעות טבלת השוואה.

For vs. While לולאה ב-C

עבור לולאה מוגדרת כ

ישנם שני סוגים של לולאות עבור ב-Java. הראשונה היא הצורה ה'מסורתית', ואילו השנייה היא הצורה 'לכל אחד'.

הצורה הכללית ביותר של הצהרת for loop.

 for (initialization; condition; iteration) { //body of for loop } 
    אִתחוּל:משתנה הבקרה של הלולאה של לולאה מאוחל רק פעם אחת, במהלך האיטרציה הראשונה של הלולאה. משתנה בקרת הלולאה מאותחל כאן; אם לא נעשה יותר שימוש במשתנה הלולאה בתוכנית והוא משמש רק כמשתנה השליטה של ​​הלולאה, הוא גם מוכרז וגם מאותחל בלולאת 'for'.מַצָב:התנאי של הלולאה 'for' מבוצע בכל פעם שהלולאה עוברת איטרציה.
  • משפט האיטרציה הוא ביטוי שמגדיל או מקטין את משתנה השליטה בלולאה.

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

ב-Java, הצהרות האתחול והאיטרציה יכולות להכיל שתיהן הצהרות מרובות. פסיק מפריד בין כל משפט; ב-Java, פסיק הוא מפריד; ב-C++, פסיק הוא אופרטור שניתן להשתמש בו בכל ביטוי חוקי.

התחביר של לולאה לכל אחד

הטופס 'לכל אחד' הוא גרסה מתקדמת יותר של לולאת for. הלולאה של כל אחד לובשת את הצורה הכללית הבאה.

 for(type iter_variable: collection) statement-block 

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

דוגמא

ישנם סוגים שונים של אוספים שניתן להשתמש בהם עם לולאת for. בואו נדבר על זה באמצעות מערך כאוסף.

רִבּוּב
 public class Main { public static void main(String[] args) { int array[]={10, 20, 30, 40, 50, 60}; int add=0; for( int c: array) { System.out.println( 'value in c ' + c); add = add+c; } System.out.println('additon of array elements is ' +add); } } 

תְפוּקָה:

 value in c 10 value in c 20 value in c 30 value in c 40 value in c 50 value in c 60 additon of array elements is 210 

'c' הוא משתנה איטרציה במקרה זה; הוא מקבל את הערכים ממערך[], אחד אחד, מהאינדקס הנמוך עד הגבוה ביותר במערך. הלולאה חוזרת עד שכל האלמנטים של המערך נבדקים. ניתן לשבור את הלולאה באמצע באמצעות 'שבירה'. לשינוי במשתנה האיטרציה, לעומת זאת, אין השפעה על המערך מכיוון שהוא משתנה לקריאה בלבד.

בעוד לולאה מוגדרת כ

לולאת ה-while היא הלולאה הבסיסית ביותר גם ב-C++ וגם ב-Java. פעולת לולאת while דומה ב-C++ וב-Java.

תחביר

להלן הצהרת לולאת while:

 while ( condition) { statements; //body of loop } 

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

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

דוגמא

בואו נסתכל איך עובדת לולאת while. הקוד בדוגמה למטה יודפס מ-1 עד 10.

 public class Main { public static void main (String args[]) { int n=0; while(n<10) { n++; system.out.println('n=" +n); } } } &lt;/pre&gt; &lt;p&gt; &lt;strong&gt;Output:&lt;/strong&gt; &lt;/p&gt; &lt;pre&gt; n=1 n=2 n=3 n=4 n=5 n=6 n=7 n=8 n=9 n=10 &lt;/pre&gt; &lt;p&gt;The initial value of " n' in this case is 0, which makes the condition while loop true. control then enters loop's body, where value of 'n' incremented accordance with first statement.< p> <p>The value of &apos;n&apos; is printed, then control returns to the condition in a while loop, where the value of &apos;n&apos; is now 1, satisfying the condition once more, and the body of the loop is executed once more. This continues until the condition becomes false, at which point the loop is terminated.</p> <p>The &apos;while&apos; loop, like the &apos;for&apos; loop, can initialise the control variable at the beginning of the loop, i.e. during condition checking.</p> <pre> //for example while((ch = getchar( ) ) != &apos;A&apos;) { System.out.println(&apos; The input alphabet &apos; +ch); } </pre> <p>At the top of the loop, the control variable &apos;ch&apos; is initialised, and the loop&apos;s condition is verified.</p> <h4>Note: If there is only one statement in the body of the loop, whether it is a for loop or a while loop, the curly braces are not required.</h4> <h3>In C, what is the difference between a for loop and a while?</h3> <table class="table"> <tr> <th>Parameters</th> <th>For Loop</th> <th>While Loop</th> </tr> <tr> <td> <strong>Declaration</strong> </td> <td>for(initialization ; condition ; iteration ) { <br> //body of &apos;for&apos; loop <br> }</td> <td>initialization <br>while ( condition ) { <br>statements; <br>//body of loop <br>}</td> </tr> <tr> <td> <strong>Format.</strong> </td> <td>At the top of the loop, initialization, condition checking, and iteration statements are written.</td> <td>At the top of the loop, only initialization and condition checking are performed.</td> </tr> <tr> <td> <strong>Use.</strong> </td> <td>The &apos;for&apos; loop was only used when the number of iterations was already known.</td> <td>When the number of iterations is unknown, the &apos;while&apos; loop is used.</td> </tr> <tr> <td> <strong>Condition.</strong> </td> <td>If the condition is not included in the &apos;for&apos; loop, the loop iterates indefinitely.</td> <td>If the condition is not included in the &apos;while&apos; loop, a compilation error occurs.</td> </tr> <tr> <td> <strong>Initialization</strong> </td> <td>The initialization is never repeated in a &apos;for&apos; loop.</td> <td>If initialization is performed during condition checking in a while loop, initialization is performed each time the loop iterates.</td> </tr> <tr> <td> <strong>Iteration assertion</strong> </td> <td>Because the iteration statement in the &apos;for&apos; loop is written at the top, it executes only after all statements in the loop have been executed.</td> <td>The iteration statement in a &apos;while&apos; loop can be written anywhere in the loop.</td> </tr> </table> <h2>The Key Differences Between for and while loop</h2> <ul> <li>Initialization, condition checking, and increment or decrement of iteration variables are all done explicitly in the loop syntax only. In contrast, in the while loop, we can only initialise and check the condition in the loop syntax.</li> <li>When we know the number of iterations that must occur in a loop execution, we use the for loop. On the other hand, if we do not know how many iterations must occur in a loop, we use a while loop.</li> <li>If you do not include a condition statement in the for loop, the loop will loop indefinitely. In contrast, failing to include a condition statement in the while loop will result in a compilation error.</li> <li>The initialization statement in the for loop syntax is only executed once at the beginning of the loop. If the while loop&apos;s syntax includes an initialization statement, the initialization statement will be executed each time the loop iterates.</li> <li>The iteration statement in the for loop will run after the body of the for loop. On the contrary, because the iteration statement can be written anywhere in the body of the while loop, there may be some statements that execute after the iteration statement in the body of the while loop is executed.</li> </ul> <h2>Conclusion</h2> <p>Loops are thus a collection of commands that must be used in a specific order. If the loop structure is incorrect, the programming will display the syntax error. Loops run to obtain a result or to satisfy a condition or set of conditions. It is the foundation of all programming languages.</p> <p>During execution, the loop structure asks a question and executes until the answer is satisfactory. The same question is asked again and again until the new statement is applied. The looping process continues indefinitely until the programme reaches a breakpoint. In the event that the breaking point is not reached, the programme will crash.</p> <p>The for and while loops are both conditional statements. A for loop is a single-line command that will be executed repeatedly. While loops can be single-lined or contain multiple commands for a single condition.</p> <p>Both the for loop and the while loop are important in computer languages for obtaining results. The condition is met if the command syntax is correct.</p> <p>Both the for loop and the while loop are iteration statements, but they have distinct characteristics. The for loop declares everything (initialization, condition, iteration) at the top of the loop body. In contrast, only initialization and condition are at the top of the body of the loop in a while loop, and iteration can be written anywhere in the body of the loop.</p> <hr></10)>

בחלק העליון של הלולאה, משתנה הבקרה 'ch' מאותחל, ומצב הלולאה מאומת.

הערה: אם יש רק הצהרה אחת בגוף הלולאה, בין אם זו לולאת for או while, אין צורך בסוגרים המתולתלים.

ב-C, מה ההבדל בין a for loop ל-while?

פרמטרים עבור לופ תוך כדי לולאה
הַצהָרָה for(אתחול ; תנאי ; איטרציה ) {
//גוף של לולאה 'עבור'
}
אִתחוּל
while (תנאי) {
הצהרות;
//גוף הלולאה
}
פוּרמָט. בראש הלולאה נכתבות הצהרות אתחול, בדיקת מצב ואיטרציה. בחלק העליון של הלולאה מתבצעים רק אתחול ובדיקת מצב.
להשתמש. לולאת 'עבור' הייתה בשימוש רק כאשר מספר האיטרציות כבר היה ידוע. כאשר מספר האיטרציות אינו ידוע, נעשה שימוש בלולאת 'בזמן'.
מַצָב. אם התנאי אינו כלול בלולאת 'for', הלולאה חוזרת ללא הגבלת זמן. אם התנאי אינו כלול בלולאת 'בזמן', מתרחשת שגיאת קומפילציה.
אִתחוּל האתחול לעולם אינו חוזר על עצמו בלולאה 'עבור'. אם האתחול מבוצע במהלך בדיקת המצב בלולאת while, האתחול מתבצע בכל פעם שהלולאה חוזרת.
קביעת איטרציה מכיוון שהצהרת האיטרציה בלולאה 'for' כתובה בחלק העליון, היא מופעלת רק לאחר ביצוע כל ההצהרות בלולאה. ניתן לכתוב את הצהרת האיטרציה בלולאת 'while' בכל מקום בלולאה.

ההבדלים העיקריים בין לולאת for ו-while

  • אתחול, בדיקת תנאים והגדלה או הפחתה של משתני איטרציה נעשים כולם במפורש בתחביר הלולאה בלבד. לעומת זאת, בלולאת while, נוכל רק לאתחל ולבדוק את התנאי בתחביר הלולאה.
  • כאשר אנו יודעים את מספר האיטרציות שחייבות להתרחש בביצוע לולאה, אנו משתמשים בלולאת for. מצד שני, אם אנחנו לא יודעים כמה איטרציות חייבות להתרחש בלולאה, אנחנו משתמשים בלולאת while.
  • אם לא תכלול הצהרת תנאי בלולאת for, הלולאה תעשה לולאה ללא הגבלת זמן. לעומת זאת, אי הכללת הצהרת תנאי בלולאת while תגרום לשגיאת קומפילציה.
  • משפט האתחול בתחביר for loop מבוצע פעם אחת בלבד בתחילת הלולאה. אם התחביר של לולאת while כולל משפט אתחול, משפט האתחול יבוצע בכל פעם שהלולאה חוזרת.
  • הצהרת האיטרציה בלולאת for תפעל אחרי הגוף של לולאת for. להיפך, מכיוון שניתן לכתוב את הצהרת האיטרציה בכל מקום בגוף לולאת ה-while, ייתכן שיהיו כמה הצהרות שיבוצעו לאחר ביצוע הצהרת האיטרציה בגוף לולאת ה-while.

סיכום

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

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

לולאות for ו-while הן שתיהן הצהרות מותנות. לולאת for היא פקודה בשורה אחת שתתבצע שוב ושוב. בעוד לולאות יכולות להיות בשורה אחת או להכיל מספר פקודות עבור תנאי בודד.

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

גם לולאת for וגם לולאת while הן הצהרות איטרציה, אך יש להן מאפיינים ברורים. לולאת for מכריזה על הכל (אתחול, מצב, איטרציה) בחלק העליון של גוף הלולאה. לעומת זאת, רק אתחול ותנאי נמצאים בחלק העליון של גוף הלולאה ב-while loop, וניתן לכתוב איטרציה בכל מקום בגוף הלולאה.