תרגיל - כתוב קוד כדי להציג את כל נתוני המערך שלAnimals

הושלמה

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

  1. לולאה בחוץ: בנה את הלולאה היוצאת שעוברת דרך החיות במערך ההנפשה שלנו.
  2. בדיקת נתונים: כתוב קוד שמבדוק אם קיימים נתונים של חיית מחמד ומציג את מזהה חיית המחמד אם קיימים נתונים עבור חיית מחמד.
  3. לולאה פנימית: בנה לולאה פנימית המציגה את כל מאפייני חיית המחמד עבור חיות מחמד עם נתונים שהוקצו.
  4. בדיקת אימות: בצע בדיקות אימות עבור הקוד שפיתת בתרגיל זה.

חשוב

עליך להשלים את התרגיל הקודם במודול זה לפני שתתחיל בתרגיל זה.

בניית לולאה לחזרה באמצעות מערך האנימציה שלנו

במשימה זו, תיצור את for הלולאה היוצאת המשמשת לחזרה באמצעות בעלי החיים במערך ourAnimals . אתה בוחן את קשר הגומלין בין ממדי המערך לבין הפרמטרים של הלולאה for . עליך גם לשקול את ההבדלים בין for שימוש במשפטים foreach במשפטים בעת עבודה עם מערכים רב-ממדיים.

  1. ודא ש- Visual Studio Code פתוח ושקובץ ה- Program.cs שלך גלוי בעורך.

  2. בתוך בלוק הקוד של משפט 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;
    
  3. מחק את Console.WriteLine() המשפט המשמש להצגת ההודעה "בקרוב", והשאר שורת קוד ריקה מתחת לשורת // List all of our current pet information ההערות של הקוד.

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

    השאר את ההודעה המציינת Press the Enter key to continue.

  4. החל משורת הקוד הריקה שיצרת, התחל משפט for באופן הבא:

    for ()
    {
    }
    
  5. קח דקה כדי לשקול את מה שאתה צריך כדי להשיג בהצהרה 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.

  6. כדי לציין את ערך הפקד של הלולאה for , עדכן את הקוד באופן הבא:

    for (int i = 0; i < maxPets; i++)
    {
    }
    

    כפי שניתן לראות, הגדרת המאתחל ליישורint i = 0; לאינדקס המערך המבוסס על אפס. בדומה, הגדרת התנאי עבור כדיi < maxPets; ליישר לממד הראשון של המערך. לבסוף, הגדרת עבור ה- Iterator כך i++ שתרווחים את ערך פקד הלולאה שלך 1 על-ידי עבור כל אחת מהפעולות הדרגתיות.

  7. קח דקה כדי לשקול את הבחירה בין 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 קל יותר להשתמש במערך מחרוזות רב-ממדי ולולאות מקוננות במקום במערך משוננים ולולאות מקוננות. כעת, לאחר שאתה רואה כיצד כל אפשרות פועלת, באפשרותך לבצע בחירה משלך בפרוייקטי קידוד עתידיים.

  8. בתפריט קוד Visual Studio קובץ, בחר שמור.

  9. פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.

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

    כדי לבנות את התוכנית שלך, הזן את dotnet build הפקודה משורת הפקודה של Terminal.

  10. תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.

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

  11. סגור את לוח המסוף.

בדוק אם יש נתונים קיימים של חיית מחמד והצג תוצאת תצוגה

במשימה זו, תשתמש במשפט כדי if למצוא כל חיית מחמד במערך ourAnimals שהוקצו לו נתוני מאפייני חיית מחמד. כאשר נמצאה חיית מחמד עם נתונים שהוקצו, אתה מציג את ה- petID. כאשר לא הוקצו נתונים, לא מוצג דבר. הפעל את הקוד כדי לוודא שהצהרה for שלך if פועלת כראוי.

  1. צור שורת קוד ריקה בתוך בלוק קוד for המשפט באופן הבא:

    for (int i = 0; i < maxPets; i++)
    {
    
    }    
    
  2. כדי ליצור משפט if שבו בודק אם קיימים נתוני מזהה חיית מחמד, עדכן את הקוד באופן הבא:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
        }
    }    
    
  3. קח דקה כדי לשקול מה הצהרה if זו מבצעת ומדוע.

    תחילה, שקול את הצד השמאלי של הביטוי: ourAnimals[i, 0]. שים לב שמשתנה פקד הלולאה i משמש לציון בעלי החיים הנבדקים. כפי שאתה זוכר, in 0[i, 0] תואם למאפיין petID . מאחר שהממד הראשון של המערך תואם ל"מספר" של בעלי החיים, petID צד זה של הביטוי מבטיח שהקוד שלך יבדוק את הערך שהוקצה לכל בעל חיים במערך.

    שנית, שקול לבחור אופרטור השוואה. שים לב כי נעשה שימוש באופרטור שאינו שווה ל !=- , . הביטוי מוערך בכל true פעם שהערך שהוקצה ל- petID, ourAnimals[i, 0], אינו שווה לערך המפורט בצד השמאלי של המשוואה.

    שלישית, שקול את הערך בצד השמאלי של המשוואה. שים לב כי נעשה שימוש בערך מחרוזת סטטית "ID #: " של. זהו ערך ברירת המחדל שהוקצה petID ל- בעת יצירת הנתונים לדוגמה. כאשר מאפיינים מוקצים לבעלי חיים, petID הערך מתעדכן ולא יהיה שווה לערך ברירת המחדל.

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

    הערה

    זוהי דוגמה טובה למ מתי != יש להשתמש. לא אכפת לך באיזה ערך מוקצה כל petID עוד הוא אינו ערך ברירת המחדל.

  4. כדי ליצור Console.WriteLine() שיטה המציגה את בלוק petID הקוד if של המשפט, עדכן את הקוד באופן הבא:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    

    שים לב שרכיב מערך יכול לשמש כארגומנט בעת קריאה לפעולת WriteLine() השירות.

  5. בתפריט קוד Visual Studio קובץ, בחר שמור.

  6. פתח את לוח המסוף המשולב והזן את הפקודה כדי לבנות את התוכנית שלך.

  7. תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.

  8. בשורת הפקודה של Terminal, הזן את הפקודה כדי להפעיל את התוכנית.

    הזן את dotnet run הפקודה בשורת הפקודה של המסוף כדי להפעיל את קוד התוכנית.

    אם הקוד שלך יוצר שגיאת זמן ריצה, תקן את השגיאות, שמור את העדכונים והפעל מחדש את היישום.

  9. בשורת הפקודה של Terminal, כדי לוודא שלוגיקת הקוד החדש פועלת כצפוי, הזן 1

    אתה אמור לראות את הערכים petID הבאים מוצגים:

    ID #: d1
    ID #: d2
    ID #: c3
    ID #: c4
    Press the Enter key to continue.
    

    זהות זו תואמת לחיות מחמד שהוקצו נתונים.

    אם הקוד שלך מציג פלט שונה בעת בחירת אפשרות תפריט 1, סקור ועדכן את הקוד שלך. זכור שעליך לשמור את קובץ ה- Program.cs שלך לאחר ביצוע עדכונים.

  10. צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.

הצג את כל מאפייני חיית המחמד עבור חיות מחמד עם נתונים מוקצים

במשימה זו, אתה יוצר לולאה for בתוך if בלוק קוד המשפט המשמש להצגת כל המאפיינים של חיית המחמד הנוכחית.

  1. בעורך הקוד, אתר את שורות הקוד הבאות בקובץ Program.cs הבא:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    
  2. כדי ליצור לולאה 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 . הכוונה היא ללולאה הפנימית לחזרה באמצעות המאפיינים של כל בעל חיים. מאחר נתוני בעלי החיים מאוחסנים במערך רב-ממדי, יהיה קל לגשת למאפיינים של בעלי חיים.

  3. הת להימשך דקה כדי לסקור for את ההצהרה שהזנת.

    שים לב שמשתנה פקד הלולאה נקרא j. כאשר אתה מקנן for לולאות, גישה רגילה אחת היא i להשתמש בלולאה חריגה ולולאה j הפנימית. מעקב אחר מוסכמות כגון זה מקל על אחרים לקרוא את הקוד שלך.

    מאחר ששה מאפיינים מאוחסנים עבור כל בעל חיים, עבור initializer הוא int j = 0; ו התנאי for הוא j < 6;. שילוב זה של אתחול ותאי תואם לטווח אינדקס המערך הדרוש, 0 - 5.

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

    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]);
            }
        }
    }    
    
  5. קח דקה כדי לשקול את המבנה המקונן שיצרת ואת הפלט המוצג שהקוד שלך יפיק.

    שים לב שהערך שנכתב בקונסולה, ourAnimals[i, j], משתמש במשתנה פקד הלולאה הן מה ולולאה הפנימית והן מה for לולאה פנימית.

    אתה מכיר את כל הפריטים הבאים:

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

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

  6. כדי להחליף את הודעת 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]);
            }
        }
    }    
    

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

  7. בתפריט קוד Visual Studio קובץ, בחר שמור.

  8. פתח חלונית מסוף ובנה את התוכנית.

  9. תקן שגיאות או אזהרות של גירסת Build שאתה רואה שדווחו לפני שתמשיך.

בדוק את העבודה שלך

במשימה זו, אתה מפעיל את היישום forif שלך ממסוף משולב ואמת שהשילוב המקונן של וההצהרה שלך מפיק את התוצאה הצפויה.

  1. במידת הצורך, פתח את לוח המסוף המשולב של Visual Studio Code.

  2. בשורת הפקודה של Terminal, הזן dotnet run

  3. בשורת הפקודה של המסוף, הזן 1

  4. ודאו כי נתוני חיית המחמד מוצגים עבור ארבע חיות מחמד שהוקצו להם נתונים.

    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 הקובץ בתיקיה סופית.

  5. צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.