به نام آن که جان رافکرت آموخت             چراغ دل به نورجان برافروخت
سلام . اخرین قسمت از فصل ارایه ها :
در جلسه آخر از این فصل آموزشمان میخواهیم ارایه ها را با حل کردن مسائل مختلفی یاد بگیریم  ! امیدوارم که دو جلسه پیش را مطالعه کرده باشید و حالا با یک آمادگی به سراغ این جلسه خیز برداشته باشید 

خب اولین مثالی که میخواهیم حل کنیم یک برنامه ی ساده که توان اعداد ۰ تا ۱۰ را محاسبه میکند ! ابتدا کد را مشاهده کنیم :
#include<stdio.h>
#define MAX_ITEM 11
int main(void)
{
    int i , squar[MAX_ITEM] ; 
    for(i=0 ; i< MAX_ITEM ; ++i)
    {
        squar[i] = i * i ;
        printf("squar of Number %d : %d\n", i,squar[i] ) ; 
    }
}همانطور که گفته شد میخواهیم توان اعداد ۰ تا ۱۰ را محاسبه کنیم و اگر به خاطر داشته باشید ارایه ها بصورت n-1 عمل میکنند یعنی اگر بخواهیم عدد ۱۰ را هم محاسبه کنیم باید مقدار دهی اولیه خود را که در اینجا MAX_ITEM میباشد را عدد ۱۱ بگذاریم در غیر این صورت یعنی اگر ۱۰ را قرار دهیم تنها تا عدد ۹ را محاسبه میکند !
در ادامه ،در تابع اصلی خود یک ارایه به نام square تعریف کردهایم که سایزش را معادل MAX_ITEM قرار دادهایم چرا که میخواهیم نتیجه ی هر توان را در یک خانه ی حافظه ای قرار دهیم ! یک متغیر I هم تعریف کردهایم که متغیر کنترل کننده حلقه ما است .
پس از این تعریف متغیر و ارایه یک حلقه ی for داریم که نقدار دهی اولیه آن ۰ است و باید تا MAX_ITEM  اجرا شود !
در داخل حلقه هم تعریف کردهایم که هر خانهی حافظه متعلق به حاصل ضرب i * I باشد .
سپس با استفاده از تابع خروجی ،خروجی را به کاربر نشان میدهیم 

حالا یک مثال نسبتاً خوب حل کنیم تا خیلی با C حال کنیم 

در آمار تفاضل بین دادهها و میانگین گرفتن از دادهها را داشتیم که میخواهیم به سادهترین شکل ممکن این برنامه را بنویسیم 

ابتدا کد را ببینیم و سپس درباره برنامه حرف بزنیم 

:
#include<stdio.h>
#include<math.h>
#define MAX_ITEM 8
int main(void)
{
    double x[MAX_ITEM],mean , st_dev , sum , sum_sqr ;
    int i ;
    printf("Enter %d numbers seprated by blank or <return>s\n ",MAX_ITEM) ;
    for(i = 0; i < MAX_ITEM ; ++i)
        scanf("%lf", &x[i]);
    sum = 0;
    sum_sqr = 0;
    for(i = 0 ; i < MAX_ITEM; ++i)
    {
        sum += x[i] ;
        sum_sqr += x[i] * x[i] ;
    }
    mean = sum / MAX_ITEM;
    st_dev = sqrt(sum_sqr / MAX_ITEM - mean * mean) ;
    printf("The mean is %.2f.\n" , mean);
    printf("The standard devation is %.2f.\n",st_dev);
    printf("\nTable of the diffrences between data values and mean\n");
    printf("Index   Item    diffrence\n");
    for( i = 0 ; i<MAX_ITEM ; ++i)
        printf("%3d%4c%9.2f%5c%9.2f\n",i,' ',x[i],' ',x[i] - mean);
    return (0);
}ثابت ماکرو MAX_ITEM اندازه ارایه را تعیین میکند. از متغیر I در هر حلقه ، به عنوان متغیر کنترل حلقه و اندیس ارایه ها استفاده شده است .
حلقه for اول :
for(i = 0; i < MAX_ITEM ; ++i)
        scanf("%lf", &x[i]);در هر عضو ارایه x ، یک مقدار ذخیره میکند . برای هر مقدار I از ۰ تا ۷ ، احضار تابع scanf تکرار میشود و هر بار یک داده جدید از ورودی خوانده شده و در x
 ذخیره میشود . اندیس I تعیین میکند کدام عضو ارایه مقدار داده ی بعدی را دریافت میکند .
حلقه for دوم مجموع تمام مقادیر ذخیره شده در این ارایه را در sum انبار (ذخیره) می کند. این حلقه ، مجموع مربعات تمام مقادیر عضو های این ارایه را نیز در sum_sqr انبار(ذخیره) میکند.
اندکی بعد این حلقه به طور مشروح و با جزئیات کامل بررسی میشود . آخرین حلقه for :
 for( i = 0 ; i<MAX_ITEM ; ++i)
        printf("%3d%4c%9.2f%5c%9.2f\n",i,' ',x[i],' ',x[i] – mean);جدول را چاپ میکند . در هر خط از این جدول ، اندیس ارایه یعنی عضو ارایه و تفاضل بین آن عضو و میانگین دادهها یعنی x
-mean باعث میشود . توجه دارید که حافظه ی نگهدارنده ی رشته فورمت در احضار تابع ()printf باعث میشود در بالای هر ستون از مقادیر داخل جدول خروجی ، عنوان ستون مربوطه چاپ میشود . اکنون که برنامه را به طور کامل ملاحظه کردهاید ،نکاهی دقیقتر به محاسبه ی حلقه ی for می افکنیم :
sum = 0;
    sum_sqr = 0;
    for(i = 0 ; i < MAX_ITEM; ++i)
    {
        sum += x[i] ;
        sum_sqr += x[i] * x[i] ;
    }این حلقه حاصل جمع هر هشت عضو ارایه x را در متغیر sum ذخیره میکند . در هر بار از اجرای بدنه ی حلقه ، عضو بعدی ارایه x به sum اضافه میشود . پس از آن مقدار این عضو ارایه به توان ۲ میرسد و توان دوم آن در نگهدارندهی مجموع مربعات (توان) عضو ها یعنی sum_sqr ذخیره میشود . 
انحراف معیار ، مجموعهای از دادهها ، مقیاسی برای پراکندگی مقادیر دادهها در اطراف میانگین است . انحراف معیار کوچک ، معرف آن است مه تمام مقادیر دادهای به فاصله ی نسبتاً نزدیکی از مقدار میانگین قرار دارند .
فرمول محاسبه انحراف معیار در اینجا :
st_dev = sqrt(sum_sqr / MAX_ITEM - mean * mean) ;
مثالهای ارایه های یک بعدی به اتمام رسید در ادامه با یک مثال ساده برای ارایه های چندبعدی با طرز کار این ارایه ها آشنا می شویم :
ساخت جدول ضرب اعداد با ارایه دو بعدی :
#include<stdio.h>
int main(void)
{
    int table[10][10] , i , j;
    for(i = 0; i < 10 ; i++)
        for(j=0;j<10;j++)
            table[i][j] = (i+1) * (j+1) ;
    for(i = 0 ; i< 10 ; i ++){
        for(j = 0 ; j < 10 ; j++)
        printf("%4d",table[i][j]);
        printf("\n");
    }
}در تابع اصلی ما یک ارایه دو بعدی با سایز ۱۰ میسازیم همچنین دو متغیر I , j هم میسازیم که متغیر های کنترل حلقه ی ما هستند . 
حلقه for تو در تو  اول :
for(i = 0; i < 10 ; i++)
        for(j=0;j<10;j++)
            table[i][j] = (i+1) * (j+1) ;
اعداد ۱ – ۱۰ را (بخاطر قرار دادن i+1 و j+1 ) در یکدیگر ضرب میکند 
پ حلقه for تو در تو دوم :    
for(i = 0 ; i< 10 ; i ++){
        for(j = 0 ; j < 10 ; j++)
        printf("%4d",table[i][j]);
        printf("\n");نتیجه محاسبه حلقه اول را در خروجی چاپ میکند .
امیدوارم تا اینجا از زبان C لذت برده باشید 

- بعد از تمام شدن جلسات متنی ، آموزشها را بصورت ویدیو (با صدا) هم خواهم ساخت تا هم  افرادی که دوست دارند که آموزش متنی داشته باشند (که خودم یکی از این افراد هستم ) و هم افرادی که علاقهمند به آموزش ویدیویی هستند از این زبان جذاب بهره مند شوند 

- بعد از تمام شدن آموزشهای زبان C دیگر زبانهای برنامه نویسی را هم در انجمن کار خواهیم کرد 

 (انجمن برنامه نویسی رو رونق بدیم و گسترشش بدیم)
- نظرات خود را برای من در شخصی ارسال کنید و سؤال و یا نکته ی ابهامی هم وجود داشت سؤال کنید .
به این آموزشها قناعت نکنید و دیگر منابع خارجی مثل :
این آموزشها را هم بخوانید 
شاد و پیروز باشید / یا حق