הגדרת הפרויקט
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 33 מתוך 65.
אתגר
קלתבנו מחשבון פשוט לעגלת קניות שמדגים כיצד מבני נתונים שונים פועלים יחד ביישום אמיתי.
צרו תוכנית שמכינה את התשתית למערכת מחשבון של עגלת קניות באמצעות אתחול מבני הנתונים החיוניים הנדרשים ליישום מסחר אלקטרוני. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם החנות
- לקרוא כמה זוגות של קלטים שמייצגים שמות מוצרים ואת מחיריהם (הקלט יסתיים כשתקבלו
"products_done") - ליצור Map לאחסון המוצרים הזמינים, כאשר שמותיהם הם המפתחות והמחירים הם הערכים
- ליצור List ריק שייצג את עגלת הקניות
- להציג את פרטי האתחול הראשוניים ולוודא שמבני הנתונים אותחלו כראוי
- להדפיס את דוח הגדרת החנות בדיוק בפורמט שמוצג למטה
לדוגמה, אם שם החנות הוא "Fresh Market" והמוצרים כוללים את "Apple" במחיר 1.50, את "Banana" במחיר 0.80, את "Orange" במחיר 2.00 ואת "Milk" במחיר 3.25, התוכנית שלכם צריכה להפיק את הפלט הבא:
Store: Fresh Market
Product Catalog Setup:
Available Products: {Apple: 1.5, Banana: 0.8, Orange: 2.0, Milk: 3.25}
Shopping Cart Initialized: []
System Status:
Total products available: 4
Cart status: Empty
Most expensive item: Milk ($3.25)
Cheapest item: Banana ($0.80)
Average product price: $1.84
Setup Status: Shopping cart system ready for customersאם שם החנות הוא "Tech Store" והמוצרים כוללים את "Laptop" במחיר 999.99, את "Mouse" במחיר 25.50 ואת "Keyboard" במחיר 75.00, התוכנית שלכם צריכה להפיק את הפלט הבא:
Store: Tech Store
Product Catalog Setup:
Available Products: {Laptop: 999.99, Mouse: 25.5, Keyboard: 75.0}
Shopping Cart Initialized: []
System Status:
Total products available: 3
Cart status: Empty
Most expensive item: Laptop ($999.99)
Cheapest item: Mouse ($25.50)
Average product price: $366.83
Setup Status: Shopping cart system ready for customersאם שם החנות הוא "Book Corner" והמוצרים כוללים את "Novel" במחיר 12.99, את "Magazine" במחיר 4.50, את "Textbook" במחיר 89.00, את "Comic" במחיר 3.99 ואת "Journal" במחיר 15.75, התוכנית שלכם צריכה להפיק את הפלט הבא:
Store: Book Corner
Product Catalog Setup:
Available Products: {Novel: 12.99, Magazine: 4.5, Textbook: 89.0, Comic: 3.99, Journal: 15.75}
Shopping Cart Initialized: []
System Status:
Total products available: 5
Cart status: Empty
Most expensive item: Textbook ($89.00)
Cheapest item: Comic ($3.99)
Average product price: $25.25
Setup Status: Shopping cart system ready for customersהתוכנית שלכם חייבת ליצור Map עם מפתחות מסוג String (שמות המוצרים) וערכים מסוג double (המחירים), וכן List ריק של String עבור עגלת הקניות. מצאו את הפריטים היקרים והזולים ביותר באמצעות השוואת כל המחירים במפת המוצרים. חשבו את המחיר הממוצע על ידי חלוקת סכום כל המחירים במספר המוצרים. עגלו את הממוצע ל-2 ספרות אחרי הנקודה העשרונית להצגה. פורמט הקלט יהיה: שם החנות, ולאחר מכן שמות מוצרים ומחירים לסירוגין (כמחרוזות שיש להמיר למספרי double), עד לקבלת "products_done".
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את שם החנות
String? storeName = stdin.readLineSync();
// אתחלו את מבני הנתונים
Map<String, double> products = {};
List<String> shoppingCart = [];
// קראו מוצרים עד "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!);
// הוסיפו את המוצר למפה
products[productName] = price;
}
// TODO: כתבו את הקוד שלכם למטה כדי לחשב נתונים סטטיסטיים ולהפיק את הדוח
// הדפיסו את דוח הגדרת החנות
// הפלט שלכם צריך להתאים בדיוק לפורמט המוצג בדוגמאות
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין