البرمجة بلغة C/ف5:الدوال
المفهوم
عدل- كتلة من النصوص البرمجية، تستدعى باسمها.
- لن نحتاج لكتابة الأوامر البرمجية سوى مرة واحدة.
- مجموعة من المدخلات (قد تكون بلا مدخلات)، بخرج وحيد أو بدون.
- من الممكن أن تكون بلا خرج عندها يكون النوع (type void)
- main هو دالة! المدخلات: لا يوجد،
- الخرج: int (return0 !)
- يمكن كتابة الدِّوال:
- قبل الدالة الرئيسة main!
- بعد الدالة الرئيسة main، لكن يجب التصريح عنها قبل الدالة الرئيسة.
الطريقة الأولى | الطريقة الثانية |
---|---|
void fon1(){
-----
-----
}
int main (){
-----
fon1();
-----
return 0;
}
|
void fon2();
int main (){
-----
fon2();
-----
return 0;
}
void fon2(){
-----
-----
}
|
أمثلة
عدل- مثال 1
- التصريح والتعريف قبل الدالة الرئيسة main (الدالة 1)
- التصريح قبل الدالة الرئيسة main والتعريف بعدها.(الدالة 2)
#include <stdio.h>
void fon1(){
printf("Avant main\n");
}
void fon2();
int main (){
fon1();
fon2();
return 0;
}
void fon2 (){
printf("Apres main\n");
}
- مثال 2
- دالَّتان: واحدة للعثور على الحد الأعلى والثانية للعثور على الحد الأدنى بين رقمين تم إدخالهما.
الدالة main | الدالتان min & max |
---|---|
int main (){
int maxi, mini, x, y;
printf("Enter two different numbers:\n");
scanf("%d %d", &x, &y);
maxi= max(x,y);
mini= min(x,y);
printf(" the maximum is: %d, the minimum is : %d", maxi, mini);
return 0;
}
|
int max(int x1, int x2){
if(x1>x2)
{return x1;}
else
{return x2;}
}
int min(int x1, int x2){
if(x1<x2)
{return x1;}
else
{return x2;}
}
|
العودية
عدل- حالة خاصة: إعادة الدالّة استدعاء ذاتها.
- يلزم أن تكون هناك قيمة ثابتة تُرجع في نهاية السلسلة.
- احذر من استهلاك الذاكرة.
- مثال
دالة لحساب ناتج ضرب عدد تكراريًا.
الدالة main | الدالة factorial |
---|---|
int main (){
int result1, N;
printf("Enter a number\n");
scanf("%d", &N);
result1 = factorial(N);
printf("%d!= %d", N, result1);
return 0;
}
|
int factorial(int a){
if(a == 1)
{return 1;}
else
{return a*factorial(a-1);}
}
|