Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

מבוא לשפות תכנות באמצעות שפת C פרק 9 – לולאות Loops

לולאות – Loops

דמיינו לכם סיטואציה שבה נרצה להוציא לפועל את אותה הפקודה ברצף מספר פעמים. הרי לפניכם תוכנית פשוטה בשפת C שנועדה לעשות זאת:

#include <stdio.h>

int main() {
printf( "Hello, World!\n");
printf( "Hello, World!\n");
printf( "Hello, World!\n");
printf( "Hello, World!\n");
printf( "Hello, World!\n");
}

שכאשר נריץ אותה נקבל את התוצאה הבאה:

!Hello, World
!Hello, World
!Hello, World
!Hello, World
!Hello, World

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

כעת נכתוב שוב את אותה התוכנית, רק שהפעם נעזר בלולאת while loop שנרחיב עליה בהמשך:

#include <stdio.h>

int main() {
int i = 0;

while ( i < 5 ) {
printf( "Hello, World!\n");
i = i + 1;
}
}

על מנת שנקבל את התוצאה הבאה:

!Hello, World
!Hello, World
!Hello, World
!Hello, World
!Hello, World

תכנית זו השתמשה בלולאת while loop על מנת להוציא לפועל את אותה הפקודה מספר פעמים ברצף.

  • בתחילת התוכנית הגדרנו משתנה מסוג int בשם i והזנו לו ערך של 0
  • לאחר מכן השתמשנו בלולאת while שתבצע את פקודת ה-printf כל עוד הערך של i קטן מ-5
  • והשורה שמתחת מוסיפה 1 לערך של המשתנה i בכל פעם שפקודת ה-printf יוצאת לפועל
  • כך שהתכנית תסתיים לאחר 5 פעמים שהפקודה printf תצא לפועל, כי הערך של i יהיה מעל 5

כעת שימו לב לתרשים הזרימה הבא, שהוא נכון לרוב שפות התכנות הקיימות:

 

לולאות Loops
לולאות Loops

 

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

לולאת while Loop

זהו התחביר הבסיסי לכתיבת לולאת while loop:


while ( condition ) {
/*....while loop body ....*/
}

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

 

לולאת while loop
לולאת while loop

 

אלו כמה נקודות שחשוב לזכור לגבי לולאות while:

  • לולאת while מתחילה עם מילת המפתח while ולאחריה מגיע תנאי בתוך סוגריים ( )
  • בהמשך משפט ה-while, גוף הלולאה יגיע בתוך סוגריים מסולסולות { }
  • גוף הלולאה יכול להכיל בתוכו שורה אחת או יותר של קוד שיבוצעו שוב ושוב
  • הלולאה תמשיך לחזור על עצמה כל עוד הערך של התנאי נשאר אמת
  • מרגע שהערך של התנאי הופך לכזב, הלולאה תחדול מלחזור על עצמה והתוכנית תמשיך לרוץ מאותה הנקודה
  • התנאי הוא בדרך כלל משפט השוואתי שהתוצאה שלו היא אמת – true או כזב – false

לולאת do while Loop

לולאת while מאפשרת לנו לבדוק תנאי לפני הפעלת הקוד שבגוף הלולאה, לעומת זאת לולאת do while מאפשרת לנו קודם להריץ את הקוד שבגוף הלולאה, לפני שאנחנו בודקים את התנאי, לפי התחביר הבא:

do {
   /*....do...while loop body ....*/
} 
while ( condition );

שניתן לתאר לפי תרשים הזרימה הבא:

 

לולאת do while loop
לולאת do while loop

 

אם נכתוב את אותה התוכנית רק שהפעם נעשה זאת באמצעות לולאת do while, אז הקוד שלנו יראה בדיוק כך:

#include <stdio.h>

int main() {
int i = 0;

do {
printf( "Hello, World!\n");
i = i + 1;
}
while ( i < 5 );
}

ואז נקבל את התוצאה הרצויה:

!Hello, World
!Hello, World
!Hello, World
!Hello, World
!Hello, World

הפקודה break

כאשר התוכנית נתקלת בפקודת break בתוך לולאה, הלולאה תיפסק והתוכנית תמשיך לרוץ מאותה הנקודה. ניתן לתאר את פקודת break לפי תרשים הזרימה הבא:

 

 

לפניכם תוכנית שבה לולאה שמשתמשת בפקודה break כדי לעצור את הלולאה לאחר 3 פעמים:

 


#include <stdio.h>

int main() {
int i = 0;
do {
printf( "Hello, World!\n");
i = i + 1;

if( i == 3 ) {
break;
}
}
while ( i < 5 );
}

שכאשר נריץ את התוכנית נקבל את הפלט הבא:

!Hello, World
!Hello, World
!Hello, World

הפקודה continue

הפקודה continue נועדה להמשיך את הפעולה, בניגוד ל-break שעוצר אותה. שימו לב לתרשים הזרימה שלפניכם:

 

 

בתכנית הבאה תופיע לולאה שמשתמשת בפקודה continue, כאשר פעולתה תיפסק לאחר 3 פעמים, ומשום שהשתמשנו בלולאת do while, הפקודה תבוצע סך הכל ארבעה פעמים לפני שתסתיים התכנית.


#include <stdio.h>

int main() {
int i = 0;
do {
if( i == 3 ) {
i = i + 1;
continue;
}
printf( "Hello, World!\n");
i = i + 1;
}
while ( i < 5 );
}

!Hello, World
!Hello, World
!Hello, World
!Hello, World

לולאות בשפת Java

זוהי דוגמה של אותה התוכנית, כאשר הפעם היא נכתבה בשפת Java:

public class Main {
   public static void main(String []args) {
      int i = 0;
   
      while ( i < 5 ) {
         System.out.println("Hello, World!");
         i = i + 1;
      }
   }
}

!Hello, World
!Hello, World
!Hello, World
!Hello, World
!Hello, World

הפקודות break ו-continue עובדות בשפת Java באופן זהה לזה של C.

לולאות בשפת Python

זוהי דוגמה של אותה התוכנית, כאשר הפעם היא נכתבה בשפת Python:


i = 0

while (i < 5):
print ("Hello, World!")
i = i + 1
print ("Loop ends")


!Hello, World
!Hello, World
!Hello, World
!Hello, World
!Hello, World
Loop ends

לשם הידע הכללי, שפת התכנות Python תומכת אף היא בלולאות do while. כמו כן שימו לב כי לא היינו צריכים לתחום את גוף הלולאה בתוך סוגריים מסולסלות { } כפי שנאלצנו ב-C. הפקודות break ו-continue בשפת Python, עובדות באופן זהה לזה של C אך שימו לב שהוספנו שורת קוד שתודיע לנו שהסתיימה הלולאה.

הזמינו אותי לכוס קפה
buy me coffee

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

ניתן לתרום 10, 15, 20 או כל סכום אחר שתרצו באמצעות כרטיס אשראי \ Paypal

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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