آزمایشگاه 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

سلام

در درس اول تا این سوال پیش رفتیم که ارک آبجکت چیست و به چه کار می آید؟

ارک ابجکت کتابخانه ای از (com) هاست که خود این کام ها سازنده نرم افزار ارک جی ای اس هستند

حدس می زنم در این قسمت برای شما سوال پیش آمده یعنی یک علامت سوال ؟ بالای سر شماست که کام (com)  چیست؟
Component Object Model (COM)
اگر شما مثل من علاقه مند به برنامه نویسی بوده باشید و با ویژوال استدیو اشنایی داشته باشید این سوال برایتان پیش نمی آید اما از آنجا که  اکثر دوستانی که علاقه مندند به یاد گیری ارک ابجکت از فارغ التحصیلان نقشه برداری می باشند قطعا یکی از ضعف های انها در فهم و یادگیری بخش مربوط به نرم افزار و برنامه نویسی  و اصطلاحات مربوط به آن می باشد
بنده در این اموزش ها سعی میکنم هر  جا که به اصطلاحات تخصصی بر خوردم توضیحات لازم را بدهم اما توصیه موکد میکنم حتما این ضعف خود را بر طرف نمایید و مطالعات خود را در زمینه مهندسی نرم افزار-توسعه نرم افزار-برنامه نویسی تحت دات نت- و یکی از زبان های سی شارپ و ویژوال استدیو بالا ببرید.

خب حالا کامپوننت ابجکت مدل چیه؟
در بر نامه نویسی شی گرا مینای برنامه نویسی ما شی یا ابجکت می باشد یعنی عنصر پایه ما شی می باشد. حال ارک مپ را در نظر بگیرید که خود مجموعه ای از  ابجکت ها مثل ;map viewver و لایه و ...

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


امیدوارم که تا اینجا واضح بوده باشد!
 خب حالا از ارک ابجکت برای  ساخت چه بر نامه هایی استفاده می شود ؟
  • یک برای سفارشی سازی محیط ارک جی ای اس
  • برای ساخت برنامه های مستقل جی ای اس
  • برای توسعه بر نامه های تحت وب

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


سفارشی سازی محیط ارک جی ای اس یعنی چی؟

جواب این سوال باشد برای پست بعد...
فعلا...
۰ نظر موافقین ۰ مخالفین ۰ ۲۳ اسفند ۹۳ ، ۲۳:۲۰
ADMIN