📥 تمارين المدخلات والمخرجات (30 تمرين)
تمارين متدرجة من السهل إلى الصعب لإتقان عمليات الإدخال والإخراج في لغة ص.
المستوى الأول: أساسيات الطباعة والإخراج ⭐
الطباعة هي أول وأهم عملية إخراج في أي برنامج. في لغة ص، لديك دالتان أساسيتان:
اطبع()— تطبع النص على الشاشة بدون الانتقال لسطر جديداطبع_سطر()— تطبع النص مع سطر جديد تلقائياً في النهاية
هاتان الدالتان مدمجتان في اللغة ولا تحتاجان أي استيراد. تدعمان جميع أنواع البيانات: النصوص، الأرقام، القيم المنطقية، المصفوفات، والخرائط.
دمج القيم مع النصوص
يمكنك دمج المتغيرات مع النصوص باستخدام عامل +:
متغير الاسم = "أحمد"
متغير العمر = 25
اطبع_سطر("مرحباً " + الاسم + "، عمرك " + العمر + " سنة")التحكم في الأسطر
# اطبع على نفس السطر
اطبع("الاسم: ")
اطبع("محمد")
اطبع_سطر("") # سطر جديد
# اطبع في أسطر منفصلة
اطبع_سطر("السطر الأول")
اطبع_سطر("السطر الثاني")طباعة نص بسيط
اكتب برنامجاً يطبع "مرحباً من لغة ص!" على الشاشة باستخدام اطبع_سطر.
💡 تلميح
استخدم دالة اطبع_سطر() مع النص بين علامتي تنصيص
📝 عرض الحل
طباعة عدة أسطر
اطبع ثلاثة أسطر منفصلة: اسمك، عمرك، ومدينتك.
📝 عرض الحل
الفرق بين اطبع واطبع_سطر
استخدم اطبع() لطباعة "مرحباً " ثم "بالعالم" على نفس السطر، ثم اطبع_سطر() لطباعة "!" في سطر جديد.
💡 تلميح
اطبع() لا تضيف سطراً جديداً، بينما اطبع_سطر() تضيفه تلقائياً
📝 عرض الحل
طباعة متغيرات
أنشئ متغيرات للاسم والعمر والمعدل، ثم اطبعها بتنسيق مناسب.
📝 عرض الحل
طباعة عناصر مصفوفة
أنشئ مصفوفة ألوان واطبع كل لون باستخدام حلقة لكل.
📝 عرض الحل
طباعة مع ترقيم
اطبع قائمة عناصر مرقمة، مثلاً: "1. العنصر الأول".
💡 تلميح
استخدم عداداً يزداد مع كل تكرار
📝 عرض الحل
طباعة خريطة
أنشئ خريطة تحتوي على بيانات شخص (الاسم، العمر، المهنة) واطبع كل مفتاح وقيمته.
📝 عرض الحل
طباعة نمط نجوم
اطبع مثلثاً من النجوم بـ 5 صفوف: الصف الأول نجمة واحدة، الثاني نجمتان، وهكذا.
💡 تلميح
استخدم حلقتين متداخلتين: واحدة للصفوف وأخرى للنجوم في كل صف
📝 عرض الحل
دالة طباعة مخصصة
اكتب دالة "اطبع_مزخرف" تأخذ نصاً وتطبعه محاطاً بإطار من النجوم.
📝 عرض الحل
طباعة جدول ضرب
اطبع جدول ضرب العدد 7 من 1 إلى 10.
📝 عرض الحل
المستوى الثاني: الإدخال التفاعلي والملفات ⭐⭐
بعد إتقان الطباعة، حان وقت تعلّم قراءة المدخلات من المستخدم والتعامل مع الملفات.
قراءة المدخلات
في لغة ص، لديك دالتان للقراءة:
اقرأ_سطر()— تقرأ سطراً كاملاً من المستخدم وتُرجعه كنصأدخل("رسالة")— تعرض رسالة توجيهية ثم تقرأ المدخل
# قراءة بسيطة
اطبع("أدخل اسمك: ")
متغير الاسم = اقرأ_سطر()
# قراءة مع رسالة
متغير العمر = أدخل("كم عمرك؟ ")التعامل مع الملفات
مكتبة الملفات (ملفات) توفر دوال شاملة للتعامل مع الملفات النصية. تحتاج استيرادها أولاً:
استورد ملفات من "مكتبة:ملفات"
# كتابة ملف
ملفات.اكتب("ملف.txt"، "محتوى الملف")
# قراءة ملف
متغير محتوى = ملفات.اقرأ("ملف.txt")
# إضافة لملف موجود
ملفات.أضف("ملف.txt"، "سطر إضافي")
# فحص وجود ملف
إذا (ملفات.موجود("ملف.txt"))
اطبع_سطر("الملف موجود!")
نهاية| الدالة | الوصف |
|---|---|
ملفات.اكتب(مسار، محتوى) | كتابة محتوى جديد (يمسح القديم) |
ملفات.اقرأ(مسار) | قراءة محتوى الملف كنص |
ملفات.أضف(مسار، محتوى) | إضافة محتوى دون مسح القديم |
ملفات.موجود(مسار) | التحقق من وجود الملف |
ملفات.احذف(مسار) | حذف الملف |
ملفات.انسخ(مصدر، هدف) | نسخ الملف |
قراءة إدخال المستخدم
اكتب برنامجاً يسأل المستخدم عن اسمه وعمره ثم يطبع رسالة ترحيب.
💡 تلميح
استخدم اطبع() للسؤال ثم اقرأ_سطر() لقراءة الإجابة
📝 عرض الحل
قائمة اختيارات
اعرض قائمة من 4 خيارات مرقمة واطلب من المستخدم اختيار رقم، ثم اعرض الخيار المحدد.
📝 عرض الحل
التحقق من الإدخال
اكتب دالة تطلب من المستخدم إدخال عدد بين 1 و 100 وتتحقق من صحة الإدخال.
💡 تلميح
استخدم حلقة بينما تستمر حتى يدخل المستخدم قيمة صحيحة
📝 عرض الحل
جدول بيانات منسق
اطبع جدولاً منسقاً يحتوي على بيانات 4 طلاب (الاسم، المادة، الدرجة).
📝 عرض الحل
كتابة ملف نصي
اكتب برنامجاً يُنشئ ملفاً نصياً ويكتب فيه بيانات شخصية.
💡 تلميح
استخدم ملفات.اكتب(مسار، محتوى) لكتابة محتوى إلى ملف
📝 عرض الحل
قراءة ملف نصي
اكتب برنامجاً يقرأ ملفاً نصياً ويعرض محتواه بعد التحقق من وجوده.
💡 تلميح
تحقق من وجود الملف أولاً باستخدام ملفات.موجود() قبل قراءته
📝 عرض الحل
إضافة محتوى لملف
اكتب برنامجاً يُضيف سطوراً جديدة إلى ملف موجود دون مسح محتواه السابق.
📝 عرض الحل
فحص وجود ملفات
اكتب دالة تفحص وجود قائمة ملفات وتطبع حالة كل ملف.
📝 عرض الحل
نسخ ملف
اكتب برنامجاً ينسخ ملفاً من مسار إلى آخر مع التحقق من نجاح العملية.
💡 تلميح
تحقق من وجود الملف المصدر قبل محاولة النسخ
📝 عرض الحل
حذف ملف بتأكيد
اكتب برنامجاً يطلب تأكيد المستخدم قبل حذف ملف.
📝 عرض الحل
عداد الكلمات
اكتب دالة تقرأ نصاً من المستخدم وتحسب عدد الكلمات والحروف فيه.
📝 عرض الحل
آلة حاسبة تفاعلية
اكتب آلة حاسبة تقرأ عددين وعملية حسابية من المستخدم وتطبع النتيجة.
📝 عرض الحل
المستوى الثالث: مشاريع متقدمة ⭐⭐⭐
في هذا المستوى، ستبني مشاريع حقيقية تجمع بين الإدخال والإخراج والملفات:
- منسق السجلات (Logger) — نظام تسجيل أحداث مع مستويات مختلفة
- مولد CSV — تصدير بيانات منظمة إلى ملفات CSV
- قارئ الإعدادات — تحميل إعدادات التطبيق من ملف
- باني التقارير — إنشاء تقارير نصية منسقة
- معالج النصوص — تحليل وبحث في المحتوى النصي
- أنظمة تفاعلية — برامج بقوائم متعددة وحلقات تشغيل
نصائح للمستوى المتقدم
💡 نصيحة
عند بناء أنظمة معقدة، قسّم المشروع إلى دوال صغيرة — كل دالة تنفذ مهمة واحدة فقط. هذا يجعل الكود أسهل في الفهم والصيانة.
⚠️ ملاحظة مهمة
تحقق دائماً من وجود الملف قبل محاولة قراءته باستخدام ملفات.موجود() لتجنب الأخطاء.
منسق السجلات (Logger)
اكتب نظام سجلات يكتب رسائل بمستويات مختلفة (معلومات، تحذير، خطأ) إلى ملف.
📝 عرض الحل
مولد ملفات CSV
اكتب نظاماً لإنشاء ملف CSV من مصفوفة بيانات مع دعم العناوين والفواصل.
📝 عرض الحل
قارئ ملفات الإعدادات
اكتب نظاماً لقراءة ملف إعدادات بتنسيق "المفتاح=القيمة" وتحويله إلى خريطة.
📝 عرض الحل
باني التقارير
اكتب نظاماً لبناء تقرير نصي منسق يشمل عنوان وجدول وملخص وتصديره إلى ملف.
📝 عرض الحل
معالج النصوص
اكتب برنامجاً يُجري عمليات تحليل نصية: عد الأسطر والكلمات والبحث عن كلمة.
📝 عرض الحل
نظام دفتر ملاحظات
اكتب نظام دفتر ملاحظات تفاعلي يتيح للمستخدم إضافة وعرض وحفظ الملاحظات في ملف.
📝 عرض الحل
محلل ملفات السجلات
اكتب برنامجاً يقرأ ملف سجلات ويستخرج إحصائيات: عدد كل مستوى (معلومات/تحذير/خطأ).
📝 عرض الحل
نظام إدارة جهات الاتصال
اكتب نظاماً تفاعلياً لإدارة جهات الاتصال يدعم الإضافة والبحث والعرض والحفظ في ملف.