مضى على الشبكة و يوم من العطاء.

[ شرح ] اساسيات لغة C | المتغيرات والثوابت 0x02

N0Tb1t

./عضو جديد

firefox
linux

السمعة:

بسم الله
في هذا المقال سنتعرف على تعريف المتغيرات وخطوات تعريفها وقواعد تسميتها بالإضافة إلى تعريف الثوابت وأنواعها وطرق تعريفها ونهايةً سنوضح الفرق بين المتغيرات والثوابت

أولاً:
المتغيرات (Variables):
  • تعريفها: هي عبارة عن مكان يتم حجزه في الذاكرة • (RAM) بهدف تخزين قيمه معينة فيها أثناء تشغيل البرنامج. حيث أنّ القيمة التي نضعها بالمتغير هي قيمة مؤقتة يتم حذفها من الذاكرة بمجرد أن يتوقف البرنامج. ويمكن تغيير قيمتها أثناء تنفيذ البرنامج.
خطوات تعريف المتغير :
1.
بدايةً نقوم بتحديد نوع البيانات (والذي سوف نشرحه بالمقال القادم إن شاء الله)
2. تسمية المتغير : يجب أن يكون اسم المتغير فريداً 'unique' أي لا يتكرر ويتّبع قواعد التسمية التي سنشرحها تالياً
3. تخصيص قيمة ابتدائية : وهذه الخطوة اختيارية أي يمكنك إعطاء المتغير قيمة عند تعريفه

صيغة تعريف المتغير : syntax
C:
dataType(نوع البيانات) varName(اسم المتغير) = value(القيمة الابتدائيه);

قواعد تسمية المتغيرات:
يجب أن يبدأ الاسم بحرف أو علامة '_' (underscore).
يمكن أن يحتوي على الأحرف (a-z, A-Z)، الأرقام (0-9)، وعلامة '_'.
لا يُسمح باستخدام الكلمات المحجوزة (مثل int، return).
الحساسية لحالة الأحرف: Age و age يُعتبران متغيرين مختلفين

مثال:
C:
#include <stdio.h>

int main() {
    int age = 25;           // متغير من النوع int
    float height = 5.8;     // متغير عشري
    char grade = 'A';       // متغير حرفي
    char name[] = "Ali";    // متغير نصي (مصفوفة من الأحرف)

    printf("Age: %d\n", age);
    printf("Height: %.1f\n", height);
    printf("Grade: %c\n", grade);
    printf("Name: %s\n", name);

    return 0;
}

الناتج :
C:
Age: 25
Height: 5.8
Grade: A
Name: Ali



ثانيا:
الثوابت (Constants):
  • تعريفها: تُشبه المتغيرات واستخداماتها، لكن من إسمها يبدوا أنها عكس المتغيرات، فالمتغيرات تتغير! أما الثوابت ثابتة ﻻ تتغير وهنا تكمن أهميتها.
أنواع الثوابت :
  1. ثوابت رقمية (Numeric Constants):
    أعداد صحيحة: مثل 10، -5.
    أعداد عشرية: مثل 3.14، -0.001.
  2. ثوابت حرفية (Character Constants):
    حرف واحد محصور بين علامات اقتباس مفردة ('A'، 'b').
  3. ثوابت نصية (String Constants):
    نصوص محصورة بين علامات اقتباس مزدوجة ("Hello").
  4. ثوابت رمزية (Symbolic Constants):
    تُعرّف باستخدام الكلمة المفتاحية const أو عن طريق #define.

وهناك طريقتين لتعريف الثوابت:
إما باستخدام الكلمة المفتاحية const او باستخدام #define.

الصيغة لاستخدام const (syntax) :
كود:
const(الكلمة المفتاحية) dataType(نوع البيانات) constName(اسم الثابت) = value(القيمة);
ملاحظة هامة : "يجب وجود قيمة في تعريف الثابت"


الصيغة لاستخدام define (syntax)# :
كود:
#define constName(اسم الثابت) value(القيمة)
مثال:

C:
#include <stdio.h>

#define MAX_SIZE 100  // ثابت رمزي باستخدام #define

int main() {
    const float PI = 3.14;  // ثابت باستخدام const

    printf("Value of PI: %.2f\n", PI);
    printf("Maximum Size: %d\n", MAX_SIZE);

    // محاولة تغيير قيمة ثابت ستؤدي إلى خطأ:
    // PI = 3.14159; // خطأ!
    // MAX_SIZE = 200; // خطأ!

    return 0;
}

الناتج:
كود:
Value of PI: 3.14
Maximum Size: 100

هلأ يمكن يدور سؤال في راسك ما هو الفرق بين const و #define

1. استخدام const:
تعريف
: تُستخدم لتحديد متغير ثابت لا يمكن تغيير قيمته أثناء وقت التنفيذ.

معالجته: يتم التعامل مع الثوابت المعرفة باستخدام const في مرحلة التنفيذ (runtime).

النطاق (Scope): تتبع القواعد الاعتيادية لنطاق المتغيرات في اللغة (محلية أو عامة).

النوع (Type): تحتاج إلى تحديد نوع المتغير، مما يجعل الشيفرة أكثر أمانًا من الأخطاء.


2.استخدام #define :
تعريف: تُستخدم لتعريف ماكرو ثابت (Macro) أو تعبير ثابت يتم استبداله حرفيًا أثناء مرحلة الترجمة.

معالجته: يتم استبدال القيمة المعرفة باستخدام #define مباشرةً أثناء الترجمة (compile time).

النطاق (Scope): ليس لها نطاق؛ يتم استبدالها في كل مكان في الكود حيث يتم استخدامها.

النوع (Type): لا تحتاج إلى نوع معين، وهذا قد يسبب أخطاء أثناء التنفيذ.


ويوضح الجدول التالي الفرق:

WhatsApp Image 2025-06-01 at 7.59.26 PM.webp



وأخيراً ما هو الفرق بين المتغيرات والثوابت
وكما يوضح الجدول التالي أهم الفروقات بينهما
:

WhatsApp Image 2025-06-01 at 7.59.27 PM.webp


ملاحظة هامة:
اذا ما طبقت بإيدك ما حتفهم اتمنى منك التطبيق العملي.

ورأيكم مهم سواء نقد للتحسين او مدح للاستمرار
 
التعديل الأخير:
بسم الله
في هذا المقال سنتعرف على تعريف المتغيرات وخطوات تعريفها وقواعد تسميتها بالإضافة إلى تعريف الثوابت وأنواعها وطرق تعريفها ونهايةً سنوضح الفرق بين المتغيرات والثوابت

أولاً:
المتغيرات (Variables):
  • تعريفها: هي عبارة عن مكان يتم حجزه في الذاكرة • (RAM) بهدف تخزين قيمه معينة فيها أثناء تشغيل البرنامج. حيث أنّ القيمة التي نضعها بالمتغير هي قيمة مؤقتة يتم حذفها من الذاكرة بمجرد أن يتوقف البرنامج. ويمكن تغيير قيمتها أثناء تنفيذ البرنامج.
خطوات تعريف المتغير :
1.
بدايةً نقوم بتحديد نوع البيانات (والذي سوف نشرحه بالمقال القادم إن شاء الله)
2. تسمية المتغير : يجب أن يكون اسم المتغير فريداً 'unique' أي لا يتكرر ويتّبع قواعد التسمية التي سنشرحها تالياً
3. تخصيص قيمة ابتدائية : وهذه الخطوة اختيارية أي يمكنك إعطاء المتغير قيمة عند تعريفه

صيغة تعريف المتغير : syntax
C:
dataType(نوع البيانات) varName(اسم المتغير) = value(القيمة الابتدائيه);

قواعد تسمية المتغيرات:
يجب أن يبدأ الاسم بحرف أو علامة '_' (underscore).
يمكن أن يحتوي على الأحرف (a-z, A-Z)، الأرقام (0-9)، وعلامة '_'.
لا يُسمح باستخدام الكلمات المحجوزة (مثل int، return).
الحساسية لحالة الأحرف: Age و age يُعتبران متغيرين مختلفين

مثال:
C:
#include <stdio.h>

int main() {
    int age = 25;           // متغير من النوع int
    float height = 5.8;     // متغير عشري
    char grade = 'A';       // متغير حرفي
    char name[] = "Ali";    // متغير نصي (مصفوفة من الأحرف)

    printf("Age: %d\n", age);
    printf("Height: %.1f\n", height);
    printf("Grade: %c\n", grade);
    printf("Name: %s\n", name);

    return 0;
}

