انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة

البرامج الفرعي2

Share |
الكلية كلية العلوم للبنات     القسم قسم الحاسبات     المرحلة 1
أستاذ المادة احمد بدري مسلم الغزالي       6/1/2011 6:24:36 AM

مثال : اكتب برنامج يجمع عددين باستخدام الدوال الفرعية ؟

 

#include <iostream.h>

 

int  sum( int  a , int b)

 

{

 

   int  c ;

 

   c=a+b;

 

   return  c;

 

}

 

 

 

void main( )

 

{

 

   int  x , y, z;

 

   cout <<”Enter two integer values” ;

 

   cin>>x >> y;

 

   z=sum(x,y);      --------->           استدعاء الدالة

 

   cout<<”sum=”<<z <<endl;

 

}

 

 

ملاحظات :

 

1- القيمة الراجعة هي أي شيء ممكن أن يؤدي الى قيمة , أي في الدالة يمكن إرجاع التعبير a+b  بصورة مباشرة بدون استخدام متغير وسطي , أي   return a+b ;    .

 

2- أيضا يمكن استخدام الدالة بصورة مباشرة أي بدون المتغير الوسطي في استدعائها , مثلا يمكن طباعة قيمة الدالة مباشرة كالتالي :                 cout<<”sum=”<<sum(x,y) ;

 

انواع المتغيرات :

 

يوجد ثلاث أنواع من المتغيرات في لغة C++ :

 

1-المتغيرات العالمية  Global variables : وهي المتغيرات التي تعرف خارج الدوال الفرعية والدالة الرئيسية main . تتميز هذه الدوال بأنها تكون معروفة (يمكن استخدامها) في أي جزء من أجزاء البرنامج .

 

2-المتغيرات المحلية  Local variables : وهي المتغيرات التي تكون معروفة فقط ضمن الدالة المعرفة بداخلها ولا تكون معرفة في باقي أجزاء البرنامج . هذه المتغيرات تخلق في الذاكرة عندما يكون مجرى تنفيذ البرنامج داخل الدالة المحتوية على تلك المتغيرات , وعندما  يتم الخروج من الدالة تلغا هذه المتغيرات من الذاكرة . مثل المثغير c في المثال السابق .

 

3-المتغيرات الرسمية  formal variables  : وهي المتغيرات المعرفة في  رأس الدالة الفرعية وهي تعتبر من المتغيرات المحلية أيضاً . مثل المتغيران a,b  في المثال السابق .

 

مثال : اكتب برنامج يحسب الدالة  F(X,Y,Z)=  باستخدام الدوال الفرعية ؟

 

#include <iostream.h>

 

int power(int a , int b)

 

{

 

  int i , p=1;

 

  for(i=1; i<=b ; i++)

 

    p=p*a;

 

  return p;

 

}

 

int factorial (int a)

 

{

 

  int i, p=1;

 

  for(i=1; i<=a ; i++)

 

      p=p*i ;

 

  return p;

 

}

 

void  main( )

 

{

 

  int  x, n ,y,m, z,w ;      float f;

 

  cin>>x>>n>>y>>m>>z>>w ;

 

 f=(float) (power(x,n)+power(y,m)+power(z,w)) / ((3*factorial(x)- actorial(z))+1));

 

cout<<”f=”<<f ;

 

}

 

مثال :  اكتب برنامج يحسب  المتسلسلة التالية :

 

 

 

بحيث تقرأ المتغيرات في الدالة الرئيسية  وتحسب قيمة كل حد من المتسلسلة في دالة فرعية  وطباعة النتيجة النهائية للمتسلسلة في الدالة الرئيسية ؟

 

#include<iostream.h>

 

int pow(int x , int m)

 

 {

 

   int p=1, i;

 

   for(i=1 ; i<=m ; i++)

 

         p*=x;

 

  return p;

 

}

 

void main()

 

{

 

   int i , y=0, z ,n;

 

   cin>>z>>n;

 

    for(i=0 ; i<=n; i++)

 

     y=y + pow(z , i);

 

Cout<<”Y=”<<y;

 

}

 

 

 

 

H.W :

 

1- اكتب برنامج بقراء ثلاث أعداد في الدالة الرئيسية ومن ثم يحسب المعدل لتلك الأعداد في  دالة فرعية ترجع المعدل للدالة الرئيسية للطباعة .

 

2-اكتب برنامج يقرأ عدد في الدالة الرئيسية ومن إرسال هذا العدد إلى دالة  للاختبار العدد إذا

 

    كان أولي أو لا .

 

 

3- اكتب برنامج يحسب  المتسلسلة التالية :

 

Y=1+

 

بحيث تقرأ المتغيرات في الدالة الرئيسية  وتحسب قيمة كل حد من المتسلسلة في دالة فرعية  وطباعة النتيجة النهائية للمتسلسلة في الدالة الرئيسية ؟

 

 


المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .
الرجوع الى لوحة التحكم