ماهي لغة سي C ؟
لغة سي C سوف تكون محور حديثنا اليوم و هو عن واحدة من أقوى لغات البرمجة الموجودة على الساحة منذ نشأتها إلى الآن, و هي واحدة من لغات البرمجة العالية المستوي high level و هي مثل لغة باسكال من حيث سهولة الإستخدام من ناحية و من ناحية أخرى هي من اللغات المتدنية المستوى من حيث قدرتها على مخاطبة مكونات الجهاز و من اسباب شعبيه لغة الـ C هو إنتشار نظام التشغيل UNIX و هو أهم نظام تشغيل للحاسبات المتطورة حيث أن هذا النظام كتب بلغة C.
بالتأكيد، يعد الأمر scanf() واحدًا من الأوامر الأساسية في لغة C، حيث يستخدم لقراءة البيانات من الوحدة النمطية للإدخال (مثل لوحة المفاتيح) وتخزينها في متغيرات داخل البرنامج.
تتبع scanf() النمط التالي:
scanf("تنسيق", &متغير1, &متغير2, ...);
حيث:
"تنسيق" يحدد نوع البيانات التي سيتم قراءتها.
&متغير1, &متغير2, ... هي عناوين المتغيرات التي سيتم تخزين البيانات المقروءة فيها.
يعتمد تنسيق scanf() على الحروف الخاصة بنوع البيانات التي يتم قراءتها. بعضالأحرف الشائعة المستخدمة في scanf() هي:
- %d: لقراءة قيمة صحيحة (integer).
- %f: لقراءة قيمة عشرية (float).
- %lf: لقراءة قيمة عشرية مزدوجة الدقة (double).
- %c: لقراءة حرف واحد (character).
- %s: لقراءة سلسلة من الحروف (string).
على سبيل المثال، في البرنامج السابق الذي قمت بطرحه، تم استخدام scanf() لقراءة الرقمين num1 و num2 كقيم صحيحة، وذلك باستخدام النمط %d، كما يلي:
scanf("%d %d", &num1, &num2);
هذا يعني أن scanf() سيقرأ قيمتين من الوحدة النمطية للإدخال، ويخزنهما في num1 و num2 على التوالي.
يجب عليك مراعاة أن scanf() يقرأ البيانات حسب التنسيق الذي تم تحديده. إذا قمت بتحديد تنسيق غير صحيح، فسيؤدي ذلك إلى حدوث أخطاء في البرنامج. علاوة على ذلك، يجب تحرير أي ذاكرة مخصصة للمتغيرات التي يتم قراءة القيم إليها باستخدام scanf().
إستخدامات لغة سي C
للغة سي C إستخدامات عديدة و من هذه الإستخدامات هي :
- برمجة و تطوير أنظمة التشغيل.
- برمجة نظم قواعد البيانات.
- تطوير التطبيقات الواجهة الرسومية و الألعاب و الكثير من الإستخدامات.
أمثلة مع الشرح في لغة C
1 - اكتب برنامج عرض نص على الشاشة في لغة C.
#include <stdio.h> int main() { printf("مرحباً بك في لغة C!"); return 0; }
شرح البرنامج: يستخدم الأمر printf() لعرض النص "مرحباً بك في لغة C!" على الشاشة. تعتبر printf() وظيفة تفريغ البيانات التي تستخدم لإرسال النص إلى الشاشة.
2 - اكتب برنامج جمع رقمين في لغة C.
#include <stdio.h> int main() { int num1, num2, sum; printf("الرجاء إدخال رقمين: "); scanf("%d %d", &num1, &num2); sum = num1 + num2; printf("المجموع = %d", sum); return 0; }
شرح البرنامج: يستخدم الأمر `scanf()` لقراءة الرقمين `num1` و `num2` التي يدخلها المستخدم من الوحدة النمطية للإدخال (`stdin`). ثم يتم إجراء العملية الحسابية عن طريق جمع الرقمين وحفظ النتيجة في المتغير `sum`. أخيراً، يتم استخدام الأمر `printf()` لعرض نتيجة الجمع على الشاشة.
امثلة المصفوفات في لغة C
تعتبر المصفوفات (Arrays) من أهم المفاهيم في لغة C، حيث تسمح للمبرمج بتخزين مجموعة من القيم العنصرية في مكان واحد في الذاكرة والوصول إليها باستخدام فهارس (Indices).
لإنشاء مصفوفة في C، يجب تعريفها باستخدام النوع والحجم، كما يلي:
<نوع_المتغير> <اسم_المتغير>[<حجم_المصفوفة>];
على سبيل المثال، يمكنك إنشاء مصفوفة من الأعداد الصحيحة بحجم 5 عناصر كما يلي:
int myArray[5];
myArray[0] = 10; myArray[1] = 20; myArray[2] = 30; myArray[3] = 40; myArray[4] = 50;
وبالتالي، يمكنك الوصول إلى قيمة عنصر معين في المصفوفة باستخدام فهرسه، كما يلي:
int x = myArray[2]; // x = 30
int myArray[5] = {10, 20, 30, 40, 50};
int myArray[] = {10, 20, 30, 40, 50}; int size = sizeof(myArray) / sizeof(myArray[0]); / حجم المصفوفة
في هذا المثال، يتم تعريف المصفوفة myArray وتعيين قيمها في نفس الوقت، ويتم حساب حجم المصفوفة باستخدام القيمة الثابتة sizeof، ويتم تخزينها في المتغير size.
ويمكن استخدام المصفوفات في العديد من التطبيقات، مثل تخزين عدد محدد من الأرقام أو النصوص أو العناصر الأخرى، ومن ثم استخدامها في العديد من العمليات الحسابية والمنطقية.
أمثلة في أساسيات لغة سي C
تمرين 1: طباعة "Hello, World!"
هذا التمرين يعتبر مقدمة للغة C ويهدف إلى طباعة جملة "Hello, World!" على الشاشة.
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
في هذا البرنامج، نستخدم دالة printf() لطباعة النص "Hello, World!" على الشاشة. السطر \n يستخدم لإضافة سطر جديد بعد النص.
تمرين 2: حساب المجموع
هذا التمرين يهدف إلى كتابة برنامج يقوم بحساب مجموع عددين وطباعته على الشاشة.
#include <stdio.h>
int main() {
int num1, num2, sum;
printf("Enter the first number: ");
scanf("%d", &num1);
printf("Enter the second number: ");
scanf("%d", &num2);
sum = num1 + num2;
printf("The sum is: %d\n", sum);
return 0;
}
في هذا البرنامج، نستخدم دالة scanf() لاستلام قيمتين من المستخدم وتخزينهما في المتغيرات num1 و num2. ثم نقوم بحساب المجموع وتخزينه في المتغير sum. أخيرًا، نستخدم printf() لطباعة قيمة المجموع.
تمرين 3: جدول الضرب
هذا التمرين يهدف إلى طباعة جدول الضرب من 1 إلى 10.
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 10; i++) {
for (j = 1; j <= 10; j++) {
printf("%d * %d = %d\n", i, j, i * j);
}
printf("\n");
}
return 0;
}
في هذا البرنامج، نستخدم حلقتين متداخلتين (for) لإنشاء جدول الضرب. الحلقة الخارجية تتحكم في العدد الأول في عملية الضرب، بينما الحلقة الداخلية تتحكم في العدد الثاني. تستخدم printf() لطباعة عملية الضرب والناتج.
تمرين 4: التحقق من صحة الرقم الأول
هذا التمرين يهدف إلى كتابة برنامج يقوم بقراءة رقم من المستخدم ويحقق ما إذا كان الرقم موجبًا أم سالبًا أم صفرًا.
#include <stdio.h>
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (num > 0) {
printf("The number is positive.\n");
} else if (num < 0) {
printf("The number is negative.\n");
} else {
printf("The number is zero.\n");
}
return 0;
}
في هذا البرنامج، نستخدم scanf() لاستلام رقم من المستخدم وتخزينه في المتغير num. ثم نستخدم التحكم الشرطي (if-else) للتحقق من قيمة الرقم وطباعة النتيجة المناسبة.
تمرين 5: حساب مجموع الأعداد الزوجية
هذا التمرين يهدف إلى كتابة برنامج يحسب مجموع الأعداد الزوجية من 1 إلى عدد محدد.
#include <stdio.h>
int main() {
int n, i, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
for (i = 2; i <= n; i += 2) {
sum += i;
}
printf("The sum of even numbers from 1 to %d is: %d\n", n, sum);
return 0;
}
في هذا البرنامج، نستخدم scanf() لاستلام العدد من المستخدم وتخزينه في المتغير n. ثم نستخدم حلقة for للتكرار من 2 إلى العدد المحدد بمعدل زوجي ونقوم بجمع الأعداد الزوجية في المتغير sum. أخيرًا، نستخدم printf() لطباعة مجموع الأعداد الزوجية.
تمرين 6: حساب عاملين العدد
هذا التمرين يهدف إلى كتابة برنامج يقوم بحساب عوامل عدد معين وطباعتها.
#include <stdio.h>
int main() {
int num, i;
printf("Enter a number: ");
scanf("%d", &num);
printf("The factors of %d are: ", num);
for (i = 1; i <= num; i++) {
if (num % i == 0) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
في هذا البرنامج، نستخدم scanf() لاستلام العدد من المستخدم وتخزينه في المتغير num. ثم نستخدم حلقة for للتكرار من 1 إلى العدد المحدد ونحسب المتبقي عند قسمة num على i. إذا كان المتبقي يساوي صفر، يعني أن i هو عامل للعدد. نقوم بطباعة العوامل باستخدام printf().
تمرين 7: التحقق من صحة السنة
هذا التمرين يهدف إلى كتابة برنامج يحقق ما إذا كانت سنة معينة هي سنة كبيسة أم لا.
#include <stdio.h>
int main() {
int year;
printf("Enter a year: ");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("%d is a leap year.\n", year);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}
في هذا البرنامج، نستخدم scanf() لاستلام السنة من المستخدم وتخزينها في المتغير year. ثم نستخدم التحكم الشرطي (if-else) للتحقق مما إذا كانت السنة مقسومة على 4 ولا يمكن قسمتها على 100 بدون بقية أو إذا كانت قابلة للقسمة على 400 بدون بقية، وهذا يعني أنها سنة كبيسة. نستخدم printf() لطباعة النتيجة المناسبة.