חישוב העלות הכוללת
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 35 מתוך 65.
אתגר
קלצרו תוכנית שממשיכה את פרויקט מחשבון עגלת הקניות באמצעות מימוש הפונקציונליות לחישוב העלות הכוללת של כל הפריטים בעגלת הקניות. בהמשך לניהול העגלה מהשיעור הקודם, התוכנית שלכם צריכה:
- להשתמש ב־Map הקיים של קטלוג המוצרים וב־List המאוכלס של עגלת הקניות מההגדרה הקודמת
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים פריטים שהלקוחות רוצים להוסיף לעגלה שלהם (הקלט יסתיים כשתקבלו את
"cart_done") - לבדוק עבור כל פריט אם הוא קיים בקטלוג המוצרים באמצעות
containsKey() - אם הפריט קיים, להוסיף אותו ל־List של עגלת הקניות באמצעות המתודה
add() - לחשב את העלות הכוללת על ידי מעבר על רשימת העגלה וחיפוש המחיר של כל פריט במפת המוצרים
- לסכם את כל המחירים כדי לקבל את העלות הסופית הכוללת
- להציג את דוח חישוב העגלה בדיוק בפורמט שמוצג למטה
לדוגמה, אם בחנות יש מוצרים "Apple" במחיר 1.50, "Banana" במחיר 0.80, "Orange" במחיר 2.00, "Milk" במחיר 3.25, והלקוחות רוצים להוסיף "Apple", "Banana", "Apple", "Milk", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkoutאם בחנות יש מוצרים "Laptop" במחיר 999.99, "Mouse" במחיר 25.50, "Keyboard" במחיר 75.00, והלקוחות רוצים להוסיף "Mouse", "Keyboard", "Mouse", "Monitor", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkoutאם בחנות יש מוצרים "Novel" במחיר 12.99, "Magazine" במחיר 4.50, "Textbook" במחיר 89.00, והלקוחות רוצים להוסיף "Novel", "Magazine", "Novel", "Textbook", "Dictionary", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkoutהתוכנית שלכם צריכה לעבור על כל פריט ברשימת עגלת הקניות, לחפש את מחירו במפת קטלוג המוצרים ולהוסיף את המחיר לסכום מצטבר. השתמשו בלולאה כדי לעבד כל פריט בעגלה ולצבור את העלות הכוללת. הציגו את המחיר של כל פריט בנפרד במהלך שלב חישוב העלות. עצבו את כל המחירים כך שיוצגו בדיוק עם 2 ספרות אחרי הנקודה העשרונית. פורמט הקלט יהיה: שמות הפריטים שיש להוסיף לעגלה, עד לקבלת "cart_done".
נסו בעצמכם
import 'dart:io';
void main() {
// Product catalog with items and prices
Map<String, double> productCatalog = {
'Apple': 1.50,
'Banana': 0.80,
'Orange': 2.00,
'Milk': 3.25,
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00,
'Novel': 12.99,
'Magazine': 4.50,
'Textbook': 89.00
};
// Shopping cart to store selected items
List<String> shoppingCart = [];
// Counters for tracking operations
int successfulAdditions = 0;
int itemsNotFound = 0;
print("Shopping Cart Operations:");
// Read items until "cart_done" is received
String? item;
while ((item = stdin.readLineSync()) != "cart_done") {
if (item != null) {
if (productCatalog.containsKey(item)) {
shoppingCart.add(item);
successfulAdditions++;
print("Adding '$item': Item added to cart successfully");
} else {
itemsNotFound++;
print("Adding '$item': Item not available in store");
}
}
}
// Display cart contents
print("Cart Contents: $shoppingCart");
// Calculate unique products
Set<String> uniqueProducts = shoppingCart.toSet();
// Display cart summary
print("Cart Summary:");
print("Total items in cart: ${shoppingCart.length}");
print("Unique products in cart: ${uniqueProducts.length}");
print("Items successfully added: $successfulAdditions");
print("Items not found: $itemsNotFound");
print("Cart Status: Ready for checkout");
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין