معالجة الأخطاء
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 85 من 88.
التحدي
سهلأكمل متتبع المصاريف اليومية (Daily Expense Tracker) عن طريق إضافة معالجة الأخطاء لخيارات القائمة غير الصالحة.
يجب أن يقوم برنامجك بما يلي:
- تهيئة مصفوفة فارغة تسمى
expenses - إنشاء
loop doيعرض القائمة ويقرأ مدخلات المستخدم - عندما يدخل المستخدم
"1"، اطلب اسم المصروف والمبلغ، وأنشئ hash بمفاتيح:nameو:amount، وأضفه إلى مصفوفةexpenses، واطبعExpense added! - عندما يدخل المستخدم
"2"، اعرض جميع المصاريف أو رسالة في حال عدم وجود أي منها - عندما يدخل المستخدم
"3"، احسب واعرض المجموع والمعدل لجميع المصاريف، أو رسالة في حال عدم وجود أي منها - عندما يدخل المستخدم
"4"، امسح جميع المصاريف من المصفوفة واطبعAll expenses cleared! - عندما يدخل المستخدم
"5"، اطبعGoodbye!واخرج من الحلقة (loop) - لأي إدخال آخر، اطبع:
Invalid option. Please try again.
يجب أن تظهر القائمة تماماً كما في السابق:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: على سبيل المثال، إذا كانت المدخلات هي 7، abc، ثم 5 (خياران غير صالحين، ثم الخروج)، يجب أن تكون النتيجة:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!إذا كانت المدخلات هي 1، Coffee، 4.5، 6، 2، ثم 5 (إضافة مصروف، خيار غير صالح، عرض، خروج)، يجب أن تكون النتيجة:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option:
--- Your Expenses ---
Coffee: $4.5
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!جرّب بنفسك
expenses = []
loop do
puts "--- Expense Tracker ---"
puts "1. Add Expense"
puts "2. View Expenses"
puts "3. Total & Average"
puts "4. Clear All"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "1"
print "Expense name: "
name = gets.chomp
print "Amount: "
amount = gets.chomp.to_f
expenses << { name: name, amount: amount }
puts "Expense added!"
elsif choice == "2"
if expenses.empty?
puts "No expenses recorded yet."
else
expenses.each do |expense|
puts "#{expense[:name]}: $#{expense[:amount]}"
end
end
elsif choice == "3"
if expenses.empty?
puts "No expenses to calculate."
else
total = expenses.sum { |expense| expense[:amount] }
average = total / expenses.length
puts "Total: $#{total}"
puts "Average: $#{average}"
end
elsif choice == "4"
expenses.clear
puts "All expenses cleared!"
elsif choice == "5"
puts "Goodbye!"
break
end
puts ""
endجميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ9الدوال (Methods)
تعريف الدالةمعاملات الدالةقيم الإرجاعمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية للمعاملات15متتبع المصاريف اليومية
نظرة عامة على المشروعالخروج من البرنامج