סיכום – חלוקה בטוחה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 43 מתוך 65.
אתגר
קלצרו תוכנית שמממשת מחשבון לחלוקה בטוחה באמצעות טיפול בחריגות. התוכנית צריכה לטפל בשגיאות חלוקה באפס באופן מבוקר ולספק למשתמשים משוב ברור כאשר מתרחשות שגיאות.
- קראו קלט מסוג מחרוזת שמייצג את המספר הראשון (המחולק)
- קראו קלט מסוג מחרוזת שמייצג את המספר השני (המחלק)
- צרו פונקציה בשם
safeDivisionשמקבלת שני פרמטרים מסוג double ומחזירה תוצאה מסוג double - על הפונקציה להשתמש בבלוק
try-catchכדי לטפל בשגיאות חלוקה אפשריות: - בבלוק
try: בדקו אם המחלק הוא אפס, ואם כן, זרקו חריגה עם ההודעה"Division by zero is not allowed"; אחרת, בצעו את החלוקה - בבלוק
catch: טפלו בחריגה והחזירו0.0כערך ברירת מחדל בטוח - המירו את מחרוזות הקלט לערכי double באמצעות
double.parse() - קראו לפונקציה
safeDivisionעם הערכים שהומרו - הציגו את התוצאות בדיוק בפורמט שמוצג להלן
לדוגמה, אם הקלט הוא "10.0" ו-"2.0", התוכנית שלכם צריכה להציג:
Safe Division Calculator
========================
First number: 10.0
Second number: 2.0
Performing division...
Result: 5.0
Operation completed successfullyאם הקלט הוא "15.0" ו-"0.0", התוכנית שלכם צריכה להציג:
Safe Division Calculator
========================
First number: 15.0
Second number: 0.0
Performing division...
Error: Division by zero is not allowed
Using safe default value: 0.0
Operation completed with error handlingאם הקלט הוא "7.5" ו-"2.5", התוכנית שלכם צריכה להציג:
Safe Division Calculator
========================
First number: 7.5
Second number: 2.5
Performing division...
Result: 3.0
Operation completed successfullyעל התוכנית שלכם לממש את הפונקציה safeDivision, שמשתמשת בבלוק try-catch כדי לטפל בחלוקה באפס. בבלוק try, בדקו אם המחלק שווה ל-0.0, והשתמשו במילת המפתח throw כדי לעורר חריגה באופן ידני אם כן. בבלוק catch, הדפיסו את הודעת השגיאה והחזירו 0.0 כערך חלופי בטוח. התוכנית הראשית צריכה לקרוא לפונקציה הזו ולהציג הודעות סיום שונות בהתאם לשאלה אם התרחשה שגיאה.
נסו בעצמכם
import 'dart:io';
// TODO: צרו כאן את הפונקציה safeDivision
void main() {
// קראו את הקלט
String? firstInput = stdin.readLineSync();
String? secondInput = stdin.readLineSync();
// המירו מחרוזות ל-double
double firstNumber = double.parse(firstInput!);
double secondNumber = double.parse(secondInput!);
// הציגו את הכותרת
print("Safe Division Calculator");
print("========================");
print("First number: $firstNumber");
print("Second number: $secondNumber");
print("Performing division...");
// TODO: קראו לפונקציה safeDivision וטפלו בתוצאה
// זכרו לבדוק אם אירעה שגיאה כדי להציג את הודעת הסיום המתאימה
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין