اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

آخرین نظرات
  • ۱۳ بهمن ۰۱، ۱۵:۳۱ - حسنا سادات و سما سادات
    عالی

۵ مطلب با کلمه‌ی کلیدی «block» ثبت شده است

  • ۲
  • ۰

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

سلام...

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

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

  • غلامعلی حسینی بهجانی
  • ۲
  • ۰

حلقه while

بیان while یک بیان (دستور) یا بلوکی از بیان ها را تا زمانی که عبارت تعیین شده اش به false ارزیابی شود، اجرا می کند.

مثال

    class WhileTest 
    {
        static void Main() 
        {
            int n = 1;
            while (n < 6) 
            {
                Console.WriteLine("Current value of n is {0}", n);
                n++;
            }
        }
    }
    /*
        Output:
        Current value of n is 1
        Current value of n is 2
        Current value of n is 3
        Current value of n is 4
        Current value of n is 5
     */

  • غلامعلی حسینی بهجانی
  • ۲
  • ۰

بیان using

یک املاء (syntax) راحت که درستی استفاده از اشیاء IDisposable را تضمین میکند را ارائه می دهد.

مثال

مثال زیر چگونگی استفاده از بیان using را نشان می دهد.

using (Font font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

ملاحظات

File و Font نمونه هایی از نوع های مدیریت شده (managed) هستند که منابع مدیریت نشده (unmanaged) را دستیابی می کنند (در این مورد دستگیره های فایل و زمینه ها دستگاه (دستگاهی که قرار است فونت در آنجا به نمایش در بیاید)) انواع گوناگون دیگری از منابع مدیریت نشده و نوع های کتابخانه کلاسی که آنها را کپسوله می کنند وجود دارد. همه ی چنین نوع هایی باید رابط IDisposable را پیاده سازی کنند.

  • غلامعلی حسینی بهجانی
  • ۲
  • ۰

کلمه کلیدی unsafe

کلمه کلیدی unsafe یک زمینه (context) ناامن تعریف می کند که برای هر عملی که با اشاره گرها در ارتباط باشد، لازم است.

شما می توانید از اصلاحگر unsafe در اعلان یک نوع یا یک عضو استفاده کنید. حوزه همان نوع و یا عضوی که دارای اصلاحگر unsafe باشد به عنوان زمینه ناامن در نظر گرفته می شود. در مثال زیر متدی را با اصلاحگر unsafe اعلان کرده ایم:

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

حوزه (scope) زمینه ناامن از لیست پارامترها شروع شده و تا آخر حوزه متد ادامه دارد، بنابراین از اشاره گرها می توان در لیست پارامترها نیز استفاده کرد:

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

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

unsafe
{
    // Unsafe context: can use pointers here.
}

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلیدواژه stackalloc

در زمینه کدنویسی ناامن (unsafe code context) ، کلمه کلیدی stackalloc برای تخصیص یک بلوک حافظه در پشته (stack) بکار می رود.

int* fib = stackalloc int[100];

ملاحظات

مثال زیر سری فیبوناچی را که هر عدد حاصل جمع دو عدد قبل از خود در سری می باشد را تا 100 عدد ، تولید می کند . در کد زیر ، بلوکی از حافظه که اندازه آن برای نگهداری 100 عنصر از نوع int کافی است، در stack تخصیص داده شده نه در حافظه heap. آدرس این بلوک حافظه در اشاره گر fib ذخیره شده است (البته مثال زیر این کار را برای 20 عدد انجام می دهد که برای حفظ امانت عدد 100 را تغییر ندادم). این حافظه تحت تاثیر زباله جمع کن (Garbage Collector) قرار نمی گیرد و بنابراین مجبور نیستیم که با استفاده از کلمه کلیدی fixed ثابت شود. عمر این بلوک حافظه بستگی به عمر متدی دارد که این بلوک را تعریف کرده است. شما نمی توانید قبل از پایان متد این حافظه را آزاد کنید.

استفاده از stackalloc فقط در اعلان های متغیرهای محلی معتبر است.

امنیت

کد unsafe از امنیت کمتری نسبت به کد safe برخوردار است. هرچند استفاده از stackalloc بصورت اتوماتیک امکانات تشخیص تجاوز از بافر (buffer overrun detection) زبان زمان اجرای عمومی (CLR) را فعال می کند. اگر یک تجاوز بافر تشخیص داده شود، با بیشترین سرعت ممکن پردازش خاتمه پیدا می کند تا شانس اجرای کدهای مخرب به حداقل برسد.

مثال

  • غلامعلی حسینی بهجانی