أهلا ومرحبا بكم مرة أخرى.
في هذه المحاضرة أريد أن أتحدث حول تحديد الوظائف في ج.
تحديد وظيفة.
نحن نعلم أهمية الوظائف.
نحن نفهم المزايا.
سوف نرغب في استخدام وظائف في برامجنا.
لذلك عند إنشاء وظيفة احترافية في c ، يجب عليك تحديد
رأس الوظيفة كسطر أول من تعريف الوظيفة.
سوف نتحدث عن التعريف دالة ، وسنتحدث
أيضًا عن تنفيذ دالة.
تنفيذ وظيفة هو مجرد حل مشكلة ، إنه
مجرد كود c عادي.
تعريف وظيفة يقول أن الوظيفة موجودة.
لذلك عندما تحدد دالة ، فإن ملف أول شيء تفعله هو أن
يكون لديك رأس الوظيفة ثم تتبعها ذلك باستخدام دعامة مجعدة تبدأ رمز
الكتلة للوظيفة.
لذا فالأمر يشبه تمامًا استخدام ملف دعامة مجعدة
في عبارة if ، تمامًا مثلما تستخدم قوسًا مجعدًا في حلقة for ، باستثناء أن الدعامة المتعرجة
مطلوبة للوظائف.
لا يوجد القضاء عليه.
ودائما ما يدل على البداية من رمز تلك الوظيفة.
أي شيء بين البداية وإنهاء القوس المتعرج هو
رمز الوظيفة.
من أين أنت ذاهب لتنفيذ المهمة.
حتى بين الأقواس يسمى جسم الوظيفة والسطر الأول من
الوظيفة يسمى رأس الوظيفة.
يحدد رأس الوظيفة اسم الوظيفة ، معلمات
الوظيفة.
سوف نتحدث عن المعلمات والحجج بالتفصيل.
لكن الآن ، أنت فقط بحاجة إلى معرفة أن هناك شيئًا
ما يسمى المعلمات.
وسيتم تحديد المعلمة عدد وأنواع القيم كيف يمكنك
تمرير البيانات والمعلمات لها علاقة بتمرير البيانات.
نوع القيمة أن ترجع الدالة.
ذكرنا أن الوظائف يمكننا إرجاع البيانات.
لذلك في عنوان الوظيفة ، سيكون لديك
اسم الوظيفة ، البيانات التي يمكنك أن تقبلها الوظيفة والبيانات
التي يتم إرجاعها بواسطة الوظيفة.
لن نركز الآن على البيانات التي يمكن تمريرها أو البيانات التي
يتم إرجاعها ، سنقوم بذلك نتحدث عن إنشاء وظيفة بسيطة.
يحتوي جسم الوظيفة مجرد رمز عادي ، ويتم تنفيذ هذا الرمز عندما
تقوم بذلك استدعاء أو استدعاء الوظيفة.
والجسم الوظيفي نفسه سيتمكن من الوصول إلى أي قيم يتم تمريرها
كوسيطات.
إذن البيانات التي تمررها إليها يمكنك استخدام تلك
البيانات داخل جسم الوظيفة.
ما يبدو عليه هو هذا ، رأس الوظيفة.
عنوان الوظيفة له الكلمة الأولى.
ووظيفة رأس هو أ الكلمة الأساسية التي تمثل نوع البيانات
التي ستكون عاد من الوظيفة.
الكلمة التالية هناك اسم الوظيفة.
ثم لديك قوس أيسر وبعد ذلك يكون لديك معلمات مفصولة بفواصل ، والتي
ستكون البيانات التي تم تمريرها إلى الوظيفة.
وبعد ذلك لديك ذلك الأقواس اليمنى
لإنهاء رأس الوظيفة.
ثم لديك الدعامة المجعدة التي تشير إلى بدء
تنفيذ الوظيفة.
ولديك أي عدد من عبارات للقيام بمهمة.
كما قلت ، تريد اجعل وظائفك صغيرة.
يريدون أن يكونوا متماسكين.
لا يريدون أن يكونوا كذلك في انحاء المكان.
يريدون الحصول على واحدة التركيز ، افعل شيئًا محددًا.
كما قلت إذا كان لديك وظيفة الذي يحصل على المدخلات ، فإنه يقرأ المدخلات.
لا يطبع الإخراج.
لا يقوم بأي فرز أو لا تفعل أي شيء آخر.
إذا كان لديك وظيفة مسماة نوع ، فإنه يفرز البيانات.
لا تحصل على مدخلات.
يجب أن تكون الوظائف متماسكة وصغيرة.
من الأسهل بكثير تصحيح هذه وظائف ، لذلك اجعلها متماسكة.
وبعد ذلك لديك هذا الحق قوس مجعد ، والذي
ينهي تنفيذ الوظيفة.
هذه هي وظيفة يبدو في ج.
الآن دعونا نركز على الوظيفة أسماء ، وسنتحدث عن المعلمات
وأنواع الإرجاع لاحقًا.
السطر الأول من الوظيفة مرة أخرى يخبر التعريف المترجم بالترتيب
من اليسار إلى اليمين ثلاثة أشياء حول الوظيفة ، كما ذكرت.
نوع القيمة المعادة ، اسم الوظيفة ثم أي
بيانات تأخذها.
هذا فقط للتلخيص ، هذا مهم.
بقدر ما تريد أسماء الوظائف لاختيار أسماء وظائف ذات معنى.
إنه لا يقل أهمية عن الاختيار أسماء المتغيرات ذات المعنى.
يؤثر بشكل كبير على قابلية قراءة البرنامج
، لذلك لا تسمي الوظائف x أو y.
اسم الوظيفة على أساس حول ما ستفعله.
إذا كانت تضيف اثنين أرقام ، سمها تضاف.
إذا تم طرح اثنين الأرقام ، سمها اطرح.
في هذا المثال ، إليك وظيفتنا البسيطة.
لا تقلق بشأن الفراغ ، فقط تقلق بشأن الاسم هنا.
لدينا وظيفة رسالة طباعة مسماة.
ومن ثم نرى تلك الدعامة المتعرجة مما
يدل على بدء الوظيفة ، ثم لدينا بعض التنفيذ.
وهذا التنفيذ لا يفعل شيئًا
أكثر من عرض سلسلة نصية.
ومن ثم لدينا ذلك قوس مجعد الأيمن.
لذا فهذه وظيفة بسيطة للغاية لا يفعل الكثير ، فإنه يعرض الإخراج.
في هذا المثال للطباعة رسالة ، السطر الأول من
رسالة الطباعة يخبر المترجم أن الدالة لا ترجع أي قيمة.
هذه هي الكلمة المفتاحية باطلة.
مرة أخرى ، لا تحتاج إلى التركيز على ذلك ، ولكن هذا ما يفعله ذلك.
التالي هو الاسم.
ثم بعد الاسم الحجج ، تسمى المعلمات.
ونستخدم الكلمة الأساسية void مرة أخرى إذا لم نمرر أي بيانات.
البيان في الوظيفة يمكن أن يكون الجسم غائبًا ، ولكن يجب أن تكون
الدعامات موجودة دائمًا.
لذلك ليس عليك في الواقع أن يكون لديك أي منها التنفيذ ، ولكن يجب أن
يكون لديك الأقواس لوظيفة ما.
إذا لم تكن هناك بيانات في جسم الوظيفة ، يجب أن يكون
نوع الإرجاع باطلاً.
ومرة أخرى ، سنركز على هذا لاحقًا ولن تفعل الوظيفة أي شيء
لأنه ليس لديك تنفيذ.
إذا قمت بتعريف وظيفة مع جسدًا فارغًا ، يمكن أن يظل مفيدًا
على الرغم من أنه لا تنجز أي شيء.
عادة ما تفعل ذلك خلال مرحلة اختبار برنامج كبير جدًا.
وماذا يسمح لك هذا بالقيام به هل يمكنك تشغيل البرنامج بوظائف
معينة فقط في الواقع القيام بشيء ما ، يساعدك على الاختبار
بشكل أفضل ، ويساعدك على عزل الأخطاء.
يمكنك حتى أن يكون لديك التنفيذ في الاختبار في الهيئة الوظيفية
ولكن فقط قم بالتعليق عليها.
وبعد ذلك يمكنك فعل هذا نهج فرق تسد.
أثناء اختبار المزيد والمزيد و أكثر ، يمكنك بعد ذلك البدء في وضع التنفيذ
في الهيئات الوظيفية.
إنها خطوة بخطوة عملية العمل.
أنت تعمل باستمرار في صغيرة قطع ، إضافة كود ، اختبار هذا الرمز ثم الانتقال إلى التالي خطوة
ثم في نهاية المطاف سيتم الانتهاء من التنفيذ بالكامل
و سيتم تنفيذ جميع الوظائف.
لذلك هناك حالة استخدام لـ وجود هيئة وظيفية
ليس لديها رمز أو تعليق عليها.
وظائف التسمية.
اسم الوظيفة يمكن أن يكون أي اسم قانوني.
تمامًا كما تفعل عندما تكون كذلك تسمية متغير ، لا
يمكنك استخدام الكلمات المحجوزة.
هذه هي الكلمات الرئيسية في لغة مثل إدخال الزوجي لأنها
تمثل أنواع البيانات.
Sizeof عامل.
تريد أن تكون قادرًا لاستخدامه أو إذا.
لا يمكن أن يكون لديك اثنين أيضا وظائف بنفس الاسم.
وهذا أيضا مشار إليه إلى وظيفة التحميل الزائد ، نوع من.
لكن لا يمكنك الحصول على وظيفتين بنفس الاسم ، لا يتم دعم التحميل
الزائد في ج.
أخيرًا ، يمكنك الحصول على نفس الشيء الاسم كدالة موجودة في وظيفة
المكتبة القياسية.
من الناحية الفنية ، إذا لم تقم بتضمين تتضمن هذه المكتبة ملف رأس ، قد تتمكن
من الحصول عليه.
ولكن إذا كنت ترغب في استخدام ملفات تلك وظيفة المكتبة
، سيشتكي المترجم ويقول لديك وظيفتين بنفس الاسم.
لذلك لا تسمي وظائفك بامتداد نفس وظائف المكتبة القياسية.
الاسم القانوني هو نفسه متغير ، تسلسل من الأحرف
والأرقام للبدء.
يجب أن يكون الحرف الأول حرفًا ويمكن أن تكون الرسالة شرطة سفلية.
لا يمكنك بدء وظائف بأرقام أو أي نوع من الشخصيات
الغريبة.
يجب أن الاسم الذي تختاره أن تكون ذات مغزى وذات صلة
بما تقوم به الوظيفة.
لقد قلت هذا بالفعل ، وأنا أكرر للتأكيد ، الأسماء ذات المعنى
مهمة جدًا.
سوف تحدد الوظيفة غالبًا الأسماء وأسماء المتغيرات أيضًا التي
تتكون من أكثر من كلمة واحدة.
لذا الآن أريد أن أتحدث قليلاً قليلا عن أسلوب الترميز فقط.
ربما لاحظت ذلك عندما كنت كتبت الكود الخاص بي أنني أستخدم حالة الجمل.
هناك ثلاث طرق مختلفة يمكنك كتابة أسماء المتغيرات
والوظائف الخاصة بك.
يمكنك فصل كل كلمة في اسم وظيفة مع حرف
مسطر ، إنها طريقة واحدة.
يمكنك تكبير الحرف الأول لكل كلمة أو يمكنك كتابة الكلمات بأحرف
كبيرة بعد الكلمة الأولى ، و لا يزال لديك مداعبة أوتار الآلة الموسيقية معًا.
تذكر ، لا يمكنك لها مسافات بينهما.
هذا مجرد نهج ل التسمية لأنه من المهم
أن تتبع بعض الاصطلاحات حتى يسهل قراءتها.
مجرد كلمة طويلة بخمس كلمات مختلفة.
لذلك إذا كان لديك وظيفة تقول تحقق من الإدخال الصحيح ، فلن ترغب في الحصول
على كل هذه الأحرف الصغيرة.
سيكون من الصعب حقًا قراءة و تحديد مكان الكلمات.
لذا فإن حالة الجمل هي وسيلة لذلك تحديد مكان الكلمات في العديد من
الكلمات ومن السهل رؤيتها ما تفعله هذه الوظيفة.
الشرطة السفلية هي شيء آخر طريقة لفصل الكلمات.
وكتابة الحرف الأول من كل كلمة هي طريقة أخرى للفصل.
من المهم أن تكون قادرًا على ذلك افصل الكلمات في دالة لجعلها أكثر
قابلية للقراءة.
أنا عادة أستخدم حالة الجمل.
وعندما تستخدم واحدة من هؤلاء الاتفاقيات ، تريد استخدامه
لكل شيء ، تريد استخدامه لتسمية المتغيرات ، فأنت تريد استخدامه
لأسماء الوظائف الخاصة بك.
عادة ، ما عليك سوى اتباع هذا اصطلاح الترميز الشائع ، يجعل الأشياء
أكثر قابلية للقراءة.
نماذج الوظائف.
تحدثنا عن تحديد وظيفة.
ماذا عن التصريح عن وظيفة.
قد تقول لماذا تحتاج إلى ذلك تعلن عن وظيفة ، ألا
تعلنها عند تعريفها.
لكن هناك أيضًا مفهوم من التصريح عن وظيفة.
وهو ضروري إذا أردت لاستخدام الوظيفة قبل تنفيذها
، قبل تحديدها.
لذا فإن النموذج الأولي للدالة هو أ العبارة التي تحدد وظيفة.
يخبر المترجم بشكل أساسي كل تفاصيل الوظيفة.
يحدد اسمه ونوع الإرجاع و نوع كل معلماته.
لذلك يبدو وكأنه رأس وظيفة.
يوفر كل ما هو خارجي مواصفات الوظيفة ، ربما
سمعت أيضًا بشكل أساسي مصطلح التوقيع ، توقيع الوظيفة
هذا ما هو عليه.
يتم تحديد البيانات التي تم إرجاعها ، البيانات
التي يأخذها وكل شيء عن الوظيفة نفسها.
تريد كتابة نموذج أولي للوظيفة بالطريقة نفسها التي تكتب بها رأس الوظيفة
، فإن الاختلاف الوحيد هو ذلك تضع فاصلة منقوطة في النهاية.
وهذا عادل إعلان الوظيفة.
هذا يعني أن الوظيفة موجودة.
نموذج وظيفة تمكن المترجم لتوليد التعليمات المناسبة
في كل منهما أشر حيث تستدعي الوظيفة.
يتحقق أيضًا من أنك تستخدم ملف تعمل بشكل صحيح في كل استدعاء.
سبب قيامك بتوفير الوظيفة الرؤوس بحيث يمكنك استدعاء الوظيفة
دون تحذير أو ملف إعلان الوظيفة بدون تنفيذها ، لذا فهي حقًا عادلة ترتيب
الكود الخاص بك وسأعطيك مثالاً على
ذلك في ثانية.
عندما تقوم بتضمين رأس قياسي ملف في برنامج ، يضيف ملف
الرأس النموذج الأولي للوظيفة.
عادة ما تدخل النماذج الأولية للوظائف header إذا كنت تريد إعادة استخدامها في العديد من الملفات
المصدر المختلفة.
إذا كنت تستخدمها فقط في ملف ملف المصدر ، يمكنك فقط وضعها في
الجزء العلوي في الملف المصدر.
لكن لأننا نستخدم ملف printf الوظيفة التي يمكن استخدامها في
العديد من ملفات المصدر المختلفة ، هذا العنوان سيتم تحديد الوظيفة
في الرأس أو إعلان الوظيفة هذا سيتم تعريفه في الرأس.
وفي هذه الحالة ، stdio. ح.
لذلك تظهر عادة في ملفات المصدر فقط إذا كان الملف المصدر يستخدم
تلك الوظيفة.
خلاف ذلك ، يمكنك وضعها في ملف header إذا تم إعادة استخدامها
بواسطة العديد من الملفات المصدر.
يسمح بأي من الوظائف الموجودة في ملف ملف لاستدعاء أي من تلك الوظائف
التي تم تعريفها بغض النظر عن مكان كنت قد وضعت التنفيذ.
إذا قمت بوضع التنفيذ من وظيفة ، بعد أن تسميها ، سيشتكي
ويقول أنه لا يعرف عنها.
لأنه عندما تقوم بالتجميع ، كنت تجمع سطرا سطرا.
إذا قمت بوضع الإعلان في في الأعلى ، ثم يمكنك استدعاء
الوظيفة قبل تحديدها ، قبل تنفيذه.
لا يجب أن تكون أسماء المعلمات هي نفس المستخدم في تعريف الوظيفة.
يمكن أن يكون لديك أسماء مختلفة.
عندما أقول الأسماء ، فهذه هي الأسماء معرّفات البيانات.
يمكنك تغيير اسم ملف المعلمات في نموذج الوظيفة.
لا يزال يتعين عليك الحصول على نفس البيانات أنواع ، ولكن يمكنك تغيير الأسماء.
إنها دائمًا ممارسة جيدة قم بتضمين إعلانات الوظائف
لجميع الوظائف في ملف البرنامج في الجزء العلوي من الملف.
إنها تحافظ على برنامجك أكثر اتساقًا للتصميم ويمنع حدوث
أي أخطاء في أي مرحلة إذا كنت تريد في أي وقت استدعاء هذه الوظيفة
قبل تنفيذها.
هنا مثال على بعض نماذج الوظائف.
في الجزء العلوي من ملف ، لدينا لدينا يشمل.
ومن ثم لدينا البعض الوظائف التي أعلنا عنها ، ومتوسطها ،
ونجمعها ، ونحصل على البيانات.
لاحظت أنها تبدو فقط مثل رأس الوظيفة.
لديها نوع الإرجاع ، يحتوي على المعلمات التي تم تحديدها
في الوظيفة ، ولكن يحتوي على فاصلة منقوطة في النهاية.
لا يوجد تنفيذ لهذه الوظائف.
أنت فقط تخبر المترجم هذه هي الوظيفة موجودة وهذا
هو كيف يتم تعريفها.
ما يسمح لك هذا بالقيام به الآن في وظيفتك الرئيسية ، يمكنك استدعاء المتوسط
، يمكنك الاتصال المجموع ، يمكنك الاتصال للحصول على البيانات.
والتطبيقات الفعلية يمكن تكون في الأسفل حيث تتصل بهم.
إذا لم يكن لديك الوظيفة رؤوس هنا ، عندما حاولت
الاتصال بهم بشكل رئيسي ، إذا كانوا كذلك المحدد أدناه الروتين الرئيسي ، سيكون
لديك أخطاء أو تحذيرات.
لذلك دعونا نلقي نظرة في ذلك في كتل التعليمات البرمجية.
هنا لدينا روتيننا الأساسي المعتاد.
الآن دعنا نقول أننا نريد لإنشاء دالة أو نريد استدعاء
دالة.
سنقوم باستدعاء ملف وظيفة تسمى add ولن تأخذ
أي معاملات.
نحن نسميها في الوظيفة الرئيسية في السطر 7.
نحن سوف نذهب الئ تنفيذه على السطر 10.
سنقول باطل إضافة و لن نفعل أي شيء حتى.
سنبقيها فارغة.
عندما نذهب لتجميع هذا ، ماذا ستلاحظ أن هذا المترجم يعطي
تحذيرًا فقط.
تقول إضافة لديها إعلان ضمني.
يمكنك التخلص من هذا التحذير باستخدام إعلان الوظيفة.
يمكنك التصريح عن الوظيفة إلى الأعلى لإخبار المترجم أنك ذاهب إليه
استخدمه في مكان ما ، لكنك لا تعرف
مكان التنفيذ.
إذن ما يمكنك فعله هو أنك تستطيع قل باطل أضف هنا وأضف الفاصلة
المنقوطة فقط.
الآن سوف تتخلص من ذلك تحذير وبعض التجميعات ستعطيك
خطأ بالفعل.
الآن عندما أقوم بتجميعها ، لدي لا تحذيرات ولا أخطاء.
إذن هذه هي وظيفة لا إعلان.
انها تسمح لك لوضع الوظيفة في أي مكان.
الآن إذا لم يكن لديك الوظيفة إعلان في الأعلى وكان لديك
التنفيذ أعلاه حيث كنت كانوا يتصلون به ، فلن ترى الخطأ أيضًا
لأن المترجم ستتعرف على الوظيفة قبل أن تحاول فعلاً استدعائها.
لذا إذا قمنا ببناء هذا ، فأنت أيضًا سنرى أنه لا يوجد خطأ.
الآن ذكرت أنك عادة تريد أن تعلن عن جميع وظائفك في
الأعلى لمجرد ممارسة جيدة وأعتقد أنك بحاجة إلى القيام بذلك.
لذا استمر في فعل ذلك.
ولكن إذا خرجت من ذلك عادة ، عليك إما أن تعلن عن وظائفك
قبل الاتصال بها أو يجب عليك تقديم نماذج أولية
للوظيفة لأنك لا تريدها تحذيرات أو أخطاء في برنامجك.
هذه هي الطريقة التي يمكنك من خلالها تحديد ملف وظيفة ، وهذه هي الطريقة التي يمكنك بها استخدام
النماذج الأولية للوظائف.
في المحاضرة التالية ،
سنتحدث عن المعايير.
كيف يمكنك تمرير البيانات إلى وظيفة.
شكرًا لك.