310 likes | 418 Views
آرايه Array. آرايه مجموعه ا ى از متغيرها ى از يك نوع است كه با يك نام مشترك تحت استفاده قرار م ى گيرند. يك عنصر بخصوص در يك آرايه با يك index ( انديس ) مورد دستياب ى قرار م ى گيرد. در C تمام عناصر آرايه از مكانها ى مجاور ( بهم چسبيده ) حافظه تشكيل م ى گردند .
E N D
آرايه Array آرايه مجموعه اى از متغيرهاى از يك نوع است كه با يك نام مشترك تحت استفاده قرار مى گيرند. يك عنصر بخصوص در يك آرايه با يك index ( انديس ) مورد دستيابى قرار مى گيرد. در C تمام عناصر آرايه از مكانهاى مجاور ( بهم چسبيده ) حافظه تشكيل مى گردند . كوچكترين آدرس ، آدرس عنصر اول است . بزرگترين آدرس متناظر آخرين عنصر است. آرايه ها مى توانند يك بعدى يا چند بعدى باشند . آرايه هاى يک بعدى فرم كلى آرايه يک بعدى به اين صورت است : type array-name[ size ] ; همان نوع پايه است كه نوع هر عنصر آرايه است . type اندازه ( size ) مى گويد آرايه چند عنصر درون خود خواهد داشت . انديس اولين عنصر هر آرايه ، صفر مى باشد .
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
مثال : #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]); }
كل اندازه آرايه از فرمول زير بدست مى آيد : sizeof(type) * length of array total bytes = مثال : char interest[10] ; 1 x 10 = 10 مثال : int id[4] ; 2 x 4 = 8
#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
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]
#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]) ; }
for (i = 0 ; i < n ; i++ ) printf(“sum[%d] = %.0f \n” , i , x[i] + y[i] ) ; }
#include <ctype.h> toupper(ch) = معادل بزرگ ch اگر ch يك حرف كوچك باشد در غير اينصورت ch
#include <ctype.h> tolower(ch) = معادل كوچكch اگر ch يك حرف بزرگ باشد در غير اينصورت ch
#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] ;
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()); } }
آرايه هاى داراى ابعاد بالاتر : 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
در زبان 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] ;
1- شروع 2- m را از ورودي دريافت كن 3- n را از ورودي دريافت كن 4- مقادير ماتريس اول ( A ) را از ورودي دريافت كن 5- مقادير ماتريس دوم ( B ) را از ورودي دريافت كن 6- مقادير ماتريسهاي A و B را با هم جمع و چاپ كن 7- پايان
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] ) ; }
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] ) ; }
انواع خطاهاKinds of Errors 1- Syntax error خطاى نحوى 2- linker error خطاى اتصال دهنده 3- Run-time error خطاى زمان اجرا 4- Logical error خطاى منطقى Maintance Debugرفع اشكال Support Bug اشكال Moduleبسته ، تكه
تابع function آرايه Array خيلي خيلي خيلي مهم خيلي خيلي مهم
به п پارامتر واقعي تابع مي گويندActual parameter تابعFunction п 0 sin به x يا t پارامتر ظاهري تابع مي گويندFormal parameter return f(x) = sin(x) ضابطه Function عملكرد x x2 f f(x) = x2 f(t) = t2
sin sqrt(4) √4 cos square root log10(100) 2 tan return value مقدار بازگشتي asin acos atan atan2(y,x) cast
2 5 2 * 2 * 2 * 2 * 2 5 basenbase * base * base … * base n
#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); }
تابع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
/* 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)
تعريف تابع : return-type function-name(parameter declaration,if any) { declarations statements }
Actual parameters َ پارامترهاى واقعىarguments آرگومان Formal parameters پارامترهاى رسمىparameter Call by value فراخوانى توسط مقدار
pow(x , y) function prototype نمونه اوليه math.h Mathematics #include <math.h> 2 ** 3 2 ^ 3
Character Ascii Code 0 48 ‘0’ 1 49 ‘1’ 2 50 9 57 ‘9’
#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 ;
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 ) ; }