אתגר: מיון ציונים
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 63 מתוך 65.
אתגר
קלצרו מערכת מקיפה לניהול ציוני תלמידים, שמעבדת נתוני תלמידים ממפה, מסננת תלמידים שעברו וממיינת אותם בסדר אלפביתי. האתגר הזה משלב מעבר על מפה, סינון מותנה, פעולות על רשימות ומיון.
הקלט הבא מסופק לכם:
- מחרוזת JSON המייצגת מפה של שמות תלמידים (מפתחות) ושל ציוני המבחנים שלהם (ערכים)
מחרוזת ה-JSON תיראה כך: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
עליכם לבצע את הפעולות הבאות:
- לנתח את מחרוזת ה-JSON ולהפוך אותה ל-Map באמצעות שיטות Dart מתאימות
- ליצור רשימה ריקה בשם
passingStudentsכדי לאחסן את שמות התלמידים שעברו - לעבור על המפה ולהוסיף לרשימת
passingStudentsאת שמות התלמידים שקיבלו ציון 60 ומעלה - למיין את רשימת
passingStudentsבסדר אלפביתי באמצעות השיטהsort() - להדפיס את המספר הכולל של התלמידים שנבחנו בפורמט המדויק:
Total students: X - להדפיס את מספר התלמידים שעברו בפורמט המדויק:
Students who passed: X - להדפיס את מספר התלמידים שנכשלו בפורמט המדויק:
Students who failed: X - להדפיס את התלמידים שעברו בסדר אלפביתי, כל אחד בשורה חדשה, בפורמט המדויק:
Passing student: [name] - אם אף תלמיד לא עבר, להדפיס:
No students passed the exam
על התוכנית שלכם להדגים מעבר תקין על מפה, לוגיקה מותנית לסינון נתונים לפי סף המעבר של 60, פעולות על רשימות ופעולות מיון. הפלט חייב להתאים בדיוק לפורמט שצוין למעלה, והתלמידים שעברו צריכים להופיע בסדר אלפביתי.
נסו בעצמכם
import 'dart:io';
import 'dart:convert';
void main() {
// קראו את מחרוזת ה-JSON מהקלט
String? jsonString = stdin.readLineSync();
// פענחו את מחרוזת ה-JSON ל-Map
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// צרו רשימה ריקה לאחסון התלמידים שעברו
List<String> passingStudents = [];
// TODO: כתבו את הקוד שלכם למטה
// 1. עברו על ה-Map וסננו תלמידים שקיבלו ציון 60 ומעלה
// 2. הוסיפו את שמות התלמידים שעברו לרשימה passingStudents
// 3. מיינו את הרשימה passingStudents לפי סדר אלפביתי
// 4. חשבו והדפיסו את הנתונים הסטטיסטיים הנדרשים
// 5. הדפיסו את התלמידים שעברו בפורמט שצוין
// הדפיסו את התוצאות (החליפו במימוש שלכם)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// הדפיסו את התלמידים שעברו או את ההודעה "No students passed the exam"
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין