תרגיל - בנה ובדוק לולאה להזנת נתוני חיית מחמד חדשים
בתרגיל זה, מפתחים קוד הקובע את הקלט של נתוני מערך ourAnimals חדשים. עליך לחשב את הערכים ההתחלתיים של משתני בקרת הלולאה ולבנות את הלולאה שאוסף את הנתונים שצוינו על-ידי המשתמש עבור בעלי החיים. המשימות המפורטות שאתה משלים במהלך תרגיל זה הן:
- חשב petCount: כתוב קוד שסופר את מספר חיות המחמד
ourAnimalsבמערך שהקצו נתונים. - הודעות מותנים: כתוב קוד כדי להציג פלט הודעה כאשר הוא
petCountקטן מ-maxPets. - לולאה חיצוניים: בנה מבנה לולאה שישמש להזנת נתוני מערך
ourAnimalsחדשים. - קריטריוני יציאה: כתוב קוד המעריכה את תנאי היציאה עבור הלולאה "הזן את נתוני המערך החדשים שלAnimals".
- בדיקת אימות: בצע בדיקות אימות עבור הקוד שפיתת בתרגיל זה.
חשוב
עליך להשלים את התרגיל הקודם במודול זה לפני שתתחיל בתרגיל זה.
ספירת מספר החיות במערך האנימציה שלנו
במשימה זו, forourAnimals תגדיר את קריטריוני היציאה עבור לולאת הזנת הנתונים שלך ותיצור לולאה שבה ניתן להשתמש כדי לספור את מספר החיות בנתונים שהוקצו.
ודא ש- Visual Studio Code פתוח ושקובץ ה- Program.cs שלך גלוי בעורך.
אתר את
switch(menuSelection)המשפט ולאחר מכן אתר את שורתcase "2":הקוד.אתר את
Console.WriteLine()המשפט המציג את ההודעה "בקרוב" ולאחר מכן החלף אותו בשורת קוד ריקה.בשורת הקוד הריקה שיצרת, כדי להצהיר על המשתנים
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יהיה גבוה יותר. זכור לשמור על טווח המשתנים שלך באופן מצומצם ככל האפשר, ולהגדיל את הטווח רק כאשר הוא נחוצה.בשורת הקוד מתחת להצהרות המשתנה שלך,
ourAnimalsכדי ליצור לולאה שעוברת דרך בעלי החיים במערך, הזן את הקוד הבא:for (int i = 0; i < maxPets; i++) { }קוד זה אמור להיראות מוכר. תשתמש בלולאה זו
forבכל פעם שתחזור שוב דרך המערךourAnimals.בתוך בלוק הקוד של הלולאה
forשלנו, כדי לבדוק אם נתוני מאפייני חיית המחמד הוקצו לבעלי חיים, הזן את הקוד הבא:if (ourAnimals[i, 0] != "ID #: ") { }שוב, הקוד אמור להיראות מוכר. תשתמש בהצהרה זו
ifבכל פעם שתבדוק אם הוקצתו מאפייני חיית מחמד.בתוך בלוק הקוד של הקוד
ifשיצרת, כדי לשנות את גודלוpetCountב- 1, הזן את הקוד הבא:petCount += 1;קח דקה כדי לבדוק את לולאת ההשלמה
forשלך.הלולאה
forשהושלמה אמורה להיראות כמו הקוד הבא:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { petCount += 1; } }קוד זה יעיין בלולאה בבדיקת
ourAnimalsהמערך אם קיימים נתונים שהוקצו. כאשר הוא מוצא בעל חיים עם נתונים שהוקצו לו, הוא מצטברpetCounter.בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.
כדי לפתוח את המסוף שילוב מתוך תצוגת EXPLORER, לחץ באמצעות לחצן העכבר הימני על Starter ולאחר מכן בחר פתח במסוף משולב. באפשרותך גם להשתמש בתפריט תצוגה אומסוף כדי לפתוח את לוח המסוף המשולב.
כדי לבנות את התוכנית שלך, הזן את
dotnet buildהפקודה משורת הפקודה של Terminal.תקן שגיאות Build שאתה רואה שדווחו לפני שתמשיך.
הערה
בשלב זה, באפשרותך להתעלם מהודעת האזהרה לגבי ההקציה
anotherPetאך מעולם לא נעשה בה שימוש. תוסיף קוד שמשתמש בוanotherPetבהמשך תרגיל זה.אם יש לך שגיאות גירסת Build, זכור כי הודעות השגיאה האזהרה של גירסת ה- Build מספרות לך מהי הבעיה והיכן ניתן למצוא אותה. אם תעדכן את הקוד, זכור לשמור את השינויים לפני שתבנה מחדש.
סגור את לוח המסוף.
הצג פלט הודעה כאשר petCount קטן מ- maxPets
במשימה זו, אתה בודק אם petCount היא נמוכה maxPets מ- ואם כן, אתה מציג הודעה עבור המשתמש.
בשורת קוד ריקה מתחת ללופ
forשיצרת, כדי לראות אם הואpetCountקטן מ-maxPets, הזן את הקוד הבא:if (petCount < maxPets) { }בתוך בלוק הקוד של המשפט
if, כדי להציג הודעה למשתמש, הזן את הקוד הבא:Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");משתמשי היישום עומד להזין מאפייני חיית מחמד. הודעה זו מספקת הקשר חשוב.
קח דקה כדי לסקור את
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;בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.
תקן שגיאות Build שאתה רואה שדווחו לפני שתמשיך.
שוב, באפשרותך להתעלם מהודעת האזהרה לגבי ההקציה
anotherPet, אך מעולם לא נעשה בה שימוש. במשימה הבאה, תתחיל לבנות את הלולאהwhileהמשמשת להזנת הנתונים עבור חיות מחמד אחד או יותר. הביטוי שתיצור עבור הלולאהwhileישתמשanotherPetוהודעת אזהרה זו תיעלם.זכור, הודעות אזהרה הן דברים שעליך לדאוג להם, אך הן לא ימנעו ממך להפעיל את התוכנית.
בשורת הפקודה של Terminal, הזן את הפקודה כדי להפעיל את התוכנית.
הזן את
dotnet runהפקודה בשורת הפקודה של המסוף כדי להפעיל את קוד התוכנית.כל עוד הקוד שלך אינו יוצר שגיאת זמן ריצה, התפריט הראשי של האפליקציה אמור להיות מוצג כעת בלוח המסוף.
בשורת הפקודה של המסוף, הזן 2
ערך זה תואם לענף
case "2":הקוד שלך.ודא שההודעה הבאה מוצגת במסוף.
We currently have 4 pets that need homes. We can manage 4 more. Press the Enter key to continue.אם אינך רואה את ההודעה הצפויה מוצגת, סקור את הקוד שלך כדי לזהות ולפתור את הבעיה. שמור את השינויים, בנה מחדש והפעל שוב את היישום. הקפד להפעיל קוד כצפוי לפני שתמשיך.
בשורת הפקודה של המסוף, הקש Enter כדי להמשיך בהפעלת היישום.
צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.
בניית מבנה לולאה שישמש להזנת נתוני המערך החדשים של 'הנפשות'
במשימה זו, תיצור while לולאה ממשיכה לחזרה כל עוד היא anotherPet שווה y ל- ופחות petCount מ- maxPets.
בעורך הקוד, צור שורת קוד ריקה מתחת לבלוק
if (petCount < maxPets)הקוד.כדי להתחיל בתהליך יצירת הלולאה החדשה
while, הזן את הקוד הבא:while (anotherPet == "y" && petCount < maxPets) { }בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.
שים לב שאינך מקבל עוד את הודעת האזהרה אודות
anotherPetלא בשימוש.אם דווחו שגיאות Build או אזהרות, תקן את הבעיות לפני שתמשיך.
בדוק את תנאי היציאה עבור לולאת חיות מחמד חדשות
במשימה זו, אתה מעדכן את while (anotherPet == "y" && petCount < maxPets) בלוק הקוד. הקוד החדש מופיע בהפרשים קבועים petCount ולאחר מכן בודק אם הוא petCount קטן מ- maxPets. אם petCount הוא קטן מ maxPets- , שאל את המשתמש אם הוא מעוניין להזין מידע עבור חיית מחמד אחרת, וודא שהתגובה היא או yn. לאחר בלוק while (anotherPet == "y" && petCount < maxPets) הקוד, בדוק את הערך של petCount. אם petCount שווה ל- maxPets, אתה מודיע למשתמש שלא ניתן להוסיף חיות מחמד נוספות.
הערה
הקוד המשמש להזנת נתוני חיית מחמד פותח בתרגיל הבא. בשלב זה, petCount הוא מצטבר כאילו נתונים הוזנו ונשמרו במערך ourAnimals . פעולה זו מאפשרת לך לסיים לפתח את לוגיקת הקוד המשויכת ללופ while .
צור שורת קוד ריקה בתוך בלוק הקוד של הלולאה
while (anotherPet == "y" && petCount < maxPets)שיצרת במשימה הקודמת.כדי להזין את
petCountהקוד הבא, הזן אותו:// increment petCount (the array is zero-based, so we increment the counter after adding to the array) petCount = petCount + 1;כדי לבדוק אם
petCountקטן מ-maxPets, הזן את הקוד הבא:// check maxPet limit if (petCount < maxPets) { }בתוך בלוק הקוד של המשפט
ifשיצרת, כדי לשאול את המשתמש אם הוא רוצה להוסיף חיית מחמד אחרת, הזן את הקוד הבא:// another pet? Console.WriteLine("Do you want to enter info for another pet (y/n)");מתחת להודעה
WriteLine()שהזנת, כדי לקרוא את תגובת המשתמש ולהבטיח שהמשתמש הזין "y" או "n", הזן את הקוד הבא:do { readResult = Console.ReadLine(); if (readResult != null) { anotherPet = readResult.ToLower(); } } while (anotherPet != "y" && anotherPet != "n");אתר את
breakהמשפט הנפרדcase "2";מהצהרהcase "3";switchשלך.שים לב
Console.WriteLine()להצהרהConsole.ReadLine()ולהצהרה בסוף הקודcase "2";שלנו.קוד זה מציג הודעה למשתמש ולאחר מכן משהה את היישום.
כדי לתחום את
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. עליך לאפשר למשתמש לדעת מתי הדבר מתרחש.כדי ליידע את המשתמש כי חיות מחמד 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":הת להימשך דקה כדי לסקור את הקוד
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(); }בתפריט קוד Visual Studio קובץ, בחר שמור.
פתח את לוח המסוף המשולב בקוד Visual Studio והזן את הפקודה כדי לבנות את התוכנית שלך.
תקן שגיאות Build או אזהרות שאתה רואה שדווחו לפני שתמשיך.
בדוק את העבודה שלך
במשימה זו, עליך להפעיל את היישום שלנו ממסוף משולב ולוודא שלווגיקת הלולאה וההסתעפות שיצרת פועלת כצפוי.
במידת הצורך, פתח את לוח המסוף המשולב של Visual Studio Code.
בשורת הפקודה של Terminal, הזן dotnet run
בשורת הפקודה של המסוף, הזן 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)בשורת הפקודה של Terminal, הזן n
ודא שהקוד שלך יוצא מה לולאה להזנת חיות מחמד חדשות כאשר הזנת "n".
אם לוגיקת הקוד שלך פועלת כצפוי, אתה אמור לראות את התפריט הראשי מוצג במסוף.
אם הקוד שלך אינו יוצא מה ולולאה כצפוי, הקש Ctrl + C במסוף כדי לכפות את הביצוע להפסיק. עליך לעבור את הקוד באופן ידני ולעקוב אחר הערכים של משתני קריטריוני היציאה. עדכן את הקוד במידת הצורך כדי לוודא שאתה יוצא מה ולולאה
whileכאשר המשתמש מזין "n". שמור את השינויים, בנה מחדש את התוכנית ובצע את בדיקת האימות כדי לחזור בשלב זה.בשורת הפקודה של המסוף, הזן 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)בשורת הפקודה של Terminal, הזן y
קח דקה כדי לשקול כיצד
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 בפעם הראשונה).
- הלולאה
זכור ניתוח זה של לוגיקת הקוד כאשר תמשיך לבדוק את היישום.
שים לב שלוח המסוף מתעדכן באותה הודעת "חיית מחמד אחרת?", אך הקוד שלך אינו מציג הודעת מעודכן
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)בשורת הפקודה של Terminal, הזן y
כאשר אתה מזין
yפעם נוספת,petCountהוא מופרש ל-7. כךpetCountהוא עדיין קטן מ-maxPetsבשורת הפקודה של Terminal, הזן y
כאשר אתה מזין
yפעם שלישית,petCountהוא מופרש ל-8. כךpetCountהוא כעת שווה לmaxPetsודא שהקוד שלך יוצא מה ולולאה
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.בשורת הפקודה של המסוף, הקש Enter כדי להמשיך בהפעלת היישום.
צא מהאפליקציה ולאחר מכן סגור את לוח המסוף.