لغة C الاساس في البرمجة

لماذا لغة C ؟

تخيل أنك تمتلك مفتاحًا يمكنك من خلاله فتح أبواب البرمجة على مصراعيها، وفهم كيف تعمل الأنظمة والتطبيقات من الداخل.
هذا المفتاح هو لغة C، اللغة التي بُنيت عليها معظم لغات البرمجة الحديثة والتي تُعد أداة قوية للسيطرة على الموارد والأداء. 

لغة C  الاساس في البرمجة

لغة C حجر الأساس في عالم البرمجة

سواء كنت تطمح لتطوير أنظمة تشغيل، برمجيات مدمجة، أو حتى لفهم عميق لمبادئ البرمجة، فإن تعلم لغة C يمنحك أساسًا متينًا ومهارة لا غنى عنها في رحلتك البرمجية.
دع شغفك بالإبداع يقودك، وابدأ رحلتك مع لغة C في هذا المقال التحفيزي الجميل.

♓ مقدمة إلى لغة البرمجة C

لغة C تعتبر لغة برمجة عالية الأداء تُترجم مباشرة إلى لغة الآلة، مما يجعلها مثالية لتطوير أنظمة التشغيل والتطبيقات الحديثة.
  • تتيح مرونة كبيرة للتعامل مع العتاد عبر المؤشرات وإدارة الذاكرة، مما يجعلها الخيار الأفضل للأنظمة المدمجة. 
  • تعد لغة عامة وشائعة بين المبرمجين، مما يوفر دعماً تعليمياً واسعاً.
  • كما أنها تُعتبر أساساً للغات البرمجة الحديثة مثل C++ وJava، مما يُسهّل تعلمها لاحقاً.
  • توفّر سيطرة كاملة على الموارد، مما يجعلها مناسبة للتطبيقات الحساسة.
  • تستخدم منذ عقود ولا تزال معتمدة لتطوير الأنظمة الحيوية بفضل موثوقيتها واستمراريتها.

♓ التعرف على بنية برنامج C

شرحا مفصلًا عن بنية برنامج لغة C.

سوف نقوم بإنشاء محتوى تعليمي منظم يوضح الهيكل الأساسي لفهم واستيعاب برامج C.

ملاحظة:

هذا المقال ليس بديلاً عن تعلم البرمجة بلغة "C"، وإنما يهدف إلى تقديم خطوة تحفيزية تساعدك على الانطلاق في عالم البرمجة، ليكون بمثابة البداية الأولى نحو اكتساب مهارات أعمق وفهم أوسع لهذه اللغة الأساسية.

أبسط برنامج في C

#include <stdio.h>
int main() {
    printf("مرحبا بكم في عالم البرمجة !\n");
    return 0;
    }
✅ Output: // مرحبا بكم في عالم البرمجة !

شرح الكود

  • الكود المكتوب بلغة بلغة C يُستخدم لطباعة النص "مرحبا بكم في عالم البرمجة !.
  • " باستخدام الدالة printf.

يشمل الكود:

  • تعريف المكتبة الأساسية <include <stdio.h#
  • تعريف الدالة الرئيسية() main كبوابة البرنامج.
  • استخدام return 0 للإشارة إلى انتهاء البرنامج بنجاح.

 ♓ المتغيرات والأنواع الأساسية

لغة البرمجة C تقدم مجموعة متنوعة من أنواع البيانات التي تُستخدم لتخزين وإدارة البيانات بشكل فعال.
 فيما يلي توضيح لأهم مفاهيم أنواع البيانات وكيفية التعامل معها:

أنواع البيانات الأساسية (Primitive Data Types):

  • int: تستخدم لتخزين الأعداد الصحيحة.
  • float: تستخدم لتخزين الأرقام العشرية (ذات الدقة البسيطة).
  • double: تُستخدم للأرقام العشرية ذات الدقة المزدوجة.
  • char: تستخدم لتخزين الحروف أو القيم النصية.

مثال:

مثال لكود بلغة C.

#include <stdio.h>
int main() {
    // تعريف المتغيرات
    int age = 25;            // العمر
    float height = 1.75;     // الطول بالمتر
    char grade = 'A';        // التقدير
    // طباعة القيم باستخدام printf
    printf("العمر: %d\n", age);
    printf("الطول: %.2f متر\n", height);printf("التقدير: %c\n", grade);return 0; // إنهاء البرنامج بنجاح
}
✅ // : output: 
العمر: 25 الطول: 1.75 متر التقدير: A

شرح الكود

تعريف المتغيرات:

  • int age: تعريف متغير عددي (عدد صحيح) باسم age وقيمته الابتدائية 25.
  • float height: تعريف متغير عشري (عدد غير صحيح) باسم height وقيمته الابتدائية 1.75.
  • char grade: تعريف متغير حرفي (رمز واحد) باسم grade وقيمته الابتدائية 'A'.

