ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

جلسة پنجم-for الگوریتم اجرای ساختارهای تکرار درزبان C

<!-- /* Font Definitions */ @font-face {font-family:Mitra; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.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; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1141073076; mso-list-type:hybrid; mso-list-template-ids:1345220426 -221343552 -1501950600 98082392 418444462 1666609154 2107784108 -1326031332 -478909640 -787948480;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l1 {mso-list-id:1373727545; mso-list-type:hybrid; mso-list-template-ids:1460695674 786484538 -856413172 720657654 -483374802 -989937016 -2099080490 -2053351590 -2143156132 462323684;} @list l1:level1 {mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt;} @list l2 {mso-list-id:1933783586; mso-list-type:hybrid; mso-list-template-ids:227053648 -661904198 1568938938 832591600 -833592872 671930542 313938506 1359483562 1264353044 -1774918544;} @list l2:level1 {mso-level-start-at:2; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

C  ساختارهای تکرار درزبان  جلسة پنجم

 

for

while

do ... while

 

 

حلقة for

 

C یکی از قویترین و کاملترین دستورات

 

در تمامی کاربردهای حلقه می‌تواند بکار رود

 

for ( مقدار دهی اولیه ; شرط حلقه ; گام حرکت )

{

                        دستورات

                        ...

}

 

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

 

 

 

 

 

for الگوریتم اجرای

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

 

 

مثال:

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

{

                        scanf (“%d” , &num) ;

                        sum = sum + num ;

}

 

نکات

هر یک از 3 قسمت فوق اختیاری هستند.

for ( ; ; )

{

                        ...

}

 

قسمتهای مقدار دهی اولیه و گام حرکت می‌توانند شامل چندین دستور باشند که با

,

از یکدیگر جدا می‌شوند.

مثال:

for ( i = 0 , sum = 0 ; i < 20 ; i ++ , j -- )

{

                        sum = sum + i + j ;

                        printf (“%d” , sum) ;

}

 

مثال:

for  ( i = 10 , j = 0 ;

                          (i > 0) && (j <=20) ;

                          i -- , j ++)

                                    printf (“%d , “ , i + j) ;

 

حلقة while

while  ( شرط حلقه )

{

                        دستورات

                        ...

}

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

مثال:

int  sum = 0 , i = 0 ;

while  ( i != -1 )

{

                        sum = sum + i ;

                        scanf (“%d” , &i) ;

}

حلقة   do ... while

do {

                        دستورات

                        ...

}  while  (شرط حلقه  )

 

مثال:

do {

                        sum = sum + n ;

                        scanf (“%d” , &n) ;

}  while (n != -1)

 

مثال:

تبدیل حلقة while به for

 

for ( ; while شرط حلقة ; )

{

                        whileبدنة حلقة   

}

for به while (روش دیگر) تبدیل حلقة

 

 

for ( ; while شرط حلقة ; whileبدنة حلقة ) ;

 

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

جلسة ششم

 

 

 

 

 

توابع

( لیست پارامترها )     نام تابع     نوع خروجی تابع

{

                        دستورات

                        ...

}

 

int  factorial ( int n )

{

            int i , f ;

            for ( i = 1 , f = 1 ; i <= n ; i ++ )

                                    f = f * i ;

            return f ;

}

 

فراخوانی تابع

 

int  fact ;

fact = factorial ( 12 ) ;

 

 در صورتی که پارامتری نداشته باشد ذکر () الزامی است.

ret = f () ;

 

برای تابعی که خروجی ندارد از کلمة

void استفاده می‌شود.

 

void  f ( int i , float j )

                        ...

 

 

در برنامه همة توابع در یک سطح هستند به این معنی که در داخل یک تابع نمی‌توان تابع دیگری تعریف کرد.

نکاتی در مورد نوشتن توابع

         بدون پرداختن به جزئیات پیاده‌سازی، پارامترها و خروجی را طراحی کنید.

         تابع باید فقط به آنچه نیاز دارد دسترسی داشته باشد (Information hiding)

         برای ارتباط با تابع از پارامترها استفاده کنید.

 

پارامترهای تابع

Call by value :

تغییر پارامتر در داخل تابع تاثیری بر فراخواننده ندارد.

 

Call by reference :

تغییر پارامتر در داخل تابع بر فراخواننده تاثیر دارد.

 

 

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

 

 

C شکل کلی یک برنامة

include section

            Global Variables

 

 

.تابع1

.تابعn

.تابعmain

 

 

 

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

متغیرها

 

محدودة شناسایی متغیر ( Scope )

 

طول عمر متغیر ( Life time )

انواع متغیرها

  1. عمومی: خارج از توابع تعریف می‌شوند.

محدوده: از محل تعریف تا انتهای برنامه

طول عمر: از شروع اجرای برنامه تا پایان آن

 

انواع متغیرها

  1. محلی: در داخل یک تابع تعریف می‌شوند.

محدوده: در داخل تابعی که تعریف شده‌اند.

طول عمر: با شروع اجرای تابع، ایجاد و با پایان اجرای آن از بین می‌روند.

 

مسالة همنام بودن متغیرها

 

نزدیکترین تعریف در نظر گرفته می‌شود.

( ارجحیت تعریف محلی به عمومی )

 

مثال:

#incude  <stdio.h>

int  i , j ;

int  f1 ( int j )

{

            j = j + i ;

            return j * j ;

}

 

int  k ;

void  f2 ( void )

{

            int n ;

            scanf (“%d” , &n);

            j = f1 (n)  + k ;

}

 

void main ()

{

            int i ;

            for (i = 0 , k = 10 ; i < 10 ; i ++ )

            {

                  f2 () ;

                 printf (“j=%d” , j) ;

            }

}

 

متغیرهای استاتیک محلی

 

 ;نام متغیر    نوع متغیرstatic    

static  int  s ;

متغیرهای استاتیک محلی

طول عمر: با اولین اجرای تابع ایجاد شده و تا پایان اجرای برنامه باقی می‌مانند.

در نتیجه:

با خروج از تابع مقدار خود را حفظ می‌کنند

 

متغیرهای استاتیک محلی

 

فقط یک بار مقدار اولیه می‌گیرند.

static  int  s = 0 ;

 

متغیرهای استاتیک محلی

طول عمر: با اولین اجرای تابع ایجاد شده و تا پایان اجرای برنامه باقی می‌مانند.

در نتیجه: متغیرهای استاتیک محلی

 

فقط یک بار مقدار اولیه می‌گیرند.

static  int  s = 0 ;

 

mo-mah.perssianblog.ir

mohsen_mahyar@yahoo.com

 

   + MOHSEN GHASEMI - ٩:۳۳ ‎ق.ظ ; ۱۳۸٩/٦/۳