תרגיל - כתוב קוד כדי להציג את כל נתוני המערך שלAnimals
בתרגיל זה, אתה כותב את מבנה הלולאה המקוננת ואת בלוק קוד הבחירה המשמש להצגת מידע המערך שלAnimals. המשימות המפורטות שאתה משלים במהלך תרגיל זה הן:
- לולאה בחוץ: בנה את הלולאה היוצאת שעוברת דרך החיות במערך ההנפשה שלנו.
- בדיקת נתונים: כתוב קוד שמבדוק אם קיימים נתונים של חיית מחמד ומציג את מזהה חיית המחמד אם קיימים נתונים עבור חיית מחמד.
- לולאה פנימית: בנה לולאה פנימית המציגה את כל מאפייני חיית המחמד עבור חיות מחמד עם נתונים שהוקצו.
- בדיקת אימות: בצע בדיקות אימות עבור הקוד שפיתת בתרגיל זה.
חשוב
עליך להשלים את התרגיל הקודם במודול זה לפני שתתחיל בתרגיל זה.
בניית לולאה לחזרה באמצעות מערך האנימציה שלנו
במשימה זו, תיצור את for הלולאה היוצאת המשמשת לחזרה באמצעות בעלי החיים במערך ourAnimals . אתה בוחן את קשר הגומלין בין ממדי המערך לבין הפרמטרים של הלולאה for . עליך גם לשקול את ההבדלים בין for שימוש במשפטים foreach במשפטים בעת עבודה עם מערכים רב-ממדיים.
ודא ש- Visual Studio Code פתוח ושקובץ ה- Program.cs שלך גלוי בעורך.
בתוך בלוק הקוד של משפט
switch(menuSelection)הבחירה, אתר את שורות הקוד הבאות:case "1": // List all of our current pet information Console.WriteLine("this app feature is coming soon - please check back to see progress."); Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;מחק את
Console.WriteLine()המשפט המשמש להצגת ההודעה "בקרוב", והשאר שורת קוד ריקה מתחת לשורת// List all of our current pet informationההערות של הקוד.הודעת המשוב לא תידרש מאחר שתציג את תוכן המערך
ourAnimals. כאשר אתה מפתח את הקוד התואם לבחירות האחרות בתפריט, הודעות משוב אלה יעודכנו גם כן.השאר את ההודעה המציינת
Press the Enter key to continue.החל משורת הקוד הריקה שיצרת, התחל משפט
forבאופן הבא:for () { }קח דקה כדי לשקול את מה שאתה צריך כדי להשיג בהצהרה
forזו.זכור כי משפט
forכולל שלושה חלקים שלשליטה באופן שבו הוא מיישם את החזרות: עבור אתחול; התנאי עבור והאיטרציה עבור. הערכים שהוקצו ל- for initializer, עבור התנאי והאיטראטור מבוססים על מה שעליך להשיג עםforהמשפט.במקרה זה, הלולאה
forמשמשת לחזרה באמצעות המערךourAnimals. אתה יודע שמערכים אינם סדורים באינדקס, כלומר מערך עם רכיביםnסדור באינדקס מ-0ל-n-1. אתה זקוק ל - for initializer, עבור התנאיולאיטראטור כדי להתאים לממדי המערך. במקרה זה, ברצונך שה ולולאהforתתחיל ב-0, הגדלה וסיום1ב-maxPets-1.המערך
ourAnimalsשלך מוצהר באופן הבא:string[,] ourAnimals = new string[maxPets, 6];. אתה יודע שהערך שהוקצה לו הואmaxPets8. בהצהרה זו,maxPetsמציין את מספר הרכיבים בממד הראשון של המערך, ולא את מספר האינדקס המבוסס על אפס שבו אתה משתמש כדי להפנות לרכיבים במערך. לפיכך, למרות שהמספריםmaxPets = 8של אינדקס המערך בטווח המספרים מ-0עד7.כדי לציין את ערך הפקד של הלולאה
for, עדכן את הקוד באופן הבא:for (int i = 0; i < maxPets; i++) { }כפי שניתן לראות, הגדרת המאתחל ליישור
int i = 0;לאינדקס המערך המבוסס על אפס. בדומה, הגדרת התנאי עבור כדיi < maxPets;ליישר לממד הראשון של המערך. לבסוף, הגדרת עבור ה- Iterator כךi++שתרווחים את ערך פקד הלולאה שלך1על-ידי עבור כל אחת מהפעולות הדרגתיות.קח דקה כדי לשקול את הבחירה בין
forforeachהצהרה להצהרה בעת חזרה באמצעות מערך ההנפשה שלנו.המטרה היא לחזרה דרך כל בעל חיים במערך ההנפשה שלנו, אחד בכל פעם. אז למה לא להשתמש בלולאה
foreach? אחרי הכל, אתה יודע שהצהרהforeachמיועדת למקרים שבהם ברצונך לבצע חזרה באמצעות כל פריט במערך של פריטים.הסיבה לכך שאינך משתמש בלולאה
foreachבמצב זה היא המערךourAnimalsהוא מערך רב-ממדי. מאחרourAnimalsשהוא מערך מחרוזות רב-ממדי, כל רכיב הכלול בourAnimals- הוא פריט נפרד מסוג מחרוזת. אם השתמשת בלולאהforeachourAnimalsלחזרה באמצעות ,foreachהמחרוזת תזוה כל מחרוזת כפריט נפרד ברשימה של 48 פריטי מחרוזת (8 x 6 = 48). המשפטforeachלא יעבד את שני ממדי המערך בנפרד. במילים אחרות, לולאה לאforeachמזהה שורות של8רכיבי מחרוזת, כאשר כל שורה מכילה עמודת6פריטים. מאחר שתרצה לעבוד עם בעל חיים אחד בכל פעם, ולעבד את כל ששת מאפייני בעלי החיים במהלך איטרציה אחת,foreachהצהרה אינה הבחירה הנכונה.עם זאת, אם
ourAnimalsהמערך היה מערך משויך שתצורתו נקבעה כמערך של מערכים של מחרוזות, תוכל להשתמש במשפטforeach. במקרה זה, תיצור לולאהforeachעבור לולאה פנימית ושנייה עבורforeachלולאה פנימית. לולאת ההודעה תיגש לרכיבים "מערך מחרוזות" במערך המשוננים. מערכים המחרוזות הם "השורות" במערך הדו-ממדי. הלולאה הפנימית תחזור על-ידי רכיבי "string" הכלולים במערכים של מחרוזות. רכיבי המחרוזת במערכים של מחרוזות הם "העמודות" במערך הדו-ממדי.דוגמת הקוד הבאה מדגימה את הגישה המשוננים של המערך.
string[][] jaggedArray = new string[][] { new string[] { "one1", "two1", "three1", "four1", "five1", "six1" }, new string[] { "one2", "two2", "three2", "four2", "five2", "six2" }, new string[] { "one3", "two3", "three3", "four3", "five3", "six3" }, new string[] { "one4", "two4", "three4", "four4", "five4", "six4" }, new string[] { "one5", "two5", "three5", "four5", "five5", "six5" }, new string[] { "one6", "two6", "three6", "four6", "five6", "six6" }, new string[] { "one7", "two7", "three7", "four7", "five7", "six7" }, new string[] { "one8", "two8", "three8", "four8", "five8", "six8" } }; foreach (string[] array in jaggedArray) { foreach (string value in array) { Console.WriteLine(value); } Console.WriteLine(); }עבור האפליקציה Contoso Pets,
forforeachקל יותר להשתמש במערך מחרוזות רב-ממדי ולולאות מקוננות במקום במערך משוננים ולולאות מקוננות. כעת, לאחר שאתה רואה כיצד כל אפשרות פועלת, באפשרותך לבצע בחירה משלך בפרוייקטי קידוד עתידיים.בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.
כדי לפתוח את המסוף שילוב מתוך תצוגת EXPLORER, לחץ באמצעות לחצן העכבר הימני על Starter ולאחר מכן בחר פתח במסוף משולב. באפשרותך גם להשתמש בתפריט תצוגה אומסוף כדי לפתוח את לוח המסוף המשולב.
כדי לבנות את התוכנית שלך, הזן את
dotnet buildהפקודה משורת הפקודה של Terminal.תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.
זכור כי הודעות השגיאה והאזהרות של גירסת Build מספרות לך מה הבעיה והיכן ניתן למצוא אותה. בעת פתרון בעיות, מומלץ להתחיל עם הבעיות המתרחשות בסמוך לחלק העליון של הקוד ולפתר את הבעיה.
סגור את לוח המסוף.
בדוק אם יש נתונים קיימים של חיית מחמד והצג תוצאת תצוגה
במשימה זו, תשתמש במשפט כדי if למצוא כל חיית מחמד במערך ourAnimals שהוקצו לו נתוני מאפייני חיית מחמד. כאשר נמצאה חיית מחמד עם נתונים שהוקצו, אתה מציג את ה- petID. כאשר לא הוקצו נתונים, לא מוצג דבר. הפעל את הקוד כדי לוודא שהצהרה for שלך if פועלת כראוי.
צור שורת קוד ריקה בתוך בלוק קוד
forהמשפט באופן הבא:for (int i = 0; i < maxPets; i++) { }כדי ליצור משפט
ifשבו בודק אם קיימים נתוני מזהה חיית מחמד, עדכן את הקוד באופן הבא:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { } }קח דקה כדי לשקול מה הצהרה
ifזו מבצעת ומדוע.תחילה, שקול את הצד השמאלי של הביטוי:
ourAnimals[i, 0]. שים לב שמשתנה פקד הלולאהiמשמש לציון בעלי החיים הנבדקים. כפי שאתה זוכר, in0[i, 0]תואם למאפייןpetID. מאחר שהממד הראשון של המערך תואם ל"מספר" של בעלי החיים,petIDצד זה של הביטוי מבטיח שהקוד שלך יבדוק את הערך שהוקצה לכל בעל חיים במערך.שנית, שקול לבחור אופרטור השוואה. שים לב כי נעשה שימוש באופרטור שאינו שווה ל
!=- , . הביטוי מוערך בכלtrueפעם שהערך שהוקצה ל- petID,ourAnimals[i, 0], אינו שווה לערך המפורט בצד השמאלי של המשוואה.שלישית, שקול את הערך בצד השמאלי של המשוואה. שים לב כי נעשה שימוש בערך מחרוזת סטטית
"ID #: "של. זהו ערך ברירת המחדל שהוקצהpetIDל- בעת יצירת הנתונים לדוגמה. כאשר מאפיינים מוקצים לבעלי חיים,petIDהערך מתעדכן ולא יהיה שווה לערך ברירת המחדל.פעולה זו מציינת שבלוק הקוד של
ifהמשפט יופעל כאשר לבעלי החיים הנוכחיים יש מאפיינים מוגדרים.הערה
זוהי דוגמה טובה למ מתי
!=יש להשתמש. לא אכפת לך באיזה ערך מוקצה כלpetIDעוד הוא אינו ערך ברירת המחדל.כדי ליצור
Console.WriteLine()שיטה המציגה את בלוקpetIDהקודifשל המשפט, עדכן את הקוד באופן הבא:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }שים לב שרכיב מערך יכול לשמש כארגומנט בעת קריאה לפעולת
WriteLine()השירות.בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב והזן את הפקודה כדי לבנות את התוכנית שלך.
תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.
בשורת הפקודה של Terminal, הזן את הפקודה כדי להפעיל את התוכנית.
הזן את
dotnet runהפקודה בשורת הפקודה של המסוף כדי להפעיל את קוד התוכנית.אם הקוד שלך יוצר שגיאת זמן ריצה, תקן את השגיאות, שמור את העדכונים והפעל מחדש את היישום.
בשורת הפקודה של Terminal, כדי לוודא שלוגיקת הקוד החדש פועלת כצפוי, הזן 1
אתה אמור לראות את הערכים
petIDהבאים מוצגים:ID #: d1 ID #: d2 ID #: c3 ID #: c4 Press the Enter key to continue.זהות זו תואמת לחיות מחמד שהוקצו נתונים.
אם הקוד שלך מציג פלט שונה בעת בחירת אפשרות תפריט 1, סקור ועדכן את הקוד שלך. זכור שעליך לשמור את קובץ ה- Program.cs שלך לאחר ביצוע עדכונים.
צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.
הצג את כל מאפייני חיית המחמד עבור חיות מחמד עם נתונים מוקצים
במשימה זו, אתה יוצר לולאה for בתוך if בלוק קוד המשפט המשמש להצגת כל המאפיינים של חיית המחמד הנוכחית.
בעורך הקוד, אתר את שורות הקוד הבאות בקובץ Program.cs הבא:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }כדי ליצור לולאה
forשתחזור על לאורך המאפיינים של כל חיית מחמד, עדכן את הקוד באופן הבא:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { } } }שים לב שיש לך כעת לולאה
forשניה "מקוננת" בתוך בלוק הקוד של הלולאהforהראשונה. כפי שאתה יודע, הלולאה היוצאת חוזרת דרך בעלי החיים במערךourAnimals. הכוונה היא ללולאה הפנימית לחזרה באמצעות המאפיינים של כל בעל חיים. מאחר נתוני בעלי החיים מאוחסנים במערך רב-ממדי, יהיה קל לגשת למאפיינים של בעלי חיים.הת להימשך דקה כדי לסקור
forאת ההצהרה שהזנת.שים לב שמשתנה פקד הלולאה נקרא
j. כאשר אתה מקנןforלולאות, גישה רגילה אחת היאiלהשתמש בלולאה חריגה ולולאהjהפנימית. מעקב אחר מוסכמות כגון זה מקל על אחרים לקרוא את הקוד שלך.מאחר ששה מאפיינים מאוחסנים עבור כל בעל חיים, עבור initializer הוא
int j = 0;ו התנאי for הואj < 6;. שילוב זה של אתחול ותאי תואם לטווח אינדקס המערך הדרוש,0-5.כדי להציג כל מאפיין של חיית מחמד בשורה נפרדת, עדכן את הקוד באופן הבא:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }קח דקה כדי לשקול את המבנה המקונן שיצרת ואת הפלט המוצג שהקוד שלך יפיק.
שים לב שהערך שנכתב בקונסולה,
ourAnimals[i, j], משתמש במשתנה פקד הלולאה הן מה ולולאה הפנימית והן מהforלולאה פנימית.אתה מכיר את כל הפריטים הבאים:
- הממד הראשון של המערך
ourAnimalsתואם לחיות מחמד שונות. - הממד השני של המערך
ourAnimalsתואם למאפיינים של כל חיית מחמד. - המשפט
ifמונע הפעלה של לולאה פנימית כאשר לא הוקצו נתוני חיית מחמד ל חיית המחמד הנוכחית. - הלולאה הפנימית משלים את כל איטראציותיה עבור כל איטראציה של הלולאה העליונה.
לכן, אתם יודעים שהמאפיינים של כל בעל חיים יוצגו כמתוכנן.
- הממד הראשון של המערך
כדי להחליף את הודעת petID ריקה,
WriteLine()עדכן את הקוד באופן הבא:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }עדכון סופי זה מקל עליך לראות את ההפרדה בין חיות מחמד כאשר הפלט מוצג לקונסולה.
בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח חלונית מסוף ובנה את התוכנית.
תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.
בדוק את העבודה שלך
במשימה זו, אתה מפעיל את היישום forif שלך ממסוף משולב ואמת שהשילוב המקונן של וההצהרה שלך מפיק את התוצאה הצפויה.
במידת הצורך, פתח את לוח המסוף המשולב של Visual Studio Code.
בשורת הפקודה של Terminal, הזן dotnet run
בשורת הפקודה של המסוף, הזן 1
ודאו כי נתוני חיית המחמד מוצגים עבור ארבע חיות מחמד שהוקצו להם נתונים.
ID #: d1 Species: dog Age: 2 Nickname: lola Physical description: medium sized cream colored female golden retriever weighing about 65 pounds. housebroken. Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses. ID #: d2 Species: dog Age: 9 Nickname: loki Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken. Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs. ID #: c3 Species: cat Age: 1 Nickname: Puss Physical description: small white female weighing about 8 pounds. litter box trained. Personality: friendly ID #: c4 Species: cat Age: ? Nickname: Physical description: Personality: Press the Enter key to continue.הערה
אם אינך רואה את התוצאות הצפויות מוצגות, ודא ששמרת את הקובץ המעודכן Program.cs שלך. אם אינך רואה את התוצאות הצפויות ולא ניתן לזהות את הבעיה, באפשרותך לבחון את Program.cs השגיאה בתיקיה סופית. התיקיה סופית נכללת כחלק מההורדה שהשלמת במהלך ההתקנה. מומלץ להקדיש זמן בניסיון לזהות ולפתור בעיה בתחביר ובלוגיקה בקוד לפני בדיקת Program.cs הקובץ בתיקיה סופית.
צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.