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

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

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

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

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



























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

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





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

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

سلام دوستان عزیز...

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

قبل از هرچیز اجازه دهید تا در مورد عملگر ، عملوند و عبارت صحبت کنیم. در برنامه نویسی، برخی از جملات هستند که نمی توانیم به آنها بگوییم "دستور" اما برای ما عمل خاصی رو انجام می دهند. خود این جملات از بخش هایی تشکیل شده اند که توضیح میدم. به این جملات ، "عبارت" یا Expression می گوییم.

عبارت ها از دو بخش عملوند و عملگر تشکیل شده اند. به شکل زیر دقت کنید:

برنامه نویسی مقدماتی سی شارپ

در این شکل عملگرها رو با چهارضلعی های آبی مشخص کرده ام و عملوندها را با چهارضلعی های قرمز.

عملگر ها هامانطور که از اسمشون مشخصه، یه عمل خاصی رو بر روی عملوند ها انجام می دهند. در برنامه نویسی سی شارپ دو نوع عملگر وجود دارد، یگانی یا دوتایی! عملگرهای یگانی فقط روی یک عملوند اعمال می شود. مانند عملگر ( - ) در عبارت بالا. در عبارت بالا بقیه عملگرها دوتایی هستند. البته عملگر ( - ) می تواند بصورت دوتایی هم استفاده شود.

عملوند ها می توانند عدد، متغیر و یا از توابع ریاضی و غیر ریاضی باشند.

نکته مهمی که باید توجه داشته باشید اینه که عبارت ها را می توان ساده کرد. بطوری که در نهایت به یک عدد یا رشته و یا... می رسیم. برای مثال در عبارت بالا اگر فرض کنیم که مقدار متغیر a برابر با 5 باشد، این عبارت با عدد ( 6- ) مساوی است. خوب بگذریم :)

در برنامه نویسی سی شارپ عملگر های مختلفی وجود دارد که در زیر مهمترین آنها را مشاهده می‌کنید:

عملگرهای ریاضی یا محاسباتی : 

  • عملگر جمع ( + )
  • تفریق ( - )
  • تقسیم ( / )
  • باقیمانده تقسیم ( % )
  • ضرب ( * )
عملگرهای رابطه ای:
  • عملگر کوچکتر ( > )
  • بزرگتر ( < )
  • کوچکتر مساوی ( => )
  • بزرگتر مساوی ( =< )
  • تساوی ( == )
  • نامساوی یا مخالف ( =! )
عملگرهای شرطی
  • و ( && )  
  • یا ( || )
  • نقیض ( ! )
عملگر انتساب ( = )
البته عملگرهای دیگری هم هستند. خیلی هم زیاد هستند. اما فعلا بکار ما نمیان. عملگرهای ریاضی رو که الحمدلله باهاشون آشنایی کامل دارید. فقط از بین عملگرهای ریاضی، عملگر باقیمانده تقسیم شاید براتون تازگی داشته باشه! اونم چیز خاصی نیست. چندتا مثال میزنم:
  • 25%5 برابر با 0 است. یعنی باقیمانده تقسیم 25 بر 5 مساوی با 0 است. البته تقسیم صحیح، نه اعشاری!
  • 10%3 برابر با 1 است.
  • 17%5 برابر با 2 است.
عبارت هایی که با عملگرهای رابطه یا عملگر های شرطی (یا ترکیب هر دو) ساخته می شوند، در آخر بصورت درست (true) یا غلط (false) ارزیابی می شوند. (ارزیابی می شوند یعنی بعد از ساده شدن ، عبارت به true یا false تبدیل می شود) به مثال های زیر دقت کنید:
  • 23.5 < 12 برابر با false است. (غلط)
  • 20 == (2*10) برابر با true است. (درست)
  • ((13 * 2) > 7) && (12 =< 4) برابر با false است.
عه! نگفتم && ، || و ! چی هستن و چطور کار می کنن! خوب اشکال نداره حالا میگم:
  • && به این صورت کار می کنه که اگر دوطرفش true باشه، نتیجه عبارتش true خواهد شد و در غیر اینصورت نتیجه عبارت false میشه. مثلا اگر به عبارت بالا دقت کنید نتیجه (13 * 2 ) > 7 برابر true هست، اما 12 =< 4 برابر false هست. بنابر این کل عبارت برابر false خواهد بود.
  • || هم به این شکل کار می کنه که اگر هر دو طرفش false باشه، نتیجه عبارتش بصورت false ارزیابی میشه و در غیر اینصورت نتیجه عبارت false هست.
  • عملگر نقیض ( ! ) ، نتیجه عبارت جلوی خودش را برعکس می کند. مثلا نتیجه عبارت (4>1)! برابر با false است.
اما آخرین و تقریبا مهمترین عملگری که در این جلسه به توضیحش می پردازیم، عملگر انتساب هست. این عملگر یه تفاوت های ریز و ظریفی با عملگر "مساوی" در ریاضی داره. اما این تفاوت های ظریف رو خیلی سخته که توضیح بدی. اما خوبیش اینه که خودتون به مرور زمان متوجه تفاوت هاشون خواهید شد.
عملگر انتساب ( = ) کارش اینه که نتیجه ارزیابی عبارت سمت راست خودش رو در متغیر سمت چپ خودش ذخیره می کنه! البته فکر کنم در جلسه قبل تا حدودی با این عملگر آشنایی پیدا کردید. به مثال های زیر توجه کنید:
b = "Salam " + "Donya!" ;

در متغیر b رشته !Salam Donya ذخیره خواهد شد.

m = (2 * 3) + 1 ;

در متغیر m عدد 7 ذخیره خواهد شد.

k = ((2 + 1) == (9 / 3))

در متغیر k چیزی که ذخیره خواهد شد، true است.


هوففففف... واقعا خداقوت. من که خسته شدم، شما رو نمیدونم.

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

یکی از ساختارهای برنامه نویسی خیلی مهم برای این منظور ساختار شرطی است. بصورت زیر:

if ( Conditional_Expression ){
    Commands set
}

در ساختار شرطی بالا شما بجای Conditional_Expression یک عبارتی که نتیجه آن true یا false است قرار می دهید. این ساختار درصورتی که نتیجه عبارت مربوطه true باشد، مجموعه دستورات داخل بلوک خود را اجرا می کند. دقت کنید، فقط در صورت true بودن عبارت! بجای Commands set می توانید هر تعداد دستور که خواستید بنویسید. حتی می توانید در این قسمت دوباره ساختار شرطی قرار دهید که در آن صورت یک ساختار شرطی تو در تو (nested) خواهیم داشت.

این ساختار مهم شرطی رو می تونیم پیشرفته تر هم بکنیم:

if ( Conditional_Expression ){
    Commands set 1
} else {
    Commands set 2 
}

در این ساختار در صورت true بودن عبارت، مجموعه دستورات 1 اجرا می شود و در غیر اینصورت مجموعه دستورات 2 اجرا می شود. ساختار شرطی بالا رو می تونیم پیشرفته تر هم بکنیم. ساختار پایین رو ملاحضه کنید:

if ( Conditional_Expression 1 ){
    Commands set 1
} else if ( Conditional_Expression 2 ) {
    Commands set 2 
} else if ( Conditional_Expression 3 ) {
    Commands set 3
} else if ( Conditional_Expression n ) {
    Commands set n
} else {
    Commands set n+1
}

در این ساختار اول نتیجه عبارت 1 بررسی می شود؛ درصورت true بودن مجموعه دستورات 1 اجرا می شود. اگر نتیجه false باشد، نتیجه عبارت 2 بررسی شده و در صورت true بودن مجموعه دستورات 2 اجرا می شوند. اگر نتیجه false باشد... . قسمت else آخرین مرحله ای هست که اجرا می شود، اما فقط درصورت false بودن عبارت های قبلی!

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


به نظر من این درس از مهمترین درس هایی است که تا حالا یاد گرفته اید. حتی شاید دروس بعدی هم به درجه اهمیت این درس نباشند. پس مطالبی که گفتیم رو خوب و دقیق یاد بگیرید. هر سوالی که در مورد مطالب گفته شده دارید بپرسید. هر سوالی!

حالا که مطالب رو بخوبی یاد گرفتید، بریم تا از ایم مطالب استفاده کنیم.

