السلام عليكم ورحمة الله وبركاته ....
بسم الله الرحن الرحيم
اخواني الاعزاء هذا موضوعي الاول في منتدى البرمجة بلغة سي وانا تقريبا جديد على هذه اللغة بعد انتقالي اليها من ال VB6 ..
في هذا الموضوع المتواضع شرح للدوال باسلوب ان شاء الله بسيط للمبتدئين امثالي بهذه اللغة القوية والمميزة جدا .
للدوال فائدة كبيرة في عالم البرمجة حيث أنها تسهم في تسهيل وترتيب البرامج وخصوصا البرامج الكبيرة كما انها تغنيك عن اعادة كتابة الاكواد اذا كان الكود تحتاجة عدة مرات في برنامج فكل ما عليك هو كتابة هذا الكود داخل دالة ثم تقوم باستدعاء هذه الدالة متى ما تحتاجها وليس هذا فقط لنفرض أنك اكتشفت خطأ ما في برنامجك أو اردت تطوير برنامج فكل ما تحتاجه هو تعديل الكود الموجود داخل الدالة فقط ...
الصيغة العامة لكابة الدالة في لغة C هي :
Function_Type Function_Name ( Parametrrs )
{
Statement 1;
Statement 2;
Statement 3;
.
.
.
Statement n
}Function_Type: هو نوع الدالة وبالاحرى نوع الارجاع لهذه الدالة ....
وأقصد بالارجاع هو القيمة التي ستعطيني اياها الدالة
Function_Name : اسم الدالة وتتنطبق عليه نفس الشروط التي يجب مراعتها في تسمية المتغيرات ...
Parameters : هي المتغيرات التي سنرسلها للدالة لتقوم الدالة بمعالجتها .....
وسنقوم الان بكتابة اول دالة وهذه الدالة متى ما سيتم استدعاءها ستقوم بطباعة اسمي وعنواني على الشاشة
#include <stdio.h>
void print_title ( void )
{
printf ("\nOmar Zyad");
printf("\nIraq - Mosul");
}في الدالة ستلاحظ كلمة void وهذه الكلمة معناها خالي أي ان هذه الدالة لن تقوم بارسال أي قيمة ولن نقوم نحن بارسال أي قيمة اليها لانها فقط تقوم بعملية طباعة ..
ومن المثال التالي سنتعلم كيفية استخدام الدالة السابقة في برامجنا
#include <stdio.h>
void print_title ()
{
printf ("\nOmar Zyad");
printf("\nIraq - Mosul");
}
void main ()
{
print_title ();
}أي بمجرد كتابة اسم الدالة سيتم استدعائها ولكن نلاحظ في المثال السابق أنه يجب كتابة الدالة قبل البرنامج الرئيسي ولكن يمكن كتابتها قبلها على شرط كتابة السطر التالي قبل البرنامج الرئيسي :
Function_Type Function_Name ( Parametrrs )
أي يمكن كتابة البرنامج السابق بالطريقة التالية :
#include <stdio.h>
void print_title ( )
void main ()
{
print_title ();
}
void print_title ()
{
printf ("\nOmar Zyad");
printf("\nIraq - Mosul");
}وفي هذا المثال سوف نتعلم كيفية ارسال البيانات الى الدالة وكيفية معالجة هذه البيانات
سنقوم في هذا المثال بكتابة دالة نقوم بارسال متغير من نوع int وقوم بطباعة هذا المتغير ولكن في نظام ال Hexadecimal:
#include <stdio.h>
void hxea( int x )
void main ()
{
int x;
printf ("\nPlease Enter Any number to convert it to Hexadecimal:");
scanf ("%d" , &x);
hexa(x);
}
void hexa ( int x)
{
printf ("\n%x" , x);
}نلاحظ في المثال السابق اننا عرفنا متغير بنفس الاسم في نفس البرنامج ولم يؤثر على البرنامج أو بعبارة أخرى ان المتغيرات داخل الدوال هي متغيرات خاصة بتلك الدالة أي تتكون عند استدعاء الدالة الموجودة فيها وتمسح عند الخروج من تلك الدالة ..
في المثال التالي سنتعلم كيفية ارسال البيانات من الدالة الى ال main program او دالة البرنامج الرئيسية
سنكتب دالة نقوم نحن بارسال لها متغير نوع int وتقوم هذه الدالة باختبار هذا الرقم فاذا كان أولي تقوم بارسال الرقم واحد اما اذا لم يكن اولي فستقوم هذه الدالة بارسال الرقم 0 ..
#include <stdio.h>
int prime ( int x)
{
for ( int i=x-1; i>=2; i--)
if (x%i==0) return (0);
return(1);
}
void main ()
{
Int x , c;
printf ("\nPlease Enter Any number:");
scanf ("%d" , &x);
c=prime(x);
if ( c==1) printf("\n%d is prime integer",x);
else printf("\n%d is non-prime integer" , x);
}نلاحظ من المثال السابق انا يمكننا ارسال اي قيمة من الدالة بواسطة الكلمة المحجوزة return ونلاحظ ايضا انه بعملية الارسال هذه يتوقف عمل الدالة اي انه لا يمكن عمل ارسال لأ كثر من قيمة في نفس الوقت ..
وفي النهاية ارجو قد وفقت ولو في تقديم صورة بسيطة عن هذا الموضوع راجيا القائدة للجميع ...
تقبلوا تحياتي