اثر پروانه ای

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

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

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

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

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

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

سه شنبه, ۱۷ دی ۱۳۹۲، ۰۱:۵۶ ق.ظ

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

سلام...

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

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

به محدوده زمانی ایجاد متغیر، تا زمان از بین رفتن آن متغیر، طول عمر متغیر می گویند. (حالا این یعنی چی؟!)

کامپیوترها دو نوع حافظه مهم دارند: عمدا دومی رو اول میگم. 2- حافظه جانبی(مثل هارد دیسک، فلش، دیسک نوری و...) 1- حافظه اصلی (RAM)، این حافظه برعکس حافظه های جانبی ، بصورتی هست که اطلاعات داخلش با قطع شدن برق کامپیوتر، از بین می رود. به اصطلاح حافظه های فرار هستند. متغیرها در داخل این حافظه قرار دارند.

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

متغیرهای در حالت های خاصی طول عمر کمتری دارند. اینجاست که باید مفهوم Scope رو توضیح بدم. به هر بلوکی از کُد که با علامت } شروع، و با علامت { خاتمه پیدا می کند اسکوپ می گوییم. تصویر زیر بخوبی این مطلب را روشن می کند.

در این شکل بلوک مربوط به حلقه for در کادر شماره 1 قرار دارد و بلوک مربوط به رویداد کلیک Button1 در کادر شماره 2 است. بلوک شماره 1 در داخل بلوک شماره 2 قرار گرفته.

  • قانون اول: تمام متغیرهای تعریف شده در هر بلوک، فقط در همان بلوک ، قابل دسترسی هستند. به متغیر نوع صحیح MyVariable که با فلش آبی رنگ مشخص شده، دقت کنید. این متغیر در بیرون بلوک شماره 1 غیرقابل دسترس بوده (فلش قرمز رنگ). بنابراین حتی اگر خودمان اسم این متغیر را تایپ کنیم، زیر آن خط چین قرمز کشیده خواهد شد، که نشانه خطا در برنامه نویسی است.
  • قانون دوم: بلوک های داخلی می توانند به متغیرهای بلوک های بیرونی دسترسی داشته باشند. به همین علت متغیر count در داخل بلوک شماره 1 قابل دسترسی بوده و کامپایلر از این کار اشکالی نمی گیرد.

ثابت چیست؟ برخلاف متغیرها، مقدار ذخیره شده در داخل ثابت ها غیرقابل تغییر می باشد. ثابت ها حتما باید در هنگام تعریف شدن ، مقداردهی اولیه شوند. برای تعریف ثابت از کلمه کلیدی const استفاده می کنیم. به مثال های زیر دقت کنید:

const float PI = 3.14f;
const int SQUARE_SIDES = 4;
const string COUNTRY = "Islamic Republic of Iran (IRI)";

مزیت های استفاده از ثابت ها:

  • کد نویسی سریع تر. مثلا اگر قرار باشه جمله Islamic Republic of Iran رو در 20 جای برنامه بنویسیم، در هر 20 جای برنامه به نوشتن COUNTRY اکتفا می کنیم.
  • تصحیح سریع کُد: کافیست همانجایی که ثابت را تعریف کرده ایم، مقدار آنرا تغییر دهیم. آن مقدار جدید در هر 20 جای برنامه جایگزین می شود.

تبدیل رشته عددی به عدد واقعی: یکی از مواردی که نیاز به تبدیل رشته عددی به عدد واقعی، وجود دارد، زمانی است که بخواهیم از طریق TextBox یک عدد را از کاربر دریافت کنیم. همانطور که میدانید، متنی را که کاربر در داخل TextBox تایپ می کند، در خاصیت Text مربوط به TextBox ذخیره می شود. اما این خاصیت فقط توانایی ذخیره کردن رشته ها را دارد. برای مثال اگر کاربر عدد 18343 را در داخل TextBox وارد کند، این عدد بصورت رشته "18343" ذخیره خواهد شد. روی رشته ها نمی توانیم عملیات ریاضی انجام دهیم. فقط با عملگر + می توان دو رشته را به چسباند. اینجاست که باید رشته ها رو به عدد تبدیل کنیم. کد زیر رشته عددی موجود در TextBox1 رو به عدد تبدیل کرده و در متغیر عددی num ذخیره می کنه:

int num = Convert.ToInt32(TextBox1.Text);

نکته: باید حتما در TextBox یک عدد وارد شده باشه. وگرنه برنامه با خطا مواجه خواهد شد. البته راهی هم هست که از خطای ناگهانی برنامه جلوگیری کنیم. اما حالا زوده که بگم :)


اما قسمت عملی درس:

یک پروژه جدید بسازید و روی فرم آن کنترل های زیر را قرار دهید:

  • یک عدد TextBox
  • یک عدد دکمه
  • یک عدد ListBox
  • یک عدد ProgressBar
  • یک عدد Timer (از زیر مجموعه Components پیداش می کنید) - خصوصیت Enabled تایمر رو True کنید. به خصوصیت Interval دقت کنید. بعدا این خصوصیت رو تغییر دهید.

شکل فرم بصورت زیر خواهد شد:

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

if (textBox1.Text != "")
{
    listBox1.Items.Add(textBox1.Text);
}

این کد به این معنی هست که اگر TextBox خالی نبود محتویات آنرا به ListBox اضافه کن! (خطاب به کامپیوتر)

برای تایمر برنامه زیر را بنویسید (روی تایمر دابل کلیک کنید):

progressBar1.Value++;
if (progressBar1.Value==100)
{
    Application.Exit();
}

این کد یعنی: مقدار ProgressBar را یکی افزایش بده! اگر مقدار ProgressBar برایر با 100 شد، برنامه را خاتمه بده!

خوب امیدوارم هنوز پر انرژی باشید.

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

التماس دعا...

نظرات  (۵)

سلام من برنامه رو اجرا کردم اما فقط عدد رو تو label مینویسه و progress bar هیچ تغییری نمیکنه... چی کار کنم؟
پاسخ:
سلام.
به احتمال زیاد، دستوری رو که باعث تغییر در ProgressBar میشه رو ننوشته اید و یا ساختار برنامه به شکلی هست که باوجود اینکه دستور رو نوشته اید، هیچوقت اجرا نمیشه. مثلا:
if(1==2){
  ProgressBar.Value=10;
}
خوب در این تکه کد چون عدد 1 با عدد 2 برابر نیست، مقدار پروگرس‌بار تغییری نخواهد کرد.
موفق باشید
یاعلی
  • رندخرابات
  • بعله..اجرا شد!
    دستتون درد نکنه..
  • رندخرابات
  • سلام..خوبین؟
    من امتحانام تموم شد دوباره مزاحمتون شدم! :)
    این اول کاری این برنامه من اجرا نمیشه :(
    http://8pic.ir/images/07375562143921339667.png
    یه سری ارور ساده میده برای = و ( و سمیکولون!
    پاسخ:
    سلام. الحمد لله...
    علامت "مخالف" به این صورت هست :     =!
    اینو درست کنید همه چی حل میشه.
  • سارا حسابی
  • خواهش میکنم.من ترم بعد هم پروژه دارم رو آموزشاتون خیلی حساب کردم. بنده حقیر خیلی دعاتون میکنم انشاالله که تو همه کاراتون موفق باشید برادر
    پاسخ:
    خیلی ممنون خواهرم...
    چشم ان شاء الله بزودی آموزش ها رو ادامه خواهم داد...

  • سارا حسابی
  • سلام استاد ببخشین آموزشاتون رو نمی خواین ادامه بدین؟چندروزه تودرس 10 موندیم
    پاسخ:
    سلام...
    متأسفانه استقبال چندانی از طرف دوستان در سایت افسران نشد. همچنین چند روزی هست که در گیر اکران فیلم های جشنواره فیلم عمار هستم. ان شاء الله تا دو سه روز آینده آموزش رو ادامه خواهم داد...
    ممنون که مباحث رو دنبال می کنید. این باعث دلگرمی هست.

    ارسال نظر

    لطفا اگر می خواهید در بخش نظرات، کد برنامه مورد نظر خود را بنویسید، قسمت زیر (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="">
    تجدید کد امنیتی