أهلا ومرحبا بكم مرة أخرى.
في هذه المحاضرة أود للحديث عما
يدخل في إنشاء برنامج c.
إذن هناك أربع مهام أساسية في إنشاء أي برنامج c.
وما هي هذه المهام بما في ذلك التحرير والتجميع والربط
والتنفيذ.
تحدثنا عن الخطوات المختلفة التي ستوظفها عندما تكتب
برنامج c من حيث أنت ذاهب لفهم المتطلبات ، ستصمم شفرتك ، أنت ستقوم بكتابة
التعليمات البرمجية الخاصة بك ، ثم ستقوم باختبارها
وتصحيحها وهكذا دواليك ثم صيانته.
ما أتحدث عنه هنا هو ماذا ما عليك فعله بالفعل عندما تبدأ
في كتابة برنامج. تحدثنا نوعا ما حول التحرير والتجميع ولكن
الربط والتنفيذ مهمان أيضًا.
وماذا أريد أن أتحدث عنه هنا تفاصيل هذا.
لذلك ستصبح هذه المهام الطبيعة الثانية لك
لأنك ستفعلها في كل مرة تكتب برنامج c.
ستقوم بتحرير ملف شفرة المصدر ، ستقوم
بالتجميع ، وستقوم بالربط ، وبعد ذلك ستجري.
ستفعل هذا في كثير من الأحيان.
لذا فإن عمليات التحرير ، التجميع والربط والتنفيذ
هي نفسها بالنسبة للتطوير برامج في أي بيئة مع
أي لغة مترجمة.
هذا ليس فريدًا بالنسبة لـ c.
إذا كنت تكتب جافا - جافا البرنامج ، ستقوم بكتابة شفرة
المصدر ، ستذهب لتجميع شفرة المصدر.
الربط - قد لا تكون على علم بذلك java ولكنها ستؤدي نوعًا من الارتباط
وسنتحدث حول ماهية الارتباط ، وبعد ذلك ستقوم بتشغيل
البرنامج.
ستفعل كل هذا.
ما أصفه هنا مرة أخرى كيف يتم ذلك في ج.
لذا فإن التحرير هو بالضبط ما كنت تعتقد أنه هو.
إنها عملية الإنشاء وتعديل الكود
الفعلي ، الكود المصدري c.
كود المصدر c قيد التنفيذ لتكون داخل ملف.
وسوف تحتوي على كل شيء البيانات وجميع التعليمات
التي تكتبها.
تنتهي كافة ملفات كود المصدر c مع ال . c ، وهكذا يمكنك تحديد
أنه ملف شفرة المصدر.
قبل ذلك . c التمديد ذاهب لكي يتم استدعاؤها بالاسم
الأساسي ، فأنت تريد أن تكون أسماء ملفاتك ذات معنى.
إذا قمت بكتابة برنامج c يضيف اثنين الأرقام ، قد يكون لديك
ملف يسمى add. ج ، التي تحتوي على شفرة المصدر.
وتذكر أن معظم ج سوف تحتوي البرامج على العديد من الملفات
المختلفة.
لذلك يجب أن يكون لملفاتك أسماء جيدة.
لكن الطريقة التي يمكنك التعرف عليها ج التعليمات البرمجية المصدر هو. تمديد ج.
كلها تحتوي على. تمديد ج.
الآن عندما نقوم بتحرير الكود الخاص بنا لـ في هذا الفصل ، سنستخدم
بيئة تطوير متكاملة.
نحن لا نذهب فقط لاستخدام محرر بسيط.
مثال على محرر بسيط سيكون شيئًا مثل الدفتر.
سنستخدم شيئًا ما يحتوي على محرر ولكنه يحتوي أيضًا على العديد من الأشياء
الأخرى التي تساعدك كتابة التعليمات البرمجية الخاصة بك بشكل أكثر كفاءة.
IDE - ويشار إليه باسم IDE ، بيئة تطوير متكاملة.
الذي سنستخدمه بالنسبة لهذا الفصل الدراسي هو
Code Blocks ، سأقوم بتغطيته بالتفصيل ، لكننا سنستخدم كتل
التعليمات البرمجية لمهمة التحرير.
لكن يمكنك استخدام ما تريد.
إذا كنت تريد استخدام المفكرة ، إذا كنت تريد استخدام
شيء أصغر حجمًا ، يمكنك استخدام Atom ، هناك IDEs للاستوديو المرئي ، ولكن الذي سنقوم
بتغطيته هنا هو كيف لتعديل التعليمات البرمجية الخاصة بك وكتل التعليمات البرمجية.
وهذا هو بيئة تطوير متكاملة لطيفة و سبب اختياره سنتحدث عن مزيد
من التفاصيل ، لكنه كذلك متعدد المنصات وسهل الاستخدام.
لذا فإن التحرير هو الأساسي عملية كتابة الكود.
تجميع.
نحن نعلم ما يفعله المترجم.
يتطلب الأمر ذلك المستوى العالي فقط رمز اللغة وتحويله إلى لغة الآلة
، وكذلك بالكشف والعثور على أخطاء في التعليمات البرمجية الخاصة بك.
بعد تحرير التعليمات البرمجية الخاصة بك ، فأنت ذاهب لتشغيل المترجم.
إذن المدخلات إلى المترجم هي ستكون كل شفرة المصدر
الخاصة بك ، وجميع ملفات. ج الملفات كل ما تقوم بتحريره.
ومرة أخرى ، يمكن لبرنامج c العديد من الملفات المصدر.
لكن المدخلات إلى المترجم هي هذه الملفات المصدر ، تجميع
نفسها تحويل هذا الرمز هي عملية من مرحلتين.
المرحلة الأولى تسمى مرحلة ما قبل المعالجة.
خلال هذا الرمز الخاص بك قد يمكن تعديلها أو إضافتها إلى.
والمرحلة الثانية هي التجميع الفعلي ، فإنه يولد رمز
لغة التجميع.
وسنتحدث عن هذا في المزيد التفاصيل ، هذه مرحلة ما قبل المعالجة.
لكن عليك فقط أن تعرف الآن هناك مرحلتان عندما
تقوم بالتجميع.
الذي سنركز عليه أو الشيء الذي يسهل فهمه هو
إنشاء رمز الكائن.
لذلك فإن المترجم سوف انظر إلى كل عبارة
وسيتأكد من أن بناء الجملة صحيح وأن دلالات اللغة
مستوفاة.
بناء الجملة هو التأكد من أن ملف بنية الكود صحيحة ، وأن
لديك فاصلة منقوطة في نهاية العبارة
، أنك تستخدم أنواع البيانات ، وأنك - أنت اتباع قواعد اللغة.
الدلالات هي معنى الكلمات.
لذلك إذا كنت تستخدم إذا كلمة رئيسية ، هذا شرط.
تحدث الدلالات في مرحلة التجميع عن طريق إنشاء جدول
الرموز وما إلى ذلك.
لكن المترجم مهم.
سوف تولد هذا رمز الكائن.
سيخبرك إذا كنت لديك أي أخطاء في بناء الجملة الخاص بك.
يمكن أن يتعرف أيضًا في بعض الأحيان سواء كان لديك رمز ميت أم لا
حيث لا يتم استخدام الكود بشكل أساسي.
لا يجد أخطاء منطقية.
يجد فقط أخطاء في بناء الجملة.
مرة أخرى ، بناء الجملة هو القواعد واللغة.
الأخطاء المنطقية هي المعنى.
كما لو كنت قد ارتكبت خطأ في المنطق ، قد ترتكب
خطأ في الوظيفة.
حتى يمكن تشغيل التعليمات البرمجية الخاصة بك ، ويمكن تجميعها ، لكنها قد لا تعمل على النحو المنشود ،
ويشار إلى هذا على أنه خطأ منطقي.
المترجم لن يقول إذا كان لديك خطأ منطقي.
إذا كنت تقصد أن تطلب من المستخدم أ رقم بدلاً من سلسلة أحرف أو تسأل المستخدم عن
آخرها الاسم قبل الاسم الأول وهذا
خطأ منطقي. المترجم لا يذهب لإخبارك بهذه الأنواع من الأخطاء.
تم الإبلاغ عن الأخطاء النموذجية بواسطة سيكون
المترجم أشياء مثل المتغيرات غير المعلنة والتعبير
التي لا تتوافق مع بناء الجملة ، ليس لديك الحق بين قوسين ، هل تعلم أن الكتل
التي لا تحتوي على كتل نهائية.
سوف تصبح جدا ، على دراية بأخطاء المترجم
وما تعنيه.
نأمل بعد أن تعلمت لغة c وتقوم بتشغيل المترجم
، سترى خطأ وستتمكن من إصلاحه
على الفور.
قل يصيح نسيت بناء الجملة أو عفوًا ، نسيت الفاصلة المنقوطة
، لقد نسيت أن أقدم حقًا قوس لإنهاء كتلة التعليمات البرمجية.
سوف تصبح طبيعة ثانية.
لذلك بعد إصلاح جميع ملفات الأخطاء وتجميعك
ناجحًا ، فسيتم ذلك ترجم إلى لغة التجميع وإنشاء رمز
الكائن هذا.
لذا فإن الكائن الفعلي الكود هو. س الملف.
إنه الملخص الفعلي رمز اللغة الذي يتم تشغيله.
لها امتداد. obj أو. ا. obj عادة على النوافذ سيكون الامتداد. o على Linux أو Macintosh سيكون النظام هو الامتداد.
سترى هذا الملف تم إنشاؤه بعد تجميع التعليمات البرمجية الخاصة بك.
وهذه فقط المرحلة النهائية من التجميع
، هذه هي لغة التجميع الفعلية.
ستكون ثنائية ، هي لا يبدو وكأنه نص لن تتمكن
من إلقاء نظرة عليه.
ستحصل فقط على ملف . o التمديد ، وهذا ما يولده
المترجم.
طريقة تشغيل المترجم في c هل تستخدم بالفعل أمرًا.
ربما لن تحتاج إلى القيام
بذلك كثيرا لأن بيئة تطوير متكاملة ، المحرر في التنمية المتكاملة سأفعل ذلك من أجلك بمجرد
النقر فوق خيار القائمة ، ولكنه كذلك من المهم معرفة ما يحدث.
لذلك عند إصدار المترجم الأمر
، فهو عادةً يستخدم مترجم GNU وهو أمر gcc.
لكن على المستوى الأساسي ، أنت فقط تركض برنامج مترجم سواء cc أو gcc.
تقوم بتشغيل هذا البرنامج و ثم تحدد المدخلات.
تذكر ، المترجم يأخذ كإدخال ملفات المصدر.
يمكنك تحديد الإدخال باستخدام ملف -c flag ثم تحديد
ملفات المصدر واحدة تلو الأخرى.
إذن الأمثلة هنا هي cc-cmyprog. ج أو إذا كنت تستخدم مترجم GNU ، وهو مجمع
شائع gcc-c.
وإذا حذفت c العلم الخاص بك سيتم ربط البرنامج تلقائيًا
أيضًا وهي الخطوة التالية.
لكن حقًا من السهل تشغيل ذلك مترجم إذا كنت في واجهة
سطر الأوامر.
إنه أسهل إذا كنت فقط استخدم خيار القائمة الذي ربما سنفعله
في هذا الفصل.
لكن مرة أخرى ، يتطلب الأمر الإدخال ، ملفات المصدر c.
في كتل التعليمات البرمجية ، كما
ذكرت ، ستنقر فقط على خيار القائمة وسوف يفعل ذلك تجميع ارتباط
تلقائيًا ثم النقر فوق قائمة أخرى الخيار سيتم تشغيله تلقائيًا.
لكن مرة أخرى ، ما الذي يحدث في الأسفل غطاء المحرك هو أنك تقوم بالفعل بإصدار
أمر المترجم باستخدام -c العلم وملفات مصدر الإدخال.
بعد أن تقوم بالتجميع ، تقوم بالربط. كما قلت ، كل لغة برمجة لها ارتباط ، لكن
الكثير في بعض الأحيان يكون شفافًا ، فلن تعرف
حتى ما يحدث.
في c ، عملية الربط مهمة لأنها ليست شفافة دائمًا.
ولكن مع معظم IDEs الحديثة
اليوم ، إنه كذلك ، لكن لا بد لي من التأكيد على أنه مهم في ج.
حتى بعد البرنامج لديه تمت ترجمته إلى هذا. الكود القديم رمزه الكائن ، عليه
ثم جاهز للربط.
سبب الارتباط هو إذا كنا باستخدام المكتبات
الخارجية ، يتعين علينا الاستيلاء على كل تلك المكتبات الأخرى ووضعها في برنامج واحد.
لذا فإن الربط هو مجرد الحصول على كل شيء التبعيات في مكانها
وبناء ملف قابل للتنفيذ الفعلي.
لذلك . س الملف هو الكائنات.
ثم تقوم بربط كل ملفات . نظام التشغيل في ملف واحد قابل للتنفيذ.
ومرة أخرى ، هذا عادة شفافة
، وعادة ما تحدث تلقائيًا عند الترجمة.
ولكن مرة أخرى ، قد لا يكون و قد تضطر إلى تنفيذ أمر منفصل
، مثل a -l أو شيء من هذا القبيل.
لكنه يأخذ كل تلك الأشياء الملفات ويبني واحدًا قابلاً للتنفيذ.
والملف التنفيذي هو ما تديره.
لذلك سوف يجمع كل هؤلاء.
وبعد ذلك سيتم دمجها أيضًا.
وقد يكون لديك. نظام التشغيل هذا مكتبات إضافية ، أن البرامج الأخرى
التي قد ترغب في استخدامها كتب
شخص آخر أو مكتبات أخرى تأتي مع لغة c.
سوف تأخذ كل شيء هؤلاء ووضعهم معًا.
وستكون مرحلة الربط أيضا الكشف عن الأخطاء والإبلاغ عنها.
إنهما مرحلتان منفصلتان.
الارتباط ، مرة أخرى ، عادة ما يكون مثل أخطاء إعادة التعريف أو تحاول
استدعاء وظيفة غير موجودة.
لذلك إذا لم يكن لديك ذلك. o ملف قم بتكوين البرنامج بأكمله ، سيكون لديك
خطأ في الارتباط.
وستحتاج إلى الحصول على كل ملفات. س.
ومرة أخرى ، فإن. س قد لا يكون لك.
قد يأتون بنفس اللغة ، قد يكونون جزءًا من المكتبة القياسية أو قد يأتون
مع مكتبة أخرى البرنامج الذي كتبه شخص آخر.
لكنك تحتاج كل هؤلاء. س لتشكيل ملف تنفيذي واحد.
لذا تدعم مكتبات البرامج و توسيع لغة C من خلال توفير إجراءات روتينية لتنفيذ العمليات
التي ليست جزءًا من اللغة.
مكتبات الإدخال والإخراج على سبيل المثال ، مكتبة
رياضية ، مكتبات معالجة السلاسل.
هذا مجرد نفس الشيء إذا كنت على دراية ببرنامج java ، إنه
نفس الشيء مثل java api.
إنه نفس الشيء مثل الحزم.
إنه مفهوم أريد ذلك اكتب
البيانات إلى ملف لا أريد تنفيذه بنفسي
، أنا ذاهب لاستخدام مكتبة موجودة تأتي مع اللغة.
لا يزال مكتوبًا في c ، إنه فقط شخص ما يأتي مع ذلك.
لذلك هناك كل أنواع
مكتبات مختلفة سنتعرف عليها ونستخدمها.
هذا يحدث جزء من مرحلة الربط.
لذلك فشل خلال مرحلة الربط يعني أنه
عليك العودة مرة أخرى وتحرير كود المصدر
الخاص بك تأكد من أنه يمكنك العثور على ملف الكائن ، لذا فإن
الكثير من حالات الفشل عادة يعني أنك تحتاج فقط إلى تضمين ملف أو شيء من هذا القبيل. هذه ستصبح طبيعة ثانية أيضًا.
النجاح ، إذا انتهيت التجميع بنجاح ، لقد انتهيت من الربط بنجاح
سينتج ملفًا قابلاً للتنفيذ.
في بيئة windows ، سيكون الملف
القابل للتنفيذ بامتداد. تمديد إكس.
في لينكس وويندوز ، سوف يفعل ذلك فقط بشكل افتراضي. خارج.
يمكنك تغيير اسم ملف. خارج إلى شيء أكثر أهمية
من خلال إصدار شيء ما بأمر المترجم.
لكن معظم IDEs في كتل التعليمات
البرمجية أيضًا سيكون لديك برنامج ترجمة وربط في عملية
واحدة وسوف إنتاج الملف القابل للتنفيذ ثم يمكنك فقط النقر نقرًا مزدوجًا فوق الملف القابل للتنفيذ أو يمكنك
تشغيل الملف القابل للتنفيذ من أمر أو من خيار القائمة.
لكن لا على المستوى المنخفض إذا كنت على Linux
، سترى ملف. بشكل افتراضي كملف قابل للتنفيذ. على النوافذ سترى ملف. إملف تنفيذى.
برنامج من أي حجم كبير سيتألف من عدة ملفات شفرة المصدر
، ذكرت هذا سابقًا.
يحتاج كل ملف شفرة مصدر إلى ملف مترجم لإنشاء
ملف الكائن ، الذي يحتاج إلى ربط.
البرنامج أسهل بكثير إدارة عن طريق تقسيمها إلى عدد
من الملفات المصدر الأصغر.
سوف ترغب في استخدام العديد من المصادر من الملفات ، ولا تريد ملفًا مصدرًا يحتوي
على 5000 سطر من التعليمات البرمجية.
هذا ليس متماسكًا.
هذا ليس من السهل إدارته.
لذلك ستنشئ ملفات التي تحتوي على
شفرة المصدر ، وستكون شفرة المصدر محددة.
سيكون لها ملف وظائف محددة.
يجعل الأمر أسهل بكثير التطوير
وأسهل بكثير في التصحيح وهو أكثر تماسكًا.
لذلك سوف يكون لديك العديد من ملفات المصدر الأصغر.
لا تريد ملفات مصدر كبيرة بآلاف الأسطر من التعليمات البرمجية.
وجميع ملفات المصدر هذه ستشكل البرنامج بأكمله.
سيحصلون جميعًا على ملفات ملك . o's ، وستكون جميعها مدخلات
إلى المترجم.
كل هذه المفاهيم التي تصنع حتى البرنامج
، بشكل أساسي تعتبر أيضًا مشروعًا.
يمكنك التفكير في الأمر على أنه على مستوى أعلى.
إنه مشروعك ، إنه برنامجك.
بعد أن فعلت كل شيء في النهاية هذا وقد قمت بربطه ، لديك ملفك القابل
للتنفيذ ، يمكنك بعد ذلك تشغيل البرنامج.
في معظم IDEs ، هذا مجرد ستكون نقرة على القائمة أو يمكنك النقر
نقرًا مزدوجًا في النوافذ ، يمكنك النقر نقرًا مزدوجًا فوق ملف exe.
وإذا كنت تستخدم نظام Linux ، أنت تكتب فقط في. خارج.
الآن عندما أ. يجب أن يكون لديك أذونات معينة ، لذا ربما يتعين عليك إصدار أمر
تغيير الوضع ، ولكن لتشغيله يمكنك القول. /أ. وسوف يتم تشغيل البرنامج
من سطر الأوامر لينكس.
ولكن مرة أخرى عادة لا تحتاج إلى ذلك تقلق بشأن هذا. لذا فإن مرحلة التنفيذ هي
المكان الذي تقوم فيه بتشغيل برنامجك.
كل من عبارات البرنامج يتم تنفيذه بالتتابع بدوره.
إذا طلب البرنامج أي البيانات من المستخدم
، سيتوقف البرنامج مؤقتًا ويحصل على تلك المدخلات.
يمكنك الحصول على المدخلات عبر ملف لوحة المفاتيح أو يمكن الحصول على الإدخال عبر واجهة المستخدم
الرسومية إذا كان لديك مكتبات لذلك في كود ج الخاص بك.
النتائج التي يتم عرضها بواسطة البرنامج
تظهر في نافذة تسمى وحدة التحكم.
وسوف نعرض لكم أمثلة على ذلك عندما نتحدث عن
الكتل البرمجية.
ولكن عند تشغيل برنامجك ، عادة ، سترى الإخراج.
ليس دائمًا ، أحيانًا ما تفعل البرامج ذلك تفعل أشياء لا تنتج مخرجات.
لكنهم عادة ما ينتجون مخرجات وترى
الإخراج مباشرة على الجهاز أو وحدة التحكم.
مرحلة التنفيذ تولد أيضا مجموعة متنوعة من حالات الخطأ.
لذلك قد تنتج الخطأ الناتج
وهو مجرد خطأ منطقي وعليك العودة وتحرير شفرة المصدر الخاصة بك.
قد يجلس هناك ولا يفعل شيئًا لأن لديك مشاكل منطقية.
ثم أخيرًا قد ينهار جهاز
الكمبيوتر الخاص بك وهو السيناريو الأسوأ ، مما يعني ذلك لقد فعلت شيئًا سيئًا
حقًا في برنامجك وكان سيئًا للغاية أن البرنامج
قد مات للتو أو أنه تسبب في شيء آخر البرامج الموجودة على
نظام التشغيل الخاص بك لتعطل جهاز الكمبيوتر بالكامل.
حتى تشغيل تطبيق c الفعلي يمكن أن يسبب مشاكل. إذا كان البرنامج لا يقوم بتنفيذ ملف الوظيفة المقصودة ، إذًا عليك العودة
وتحرير المصدر رمز قد تضطر إلى
إعادة تنظيمه أو إعادة تصميمه وهذا هو المكان الذي نحن
فيه تحدثت عن الخطوات المختلفة.
يُعرف هذا باسم التصحيح المرحلة للعثور على أخطائك وإصلاحها.
سيكون لدينا كل قسم
التصحيح لأنه مهم.
لقد ذكرت ذلك في وقت سابق من أفضل طرق التعلم هو التعلم
من خلال أخطائك.
سوف تعود باستمرار وتحرير شفرة المصدر وتصحيح الأخطاء.
عملية التجميع بأكملها ، يتم
تكرار ربط البرنامج وتنفيذه حتى تنتهي من ذلك ، حتى تقوم
بذلك الحصول على جميع النتائج التي تحتاجها لوظيفة هذا الرمز.
إذن ، ها هي مرة أخرى لطيفة أخرى التوضيح أود تقديمه.
هذا مأخوذ من كتاب دعا البداية C من قبل هورتون.
لكن هذه هي العملية التي ستمتلكها.
أنت بصدد تحرير شفرة المصدر الخاصة بك.
ستنشئ ملفًا بامتداد . c واسم ذي معنى.
ستستخدم محررًا للقيام بذلك أو بيئة
تطوير متكاملة ، شيء مثل Code Blocks.
ثم ستقوم بتجميعها.
المترجم ذاهب إلى إنشاء ملف obj وملف o.
إذا لم يتم إنشاء هذا
الملف ، هذا يعني أن لديك أخطاء وعليك الرجوع وإصلاحها.
بعد إنشاء ملفات obj ، ملفات الكائن ، ثم يتعين عليك ربطها جميعًا
معًا لإنشاء ملف قابل للتنفيذ.
ويمكن أن يكون لديك أيضًا في تلك المرحلة
حيث لم يتم ربطها بشكل صحيح.
عليك أن تعود و تحرير كود المصدر الخاص بك.
بمجرد عدم وجود أخطاء بالفعل ولديك ملف
قابل للتنفيذ ، يمكنك بعد ذلك تشغيل البرنامج الخاص بك.
ومرة أخرى ، بعد تشغيل ملف البرنامج ، لا يزال لديك أخطاء لأنه قد تكون
هناك أخطاء منطقية.
إذن بعد ذلك ستعود وتحرير شفرة المصدر الخاصة بك.
لذلك سيصبح هذا ملف العملية المتكررة
التي ستكون على دراية كبيرة بها.
تحرير ، تجميع ، ربط ، تنفيذ.
وهذا مرة أخرى هو نموذجي ماذا تفعل بكل اللغات.
ستفعل هذا مرارًا و مرارًا وتكرارًا حتى
يلبي برنامجك جميع متطلباتك.