معاملات المتسلسلات
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 75 من 86.
توفر Swift خصائص وطرقًا مدمجة مفيدة تتيح لك جمع المعلومات حول المصفوفات بسرعة دون الحاجة إلى كتابة حلقات تكرارية. تساعدك معاملات التسلسل هذه على إجراء الحسابات الشائعة بأقل قدر من الكود.
تعيد خاصية count عدد العناصر في المصفوفة:
let scores = [85, 92, 78, 90]
print(scores.count) // 4بالنسبة للمصفوفات الرقمية، توفر Swift طرقاً للعثور على أصغر وأكبر القيم. تُرجع الطريقتان min() و max() قيمًا اختيارية (optionals) لأن المصفوفة الفارغة لا تحتوي على حد أدنى أو أقصى:
let temperatures = [72, 68, 75, 80, 65]
if let lowest = temperatures.min() {
print(lowest) // 65
}
if let highest = temperatures.max() {
print(highest) // 80
}لحساب مجموع كل العناصر، استخدم الأسلوب reduce. فهو يجمع كل القيم بدءاً من قيمة أولية:
let prices = [10, 20, 30]
let total = prices.reduce(0, +)
print(total) // 60تعتبر الـ 0 هي القيمة الابتدائية، و + تخبر Swift بإضافة كل عنصر إلى المجموع التراكمي. ومن خلال دمج هذه العوامل، يمكنك بسهولة حساب المتوسط:
let grades = [85, 90, 78, 92]
let average = grades.reduce(0, +) / grades.count
print(average) // 86التحدي
سهلاكتب دالة باسم analyzeScores تأخذ scores وتعيد سلسلة نصية ملخصة تحتوي على إحصائيات حول المصفوفة.
استخدم معاملات التسلسل (sequence operators) لحساب العدد، والحد الأدنى، والحد الأقصى، والمتوسط للدرجات، ثم قم بتنسيقها في سلسلة نصية ملخصة واحدة.
المنطق:
- احصل على العدد الإجمالي للعناصر باستخدام
count - ابحث عن القيمة الصغرى باستخدام
min() - ابحث عن القيمة الكبرى باستخدام
max() - احسب المجموع باستخدام
reduce(0, +)واقسمه على العدد للحصول على المتوسط - أعد سلسلة نصية منسقة تحتوي على جميع الإحصائيات
المعاملات:
scores([Int]): مصفوفة من درجات صحيحة (مضمون وجود عنصر واحد على الأقل)
المخرجات: سلسلة نصية منسقة تحتوي على الإحصائيات (String). التنسيق: "Count: X, Min: X, Max: X, Avg: X"
مثال: إذا كانت scores هي [85, 90, 78, 92]، يجب أن تعيد الدالة "Count: 4, Min: 78, Max: 92, Avg: 86".
ملاحظة: يجب حساب المتوسط باستخدام القسمة الصحيحة (بدون منازل عشرية).
ورقة مرجعية
توفر Swift خصائص وطرقاً مدمجة للتعامل مع المصفوفات دون الحاجة لكتابة حلقات تكرار.
تعيد الخاصية count عدد العناصر:
let scores = [85, 92, 78, 90]
print(scores.count) // 4تجد الطريقتان min() و max() أصغر وأكبر القيم. وهما تعيدان قيم اختيارية (optionals) لأن المصفوفات الفارغة ليس لها حد أدنى أو أقصى:
let temperatures = [72, 68, 75, 80, 65]
if let lowest = temperatures.min() {
print(lowest) // 65
}
if let highest = temperatures.max() {
print(highest) // 80
}تقوم الطريقة reduce بحساب المجموع عن طريق دمج جميع القيم بدءاً من قيمة أولية:
let prices = [10, 20, 30]
let total = prices.reduce(0, +)
print(total) // 60احسب المتوسط من خلال دمج reduce مع count:
let grades = [85, 90, 78, 92]
let average = grades.reduce(0, +) / grades.count
print(average) // 86جرّب بنفسك
func analyzeScores(scores: [Int]) -> String {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات14المصفوفات المتقدمة
تقطيع المصفوفات - الجزء الأولتقطيع المصفوفات - الجزء الثانيمعاملات المتسلسلاتدالة Contains3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)