הוספת פריטים לעגלה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 34 מתוך 65.
אתגר
קלצרו תוכנית שמממשת את הפונקציונליות להוספת פריטים לעגלת קניות. התוכנית שלכם צריכה להשתמש ב־Map של קטלוג מוצרים שמוגדר בקוד מראש ובעגלת קניות מסוג List ריקה, ואז לעבד קלט של פריטים מהמשתמש.
הגדירו ישירות בקוד את קטלוג המוצרים הבא:
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
};התוכנית שלכם צריכה:
- להשתמש ב־Map של קטלוג המוצרים שהוגדר למעלה ובעגלת קניות מסוג List ריקה
- לקרוא כמה מחרוזות קלט שמייצגות פריטים שלקוחות רוצים להוסיף לעגלה (הקלט יסתיים כשתקבלו
"cart_done") - לבדוק עבור כל פריט אם הוא קיים בקטלוג המוצרים באמצעות
containsKey() - אם הפריט קיים, להוסיף אותו לעגלת הקניות מסוג List באמצעות המתודה
add() - אם הפריט אינו קיים, לדלג עליו ולהמשיך בעיבוד
- לעקוב אחר הוספות מוצלחות וניסיונות כושלים
- להציג דוח ניהול עגלת הקניות בפורמט המדויק שמוצג למטה
לדוגמה, אם הלקוחות רוצים להוסיף "Apple", "Bread", "Banana", "Apple", "Juice", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Bread': Item not available in store
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Juice': Item not available in store
Cart Contents: [Apple, Banana, Apple]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 2
Cart Status: Ready for checkoutאם הלקוחות רוצים להוסיף "Mouse", "Monitor", "Keyboard", "Mouse", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Cart Contents: [Mouse, Keyboard, Mouse]
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", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", התוכנית שלכם צריכה להציג:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Comic': Item not available in store
Adding 'Textbook': Item added to cart successfully
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 2
Cart Status: Ready for checkoutהתוכנית שלכם חייבת להשתמש ב־containsKey() כדי לוודא שכל פריט קיים בקטלוג המוצרים לפני הוספתו לעגלה. השתמשו במתודה add() כדי להוסיף פריטים תקינים לעגלת הקניות מסוג List. ספרו את מספר הפריטים הכולל בעגלה באמצעות המאפיין length, וקבעו מהם המוצרים הייחודיים על ידי המרת העגלה ל־Set ובדיקת האורך שלו. עקבו אחר מספר ההוספות המוצלחות וגם אחר הפריטים שלא נמצאו בקטלוג. פורמט הקלט יהיה: שמות הפריטים להוספה לעגלה, והקלט יסתיים ב־"cart_done".
נסו בעצמכם
import 'dart:io';
void main() {
// Read store name
String? storeName = stdin.readLineSync();
// Initialize data structures
Map<String, double> products = {};
List<String> shoppingCart = [];
// Read products until "products_done"
while (true) {
String? input = stdin.readLineSync();
if (input == "products_done") {
break;
}
String productName = input!;
String? priceInput = stdin.readLineSync();
double price = double.parse(priceInput!);
// Add product to map
products[productName] = price;
}
// Calculate statistics
double totalPrice = 0;
double maxPrice = 0;
double minPrice = double.infinity;
String mostExpensiveItem = '';
String cheapestItem = '';
for (String productName in products.keys) {
double price = products[productName]!;
totalPrice += price;
if (price > maxPrice) {
maxPrice = price;
mostExpensiveItem = productName;
}
if (price < minPrice) {
minPrice = price;
cheapestItem = productName;
}
}
double averagePrice = totalPrice / products.length;
// Print the store setup report
print('Store: $storeName');
print('Product Catalog Setup:');
print('Available Products: $products');
print('Shopping Cart Initialized: $shoppingCart');
print('System Status:');
print('Total products available: ${products.length}');
print('Cart status: Empty');
print('Most expensive item: $mostExpensiveItem (\$${maxPrice.toStringAsFixed(2)})');
print('Cheapest item: $cheapestItem (\$${minPrice.toStringAsFixed(2)})');
print('Average product price: \$${averagePrice.toStringAsFixed(2)}');
print('Setup Status: Shopping cart system ready for customers');
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין