NET/משפטי בקרה: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
צחי (שיחה | תרומות)
צחי (שיחה | תרומות)
שורה 83:
==for==
בצורת השימוש הבסיסית, לולאת for מיועדת לביצוע הוראה או קבוצת הוראות מספר קבוע מראש של פעמים. התחביר שלה הוא כדלהלן.
{{NET/CodeBlock|code=
{{NET/Code|for|Keyword}} (''init''; ''condition''; ''update'')<br>
&nbsp;&nbsp;''statement''}}
''init'' - איתחול הלולאה
 
''condition'' - ביטוי בוליאני. הלולאה תתבצע אם ורק אם ערך ביטוי זה true
 
''update'' - הוראה לעדכון
 
''statement'' - הוראה לביצוע
 
כמו בלולאות האחרות, גם כאן, כאשר יש יותר מהוראה אחת לביצוע בכל מחזור של הלולאה, הן יקובצו בבלוק:
{{NET/CodeBlock|code=
{{NET/Code|for|Keyword}} (''init''; ''condition''; ''update'') {<br>
&nbsp;&nbsp;''statement1''<br>
&nbsp;&nbsp;''statement2''<br>
&nbsp;&nbsp;''statement3''<br>
&nbsp;&nbsp;...
}
}}
הלולאה תבוצע בסדר הבא:
# בצע את ''init''
# אם ערך ''condition'' הוא true, בצע את ''statement''. אחרת, המשך לאחר הלולאה.
# בצע את ''update''
# חזור לצעד 2.
לדוגמה:
{{NET/CodeBlock|code=
{{NET/Code|for|Keyword}} ({{NET/Code|int|Keyword}} i = 0; i < 5; i++) {<br>
&nbsp;&nbsp;{{NET/Code|Console|Class}}.WriteLine("i = " + i);<br>
}
}}
בדוגמה זו, חלק ה-''init'' מאתחל משתנה חדש מסוג <code>int</code> עם הערך 0. משתנה זה יהיה ידוע רק בתוך הבלוק של משפט ה-if. בתחילה הביטוי i < 5 הוא true, ולכן מודפסת המחרוזת
{{NET/CodeBlock|code=i = 0}}
לאחר מכן ערך i עולה באחד בעזרת האופרטור ++, וערך התנאי נבדק שוב. הוא יהיה true עד שערך i יהיה 5, אז יופסק ביצוע הלולאה והתוכנית תמשיך להוראה הראשונה שאחריה. הפלט המלא יהיה
<source lang="text">
i = 0
i = 1
i = 2
i = 3
i = 4
</source>
עם זאת, אין חובה להשתמש בחלקים השונים של המשפט דווקא עם מספרים. ניתן לבצע כל הוראת השמה בחלק ה-''init'', לבצע כל הוראה בחלק ה-''update'', ולבדוק כל ביטוי בחלק ה-''condition'' בלי קשר לחלקים האחרים. בנוסף, בחלק ה-''update'' ניתן לבצע מספר הוראות, מופרדות בפסיקים. כל החלקים הם אופציונליים, וניתן לוותר על כל אחד מהם ועל כולם גם יחד (אך אין לוותר על סימני הנקודה-פסיק). לדוגמה:
{{NET/CodeBlock|code=
{{NET/Code|for|Keyword}} (;;) {
{{NET/Code|statement|C#Comment}}
}
}}
לולאה זו תתצבע אינסוף פעמים.
 
דוגמה:
{{NET/CodeBlock|code=
{{NET/Code|String|Class}}[] strArr = {{{NET/Code|one|String}}, {{NET/Code|two|String}}, {{NET/Code|three|String}}};<br>
{{NET/Code|int|Keyword}} i = 0;<br>
{{NET/Code|String|Class}} str = strArr[1];<br>
{{NET/Code|for|Keyword}} ({{NET/Code|String|Class}} s = strArr[i]; {{NET/Code|Object|Class}}.ReferenceEquals(str, strArr); s = strArr[i]) {<br>
&nbsp;&nbsp;i++;<br>
}
}}
 
==foreach==