البرمجة بلغة السى – الجزء الثالث – 3- أنواع الدوال المعرفة بمعرفة المستخدم

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

البرمجة بلغة السى – الجزء الثالث – 3- أنواع الدوال المعرفة بمعرفة المستخدم

مُساهمة من طرف Admin في السبت فبراير 01, 2014 12:06 pm

البرمجة بلغة السى – الجزء الثالث – 3- أنواع الدوال المعرفة بمعرفة المستخدم

لفهم الأدلة وعائد الدالة بشكل أفضل ، يمكن تصنيف الدوال المعرفة بمعرفة المستخدم كما يلى :
1- دالة بدون أدلة وبدون قيمة عائد .
2- دالة بدون أدلة وبفيمة عائد .
3- دالة بأدلة ولكن بدون قيمة عائد
4- دالة بأدلة وبقيمة عائد .
دعنا نأخذ مثال لإيجاد ما إذا كان اارقم أساسى أو لا باستخدام الأربعة تصنيفات للدوال المعرفة بمعرفة المستخدم :

دالة بدون أدلة وبدون قيمة عائد :


الكود:


/*C program to check whether a number entered by user is prime or not using function with no arguments and no return value*/
#include <stdio.h>
void prime();
int main(){
    prime();      //No argument is passed to prime().
    return 0;
}
void prime(){ 
/* There is no return value to calling function main(). Hence, return type of prime() is void */
    int num,i,flag=0;
    printf("Enter positive integer enter to check:\n");
    scanf("%d",&num);
    for(i=2;i<=num/2;++i){
        if(num%i==0){
            flag=1;
        }
    }
    if (flag==1)
        printf("%d is not prime",num);
    else
      printf("%d is prime",num); 
    }


الدالة prime() تستخدم لسؤال المستخدم عن الدخل ، واختبار ما إذا كان هذا الدخل أساسى أو لا وعرضه وفقا لذلك . لا يوجد أدلة لتمريرها ولا يوجد عائد من الدالة prime() .

الدالة بدون أدلة ولكن بقيمة عائد :


الكود:


/*C program to check whether a number entered by user is prime or not using function with no arguments but having return value */
#include <stdio.h>
int input();
int main(){
    int num,i,flag;
    num=input();    /* No argument is passed to input() */
    for(i=2,flag=i;i<=num/2;++i,flag=i){
    if(num%i==0){
        printf("%d is not prime",num);
        ++flag;
        break;
    }
    }
    if(flag==i)
        printf("%d is prime",num);
    return 0;
}
int input(){  /* Integer value is returned from input() to calling function */
    int n;
    printf("Enter positive enter to check:\n");
    scanf("%d",&n);
    return n;
}



لا يوجد أدلة لتمريرها للدالة input() ولكن قيمة n يتم إعادتها (إرجاعها) من الدالة input() للدالة الرئيسية main() .

الدالة بأدلة وبقيمة عائد :

الكود:


/*Program to check whether a number entered by user is prime or not using function with arguments and no return value */
#include <stdio.h>
void check_display(int n);
int main(){
    int num;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    check_display(num);  /* Argument num is passed to function. */
    return 0;
}
void check_display(int n){   
/* There is no return value to calling function. Hence, return type of function is void. */
    int i,flag;
    for(i=2,flag=i;i<=n/2;++i,flag=i){
    if(n%i==0){
        printf("%d is not prime",n);
        ++flag;
        break;
    }
    }
    if(flag==i)
        printf("%d is prime",n);
}



هنا الدالة "اختبار العرض" check_display() تستخدم لاختبار ما إذا كان n أساسى أو لا وعرضه وفقا لذلك . هنا يتم تمرير الدليل إلى الدالة المعرفة بمعرفة المستخدم ولكن لا يتم إعادة (إرجاع) قيمة من هذه الدالة إلى الدالة التى استدعتها .

الدالة بأدلة وبقيمة عائد :


الكود:


/* Program to check whether a number entered by user is prime or not using function with argument and return value */
#include <stdio.h>
int check(int n);
int main(){
    int num,num_check=0;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    num_check=check(num); /* Argument num is passed to check() function. */
    if(num_check==1)
      printf("%d in not prime",num);
    else
      printf("%d is prime",num);
    return 0;
}
int check(int n){ 
/* Integer value is returned from function check() */
    int i;
    for(i=2;i<=n/2;++i){
    if(n%i==0)
        return 1;
}
  return 0;
}


هنا ، الدالة check() تستخدم لاختبار ما إذا كان العدد أساسى أو لا . فى هذا البرنامج ، الدخل من المستخدم يمرر إلى الدالة check() ويتم إعادة (إرجاع) قيمة عدد صحيح منها . إذا كان العدد المدخل أساسى يتم إرجاع صفر (0) وإذا لم يكن العدد أساسى يتم إرجاع واحد (1) .

Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى