תרגיל - בנה ובדוק לולאה להזנת נתוני חיית מחמד חדשים

הושלמה

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

  1. חשב petCount: כתוב קוד שסופר את מספר חיות המחמד ourAnimals במערך שהקצו נתונים.
  2. הודעות מותנים: כתוב קוד כדי להציג פלט הודעה כאשר הוא petCount קטן מ- maxPets.
  3. לולאה חיצוניים: בנה מבנה לולאה שישמש להזנת נתוני מערך ourAnimals חדשים.
  4. קריטריוני יציאה: כתוב קוד המעריכה את תנאי היציאה עבור הלולאה "הזן את נתוני המערך החדשים שלAnimals".
  5. בדיקת אימות: בצע בדיקות אימות עבור הקוד שפיתת בתרגיל זה.

חשוב

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

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

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

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

  2. אתר את switch(menuSelection) המשפט ולאחר מכן אתר את שורת case "2": הקוד.

  3. אתר את Console.WriteLine() המשפט המציג את ההודעה "בקרוב" ולאחר מכן החלף אותו בשורת קוד ריקה.

  4. בשורת הקוד הריקה שיצרת, כדי להצהיר על המשתנים anotherPet ו petCount - הזן את הקוד הבא:

    string anotherPet = "y";
    int petCount = 0;
    

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

    • anotherPet מאותחל עם ערך של לפני y תחילת הלולאה while . הוא יקבל ערך שהוקצה למשתמש, או y בתוך הלולאה nwhile.

    • petCount מייצג את מספר בעלי החיים בעלי מאפייני חיית המחמד שהוקצו. יוקצה לו ערך מחושב מחוץ while ללופ שלך, 1while והוא יופרש בתוך הלולאה בכל פעם שהחיות החדשות יתווספו למערך ourAnimals .

    חשוב

    טווח המשתנים צריך להיות תמיד צר ככל האפשר. באפליקציה 'חיות מחמד Contoso', petCount ניתן להגדיר טווח ברמת היישום במקום להגדיר טווח לבלוק case "2": הקוד. הטווח הגדול יותר יאפשר לך לגשת petCount מכל מקום ביישום. אם petCount הטווח היה מסוכם ברמת היישום, באפשרותך להקצות לו ערך בעת יצירת הנתונים לדוגמה וניהול תיכנותי של הערך שלו לאורך שארית היישום. לדוגמה, כאשר תמצא בית עבור חיית מחמד ותסיר את חיית המחמד ממערךourAnimals, תוכל להקטין עד petCount1 . השאלה היא, באיזה רמה עליך להגדיר טווח של משתנה כאשר אינך בטוח אם הוא ישמש בחלקים אחרים של היישום שלך? במקרה זה, מפתה להגדיר טווח ברמת היישום petCount למרות שאינך משתמש בו בשום מקום אחר. אחרי הכל, הגדרת petCount הטווח ברמת היישום מבטיחה שהוא יהיה זמין אם תחליט להשתמש בו במקום אחר. ייתכן שתוכל גם להוסיף טווח למשתנים אחרים ברמת היישום. באופן זה, המשתנים שלך תמיד נמצאים בטווח ונגישים. אז למה לא להשתמש במשתנה טווח ברמת היישום כאשר אתה סבור שניתן להשתמש בהם מאוחר יותר ביישום? הגדרת טווח של משתנים ברמה גבוהה יותר מהצורך עשויה לגרום לבעיות. טווח מלא מנפח את דרישות המשאבים של היישום שלך וייתכן שיחשוף את היישום שלך סיכוני אבטחה מיותרים. ככל שהיישומים שלך הופכים לגדולים ומורכבים יותר, הם דורשים משאבים נוספים. טלפונים ומחשבים מקצה זיכרון למשאבים אלה כאשר הם בטווח. כאשר האפליקציות שלך הופכות ל"עולם אמיתי" יותר, הן הופכות לנגישות יותר. אפליקציות נגישות לעתים קרובות מהענן או מאפליקציות אחרות. בעיות מורכבות אלה, אפליקציות נשארות לעתים קרובות פועלות כאשר לא נעשה בהן שימוש. חשוב לשמור על דרישות המשאבים של היישום תחת שליטה ועל טביעת הרגל של האבטחה, קטנה ככל האפשר. על אף שמערכות ההפעלה של כיום מקיימות עבודה נהדרת בניהול משאבים ואבטחת אפליקציות, עדיין מומלץ לשמור על טווח המשתנים עד לרמה שבה הם נדרשים בפועל. באפליקציה 'חיות מחמד Contoso', petCount אם תחליט להשתמש באופן נרחב יותר בתוך האפליקציה, תוכל לעדכן את הקוד שלך כך שהיקף petCountיהיה גבוה יותר. זכור לשמור על טווח המשתנים שלך באופן מצומצם ככל האפשר, ולהגדיל את הטווח רק כאשר הוא נחוצה.

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

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

    קוד זה אמור להיראות מוכר. תשתמש בלולאה זו for בכל פעם שתחזור שוב דרך המערך ourAnimals .

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

    if (ourAnimals[i, 0] != "ID #: ")
    {
    }
    

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

  7. בתוך בלוק הקוד של הקוד if שיצרת, כדי לשנות את גודלו petCount ב- 1, הזן את הקוד הבא:

    petCount += 1;
    
  8. קח דקה כדי לבדוק את לולאת ההשלמה for שלך.

    הלולאה for שהושלמה אמורה להיראות כמו הקוד הבא:

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

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

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

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

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

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

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

    הערה

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

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

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

הצג פלט הודעה כאשר petCount קטן מ- maxPets

במשימה זו, אתה בודק אם petCount היא נמוכה maxPets מ- ואם כן, אתה מציג הודעה עבור המשתמש.

  1. בשורת קוד ריקה מתחת ללופ for שיצרת, כדי לראות אם הוא petCount קטן מ- maxPets, הזן את הקוד הבא:

    if (petCount < maxPets)
    {
    }
    
  2. בתוך בלוק הקוד של המשפט if , כדי להציג הודעה למשתמש, הזן את הקוד הבא:

    Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
    

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

  3. קח דקה כדי לסקור את case "2": ענף הקוד של ההצהרה switch שלך.

    בשלב זה, ענף case "2": הקוד שלך אמור להיראות כמו הקוד הבא:

    case "2":
        // Add a new animal friend to the ourAnimals array
        string anotherPet = "y";
        int petCount = 0;
        for (int i = 0; i < maxPets; i++)
        {
            if (ourAnimals[i, 0] != "ID #: ")
            {
                    petCount += 1;
            }
    
        }
    
        if (petCount < maxPets)
        {
            Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
        }
    
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
  4. בתפריט קוד Visual Studio קובץ, בחר שמור.

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

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

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

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

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

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

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

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

    ערך זה תואם לענף case "2": הקוד שלך.

  9. ודא שההודעה הבאה מוצגת במסוף.

    We currently have 4 pets that need homes. We can manage 4 more.
    Press the Enter key to continue.
    

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

  10. בשורת הפקודה של המסוף, הקש Enter כדי להמשיך בהפעלת היישום.

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

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

במשימה זו, תיצור while לולאה ממשיכה לחזרה כל עוד היא anotherPet שווה y ל- ופחות petCount מ- maxPets.

  1. בעורך הקוד, צור שורת קוד ריקה מתחת לבלוק if (petCount < maxPets) הקוד.

  2. כדי להתחיל בתהליך יצירת הלולאה החדשה while , הזן את הקוד הבא:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. בתפריט קוד Visual Studio קובץ, בחר שמור.

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

  5. שים לב שאינך מקבל עוד את הודעת האזהרה אודות anotherPet לא בשימוש.

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

בדוק את תנאי היציאה עבור לולאת חיות מחמד חדשות

במשימה זו, אתה מעדכן את while (anotherPet == "y" && petCount < maxPets) בלוק הקוד. הקוד החדש מופיע בהפרשים קבועים petCount ולאחר מכן בודק אם הוא petCount קטן מ- maxPets. אם petCount הוא קטן מ maxPets- , שאל את המשתמש אם הוא מעוניין להזין מידע עבור חיית מחמד אחרת, וודא שהתגובה היא או yn. לאחר בלוק while (anotherPet == "y" && petCount < maxPets) הקוד, בדוק את הערך של petCount. אם petCount שווה ל- maxPets, אתה מודיע למשתמש שלא ניתן להוסיף חיות מחמד נוספות.

הערה

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

  1. צור שורת קוד ריקה בתוך בלוק הקוד של הלולאה while (anotherPet == "y" && petCount < maxPets) שיצרת במשימה הקודמת.

  2. כדי להזין את petCountהקוד הבא, הזן אותו:

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. כדי לבדוק אם petCount קטן מ- maxPets, הזן את הקוד הבא:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. בתוך בלוק הקוד של המשפט if שיצרת, כדי לשאול את המשתמש אם הוא רוצה להוסיף חיית מחמד אחרת, הזן את הקוד הבא:

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. מתחת להודעה WriteLine() שהזנת, כדי לקרוא את תגובת המשתמש ולהבטיח שהמשתמש הזין "y" או "n", הזן את הקוד הבא:

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. אתר את break המשפט הנפרד case "2"; מהצהרה case "3";switch שלך.

  7. שים לב Console.WriteLine() להצהרה Console.ReadLine() ולהצהרה בסוף הקוד case "2"; שלנו.

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

  8. כדי לתחום את Console.WriteLine() המשפטים Console.ReadLine() ובתוך משפט if , עדכן את הקוד באופן הבא:

    
    if (petCount >= maxPets)
    {
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
    break;
    
    case "3":
    

    הערך של petCount מופיע בתוך הלולאה while . אם petCount שווה ל- maxPets, לא ניתן להוסיף עוד חיות מחמד למערך ourAnimals . עליך לאפשר למשתמש לדעת מתי הדבר מתרחש.

  9. כדי ליידע את המשתמש כי חיות מחמד Contoso הגיעו לקיבולת שלהם, עדכן את הקוד באופן הבא:

    
        if (petCount >= maxPets)
        {
            Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
        }
    
        break;
    
    case "3":
    
  10. הת להימשך דקה כדי לסקור את הקוד while בלולאה שלך ואת הודעת המשתמש שיצרת.

    הלולאה while (anotherPet == "y" && petCount < maxPets) והקוד המציגים את הודעת המשתמש אמורים להיראות כמו הקוד הבא:

    while (anotherPet == "y" && petCount < maxPets)
    {
        // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
        petCount = petCount + 1;
    
        // check maxPet limit
        if (petCount < maxPets)
        {
            // another pet?
            Console.WriteLine("Do you want to enter info for another pet (y/n)");
            do
            {
                readResult = Console.ReadLine();
                if (readResult != null)
                {
                    anotherPet = readResult.ToLower();
                }
    
            } while (anotherPet != "y" && anotherPet != "n");
        }
    }
    
    if (petCount >= maxPets)
    {
        Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
  11. בתפריט קוד Visual Studio קובץ, בחר שמור.

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

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

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

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

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

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

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

  4. ודא שאתה רואה את ההודעות הבאות:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  5. בשורת הפקודה של Terminal, הזן n

  6. ודא שהקוד שלך יוצא מה לולאה להזנת חיות מחמד חדשות כאשר הזנת "n".

    אם לוגיקת הקוד שלך פועלת כצפוי, אתה אמור לראות את התפריט הראשי מוצג במסוף.

    אם הקוד שלך אינו יוצא מה ולולאה כצפוי, הקש Ctrl + C במסוף כדי לכפות את הביצוע להפסיק. עליך לעבור את הקוד באופן ידני ולעקוב אחר הערכים של משתני קריטריוני היציאה. עדכן את הקוד במידת הצורך כדי לוודא שאתה יוצא מה ולולאה while כאשר המשתמש מזין "n". שמור את השינויים, בנה מחדש את התוכנית ובצע את בדיקת האימות כדי לחזור בשלב זה.

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

    שוב, תראה את ההודעות הבאות מוצגות:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  8. בשורת הפקודה של Terminal, הזן y

  9. קח דקה כדי לשקול כיצד petCount נעשה שימוש בקוד שלך.

    עליך להבין את לוגיקת הקוד לפני שתוכל לאמת את הקוד.

    במקרה זה, לוגיקת הקוד שלך מסתמכת על קשר הגומלין בין לבין petCountmaxPets. אתה יודע שהוקצה maxPets לו ערך של 8, אבל מה לגבי petCount? הפריטים הבאים עוזרים להעריך את הלוגיקה שהטמעת:

    • אתה יודע שזה petCount כאשר 4 אתה נכנס לאיטרציה הראשונה של הלולאה while .

    • אתה יודע שזה petCount מצטבר בכל פעם שה ולולאה while חוזרת על דרכה.

    • אתה יודע שהערך שהוקצה ל petCount והאופן שבו הוא petCount מצטבר משפיעים על אופן אחסון הנתונים במערך ourAnimals . הפריטים הבאים מסבירים את קשר הגומלין petCount בין הנתונים המאוחסנים ב- ourAnimals:

      • היישום מוסיף ארבע חיות מחמד למערך ourAnimals כאשר הוא יוצר את הנתונים לדוגמה.
      • היישום מאחסן נתונים חדשים במערך ourAnimals כאשר הערך של הוא petCount4. זה לא באג. הקוד הגיוני כאשר אתה זוכר שרכיבים במערך מבוססים על אפס. לדוגמה, מכיל ourAnimals[0,0] את מזהה חיית המחמד של בעל 1 חיים והוא ourAnimals[3,0] מכיל את מזהה חיית המחמד של בעלי חיים 4. לכן, כאשר petCount4 אתה מאחסן נתונים עבור חיית המחמד החמישית.
      • היישום יאחסן נתוני חיית מחמד במערך לפני שהוא יתפרש petCount.
      • היישום מצטבר לפני שהוא petCount מבקש מהמשתמש להוסיף חיית מחמד אחרת.
      • כאשר היישום מציג את ההנחיה האם ברצונך להזין מידע עבור חיית מחמד אחרת (y/n) בפעם הראשונה, petCount כבר מוגדרת ל- 5.
    • אם המשתמש מזין y בהתחלה האם ברצונך להזין מידע עבור בקשה אחרת של חיית מחמד (y/n), אתה יודע כי:

      • הלולאה while (anotherPet == "y" && petCount < maxPets) תתחזר. אתה יודע שה ולולאה חוזרת על הפעולה כי anotherPet == "y" ו- petCount < maxPets.
      • הערך שהוקצה ל petCount יופיע בהפרש קבוע (כאשר הלולאה while חוזרת).
      • הערך שהוקצה ל petCount יהיה 6 (לאחר שהמשתמש מזין y בפעם הראשונה).

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

  10. שים לב שלוח המסוף מתעדכן באותה הודעת "חיית מחמד אחרת?", אך הקוד שלך אינו מציג הודעת מעודכן petCount.

    לוח המסוף אמור להציג כעת את הפלט הבא:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    
  11. בשורת הפקודה של Terminal, הזן y

    כאשר אתה מזין y פעם נוספת, petCount הוא מופרש ל- 7. כך petCount הוא עדיין קטן מ- maxPets

  12. בשורת הפקודה של Terminal, הזן y

    כאשר אתה מזין y פעם שלישית, petCount הוא מופרש ל- 8. כך petCount הוא כעת שווה ל maxPets

  13. ודא שהקוד שלך יוצא מה ולולאה while כאשר אתה מזין y בפעם השלישית.

    לוח המסוף אמור להציג כעת את הפלט הבא:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    We have reached our limit on the number of pets that we can manage.
    Press the Enter key to continue.
    

    אם הקוד שלך אינו יוצא מהלולאה כצפוי, בצע את שלבי הקוד באופן ידני ועקוב אחר הערכים של משתני קריטריוני היציאה. עדכן את הקוד שלך כדי לוודא שאתה יוצא מה ולולאה petCount כאשר הוא מגיע לערך השווה ל- maxPets. המשך לענות על "y" עד שתדע petCount שהוא שווה ל maxPets- , שיש לו ערך ברירת מחדל של 8.

  14. בשורת הפקודה של המסוף, הקש Enter כדי להמשיך בהפעלת היישום.

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