اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۱۰۷ مطلب با کلمه‌ی کلیدی «programming» ثبت شده است

  • ۱
  • ۰

رابط (interface) می تواند یک رویداد را اعلان کند. مثال زیر چگونگی پیاده سازی رویدادهای رابطی را در یک کلاس نشان می دهد. بطور مقدماتی قواعد و قوانین کار مانند پیاده سازی متد ها یا پراپرتی های رابطی می باشد.
برای پیاده سازی رویدادهای رابطی در یک کلاس

  • رویداد را در کلاستان اعلان کرده، سپس آنرا در مکان دلخواه فراخوانی کنید.
    namespace ImplementInterfaceEvents
    {
        public interface IDrawingObject
        {
            event EventHandler ShapeChanged;
        }
        public class MyEventArgs : EventArgs 
        {
            // class members
        }
        public class Shape : IDrawingObject
        {
            public event EventHandler ShapeChanged;
            void ChangeShape()
            {
                // Do something here before the event…
    
                OnShapeChanged(new MyEventArgs(/*arguments*/));
    
                // or do something here after the event. 
            }
            protected virtual void OnShapeChanged(MyEventArgs e)
            {
                if(ShapeChanged != null)
                {
                   ShapeChanged(this, e);
                }
            }
        }
    
    }

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

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

مثال ساده زیر راه استاندارد اعلان رویدادها در یک کلاس پایه ای را نشان می دهد، در نتیجه آنها می توانند از طریق کلاس های مشتق شده هم برپا شوند. این الگو بطور گسترده ای در کلاس های Windows Form در کتابخانه کلاس دات نت فریم وورک استفاده شده اند.
وقتی که شما یک کلاس می سازید که توانایی استفاده به عنوان کلاس پایه برای دیگر کلاس ها را دارد، می بایست به این حقیقت توجه داشته باشید که رویدادها نوعی خاص از وکیل ها هستند که فقط می توانند از داخل کلاسی که آنها را اعلان کرده فراخوانی شوند. کلاس های مشتق شده نمی توانند مستقیما" رویداد هایی که در داخل کلاس پایه تعریف شده است را فراخوانی کنند. هرچند در بعضی مواقع شما ممکن است رویدادی را بخواهید که فقط توانایی فراخوانی توسط کلاس پایه را داشته باشد، در اکثر مواقع، شما می بایست کلاس مشتق شده را قادر سازید که رویدادهای کلاس پایه را فراخوانی کند. برای انجام این کار، شما می توانید یک متد فراخواننده محافظت شده (protected) در کلاس پایه بسازید، بگونه ای که رویداد را دربر بگیرد.کلاس های مشتق شده می توانند با صدا زدن یا بازنویسی (override) کردن این متد فراخواننده، رویداد را بصورت غیر مستقیم فراخوانی نمایند.

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

روال پیش رو چگونگی افزودن رویدادهای منطبق با الگوی استاندارد دات نت فریم وورک به کلاس ها و ساختارهایتان را توضیح میدهد. همه ی رویدادها در کتابخانه کلاس دات نت فریم وورک ، برپایه وکیل EventHandler می باشند که بصورت زیر تعریف شده است :

public delegate void EventHandler(object sender, EventArgs e);


نکته
دات نت فریم وورک 2.0 یک نسخه جنریک (عام) از این وکیل را بصورت (EventHandler (of TEventArgs معرفی می کند. مثال های زیر چگونگی استفاده از هر دو نسخه را نشان می دهند.

هرچند رویدادهای موجود در کلاس هایی که شما تعریف کرده اید می توانند بر پایه ی هر وکیل معتبری باشند، حتی وکیل هایی که مقداری را بازگشت می دهند، اما در کل پیشنهاد می شود که شما رویدادهایتان را برپایه الگوی دات نت فریم وورک قرار دهید. این کار با استفاده از EventHandler ، بصورتی که در مثال زیر توضیح داده شده ، انجام می پذیرد.

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

برنامه های #C شامل یک یا بیش از یک فایل است. هر فایل می تواند شامل صفر یا تعدادی فضای نام باشد. هر فضای نام می تواند در کنار فضای نام های دیگر (در صورت وجود) حاوی نوع هایی از جمله کلاس، ساختار، رابط، نوع های شمارشی و وکیل ها باشد. اسکلت یک برنامه سی شارپ که حاوی همه این عناصر هست را ببینید:

// A skeleton of a C# program 
using System;
namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface 
    {
    }

    delegate int YourDelegate();

    enum YourEnum 
    {
    }

    namespace YourNestedNamespace
    {
        struct YourStruct 
        {
        }
    }

    class YourMainClass
    {
        static void Main(string[] args) 
        {
            //Your program starts here...
        }
    }
}
  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

یک زبان برنامه نویسی که برای ساختن برنامه های سازمانی ای که روی دات نت فریم وورک اجرا می شوند، طراحی شده. #C که تکاملی از C و ++C است، شیئ گرا بوده و *type safe است. به این دلیل که بصورت کدمدیریت شده کامپایل شده، از مزایای سرویس های زبان عمومی زمان اجرا ، از جمله همکاری بین زبانی، امنیت و GC (زباله روب) بهره مند شده است.


*type safe : در علم کامپیوتر، به یک زبان برنامه نویسی type safe می گویند، هرگاه آن زبان رفتاری را برای هنگامی که برنامه نویس با یک مقدار بعنوان یک "نوع" که متعلق به آن مقدار نیست مواجه می شود را تعریف کند. ایمنی نوع مستلزم این است که برنامه ها هیچ رفتار تعیین نشده ای نداشته باشند (یعنی معناشناسی آنها کامل باشد). بطور معکوس، یک زبان برنامه نویسی unsafe (مثل C) از عملیاتی مثل دسترسی به مکان های دلخواه از حافظه، که در ضوابط معناشناسی آن زبان تعریف نشده، پشتیبانی می کند.

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

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

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

این کتاب از سطح مقدماتی تا پیشرفته را پوشش می دهد. لطفا" نظرات و پیشنهادات خود را از طریق پست الکترونیک بنده (simplecsharp@gmail.com) یا وب سایت MyGem.ir قسمت سی شارپ مطرح بفرمایید.


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

دانلود کتاب

  • غلامعلی حسینی بهجانی
  • ۲
  • ۰
"هدف این کتاب آموزش مهارت های اصولی و ساختار زبان برنامه نویسی #C می باشد. اصولا" بیش تر کتاب ها برنامه نویسی را به وسیله متن توضیح می دهند که این روش برای افراد تازه کار خیلی سنگین می باشد، درصورتی که میزان زیادی از مفاهیم برنامه نویسی می توانند با ترکیبی از کلمات و تصاویر و جداول گیرایی بهتری را داشته باشند.
بیشتر ما بصری فکر می کنیم و تصاویر و جداول می توانند ما را در درک بهتر مفاهیم یاری کنند.
در چندین سال آموزش برنامه نویسی ، فهمیده ام که تصاویری را که بر روی وایت بورد رسم می کردم یکی از سریع ترین چیزهایی بوده است که دانش آموزان را در فهم مفاهیمی که قصد آموزش آن را داشتم، کمک می کرده است.
به هرحال تنها تصاویر آموزشی برای تشریح زبان و پایگاه برنامه نویسی کافی نیستند. هدف از کتاب پیدا کردن بهترین ترکیب از کلمات و تصاویر می باشد تا به شما یک درک کامل از زبان بدهد و قابلیت استفاده به عنوان یک مرجع خوب را داشته باشد.
این کتاب برای هرکس که علاقه به یادگیری مباحثی راجع به زبان #C دارد، از برنامه نویسان مبتدی گرفته تا برنامه نویسان حرفه ای که چندین سال با زبان های برنامه نویسی کار کرده اند، نوشته شده است."
چند پاراگراف بالا مقدمه نویسنده کتاب حاضر است که متأسفانه نمی دانم اسم نویسنده محترم این کتاب چیست. اما با نگاهی گذرا به نظرم رسید که کتاب مفیدی باشد. این شد آنرا برای دانلود در وبلاگ قرار دادم. امیدوارم مفید واقع شود.

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

حلقه 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
     */

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

کلیدواژه volatile

کلمه کلیدی volatile (فرّار) نشان می دهد که یک فیلد می تواند توسط چندین ریسمان (thread) که همزمان درحال اجرا هستند، دستکاری شود. فیلدهایی که بصورت volatile اعلان شده اند، مورد بهینه سازی های کامپایلری ای که فرضشان دسترسی تک ریسمانی است قرار نمی گیرند. این کار تضمین می کند که مقدار فیلد در همه زمان ها به روز ترین مقدار است.

اصلاحگر volatile معمولا" برای فیلدی که بدون بیان lock توسط چندین ریسمان مورد دسترسی قرار می گیرد، استفاده می شود.

کلمه کلیدی volatile را می توان رو فیلدهایی از نوع های زیر اعمال کرد:

  • نوع های مرجع.
  • نوع های اشاره گر (در یک زمینه نا امن (unsafe contenxt)). توجه کنید که با اینکه اشاره گر خودش می تواند volatile باشد، شیئی که اشاره گر به آن اشاره می کند نمی تواند volatile باشد. به بیانی دیگر، شما نمی توانید "اشاره گر به volatile" اعلان کنید.
  • نوع هایی مثل sbyte، byte، short، ushort، int، uint، char، float و bool.
  • نوع شمارشی ای که نوع پایه آن یکی از نوع های byte، sbyte، short، ushort، int یا uint باشد.
  • پارامتر نوع جنریکی که بصورت نوع مرجع شناخته شده باشد.
  • IntPtr و UIntPtr .

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

کلیدواژه virtual

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

public virtual double Area() 
{
    return x * y;
}

پیاده سازی یک عضو مجازی (virtual) را می توان توسط عضو رونویسی کننده در یک کلاس مشتق شده، عوض کرد.

ملاحظات

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

بطور پیش فرض، متدها غیر-مجازی هستند. شما نمی توانید متد غیر مجازی را رونویسی کنید.

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