Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

استخدام typedef لأسماء مستعارة للأنواع

جزء من قسم Logic & Flow في رحلة C على Coddy. الدرس 58 من 63.

أحياناً في برمجة C، ستواجه مواقف تكون فيها أسماء أنواع البيانات الحالية إما مطولة جداً أو لا تعبر بوضوح عن غرض برنامجك. توفر الكلمة المفتاحية typedef حلاً من خلال السماح لك بإنشاء أسماء جديدة لأنواع البيانات الموجودة.

فكر في typedef بمثابة إنشاء اسم مستعار أو كنية لنوع بيانات. الصيغة الأساسية بسيطة:

typedef existing_type new_name;

على سبيل المثال، يمكنك إنشاء اسم أكثر وصفاً لنوع البيانات int:

typedef int Integer;

بعد هذا التصريح، يمكنك استخدام Integer في أي مكان تستخدم فيه عادةً int. كلاهما int count = 5; و Integer count = 5; يؤديان نفس الشيء تماماً، ولكن النسخة الثانية قد تكون أكثر دلالة في سياقات معينة.

تصبح هذه الميزة ذات قيمة خاصة عند التعامل مع أنواع بيانات معقدة أو عندما تريد جعل الكود الخاص بك أكثر توثيقاً ذاتياً وأسهل في الصيانة.

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يوضح استخدام typedef لإنشاء أسماء مستعارة (aliases) ذات معنى لأنواع البيانات لنظام مراقبة درجة الحرارة. يجب أن يقوم برنامجك بما يلي:

  1. إنشاء الأسماء المستعارة التالية للأنواع باستخدام typedef:
    • إنشاء اسم مستعار للنوع Temperature بدلاً من float
    • إنشاء اسم مستعار للنوع SensorID بدلاً من int
    • إنشاء اسم مستعار للنوع Status بدلاً من int
  2. في الدالة الرئيسية (main function):
    • قم بالتصريح عن متغير من النوع SensorID باسم sensor
    • قم بالتصريح عن متغير من النوع Temperature باسم currentTemp
    • قم بالتصريح عن متغير من النوع Temperature باسم threshold
    • قم بالتصريح عن متغير من النوع Status باسم alertStatus
    • اقرأ أربع قيم من المدخلات بهذا الترتيب: معرف المستشعر (sensor ID)، درجة الحرارة الحالية، درجة حرارة العتبة (threshold temperature)، وحالة التنبيه (alert status)
    • قم بتعيين قيم المدخلات هذه للمتغيرات المقابلة
    • اطبع معلومات المستشعر بهذا التنسيق الدقيق:
      • Sensor ID: [sensor_id]
      • Current Temperature: [current_temp]
      • Threshold: [threshold_temp]
      • Alert Status: [alert_status]
    • قم بإجراء تحليل لدرجة الحرارة واطبع النتائج:
      • احسب فرق درجة الحرارة (درجة الحرارة الحالية ناقص العتبة) وقم بتخزينه في متغير من النوع Temperature باسم difference
      • اطبع الفرق بهذا التنسيق الدقيق: Temperature Difference: [difference]
      • حدد فئة درجة الحرارة بناءً على درجة الحرارة الحالية:
        • إذا كانت درجة الحرارة أقل من 0.0: اطبع Category: Freezing
        • إذا كانت درجة الحرارة بين 0.0 و 25.0 (شاملة): اطبع Category: Normal
        • إذا كانت درجة الحرارة أعلى من 25.0: اطبع Category: Hot
      • تحقق مما إذا كان يجب تفعيل التنبيه:
        • إذا كانت درجة الحرارة الحالية أكبر من العتبة وَ كانت حالة التنبيه هي 1: اطبع Alert: Temperature exceeded threshold!
        • خلاف ذلك: اطبع Alert: No alert triggered

يوضح هذا التحدي كيف تجعل typedef الكود أكثر توثيقاً ذاتياً وأسهل في الفهم. بدلاً من استخدام أنواع عامة مثل int و float في جميع أنحاء برنامجك، ستستخدم أسماءً ذات معنى مثل SensorID و Temperature و Status والتي تشير بوضوح إلى الغرض من كل متغير. يعمل هذا النهج على تحسين قابلية قراءة الكود ويجعل من السهل صيانة برامجك وتعديلها.

جرّب بنفسك

#include <stdio.h>

// TODO: قم بإنشاء أسماء مستعارة (typedef aliases) هنا

int main() {
    // TODO: قم بالتصريح عن المتغيرات باستخدام الأسماء المستعارة (typedef aliases)
    
    // قراءة قيم المدخلات
    scanf("%d", &sensor);
    scanf("%f", &currentTemp);
    scanf("%f", &threshold);
    scanf("%d", &alertStatus);
    
    // TODO: اكتب الكود الخاص بك أدناه لطباعة معلومات المستشعر وإجراء التحليل
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow

تدرّب بنفسك: مترجم C عبر الإنترنت