פקודת if

מתוך ויקיפדיה, האנציקלופדיה החופשית

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

תוכן עניינים

[עריכה] עקרונות

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

בכל שפת תכנות יש פקודות התניה או פקודות מותנות.
המבנה הכללי של פקודות ההתניה הוא:

  • if condition then statements-1
  • if condition then statements-1 else statements-2

condition הוא משפט עם ערך בוליאני של אמת או שקר.
statements-1 זו קבוצה הפקודות שיבוצעו רק עם ערך התנאי הוא אמת.
statements-2 זו קבוצה הפקודות שיבוצעו רק עם ערך התנאי הוא שקר.

[עריכה] תנאי מורחב / מקונן

תנאי מקונן הוא משפט תנאי שמופיע בתוך קבוצת הפקודות המותנות.

if (condition-1)
then

statments-1
if (condition-3)
then statments-3
statments-2

הרחבה של משפט התנאי אפשרית ברוב השפות העיליות במבנה הבא:

if (condition-1) then statement1True
else if (condition-2) then statement2True
else if (condition-3) then statement3True
else statementAllFalse;

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


[עריכה] אופרטור תנאי

אופרטור תנאי קיים בחלק משפות התכנות, כגון: ++C, C ו- PHP.
בניגוד למשפט if האופרטור הוא ביטוי שמחזיר ערך - לכן שני הביטויים המותנים חייבים להיות ביטויים המחזירים ערך (Expressions), והערך המוחזר הוא התוצאה של הביטוי שנבחר לביצוע על פי ההתניה.
גם את האופרטור ניתן לקנן בתוך אחד מהביטויים המותנים וגם ליצור תנאי מורחב בדומה לזה שהוצג בסעיף הקודם.

המבנה התחבירי של האופרטור:

condition ? expressionTrue : expressionFalse

ומשמעותו: אם התנאי condition מתקיים, מחושב ערכו של expressionTrue ומוחזר כערכו של הביטוי כולו, אחרת מחושב ומוחזר ערכו של expressionFalse.
רק אחד משני ביטויים אלו מחושב.

שימוש נפוץ לאופרטור תנאי הוא מימוש של מעין אופרטורים max ו-min. מימוש של (max(a,b יכול להכתב כך: (a>b)?(a):(b)

[עריכה] תחבירי הפקודה בשפות עיליות

[עריכה] תנאי בשפות: C/C++/C#/Java/PHP/JavaScript

if ( condition ) {
statementTrue;
}
else {
statementFalse;
}

[עריכה] תנאי בשפות: Pascal/Basic

if condition then
statementTrue
else
statementFalse;

[עריכה] תנאי בלוגו

בניגוד לשפות אחרות בלוגו ההבחנה בין שתי צורות הפקודה נעשית על ידי שינוי שם הפקודה.

if condition [statementTrue]

ifelse condition [statementTrue] [statementFalse]

[עריכה] תחביר הפקודה בשפות סף

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

  • אם הערך באוגר R2 הוא 0 עבור לפקודה שכתובתה נמצאת באוגר R7.
  • אם הערך באוגר R2 גדול מהערך באוגר R4 הדלק ביט באוגר סטטוס. (הביט הזה יוכל לשמש בפקודות הבאות)

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