תרגיל - בניית מבנה לולאה מקונן עבור חישובי ציון תלמיד
בתרגיל זה, עליך להוסיף מערך מחרוזות כדי להכיל את שמות התלמידים ולאחר foreach
מכן ליישם מבנה מקונן המדרג דרך שמות התלמידים בלולאה החיצונית ותוצאות התלמידים בלולאה הפנימית. התחל על-ידי בניית המערך studentNames
ולולאה foreach
שעוברת דרך רכיבי המערך. בשלב הבא, תעביר את הקוד המשמש לחישוב הציונים של סופיה בבלוק הקוד של הלולאה "שמות". לבסוף, עליך ליישם את לוגיקת הקוד המשתמשת בשם התלמיד כדי לגשת למערך הציונים שלו, לחשב את הציון הממוצע שלו ולכתוב את הציון שלו בקונסולה. המשימות המפורטות שאתה משלים במהלך תרגיל זה הן:
יצירת מערך שמות: צור מערך שמות תלמידים.
יצירת לולאה גורמת ליצירת לולאה
foreach
לאורך שמות התלמידים.פיתוח בלוק קוד לולאה החוצה: שנה את המיקום של הקוד המחשב ומדוחות על הציון של סופיה, ומקם אותו בבלוק הקוד של לולאת "השמות".
עדכון חישובים ודיווח: עדכן את הקוד המבצע חישובי ניקוד של תלמיד באמצעות מערך ניקוד חדש.
חשוב
עליך להשלים את התרגיל הקודם במודול זה, "יצירת מערכים ולולאות מערך", לפני שתתחיל בתרגיל זה.
יצירת מערך של שמות תלמידים ולולאת התמיכה היוצאת
במשימה זו, תיצור מערך foreach
שמות תלמידים ולולאה שעוברת דרך שמות התלמידים.
ודא שקובץ ה- Program.cs פתוח בעורך הקוד של Visual Studio.
גלול לחלק העליון של קובץ הקוד ולאחר מכן אתר את שורות הקוד המשמשות להצהיר על מערכים של ציונים.
צור שורת קוד ריקה מתחת להצהרה על מערכים של ציונים.
שורת הקוד הריק אמורה להיות ממוקמת בין השורות המשמשות להצהיר על מערכים של ציונים בשורה המשמשת להצהיר
sophiaSum
.כדי ליצור מערך מחרוזות
studentNames
בשם שמכיל את שמות התלמידים, הזן את הקוד הבא:// Student names string[] studentNames = new string[] { "Sophia", "Andrew", "Emma", "Logan" };
שים לב שציינת את שמות התלמידים כחלק מההצהרה.
כדי ליצור משפט
foreach
שבו באפשרותך להשתמש כדי לבצע חזרה באמצעות שמות התלמידים, הזן את הקוד הבא:foreach (string name in studentNames) { }
כדי לוודא שהלולאה
foreach
חוזרת דרך המערךstudentNames
כצפוי, עדכן את בלוק הקודforeach
של המשפט באופן הבא:foreach (string name in studentNames) { Console.WriteLine($"{name}"); }
הת להימשך דקה כדי לסקור את הקוד שיצרת.
// Student names string[] studentNames = new string[] { "Sophia", "Andrew", "Emma", "Logan" }; foreach (string name in studentNames) { Console.WriteLine($"{name}"); }
הקוד שלך ישתמש בלולאה
foreach
זו בתור הלולאה העליונה של היישום שלך. במהלך תרגיל זה, תיישם את הלוגיקה הבאה ביישום שלך:עבור כל אחד מהתלמידים במערך
studentNames
, היישום שלך:- לקבוע את התלמיד הנוכחי.
- לגשת לציונים של התלמיד הנוכחי.
- חישוב הציון הנוכחי של התלמיד (סכום וממוצע).
- כתוב את ציון התלמיד הנוכחי בקונסולה.
עם זאת, בשלב זה, פשוט תרשום את שמות התלמידים בקונסולה.
בתפריט קובץ קוד של Visual Studio, לחץ על שמור.
בתצוגה Visual Studio Code EXPLORER, לחץ באמצעות לחצן העכבר הימני על Starter ולאחר מכן בחר פתח במסוף משולב.
חשוב
שורת הפקודה של Terminal חייבת להציג את נתיב התיקיה עבור Program.cs הקובץ.
בשורת הפקודה של מסוף, הקלד dotnet build ולאחר מכן הקש Enter.
הפקודה
dotnet build
מורה למהדר לבנות את היישום. אם זוהו שגיאות, הן ידווחו.אם אתה רואה הודעות שגיאה או אזהרה, עליך לתקן אותן לפני שתמשיך.
בשורת הפקודה של מסוף, הקלד dotnet run ולאחר מכן הקש Enter.
ודא שהקוד שלך יצר את הפלט הבא:
Sophia Andrew Emma Logan Student Grade Sophia: 92.2 A- Press the Enter key to continue
הערה
אם אינך רואה את רשימת שמות התלמידים מעל דוח הניקוד של סופיה, חזור וודא שהזנת את הקוד כראוי.
בלוח TERMINAL, כדי להפסיק את הפעלת היישום, הקש על מקש Enter.
סגור את לוח המסוף.
חשב את הניקוד של סופיה בתוך לולאת השמות הפנימיים
במשימה זו, תמקם מחדש את הקוד המחשב ומדוחות את הציון של סופיה, ותמקם אותו בבלוק הקוד של הלולאה "שמות".
בעורך קוד של Visual Studio, אתר את שורות הקוד המשמשות לחישוב ולדיווח על הציון של סופיה.
int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-");
הערה
השלב הבא יהיה להעביר קוד זה מהמיקום הנוכחי שלו לבלוק הקוד של לולאת "השמות
foreach
".השתמש בפעולה של גזירה והדבקה כדי להעביר את הקוד המחשב ומדוחות את הציון של סופיה לבלוק הקוד של הלולאה "שמות
foreach
".אם אינך בטוח כיצד לגזור ולהדביק בקוד Visual Studio, נסה את הגישה המתוארת בשלבים הבאים:
בחר את הקוד המשמש לחישוב ולדיווח על הציון של סופיה.
באפשרותך ללחוץ ולגרור כדי לבחור שורות קוד.
בתפריט עריכת קוד של Visual Studio, בחר גזור.
בעורך קוד של Visual Studio, הצב את הסמן בשורת הקוד הריק מתחת לקוד הבא:
Console.WriteLine($"{name}");
בתפריט עריכת קוד של Visual Studio, בחר הדבק.
עדכן את הקוד כדי להציג כניסה נכונה של שורת קוד.
תשר
Visual Studio Code מספק
Format Document
פקודה שניתן להשתמש בה כדי לשמור על עיצוב הקוד מעודכן. לחץ באמצעות לחצן העכבר הימני בתוך עורך הקוד של Visual Studio ולאחר מכן בחר עיצוב מסמך מהתפריט המוקפץ. במחשבי Windows, קיצור המקשים עבור פקודה זו הוא:Shift + Alt + F
. מחשבי Linux ו- macOS משתמשים בקיצורי דרך חלופיים בעת הצורך כדי להימנע מהתנגשויות עם קיצורי דרך שסופקו על-ידי מערכת ההפעלה.ודא שהעדכונים שלך תואמים לקוד הבא:
// Student names string[] studentNames = new string[] { "Sophia", "Andrew", "Emma", "Logan" }; foreach (string name in studentNames) { Console.WriteLine($"{name}"); int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); } Console.WriteLine("Press the Enter key to continue"); Console.ReadLine();
שים לב שבנקודה זו, הקוד שלך יחשב וידווח על הניקוד של סופיה, ללא
name
קשר לתלמיד הנוכחי. תמוען את זה בקרוב.מחק את הקוד הבא:
Console.WriteLine($"{name}");
בשורת הקוד הריקה שיצרת זה עתה, הזן את הקוד הבא:
if (name == "Sophia") {
צור שורת קוד ריקה לאחר הקוד המשמש בכתיבת הציון של סופיה בקונסולה.
כדי לסגור את בלוק הקוד של המשפט
if
, הזן את הקוד הבא:}
עדכן את הקוד כדי להציג כניסה נכונה של שורת קוד.
תשר
השתמש בפקודה
Format Document
כדי לשמור על עיצוב הקוד מעודכן. לחץ באמצעות לחצן העכבר הימני בתוך הלוח Visual Studio Code Editor ולאחר מכן בחר עיצוב מסמך מהתפריט המוקפץ.בדוק את הקוד שלך כדקה.
הקוד שלך אמור להתאים לקוד הבא:
// initialize variables - graded assignments int currentAssignments = 5; int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 }; int[] andrewScores = new int[] { 92, 89, 81, 96, 90 }; int[] emmaScores = new int[] { 90, 85, 87, 98, 68 }; int[] loganScores = new int[] { 90, 95, 87, 88, 96 }; // Student names string[] studentNames = new string[] {"Sophia", "Andrew", "Emma", "Logan"}; foreach (string name in studentNames) { if (name == "Sophia") { int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)(sophiaSum) / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); } } Console.WriteLine("Press the Enter key to continue"); Console.ReadLine();
שים לב שהצהרה
if
בתוך הקוד הפנימי מגבילהforeach
את הציון של התלמיד המחושב ומדווח. זה לא בדיוק מה שאתה צריך, אבל זה צעד בכיוון הנכון.בתפריט קובץ קוד של Visual Studio, לחץ על שמור.
בתצוגה Visual Studio Code EXPLORER, לחץ באמצעות לחצן העכבר הימני על Starter ולאחר מכן בחר פתח במסוף משולב.
חשוב
שורת הפקודה של Terminal חייבת להציג את נתיב התיקיה עבור Program.cs הקובץ.
בשורת הפקודה של מסוף, הקלד dotnet build ולאחר מכן הקש Enter.
הפקודה
dotnet build
מורה למהדר לבנות את היישום. אם זוהו שגיאות, הן ידווחו.אם אתה רואה הודעות שגיאה או אזהרה, עליך לתקן אותן לפני שתמשיך.
בשורת הפקודה של מסוף, הקלד dotnet run ולאחר מכן הקש Enter.
ודא שהקוד שלך יצר את הפלט הבא:
Student Grade Sophia: 92.2 A-
הערה
אם אתה עדיין רואה את רשימת שמות התלמידים המוצגת מעל דוח הניקוד של סופיה, ודא ששמרת את העדכונים.
בלוח TERMINAL, כדי להפסיק את הפעלת היישום, הקש על מקש Enter.
סגור את לוח המסוף.
עדכן את הלולאה המקוננת כדי לחשב את כל הציונים של התלמידים
במשימה זו, תעדכן את הקוד המבצע חישובי ניקוד של תלמיד באמצעות מערך ציונים חדש. תתחיל ביצירת מערך בשם שניתן studentScores
להשתמש בו כדי להכיל את הציונים של כל תלמיד. בשלב הבא, תיצור מבנה if .. elseif
שמשתמש בשם התלמיד הנוכחי כדי להקצות את מערך הניקוד שלו ל- studentScores
. לבסוף, תעדכן את הקוד המחשב ומדוחות את הציונים של התלמיד. לאחר שתסיים, הדוח צריך לכלול את השם ואת הציון המספרי עבור כל התלמידים.
צור שורת קוד ריקה מתחת להצהרה על המערך
studentNames
.השורה הריקה אמורה להיות מעל המשפט היוצא
foreach
.כדי ליצור מערך מספר שלם שבו באפשרותך להשתמש כדי להוסיף את הניקוד של התלמיד הנוכחי, הזן את הקוד הבא:
int[] studentScores = new int[10];
שים לב שקוד זה אינו מקצה ערכים למערך בשלב זה. עליך פשוט לציין כי המערך יכול להכיל 10 רכיבים.
צור שורת קוד ריקה בחלק העליון של בלוק הקוד
foreach
היוצא.השורה הריקה אמורה להיות בתוך בלוק
foreach
הקוד ומעל המשפטif
שמעריכה אם היאname
שווה ל- סופיה.כדי ליצור משתנה מחרוזת שישמש לאחסון שם התלמיד הנוכחי, הזן את הקוד הבא:
string currentStudent = name;
הערה
תוכל להמשיך להשתמש
name
כדי לעקוב אחר השם של התלמיד הנוכחי בעת ביצוע חזרה באמצעות מערך השמות,currentStudent
אך השימוש יאפשר לך להבין ביתר קלות את לוגיקת הקוד שלך בעת בניית היישום בשלבים הקרובים.כדי להחליף
currentStudent
במשפטname
המוערךif
אם הוא שווה לname
- סופיה, עדכן את הקוד באופן הבא:if (currentStudent == "Sophia")
העבר את הקוד המחשב ומדוחות את הציון של סופיה למיקום מתחת לבלוק הקוד.
אתה מעביר את כל הקוד שנמצא בבלוק הקוד למיקום מתחת לבלוק הקוד. הסיבה לכך תהפוך לברורה במהלך השלבים הבאים.
ודא שהקוד בבלוק הקוד היוצא
foreach
תואם לקוד הבא:{ string currentStudent = name; if (currentStudent == "Sophia") { } int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); }
כדי להקצות את המערך
sophiaScores
למצבstudentScores
שבוcurrentStudent == "Sophia"
, עדכן אתif
קוד המשפט באופן הבא:if (currentStudent == "Sophia") studentScores = sophiaScores;
שים לב שהורדת את סוגריים מסולסלים מבלוק
if
קוד המשפט במהלך עדכון קוד זה.כדי להוסיף
else if
משפט המקצה את המערךandrewScores
ל-studentScores
,currentStudent == "Andrew"
הזן את הקוד הבא:else if (currentStudent == "Andrew") studentScores = andrewScores;
צור משפט
else if
נוסף להקצאת המערךemmaScores
למצבstudentScores
שבהםcurrentStudent == "Emma"
.צור משפט
else if
להקצאת המערךloganScores
למצבstudentScores
שבהםcurrentStudent == "Logan"
.ודא שבלוק
foreach
הקוד שלך תואם לקוד הבא:foreach (string name in studentNames) { string currentStudent = name; if (currentStudent == "Sophia") studentScores = sophiaScores; else if (currentStudent == "Andrew") studentScores = andrewScores; else if (currentStudent == "Emma") studentScores = emmaScores; else if (currentStudent == "Logan") studentScores = loganScores; int sophiaSum = 0; decimal sophiaScore; foreach (int score in sophiaScores) { // add the exam score to the sum sophiaSum += score; } sophiaScore = (decimal)sophiaSum / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); }
לאחר מכן, עליך לעדכן את הלולאה
foreach
studentScores
הפנימית כדי להשתמש במשתנים שבהם אתה משתמש ו"לבטל את ההתאמה" של המשתנים שבהם אתה משתמש בחישובים שלך.כדי להחליף
studentScores
בלולאהsophiaScores
שעוברתforeach
דרך מערך הציונים, עדכן את הקוד באופן הבא:foreach (int score in studentScores)
כדי להחליף את הצהרות המשתנה הספציפיות ל- סופיה בשמות כלליים יותר, עדכן את הקוד באופן הבא:
int sumAssignmentScores = 0; decimal currentStudentGrade = 0;
שתי הצהרות משתנות אלה מיועדות להחליף את ההצהרות המשתנה הספציפיות הבאות של סופיה:
int sophiaSum = 0; decimal sophiaScore;
כדי להחיל את שם המשתנה החדש על המשוואה המשמשת לסכם ציונים של תלמידים, עדכן את בלוק הקוד
foreach
הפנימי באופן הבא:foreach (int score in studentScores) { // add the exam score to the sum sumAssignmentScores += score; }
כדי להחיל את שם המשתנה החדש על המשוואה המשמשת לחישוב הציון הממוצע, עדכן את הקוד באופן הבא:
currentStudentGrade = (decimal)(sumAssignmentScores) / currentAssignments;
בדוק את הקוד שלך כדקה.
int[] studentScores = new int[10]; foreach (string name in studentNames) { string currentStudent = name; if (currentStudent == "Sophia") studentScores = sophiaScores; else if (currentStudent == "Andrew") studentScores = andrewScores; else if (currentStudent == "Emma") studentScores = emmaScores; else if (currentStudent == "Logan") studentScores = loganScores; // initialize/reset the sum of scored assignments int sumAssignmentScores = 0; // initialize/reset the calculated average of exam + extra credit scores decimal currentStudentGrade = 0; foreach (int score in studentScores) { // add the exam score to the sum sumAssignmentScores += score; } currentStudentGrade = (decimal)(sumAssignmentScores) / currentAssignments; Console.WriteLine("Student\t\tGrade\n"); Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA-"); }
הלולאות
foreach
המקוננות שלך יתבצעו כעת שוב דרך שמות התלמידים וישתמשו בציונים של התלמיד כדי לחשב את הציונים שלהם, אך עדיין עליך לעדכן את הקוד המשמש ליצירת דוח הציונים.כדי להדפיס את שם התלמיד ואת הציון המחושב בקונסולה, עדכן את המשפט
Console.WriteLine
השני באופן הבא:Console.WriteLine($"{currentStudent}\t\t{currentStudentGrade}\t?");
שים לב שקוד זה החליף את הקצאת ציון האות ב-"?". בתרגיל הבא תעבוד על הפיכת המטלה של ציתותי אותיות לאוטומטית.
העבר את
Console.WriteLine
המשפט המשמש כדי לכתוב את תוויות העמודות של דוח הניקוד למיקום ממש מעל הלולאהforeach
העליונה.אין ברצונך לחזור על כותרות העמודות עבור כל ציון של תלמיד, לכן עליך להעביר קוד זה לנקודה מעל הלולאה
foreach
העליונה.בתפריט קובץ קוד של Visual Studio, לחץ על שמור.
הת להימשך דקה כדי לסקור את קוד היישום.
היישום המלא שלך אמור להתאים כעת לקוד הבא:
// initialize variables - graded assignments int currentAssignments = 5; int[] sophiaScores = new int[] { 90, 86, 87, 98, 100 }; int[] andrewScores = new int[] { 92, 89, 81, 96, 90 }; int[] emmaScores = new int[] { 90, 85, 87, 98, 68 }; int[] loganScores = new int[] { 90, 95, 87, 88, 96 }; // Student names string[] studentNames = new string[] { "Sophia", "Andrew", "Emma", "Logan" }; int[] studentScores = new int[10]; // Write the Report Header to the console Console.WriteLine("Student\t\tGrade\n"); foreach (string name in studentNames) { string currentStudent = name; if (currentStudent == "Sophia") studentScores = sophiaScores; else if (currentStudent == "Andrew") studentScores = andrewScores; else if (currentStudent == "Emma") studentScores = emmaScores; else if (currentStudent == "Logan") studentScores = loganScores; // initialize/reset the sum of scored assignments int sumAssignmentScores = 0; // initialize/reset the calculated average of exam + extra credit scores decimal currentStudentGrade = 0; foreach (int score in studentScores) { // add the exam score to the sum sumAssignmentScores += score; } currentStudentGrade = (decimal)(sumAssignmentScores) / currentAssignments; Console.WriteLine($"{currentStudent}\t\t{currentStudentGrade}\t?"); }
עם הקוד שמפיק את דוח הניקוד של התלמיד עודכן; נראה שאתה מוכן לבדוק את עבודתך.
בדוק את העבודה שלך
במשימה זו, תפעיל את היישום כדי לוודא שלוגיקת הקוד שלך פועלת כצפוי.
ודא ששמרת את השינויים שביצעת בקובץ Program.cs שלך.
בתצוגה Visual Studio Code EXPLORER, לחץ באמצעות לחצן העכבר הימני על Starter ולאחר מכן בחר פתח במסוף משולב.
בשורת הפקודה של מסוף, הקלד dotnet build ולאחר מכן הקש Enter.
אם אתה רואה הודעות שגיאה או אזהרה, עליך לתקן אותן לפני שתמשיך.
בשורת הפקודה של מסוף, הקלד dotnet run ולאחר מכן הקש Enter.
ודא שהקוד שלך יצר את הפלט הבא:
Student Grade Sophia 92.2 ? Andrew 89.6 ? Emma 85.6 ? Logan 91.2 ? Press the Enter key to continue
בלוח TERMINAL, כדי להפסיק את הפעלת היישום, הקש על מקש Enter.
סגור את לוח המסוף.
מזל טוב, היישום שלך הגיע דרך ארוכה מהיכן שהתחלת. אתה עושה שימוש יעיל במערכים ובחזרות foreach
, if
ושילוב משפט המאפשר לקוד לבחור את מערך הציונים הנכון.