آزمایشگاه GIS&GIT

مهندسی فناوری اطلاعات مکانی|مهندسی نقشه برداری|GIS|GEOMATICS|GIT
آزمایشگاه  GIS&GIT

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

جهت تماس از طریق ای دی زیر اقدام نمایید.
telegram:@fazel_shahcheragh
تلفن تماس جهت مشاوره:09124320328
برنامه نویسی و اسکریپت نویسی GIS
آموزش و رفع اشکال ARCPY
طراحی وتوسعه اپلیکیشن های موبایل
طراحی و توسعه برنامه های دسکتاپ جی ای اس

سید فاضل شاه چراغ
مدرس دانشگاه
طراح و مجری پروژه های GIS



























آزمایشگاه GIS&GIT

مهندسی فناوری اطلاعات مکانی|مهندسی نقشه برداری|GIS|GEOMATICS|GIT





۲ مطلب با کلمه‌ی کلیدی «توضیح کدهای سی شارپ» ثبت شده است


بسم الله الرحمن الرحیم

سلام...

در جلسه قبل با حلقه های تکرار آشنا شدیم و با استفاده از حلقه while یک برنامه ساده نوشتیم. همچنین با انواع دیگری از متغیر ها آشنایی کمی پیدا کردیم. در این جلسه قصد دارم شما رو با نوع خاصی از متغیرها که در برنامه نویسی به "آرایه" مشهور هستند، آشنا کنم. همچنین با حلقه تکرار for هم آشنا شویم. با ما باشید...

متغیر های رشته ای یا string برای ذخیره سازی (موقت) یک متن بکار می روند. متغیرهای عددی ، از جمله int ، float ، byte و... برای ذخیره سازی اعداد مورد استفاده قرار می گیرند. اما نوشتن بعضی برنامه ها نیازمند تعداد زیادی متغیر است. برای مثال فرض کنید بخواهیم برنامه ای بنویسیم که نمرات یک دانشجو را گرفته و معدل او را محاسبه کند. یکی از راه حل ها می تواند این باشد که برای هر درس یک متغیر جداگانه بسازیم. بصورت زیر: (در کد زیر سعی کرده ام که روش های مختلف تعریف و مقدار دهی اولیه متغیرها رو نشان دهم)

float riazi=18.25f;
float fizik=16.5f,shimi,farsi=20.0f;
float miyangin=(riazi+fizik+shimi+farsi)/4;

برنامه محاسبه میانگین نمرات، یک برنامه با تعداد متغیرهای کم است. هرچند ما از بعضی دروس صرف نظر کردیم. اما تصور کنید بخواهید برنامه ای برای سرشماری یک شهر بزرگ را بنویسیم! که در آن نیاز به ذخیره اسم شهروندان داشته باشیم. چون می خواهیم بعدا تعداد افرادی را که نامشان "علی" هست را بفهمیم. از آن گذشته شاید بخواهیم نام ها را بر اساس حروف الفبا مرتب کنیم.

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

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

string[] names=new string[100];

حالا یک آرایه به نام names داریم که دارای 100 خانه می باشد. این آرایه توانایی ذخیره سازی 100 رشته (متن) را در خود دارد. مهمترین کاری که با متغیرها انجام می دهیم، خواندن و نوشتن اطلاعات آنها است. خواندن و نوشتن اطلاعات در آرایه ها تفاوت زیادی با متغیرها ندارد؛ فقط باید همیشه شماره خانه آرایه را در هنگام خواند و نوشتن، مشخص کنیم. کد زیر نوشتن در آرایه را نشان می‌دهد:

names[5]="Ali";
names[0]="Mohammad";
names[99]="Mahdi";
names[100]="saeed"; //خطا - این خانه از آرایه وجود ندارد

میتوانیم در هنگام تعریف آرایه، آنرا مقداردهی هم بکنیم. به کد زیر دقت کنید که چگونه آرایه rates را مقداردهی اولیه می کند:

int rates=new int[5]{3,1,5,2,4};

خانه های 0 تا 5 آرایه rates به ترتیب مقادیر 3 ، 1 ، 5 ، 2 ، 4 به خود خواهند گرفت. حتی می توانیم آرایه را بصورت زیر هم تعریف کنیم. در این صورت تعداد خانه های آرایه بر حسب تعداد مقادیر موجود در آکولاد، تعیین خواهد شد:

byte myArray={10,36,158,220,18,110};

آرایه myArray دارای 6 خانه خواهد بود که مقادیر اولیه آن خانه ها مابین آکولاد ها بیان شده اند.

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

MessageBox.Show(names[5]+" "+names[0]);

آرایه ها رو می تونید از هر نوعی و با هر تعداد خانه ای بسازید. شماره خانه های آرایه از 0 شروع میشه. شما نمی تونید از خونه هایی که در محدوده طول آرایه نیستند استفاده کنید. در کد بالا یه توضیح فارسی می بینید. هرجا بخواهیم برای کدمون توضیح بنویسیم باید قبل توضیح دوتا اسلش (//) قرار بدیم. کامپایلر تمام متنی رو که بعد از // باشه رو نادیده می گیره. انگار نه انگار که نوشتین. اما این توضیحات فایده های زیادی داره...

خوب بریم سراغ حلقه for

حلقه for هم مثل حلقه while دستورهای داخل بلوک خودش رو تکرار میکنه. اما این حلقه یه سری امکانات رو در اختیارمون قرار میده که خیلی بدرد بخور هستن. شما در این حلقه یک متغیر شمارنده تعیین می کنید و بر اساس همین متغیر (یا حتی متغیری دیگر) تصمیم به خروج از حلقه می گیرید. ساختار کلی حلقه for بصورت زیر می باشد:

for(Initial-Expression;Conditional-Expression;Loop-Expression){
    Commands set
}

در پرانتز جلوی دستور for ، سه قسمت مجزا وجو دارد که با علامت ; از هم جدا شده اند. کار هر کدام از قسمت ها به شرح زیر است:

  • Initial-Expression : در این قسمت یک متغیر عددی ساخته و مقدار دهی می کنیم. این قسمت فقط یک بار در اولین دور حلقه اجرا می شود. بنابراین در اولین دور حلقه یک متغیر عددی ساختیم.
  • Conditional-Expression : در این قسمت یک عبارت شرطی می نویسم. در واقع این عبارت، شرط ادامه کار حلقه می باشد. اگر این عبارت برابر false شود، اجرای حلقه متوقف خواهد شد. معمولا در این بخش ، متغیری را که در قسمت قبل ساختیم با یک عدد دیگر مقایسه می کنیم. Condition-Expression اولین دستوری هست که در هر دور حلقه اجرا می شود. منظورم رو در عمل متوجه خواهید شد. نگران نباشید.
  • Loop-Expression : معمولا در این قسمت عبارتی نوشته می شود که مقدار متغیر تعریف شده در بخش Initial-Expression را تغییر دهد. در عمل ، Loop-Expression آخرین دستور اجرا شونده در هر دور حلقه است.

خوب وقتشه که مطالب گفته شده رو در عمل آزمایش کنیم.
بیایید با هم برنامه محاسبه معدل رو بنویسیم. ما در این برنامه یک آرایه می سازیم برای ذخیره کردن نمره ها، سپس با استفاده از حلقه for میانگین نمرات دروس را محاسبه کرده و نمایش می دهیم.
یک پروژه جدید بسازید و اشیاء زیر را به فرم آن اضافه کنید:

  • یک عدد TextBox . خاصیت Name آن را به txtAvg تغییر دهید.
  • یک عدد Label . خاصیت Text آن را به "میانگین" تغییر دهید.
  • یک دکمه.

شکل ظاهری برنامه:

فرمول ما برای محاسبه میانگین: مجموع نمرات، تقسیم بر تعداد نمرات. فرض کنید 10 درس بیشتر نداریم. برای دکمه (رویداد کلیک دکمه) برنامه زیر را بنویسید:

float[] marks = new float[10] { 15, 14, 18, 20, 8, 19.5f, 12.25f, 16, 16.75f, 20 };
float sum = 0;
float avg = 0;
for (int i = 0; i < 10; i++)
{
    sum = sum + marks[i];
}
avg = sum / 10;

txtAvg.Text = Convert.ToString(avg);

دو سه نکته در مورد این برنامه:

  • عبارت ++i در قسمت Loop-Expression حلقه for به معنای اضافه کردن عدد 1 به متغیر i است و با عبارت زیر تفاوت چندانی ندارد:
i=i+1;
  • هر متغیر فقط توانایی ذخیره کردن مقادیر همنوع خودش را دارد؛ مگر اینکه آن متغیر با روش هایی تبدیل نوع داده شود. شما فقط می توانید در خاصیت Text شیئ TextBox ، یک رشته ذخیره کنید. چون در واقع خاصیت Text یک متغیر رشته ای است. هر دو دستور زیر با هم برابر هستند. هر دوی آنها متغیر avg را به رشته تبدیل می کنند. این کار برای این است که بتوانیم مقدار متغیر avg را در داخل TextBox به نمایش در آوریم.
txtAvg.Text = Convert.ToString(avg);
txtAvg.Text = avg.ToString();
  • در هر دور حلقه for ، مقدار i ام آرایه marks با مقدار sum جمع می شود، سپس جواب در خود sum قرار می گیرد. همانطور که گفتم آخرین دستور در حلقه for همان Loop-Expression است، بنابراین در هر دور اجرای حلقه ، یکی به مقدار قبلی i اضافه می شود. همچنین قبل از اینکه دستورات داخل بلوک حلقه اجرا شوند، درستی عبارت شرطی بررسی می شود؛ اگر این عبارت برابر با false شود، از حلقه خارج خواهیم شد و دستور های بعد از بلوک حلقه اجرا می شوند.

خدا قوت دوستان :)

برای این جلسه کافیه... در جلسه آینده دریچه های جدیدی از برنامه نویسی رو باز می کینم. باید بفهمیم که اسکوپ چی هست، متغیرهای سراسری چه هستند، چطور متغیرهای رشته ای رو به عددی تبدیل کنیم، در مورد ثابت ها صحبت کنیم و... همچنین با یکی دوتای دیگه از اشیاء آشنایی پیدا کنیم.


 برگرفته شده از butterfly.blog.ir
۰ نظر موافقین ۰ مخالفین ۰ ۰۸ فروردين ۹۴ ، ۲۱:۴۵
ADMIN

با نام و یاد خدا... سلام.

در جلسات قبل یاد گرفتیم که چطور برای دکمه برنامه بنویسیم، طوری که اگر در هنگام اجرای برنامه روی دکمه کلیک کنیم، کاری رو برامون انجام بده. به غیر از دکمه چند شیئ دیگه رو هم روی فرم قرار دادیم و از شیئ TextBox در برنامه خودمون استفاده کردیم و متوجه شدیم که چطور از خصوصیت Text مربوط به این شیئ استفاده کنیم. در مورد شیئ گرایی هم خیلی کوتاه صحبت کردیم و مفهوم کلاس و وراثت رو بصورت غیر آکادمیک! و خودمونی توضیح دادیم.

در این جلسه قصد دارم در مورد ساختار و اسکلت برنامه صحبت کنم. یعنی می خواهیم بدونیم اون نوشته هایی که در درس های قبل در موردشون توضیح ندادیم چی بودن. البته احتمالا" تا حدودی متوجه شده باشید. خطوط برنامه با عدد مشخص شده اند تا بهتر بتونیم شما رو به خط مورد نظرمون ارجاء بدیم. بسته به تنظیمات پروژه و نسخه ویژوال استودیو نصب شده در سیستم شما، ممکنه کد زیر کمی متفاوت باشه، اما زیاد مهم نیست. البته ما در این درس هم به همه جزئیات نمی‌پردازیم.

اسکلت برنامه سی شارپ سلام دنیا

خطوط 1 تا 7 : تمام این خطوط با کلمه using شروع شدن. رنگ این کلمه با بقیه کلمات متفاوته و آبی هست. کلمات با رنگ آبی ، کلماتی هستند که برای زبان برنامه نویسی سی شارپ (#C) مفهوم خاصی دارند. به این کلمات، کلیدواژه ، کلمه کلیدی یا کلمه رزرو شده می گن. قبل از اینکه ما برنامه مقدماتی خودمون رو شروع کنیم، یک عده برنامه نویس زحمت کشیدند و قسمت های زیادی از برنامه رو ساخته و در اختیار ما قرار داده اند. مثلا" اینکه یک دکمه به چه شکلی باشه، ظاهر جعبه پیام (MessageBox) به چه صورت باشه ، روش تعامل فرم و... رو برنامه نویسی کرده اند. برنامه ای که این عزیزان نوشته اند در یکسری فایل ها ذخیره شده و ما با استفاده از کلمه کلیدی using اون فایل های مهم رو به برنامه خودمون متصل می کنیم و ازشون سو استفاده می کنیم :)

خط 11 : در این قسمت از برنامه یک کلاس به نام Form1 نوشته شده که از کلاس Form که برنامه نویسان عزیزمون اون رو قبلا" برنامه نویسی کردن داره ارث‌بَری می کنه! این بحث رو فعلا" خیلی جدی نگیرید. کمی سطحش از مقدماتی بالاتره.

خط 13 تا 16 : به این قسمت هم "متد سازنده کلاس Form" می گن. فقط بدونید که Method یا "روش" در برنامه نویسی #C ، به مجموعه ای از کدهای مرتبط به هم می گن که کار خاصی رو برای ما انجام می دهند و دارای یک نام می باشند.  ما در این برنامه (تصویر بالا) یک متد دیگه هم داریم که اسمش Button1_Click هست.

 اگر دقت کنید متدها دارای ساختار خاصی هستد. جلوی اسم متد، در داخل پرانتز چیزهایی نوشته شده که به آنها پارامتر ویا آرگومان متد می گوییم؛ آرگومان ها و پارامترهای متد با کاما از هم جدا می شوند (ممکنه مثل متد سازنده فرم چیزی نوشته نشده باشه اما پرانتز حتما هست) . آرگومان و پارامتر یه تفاوت کوچک دارند. شاید بعدا توضیح بدهم.

و بعد از اون یک علامت آکولاد ( } ) قرار گرفته. برنامه ای که قراره متد، اون رو اجرا کنه، بعد از علامت آکولاد قرار گرفته. بعد از آخرین خط برنامه متد، یک علامت آکولاد بسته داریم که نشان دهنده پایان متد هست. از حالا به فاصله مابین آکولاد باز و آکولاد بسته "بلوک" می گوییم. مثلا" بلوک متد Button1_Click یا بلوک namespace FirstProject که از خط 9 شروع شده و تا خط 23 ادامه پیدا کرده.

خط 20 : این خط در بلوک متد Button1_Click نوشته شده. خط 20 رو ما در دروس قبل نوشتیم. اما خود بلوک متد Button1_Click بصورت اتوماتیک در زمانی که روی دکمه دابل کلیک کردید ساخته شده.

ما در این خط از متد Show مربوط به کلاس MessageBox استفاده کردیم. به اون چیزی که ما داخل پرانتز متد Show می نویسیم آرگومان می گن. اما به جای خالی ای که برنامه نویس عزیزمون برای ما گذاشته که داخلش مثلا" بنویسیم:

"Salam "+textBox1.Text+" "+textBox2.Text

پارامتر می گن.

در این درس کار عملی انجام نمی دهیم. ولی شما بیکار ننشینید. اول خوووب مطالب این درس رو یاد بگیرید. باور کنید به همه این نکات نیاز داریم. اگه نیاز نبود نمی گفتم. در مرحله بعد سعی کنید اشیاء دیگری روی فرم قرار بدید و در پنجره Properties خصوصیات مختلف اون اشیاء رو بررسی کرده و تغییر دهید. سعی کنید از اون خصوصیات در برنامه تون استفاده کنید. مثل برنامه ما که از خصوصیت Text شیئ TextBox استفاده می کنه.

موفق باشید.


 برگرفته شده از butterfly.blog.ir
۰ نظر موافقین ۰ مخالفین ۰ ۰۱ فروردين ۹۴ ، ۱۱:۲۱
ADMIN