6 - آرایه ها

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

‫آرایه‌ها‬

‫نیمسال‌ دوم‌ ‪1400‬‬


‫علمدار‬
‫آرایه‌ها‌(‪)Arrays‬‬
‫‪ ‬آرایه‬
‫‪ -‬یک زنجیره از متغیرهای هم‌نوع که یک نام مشترک دارند‪.‬‬
‫‪ -‬به این متغیرها اعضای آرایه می‌گویند‪.‬‬
‫‪ -‬هر عضو با یک شماره (اندیس یا زیرنویس) مشخص می‌شود‪.‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬


‫‪a‬‬ ‫‪13‬‬ ‫‪19‬‬ ‫‪17‬‬ ‫‪15‬‬

‫]‪a[0‬‬ ‫]‪a[1‬‬ ‫]‪a[2‬‬ ‫]‪a[3‬‬

‫‪2‬‬
‫آرایه‌ها‌(‪)Arrays‬‬
‫‪ ‬نحوه اعالن و مقدار دهی آرایه‬
‫;]‪type name [size‬‬
‫‪ -‬مقداردهی اولیه یا با استفاده فهرست مقداردهی یا دسترسی به اعضا با اندیس‬
‫انجام می‌شود‪.‬‬
‫با‌دسترسی‌به‌اعضا‬ ‫با‌فهرست‌مقداردهی‬
‫مثال‪:‬‬
‫;]‪int a[3‬‬ ‫;}‪int a[3] = {1, 5, 2‬‬

‫;‪a[0] = 1‬‬ ‫یا‬

‫;‪a[1] = 5‬‬ ‫;}‪int a[ ] = {1, 5, 2‬‬

‫;‪a[2] = 2‬‬

‫‪3‬‬
sizeof‌‫دستور‬
sizeof ‫ دستور‬
.‫ اندازه آرگومان ارسالی را برحسب بایت برمی‌گرداند‬-
sizeof ‫ نحوه استفاده از دستور‬
sizeof(type or var)
:‫مثال‬
k1= sizeof(float); //4‌‫خروجی‬
k2= sizeof(char); //1‌‫خروجی‬
int a = 5;
k3 = sizeof(a); //4‌‫ یا‬2‌‫خروجی‬ 0 1 2
float b[3] = {2.22, 1.11, 3.33}; b 2.22 1.11 3.33
k4 = sizeof(b); //12‌‫خروجی‬
k5 = sizeof(b)/sizeof(float); //3‌‫خروجی‬ 4 byte
12 byte
4
‫آرایه‌ها‌(‪)Arrays‬‬
‫‪ ‬تخصیص آرایه‌ها به یکدیگر‬
‫;}‪int a[3] = {2, 6, 3‬‬
‫;}‪int b[3] = {5, 4, 0‬‬
‫‪b = a; //Error‬‬
‫‪ -‬تخصیص دو آرایه با حلقه ‪ for‬انجام می‌شود‪.‬‬
‫‪ ‬اندیس بیرون از حدود آرایه‬
‫)‪for(i = 0; i<=3; i++‬‬
‫;]‪cout<<a[i‬‬
‫‪ -‬خطا نمی‌دهد‪ ،‬دسترسی به سلول حافظه دقیقا بعد عضو آخر و برگرداندن زباله‪.‬‬

‫‪ ‬اثر همسایگی‬
‫‪ -‬استفاده از اندیس خارج از محدوده و تغییر یک متغیر دیگر به صورت ناخواسته‬
‫;}‪int a[3] = {2, 6, 3‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫;‪int c =142‬‬ ‫‪0‬‬
‫‪2‬‬ ‫‪6‬‬ ‫‪3‬‬ ‫‪142‬‬ ‫‪….‬‬
‫;‪a[3] = 0‬‬
‫‪a‬‬ ‫‪c‬‬
‫‪5‬‬
‫مثال‌آرایه‌ها‬
‫ دانشجو‬50‌‫‌برنامه‌محاسبه‌و‌چاپ‌معدل‌دو‌درس‬:‫مثال‬
int main()
{
const int SIZE = 50;
float grade1[SIZE], grade2[SIZE], avg[SIZE];
cout<<“Enter the grades of students:”;
for (int i = 0; i<Size; i++){
cout<<“Enter the grade of student ”<<i+1<<“:”;
cin>> grade1[i]>>grade2[i];
}
for (int i = 0; i<SIZE; i++){
avg[i] = (grade1[i] + grade2[i])/2;
cout<<“Student ”<<i+1<<“: g1 = ”<<grade1[i]<<“, g2 = ”<<grade2[i]
<<“ and avg = ”<<avg[i]<<endl;} //End of for
return 0;
}
6
‫ارسال‌آرایه‌به‌تابع‬
‫‪ ‬برای کار با آرایه‌ها در توابع حداقل ‪ 3‬مشخصه باید ارسال شود‪:‬‬
‫‪ -‬آدرس اولین خانه (عضو) از آرایه‬
‫‪ -‬تعداد عناصر آرایه‬
‫‪ -‬نوع آرایه‬

‫‪ ‬آدرس اعضای آرایه‪:‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪ -‬آدرس اولین خانه از آرایه‪a :‬‬
‫‪a‬‬ ‫‪2.22‬‬ ‫‪1.11‬‬ ‫‪3.33‬‬
‫‪ -‬آدرس دومین خانه از آرایه‪a + 4 :‬‬
‫‪4 byte‬‬ ‫‪ -‬آدرس سومین خانه از آرایه‪a + 8 :‬‬
‫‪12 byte‬‬ ‫آفست‬
‫‪ ‬ارسال آرایه به تابع ← ارسال با ارجاع‬

‫‪7‬‬
‫مثال‌ارسال‌آرایه‌به‌تابع‬
‫‌برنامه‌چاپ‌مقادیر‌یک‌آرایه‌با‌تابع‬:‫مثال‬

void print (int [], int);


‫عنوان‌تابع‬
int main() ‫اعالن‌تابع‬
{ void print(int a[], int n)
const int Size = 100; {
int arr[Size]; for (int i = 0; i<n; i++){
cout<<“Enter numbers:”; cout<<a[i];
for (int i = 0; i<Size; i++){ return;
cin>>arr[i]; }
print(arr, Size);
return 0; ‫فراخوانی‌تابع‬
}
8
‫آرایه‌های‌چندبعدی‬
‫‪ ‬هر خانه از آرایه چندبعدی خود یک آرایه است‪:‬‬
‫‪ -‬آرایه دوبعدی‪ :‬آرایه‌ای است که هر خانه آن یک آرایه یک بعدی است‪.‬‬
‫‪ -‬آرایه سه بعدی‪ :‬آرایه‌ای است که هر خانه آن یک آرایه دو بعدی است‪.‬‬

‫‪ ‬مثال‪:‬‬

‫آرایه‌ای‌با‌‪ 5‬عنصر‌از‌نوع‌صحیح‌است‌(‪ 5‬عضو)‪int a[5]; //‬‬


‫آرایه‌ای‌با‌‪ 3‬عنصر‌که‌هر‌عنصر‌یک‌آرایه‌‪ 5‬عنصری‌از‌نوع‌صحیح‌است‌(‪ 15‬عضو)‪int b[3][5]; //‬‬
‫آرایه‌ای‌با‌‪ 2‬عنصر‌که‌هر‌عنصر‌‪ 3‬آرایه‌است‌که‌هر‌آرایه‌‪ 5‬عنصر‌از‌نوع‌صحیح‌دارد‌(‪ 30‬عضو)‪int c[2][3][5]; //‬‬

‫‪9‬‬
‫آرایه‌های‌دوبعدی‌(ماتریس)‬
‫‪ ‬آرایه دوبعدی‬
‫‪ -‬دو سایز برای آن تعریف می‌شود‪ :‬تعداد سطر و ستون‬
‫‪ -‬توسط دو حلقه خوانده‪ ،‬نوشته و محاسبه می‌شود‪.‬‬

‫‪4‬‬
‫‪ ‬مثال‪:‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫;‪const int Row = 3‬‬ ‫‪0‬‬
‫;‪const int Col = 5‬‬
‫;]‪int a[Row][Col‬‬ ‫‪1‬‬
‫;‪a[1][1] = 10‬‬ ‫‪2‬‬
‫…‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪10‬‬
‫مثال‌آرایه‌دوبعدی‬
.‫‌برنامه‌شمارش‌تعداد‌صفرهای‌آرایه‌دوبعدی‬:‫مثال‬
int main() {
const int Row = 10;
const int Col = 8;
int a[Row][Col], count = 0;
cout<<“Enter your numbers:”;
for (int i = 0; i<Row; i++){
for (int j = 0; j<Col; j++)
{cin>>a[i][j];
if (a[i][j] == 0)
count ++;} //end of for 2
} //end of for 1
cout<<“Zero count = ”<<count<<endl;
return 0;
}
11

You might also like