الإعلانات

تعلم البرمجة هو تجربة تراكمية. إلى جانب تعلم بناء الجملة للغة التي اخترتها ، يجب عليك أيضًا تعلم المبادئ العامة التي تستخدمها جميع لغات البرمجة.

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

إذن من أين يجب أن تبدأ؟ بقول مرحبا!

1. مرحبا بالعالم!

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

#يشمل / * هذا نص مرحبًا بالعالم بلغة C * / int main (باطل) {printf ("Hello، World! \ن")؛ العودة 0 ؛ }

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

instagram viewer

جعلها تعمل

عادة ، لن تحتاج إلى تثبيت أي برامج إضافية على جهاز الكمبيوتر الخاص بك لتشغيل البرامج النصية سي. افتح نافذة طرفية (أو موجه الأوامر إذا كنت تقوم بتشغيل Windows) وانتقل إلى الدليل الذي قمت بحفظ البرنامج النصي فيه.

تختلف طريقة تجميع ملفاتك وتشغيلها من نظام إلى آخر:

  • مستخدمو Windows: اجعل ملفك قابلاً للتنفيذ عن طريق الكتابة cl hello.c والضغط على دخول. سيؤدي هذا إلى إنشاء hello.exe في نفس المجلد ، والذي يمكنك تشغيله عن طريق الكتابة أهلا.
  • مستخدمو Linux و macOS: نوع دول مجلس التعاون الخليجي -o hello hello.c واضغط على Enter لجعله قابلاً للتنفيذ ، وقم بتشغيله عن طريق الكتابة ./أهلا.

أيًا كانت الطريقة التي تستخدمها ، يجب أن يوضح لك تشغيل البرنامج النصي ما يلي:

الإخراج يظهر نتائج Hello World! رسم في C.

إذا لم يعمل على Windows ، فتأكد من تشغيل موجه الأوامر في وضع المسؤول. بالنسبة لنظام التشغيل macOS ، قد تحتاج إلى تثبيت Xcode من متجر التطبيقات وملفات اتبع هذه الخطوات من StackOverflow.

الآن ، دعونا نلقي نظرة على البرنامج سطرا بسطر لنرى كيف يعمل ، وتحسينه!

تحت الغطاء: فهم لغة سي

المعالجات

يبدأ النص الذي أنشأته للتو بإدراج مكتبة.

#يشمل 

السطر الأول في البرنامج النصي يسمى المعالج. يتم تنفيذ ذلك قبل تجميع باقي النص. في هذه الحالة ، يخبر البرنامج النصي باستخدام ملف stdio.h مكتبة. يوجد عدد كبير من المعالجات التمهيدية المتاحة لمهام مختلفة.

يعتني Stdio.h بالحصول على المدخلات من مستخدم البرنامج وإخراج المعلومات إليهم.

/ * هذا نص مرحبًا بالعالم بلغة C * /

هذا السطر التالي هو تعليق. تخبر الشرطة المائلة والنجمة المترجم أن يتجاهل كل شيء بينها وبين النجمة والشرطة المائلة. في حين أن هذا قد يبدو غير مجدٍ ، فإن القدرة على ترك ملاحظات واضحة لنفسك والآخرين حول ما يفعله الكود الخاص بك هو عادة أساسية يجب الدخول فيها.

الوظيفة الرئيسية

int main (باطل)

يجب أن يحتوي كل برنامج C على ملف الأساسية وظيفة. Main هي وظيفة تقوم بإرجاع عدد صحيح ، يُشار إليه بـ int. الأقواس التي تلي main هي الوسيطات الخاصة بها ، على الرغم من أنها في هذه الحالة لا تأخذ أي شيء ، ولهذا السبب تستخدم الامتداد فارغ كلمة رئيسية.

تكتب الكود الذي سيتم تنفيذه بين قوسين مجعدين.

{printf ("Hello، World! \ن")؛ العودة 0 ؛ }

داخل الوظيفة ، يمكنك استدعاء printf () وظيفة. تماما مثل الأساسية()، printf هي وظيفة. الاختلاف هو أن printf دالة في ملف stdio مكتبة قمت بتضمينها في البداية.

يقوم Printf بطباعة أي شيء بين قوسين ، بين علامات التنصيص ، إلى وحدة التحكم. ال هو تسلسل هروب يسمى السطر الجديد ، يخبر المترجم بالتخطي إلى السطر التالي في وحدة التحكم قبل المتابعة.

لاحظ أن هذه الأسطر تنتهي بـ فاصلة منقوطة، والتي يستخدمها المترجم لتقسيم مهمة واحدة من التالية. انتبه جيدًا لهذه الفاصلة المنقوطة - ففقدانها هو السبب الأول لعدم سير الأمور بشكل صحيح!

أخيرًا ، ترجع الدالة بالرقم 0 ، وتنتهي البرنامج. ال الأساسية() يجب أن تُرجع الدالة دائمًا عددًا صحيحًا ، و العودة = 0 ؛ يشير إلى الكمبيوتر بأن العملية كانت ناجحة.

يعد فهم كل خطوة في هذا النص بداية رائعة في تعلم بناء جملة C وكيفية عمل اللغة.

2. إنشاء وظائف C الخاصة بك

يمكنك إنشاء وظائف مخصصة خاصة بك في C. بدلاً من طباعة Hello World في الوظيفة الرئيسية ، قم بإنشاء وظيفة جديدة للقيام بذلك نيابة عنك.

print_for_me باطلة () {printf ("Hello، World! \ن")؛ }

دعونا نكسر هذا.

فارغ هي كلمة أساسية تعني أن الوظيفة التالية لن تعيد أي شيء.

print_for_me () هو اسم الوظيفة ، وتظهر الأقواس الفارغة أنها لا تتطلب وسيطات لتعمل. الوسيطة هي أي جزء من المعلومات يتم نقله إلى دالة لجعلها تعمل - لاحقًا ستضيف وسيطة خاصة بك لتغيير الناتج! ملحوظة: هذه ليست نفس الوظيفة الرئيسية () التي استخدمت باطل أعلاه. لا يمكن لهذه الوظيفة أن تأخذ الحجج ، بينما يمكن لهذه الوظيفة (ولكن في هذه الحالة ، ليس من الضروري).

كتلة التعليمات البرمجية يجب أن تكون مألوفًا لك - إنها فقط عبارة print من الوظيفة الرئيسية الأصلية.

الآن ، يمكنك استدعاء هذه الوظيفة من وظيفتك الرئيسية.

int main (باطل) {print_for_me () ، print_for_me () ، العودة 0 ؛ }

يمكنك أن ترى هنا فائدة من استخدام وظيفتك الخاصة. بدلا من الكتابة printf ("مرحبًا ، أيها العالم! \ن") في كل مرة ، يمكنك استدعاء الوظيفة مرتين.

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

Hello world إخراج مرتين من خلال مكالمات متعددة الوظائف

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

3. استخدام النماذج الأولية للوظائف في لغة سي

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

صورة مركبة تظهر رمز بدون نموذج أولي والتحذير الذي يقدمه المترجم c

تخبرك رسالة التحذير أن المترجم قد دخل في وظيفة print_for_me قبل إعلانه ، لذلك لا يمكن التأكد من أنه سيعمل بشكل صحيح عند تشغيل البرنامج.

سيظل الرمز يعمل ، ولكن يمكن تجنب التحذير تمامًا باستخدام نموذج أولي.

#يشمل print_for_me باطلة ؛ int main (باطل) {print_for_me () ، print_for_me () ، العودة 0 ؛ } print_for_me باطل () {printf ("Hello، World! \ن")؛ }

بالنظر إلى البرنامج الكامل ، يمكنك رؤية النموذج الأولي لـ print_for_me () موجودًا في بداية البرنامج ، ولكنه لا يحتوي على أي شيء. توضح وظيفة النموذج الأولي للمجمع كيف يجب أن تبدو الوظيفة ، وما إذا كانت تتطلب وسيطات أم لا.

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

Hello world إخراج مرتين من خلال مكالمات متعددة الوظائف

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

4. تمرير الحجج إلى وظائف C.

تغيير البرنامج النصي

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

بدلا من ذلك ، هم مجموعة من الأحرف الفردية. رمز المصفوفة هو [] والكلمة الرئيسية هي شار. ابدأ بتحديث دالة النموذج الأولي في بداية البرنامج النصي الخاص بك:

#يشمل  print_for_me باطلة (char name []) ؛ 

الآن ، سيعرف المترجم أن الوظيفة لاحقًا في البرنامج النصي تأخذ مجموعة من الأحرف تسمى اسم. حتى الآن ، هذه الشخصية غير موجودة. قم بتحديث وظيفتك الرئيسية لإنشائها ، واستخدمها لتخزين مدخلات المستخدم:

int main (باطل) {char name [20] ؛ printf ("أدخل الاسم:") ؛ scanf ("٪ s" ، الاسم) ؛ print_for_me (الاسم) ؛ print_for_me ("الجميع!") ؛ العودة 0 ؛ }

يُنشئ السطر الأول بشكل رئيسي مصفوفة أحرف بها 20 مسافة محتملة تسمى الاسم. بعد ذلك ، يُطلب من المستخدم إدخال اسمه باستخدام printf. يستخدم السطر التالي وظيفة جديدة تسمى مسح التي تأخذ الكلمة التالية التي يكتبها المستخدم.

ال "٪س" يخبر الوظيفة أنه يجب أن تخزن البيانات كسلسلة ، وتسميتها اسم.

تعديل الوظيفة

الآن عند استدعاء print_for_me ، يمكنك تضمين ملفات اسم بين قوسين. في السطر التالي ، سترى أنه يمكنك أيضًا تمرير أحرف أخرى طالما كانت بين علامات اقتباس. في المرتين ، يتم تمرير ما هو بين قوسين إلى وظيفة print_for_me.

قم بتعديل ذلك الآن لاستخدام المعلومات الجديدة التي تقدمها:

print_for_me باطلة (اسم الحرف []) {printf ("مرحبًا") ؛ يضع (الاسم) ؛ }

هنا يمكنك أن ترى أنه تم تحديث الأقواس تمامًا مثل النموذج الأولي في بداية البرنامج النصي. في الداخل ، ما زلت تطبع hello باستخدام printf. وظيفة جديدة هنا يضع. هذه نسخة أكثر تقدما من printf.

ستتم طباعة أي شيء يتم وضعه بين قوسين على وحدة التحكم ، وسطر جديد (ملف الذي استخدمته سابقًا) تتم إضافته تلقائيًا.

قم بحفظ وتجميع التعليمات البرمجية بنفس الطريقة التي قمت بها سابقًا — لاحظ أنه يمكنك تسمية البرنامج بشيء مختلف إذا كنت لا تريد الكتابة فوق برنامجك السابق. سميت لي مرحبا 2:

البرنامج النهائي في C

كما يجب أن ترى ، يأخذ البرنامج المدخلات ويستخدمها في الوظيفة ، قبل إرسال التحية المحددة مسبقًا بـ "الجميع!" مرة أخرى يعطي ناتجين منفصلين لنفس الوظيفة.

أبجديات البرمجة بلغة سي

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

يعتقد البعض الآخر أن تعلم C ++ هو فكرة أفضل ، لأنه يعتمد على C مع الاحتفاظ بالتحكم الأقل في النظام. (هناك أيضًا Rust يجب مراعاته - إنه لغة برمجة مثيرة هذا مشابه لغويًا لـ C ++.)

هناك شيء واحد مؤكد: لغات مثل بايثون هم أكثر ودية للمبتدئين. بالنسبة للغة القديمة ، لا تزال لغة C مستخدمة في كل مكان ، ولكن قد تكون بايثون لغة المستقبل 6 أسباب لماذا بايثون هي لغة برمجة المستقبلهل تريد تعلم أو توسيع مهارات البرمجة الخاصة بك؟ إليكم السبب في أن Python هي أفضل لغة برمجة يمكن تعلمها هذا العام. اقرأ أكثر !

إيان باكلي صحفي مستقل وموسيقي وفنان ومنتج فيديو يعيش في برلين بألمانيا. عندما لا يكتب أو على خشبة المسرح ، فإنه يعبث بإلكترونيات أو أكواد DIY على أمل أن يصبح عالمًا مجنونًا.