انتظار می‌رود پس از پایان این جلسه بتوانید: آرایه ها را به تابع پاس دهیم ونیزازآرایه های دوبعدی دربرنامه های خود استفاده نمائیم بتوانیم آرایه های دوبعدی وسه بعدی را مقدار اولیه دهیم و با استفاده ازتابع وآرایه های دوبعدی بتوانید برنامه هایی را بنویسید...
عکس نویسنده
عکس نویسنده
بازدید :
زمان تقریبی مطالعه :

 گام نهم در برنامه نویسی ++C

ایران در مسابقات جهانی برنامه‎نویسی

اهداف کلی:   

شناخت مباحث پیشرفته آرایه ها 

 

اهداف رفتاری و عمکردی:

انتظار می‌رود پس از پایان این جلسه بتوانید:
آرایه ها را به تابع پاس دهیم و نیز از آرایه های دوبعدی دربرنامه های خود استفاده نماییم  بتوانیم آرایه های دوبعدی و سه بعدی را مقدار اولیه دهیم و با استفاده ازتابع و آرایه های دوبعدی بتوانید برنامه هایی را بنویسید.

 

سرفصل های تئوری:

-پاس کردن آرایه به تابع
- آرایه‌های چند بعدی
- روش به دست  آوردن بزرگ ترین و کوچک ترین در آرایه
-مقداردهی آرایه دوبعدی
- مقدار اولیه دادن به تابع


 آشنایی با عنصر اولیه آرایه سرفصل های عملی:

- مثال ازپاس کردن آرایه یک بعدی و دوبعدی به تابع
- حل مثال تقسیم اعداد بزرگ


مواد و تجهیزات لازم برای گام:

آرایه های دوبعدی
هم ی آرایه‌هایی كه تاکنون تعریف کردیم، یک بعدی هستند، خطی هستند، رشته‌ای هستند.
 می‌توانیم آرایه‌ای تعریف کنیم که از نوع آرایه باشد، یعنی هر خانه از آن آرایه، خود یک آرایه باشد.
به این قبیل آرایه‌ها، آرایه‌های چندبعدی می‌گوییم.
 یک آرایه ی دو بعدی آرایه‌ای است که هر خانه از آن، خود یک آرایه ی یک بعدی باشد.
 یک آرایه ی سه بعدی آرایه‌ای است که هر خانه از آن یک آرایه ی دو بعدی باشد.


دستور

int a[5];

 

آرایه‌ای با پنج عنصر از نوع int تعریف می‌کند. این یک آرای ی یک بعدی است. 

 دستور 

int a[3][5];


 آرایه‌ای با سه عنصر تعریف می‌کند که هر عنصر، خود یک آرایه ی پنج عنصری از نوع int است. این یک آرایه ی دو بعدی است که در مجموع پانزده عضو دارد.


 دستور

int a[2][3][5];

آرایه‌ای با دو عنصر تعریف می‌کند که هر عنصر، سه آرایه است که هر آرایه پنج عضو از نوع int دارد. این یک آرایه ی سه بعدی است که در مجموع سی عضو دارد.


شکل دستیابی به عناصر در آرایه‌های چند بعدی مانند آرایه‌های یک بعدی است. مثلا دستور

a[1][2][3] = 99;

مقدار 99 را در عنصری قرار می‌دهد که ایندکس آن عنصر(1,2,3) است.


ارسال آرایه به تابع
كد  float a[];  كه آرایه a را اعلان می‌كند دو چیز را به كامپایلر می‌گوید:

1- این که نام آرایه a است.
2- عناصر آرایه از نوع float هستند.

 سمبل a نشانی حافظ ی آرایه را ذخیره می‌کند. لازم نیست تعداد عناصر آرایه به کامپایلر گفته شود زیرا از روی نشانی موجود در a می‌توان عناصر را بازیابی نمود. به همین طریق می‌توان یک آرایه را به تابع ارسال کرد. یعنی فقط نوع آرایه و نشانی حافظ ی آن به عنوان پارامتر به تابع فرستاده می‌شود. به مثال زیر دقت کنید که برای آرایه یک بعدی طراحی شده است.