در این جلسه می خواهیم برنامه ای بنویسیم که از ساختار شرطی در آن استفاده شده باشد. البته در این برنامه از همه نکاتی که در این درس یاد گرفتید ، استفاده نمی کنیم. اما مطمئنا در درس های بعدی حتما از مطالب این درس بصورت عملی استفاده خواهیم کرد. به جرأت می‌توان گفت با یادگیری این درس نیمی از برنامه نویسی را فرا گرفته اید.

  1. یک پروژه جدید بسازید.
  2. روی فرم پروژه موارد زیر را قرار دهید: (شکل نهایی برنامه بصورت زیر خواهد شد. شما هم سعی کنید اشیاء رو به همین ترتیب قرار بدید یا اینکه مرتب تر و بهتر...)
    1. دو عدد TextBox . خاصیت Name آنها را به txtName و txtFamily تغییر دهید.
    2. دو عدد Label . خاصیت Text آنها را یکی "نام" و دیگری "نام خانوادگی" قرار دهید.
    3. دو عدد RadioButton . خاصیت Name آنها را به rdoMale و rdoFamily تغییر دهید.
    4. یک عدد Button .
  3. روی دکمه دابل کلیک کنید تا بتوانید برای آن برنامه بنویسید. برنامه ای که در هنگام دابل کلیک کردن روی دکمه در بلوک Button1_Click می نویسید، در هنگام کلیک شدن روی دکمه اجرا میشه. (جهت یاد آوری)
  4. کد زیر رو در بلوک مربوطه بنویسید. (بعد از دابل کلیک کردن روی دکمه؛ در محل مکان نمای صفحه کلید. مکان نمای صفحه کلید در میان کد برنامه در حال چشمک زدن است)
if (rdoMale.Checked == true)
{
    MessageBox.Show("سلام آقای " +
    txtName.Text + " " +
    txtFamily.Text +
    ".\n به درس هفتم خوش آمدید.");
}else{
    MessageBox.Show("سلام خانم " +
    txtName.Text + " " +
    txtFamily.Text +
    ".\n به درس هفتم خوش آمدید.");
}

تعجب نکنید! حتی یک دستور رو هم می تونید بشکنید و در چند خط بنویسید. به برنامه بالا دقت کنید که چطور دستور MessageBox.Show رو در چند خط نوشتم. البته عملگر + در این دستور کار چسباندن رشته ها (متن ها) به هم رو انجام میده! نه اینکه حتما اگر بخواهیم ادامه دستور رو در خط بعد بنویسیم مجبور باشیم علامت + رو بنویسم.

برنامه نویسی مقدماتی سی شارپ

می دونم که خیلی از دستور MessageBox.Show داریم استفاده می کنیم. ولی مجبوریم! اما نگران نباشید. بزودی با دستورهای جدید و جالب دیگه ای هم آشنا خواهید شد.


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

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

سلام...


تا اینجای کار تقریبا می تونم بگم اصلا برنامه ای ننوشتیم. اما تا حدود کمی با برنامه نویسی کامپیوتر آشنایی پیدا کردیم. فهمیدیم که کامپیوتر دقیقا همون دستور هایی رو اجرا می کنه که ما بهش گفتیم؛ نه کمتر و نه بیشتر. کاش ما آدم ها هم در مقابل خدا مثل کامپیوتر باشیم.

کامپیوتر تک دستور ها رو یکی پس از دیگری اجرا می کنه. اگر برنامه ای که نوشته ایم مثلا 5 خط باشه، اول خط 1 ، بعد خط 2 ، بعد خط 3 و همینطور تا آخر برنامه دستورات اجرا خواهند شد.

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

در حالت اول خطوط بصورت استاندارد ، یکی پس از دیگری آمده اند.

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

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

نتیجه می گیریم که فضاهای خالی توسط کامپایلر نادیده گرفته می شوند. فضاهای خالی رو با دکمه های Space ، Tab (همون دکمه درازه  :)  ) و Enter می توان ایجاد کرد.

در زبان سی شارپ حروف کوچک و بزرگ با هم متفاوت هستند. مثلا MessageBox.Show با messagebox.SHow فرق می کند.

بقیه قوانین رو در جلسات بعد خواهم گفت.

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

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

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

ان شاء الله از این جلسه از برنامه نویسی رو شروع می کنیم و دیگه تیترها مون "خیلی مقدماتی" نیست بلکه "مقدماتی" هست.

یکی از قسمت های اصلی کامپیوتر حافظه ها هستند. تصور کنید کامپیوتر بدون حافظه چگونه خواهد بود! اما شاید بلافاصله بعد از اینکه به حافظه های کامپیوتر اشاره کردم ذهن شما به سمت هارد دیسک ها، سی دی ها و فلش درایو ها رفت، البته اینگونه حافظه ها خیلی مهم هستند. اما منظور من این حافظه ها نبود. بلکه هدف من از حافظه به عنوان بخش اصلی کامپیوتر، RAM هست.

این حافظه حجم بسیار کمتری نسبت به هارد دیسک دارد.

این حافظه سرعتی بسیار زیاد تری نسبت به هارد دیسک دارد.

این حافظه خیلی گران قیمت است.

ما به چند دلیل در برنامه نویسی از حافظه RAM استفاده می کنیم.

سرعت پردازنده بسیار بالاست! از طرفی سرعت هارد دیسک در مقابل پردازنده خیلی کم است. ما از RAM به عنوان واسط بین هارد دیسک و پردازنده استفاده می کنیم. به این صورت که داده ها را بطور موقت در RAM ذخیره کرده و بعد از اینکه فرایند پردازش روی داده ها به پایان رسید ، آنها را در هارد دیسک ذخیره می کنیم (البته اگر نیازی به این کار وجود داشته باشد).

هرگاه که شما برنامه ای را اجراء می کنید، داده های مربوط به آن برنامه در حافظه RAM قرار می گیرد. مثلا" در برنامه ساده خودمان، نام و نام خانوادگی ای را که در TextBox نوشتیم بصورت موقت در RAM ذخیره می شود و دستور MessageBox.Show از آنها استفاده کرده و در خروجی نمایش میدهد.

ما می توانیم داده ها را در RAM ذخیره کرده یا آنها را از RAM بخوانیم. برای اینکار به روشی که در سطور بعد توضیح داده ام ، به کامپایلر دستور می دهیم که محلی در حافظه RAM را رزرو کند و به آن مکان رزرو شده یک نام دلخواه (که خودمان مشخص کرده ایم) اختصاص دهد. ما به این نام برای دسترسی به آن مکان رزرو شده در حافظه نیاز داریم. به این مکان رزرو شده حافظه متغیر می گوییم.

در این درس فقط به بررسی متغیرهایی می پردازیم که می توانند یک متن و یا نوشته را در خود ذخیره کنند. با دستور زیر یک متغیر که توانایی ذخیره متن را دارا می باشد، در حافظه ساخته می شود:

string strName;

strName صرفا یک نام هست و شما می توانید به دلخواه خود این نام را تغییر دهید.

اگر بخواهیم یک متن را در strName ذخیره کنیم بصورت زیر عمل می کنیم:

strName="In the name of Allah";

دقت داشته باشید که متن را باید بین دو علامت " قرار دهیم. به نوشته هایی که بین دو علامت " قرار دارند، اصطلاحا رشته می گوییم و به متغیری که توانایی ذخیره رشته ها را داشته باشد، متغیر رشته ای می گوییم.

هرجایی از برنامه که نام متغیر نوشته شود، آن نام در هنگام اجرای برنامه، با مقدار موجود در خود جایگزین خواهد. برای مثال می توانید بعد از اینکه متغیر strName را تعریف کردید دستور MessageBox.Show را بصورت زیر باز نویسی کنید:

MessageBox.Show(strName + "\n Butterfly.blog.ir");

برنامه این درس رو اگه پیاده سازی کرده باشید، احتمالا به این شکل شده باشه:

یکی از شاخصه های هوشمندی یک برنامه کامپیوتری این است که در شرایط مختلف تصمیم های مخصوصی اتخاذ کند. این امر در زندگی عادی هم بسیار رایج هست. مثلا شما درصورتی که هوا سرد باشد، لباس گرم می پوشید. اگر گرسنه شوید، غذا می خورید. اگر بخواهید برنامه نویسی یاد بگیرید به باترفلای سر می زنید... :) در جلسه آینده روش پیاده سازی این شاخصه هوشمندی رو با هم یاد می گیریم...

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