الخلاصة والمصادر
الخلاصة
- حالة الأساس هي الأهم: أي خطأ في التكرار يبدأ غالبًا من حالة أساس ناقصة أو خاطئة، تحقّق منها أولًا دائمًا.
- المكدس له مرحلتان: نزول (استدعاءات متتالية) ثم صعود (إرجاع قيم بترتيب عكسي)، فهم هذه الحركة يفسر أغلب سلوك الدوال التكرارية.
- استدعاءات النظام تتجاوز طبقة المكتبة: open/read/write/close تتعامل مباشرة مع النواة، بخلاف fopen/fread التي تضيف تخزينًا مؤقتًا فوقها.
- أغلق كل ما تفتحه: واصفات الملفات محدودة العدد لكل عملية، إغلاقها بعد الانتهاء عادة يجب أن تصبح تلقائية.
- ثق في الاستدعاء الأصغر: صمّم بحالة أساس واضحة وخطوة تصغّر المسألة، وافحص التكلفة (مكدس وتكرار حسابات).
- كل ملف رقم: واصف الملف هو مفتاح عمليات الإدخال والإخراج، وأغلقه دائمًا.
- اتفقوا على ترتيب البايتات: استخدم ترتيب الشبكة عند تبادل أعداد متعددة البايتات بين أجهزة مختلفة.
قاموس المصطلحات
| المصطلح | التعريف | الجزء |
|---|---|---|
| Base Case (حالة الأساس) | الحالة الأبسط في دالة تكرارية، تُحل مباشرة بدون استدعاء إضافي. | 1 |
| Call Stack (مكدس الاستدعاءات) | بنية بيانات تحفظ إطار كل استدعاء دالة نشط، بترتيب LIFO (آخر داخل، أول خارج). | 1 |
| Stack Overflow | خطأ يحدث عند تجاوز عدد الاستدعاءات المتداخلة للحد الأقصى لحجم المكدس المتاح. | 1 |
| Tail Recursion (التكرار الذيلي) | نمط تكراري يكون فيه الاستدعاء الذاتي آخر عملية في الدالة، يمكن للمترجم تحسينه لحلقة. | 1 |
| Tree Recursion (التكرار الشجري) | نمط تكراري تستدعي فيه الدالة نفسها أكثر من مرة في كل استدعاء، فتتفرع كالشجرة. | 1 |
| System Call (استدعاء نظام) | طلب مباشر من برنامج لنواة نظام التشغيل لتنفيذ عملية، مثل فتح ملف. | 2 |
| File Descriptor (واصف ملف) | عدد صحيح صغير يُمثّل ملفًا مفتوحًا، يُرجعه open() ويُستخدم في كل الاستدعاءات اللاحقة عليه. | 2 |
| lseek (تحريك الإزاحة) | استدعاء نظام يُحرّك موضع القراءة/الكتابة داخل ملف مفتوح بدون نقل بيانات فعلية. | 2 |
| EOF (نهاية الملف) | حالة تُشير إلى عدم وجود بيانات أخرى للقراءة، read() تُرجع 0 عند الوصول إليها. | 2 |
| Buffered I/O (إدخال/إخراج مُخزَّن) | طبقة تُضيفها المكتبة القياسية فوق استدعاءات النظام، تجمع عدة عمليات صغيرة في عملية كبيرة واحدة لتحسين الأداء. | 2 |
| Memoization (الحفظ المؤقت للنتائج) | تخزين نتائج المسائل الفرعية لتجنب إعادة حسابها. | 1 |
| Stack overflow (فيض المكدس) | نفاد المكدس بسبب عمق استدعاءات كبير جدًا. | 1 |
| System call (نداء النظام) | طلب من البرنامج إلى النواة لتنفيذ خدمة. | 2 |
| Endianness (ترتيب البايتات) | ترتيب تخزين بايتات العدد متعدد البايتات. | 2 |
| Marshaling (التحزيم) | تحويل البيانات إلى صيغة موحدة قبل إرسالها أو تخزينها. | 2 |
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.