طباعة القيم باستخدام printf:

  • printf: تُستخدم لطباعة النصوص والقيم على الشاشة.
  • يتم استخدام:
  • %d: لتمثيل القيم الصحيحة (int).
  • %.2f: لتمثيل القيم العشرية بدقة تصل إلى منزلتين عشريتين (float).
  • %c: لتمثيل القيم الحرفية (char).

♓ شروط واتخاذ القرارات

شروط واتخاذ القرارات

👈 جملة if:

// الجملة الشرطية if
  #include <stdio.h>
  int main() {
  int number = 10;
  if (number > 5) {
  printf("الرقم أكبر من 5.\n");
  else {
  printf("الرقم 5 أو أقل.\n");
  }
  return 0;
  }
   ✅ //Output: الرقم أكبر من 5.

شرح الكود

  • يبدأ البرنامج ويقوم بتعريف المتغير number بقيمة 10
  • يتحقق من الشرط if (number > 5): لأن 10 > 5، الشرط صحيح.يتم تنفيذ النص داخل الجملة الشرطية: يتم تجاهل الجزء else لأنه لم يتم استيفاء شرطه.
  • ينتهي البرنامج ويعيد القيمة 0.

👈 جملة else:

#include <stdio.h>
int main() {
    int number = 10;
    if (!(number == 5)) {  // عكس الشرط
        printf("الرقم لا يساوي 5.\n");
    } else {
        printf("الرقم يساوي 5.\n");
    }
    return 0;
}
 ✅ // Output: الرقم لا يساوي 5.

شرح الكود

 تعريف المتغير:

  • يتم تعريف متغير عددي باسم number وتعيين القيمة الأولية له وهي 10.

 الجملة الشرطية if:

  • يتم استخدام !(number == 5)، وهو عكس الشرط number == 5.
  • !(...) تعني "ليس" أو "عكس".
  • إذا كانت number لا تساوي 5، الشرط يكون صحيحًا (true).

تنفيذ الجملة الشرطية:

  • إذا تحقق الشرط (number != 5):
  • يقوم بطباعة النص: "الرقم لا يساوي 5."

♓ الحلقات ( loops )

الحلقات هي عبارة عن هياكل تحكمية في البرمجة تسمح بتنفيذ جزء من الكود عدة مرات استنادا إلى شرط معين.
 في لغة C، توجد ثلاثة أنواع رئيسية من الحلقات:
  •  الحلقة for
  • الحلقة while
  • الحلقة do-while

 👈 الحلقة for:

الكود:

// الحلقة for
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("العدد: %d\n", i);
}
return 0;
} ✅ // Output: العدد: 1 العدد: 2 العدد: 3 العدد: 4 العدد: 5

شرح الكود:

حلقة for:

  • تعريف المتغير i: يتم تعيين قيمته الابتدائية إلى 1 (int i = 1).
  • الشرط (i <= 5): الحلقة تستمر طالما أن قيمة i أقل من أو تساوي 5.
  • زيادة i (i++): في نهاية كل دورة للحلقة، يتم زيادة قيمة i بمقدار 1.

دالة الطباعة printf:

  • تقوم بطباعة النص "العدد: " متبوعًا بالقيمة الحالية للمتغير i.

إنهاء البرنامج:

  • الدالة return 0 تُستخدم للإشارة إلى أن البرنامج انتهى بنجاح.

👈 الحلقة while:

الكود

#include <stdio.h>
int main() {
int count = 1;  // تعريف متغير العد وتهيئته بالقيمة 1
while (count <= 5) {// تستمر الحلقة طالما أن count أقل من أو يساوي 5
printf("العدد: %d\n", count);  // طباعة قيمة count الحالية
 count++;  // زيادة قيمة count بمقدار 1
        }
 return 0; // إنهاء البرنامج
    }
 ✅ // Output: العدد: 2  العدد: 3  العدد: 4  العدد: 5 العدد: 1

شرح الكود

 تعريف متغير count:

  • تم تعريف متغير من النوع int يحمل اسم count ويخزن قيمة عددية صحيحة.
  • تم تهيئة count بالقيمة 1 كبداية.
  • تستمر الحلقة طالما أن الشرط count <= 5(أي أن count أقل من أو يساوي 5) صحيح.
  • إذا أصبح الشرط خاطئًا، تتوقف الحلقة.

 تنفيذ التعليمات داخل الحلقة:

  • تستخدم دالة printf لطباعة النصوص.
  • %d هو رمز تنسيق يُستخدم لطباعة قيمة عدد صحيح.
  • يتم استبدال %d بالقيمة الحالية للمتغير count.

 تحديث قيمة count:

  • يُزيد هذا السطر قيمة count بمقدار 1 بعد كل تكرار للحلقة.
  • إذا كان count = 1، يصبح count = 2 وهكذا.

إنهاء البرنامج:

  • يتم استخدام return 0 للإشارة إلى أن البرنامج قد انتهى بنجاح.

 👈 الحلقة do-while

الكود

#include <stdio.h>
int main () {
int  number;
do {
 printf("أدخل رقمًا موجبًا: ");
scanf("%d", &number);  // قراءة إدخال المستخدم
 } while (number <= 0);  // تستمر الحلقة طالما أن الرقم غير موجب
 printf("شكراً! الرقم المدخل هو: %d\n", number);
return 0;}
✅ // Output  أدخل رقمًا موجبًا: -1
أدخل رقمًا موجبًا: 0
أدخل رقمًا موجبًا: 5
شكراً! الرقم المدخل هو: 5

شرح الكود

تعريف متغير count:

  • يتم تعريف متغير باسم count من النوع int (عدد صحيح).
يتم تهيئة هذا المتغير بقيمة ابتدائية 1.الحلقة

do-while:

التنفيذ الأولي:
  • يتم تنفيذ الكود داخل كتلة do مرة واحدة على الأقل، حتى إذا كان الشرط في while غير صحيح.
التحقق من الشرط:
  • while (count <= 5):
  • يتم التحقق من أن قيمة count أقل من أو تساوي 5.
  • إذا تحقق الشرط، تعاد الحلقة، وإذا لم يتحقق، تخرج الحلقة.

♓ الوظائف (Functions)

إنشاء وظيفة بسيطة:

الكود:


#include <stdio.h> // تعريف الوظيفة
int sum(int a, int b){
return a + b;}
int main() {
int result = sum(10, 20);
printf("المجموع: %d\n", result);
return 0;}
  ✅ // Output:  المجموع: 30

شرح الكود:

تعريف الدالة sum:

الغرض:
  • الدالة sum تقوم بجمع رقمين وإرجاع الناتج.
التفاصيل:
  • تُستخدم الكلمة المفتاحية int لتحديد أن الدالة تُرجع قيمة عدد صحيح.
  • المعاملات int a و int b هما القيم التي ستُمرر إلى الدالة عند استدعائها.
  • التعبير return a + b; يُرجع مجموع القيمتين a و b إلى المكان الذي استُدعي منه.

استدعاء الدالة sum وتخزين النتيجة:

  • يتم استدعاء الدالة sum وتمرير القيمتين 10 و 20 و كمعاملين.
  • تقوم الدالة بإرجاع الناتج (30)، والذي يتم تخزينه في المتغير result.

طباعة النتيجة:

  • "المجموع: %d\n":
  • النص "المجموع:" يُطبع كما هو.
  • %d هو رمز تنسيق لعرض قيمة عدد صحيح.
  • result هو القيمة التي ستُعرض مكان %d.

♓  تطبيق عملي

تطبيق عملي يعرض سورة الناس.
هذا المثال يمكن من خلاله التعرف على بعض خصائص لغة C.

ملاحظة:
  • يقوم هذا التطبيق العملي بترجمة كلمات مدخلة باللغة الإنجليزية (مثل: hello، world، programming، language، computer) إلى اللغة العربية (مثل: مرحبا، عالم، برمجة، لغة، حاسوب).
  •  يعتمد التطبيق على استخدام أساسيات لغة C مثل typedef لتعريف هيكل خاص يحتوي على الكلمات وترجماتها، و char لتخزين النصوص، بالإضافة إلى حلقة for للبحث عن الكلمة المطلوبة داخل القاموس.
  •  هذا التطبيق يساهم في تعزيز المهارات المكتسبة في البرمجة بلغة C من خلال تطبيق عملي بسيط وممتع.

// برنامج بسيط يقوم بترجمة بعض الكلمات بلغةال برمجة C
#include <stdio.h>
#include <string.h>

#define MAX_WORDS 5
#define MAX_INPUT_LENGTH 20

// هيكل يحتوي على الكلمة وترجمتها
typedef struct {
    char word[MAX_INPUT_LENGTH];
    char translation[MAX_INPUT_LENGTH];
} DictionaryEntry;

// دالة للبحث عن الترجمة
const char* translate(const char* input, DictionaryEntry dictionary[], int size) {
    for (int i = 0; i < size; i++) {
        if (strcmp(input, dictionary[i].word) == 0) {
            return dictionary[i].translation;
        }
    }
    return "Translation not found!";
}

int main() {
    // القاموس البسيط
    DictionaryEntry dictionary[MAX_WORDS] = {
        {"hello", "مرحبا"},
        {"world", "عالم"},
        {"programming", "برمجة"},
        {"language", "لغة"},
        {"computer", "حاسوب"}
    };

    char input[MAX_INPUT_LENGTH];

    printf("Enter a word to translate: ");
    if (scanf("%19s", input) != 1) { // تحديد عدد الأحرف لتجنب تجاوز الذاكرة
        printf("Error reading input!\n");
        return 1;
    }

    // استدعاء الدالة للترجمة
    const char* result = translate(input, dictionary, MAX_WORDS);

    printf("Translation: %s\n", result);

    return 0;
}

إرسال تعليق

أحدث أقدم