آموزش زبان برنامه نویسی C قسمت 7

 

با هفتمین قسمت از دوره ی آموزش زبان سی در خدمت شما کاربران عزیز هستیم.ما در قسمت ششم راجع به حلقه ها صحبت کردیم و با اونها آشنا شدیم.حالا در این قسمت شما رو با مفهوم آرایه و رشته در زبان برنامه نویسی سی بیشتر آشنا میکنیم.با ما همراه باشید.

 

آرایه :

در قسمت های اولیه گفتیم که متغیر مکانی از حافظه ی رم هست که یک داده ی اطلاعاتی در اون ذخیره میشه.مثلا میخواستیم نمره ی یک دانش آموز رو در حافظه ذخیره کنیم ، یک متغیر تعریف میکردیم و مقدار دهیش میکردیم.اما حالا فرض بفرمایید بخوایم نمره ی دانش آموزان یک کلاس رو ذخیره کنیم.شاید بگید خب مثلا 50 تا متغیر تعریف میکنیم! خب باشه :) حالا من به شما میگم میخوام نمرات دانش آموزان یک مدرسه رو داشته باشم ... حالا دیگه با کمی تامل متوجه میشید که این روش ، پاسخگو نیست و ما به یک مفهوم دیگه به نام آرایه (Array) نیاز داریم! 

 

آرایه در واقع مجموعه ی چند خونه ی پشت سر هم (متوالی) در حافظه ی رم هست.ما برای دسترسی به هر یک از خونه های آرایه از یک متغیر به نام اندیس (Index) استفاده میکنیم. به همین دلیل به آرایه "متغیر اندیس دار" هم گفته میشه.

اندیس خونه های یک آرایه همیشه از 0 شروع میشه و به یکی کمتر از طول آرایه ختم میشه.مثلا یک آرایه ی 20 تایی از 0 تا 19 اندیس گذاری میشه. برای تعریف آرایه ای از اعداد صحیح به طول 10 به شکل زیر عمل میکنیم : 

 

int nums [10] ;

 

الان 10 خونه ی پشت سر هم از رم رو برای کار با اعداد صحیح در نظر گرفتیم. [0] num اولین خونه ی آرایه و [9] num آخرین خواهد بود.

حالا به راحتی میتونید عناصر آرایه رو مقداردهی کنید : 

num[0] = 10 ; 

num [1] = 14 ; 

num [9] = 18 ;

الان مقدار سایر خونه های آرایه نامشخص هست و احتمالا داده های عجیب و غریبی داخلشون وجود داره که بدلیل اجرای سایر نرم افزارهاست.

 

شاید متوجه شده باشید که وجود اندیس در آرایه ها اون رو با حلقه ها و به خصوص حلقه ی for عجین میکنه ! 

مثلا با استفاده از حلقه ی نمرات دانش آموزان یک کلاس رو از کاربر میگیریم : 

 

int marks[30] ;

for (int i=0 ; i<30 ; i++){

      printf("Mark%d = ",i+1) ;

      scanf("%d",&marks[i]);

}

با استفاده از حلقه و آرایه برنامه های زیادی رو میتونید بنویسید.من یک تمرین در سطح متوسط بهتون میدم.اگه بتونید این رو انجام بدید یعنی مفهوم کار با حلقه ها و آرایه ها رو یاد گرفتید و میتونید کارای دیگه ای هم باهاشون انجام بدید: 

 

برنامه ای بنویسید که 10 عدد از کاربر بگیرد و آنها را در یک آرایه ذخیره کند سپس دومین عدد بزرگ بین اعداد را چاپ کند.

 

رشته :

رشته (string) در برنامه نویسی یعنی آرایه ای از کاراکترها .یعنی به جای اینکه با مثلا مجموعه ای از اعداد کار کنیم با مجموعه ای از کاراکترهای متوالی کار خواهیم کرد. یک رشته رو به صورت زیر میتونید تعریف کنید : 

char s [20] ;

الان ما فضای ذخیره سازی یک رشته به طول 20 رو در حافظه ی رم درنظر گرفتیم.

به 4 روش میشه رشته ها رو مقداردهی کرد : 

char s[] = "ali"; //1

char s[50] = "ali"; //2
     
char s[] = {'a', 'l', 'i', '\0'}; //3
     
char s[4] = {'a', 'l', 'i', '\0'}; //4

در رشته ها ، آخرین کاراکتر که معرف انتهای رشته است با 0\مشخص میکنن و بهش کاراکتر NULL میگن.در مثال بالا دیدید که طول رشته 3 بود ولی در آخرین روش ما طول رو برابر 4 قرار دادیم چون در این روش برنامه نویس باید انتهای رشته رو هم خودش به صورت دستی وارد کنه.  

با یک مثال کار رو ادامه میدیم : 

 

char text [20] ;

scanf("%s",text) ; 

for (int i=0 ; text[i]!='\0' ; i++){

       printf("%c",text[i]) ; 

}

 

//or we can write : 

 

char text [20] ;

int i = 0 ;

do {

text [i] = getche ();

i++;

} while (text[i] != 10) ; 

printf("%s",text) ; 

 

//or we can write : 

 

char text [20] ;

scanf("%s",text) ; 

printf("%s",text) ;

 

آخرین روش ، راحت ترین شیوه ی چاپ و دریافت رشته هاست که با استفاده از کاراکتر فرمت s% انجام میشه.البته توابع دیگری هم در کتابخانه ی stdio وجود داره مثل gets (برای دریافت رشته و میتونه شامل space و tab هم باشه) و puts (برای چاپ رشته ها) ولی خب تابع gets در مواقعی دچار مشکل میشه و توصیه ی من استفاده از تابع scanf یا توابعی که خودتون مینویسید، هست.

 

خب دوستان به پایان این قسمت رسیدیم . اگر سوال یا مشکلی دارید،میتونید در قسمت نظرات اون رو مطرح کنید.

بدرود!