مثال: ‌ارسال آرایه به تابعی كه مجموع عناصر آرایه را برمی‌گرداند: 
 

#include
#include
using namespace std;
int sum(int[],int);
int main()
{  int a[] = { 11, 33, 55, 77};
   int size = sizeof(a)/sizeof(int);
   cout << "sum(a,size) = " << sum(a,size) << endl;
}
int sum(int a[], int n)
{  int sum=0;
   for (int i=0; i      sum += a[i];
   getch();
   return sum;}

فهرست پارامتر تابع فوق به شکل(int a[], int n)  است‌ به این معنا که این تابع یک آرایه از نوع int و یک متغیر از نوع int دریافت می‌کند.
به اعلان این تابع در بالای تابع main()  نگاه کنید. نام پارامترها حذف شده است.
نام آرایه در حقیقت نشانی اولین عنصر آرایه است( a[0]یعنی)  تابع از این نشانی برای دستیابی به عناصر آرایه استفاده می‌کند.

هم چنین تابع می‌تواند با استفاده از این نشانی، محتویات عناصر آرایه را دست‌کاری کند.
مثالی دیگر از پاس کردن آرایه به تابع را باهم می بینیم تا با ارسال آن به تابع آشنا شویم.
مثال‌ : نوشتن و خواندن یك آرای ی دو بعدی

 

#include
#include
using namespace std;
void read(int a[][5]);
void print(int a[][5]);
int main()
{  int a[3][5];
   read(a);
   print(a);
   getch();
}
void read(int a[][5])
{  cout << "Enter 15 integers, 5 per row:\n";
   for (int i=0; i<3; i++)
   {  cout << "ROW " << i << ": ";
      for (int j=0; j<5; j++)
      cin >> a[i][j];
   }
}

وقتی یک آرایه ی چند بعدی به تابع ارسال می‌شود، بُعد اول مشخص نیست اما همه ی ابعاد دیگر باید مشخص باشند.
مثال‌ : پردازش یك آرای ی سه بعدی این‌ برنامه‌ تعداد صفرها را در یك آرای ی سه بعدی می‌شمارد:

 

#include
#include
using namespace std;
int numZeros(int a[][4][3], int n1, int n2, int n3);
int main()
{
int a[2][4][3]={{{5,0,2}, {0,0,9},{4,1,0},{7,7,7} },                     { {3,0,0}, {8,5,0}, {0,0,0}, {2,0,9} } };
cout << "This array has " << numZeros(a,2,4,3)<< " zeros:\n";
getch();
}
int numZeros(int a[][4][3], int n1, int n2, int n3)
{  int count = 0;
   for (int i = 0; i < n1; i++)
      for (int j = 0; j < n2; j++)
         for (int k = 0; k < n3; k++)
            if (a[i][j][k] == 0) ++count;
   return count;
}

توجه‌ كنید كه آرایه چگونه مقداردهی شده است. این قالب مقداردهی به خوبی نمایان می‌کند که آرایه ی مذکور یک آرایه دو عنصری است  که هر عنصر، خود یک آرای ی چهار عضوی است که هر عضو شامل آرایه‌ای سه عنصری می‌باشد. پس این آرایه در مجموع 24 عنصر دارد. آرای ی مذکور را به شکل زیر نیز می‌توانیم مقداردهی کنیم:

 

int a[2][4][3]={5,0,2,0,0,9,4,1,0,7,7,7,3,0,0,8,5,0,0,0,0,2,0,9};

و یا مانند این‌:

 

int a[2][4][3] = {{5,0,2,0,0,9,4,1,0,7,7,7},{3,0,0,8,5,0,0,0,0,2,0,9}};

 

 

گام به گام با برنامه نویسی به زبان  C++
 

 


بخش پژوهش های دانش آموزی سایت تبیان

تنظیم: یگانه داودی

 

منبع:

Ctalk.ir 

firststep.ir

 

مطالب مرتبط

دیگر جلسات آموزشی