البرمجة بلغة C/ف5:الدوال

من ويكي الجامعة, مركز التعليم الحر

المفهوم[عدل]

  • كتلة من النصوص البرمجية، تستدعى باسمها.
  • لن نحتاج لكتابة الأوامر البرمجية سوى مرة واحدة.
  • مجموعة من المدخلات (قد تكون بلا مدخلات)، بخرج وحيد أو بدون.
  • من الممكن أن تكون بلا خرج عندها يكون النوع (type void)
  • main هو دالة! المدخلات: لا يوجد،
الخرج: int (return0 !)
  • يمكن كتابة الدِّوال:
  1. قبل الدالة الرئيسة main!
  2. بعد الدالة الرئيسة 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);}
                     }