سفارش تبلیغ
موسسه تبیان
آموزش برنامه نویسی مبتدی ...... انواع متغییر ها از نظر اعتبار - آموزش برنامه نویسی مبتدی برای دانشجویان


22/6/88
12:35 صبح

آموزش برنامه نویسی مبتدی ...... انواع متغییر ها از نظر اعتبار

بدست hsanali lotfi در دسته

<!-- /* Font Definitions */ @font-face {font-family:Badr; panose-1:0 0 4 0 0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; font-size:14.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt;} div.Section1 {page:Section1;} -->

 


انواع متغییر ها از نظر اعتبار :


1- محلی(local) :این نوع از متغییر ها را در داخل زیر برنامه ها تعریف می کنند و فقط در همان زیر برنامه ها اعتبار دارند .


2- سراسری (global) : این نوع از متغییرها را در ابتدای برنامه و قبل از همه توابع تعریف و پیاده سازی می کنند که امکان استفاده از آن ها در کلیه زیر برنامه ها وجود دارد.


استفاده از متغییر های سراسری :


دارای اثرات جانبی می باشد و به همین دلیل تا حد امکان از آن ها استفاده نمی کنیم .


اثرات جانبی بدین معنی است که اگر مقدار متغییر سراسری به نادرستی تغییر کند بخش های بعدی برنامه در صورت استفاده از آن نتایجش اشتباه خواهد بود .


زیربرنامه های بازگشتی (recursive) :


زیر برنامه هایی را گویند که خود را فراخوانی می کنند.


مسایلی را به صورت بازگشتی پیاده سازی می کنند که یا ماهیت بازگشتی داشته باشتند مانند فاکتوریل و فیبوناچی یا از ساختمان داده های غیر خطی استفاده می نماید.


ــ برای نوشتن یک تابع بازگشتی ابتدا مسأله را بامثال های عددی بررسی می کنیم سپس دو رابطه زیر را روی آن ها تعیین می کنیم .


1- رابطه بازگشتی : رابطه ای که طبق آن زیر برنامه خود را فراخوانی می کند .


2- نقطه توقف : مرحله که فراخوانی در آن توقف می کند .


مثال : بدست آوردن فاکتوریل عدد n :


!4 = !3 * 4


!3 = !2 * 3            رابطه بازگشتی                    n! = (n)(n-1)!        :رابطه کلی


!2 = !1 * 2                           


!1 = !0 * 1                                                  n = 0             n! = 1           : نقطه توقف 


!0 = 1             نقطه توقف     


پس از بدست آوردن دو رابطه مورد نظر کافیست با استفاده از دستورif – else زیر برنامه را پیاده سازی کنیم .


int   fact (int n)


 {


     if (n == 0)


          return 1 ;


     else


           return   n*fact(n-1) ;


   }


مثال : فرض کنید صرفاً امکان جمع و تفریق با یک وجود دارد زیر برنامه بازگشتی بنویسید که دو عدد صحیح مثبت را با یکدیگر جمع کند :


3+5  = ?        : فرض                          int s (int n , int m );


s (5,3) = 1 + s (5 , 3-1)                     {


s (5,2) = 1 + s (5 , 2-1)                        if ( m==0)


s (5,1) = 1 + s (5, 1-1)                                 return m ;


s (5,0) =1     : نقطه توقف                         else


                                                                     return (1+ s(n , m-1)) ;


                                                            }


توجــه : اگر زیر برنامه ها را بعد از main بنویسیم error  می دهد و باید پیش از تعریف بیاوریم.


مثال30) برنامه ای به صورت بازگشتی بنویسید که سری فیبوناچی را چاپ کند .


# include <stdio.h>


# include <conio.h>


 Int fibo(int);


Int main ( )


{


 Int n,I ;


 Printf("enter any no \n");


 Scanf( "%d",&n);


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


 Printf("\n %d , fibo(i));


 Getch ( );


 Return 0 ;


}


 Int fibo(int n);


   {


      If (n<=2)


      Return(1);


      Return(fibo(n-1)+fibo(n-2)); 


   }