תרגיל - יצירה וקביעת תצורה עבור לולאות דרגתיות
- 14 דקות
על פני השטח, for המשפט הוא משפט איטרציה אחר המאפשר לך לבצע איטרציה באמצעות בלוק קוד, ו- by change the flow of execution of your code. עם זאת, לאחר שנבחן כיצד כל אחד מהם פועל, נוכל לזהות טוב יותר את הנואנסים של כל הצהרת שיטה ומתי להשתמש בהם.
מהי ההצהרה for ?
המשפט for עובר איתות באמצעות בלוק קוד מספר מסוים של פעמים. רמת פקד זו הופכת את המשפט for לייחודי בין שאר משפטי ההטרציה. המשפט foreach עובר תהליך של בלוק קוד פעם אחת עבור כל פריט ברצף נתונים כגון מערך או אוסף. המשפט while עובר תהליך של בלוק קוד עד יתמלא תנאי.
בנוסף, ההצהרה for מעניקה לך שליטה רבה יותר בתהליך הטרטרציה על-ידי חשיפת התנאים לאיטרציה.
בתרגיל זה תשתמש for בהצהרה, ותלמד כיצד לשלוט במצב קדם, בתנאי ההשלמה, בתבנית ההשלמה שלה ועוד. כמו כן, תלמד על מקרי שימוש נפוצים עבור ההצהרה for .
אוקיי, עכשיו בואו תכינו את סביבת הקידוד שלנו ותתחילו את בדיקת דוגמאות הקוד המיישמת הצהרה for .
הכנת סביבת הקידוד שלך
מודול זה כולל פעילויות מעשיות שמנחה אותך לאורך תהליך הבנייה וההפעלה של קוד הדגמה. אנו ממליצים לך להשלים פעילויות אלה באמצעות Visual Studio Code כסביבת הפיתוח שלך. השימוש ב- Visual Studio Code עבור פעילויות אלה יעזור לך לכתוב ולבצע קוד בצורה נוחה יותר בסביבת מפתחים המשמשת מומחים ברחבי העולם.
פתח את Visual Studio Code.
באפשרותך להשתמש בתפריט ההתחלה של Windows (או במשאב שווה ערך עבור מערכת הפעלה אחרת) כדי לפתוח את Visual Studio Code.
בתפריט קובץ קוד של Visual Studio, בחר פתח תיקיה.
בתיבת הדו-שיח פתיחת תיקיה, נווט אל תיקיית שולחן העבודה של Windows.
אם יש לך מיקום תיקיה אחר שבו אתה שומר פרוייקטים של קוד, באפשרותך להשתמש במיקום תיקיה זה במקום זאת. להדרכה זו, הדבר החשוב הוא שיהיה לך מיקום שקל לאתר ולזכור.
בתיבת הדו-שיח פתיחת תיקיה, בחר בחר תיקיה.
אם אתה רואה תיבת דו-שיח של אבטחה השואלת אם אתה נותן אמון בעורכים, בחר כן.
בתפריט מסוף קוד Visual Studio , בחר מסוף חדש.
שים לב שבקשה לפקודה בלוח המסוף מציגה את נתיב התיקיה עבור התיקיה הנוכחית. לדוגמה:
C:\Users\someuser\Desktop>הערה
אם אתה עובד במחשב שלך ולא בסביבת ארגז חול או סביבה מתארחת והשלמת מודולים אחרים של Microsoft Learn בסדרת C# זו, ייתכן שכבר יצרת תיקיית פרוייקט עבור דוגמאות קוד. במקרה זה, באפשרותך לדלג על השלב הבא, המשמש ליצירת יישום מסוף בתיקיה TestProject.
בשורת הפקודה של המסוף, כדי ליצור יישום מסוף חדש בתיקיה שצוינה, הזן את הבקשה הבאה:
dotnet new console -o ./CsharpProjects/TestProjectפקודה זו של .NET CLI משתמשת בתבנית של תוכנית .NET כדי ליצור פרוייקט יישום חדש של מסוף C# במיקום התיקיה שצוין. הפקודה יוצרת עבורך את התיקיות CsharpProjects ו- TestProject, ומשתמשת ב- TestProject כשם
.csprojהקובץ.אם מוצגת הודעה המציינת שהקבצים כבר קיימים, המשך לשלבים הבאים. תוכל לעשות שימוש חוזר בקובצי הפרוייקט הקיימים.
בתצוגת EXPLORER, הרחב את התיקיה CsharpProjects .
אתה אמור לראות את התיקיה TestProject ושני קבצים, קובץ תוכנית C# בשם Program.cs וקובץ פרוייקט C# בשם TestProject.csproj.
בתפריט קובץ קוד של Visual Studio, בחר פתח תיקיה.
בתיבת הדו-שיח פתיחת תיקיה, בחר את התיקיה CsharpProjects ולאחר מכן בחר בחר תיקיה.
בתצוגת EXPLORER, הרחב את התיקיה TestProject ולאחר מכן בחר Program.cs.
מחק את שורות הקוד הקיימות.
יהיה עליך להשתמש בפרוייקט זה של מסוף C# כדי ליצור, לבנות ולהפעיל דוגמאות קוד במהלך מודול זה.
סגור את לוח המסוף.
כתוב משפט בסיסי עבור
ודא שהאפשרות קוד Visual Studio פתוחה Program.cs בלוח 'עורך'.
הערה
Program.cs צריך להיות ריק. אם לא, בחר ומחק את כל שורות הקוד.
הקלד את הקוד הבא בעורך הקוד של Visual Studio.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }קוד זה מציג משפט פשוט המוחזר
forבלולאה דרך בלוק הקוד שלו 10 פעמים, המדפיס את הערך הנוכחי שלi.בתפריט קוד Visual Studio קובץ, בחר שמור.
יש Program.cs הקובץ לפני בנייה או הפעלה של הקוד.
בלוח EXPLORER, כדי לפתוח מסוף במיקום התיקיה TestProject, לחץ באמצעות לחצן העכבר הימני על TestProjectולאחר מכן בחר פתח במסוף משולב.
לוח מסוף ייפתח. המסוף צריך לכלול שורת פקודה שמראה כי המסוף פתוח במיקום התיקיה TestProject שלך.
בשורת הפקודה Terminal, כדי להפעיל את הקוד, הקלד dotnet מכן הקש Enter.
הערה
אם אתה רואה הודעה המציינת כי "לא היתה אפשרות למצוא פרוייקט להפעלה", ודא שבקשה לפקודה של Terminal מציגה את מיקום התיקיה TestProject הצפוי. לדוגמה:
C:\Users\someuser\Desktop\csharpprojects\TestProject>אתה אמור לראות את הפלט הבא.
0 1 2 3 4 5 6 7 8 9תידרש להימשך דקה כדי לזהות את ששת החלקים של
forההצהרה.המשפט
forכולל את ששת החלקים הבאים:- מילת המפתח
for. - קבוצה של סוגריים המגדירה את תנאי
forההטרציה. הסוגריים מכילים שלושה חלקים נפרדים, המופרדים באמצעות אופרטור משפט בסוף משפט, נקודה-פסיק. - החלק הראשון מגדיר ולאתחל את משתנה ה- Iterator. בדוגמה זו:
int i = 0. מקטע זה נקרא המאתחל. - החלק השני מגדיר את תנאי ההשלמה. בדוגמה זו:
i < 10. במילים אחרות, זמן הריצה ימשיךforלחזרה על הקוד בבלוק הקוד מתחת לשורת המשפט כאשרiהוא קטן מ-10. כאשרiהופך להשווה10ל- , זמן הריצה מפסיק להפעיל אתforבלוק הקוד של המשפט. מסמכים מתייחסים למקטע זה כתו התנאי. - החלק השלישי מגדיר את הפעולה שיש לבצע לאחר כל אחת מהפעולות. במקרה זה, לאחר כל אחת מהחזרות,
i++ההפרש יפרש את הערך ב-i1. הרשומות מתייחסות למקטע זה כסותר. - לבסוף, בלוק הקוד. בלוק הקוד מכיל את הקוד ש יופעל עבור כל אחת מהפעולות. שים לב שיש הפניה לערך
iשל בלוק הקוד. מסמכים מתייחסים למקטע זה כגוף ההודעה.
בהינתן הכללים שלנו למתן שמות למשתנים,
iאתה עשוי לתהות אם הוא שם חוקי עבור המשתנה המכיל את איטרציה הנוכחית. במקרה זה, נחשבתiלרוב לחוקית. אפשרויות פופולריות אחרות הןxוcounter- . השם משמשjגם במצבים אלהforiכאשר יש לך הצהרה פנימית המשתמשת ב- , ועליה ליצור משתנה איטרציה עבור משפטforפנימי.הערה
כל שלושת המקטעים (אתחול, תנאי ואטראטור) הם אופציונליים. עם זאת, בפועל, בדרך כלל נעשה שימוש בכל שלושת המקטעים.
- מילת המפתח
שינוי תנאי ההטרציה
כפי שציינו תחילה, להצהרה for יש שתי תכונות ייחודיות בין הצהרות האיטרציה.
- יש
forלהשתמש במשפט כאשר אתה יודע את מספר הפעמים שעליך לבצע חזרה באמצעות בלוק קוד מראש. - המשפט
forמאפשר לך לשלוט באופן שבו כל אתחול מטופל.
מה אם היינו צריכים לבצע חזרה באמצעות בלוק של קוד, אך ברצונך לספור לאחור במקום לספור לאחור?
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }החלף דקה כדי לסקור את הקוד המעודכן.
על-ידי שינוי שלושת החלקים של המשפט
for, אנו משנה את אופן הפעולה שלו.- אנו מאתחלים את משתנה האתחול ל- 10.
- אנו משנה את תנאי ההשלמה כדי לצאת מהצהרה
forכאשרiהוא קטן מ-0. - אנו משנה את תבניתו של ה- Iterator
1כך שיחסרiמכל פעם שאנו משלים את תהליך ההשלמה.
שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב שהפלט השתנה.
בעת הפעלת הקוד, תראה את הפלט הבא.
10 9 8 7 6 5 4 3 2 1 0
התנסות בתבנית של ה- Iterator
מה אם רצינו לדלג מעבר לערכים מסוימים במשתנה איטראטור?
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }החלף דקה כדי לסקור את הקוד המעודכן.
במקום הגדלה או הפחתה של הערך של משתנה ה- Iterator
1על-ידי ,i += 3אנו משתמשים כדי לדלג על שני ערכים לאחר כל אחת מהאפשרויות.שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב כיצד הפלט השתנה.
בעת הפעלת הקוד, תראה את הפלט הבא.
0 3 6 9יש להודות, לא תעשה דברים מסוג זה לעתים קרובות, אך אנו מקווים שתוכל להעריך שיש לך רמת שליטה דקה של שליטה על איתורים אם אי פעם תזדקק להם.
השתמש במילת המפתח למעבר כדי לנתק את משפט ההפסקה
מה קורה אם עלינו לצאת מהצהרת האיטרציה בטרם עת בהתבסס על תנאי מסוים? נוכל להשתמש במילת break המפתח.
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }החלף דקה כדי לסקור את השימוש במילת
breakהמפתח בקוד המעודכן.ראינו לראשונה את מילת
breakהמפתח במודול "הסתעפות זרימת הקוד באמצעות מבנה מתג-רישיות ב- C#". כפי שהתברר, נוכל להשתמש במילתbreakהמפתח גם כדי לצאת מ משפטי ההפצה.שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב כיצד הפלט השתנה.
בעת הפעלת הקוד, תראה את הפלט הבא.
0 1 2 3 4 5 6 7
מעבר בלולאה בכל רכיב במערך
שימוש נפוץ במשפט for הוא לחזרה באמצעות מערך של רכיבים, במיוחד אם אתה זקוק לשליטה מסוימת באופן שבו מתרחשת ההחזרה. למרות שהנתונים foreach משתנים בכל רכיב במערך, for ניתן לכוונן את המשפט כדי לספק התאמות אישיות נוספות.
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }החלף דקה כדי לסקור את הקוד המעודכן.
תחילה, שים לב שהעברנו מופעים של מערך מחרוזות
namesבשם המכיל ארבעה שמות.לאחר מכן, שים
Array.Lengthלב שאנו משתמשים במאפיין כדי לקבל את מספר הרכיבים במערך, וש אנחנו משתמשים בערך זה כדי לאתחל את משתנה ה- Iterator (int i = names.Length - 1). אנו מחסירים 1 מהערך מכיוון שמספר האינדקס עבור רכיבי מערך מבוסס על אפס (מספרי האינדקס של ארבעת הרכיבים הם 0-3).לבסוף, שים לב שנבחרנו לחזור אחורה באמצעות המערך – משהו שאין באפשרותנו לעשות עם ההצהרה
foreach. אנו משתמשים בערך של משתנה הטרציה בתוך בלוק הקוד כדי לציין את מספר האינדקס של רכיבי המערך (names[i]).שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב שרכיבים במערך מפורטים בסדר הפוך (כצפוי).
בעת הפעלת הקוד, תראה את הפלט הבא.
Michael David Eddie Alexהערה
היינו יכולים לעבור קדימה דרך רכיבי המערך על-ידי בניית המשפט
forבאופן הבא:for (int i = 0; i < names.Length; i++).
בחינת ההגבלה של הצהרת ההצטבה
מה קורה אם ברצונך לעדכן ערך במערך במהלך foreach אתחול?
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב להצגת הודעת השגיאה.
אם תנסה לבצע קומפילציה והפעלת קוד זה, תראה חריגה.
Cannot assign to name because it is a 'foreach iteration variable'במילים אחרות, לא ניתן להקצות מחדש את הערך של
nameמכיווןforeachשהוא חלק מההטמעה הפנימית של איטרציה.
הת מעל ההגבלה של משפט foreach באמצעות המשפט for
ננסה להשתמש במשפט כדי לשנות for את התוכן של מערך בתוך בלוק קוד ההחזרה.
השתמש בעורך קוד Visual Studio כדי לעדכן את הקוד שלך באופן הבא:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) if (names[i] == "David") names[i] = "Sammy"; foreach (var name in names) Console.WriteLine(name);החלף דקה כדי לסקור את הקוד המעודכן.
שים לב שהסרו את סוגריים מסולסלים מבלוקי הקוד שהכילו שורת קוד אחת בלבד. תיקון זה משתמש באותה טכניקה שדיברנו עליו במודול "Control variable scope and logic using code blocks in C#". מפתחים רבים מתקשים לקרוא סגנון זה, בעוד שאחרים מעדיפים סגנון מקוצר זה מכיוון שזה עוזר להם לכתוב בצורה תמציתית יותר ובמפורשת יותר. אם אתה מתקשה לקרוא קוד זה, או אם אינך מעדיף סגנון זה, אל דאגה שניתן תמיד להשתמש בסוגריים מסולסלים בבלוקים של הקוד. אם תרצה, עדכן את הקוד בלוח 'עורך' באמצעות הקוד הבא:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) { if (names[i] == "David") { names[i] = "Sammy"; } } foreach (var name in names) { Console.WriteLine(name); }שמור את קובץ הקוד ולאחר מכן השתמש ב- Visual Studio Code כדי להפעיל את הקוד.
הזן
dotnet runמשורת הפקודה Terminal כדי להפעיל את הקוד שלך.שים לב שהקוד פועל ללא שגיאה ומפיק את הפלט הרצוי.
בעת הפעלת הקוד, תראה את הפלט הבא.
Alex Eddie Sammy Michaelמאחר שהערך אינו מהווה חלק ישיר מיישום משפט האיטרציה, באפשרותך לשנות ערכים בתוך המערך.
תקציר
להלן כמה מההתבצעות ביחידה זו:
- משפט
forההחזרה מאפשר לך לבצע אתחול באמצעות בלוק של קוד מספר מסוים של פעמים. - הצהרת
forההיטרציה מאפשרת לך לשלוט בכל היבט של המכניקה של ההיטרציה על-ידי שינוי שלושת התנאים בתוך הסוגריים: המאתחל, התנאי והאיטראטור. - השימוש במשפט נפוץ
forכאשר עליך לשלוט באופן שבו ברצונך לבצע את הפעולות בהן ברצונך לבצע פעולות אלה במערך. - אם בלוק הקוד שלך כולל שורת קוד אחת בלבד, באפשרותך לבטל את סוגריים מסולסלים ורווח לבן אם תרצה.
בדיקת ידע
משוב
האם עמוד זה היה מועיל?
לא
זקוק לעזרה בנושא זה?
רוצה לנסות להשתמש ב'שאל את Learn' כדי להבהיר או להדריך אותך בנושא זה?