1 / 31

آرايه Array

آرايه Array. آرايه مجموعه ا ى از متغيرها ى از يك نوع است كه با يك نام مشترك تحت استفاده قرار م ى گيرند. يك عنصر بخصوص در يك آرايه با يك index ( انديس ) مورد دستياب ى قرار م ى گيرد. در C تمام عناصر آرايه از مكانها ى مجاور ( بهم چسبيده ) حافظه تشكيل م ى گردند .

Download Presentation

آرايه Array

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. آرايه Array آرايه مجموعه اى از متغيرهاى از يك نوع است كه با يك نام مشترك تحت استفاده قرار مى گيرند. يك عنصر بخصوص در يك آرايه با يك index ( انديس ) مورد دستيابى قرار مى گيرد. در C تمام عناصر آرايه از مكانهاى مجاور ( بهم چسبيده ) حافظه تشكيل مى گردند . كوچكترين آدرس ، آدرس عنصر اول است . بزرگترين آدرس متناظر آخرين عنصر است. آرايه ها مى توانند يك بعدى يا چند بعدى باشند . آرايه هاى يک بعدى فرم كلى آرايه يک بعدى به اين صورت است : type array-name[ size ] ; همان نوع پايه است كه نوع هر عنصر آرايه است . type اندازه ( size ) مى گويد آرايه چند عنصر درون خود خواهد داشت . انديس اولين عنصر هر آرايه ، صفر مى باشد .

  2. int x[10] ; مثال : اگر بگوييد x به عنوان يك آرايه با 10 عنصر معرفى شده لذا عناصرش مى باشد . x[0] , x[1] , x[2] , … , x[9] اگر x در حافظه از آدرس 1000 شروع شده باشد آنگاه : عنصر 0 1 2 3 4 5 6 7 آدرس 1000 1002 1004 1006 1008 1010 1012 1014 عنصر 8 9 آدرس 1016 1018

  3. مثال : #include <stdio.h> main( ) { int x[10] ; int t ; for ( t = 0 ; t < 10 ; ++t ) x[ t ] = t ; for ( t = 0 ; t < 10 ; ++t ) printf(“x[%d]= %d\n”,t, x[t]); }

  4. كل اندازه آرايه از فرمول زير بدست مى آيد : sizeof(type) * length of array total bytes = مثال : char interest[10] ; 1 x 10 = 10 مثال : int id[4] ; 2 x 4 = 8

  5. #include <stdio.h> #include <conio.h> main() { int x[10], num ; clrscr(); printf("size of int is %d \n", sizeof(int)); printf("size of float is %d \n", sizeof(float)); printf("size of double is %d \n", sizeof(double)); printf("size of long double is %d \n", sizeof(long double)); printf("size of long int is %d \n", sizeof(long int)); printf("size of num is %d \n\n", sizeof(num)); printf("size of x is %d \n\n", sizeof(x) ); } مثال : Sizeof1.C برنامه نتيجه اجرا size of int is 2 size of float is 4 size of double is 8 size of long double is 10 size of long int is 4 size of num is 2 size of x is 20 size of int is 2

  6. y[0] X[0] + y[0] X[0] y[1] X[1] + y[1] X[1] x y x + y y[8] X[8] + y[8] X[8]

  7. #define MAX 100 #include <stdio.h> #include <conio.h> برنامه جمع دو بردار main() { /* sum of two vectors */ int i , n; double x[MAX] , y[MAX] ; printf(“ n ? \n”); scanf(“%d”, &n) ; printf(“please enter the values of the first vector:\n”) ; for (i = 0 ; i < n ; i++ ) { printf(“x[%d] ? \t “ , i ) ; scanf(“%lf” , &x[i]) ; } printf(“please enter the values of the second vector:\n”) ; for (i = 0 ; i < n ; i++ ) { printf(“y[%d] ? \t “ , i ) ; scanf(“%lf” , &y[i]) ; }

  8. for (i = 0 ; i < n ; i++ ) printf(“sum[%d] = %.0f \n” , i , x[i] + y[i] ) ; }

  9. #include <ctype.h> toupper(ch) = معادل بزرگ ch اگر ch يك حرف كوچك باشد در غير اينصورت ch

  10. #include <ctype.h> tolower(ch) = معادل كوچكch اگر ch يك حرف بزرگ باشد در غير اينصورت ch

  11. #define MAX 100 #include <ctype.h> #include <dos.h> #include <stdio.h> #include <conio.h> main() { /* sum of two vectors */ int i , n , cyesno ; double x[MAX] , y[MAX] ;

  12. for(cyesno = 'Y' ; cyesno == 'Y' ; ) { clrscr(); printf(" n ? \n"); scanf("%d", &n) ; printf("please enter the values of the first vector:\n") ; for (i = 0 ; i < n ; i++ ) { printf("x[%d] ? \t " , i ) ; scanf("%lf" , &x[i]) ; } printf("please enter the values of the second vector:\n") ; for (i = 0 ; i < n ; i++ ) { printf("y[%d] ? \t " , i ) ; scanf("%lf" , &y[i]) ; } for (i = 0 ; i < n ; i++ ) printf("sum[%d] = %.0f \n" , i , x[i] + y[i] ) ; printf("do you want to sum other vectors ? Y/N\t"); cyesno = toupper(getche()); } }

  13. آرايه هاى داراى ابعاد بالاتر : type array-name [ size1 ] [ size2 ] …. [size n ] ; مثال : a00 a01 a02 int a[2][3] ; a10 a11 a12 int b[2][2] ; b00 b01 مثال : b10 b11

  14. در زبان C ماتريس دو بعدى در حافظه بصورت سطرى نگهدارى مى شود : نكته : a00 a01 a02 a10 a11 a12 برنامه محاسبه جمع دو ماتريس : مثال : #include <stdio.h> #define MAX 100 main ( ) { int m , n , i , j ; double a[MAX][MAX] , b[MAX][MAX] ;

  15. 1- شروع 2- m را از ورودي دريافت كن 3- n را از ورودي دريافت كن 4- مقادير ماتريس اول ( A ) را از ورودي دريافت كن 5- مقادير ماتريس دوم ( B ) را از ورودي دريافت كن 6- مقادير ماتريسهاي A و B را با هم جمع و چاپ كن 7- پايان

  16. printf ( “ number of rows of matrices : m ?\t “ ) ; scanf(“%d” , &m ) ; printf ( “ number of columns of matrices : n ?\t “ ) ; scanf(“%d” , &n ) ; printf(“ Enter aij \‘s members of the first matrix :A \n”) ; for ( i = 0 ; i < m ; i++ ) for ( j = 0 ; j < n ; j++ ) { printf( “ a[%d][%d] ? \t” , i , j ) ; scanf( “%lf” , &a[i][j] ) ; } printf(“ Enter bij \‘s members of the second matrix :B \n”) ; for ( i = 0 ; i < m ; i++ ) for ( j = 0 ; j < n ; j++ ) { printf( “ b[%d][%d] ? \t” , i , j ) ; scanf( “%lf” , &b[i][j] ) ; }

  17. for ( i = 0 ; i < m ; i++ ) for ( j = 0 ; j < n ; j++ ) printf( “ sum[%d][%d] = %lf\n” , i , j , a[i][j] + b[i][j] ) ; }

  18. انواع خطاهاKinds of Errors 1- Syntax error خطاى نحوى 2- linker error خطاى اتصال دهنده 3- Run-time error خطاى زمان اجرا 4- Logical error خطاى منطقى Maintance Debugرفع اشكال Support Bug اشكال Moduleبسته ، تكه

  19. تابع function آرايه Array خيلي خيلي خيلي مهم خيلي خيلي مهم

  20. به п پارامتر واقعي تابع مي گويندActual parameter تابعFunction п 0 sin به x يا t پارامتر ظاهري تابع مي گويندFormal parameter return f(x) = sin(x) ضابطه Function عملكرد x x2 f f(x) = x2 f(t) = t2

  21. sin sqrt(4) √4 cos square root log10(100) 2 tan return value مقدار بازگشتي asin acos atan atan2(y,x) cast

  22. 2 5 2 * 2 * 2 * 2 * 2 5 basenbase * base * base … * base n

  23. #include <math.h> #include <stdio.h> main() { int n; do { scanf(“%d” , &n); if( n < 0 ) printf(“Enter a positive integer number: ”); } while( n < 0 ) printf(“%lf” , sqrt( (double) n); }

  24. تابعFunction #include <stdio.h> int power( int , int); /* test power function */ main( ) { int i ; for ( i = 0 ; i < 10 ; i++ ) printf(“%d %d %d\n” , i , power(2 , i) , power(-3 , i) ); return 0 ; } تابع توان مثال : Function Call فراخوانى تابع insert mode

  25. /* power : raise base to n-th power ; n >= 0 */ int power (int base , int n ) { int i , p; for ( p = 1 , i = 1 ; i <= n ; ++i ) p = p * base ; n = 20; return p; } double sqrt(double x)

  26. تعريف تابع : return-type function-name(parameter declaration,if any) { declarations statements }

  27. Actual parameters َ پارامترهاى واقعىarguments آرگومان Formal parameters پارامترهاى رسمىparameter Call by value فراخوانى توسط مقدار

  28. pow(x , y) function prototype نمونه اوليه math.h Mathematics #include <math.h> 2 ** 3 2 ^ 3

  29. Character Ascii Code 0 48 ‘0’ 1 49 ‘1’ 2 50 9 57 ‘9’

  30. #include <stdio.h> /* count digits, White space, others */ main( ) { int c , i , nwhite, nother ; int ndigit[10] ; nwhite = nother = 0 ; for ( i= 0; i < 10 ; ++i ) ndigit[ i ] = 0 ;

  31. while ( ( c = getchar() ) != EOF ) if ( c >= ‘0’ && c <= ‘9’ ) ++ndigit[ c – ‘0’ ] ; else if ( c == ‘ ‘ || c== ‘\n’ || c== ‘\t’ ) ++nwhite ; else ++nother ; printf(”digits = “ ) ; for ( i = 0 ; i < 10 ; ++i ) printf(“ %d” , ndigit[ i ] ); printf( “ , white space = %d , other = %d\n” , nwhite , nother ) ; }

More Related