أهلا ومرحبا.
في هذه المحاضرة أريد أن أتحدث حول بيان التضمين.
ومرة أخرى ، من أول تحدي تعرضنا لأول مرة
لبرنامج c code و c ، يجب أن يكون لديك لاحظت هذا يشمل البيان.
إنه على السطر الثامن هنا في هذا على سبيل المثال
، وهذا هو مثالنا تحدي مشروع برنامج أساسي c.
ترى أنها تشمل.
والآن لأننا تعلمنا حول المعالج ، نعلم أنه
توجيه للمعالج المسبق لأن لدينا رمز الجنيه هذا.
أي شيء يبدأ بـ رمز الجنيه قبل أي مسافات
أخرى هو أمر ما قبل المعالج ، توجيه المعالج.
وهكذا نعرف أن السطر الثامن يتضمن الكلمة الأساسية الخاصة برمز الجنيه
عبارة عن توجيه مُعالج مسبقًا.
أريد الآن أن أشرح لك ماذا يفعل هذا بالضبط؟
ماذا يعني هذا؟
مرة أخرى ، هذا مفهوم أساسي في ج التي نحتاج إلى التحدث عنها في وقت
مبكر جدًا لأن كل برنامج c يحتوي عليها.
إنه مشابه جدًا إذا كنت مألوفًا مع جافا مع بيان الاستيراد.
لكننا سنصف هذا في التفاصيل الآن في بعض الشرائح ولكنك سترى
هذا في جميع برامج c الخاصة بك.
لذا فإن بيان التضمين هو أ توجيه المعالج بسبب رمز الجنيه
الذي نعرفه.
ونسميها بيانًا كـ يعارض التوجيه بدون سبب حقيقي
لمجرد أنه شائع استخدام هذا المصطلح في لغة البرمجة
، لكنه توجيه تقنيًا.
ومرة أخرى ، المثال في كان البرنامج يتضمن هذا الشيء بين
أقواس الزاوية هذه.
لذلك نرى هذا يشمل الكلمات الرئيسية ثم نرى هذا stdio. ح.
وهذا مثال.
هذا هو الذي نحن المستخدمة في التحدي الأول لدينا.
انها ليست جزء بدقة من البرنامج القابل للتنفيذ.
ومع ذلك ، فإن البرنامج لن يعمل بدونها.
نحن نعلم أنه أ توجيه مُعالج مسبقًا.
انها لا تفعل الكثير حقا بقدر كيفية عمل البرنامج.
إنه يخبر المترجم فقط قبل أن يتم تشغيله ، مرحبًا ، كنا نفعل شيئًا
هنا يتضمن هذا.
وهكذا إذا لم يكن لديك هناك ، سوف يشتكي المترجم
ويرمي الأخطاء.
لذلك أنت في حاجة إليها.
يشير رمز الجنيه إلى ذلك إنه توجيه للمعالجة المسبقة.
تحدثنا عن ذلك ، وهو تعليمات للمجمع الخاص بك للقيام
بشيء من قبل تجميع شفرة المصدر.
هناك العديد من المعالجة المسبقة التوجيهات ، وقدمنا بعض الأمثلة في
محاضرتنا قبل المعالجة.
تحدثنا عن الثوابت ، بيانات محددة.
تحدثنا عن إذا و آخر و وهكذا دواليك مختلفة توجيهات ما قبل المعالجة
المشروطة.
لكن هذا هو واحد من أكثر حقا منها شائعة الاستخدام ، وتشمل.
ومرة أخرى ، يمكن لهذه التوجيهات تكون في أي مكان في شفرة المصدر الخاصة بك ولكنها
عادةً في الأعلى.
في التضمين على وجه التحديد ، هذا include preprocessor التوجيهي مشابه
جدًا لبيان الاستيراد في جافا إذا كنت معتادًا على ذلك.
لكن ماذا يعني هذا؟
حتى في المثال أعلاه هنا مع تضمين stdio رمز الجنيه. ح ، هذا هو إخبار المترجم
الخاص بك لتضمين بعض محتويات برنامجك
للملف بهذا الاسم.
لذلك هناك اسم ملف موجود في مكان ما يسمى stdio. ح.
وما يقوله التوجيه هو يحتاج برنامجي الحالي الذي يحتوي على التوجيه
إلى بعض المحتويات داخل هذا الملف من أجل تجميع ملفات.
لذلك على وجه التحديد تشمل التوجيه سيكون له أسماء ملفات
تنتهي بـ. ح.
هذه تسمى ملفات الرأس.
إنها تسمى ملفات الرأس لأنها عادةً ما يتم تضمينها
في الجزء العلوي من الملف المصدر.
إنها واحدة من أول الأشياء التي تقوم بها هل تقوم بتضمين جميع ملفات الرأس الخاصة بك.
ومرة أخرى ، هذا المعالج التوجيه
يقول أريد بعض المحتويات داخل هذا الملف.
إنه ليس ملف c.
نحن نعلم أن الملفات تنتهي في . ج هي ملفات المصدر ج.
لذلك . يجب أن يكون ح شيء آخر ، وهو كذلك.
إنه ملف رأس.
ولها ذلك. تمديد h.
لذلك دعونا نتحدث عن ما هو ملف الرأس.
تحدد ملفات الرأس المعلومات حول بعض الوظائف التي
يوفرها هذا الملف.
وسأعطيكم مثالا على ذلك من المحتوى في ملف الرأس.
لكن أولاً ، هم يحددون البعض معلومات حول بعض التعليمات البرمجية المصدر.
وعلى وجه التحديد لمثالنا بما في ذلك stdio. ح ، وهذا يشمل رأس مكتبة
c القياسية.
لذا تذكر ، قلت أنت عن المكتبات.
المكتبات هي فقط إضافية الوظيفة التي تم كتابتها بالفعل
من أجلك و ج يمكن تضمينه في برنامجك حتى لا تضطر إلى إعادة
كتابته.
مرة أخرى ، أمثلة المكتبات القراءة والكتابة على وحدة التحكم ، وعرض الإخراج والقراءة
و كتابة الملفات ، كل أنواع الأشياء المختلفة التي تقوم بعمل كود الشبكات
، كثير العديد من المكتبات المختلفة الموجودة هناك.
لكن stdio. h هي مكتبة c القياسية.
ما يعنيه ذلك هو أنه يأتي مع لغة البرمجة c وتوفر
وظائف للعرض الناتج من بين العديد من الأشياء الأخرى.
هكذا stdio. h ، إنه ملف رأس.
يحدد بعض الوظائف التي يحتاج المترجم إلى فهمه قبل أن يتمكن من
استخدامه بالفعل.
لذلك على وجه التحديد stdio. ح يحتوي على معلومات حول printf.
ولذا سوف نتحدث حول printf في المحاضرة
التالية مما يساعدنا في عرض الإخراج ، لكن printf هي وظيفة
موجودة في stdio. h header. ملف.
ويحتوي أيضًا على العديد من الوظائف الأخرى.
Stdio هو اختصار لـ إخراج الإدخال القياسي.
إذن هذه المكتبة تصف يحتوي على وظائف للتعامل مع المدخلات
والمخرجات.
وهذا هو المفهوم باستخدام اسم ذي معنى.
لا نريد أن نسمي ذلك مكتبة جايسون أو جايسون. ح لأن هذا ليس له
معنى.
نحن نستخدم stdio. ح ل إنها تقول معيار io.
المدخلات والمخرجات القياسية ، ونحن نعلم ذلك ، تحتوي تلك المكتبة على جميع أنواع
الوظائف لاستيراد ألفا.
وظائف على وجه التحديد نريد أن نستخدمه في برنامج التحدي الخاص بنا ، مثالنا
البرنامج الأول هل نريد استخدام هذه الوظيفة المسماة printf
، والتي تسمح لنا بذلك عرض الإخراج إلى وحدة التحكم.
وهكذا من خلال تضمين هذا stdio. ح في رمز المصدر الخاص بنا ، نقول من أجل استخدام هذه الوظيفة
لهذا printf ، نحن بحاجة إلى تضمين هذا الملف.
لذلك سوف تحدد حرائق الرأس المعلومات التي يستخدمها المترجم
لدمج واستخدام أي إعادة استخدام كود ، أي وظائف داخل البرنامج.
لذلك ستستخدم إما الكثير العديد من ملفات رؤوس المكتبات القياسية
المختلفة وهناك الكثير هناك ، stdio. ح واحد فقط.
هناك مرة أخرى ملفات الرأس التي تحدد وظائف أو نماذج وظيفية
لكود الشبكات ، ورمز المقبس.
مرة أخرى ، سنمر عبر a الكثير منهم ، سلاسل للكلمات الكاملة وأشياء
من هذا القبيل.
ولكن بالإضافة إلى معيار c مكتبة في المكتبات المختلفة التي تأتي مع برمجة
c اللغة ، يمكنك أيضًا إنشاء ملفات الرأس الخاصة بك ، وستكون
كذلك إنشاء ملفات الرأس الخاصة بك لأن ملفات الرأس تسمح بإعادة
استخدام البرنامج.
أنها تسمح لك بإعادة الاستخدام وظيفة مكتوبة في ج.
هكذا كتب مصممو ج في مكان ما كل هذا الكود c يقرأ ويكتب البيانات ويتعامل
مع المدخلات والمخرجات.
إنهم لا يريدون مبرمج سي الجديد هذا أن يكتبوا بأنفسهم.
لذلك سوف يكتبون من أجلك ، وسيقولون
أنه يمكنك استخدامه.
والطريقة التي تستخدمها بها هي قمت بتضمين ملف الرأس.
وهكذا أنت كمطور خاص بك ، يمكنك كتابة بعض التعليمات البرمجية في برنامج
كبير كبير ، آلاف الملفات تريد استخدامها في ملفات أخرى.
وهكذا ستكتب ملفات الرأس الخاصة بك.
وملفات الرأس ، مرة أخرى ، سيحددون نماذج وظيفية
وثوابت مختلفة ، كل أنواع الأشياء المختلفة التي ستساعد
شخصًا آخر يمكن أن يستخدم البرنامج الخاص بك ، وسوف يساعد في تجميع
البرنامج الخاص بك.
لذلك فهي إعادة استخدام البرمجيات تقنية بشكل أساسي.
لذلك سنقوم بتضمين هذا معيار io. header في برنامج متى احتجنا
إلى استخدامه وظيفة printf من المكتبة القياسية
، فهي مطلوبة.
إذا لم تقم بتضمين فإنه لن يتم تجميعها.
لذلك عندما تستخدم ملفات بعض الوظائف ، عليك
استخدام التضمين.
بناء الجملة بقدر ملفات الرأس اذهب ، فهي حساسة لحالة الأحرف.
الحساسية لحالة الأحرف تعني أحرف كبيرة أو صغيرة.
يهم ما إذا كنت افعل أحدهما أو الآخر.
لذلك يجب عليك دائما اكتبها بأحرف صغيرة.
يجب أن تكون ملفات الرأس بتنسيق الأحرف الصغيرة لأنه
بخلاف ذلك قد تفسر بعض الأنظمة لها معنى مختلف.
هناك طريقتان للتضمين header في البرنامج.
يمكنك استخدام أقواس زاوية مثل الجنيه تشمل
جايسون. ح بين قوسين وزاوية.
وما يعنيه هذا عادة هو أنه إخبار المعالج بالبحث
عن ملف في نوع ما من دليل النظام.
عادة ما تكون مكتبة قياسية يأتي مع لغة البرمجة c.
يمكنك أيضًا استخدام علامات الاقتباس المزدوجة.
علامات الاقتباس المزدوجة تعني عادة ذلك إنه ملف رأس محدد من قبل المستخدم.
إنها واحدة قمت بإنشائها كملف المطور الذي لم يأت مع لغة
البرمجة c ولكن تريد أن يكون هذا العنوان هناك لأنك تريد إعادة استخدام
بعض التعليمات البرمجية.
لذلك سيقول أيضًا ابحث في الدليل الحالي.
كل مترجم سي يتوافق إلى معيار C11 سيكون لها مجموعة من
الرؤوس القياسية الملفات المرفقة معها.
هذه مجرد ملفات رأس التي تمثل المكتبات.
C وظيفة يأتي مع اللغة.
عندما تستخدم توجيه التضمين ، من الشائع استخدام توجيهات المعالج المسبق الأخرى إذا
لم يكن الأمر كذلك البحث والتعريف ، بحيث لا تقوم بتضمين الملف
أكثر من مرة.
هذا من أجل الكفاءة.
لذلك إذا كان برنامجك يستخدم printf ، على سبيل المثال ، عرض الإخراج
على الشاشة ، تريد إخبار برنامجك ، مرحبًا ، أحتاج إلى تضمين هذه الوظيفة
الإضافية في المكتبة القياسية.
أنت لا تريد أن تخبره بذلك قم بتضمينه أكثر من مرة لأن المعالج المسبق سيفعل
الكثير الأشياء التي لا تحتاج إلى القيام بها.
عادة ما ستفعل ذلك استخدم إذا لم يتم تعريفها.
لذلك سترى بعضًا من هذا في بعض من الأمثلة التي أقدمها
حيث ألتف التضمينات في هذه إذا لا يعرّف ويعرف العبارات.
فيما يلي مثال على ملف ملف الرأس في محتوياته.
قد يكون لديك بعض ملف الرأس ، بعض التعليقات فيه ، يمكن أن تحتوي
على أشياء أخرى.
لديها وظيفة بشكل رئيسي نماذج أولية فيه ، ولكن يمكن أن تحتوي على
ثوابت ، ويمكن أن تحتوي على أحرف محرف.
هذه بعض المفاهيم التي نحن لا نفهم بعد.
لكني أحاول فقط التوضيح يحاول مساعدتك على فهم أنه يحتوي على
العديد من الأشياء المختلفة.
ولكن مرة أخرى من أجل stdio لدينا. ح ، هناك شيء ما هناك يسمى printf يحدد وظيفة printf لذلك
عندما نقوم بالربط ، يمكننا العثور على رمز التنفيذ
لذلك.
إذن ها هي بعض النماذج الأولية للوظائف.
نماذج الوظائف هي مجرد أسماء الوظائف.
نحن نعلم ما هي الوظيفة نأمل الآن أن تكون مجرد
طريقة لتجميع الكود معًا.
سنتحدث عن الوظائف بمزيد من التفصيل لاحقًا.
لذلك يمكن أن يتضمن ملف الرأس أشياء كثيرة ومختلفة.
يمكن أن تتضمن توجيهات محددة ، الثوابت ، التصريحات الهيكلية.
هذه مرة أخرى طريقة لتجميع مختلف المتغيرات ، تجميع البيانات المختلفة.
عبارات Typedef لها للقيام بأنواع البيانات.
سنتحدث أكثر عن ذلك.
لكن النماذج الأولية للوظيفة حقا المهم.
إنهم يخبرونك كيف تعمل يتم تعريفها ، لذلك يمكن للمجمع إنشاء الكود
الذي يحتاج إليه.
يذهب رمز قابل للتنفيذ في ملف شفرة المصدر.
ينتهي ملف التعليمات البرمجية المصدر في ال . تمديد ج.
التعليمات البرمجية القابلة للتنفيذ بشكل طبيعي لا يدخل في ملف الرأس.
هناك بعض الاستثناءات.
عندما تريد أن تفعل أشياء مضمنة وهو مرة أخرى شيء كفاءة
عندما يمكنك وضعه المصدر إلى ملفات
الرأس ، ولكن عادةً ما يكون ملف. h ملف ، a لن يحتوي ملف الرأس على رمز التنفيذ.
سوف يحتوي على سطور من التعليمات البرمجية للتعريفات فقط.
حسنًا ، لن يحدث ذلك ليكون أي منطق هناك.
ستكون مجرد تعريفات.
هذه الوظيفة موجودة.
هذه الثوابت موجودة.
هذه الهياكل المختلفة موجودة.
لا يقولون كيف هذا الرمز يفعل ما يفعله.
إنه يخبرك فقط أنه موجود.
مطلوب من قبل المترجم لتوليد الارتباط.
حسنًا ، أنت ذاهب إلى إنشاء ملفات الرأس الخاصة بك.
ستستخدم رأس النظام ملفات لوظائف إضافية.
إنه مفهوم تحتاج إليه فهم قبل المضي قدما في
كتابة برامج c لأن سترى هذا يشمل
التوجيه في جميع البرامج.
وهي تخبر البرنامج فقط مرة أخرى أننا نقوم بتضمين رمز
إضافي في مكان ما.
نحن نقوم بتضمين تعريف إضافي حتى نتمكن الآن من استدعاء
هذه الوظائف المختلفة في هذا كود مختلف في برنامج c لدينا.
لذلك آمل أن يكون ذلك منطقيًا.
مرة أخرى ، هذا ليس حقيقيًا مفهوم معقد.
نحن نقوم بتضمين رمز إضافي.
إنه أمر بديهي للغاية ، لكن سنتناولها وسنقدم المزيد
من الأمثلة بينما نمضي قدمًا.
شكرًا لك.