פקודת תנאי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
MerlIwBot (שיחה | תרומות)
מ בוט מוסיף: sv:If-sats
הוי ארצי (שיחה | תרומות)
הפניה לדף If
שורה 1:
#REDIRECT [[if]]
ב[[שפת תכנות|שפות תכנות]], '''פקודת if''' (או '''IF''') היא ה[[פקודה (מחשב)|פקודה]] הבסיסית ביותר ל[[בקרת זרימה]], כלומר לשליטה על סדר ביצוע הפקודות ב[[תוכנית מחשב]]. משמעותה הבסיסית היא ביצוע פעולה [[אם ורק אם]] מתקיים תנאי, ולעתים ביצוע פעולה אחרת אם ורק אם התנאי איננו מתקיים.
 
קיומה של פקודה מותנית (כדוגמת הפקודה if) בשפה הוא אחד הקריטריונים הראשונים להבחנה בין שפת תכנות ל[[שפת מחשב]] שאינה שפת תכנות.
 
== עקרונות ==
כדי ש[[תוכנת מחשב]] תהיה יותר מסתם רצף פקודות היא צריכה להכיל מנגנון להתניית ביצוע של קטעי קוד. לדוגמה, כדי להציג מספר שהוא הגדול מבין שניים נתונים, התוכנה חייבת לבחור לפי תנאי כלשהו מהי הפעולה הנכונה לביצוע.
 
בכל שפת תכנות יש פקודות התניה או פקודות מותנות. המבנה הכללי של פקודות ההתניה הוא:
{{ltr|
* '''if''' ''condition'' '''then''' ''statements-1''
* '''if''' ''condition'' '''then''' ''statements-1'' '''else''' ''statements-2 ''
}}
* ''condition'' הוא משפט עם ערך בוליאני של אמת או שקר.
* ''statements-1'' זו קבוצה הפקודות שיבוצעו רק אם ערך התנאי הוא אמת.
* ''statements-2'' זו קבוצה הפקודות שיבוצעו רק אם ערך התנאי הוא שקר.
 
== תנאי מורחב / מקונן ==
'''תנאי מקונן''' הוא משפט תנאי שמופיע בתוך קבוצת הפקודות המותנות.
{{ltr|
'''if''' (''condition-1'')<br />'''then'''
 
statments-1<br />
'''if''' (''condition-3'')<br />
'''then''' statments-3<br />
statments-2<br />
}}
 
הרחבה של משפט התנאי אפשרית ברוב [[שפה עילית|השפות העיליות]] במבנה הבא:
{{ltr|
'''if''' (''condition-1'') '''then''' statement1True<br />
'''else''' '''if''' (''condition-2'') '''then''' statement2True<br />
'''else''' '''if''' (''condition-3'') '''then''' statement3True<br />
'''else''' statementAllFalse;<br />
}}
 
למעשה '''תנאי מורחב''' הוא צורת כתיבה מסודרת של '''תנאי מקונן''' כך שאוסף התנאים נראים כמשפט בקרה מרובה בחירות.
 
==אופרטור תנאי==
[[אופרטור (תכנות)|אופרטור]] תנאי קיים בחלק משפות התכנות, כגון: [[C (שפת תכנות)|C]]{{כ}}, [[C++]]&lrm; ו-[[PHP]].
 
בניגוד למשפט if האופרטור הוא ביטוי שמחזיר ערך - לכן שני הביטויים המותנים חייבים להיות ביטויים המחזירים ערך (Expressions), והערך המוחזר הוא התוצאה של הביטוי שנבחר לביצוע על פי ההתניה.
 
גם את האופרטור ניתן לקנן בתוך אחד מהביטויים המותנים וגם ליצור תנאי מורחב בדומה לזה שהוצג בסעיף הקודם.
 
