اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

مشخصات بلاگ
اثر پروانه ای

اثر پروانه‌ای نام پدیده‌ای است که به دلیل حساسیت سیستم‌های آشوب‌ناک به شرایط اولیه ایجاد می‌شود. این پدیده به این اشاره می‌کند که تغییری کوچک در یک سیستم آشوب‌ناک چون جو سیارهٔ زمین (مثلاً بال‌زدن پروانه) می‌تواند باعث تغییرات شدید (وقوع توفان در کشوری دیگر) در آینده شود.

ایده‌ٔ این‌که پروانه‌ای می‌تواند باعث تغییری آشوبی شود نخستین بار در ۱۹۵۲ در داستان کوتاهی به نام آوای تندر اثر ری بردبری مطرح شد. عبارت «اثر پروانه ای» هم در ۱۹۶۱ در پی مقاله‌ای از ادوارد لورنتس به وجود آمد. وی در صد و سی و نهمین اجلاس ای‌ای‌ای‌اس در سال ۱۹۷۲ مقاله‌ای با این عنوان ارائه داد که «آیا بال‌زدن پروانه‌ای در برزیل می‌تواند باعث ایجاد تندباد در تکزاس شود؟»

آخرین نظرات
  • ۱۱ بهمن ۹۵، ۱۷:۱۸ - فاروق کریمی زاده
    خوب بود.
اثر پروانه ای

ایجاد رابط کاربری بصورت دینامیک

سه شنبه, ۱ بهمن ۱۳۹۲، ۱۰:۵۴ ق.ظ

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

سلام...

پیرو درخواست های مکرر برخی دوستان ، مبنی بر آموزش ساخت رابط کاربری برنامه "8 وزیر" در محیط گرافیکی #C ، تصمیم گرفتم این مطلب رو به همین موضوع اختصاص بدم. البته قطعا این مبحث زود هنگام در بلاگ قرار گرفت و امکان اینکه برای برخی از دوستان مبتدی ، درک این مفاهیم مشکل باشد، وجود دارد. قبلا از بقیه دوستان عذر خواهی می کنم.

ما در این درس قصد داریم برنامه ای بسازیم که در آن 64 شیء PictureBox وجود داشته باشد. هر کدام از این اشیاء دارای خصوصیات و رفتارهای مربوط به خود باشد (متمایز از بقیه اشیاء). اما قرار دادن 64 کنترل (شیئ) PictureBox روی فرم برنامه بصورت دستی و از طریق Toolbox ، کار طاقت فرسایی به نظر می‌رسد. بنابراین راهی جز تولید این 64 کنترل با استفاده از کدنویسی وجود ندارد.

در زبان برنامه نویسی #C دات نت ، با هر چیزی بصورت یک شیئ برخورد می شود. هرچیزی! هر شیئ دارای یک کلاس هست که قالب و طرح کلی آن شیئ را در خود دارد. برای مثال شیئ آچار دارای یک قالب ریخته‌گری است، که با ریختن مواد مذاب در داخل آن ، آچار بوجود می آید.

در برنامه نویسی سی شارپ، برای اینکه بتوانیم از کلاس، یک شئ بسازیم باید از کلیدواژه new استفاده کنیم. به مثال زیر دقت کنید:

PictureBox pic = new PictureBox();

در این مثال با استفاده از کلاس PictureBox ، شئ pic را ساخته ایم. حالا می تونیم به خصوصیات مختلف این شیئ دسترسی داشته باشیم. مثلا می توانیم اندازه آنرا تغییر دهیم، مکان قرار گرفتن آن را روی فرم (یا هرجای دیگری) تعیین کنیم، می توانیم در داخل آن یک عکس را بارگذاری کنیم، رنگ آن را تغییر دهیم و... . به کد زیر توجه کنید که چطور این خصوصیات را برای شئ pic تنظیم کرده ایم:

pic.Size = new Size(20,20);
pic.Location = new Point(10,14);
pic.BackColor = Color.FromArgb(123,235,18);
pic.Image = Image.FromFile("c:\\pics\\vazir.png");

کد بالا (به ترتیب خطوط) اندازه شئ را 20x20 پیکسل تنظیم می کند. مکان قرار گرفتن آن را در نقطه ای با مختصات 10 و 14 قرار می دهد ، رنگ زمینه را به رنگ ██ در می آورد. همچنین عکس vazir.png را از پوشه pics که در درایو c قرار دارد را در داخل شئ pic بارگذاری می کند.

تا اینجای کار یک شئ PictureBox ساختیم. اما این شیئ برای دیده شدن نیاز دارد که در داخل فرم قرار گیرد (یا هر شئ قابل دیدن دیگری). برای اضافه کردن هر کنترلی (از جمله pic) به فرم ، باید بصورت زیر عمل کنیم:

