logo

النموذج الوظيفي في C

مقدمة:

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

لماذا نستخدم النماذج الأولية للوظيفة؟

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

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

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

أرباع السنة

بناء جملة النموذج الوظيفي:

بناء جملة النموذج الأولي للوظيفة في برمجة C هو كما يلي:

 return_type function_name(parameter_list); 

ال return_type هو نوع البيانات الذي إرجاع الوظيفة ، مثل كثافة العمليات، تعويم ، أو شار . ال اسم وظيفة هو اسم وظيفة ، و ال parameter_list هي قائمة مفصولة بفواصل من حدود التي تستغرقها الوظيفة. كل معلمة في parameter_list يتكون من نوع بيانات متبوعًا بـ اسم المعلمة .

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

 int add(int num1, int num2); 

في هذا المثال، نوع الإرجاع هو كثافة العمليات ، اسم الدالة هو يضيف ، وتتكون قائمة المعلمات من عددين صحيحين مسميين رقم 1 و رقم 2 .

النماذج الأولية للوظيفة الافتراضية:

في برمجة C، إذا تم استدعاء دالة قبل أن يتم استدعاؤها مُعرف أو أعلن ، سيفترض المترجم نموذجًا أوليًا للوظيفة الافتراضية. ال النموذج الأولي للوظيفة الافتراضية يفترض أن الدالة ترجع كثافة العمليات ويأخذ أي عدد من الحجج من أي نوع.

على سبيل المثال، خذ بعين الاعتبار الكود التالي:

 #include int main() { printf('The sum is %d
', add(2, 3)); return 0; } int add(int num1, int num2) { return num1 + num2; } 

انتاج:

 The sum is 5 

توضيح:

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

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

النماذج الأولية للوظائف وملفات الرأس:

في برمجة C، النماذج الأولية للوظيفة غالبًا ما يتم تضمينها في ملفات الرأس، والتي يتم تضمينها بعد ذلك في كل من البرنامج الرئيسي وملفات تعريف الوظيفة. فهو يسمح باستدعاء الوظائف من أي جزء من البرنامج دون الحاجة إلى الوصول إلى تفاصيل تنفيذ الوظيفة.

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

 #ifndef ADD_H #define ADD_H int add(int num1, int num2) 

في هذا المثال، com.ifndef يتحقق التوجيه سواء إضافة_H تم تعريفها بالفعل. إذا لم يكن الأمر كذلك، فإنه يحدد إضافة_H ويشرع في تضمين النموذج الأولي للوظيفة للإضافة.

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

عندما يتم تضمين ملف رأس في ملف برنامج ج ، ال المعالج يحل محل #يشمل التوجيه مع محتويات الملف الاساسي . فهو يسمح للبرنامج الرئيسي والملفات الأخرى بالوصول إلى نماذج الوظائف والإعلانات الأخرى في ملف الرأس.

بعض النقاط المهمة للنموذج الأولي للوظيفة في لغة C:

تساعد النماذج الأولية للوظائف على اكتشاف الأخطاء:

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

النماذج الأولية للوظائف ضرورية في البرامج الكبيرة:

mvc في إطار الربيع

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

يمكن الإعلان عن النماذج الأولية للوظيفة في ملفات الرأس:

كما ذكرنا سابقًا، عادةً ما يتم الإعلان عن النماذج الأولية للوظيفة في ملفات الرأس. يتم بعد ذلك تضمين ملفات الرأس في كل من البرنامج الرئيسي وملفات تعريف الوظيفة، مما يجعل الوصول إلى الوظائف من أي جزء من البرنامج.

يمكن تحميل النماذج الأولية للوظائف بشكل زائد:

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

يمكن أن تتضمن النماذج الأولية للوظائف قيم الوسيطات الافتراضية:

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

يمكن الإعلان عن النماذج الأولية للوظيفة:

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

فيما يلي بعض الأمثلة الإضافية للنماذج الوظيفية في برمجة C:

مثال 1:

 #include float calculate_average(int arr[], int size); int main() { int arr[] = {1, 2, 3, 4, 5}; int size = 5; float average = calculate_average(arr, size); printf(&apos;The average is: %.2f&apos;, average); return 0; } float calculate_average(int arr[], int size) { float sum = 0.0; for (int i = 0; i<size; i++) { sum +="arr[i];" } return size; < pre> <p> <strong>Output:</strong> </p> <pre> The average is: 3.00 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first declare the <strong> <em>calculate_average</em> </strong> function prototype at the beginning of our program before the main function. After that, inside the main function, we declare an integer array <strong> <em>arr</em> </strong> with some values and a size of <strong> <em>5</em> </strong> . After that, we call the <strong> <em>calculate_average function</em> </strong> , passing in the <strong> <em>arr array</em> </strong> and its size, and store the result in a <strong> <em>float variable</em> </strong> named <strong> <em>average</em> </strong> . Finally, we print out the result using printf.</p> <p>The <strong> <em>calculate_average</em> </strong> function takes in the integer <strong> <em>array arr</em> </strong> and its size as arguments and returns the average value of the array as a <strong> <em>float</em> </strong> . We first declare a float variable named <strong> <em>sum</em> </strong> inside the function and initialize it to <strong> <em>0.0</em> </strong> . After that, we loop through each element in the array using a <strong> <em>for loop</em> </strong> , adding each element to the sum variable. Finally, we return the result of dividing the sum variable by the array size.</p> <p>Its average is <strong> <em>3.00</em> </strong> because the <strong> <em>arr</em> </strong> array contains the values <strong> <em>{1, 2, 3, 4, 5}</em> </strong> , and the average of these values is <strong> <em>(1+2+3+4+5)/5 = 3.00</em> </strong> . The <strong> <em>printf</em> </strong> statement in the main function uses the <strong> <em>%f format specifier</em> </strong> to print out the average value as a floating-point number. The <strong> <em>.2 modifier</em> </strong> specifies that we want to print only two decimal places.</p> <p> <strong>Example 2:</strong> </p> <pre> #include void print_message(char *msg); int main() { char *msg = &apos;Hello, world!&apos;; print_message(msg); return 0; } void print_message(char *msg) { printf(&apos;%s
&apos;, msg); } </pre> <p> <strong>Output:</strong> </p> <pre> Hello, world! </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first declare the <strong> <em>print_message</em> </strong> function prototype at the beginning of our program, before the main function. Then, inside the main function, we declare a character pointer <strong> <em>msg</em> </strong> and initialize it to point to a string literal <strong> <em>&apos;Hello, world!&apos;</em> </strong> . After that, we call the <strong> <em>print_message</em> </strong> function, passing in the <strong> <em>msg pointer</em> </strong> .</p> <p>The <strong> <em>print_message</em> </strong> function takes in a character pointer <strong> <em>msg</em> </strong> as an argument, and returns nothing <strong> <em>(void)</em> </strong> . Inside the function, we use the <strong> <em>printf function</em> </strong> to print out the string pointed to by <strong> <em>msg</em> </strong> , followed by a <strong> <em>newline character (
)</em> </strong> . The <strong> <em>%s</em> </strong> format specifier is used to print out a string.</p> <p>The Output is <strong> <em>Hello, world!</em> </strong> . Because the <strong> <em>print_message</em> </strong> function prints out the string pointed to by the <strong> <em>msg pointer</em> </strong> , which in this case is <strong> <em>&apos;Hello, world!&apos;</em> </strong> , followed by a newline character.</p> <p> <strong>Example 3:</strong> </p> <pre> #include int factorial(int n); int main() { int n = 5; int result = factorial(n); printf(&apos;%d! = %d
&apos;, n, result); return 0; } int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n-1); } } </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first declare the <strong> <em>factorial function</em> </strong> prototype at the beginning of our program, before the main function. Then, inside the main function, we declare an integer variable <strong> <em>n</em> </strong> and initialize it to <strong> <em>5</em> </strong> . After that, we call the factorial function, passing in <strong> <em>n</em> </strong> , and store the result in an integer variable named <strong> <em>result</em> </strong> . Finally, we print out the result using <strong> <em>printf</em> </strong> .</p> <p>The factorial function takes in an integer <strong> <em>n</em> </strong> as an argument, and returns its factorial as an <strong> <em>integer</em> </strong> . Inside the function, we first check if <strong> <em>n</em> </strong> is equal to <strong> <em>0</em> </strong> . If it is, we return <strong> <em>1</em> </strong> , since <strong> <em>0! = 1</em> </strong> by definition. Otherwise, we return <strong> <em>n * factorial(n-1)</em> </strong> , which is the factorial of <strong> <em>n</em> </strong> calculated recursively as the product of <strong> <em>n</em> </strong> and the factorial of <strong> <em>n-1</em> </strong> .</p> <p>The output of the code will be:</p> <pre> 5! = 120 </pre> <p>This is because the <strong> <em>factorial function</em> </strong> calculates <strong> <em>5!</em> </strong> as <strong> <em>5 * 4 * 3 * 2 * 1 = 120</em> </strong> , and this result is printed out using <strong> <em>printf</em> </strong> .</p> <p> <strong>Example 4:</strong> </p> <pre> #include int find_max(int arr[], int size); int main() { int arr[] = {3, 5, 2, 8, 1}; int size = sizeof(arr) / sizeof(int); int max = find_max(arr, size); printf(&apos;The maximum value in the array is: %d
&apos;, max); return 0; } int find_max(int arr[], int size) { int max = arr[0]; for (int i = 1; i max) { max = arr[i]; } } return max; } </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first declare the <strong> <em>find_max</em> </strong> function prototype at the beginning of our program, before the main function. Then, inside the main function, we declare an integer <strong> <em>array arr</em> </strong> and initialize it with some values, and a variable size that stores the size of the array. After that, we call the <strong> <em>find_max function</em> </strong> , passing in the <strong> <em>arr array</em> </strong> and <strong> <em>size</em> </strong> , and store the result in an integer variable named <strong> <em>max</em> </strong> . Finally, we print out the result using <strong> <em>printf</em> </strong> .</p> <p>The <strong> <em>find_max function</em> </strong> takes in an integer array <strong> <em>arr</em> </strong> and its size <strong> <em>size</em> </strong> as arguments, and returns the maximum value in the array as an integer. Inside the function, we first initialize a variable max with the first element of the array arr. After that, we loop over the remaining elements of the array using a for loop, comparing each element to the current maximum value using an if statement. If the current element is greater than the current maximum, we update max to the value of the current element. After the loop finishes, we return the final value of max.</p> <p>The <strong> <em>output</em> </strong> of the code will be:</p> <pre> The maximum value in the array is: 8 </pre> <p>This is because the <strong> <em>find_max</em> </strong> function searches through the array <strong> <em>{3, 5, 2, 8, 1}</em> </strong> and finds that the maximum value is <strong> <em>8</em> </strong> , which is then printed out using <strong> <em>printf</em> </strong> .</p> <p>Overall, function prototypes are an essential part of C programming that allow for <strong> <em>modular programming</em> , <em>type checking</em> , <em>error handling</em> </strong> , and <strong> <em>self-documenting code</em> </strong> . By declaring function prototypes, developers can write more robust, maintainable, and error-free code.</p> <p> <strong>Example 5:</strong> </p> <pre> #include void greet_user(char *name); int main() { char name[50]; printf(&apos;What is your name? &apos;); scanf(&apos;%s&apos;, name); greet_user(name); return 0; } void greet_user(char *name) { printf(&apos;Hello, %s! Nice to meet you.
&apos;, name); } </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first declare the <strong> <em>greet_user function</em> </strong> prototype at the beginning of our program, before the main function. Then, inside the main function, we declare a character array name with a size of <strong> <em>50</em> </strong> , and use <strong> <em>printf</em> </strong> and <strong> <em>scanf</em> </strong> to ask the user for their name and read it into the name array. After that, we call the <strong> <em>greet_user function</em> </strong> , passing in the name array as an argument.</p> <p>The <strong> <em>greet_user function</em> </strong> takes in a character pointer name as an argument, which is a pointer to the first character of a string. Inside the function, we use <strong> <em>printf</em> </strong> to print out a greeting message that includes the user&apos;s name, and a friendly message.</p> <p>The output of the code will depend on the user&apos;s input. Here&apos;s an example of what the output might look like:</p> <pre> What is your name? suman Hello, suman! Nice to meet you. </pre> <p>In this case, the user enters the name <strong> <em>&apos;suman&apos;</em> </strong> , and the program prints out a greeting message that includes their name.</p> <h2>Conclusion:</h2> <p> <strong> <em>Function prototypes</em> </strong> are an important part of C programming, enabling modular programming, error checking, and self-documenting code. By declaring the signature of a function before it is called, function prototypes allow the compiler to check for errors, enable modular programming, and make code easier to read and understand.</p> <p>In C programming, function prototypes are typically included in <strong> <em>header files</em> </strong> , which are then included in both the main program and the function definition files. It allows functions to be called from any part of the program without requiring access to the function&apos;s implementation details. By understanding the importance of function prototypes and how they are used in C programming, developers can write more robust, maintainable, and error-free code.</p> <hr></size;>

توضيح:

سنة اختراع الكمبيوتر

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

ال calcul_average تأخذ الدالة عددًا صحيحًا صفيف آر وحجمه كوسيطات وإرجاع القيمة المتوسطة للصفيف كـ a يطفو . نعلن أولاً عن متغير عائم اسمه مجموع داخل الوظيفة وتهيئتها 0.0 . بعد ذلك، نقوم بالتكرار خلال كل عنصر في المصفوفة باستخدام a لحلقة بإضافة كل عنصر إلى المتغير sum. وأخيرًا، نعيد نتيجة قسمة المتغير المجموع على حجم المصفوفة.

متوسطها هو 3.00 بسبب ال وصول المصفوفة تحتوي على القيم {1، 2، 3، 4، 5} ، ومتوسط ​​هذه القيم هو (1+2+3+4+5)/5 = 3.00 . ال printf يستخدم البيان في الوظيفة الرئيسية محدد التنسيق %f لطباعة القيمة المتوسطة كرقم الفاصلة العائمة. ال .2 المعدل يحدد أننا نريد طباعة منزلتين عشريتين فقط.

مثال 2:

 #include void print_message(char *msg); int main() { char *msg = &apos;Hello, world!&apos;; print_message(msg); return 0; } void print_message(char *msg) { printf(&apos;%s
&apos;, msg); } 

انتاج:

 Hello, world! 

توضيح:

في هذا المثال، نعلن أولاً عن print_message النموذج الأولي للوظيفة في بداية برنامجنا، قبل الوظيفة الرئيسية. ثم، داخل الوظيفة الرئيسية، نعلن عن مؤشر الحرف رسالة وتهيئته للإشارة إلى سلسلة حرفية 'مرحبا بالعالم!' . بعد ذلك نسميه print_message وظيفة، ويمر في مؤشر الرسالة .

ال print_message تأخذ الوظيفة مؤشر حرف رسالة كوسيطة، ولا يعود شيئا (فارغ) . داخل الدالة نستخدم وظيفة برينتف لطباعة السلسلة المشار إليها بواسطة رسالة ، متبوعة ب حرف السطر الجديد ( ) . ال ٪س يتم استخدام محدد التنسيق لطباعة سلسلة.

الإخراج هو مرحبا بالعالم! . بسبب ال print_message تقوم الدالة بطباعة السلسلة المشار إليها بواسطة مؤشر الرسالة ، وهو في هذه الحالة 'مرحبا بالعالم!' ، متبوعًا بحرف السطر الجديد.

مثال 3:

 #include int factorial(int n); int main() { int n = 5; int result = factorial(n); printf(&apos;%d! = %d
&apos;, n, result); return 0; } int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n-1); } } 

توضيح:

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

تأخذ الدالة المضروب عددًا صحيحًا ن كوسيطة، وإرجاع مضروبها كوسيطة عدد صحيح . داخل الدالة، نتحقق أولاً مما إذا ن مساوي ل 0 . إذا كان الأمر كذلك، فإننا نعود 1 ، منذ 0! = 1 حسب التعريف. وإلا فإننا نعود ن * مضروب (ن-1) ، وهو مضروب ن يتم حسابها بشكل متكرر كمنتج لـ ن والعامل من ن-1 .

سيكون إخراج الكود:

 5! = 120 

وذلك لأن وظيفة مضروب يحسب 5! مثل 5*4*3*2*1 = 120 ، وتتم طباعة هذه النتيجة باستخدام printf .

مثال 4:

 #include int find_max(int arr[], int size); int main() { int arr[] = {3, 5, 2, 8, 1}; int size = sizeof(arr) / sizeof(int); int max = find_max(arr, size); printf(&apos;The maximum value in the array is: %d
&apos;, max); return 0; } int find_max(int arr[], int size) { int max = arr[0]; for (int i = 1; i max) { max = arr[i]; } } return max; } 

توضيح:

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

ال وظيفة find_max يأخذ في مجموعة عدد صحيح وصول وحجمه مقاس كوسائط، وتقوم بإرجاع القيمة القصوى في الصفيف كعدد صحيح. داخل الدالة، نقوم أولاً بتهيئة المتغير max باستخدام العنصر الأول من المصفوفة arr. بعد ذلك، نقوم بالتكرار على العناصر المتبقية من المصفوفة باستخدام حلقة for، ومقارنة كل عنصر بالقيمة القصوى الحالية باستخدام عبارة if. إذا كان العنصر الحالي أكبر من الحد الأقصى الحالي، فإننا نقوم بتحديث الحد الأقصى إلى قيمة العنصر الحالي. بعد انتهاء الحلقة، نعيد القيمة النهائية للحد الأقصى.

تحتوي سلسلة جافا

ال انتاج من الكود سيكون:

 The maximum value in the array is: 8 

وذلك لأن find_max تبحث الدالة من خلال المصفوفة {3، 5، 2، 8، 1} ويجد أن القيمة القصوى هي 8 ، والتي تتم طباعتها بعد ذلك باستخدام printf .

بشكل عام، تعد النماذج الأولية للوظائف جزءًا أساسيًا من برمجة C التي تسمح بذلك البرمجة المعيارية , فحص النوع , معالجة الأخطاء ، و رمز التوثيق الذاتي . من خلال الإعلان عن النماذج الأولية للوظائف، يمكن للمطورين كتابة تعليمات برمجية أكثر قوة وقابلية للصيانة وخالية من الأخطاء.

مثال 5:

 #include void greet_user(char *name); int main() { char name[50]; printf(&apos;What is your name? &apos;); scanf(&apos;%s&apos;, name); greet_user(name); return 0; } void greet_user(char *name) { printf(&apos;Hello, %s! Nice to meet you.
&apos;, name); } 

توضيح:

في هذا المثال، نعلن أولاً عن وظيفة تحية_المستخدم النموذج الأولي في بداية برنامجنا، قبل الوظيفة الرئيسية. ثم، داخل الوظيفة الرئيسية، نعلن عن اسم مصفوفة أحرف بحجم خمسون ، واستخدام printf و scanf لسؤال المستخدم عن اسمه وقراءته في مصفوفة الأسماء. بعد ذلك نسميه وظيفة تحية_المستخدم ، بتمرير مصفوفة الاسم كوسيطة.

ال وظيفة تحية_المستخدم يأخذ اسم مؤشر الحرف كوسيطة، وهو مؤشر إلى الحرف الأول من السلسلة. داخل الدالة نستخدم printf لطباعة رسالة ترحيب تتضمن اسم المستخدم ورسالة ودية.

سيعتمد إخراج الكود على إدخال المستخدم. فيما يلي مثال على الشكل الذي قد يبدو عليه الإخراج:

 What is your name? suman Hello, suman! Nice to meet you. 

في هذه الحالة، يقوم المستخدم بإدخال الاسم 'صمام' ، ويقوم البرنامج بطباعة رسالة ترحيب تتضمن أسمائهم.

خاتمة:

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

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