המבנה התחבירי של האופרטור:
{{ltr|
''condition'' ? ''expressionTrue'' : ''expressionFalse''
}}
ומשמעותו: אם התנאי ''condition'' מתקיים, מחושב ערכו של ''expressionTrue'' ומוחזר כערכו של הביטוי כולו, אחרת מחושב ומוחזר ערכו של ''expressionFalse''.
 
רק אחד משני ביטויים אלו מחושב.
 
שימוש נפוץ לאופרטור תנאי הוא מימוש של מעין אופרטורים max ו-min. מימוש של (max(a,b יכול להיכתב כך: (a>b)?(a):(b)
 
==תחבירי הפקודה בשפות עיליות==
 
===תנאי בשפות: [[C (שפת תכנות)|C]]/[[C plus plus|C++]]/[[C sharp|C#]]/[[Java]]/[[PHP]]/[[JavaScript]]===
<div style="direction: ltr;">
<code>
'''if''' (''condition'')
{
''statementTrue'';
}
'''else'''
{
''statementFalse'';
}
</code>
</div>
 
===תנאי בשפת [[Pascal]]===
<div style="direction: ltr;">
<code>
'''if''' ''condition'' '''then'''
'''begin'''
''statementTrue'';
'''end'''
'''else'''
'''begin'''
''statementFalse'';
'''end;'''
</code>
</div>
 
===תנאי בשפת [[Basic]]===
<div style="direction: ltr;">
<code>
'''if''' ''condition'' '''then'''
''statementTrue''
'''else'''
''statementFalse''
'''end if'''
</code>
</div>
 
===תנאי ב[[לוגו (שפת תכנות)|לוגו]]===
בניגוד לשפות אחרות, בלוגו ההבחנה בין שתי צורות הפקודה נעשית על ידי שינוי שם הפקודה.
<div style="direction: ltr;">
<code>
'''if''' ''condition'' [''statementTrue'']
 
'''ifelse''' ''condition'' [''statementTrue''] [''statementFalse'']
</code>
</div>
 
==תחביר הפקודה ב[[שפת סף|שפות סף]]==
בשפות סף אין התניה לביצוע קבוצת פקודות, אלא ביצוע מותנה של פקודה בודדת.<br />
דוגמאות אפשריות לפקודת אסמבלי מותנית:<br />
* אם הערך ב[[אוגר (מחשבים)|אוגר]] R2 הוא 0 עבור לפקודה שכתובתה נמצאת באוגר R7.
* אם הערך באוגר R2 גדול מהערך באוגר R4 הדלק ביט באוגר סטטוס. (הביט הזה יוכל לשמש בפקודות הבאות)
באסמבלי אין תנאים מקוננים או מורחבים, כל [[בקרת זרימה|בקרת הזרימה]] של הקוד מבוצעת על ידי ביצוע מותנה של פקודות בודדות ובעיקר של פקודות מהסוג: אם <תנאי> עבור ל <כתובת>
 
==תחביר הפקודה בשפת מדיה-ויקי==
כשעורכים דפים בוויקיפדיה, או בכל אתר אחר שמשתמש במערכת מדיה-ויקי, ניתן להשתמש בתנאי על-מנת לקבוע איזה טקסט ייכלל בדף, על-פי התחביר הבא:
 
 
<nowiki>
{{ #if: <condition> | <then text> | <else text> }}
 
{{ #if: <condition> | <then text> }}
</nowiki>
 
לפרטים נוספים: [http://meta.wikimedia.org/wiki/ParserFunctions Parser Functions]
 
[[קטגוריה:תכנות]]
 
[[en:Conditional (programming)]]
[[de:Bedingte Anweisung]]
[[es:Sentencia condicional]]
[[et:Tingimuslause]]
[[hr:Uvjetna naredba]]
[[hu:Feltételes utasítás]]
[[ja:If文]]
[[ko:조건문]]
[[pl:Instrukcja warunkowa]]
[[pt:Estrutura de seleção]]
[[ru:Условная инструкция]]
[[sv:If-sats]]
[[uk:Умовний перехід]]