الناتج :
C:
Age: 25
Height: 5.8
Grade: A
Name: Ali



ثانيا:
الثوابت (Constants):
  • تعريفها: تُشبه المتغيرات واستخداماتها، لكن من إسمها يبدوا أنها عكس المتغيرات، فالمتغيرات تتغير! أما الثوابت ثابتة ﻻ تتغير وهنا تكمن أهميتها.
أنواع الثوابت :
  1. ثوابت رقمية (Numeric Constants):
    أعداد صحيحة: مثل 10، -5.
    أعداد عشرية: مثل 3.14، -0.001.
  2. ثوابت حرفية (Character Constants):
    حرف واحد محصور بين علامات اقتباس مفردة ('A'، 'b').
  3. ثوابت نصية (String Constants):
    نصوص محصورة بين علامات اقتباس مزدوجة ("Hello").
  4. ثوابت رمزية (Symbolic Constants):
    تُعرّف باستخدام الكلمة المفتاحية const أو عن طريق #define.

وهناك طريقتين لتعريف الثوابت:
إما باستخدام الكلمة المفتاحية const او باستخدام #define.

الصيغة لاستخدام const (syntax) :
كود:
const(الكلمة المفتاحية) dataType(نوع البيانات) constName(اسم الثابت) = value(القيمة);
ملاحظة هامة : "يجب وجود قيمة في تعريف الثابت"


الصيغة لاستخدام define (syntax)# :
كود:
#define constName(اسم الثابت) value(القيمة)
مثال:

C:
#include <stdio.h>

#define MAX_SIZE 100  // ثابت رمزي باستخدام #define

int main() {
    const float PI = 3.14;  // ثابت باستخدام const

    printf("Value of PI: %.2f\n", PI);
    printf("Maximum Size: %d\n", MAX_SIZE);

    // محاولة تغيير قيمة ثابت ستؤدي إلى خطأ:
    // PI = 3.14159; // خطأ!
    // MAX_SIZE = 200; // خطأ!

    return 0;
}

الناتج:
كود:
Value of PI: 3.14
Maximum Size: 100

هلأ يمكن يدور سؤال في راسك ما هو الفرق بين const و #define

1. استخدام const:
تعريف
: تُستخدم لتحديد متغير ثابت لا يمكن تغيير قيمته أثناء وقت التنفيذ.

معالجته: يتم التعامل مع الثوابت المعرفة باستخدام const في مرحلة التنفيذ (runtime).

النطاق (Scope): تتبع القواعد الاعتيادية لنطاق المتغيرات في اللغة (محلية أو عامة).

النوع (Type): تحتاج إلى تحديد نوع المتغير، مما يجعل الشيفرة أكثر أمانًا من الأخطاء.


2.استخدام #define :
تعريف: تُستخدم لتعريف ماكرو ثابت (Macro) أو تعبير ثابت يتم استبداله حرفيًا أثناء مرحلة الترجمة.

معالجته: يتم استبدال القيمة المعرفة باستخدام #define مباشرةً أثناء الترجمة (compile time).

النطاق (Scope): ليس لها نطاق؛ يتم استبدالها في كل مكان في الكود حيث يتم استخدامها.

النوع (Type): لا تحتاج إلى نوع معين، وهذا قد يسبب أخطاء أثناء التنفيذ.


ويوضح الجدول التالي الفرق:

مشاهدة المرفق 17544


وأخيراً ما هو الفرق بين المتغيرات والثوابت
وكما يوضح الجدول التالي أهم الفروقات بينهما
:

مشاهدة المرفق 17545

ملاحظة هامة:
اذا ما طبقت بإيدك ما حتفهم اتمنى منك التطبيق العملي.

ورأيكم مهم سواء نقد للتحسين او مدح للاستمرار
الله يعطيك العافية أخوي

و الله ما شاء الله بدأ في تطور في أسلوب الشرح

الله ينفع فينا و فيك
 
الله يعطيك العافية أخوي

و الله ما شاء الله بدأ في تطور في أسلوب الشرح

الله ينفع فينا و فيك
الله يعافيك
ان شاء الله القادم افضل
امين يا رب
 

آخر المشاركات

عودة
أعلى