معالجة الأخطاء
جزء من قسم الأساسيات في رحلة 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متتبع المصاريف اليومية
نظرة عامة على المشروعالخروج من البرنامجتدرّب بنفسك: مترجم Ruby عبر الإنترنت