this.Controls.Add(pic);

اما قرار بود که ما 64 کنترل PictureBox رو روی فرم داشته باشیم. در مواقعی که با تعداد زیادی اشیاء هم نوع طرف هستیم ، می بایست از آرایه ها کمک بگیریم. آرایه ها ، مانند یک جدول عمل می کنند. شما تعیین می کنید که این جدول چند خانه دارد، چند بُعدی است و چه نوع اشیائی در آن قابل ذخیره سازی است. برای مثال کد زیر، یک آرایه 8x8 (دو بعدی) را که توانایی ذخیره سازی اشیاء PictureBox دارد، می سازد. در اینجا نام این آرایه را picArray قرار داده ایم:

PictureBox[,] picArray = new PictureBox[8,8];

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

for(int i=0; i<8; i++)
{
    for(int j=0; j<8; j++)
    {
        picArray[i,j] = pic;
    }
}

اجازه دهید نحوه مدیریت رویداد برای هر یک از اشیاء اضافه شده به فرم را توضیح دهیم.

خیلی ساده است. اول یک متد بصورت زیر می سازیم: (البته محیط ویژوال استودیو قابلیت های فراوانی برای اتوماسیون این مراحل ، دارد)

void p_mouseEnter(object sender, EventArgs e)
{
    //اینجا برنامه مربوطه را بنویسید
}

حالا باید کاری کنیم که با اتفاق افتادن رویداد ، برنامه موجو در متد بالا اجرا شود. برای مثال اگر بخواهیم برای رویداد Click شئ pic برنامه بنویسیم به نحوی که بعد از اینکه رویداد Click اتفاق افتاد، متد p_mouseEnter (این صرفا یک نام هست) اجرا شود، در همانجایی که خصوصیت های Size و Location و... را تنظیم کردیم، این متد را به رویداد Click انتساب می دهیم. بصورت زیر:

pic.Click += new EventHandler(p_mouseEnter);

شما می تونید برنامه نمونه ای رو که من نوشتم رو دانلود کنید. این برنامه تمام نکاتی رو که در این مطلب گفتیم رو در بر دارد.

دانلود برنامه 8 وزیر (رابط کاربری / بدون الگوریتم اصلی)

هر سوالی داشتید بپرسید. ان شاء الله اگر بلد بودم، پاسخگو خواهم بود...

موفق باشید.

نظرات  (۳)

سلام .من میخواهم در فرم محبط دینامیکی و فعال داشته باشم چیزی شبیه محیط ansys آیا امکان پذیر هست در #c ( چگونه فرابگیرم). همچنین ساخت نماد هایی (مثل  button ) که رابط گرافیکی کاربر ومحیط گرافیکی باشد.

ممنون از محبت شما و سپاس
پاسخ:
سلام.
زبان #C یک زبان تقریبا همه منظوره هست. اما کاربردهای اون در برنامه های اتوماسیون اداری بیشتر هست.
باید در پاسخ سوال شما بگویم که بله. این امکان وجود دارد. همین مقاله (ایجاد رابط کاربری بصورت دینامیک) خیلی کمک کننده هست. سعی کنید User Control ها رو هم فرا بگیرید. اگر مایلید بصورت کاملا گرافیکی (در حد برنامه Ansys) برنامه نویسی کنید، یکی از framework های مربوط به برنامه نویسی گرافیکی رو انتخاب کنید (مثل OpenGL یا DirectX) و روش برنامه نویسی با این فریم ورک ها رو فرا بگیرید. درضمن خود #C (در واقع دات نت فریم ورک) از برنامه نویسی گرافیکی مبتنی بر +GDI پشتیبانی می کند.
موفق باشید.
سلام استاد میدونم پرروییه ولی میشه بگین بزودی یعنی کی؟
پاسخ:
سلام.
ان شاء الله نهایتا فردا یا پسفردا آپلود خواهم کرد.
ببخشید که خیلی دیر شد.
سلام استاد خیلی خلاصه بود خیلی کم افتاد اگه ممکنه درمورد شی گرایی زیاد توضیح بدین
پاسخ:
سلام
ان شاء الله بزودی شئ گرایی رو شروع خواهم کرد.

ارسال نظر

لطفا اگر می خواهید در بخش نظرات، کد برنامه مورد نظر خود را بنویسید، قسمت زیر (Program Code) را کپی کرده، و در کادر "پیام" ، paste کنید. سپس برنامه مورد نظر خود را در کادری که ایجاد می شود، وارد کنید.

  • کلید میانبر برای Copy کردن: Ctrl+C

  • کلید میانبر برای paste کردن: Ctrl+V

//Program Code

از همکاری شما کمال تشکر را دارم.

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی