תנאים באמצעות 'every'
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 14 מתוך 65.
בעוד ש־any() בודקת אם לפחות איבר אחד עומד בתנאי, לפעמים צריך לוודא שכל האיברים ברשימה עומדים בדרישה מסוימת. המתודה every() מספקת את הפונקציונליות הזו באמצעות בדיקת כל איבר ואיבר מול התנאי שלך, ומחזירה true רק אם כולם עומדים בו.
השיטה every() מקבלת פונקציית בדיקה שמחזירה true או false עבור כל איבר. אם איבר כלשהו נכשל בבדיקה, every() מחזירה מיד false. היא מחזירה true רק כאשר כל האיברים עוברים את הבדיקה.
List<int> examScores = [75, 82, 68, 91, 77];
// בדקו אם כל התלמידים עברו (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueשיטה זו שימושית במיוחד בתרחישי אימות שבהם צריך לוודא שכל הפריטים עומדים בקריטריונים מסוימים לפני שממשיכים. השיטה every() מפסיקה לבדוק ברגע שהיא מוצאת איבר שאינו עובר את הבדיקה, ולכן היא יעילה ברשימות גדולות שבהן נדרשת עמידה של כל הפריטים בקריטריונים.
אתגר
קלצרו תוכנית שמנהלת מערכת בקרת איכות באמצעות בדיקה שכל המוצרים באצווה עומדים בתקנים הנדרשים. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם המפעל
- לקרוא כמה ערכי קלט של מספרים שלמים שמייצגים את ציוני איכות המוצרים (הקלט יסתיים כשתקבלו
-1) - לקרוא ערך קלט של מספר שלם שמייצג את הסף של תקן האיכות המינימלי
- להשתמש בשיטה
every()כדי לבדוק אם כל ציוני המוצרים גדולים מהסף המינימלי או שווים לו - להדפיס את תוצאות בקרת האיכות בפורמט המדויק שמוצג למטה
לדוגמה, אם שם המפעל הוא "Electronics Factory", ציוני האיכות הם 85, 92, 78, 88, 95, והסף המינימלי הוא 75, התוכנית שלכם צריכה להציג:
Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipmentאם שם המפעל הוא "Textile Mill", ציוני האיכות הם 68, 82, 74, 91, והסף המינימלי הוא 70, התוכנית שלכם צריכה להציג:
Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement requiredאם שם המפעל הוא "Food Processing", ציוני האיכות הם 95, 98, 92, והסף המינימלי הוא 90, התוכנית שלכם צריכה להציג:
Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipmentהתוכנית שלכם חייבת להשתמש בשיטה every() כדי לוודא שכל ציוני האיכות גדולים מהסף המינימלי או שווים לו. הציגו "Batch approved for shipment" אם כל המוצרים עומדים בתקן, או "Batch rejected - quality improvement required" אם מוצר כלשהו אינו עומד בדרישה המינימלית.
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את שם המפעל
String? factoryName = stdin.readLineSync();
// קראו את ציוני האיכות עד שמופיע -1
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// קראו את סף המינימום
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: כתבו את הקוד שלכם למטה
// השתמשו במתודה every() כדי לבדוק אם כל הציונים עומדים בתקן המינימלי
// הדפיסו את התוצאות בפורמט הנדרש
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// הדפיסו אם כל המוצרים עברו ואת הסטטוס הסופי
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין