PDA

نسخه کامل مشاهده نسخه کامل : آموزش كامل و جامع #C : سي شارپ



صفحه ها : [1] 2

WooKMaN
29-04-2006, 21:00
سلام دوستان ميخوام در اين تاپيك فقط در مورد سي شارپ صحبت كنم
لطفا اگر از دوستان كسي هستش كه ميتونه كمك كنه ممنون ميشم همكاري كنه

ميخوام اين تاپيك رو با مقالات سي شارپ بتركونم


آشنائی با زبان #C
مايكروسافت در مصاف با جاوا، بدنبال ارائه يك زبان كامل بود كه سايه جاوا را در ميادين برنامه نويسی كم رنگ تر نمايد. شايد بهمين دليل باشد كه #C را ايجاد كرد. شباهت های بين دو زبان بسيار چشمگير است. مايكروسافت در رابطه با ميزان استفاده و گسترش زبان فوق بسيار خوشبين بوده و اميدوار است بسرعت زبان فوق گستردگی و مقبوليتی به مراتب بيشتر از جاوا را نزد پياده كنندگان نرم افزار پيدا كند.

با توجه به نقش محوری اين زبان، از آن بعنوان مادر زبانهای برنامه نويسی در دات نت نام برده می شود. مورد فوق به تنهائی، می تواند دليل قانع كننده ای برای يادگيری اين زبان باشد، ولی دلايل متعدد ديگری نيز وجود دارد كه در ادامه به برخی از آنها اشاره می گردد.

مطرح شدن بعنوان يك استاندارد صنعتی
انجمن توليدكنندگان كامپيوتر اروپا (ECMA) زبان #C را در سوم اكتبر سال 2001 بعنوان يك استاندارد پذيرفته (ECMA-334) و بدنبال آن تلاش های وسيعی برای كسب گواهی ISO نيز انجام شده است. زبان فوق در ابتدا توسط شركت مايكروسافت و بعنوان بخشی از دات نت پياده سازی و بلافاصله پس از آن توسط شركت های اينتل، هيوليت پاكارد و مايكروسافت مشتركا، جهت استاندارسازی پيشنهاد گرديد.

زبان #C بگونه ای طراحی شده است كه نه تنها وابستگی به يك Platform خاص را ندارد، بلكه در اغلب موارد وابستگی RunTime نيز ندارد. كامپايلر #C می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اوليه كامپايلر زبان فوق كه توسط برخی از شركت های جانبی ارائه شده است، كدهای #C را به بايت كدهای جاوا كمپايل می كنند. يكی از چنين كامپايلرهائی را می توان در سايت Halcyonsoft.com مشاهده نمود. بنابراين كدهای #C براحتی قابليت حمل بر روی محيط های متفاوت را دارا خواهند بود.

مشخصات تعريف شده زبان #C با ساير استاندارهای تعريف شده ECMA نظير (ECMA-335) CLI (Common Language Infrastructure) بخوبی مطابقت می نمايند. CLI قلب و روح دات نت و CLR(Common Language Runtime) است. اولين نسخه از كامپايلر زبان #C كه از CLI استفاده می كند، NET Framwork. مايكروسافت است.

با توجه به موارد گفته شده، مشخص می گردد كه اين زبان بسرعت بسمت استاندارد شدن حركت و با تاييد استانداردهای مربوطه از طرف انجمن های معتبر بين المللی و حمايت فراگير شركت های معتبر كامپيوتری در دنيا مسير خود را بسمت جهانی شدن بخوبی طی می نمايد.

#C چيست ؟
طراحان زبان #C با تاكيد و الگوبرداری مناسب از مزايای زبانهائی نظير ++C، C و جاوا و ناديده گرفتن برخی از امكانات تامل برانگيز و كم استفاده شده در هر يك از زبانهای فوق، يك زبان برنامه نويسی مدرن شی گراء را طراحی كرده اند. در مواردی، برخی از ويژگی های استفاده نشده و درست درك نشده در هر يك از زبانهای گفته شده، حذف و يا با اعمال كنترل های لازم بر روی آنها، زمينه ايجاد يك زبان آسان و ايمن برای اغلب پياده كنندگان نرم افزار بوجود آمده است. مثلا C و ++C می توانند مستقيما با استفاده از اشاره گرها عمليات دلخواه خود را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامه های كامپيوتری با كارائی بالا ضرورت اساسی دارد. اما در صورتيكه عملياتی اينچنين بدرستی كنترل و هدايت نگردند، خود می تواند باعث بروز مسائل (Bugs) بيشماری گردد.

طراحان زبان #C، با درك اهميت موضوع فوق، اين ويژگی را كماكان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ايجاد اطمينان های لازم مسئله حفاظت نيز مورد توجه قرار گرفته است. جهت استفاده از ويژگی فوق، برنامه نويسان می بايست با صراحت و به روشنی خواسته خود را از طريق استفاده از Keyword های مربوطه اعلان نمايند( فراخوانی يك توانائی و استفاده از آن).

#C بعنوان يك زبان شی گراء عالی است. اين زبان First-Class را برای مفهوم Property (Data Member) بهمراه ساير خصائص عمومی برنامه نويسی شی گراء حمايت می كند. در C و ++C و جاوا يك متد get/set اغلب برای دستيابی به ويژگی های هر Property استفاده می گردد. CLI همچنان تعريف Property را به متدهای get/ser ترجمه كرده تا بدين طريق بتواند دارای حداكثر ارتباط متقابل با ساير زبانهای برنامه نويسی باشد. #C بصورت فطری Events ، Declared Value، Reference Type ، Operator Overloading را نيز حمايت می كند.

كد مديريت يافته
با استفاده از نسخه پياده سازی شده #C توسط مايكروسافت، می توان همواره كد مديريت يافته ای را توليد كرد. يك برنامه #C پس از كامپايل، بصورت برنامه ای در خواهد آمد كه شامل دستورالعمل های تلفيق شده ( CIL (Common Intermediate Language است (درست بر خلاف دستورالعمل های مختص يك ماشين خاص). CIL (گاها با نام MSIL(Microsoft Intermediate Language) با به اختصار IL نيز ناميده می شود ) ، در مفهوم مشابه بايت كدهای جاوا بوده و شامل مجموعه ای از دستورالعمل های سطح پايين قابل فهم توسط تكنولوژی مبتنی بر CLI نظير CLR مايكروسافت خواهد بود. اين برنامه ها بدين دليل كد مديريت يافته، ناميده می شوند كه CLR مسئوليت تبديل اين دستورالعمل ها به كدهای قابل اجرا برروی ماشين و ارائه اغلب سرويس های اساسی برای كدينگ نظير : Garbage Collection، مديريت Heap و عمر مفيد يك Object و يا Type Verification را فراهم می كند.

روش يادگيری #C
يادگيری اين زبان برای افراديكه دارای سابقه آشنائی با يكی از زبانهای برنامه نويسی ++C، C و يا جاوا باشند كار مشكلی نخواهد بود، حتی افراديكه دارای آشنائی اوليه با جاوااسكريپت و يا ديگر زبانهای برنامه نويسی نظير ويژوال بيسك می باشند، امكان پذير و راحت خواهد بود. برخی از برنامه نويسان حرفه ای بر اين باور هستند كه #C نسبت به VB.NET با اقبال بيشتر و سريعتری مواجه خواهد شد، چراكه #C نسبت به ويژوال بيسك خلاصه تر است. حتی برنامه های بزرگ و پيچيده ای كه توسط #C نوشته می گردند خواناتر، كوتاه و زيبا خواهند بود. برخی از ويژگی های ارائه شده در #C نظير Unsigned Integer، Operator OverLoading و امنيت بيشتر Type ها، در VB.NET وجود نداشته و اين امر می تواند دليلی بر فراگيرتر شدن #C نسبت به VB.NET نزد برنامه نويسان با تجربه باشد.

برای يادگيری هر يك از زبانهای حمايت شده در دات نت، می بايست از BCL (Basic Class Library) مربوط به NET Framework. شروع كرد. #C خود صرفا دارای ۷۷ کلمه کليدی يا Keyword بوده كه برای اكثر برنامه نويسان غريب نخواهند بود. در مقابل BCL، دارای ۴۵۰۰ كلاس و تعداد بيشماری متد و Property است كه برنامه نويسان #C، می توانند از آنها برای انجام عمليات دلخواه خود استفاده نمايند. شايد يكی از مسائل قابل توجه جهت يادگيری اين زبان برای برخی از برنامه نويسان حرفه ای عدم وجود برخی از ويژگی ها و امكاناتی باشد كه در گذشته و از طريق ساير زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امكاناتی جهت توارث چندگانه (MI) سلسله مراتبی يك شئ.

خلاصه
بدون شك فراگيری و تسلط بر زبان #C بمنزله كسب يك پتانسيل با ارزش بوده كه ثمرات آن برای برنامه نويسان در حال و آينده ای نه چندان دور بيشتر هويدا خواهد شد. استاندارد بودن و وجود كتابخانه ای مملو از كلاس اين اطمينان را بوجود خواهد آورد كه با فراگيری زبان فوق و كسب، مهارت های لازم، به يك توانائی فرا محيطی جديد دست پيدا خواهيم كرد كه امكان استفاده از آن بر روی محيط های متفاوت وجود خواهد داشت. ويژگی ها و قابليت های بيشمار اين زبان از جمله دلايل قانع كننده ديگری است كه فراگيری آن را توجيه پذير و منطقی می كند.

WooKMaN
29-04-2006, 21:01
مقدمه اي بر سي شارپ : قسمت اول


طي سلسله مقالاتي مي خواهيم با C# بيشتر آشنا شويم. فرض اين مقالات بر اين است كه آشنايي مختصري با زبانهاي برنامه نويسي داريد ، هر چند كار ما تقريبا از صفر شروع مي شود و هدف آن سادگي هر چه بيشتر است.

C# از دو زبان C++ و Java متولد شده است! حاوي بسياري از جنبه هاي C++ مي باشد اما ويژگي هاي شيء گرايي خودش را از جاوا به ارث برده است.

C# اگرچه از C++ گرفته شده است اما يك زبان "خالص" شيء گرا (Object oriented) مي باشد. هر دو زبان ياد شده جزو زبانهاي هيبريد محسوب مي شوند اما طراحان C# اين مورد را به اندازه ي C++ مهم تلقي نكرده اند. يك زبان هيبريد اجازه ي برنامه نويسي با شيوه هاي مختلف را ميسر مي كند. دليل اينكه C++ هيبريد است ، اين است كه قرار بوده تا با زبان C سازگار باشد و همين امر سبب گرديده تا بعضي از جنبه هاي C++ بسيار پيچيده شوند.

زبان سي شارپ فرض اش بر اين است كه شما مي خواهيد تنها برنامه نويسي شيء گرا انجام دهيد و همانند C++ مخلوطي از برنامه نويسي رويه ايي (Procedural) و شيء گرا را نمي خواهيد به پايان برسانيد. بنابراين بايد طرز فكر خودتان را با دنياي شيء گرايي تطبيق دهيد. در ادامه خواهيد ديد كه در سي شارپ هر چيزي شيء است حتي يك برنامه ي سي شارپ.

برنامه ي اول :

Visual studio.net را اجرا كنيد و سپس در صفحه ي ظاهر شده New Project را برگزينيد. حالا از گزينه ي Visual C# projects قسمت Console applications را انتخاب نماييد. نامي دلخواه همانند ex01 را وارد نموده و سپس Ok نماييد. كد زير به صورت خودكار براي شما توليد خواهد شد:




using System;

namespace ex01
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
}
}
}

اگر يك سري از مفاهيم آنرا متوجه نمي شويد اصلا مهم نيست! در مقالات آتي تمام اين موارد مفصل توضيح داده خواهند شد.
متد استاندارد Main در اينجا قسمتي است كه عمليات اصلي برنامه در حالت Console ( شبيه به برنامه هاي تحت داس اما 32 بيتي ) در آن انجام مي شود.
بدون متد Main برنامه هاي سي شارپ قادر به اجرا نخواهند بود. نوع آن در اينجا void تعريف شده است يعني اين متد خروجي ندارد. حتي اگر برنامه هاي استاندارد ويندوز را هم بخواهيد با C# بنويسيد بازهم متد Main حضور خواهد داشت ، هر چند به صورت خودكار ويژوال استوديو آنرا توليد مي كند.

طريقه ي نوشتن توضيحات (Comments) در سي شارپ همانند C++ مي باشد يعني :



/* any comments */


ويا


// any comments


و تنها برنامه نويس براي نوشتن توضيحاتي در مورد كدهاي خود از آنها استفاده مي كند و در خروجي برنامه ظاهر نمي شوند.

فعلا براي پايان قسمت اول از شيء Console و متد WriteLine آن براي نمايش يك جمله ي ساده استفاده مي كنيم. راجع به متدها ، متغيرها و غيره در آينده بيشتر صحبت مي كنيم.
در آخر برنامه ي ما چيزي شبيه به عبارت زير مي باشد:



using System;

namespace ex01
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Hello C#!");
}
}
}


دكمه ي F5 را فشار دهيد تا برنامه اجرا شود.

تعريف متغيرها در سي شارپ:

سي شارپ عناصري را كه بكار مي گيرد همانند اعداد و كاراكترها ، به صورت نوع ها (Types) طبقه بندي مي كند. اين انواع شامل موارد زير مي شوند :
نوع هاي پايه ايي از پيش تعريف شده مانند اعداد و غيره.
نوع هاي تعريف شده توسط كاربر كه شامل STRUCT ها و ENUM ها مي شوند.

نحوه ي تعريف متغيرها از نوع هاي پايه ايي از پيش تعريف شده :
همانطور كه مي دانيد از متغيرها براي نگهداري اطلاعات استفاده مي شود. در سي شارپ ابتدا نوع متغير و سپس نام متغير و در آخر يك سمي كولون بكار برده مي شود. براي مثال :


int a;


كه در اينجا متغير a بعنوان يك متغير حاوي اعداد صحيح تعريف شده است.
نكته ي مهمي كه در اينجا حائز اهميت است ، مقدار دهي اوليه ي متغيرها مي باشد. در غير اينصورت كامپايلر سي شارپ برنامه را بايك خطا متوقف مي كند. دليل اين امر هم اين است كه از استفاده از متغيرهاي بدون مقدار در طول برنامه جلوگيري شود تا ميزان خطاهاي در حين اجرا كاهش يابد.

نوع هاي داده اي پايه ي زير در در سي شارپ به صورت پيش فرض مهيا هستند:

object : نوعي است نامحدود كه مي تواند تمام انواع ديگر را نيز شامل شود. مثال :


object = null;


string : رشته ؛ در اينجا يك رشته توالي كاراكترهاي يونيكد مي باشد. مثال :


string s= "hello";


sbyte : نوع داده ايي صحيح 8 بيتي علامت دار.
byte : نوع داده ايي صحيح 8 بيتي بدون علامت. مثال :


sbyte val = 12;


short : نوع داده ايي صحيح 16 بيتي علامت دار.
ushort : نوع داده ايي صحيح 16 بيتي بدون علامت. مثال :


short val = 12;


int : نوع داده ايي صحيح 32 بيتي علامت دار.
unit : نوع داده ايي صحيح 32 بيتي بدون علامت. مثال :


int val = 12;


long : نوع داده ايي صحيح 64 بيتي علامت دار.
ulong : نوع داده ايي صحيح 64 بيتي بدون علامت. مثال :


Long val1 = 12; long val2 = 34L;


كلا در اينجا u به معناي unsigned است.

float : نوع اعشاري با single precision .
double : نوع اعشاري با double precision . مثال :


float val = 1.23f;


bool : نوع داده ايي Boolean كه مي تواند true و يا false باشد. مثال :


Bool val = true;


char : كاراكتر، دراينجا char يك كاراكتر يونيكد است.


char val = 'h';


به نحوه ي تعريف كاراكتر ها و همچنين رشته ها در سي شارپ دقت كنيد.

decimal : نوع داده ايي دسيمال با 28 رقم معني دار.


decimal val = 1.23M;


يك نكته :

- بهتر است هنگام تعريف يك متغير ، نامي با مسما براي آن انتخاب شود تا در هنگام كار خواندن كد ساده تر گردد. همچنين رسم شده است كه نوع متغير را به صورت خلاصه به نام متغير اضافه مي كنند. براي مثال بجاي FirstName بهتر است بنويسيم strFirstName . به اين نوع نگارش Hungarian notation مي گويند.
- تمام نوع هاي پيش فرض تعريف شده در سي شارپ شيء هستند. در آينده بيشتر در اين مورد صحبت خواهيم كرد.

مثال اين قسمت :

يك برنامه ي console جديد در را VS.NET باز كنيد. نام آنرا در ابتدا ex02 انتخاب نماييد. در اينجا مي خواهيم دو متغير رشته ايي و صحيح را تعريف و سپس در خروجي نمايش دهيم.

كد نهايي به صورت زير مي باشد:



using System;

namespace ex02
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
int intVar1 = 0;

int intVar2;
intVar2=1;

int intV3=15 , intV4 = 12;

string strText1 = "abcd";

Console.WriteLine(
"The value for variables are : \n intVar1="+intVar1 +
"\n intVar2="+ intVar2 +
"\n intV3=" + intV3 +
"\n intV4=" + intV4 +
"\n strText1=" + strText1);

Console.WriteLine("\n\n Press any key to terminate");
Console.ReadLine(); // pause screen!

}
}
}

نكاتي در مورد كد فوق:

- بك اسلش ان ، در زبانهاي مشتق شده از سي به معناي new line مي باشد.
- در كد فوق نحوه ي تعريف چند متغير در يك خط و حالتهاي مقدار دهي مختلف را ملاحظه مي كنيد.
- از متد ReadLine براي نگه داشتن خروجي و مشاهده ي آن در اينجا استفاده كرديم.
- عادت كنيد به صورت دندانه دار كد بنويسيد. اينكار خوانايي كد را صد برابر مي كند. در اينجا كدهاي داخل متد main ، كاملا چند دندانه از آكولادهاي باز و بسته كردن آن جلو تر هستند.
- در كد بالا در متد WriteLine اعداد و رشته ها با هم جمع شده اند! اين مورد بدليل وجود overload هاي زياد اين تابع و ... ميسر گشته است. اصلا به آن دل نبنديد! چون در آينده كامپايلر سي شارپ اگر چنين اعمالي را در جاهاي ديگري مرتكب شويد به شدت با شما برخورد خواهد كرد!! براي جمع كردن اعداد با رشته ها حتما بايد عدد به رشته تبديل گردد و بعد ... . در اين مورد در مقالات بعدي بحث خواهد گرديد.

aminkarami
29-04-2006, 22:22
خسته نباشید اگر منم بتونم یه مقداری بهتون کمک می کنم.
neo

FATIMA
30-04-2006, 17:38
خيلي خوبه

hamidreza_buddy
30-04-2006, 17:47
منم می تونم همراهی کنم. شما ادامه بدید تا من هم مطالبی جمع آوری کنم.

WooKMaN
30-04-2006, 18:54
از تماميه دوستان عزيز كه قصد همكاري دارن ممنون و سپاسگزارم

WooKMaN
30-04-2006, 18:59
مقدمه اي بر سي شارپ : قسمت دوم

مقدمه :

در اين قسمت مي خواهيم با يك سري از اصول اوليه ي شيء گرايي در سي شارپ كمي آشنا شويم. لازم به ذكر است ، بسياري از مواردي كه در اين قسمت مطرح مي شوند فقط براي آشنايي شما است و در آينده بيشتر بحث و مرور خواهند شد.

آشنايي با فضاهاي نام (NameSpaces) :

فضاهاي نام روشي براي مديريت كد نويسي هستند. براي مثال آنها ايجاد شده اند تا تداخلي بين نام هاي توابع در برنامه شما رخ ندهد. اين مساله در پروژه هاي بزرگ خود را نشان مي دهد و ممكن است دو آيتم در يك پروژه نام هاي يكساني را پيدا كنند. بدين وسيله اين شانس تصادم و تداخل كاهش پيدا مي كند. براي ايجاد يك فضاي نام به صورت زير عمل مي شود:




namespace anyName
{
……..

Class anyClassName
{
……….
}

…….

}

يكي از فضاهاي نام پايه اي در دات نت فريم ورك ، فضاي نام System مي باشد. براي استفاده از آن مي توان از كد زير كمك گرفت :


using System;


تمام فضاهاي نام به صورت پيش فرض public مي باشند و در خارج از كد شما قابل دسترسي هستند. روش استفاده از آنها به صورت زير است:


ProjectName.NameSpace.ClassName.MemberName


نكته :
اگر دقت كرده باشيد هنگامي كه كرسر ماوس را روي هر آيتمي در منوي autocomplete نگه مي داريد و يا آنرا انتخاب مي كنيد يك راهنماي كوچك نمايش داده مي شود كه در حقيقت كامنت مربوط به آن تابع مي باشد. روش نوشتن چنين كامنت حرفه اي كه در منوهاي ويژوال استوديو ظاهر شود به صورت زير است كه بهتر است (!) قبل از هر تابع يا خاصيت يا كلاس و .... نوشته شود


///
///
///
///


كلاس ها :

چون سي شارپ تمام سر و كارش با كلاس ها است بنابراين بايد در مورد نحوه ي تعريف و استفاده از آنها تسلط كافي داشته باشيم.

يك پروژه ي جديد console در VS.NET باز كنيد و نام آنرا در ابتدا ex03 وارد نماييد.
بعد از باز شدن پروژه ، از منوي Project گزينه ي Add class را انتخاب كنيد تا كلاسي جديد به نام clsDate.cs را اضافه نماييم. ساختار فايل ايجاد شده توسط VS.NET به صورت زير است :



using System;

namespace ex03
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here (chashm!)
//
}
}
}


تابع يا متد clsDate كه در اينجا به صورت پيش فرض ايجاد شده است اصطلاحا سازنده (constructor) نام دارد. اين تابع هر بار كه يك شيء جديد از كلاس مي سازيم به صورت خودكار اجرا مي شود.

از اين كلاس مي خواهيم براي نمايش تاريخ/ ساعت و غيره استفاده كنيم.

براي مثال مي خواهيم تاريخ جاري سيستم را به صورت يك خاصيت از اين كلاس دريافت كنيم. براي اين منظور كد زير را به برنامه اضافه مي نماييم:



public string currentSystemDate
{
get
{
return System.DateTime.Today.ToString() ;
}
}



توضيح كد فوق :

خاصيتي را كه مي خواهيم از برنامه دريافت كنيم با كلمه ي كليدي get معرفي مي نماييم. هر چيزي كه اين قسمت برگرداند خروجي currentSystemDate خواهد بود. اين دستور زبان كه در بالا معرفي شد استاندارد است و در همه جا به يك صورت تعريف و بكار برده مي شود. پس شكل آنرا به خاطر بسپاريد.
از كلمه ي كليدي return براي برگرداندن يك خروجي از خاصيت و يا تابع استفاده مي شود.

براي استفاده از اين خاصيت جديد ، در فايل Class1.cs كه متد main برنامه ي ما در آنجا قرار دارد به صورت زير عمل مي كنيم :


clsDate m_var = new clsDate(); // initialize variable
Console.WriteLine ( m_var.currentSystemDate );
Console.ReadLine();//pause!


توضيح كد فوق :

براي استفاده از يك كلاس بايد يك متغير از آن را تعريف كنيم. در هر زباني يك سري نوع هاي استاندارد مانند int و string و غيره وجود دارند. كلاس هم در حقيقت يك نوع داده ي بسيار بسيار قدرتمند به شمار مي آيد. براي تعريف يك متغير از نوع جديد روش كار مانند سابق است. براي مثال زماني كه يك متغير عدد صحيح را تعريف مي كنيد به صورت زير عمل مي شود :


int i=0;


راي تعريف يك متغير از نوع داده اي كه خودمان تعريف كرده ايم نيز بايد به همين صورت عمل شود.


clsDate m_var = new clsDate();


از كلمه ي كليدي new اينجا به صورت استاندارد براي مقدار دهي اوليه به اين متغير جديد استفاده مي نماييم.

سپس به روش دستيابي به اين خاصيتي كه به كلاس اضافه كرده ايم مي رسيم.


m_var.currentSystemDate


كلا چه يك خاصيت و يا يك متد را به كلاس اضافه نماييم براي دستيابي به آن از عملگر نقطه پس از ذكر نام متغير تعريف شده از نوع كلاس خود ، استفاده مي نماييم. براي استفاده از خاصيت ها نيازي به آوردن () بعد از ذكر نام خاصيت نمي باشد.

عموما از خاصيت ها براي برگرداندن و يا تنظيم يك مقدار ساده استفاده مي شود و در آنها عمليات پيچيده اي مد نظر نمي باشد.

توضيحي در مورد ; () System.DateTime.Today.ToString
استفاده از خواص :

شما به ويژگي هاي يك شيء با استفاده از خواص آن مي توانيد دسترسي پيدا كنيد. يك property عضوي است كه امكان دسترسي به ويژگي شيء يا كلاس را فراهم مي كند. براي مثال طول يك رشته (string) ، سايز يك فونت ، عنوان يك فرم و نام يك مصرف كننده ، خاصيت هستند .
بسياري از اشياء ذاتي دات نت فريم ورك ، خواص مفيد زيادي را به همراه دارند. براي مثال شيء DateTime را در نظر بگيريد. با استفاده از خاصيت Today آن مي توان تاريخ جاري سيستم را بدست آورد. براي استفاده از يك خاصيت لازم است تا كلاس تعريف كننده شيء در برنامه مهيا باشد. منظور همان استفاده از فضاي نام مربوطه مي باشد. پس از وارد كردن فضاي نام كلاس مورد نظر مي توانيد از شيء و خواص آن استفاده كنيد. دو راه وجود دارد يا به صورت كامل تمام موارد بايد ذكر شوند مانند System.DateTime.Now; و يا با وارد كردن فضاي نام System كوتاه سازي صورت مي گيرد.
براي استفاده از هر متد و يا شيء ايي در سي شارپ بايد اين شيء قابل دسترسي باشد. براي مثال شيء Console كه از آن براي چاپ كردن خروجي بر روي صفحه ي نمايش استفاده مي كنيم در فضاي نام System واقع شده است. يا بايد در ابتداي برنامه ذكر كرد using System ; و سپس خيلي راحت از اين شيء استفاده كرد و يا مي توان اينكار را انجام نداد و نوشت : System.Console و الي آخر. با ذكر فضاي نام در ابتدا با استفاده از using مي توان خلاصه نويسي كرد.

نتيجه ي نهايي مثال اين فصل :

محتويات فايل Class1.cs :



using System;

namespace ex03
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate(); // initialize variable
Console.WriteLine ( m_var.currentSystemDate );

Console.ReadLine();//pause!
}
}
}

محتويات فايل clsDate.cs كه به برنامه اضافه كرديم:



using System;

namespace ex03
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here
//
}

public string currentSystemDate
{
get
{
return System.DateTime.Today.ToString() ;
}
}


}
}

WooKMaN
02-05-2006, 21:08
مقدمه اي بر سي شارپ : قسمت سوم

ساختارهاي تصميم گيري :

در بسياري از موارد هنگام برنامه نويسي لازم است تا از عبارات شرطي استفاده كنيم. براي انجام اينكار دو روش عمده وجود دارد. استفاده از if و يا switch . از if بيشتر براي مقايسه هايي تكي و كوچك استفاده مي شود و حاصل مقايسه ي آن يا true است و يا false . از عبارت switch هنگامي استفاده مي شود كه مقايسه هاي متعددي بايد در مورد يك مقدار صورت گيرد.
هر دو عبارت if و switch توسط عبارتهايي Boolean كنترل مي شوند ( true و يا false ) . در هنگام استفاده از if اگر عبارت Boolean حاصل اش true باشد اولين قسمت شرط اجرا مي شود و سپس برنامه از انتهاي if ادامه پيدا مي كند. اگر حاصل عبارت Boolean مساوي false باشد كنترل برنامه به قسمت else منتقل مي شود.

مثال :

يك پروژه ي جديد console باز كنيد و نام آنرا ex04 بگذاريد. سپس كد زير را در آن وارد و جرا كنيد :


using System;

namespace ex04
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Enter 1 character to be evaluated");

char cUserInput = (char) Console.Read();

if ( char.IsDigit( cUserInput ) )
Console.WriteLine("The char is a number!");
else
Console.WriteLine("The char is not a number!");

}
}
}


نكاتي در مورد كد فوق :

1- سي شارپ به كوچكي و بزرگي حروف حساس است . براي مثال cUserInput با cUserinput فرق مي كند.
2- حتما بايد بعد از if پرانتزها ذكر گردد.
3- حتما بايد داخل if يك عبارت Boolean ذكر شود مانند if(x>5) .
4- در سي شارپ مقايسه ي تساوي دو عبارت با == و انتساب با = انجام مي شود. ( موارد 1 و 4 مواردي هستند كه اغلب تازه كاران با آن مشكل دارند! ) براي مثال if(i==3) صحيح است اما if(i=3) در سي شارپ معنايي ندارد.
5- اگر بعد از if يك خط كد قرار گيرد نيازي به آوردن آكولاد ها نيست. هنگامي نياز به آكولادها مي باشد كه بيش از يك خط بايد بعد از if قرار گيرد.
6- در سي شارپ همانند اسلاف خودش براي تبديل نوع هاي داده ايي مي توان به صورت زير نيز عمل كرد : (char) Console.Read() ; يعني دريافتي Read به char تبديل مي شود .در اين مورد باز هم صحبت خواهد شد.
7- همانطور كه ذكر شد در سي شارپ همه چيز شيء است حتي نوع هاي پايه ايي مانند char . با استفاده از متد IsDigit آن مي توان چك كرد كه آيا ورودي آن عدد است يا خير؟ ( در مورد متدها صحبت خواهد شد )

استفاده از switch :

بهتر است اين مورد را با يك مثال دنبال كنيم.
پروژه ي سي شارپ جديدي به نام ex05 در حالت console در VS.NET باز كنيد. دراينجا مي خواهيم يك كلاس جديد تعريف كرده و توسط خاصيتي كه در آن ايجاد مي كنيم متوجه شويم روز جاري مطابق سيستم چه روزي است .
يك كلاس جديد از منوي پروژه ،‌با استفاده از گزينه ي Add class به برنامه اضافه كنيد و نام آنرا در ابتدا clsDate بگذاريد.


using System;

namespace ex05
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here
//
}

public string systemDayOfWeek
{
get
{

string res="";
switch( System.DateTime.Now.DayOfWeek.ToString())
{
case "Saturday" :
res = "شنبه";
break;

case "Sunday" :
res = "يک شنبه" ;
break;

case "Monday":
res = "دوشنبه";
break;

case "Tuesday":
res = "سه شنبه";
break;

case "Wednesday":
res = "چهار شنبه";
break;

case "Thursday":
res = "پنج شنبه";
break;

case "Friday":
res = "جمعه" ;
break;
}

return res ;
}

}


}
}


هنگام ذخيره كردن اين كد ويژوال استوديو به شما اخطار مي دهد كه كد داراي حروف يونيكد است. از منوي فايل گزينه ي advanced save options را انتخاب كنيد. در اينجا مي توان نوع ذخيره سازي را يونيكد انتخاب كرد.

براي استفاده از كلاس فوق مانند مطالبي كه در قسمت قبل گفته شد عمل مي كنيم :


using System;

namespace ex05
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate();
Console.WriteLine( m_var.systemDayOfWeek );
Console.ReadLine();

}
}
}


هر چند حالت console يونيكد را پشتيباني نمي كند ولي اصل برنامه براي ما مهم است و در آينده بيشتر از آن استفاده خواهيم كرد.

همانطور كه ملاحظه كرديد اگر از switch استفاده نمي شد بايد از 7 عدد if ‌استفاده مي گرديد كه اصلا ظاهر حرفه اي و شكيلي نداشت!
با استفاده از عبارت زير كار مقايسه شروع مي شود. روز سيستم در يافت شده و وارد بدنه ي switch مي گردد. سپس توسط case ها چك مي شود تا تساوي آن با عبارت بعد از case به اثبات برسد.


switch( System.DateTime.Now.DayOfWeek.ToString())


اگر هر كدام از عبارات بعد از case صحيح بودند كار پس از آن كه در اينجا انتساب است انجام شده و سپس توسط break كنترل برنامه از switch خارج مي شود و ادامه ي كار دنبال مي گردد.
اگر هيچكدام از case ها صحيح نبودند مي توان از گزينه ي default هم در صورت نياز استفاده كرد. اين حالت در يك چنين مواقعي اجرا مي گردد.

WooKMaN
04-05-2006, 21:01
مقدمه اي بر سي شارپ : قسمت چهارم
آرايه ها در سي شارپ :

هنگامي آرايه ها ايجاد مي شوند كه بخواهيم با مجموعه اي از اطلاعات همجنس كار كنيم. براي نمونه از يك آرايه براي ذخيره تعدادي كاراكتر مي خواهيم استفاده نماييم. آرايه ها هم يك نوع متغير هستند پس بايد تعريف و مقدار دهي اوليه شوند ، نوع و تعداد اعضاي آنها نيز بايد معين گردد.
فرض كنيد 10 داده ي هم جنس داريم ( براي مثال رشته (string) ) و مي خواهيم آنها را ذخيره كنيم. يا مي توان 10 متغير مختلف را تعريف كرد و سپس تك تك آنها را مقدار دهي نمود و يا يك آرايه تعريف نمود و سپس در خانه هاي مختلف آن اين ده عضو را چيد. اين مطلب زماني حائز اهميت مي شود كه داده هاي همجنس و به نوعي مرتبط ما تعداد زيادي داشته باشند.

براي تعريف آرايه چندين راه مختلف وجود دارد :
براي تعريف آرايه ابتدا نوع آنرا مشخص مي كنيد سپس [] را بايد جلوي تعريف نوع بگذاريد اين دستور زبان است و چون چرا ندارد! در زبان سي كمي متفاوت بود. اين كروشه ها بعد از نام متغير مي آمدند. و سپس در اينجا نام يك متغير را كه بعدا به آن ارجا مي دهيم خواهيد گذاشت. براي مثال





برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حد پايين آرايه صفر بوده براي مثال اگر آرايه chrData[] ده عضو داشته باشد، اولين عضو آن chrData[0] و آخرين عضو آن chrData[9] است.
مطلب ديگري كه در مورد آرايه ها خيلي مهم است اندازه ي آن است. يعني يك آرايه حاوي چند خانه ي خالي است كه ما اجازه داريم آنرا پر كنيم. مثال :




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


1- تعريف آرايه اي از رشته ها و مقدار دهي اوليه آن.




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

2- تعريف و مقدار دهي اوليه




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


كه آرايه اي از نوع رشته اي به طول 2 عضو با مقدار دهي اوليه ايجاد شده است. در اين حالت نيازي به تعيين طول آن نمي باشد.

3- روشي ديگر براي مقدار دهي اوليه




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثال : يك پروژه ي جديد Console سي شارپ را باز كنيد و نام آنرا در ابتدا ex06 بگذاريد. در اين مثال مي خواهيم نحوه ي كار با آرايه ها را مرور كنيم :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نكاتي در مورد كد فوق :
1- نحوه ي استفاده از عملگر + را براي اتصال رشته هاي بلند در كد فوق مي توان ديد.
2- در سي شارپ پايان خط سمي كولون مي باشد. بنابراين نگراني در مورد چند خطي شدن يك دستور وجود ندارد.
3- هنگامي كه آرايه اي را با مقادير درون آكولادها ، مقدار دهي اوليه مي كنيد لزومي ندارد طول آن آرايه را مشخص كنيد ؛ مانند آرايه sGoalResponse در بالا. در غير اينصورت حتما بايد طول يك آرايه را كه معرف تعداد خانه هاي خالي آن است ، معرفي كنيد مانند آرايه sGoalList .
4- فعلا حلقه ي for را در اين مثال بخاطر داشته باشيد تا در مقاله ي بعدي راجع به آن صحبت كنيم

WooKMaN
07-05-2006, 22:42
مقدمه اي بر سي شارپ : قسمت پنجم
حلقه ها در سي شارپ :

مقدمه :

اگر نياز باشد تا قطعه اي از كد بيش از يكبار اجرا شود نياز به استفاده از حلقه ها مي باشد. براي مثال فرض كنيد آرايه اي به طول 1000 تعريف كرده ايد. اكنون مي خواهيد آنرا با هزار عدد متوالي پركنيد. بديهي است كه روش زير كارآمد نيست! :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نوشتن اين خطوط متوالي احتمالا با كپي و پيست و اصلاح آن حداقل نيم ساعت طول مي كشد! بنابراين نياز به وسيله اي حس مي شود كه بتوان بوسيله ي آن امثال اينگونه كارها را انجام داد.

تعريف حلقه ها و استفاده از آنها :

براي تعريف حلقه ها ابزارهاي متعددي مانند while, do , for , foreach وجود دارند. استفاده و انتخاب آنها بستگي به سليقه ي شما و منطق برنامه دارد. در هر حال يك مساله بديهي است كه همواره بيش از يك راه حل براي يك مساله وجود خواهد داشت.

استفاده از حلقه ي for :

عموما كدنويسي را با كد نويسي مي توان آموخت! بنابراين در مورد انواع حلقه ها مثالهايي ارائه خواهد گرديد.

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex07 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- براي تعريف حلقه ي for همانطور كه مي بينيد بايد تعداد بار اجراي حلقه ( اينجا از 0 تا 999 است ) و همچنين نحوه ي رسيدن از 0 به 1000 را مشخص كرد ( در اينجا i++ است يعني هر بار يك واحد به شمارشگر حلقه اضافه مي شود. )
2- در زبان سي i++ يعني i=i+1 و i-- يعني i=i-1 و كلا i-=n يعني i=i-n و به همين ترتيب. براي مثال i*=n يعني i=i*n و i+=n يعني i=i+n و ...
3- اگر پس از حلقه ي for يك خط كد داشته باشيم نيازي به آكولاد نيست (مانند قسمت اول كد). ولي اگر تعداد خطوط مربوط به بدنه ي for زياد بود بايد حتما از آكولاد استفاده شود (مانند قسمت دوم كد). (اين قاعده اي كلي است در زبانهاي مشتق شده از زبان سي در مورد هر چيزي!)
4- فرض كنيد در قسمت اول كد بالا بجاي 1000 مي نوشتيد 1001 . سريعا با يك خطاي زمان اجرا مواجه مي شديد. زيرا مي خواستيد به عضوي از آرايه دسترسي پيدا كنيد كه تعريف نشده است. راه مدرن چك كردن اين مسائل استفاده از خاصيت Length آرايه است كه در قسمت دوم كد در عمل مشاهده مي نماييد. هميشه از اين روش استفاده كنيد.
5- حلقه ي اول يعني اينكه كار پر كردن آرايه intData را از صفر تا 999 يكي يكي (i++) انجام بده.

استفاده از حلقه ي while :
يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex08 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :
1- حلقه ي while در بالا كار انجام حلقه را تا هنگامي انجام مي دهد كه شرط ذكر شده در ابتداي آن صادق و برقرار باشد. يعني در حلقه ي فوق تا وقتي n<6 است اين حلقه ادامه خواهد يافت.
2- حلقه ي while صفر يا بيشتر بار ممكن است اجرا شود.
3- در كد فوق از {0} استفاده گرديده است. متد WriteLine به شما اين اجازه را مي دهد كه n تا آرگومان براي آن تعريف كنيد و مقادير هر كدام را كه خواستيد در كد نمايش دهيد از {x} استفاده كنيد. در اين مورد مقدار آرگومان x ام نمايش داده مي شود.

استفاده از حلقه ي do :

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex09 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- اين حلقه به حلقه ي do…while معروف است و هر دو جزء آن بايد ذكر گردد.
2- اين حلقه تا زماني كه شرط ذكر شده در قمست while صحيح است ادامه مي يابد.
3- اين حلقه در ابتداي كار بدون توجه به قسمت while حداقل يكبار اجرا مي شود. (مثال زير را اجرا نماييد)



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

استفاده از حلقه ي foreach :

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex10 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- از foreach براي حركت در بين اعضاي يك آرايه (مانند مثال بالا) و يا مجموعه ايي از اشياء استفاده مي شود (روشي شكيل ، مدرن و مطمئن! و تقريبا به ارث رسيده از ويژوال بيسيك!!).
2- در زبانهاي مشتق شده از C ، عملگر % ، باقيمانده را محاسبه مي كند.
3- در كد فوق با استفاده از حلقه ي foreach تك تك اعضاي آرايه در مورد زوج و يا فرد بودند مورد بررسي قرار گرفته اند و تعداد اعضاي زوج و فرد در آخر نمايش داده مي شود

WooKMaN
08-05-2006, 23:27
مقدمه اي بر سي شارپ : قسمت ششم
دو مورد تكميلي در مورد حلقه ها در سي شارپ :

1- هر جايي خواستيد به هر دليلي حلقه را پايان دهيد مي توانيد از دستور break; استفاده كنيد. در اين حالت به صورت آني حلقه خاتمه يافته و كدهاي ادامه ي برنامه پس از حلقه اجرا مي شوند.
2- نحوه ي استفاده از دستور continue : فرض كنيد حلقه ي شما در راند 15 خودش است! حالا در اين راند شما مي خواهيد يك سري از دستورات درون حلقه اجرا نشوند و حلقه به راند بعدي منتقل شده و كارش را ادامه دهد. اينجا است كه از دستور continue استفاده مي شود. بهتر است به يك مثال ساده در اين زمينه توجه كنيم.

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex11 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موارد تكميلي مربوط به رد و بدل كردن مقادير به/از كلاس ها :

در قسمت بعدي مي خواهيم خاصيتي را تعريف كنيم كه يك مقدار را از كاربر مي گيرد و در برنامه مي توان توسط قسمت هاي ديگر از آن استفاده كرد.

ابتدا يك متغير عمومي بايد در سطح كلاس تعريف كرد تا مقدار دريافت شده توسط set را در خود نگاه داري كند (در مورد scope متغيرها ( متغيرهاي عمومي و محلي و امثال اينها) در هنگام معرفي توابع بيشتر بحث خواهد شد) . سپس از طريق كلمه ي كليدي value مقدار دريافت شده به متغير انتساب مي يابد و چون در سطح كلاس عمومي است در تمام كلاس قابل درسترسي است.

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex12 انتخاب نماييد. سپس از منوي پروژه يك كلاس جديد به آن اضافه نماييد (به نام clsDate) و كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

براي استفاده از آن در متد main برنامه به صورت زير عمل مي كنيم:



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق:

1- نحوه ي تعريف متغير از يك كلاس جزو اساسي ترين قسمت هاي كار با يك كلاس محسوب مي شود كه در قسمت هاي پيشين نيز معرفي گرديد.
2- هنگامي كه از if استفاده مي كنيم لزومي ندارد حتما بنويسيم m_var.IsLeapYear==true . همين كه اين خاصيت ذكر مي شود در وهله ي اول true بودن آن چك خواهد شد.
3- نحوه ي مقدار دهي به يك خاصيت را هم در كد فوق ملاحظه مي نماييد. در هنگام استفاده از خاصيت ها نيازي به آوردن پرانتزها () در مقابل نام آنها وجود ندارد.
4- براي مرور ، نحوه ي معرفي خاصيت ها با get نيز بيان گرديد. با استفاده از set و get مي توان به كلاس ها ، مقادير متغيرها را پاس كرد و يا مقداري را دريافت نمود.

WooKMaN
10-05-2006, 22:02
مقدمه اي بر سي شارپ : قسمت هفتم

تعريف متدها در سي شارپ

در اين قسمت به يكي از مهمترين مباحث برنامه نويسي سي شارپ مي رسيم.
متدها در سي شارپ و يا همان توابع در زبان C ، اعضاي يك شيء يا كلاس هستند و مجموعه اي از يك سري از كارها را انجام مي دهند. فرض كنيد در برنامه ي شما ، قسمتي بايد يك عمليات رياضي خاص را انجام دهد و اين قسمت از كد كه شامل چندين خط نيز مي گردد بايد بارها و بارها در برنامه صدا زده شود. براي نظم بخشيدن به برنامه ، آنها را مي توان به صورت توابع بسته بندي كرد و بجاي نوشتن چندين خط تكراري، فقط نام اين بسته ( تابع ) و پارامترهاي آن را فراخواني نمود.

در سي شارپ يك تابع به صورت زير تعريف مي شود :

(نوع و اسامي پارامترها) نام تابع نوع خروجي تابع سطح دسترسي به تابع
}
بدنه ي تابع
{

براي تعريف يك متد يا تابع ابتدا سطح دسترسي به آن مانند public و private سپس نوع خروجي تابع مانند void ( هيچي ) ذكر مي گردد كه داخل اين پرانتزها مي توان ورودي هاي تابع يا بقولي آرگومان هاي ورودي را معرفي كرد. سپس تابع بايد با { شروع و با يك } خاتمه يابد.

براي مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

هر تابعي مي تواند صفر تا تعداد بيشماري آرگومان ورودي و صفر تا تعداد بيشماري خروجي داشته باشد. بوسيله يك تابع مي توان پيچيدگي كار را مخفي كرد و صرفا با صدا زدن نام آن ، يك سري از عمليات را انجام داد. گاهي از اوقات لازم مي شود دو يا چند تابع با يك نام داشته باشيم بطوريكه پارامترهاي ورودي يا مقادير خروجي و يا نوع آرگومان هاي ورودي آنها با هم متفاوت باشد به اين كار overloading مي گويند.
بسياري از كلاس هاي دات نت فريم ورك متدها و يا توابع مفيد حاضر و آماده اي را دارند. براي مثال كلاس DateTime ، متدي به نام ToLongDatastring دارد كه تاريخ را به صورت يك رشته طولاني بر مي گرداند.

توابع void :

توابعي كه با نوع void معرفي مي شوند هيچ خروجي ندارند و در زبان ويژوال بيسيك به آْنها sub و در دلفي به آنها procedure مي گويند.

بازگرداندن يك مقدار از يك تابع :

پس از اينكه عمليات يك مجموعه از كدها درون تابع به پايان رسيد با استفاده از كلمه ي return مي توان خروجي تابع را معرفي كرد. لازم به ذكر است ، هرجايي اين كلمه ي return ذكر شود كار تابع خاتمه مي يابد.

بهتر است موارد فوق را با چند مثال مرور كنيم :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex13 انتخاب نماييد. در اينجا مي خواهيم تابعي را تعريف كنيم كه سه برابر جذر يك عدد را بر مي گرداند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید توضيحاتي در مورد كد فوق :

1- از شيء Math در سي شارپ مي توان براي انجام يك سري عمليات رياضي ابتدايي استفاده كرد. در اينجا از متد جذر گرفتن آن استفاده شده است.
2- در تعريف تابع خودمان از كلمه ي كليدي static استفاده شده است. درون تابع Main نمي توان توابع غير استاتيك را فراخواني كرد. فعلا اين نكته را بخاطر را داشته باشيد تا در مقالات بعدي بيشتر راجع به آن صحبت شود.
3- بد نيست تابع تعريف شده را كمي بيشتر آناليز كنيم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ابتدا سطح دسترسي به تابع ذكر شده است. پابليك ، يعني اين تابع خارج از كلاس يك برنامه نيز قابل دسترسي است. سپس از كلمه ي static استفاده گرديده كه توضيح مختصري را در مورد آن ملاحظه كرديد. در ادامه نوع خروجي تابع كه در اينجا double مي باشد معرفي گرديده است. دقت كنيد كه حتما بايد نوع تعريف شده با مقداري كه يك تابع بر مي گرداند يكسان باشد و گرنه با يك خطا برنامه متوقف مي شود. سپس نام تابع تعريف شده است. داخل پرانتز ها نوع و نام آرگوماني ارائه شده است كه در بدنه ي تابع استفاده مي گردد. اگر به تعداد بيشتري پارامتر و يا آرگومان نياز بود مي توان آنها را با , از هم جدا كرد.
پس از اينكه عمليات تابع خاتمه مي يابد با استفاده از return اين خروجي را معرفي مي نماييم.
براي استفاده از اين تابع به سادگي نام تابع و سپس پرانتزها به همراه يك عدد دلخواه را مي نويسم كه آنرا در متد Main برنامه مي توان مشاهده كرد.

تعريف توابع در كلاس هاي ديگر برنامه و نحوه ي استفاده از آنها :

يكي از زيبايي هاي برنامه نويسي شيء گرا نظم و ترتيب و بسته بندي كارها مي باشد كه اصطلاحا در اينجا به آن encapsulation مي گويند. يعني ما يك سري از توابع و خواص را درون كپسولي به نام كلاس قرار مي دهيم تا به سادگي بارها و بارها از آن استفاده نماييم.
براي اينكار به سادگي يك توابع را به صورت معمول درون كلاس تعريف مي نماييم و سپس همانند خواص كه در مورد آنها صحبت شد ، از توابع مي توان استفاده كرد با اين تفاوت كه هنگام كار با توابع حتي اگر آنها هيچ آرگومان و يا پارامتر ورودي هم نداشته باشند ذكر پرانتزها الزامي است.

مثالي ديگر در اين زمينه :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex14 انتخاب نماييد. سپس از منوي پروژه يك كلاس جديد را به برنامه اضافه نماييد (نام آنرا clsTools بگذاريد) .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

سپس در متد Main برنامه مي توان به صورت زير از آن استفاده كرد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- تابع intCalc ما دو عدد صحيح مثبت را مي گيرد و سپس جذر كوچكترين دو عدد ورودي را محاسبه مي كند.
2- براي تبديل نوع هاي عددي مختلف به هم مي توان از شيء Convert استفاده كرد.
3- بدون استفاده از شيء Convert يكبار برنامه را اجرا كنيد و دليل خطاي بوجود آمده را بيان نماييد

WooKMaN
14-05-2006, 22:53
مقدمه اي بر سي شارپ : قسمت هشتم

چگونه از يك تابع بيش از يك خروجي دريافت كنيم.

ظاهرا به نظر مي رسد كه توابع فقط مي توانند يك return داشته باشند و بلافاصله پس از فراخواني return كار تابع پايان يافته است. در سي شارپ دو كلمه ي كليدي به نام هاي ref و out اضافه شده اند كه اين امر را ساده تر مي كنند.

استفاده از كلمه ي كليدي out :

از out در تعريف تابع قبل از معرفي نوع آرگومان ورودي استفاده مي كنيم . در اين حالت بجاي اينكه به اين آرگومان ، آرگومان ورودي بگوييم ، مي توان آنرا آرگومان خروجي ناميد. تا يك مثال را در اين زمينه با هم مرور نكنيم اين مورد مفهوم نخواهد بود :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex15 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :
1- در تابع TestOut آرگومان i از با كلمه ي كليدي out مشخص شده است. يعني اينكه درون تابع هر گونه تغييري روي i انجام شود ، خارج از تابع قابل دسترسي است.
2- توابعي كه داراي آرگومانهايي تعريف شده با كلمه ي كليدي out هستند نيز مي توانند از return هم استفاده كنند. همانند مثال فوق.

استفاده از كلمه ي كليدي ref :

اين كلمه ي كليدي نيز دقيقا همانند out عمل مي كند و نحوه ي تعريف و استفاده از آن نيز مشابه است با اين تفاوت كه آرگوماني كه به اين نوع توابع فرستاده مي شود بايد مقدار دهي اوليه شده باشد.

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex16 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- همانطور كه ملاحظه مي كنيد در اينجا هنگام استفاده از تابع FillArray بايد آرگوماني را كه مي خواهيم به آن پاس كنيم مقدار دهي اوليه كنيم.
2- پس مي توان نتيجه گرفت آرگومانهايي كه با out تعريف مي شوند به صورت خالص خروجي هستند و نيازي به مقدار دهي اوليه هنگام استفاده از آنها وجود ندارد. از ref هنگامي استفاده مي كنيم كه بخواهيم روي متغير موجود و مقدار دهي شده ي خارج از تابع ، درون تابع عملياتي صورت گيرد و سپس همان متغير دستكاري شده ، عودت داده شود.

تعريف تابعي با تعداد آرگومانهاي نامعلوم :

گاهي از اوقات نياز است تا تابعي تعريف كنيم كه تعداد آرگومانهاي آن متغير باشند .براي اين منظور از كلمه ي كليدي params استفاده مي شود.
دونكته در اينجا حائز اهميت است:
1- در هر تابعي تنها مي توان يكبار از params استفاده كرد.
2- پس از بكار بردن params ديگر نمي توان هيچ آرگوماني را تعريف كرد.

يكي از مثالهايي كه در اين زمينه مي توان ارائه داد استفاده از آرايه ها به عنوان آرگومان ورودي است. در اين حالت يا مي توان يك آرايه را به صورت كامل به تابع معرفي كرد و يا تنها نام آنرا به تابع پاس كرد. مثال زير را ملاحظه كنيد :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex17 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :

1- در تابع main به دو صورت از تابع UseParams ما استفاده شده است. يا اينكه خيلي ساده هر تعداد آرگومان را مي توان به تابع فرستاد و يا اينكه در ادامه آرايه ايي رسما تعريف و سپس به تابع فرستاده شود.
2- نحوه ي تعريف و استفاده از آرايه ها به صورت آرگومان ورودي را نيز مي توان در مثال فوق آموخت

azad62
16-05-2006, 22:48
سلام خسته نباشي
آموزش خوبي بود
اگه مايل باشي ميتوني يه ايده بدي تا روي يه برنامه كار كنيم و قدم به قدم جلو بريم

WooKMaN
18-05-2006, 21:52
سلام خسته نباشي
آموزش خوبي بود
اگه مايل باشي ميتوني يه ايده بدي تا روي يه برنامه كار كنيم و قدم به قدم جلو بريم
سلام رفیق [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
والا من که چیزی به ذهنم نمیرسه هر طور خودت مایل هستی [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

WooKMaN
18-05-2006, 21:55
مقدمه اي بر سي شارپ : قسمت نهم
مبحث overloading :

گاهي از اوقات لازم است تا نگارش هاي مختلفي از يك تابع داشته باشيم. براي مثال تعريف سه تابع با يك نام اما با آرگومانهاي مختلف. به اين نوع توابع و يا متدها اصطلاحا Overloaded Methods مي گويند . ( فكر كنم آنرا سربارگذاري توابع ترجمه كرده اند! ) براي مثال :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex18 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :

1- نحوه ي تعريف دو تابع با يك نام را ملاحظه مي نماييد. اينكار در زبان سي ممنوع است!
2- كامپايلر به صورت هوشمند بر اساس نوع و تعداد آرگومانهاي ورودي ، ورژن مناسب را انتخاب و اجرا مي كند.

نمونه ي ضعيفي از اين بحث در وي بي 6 به صورت تعريف توابعي با پارامترهاي Optional وجود داشت .

مباحث تكميلي آرايه ها (آرايه هاي چند بعدي):

آرايه هاي معمولي (يك بعدي) را مي توان يك رديف با تعدادي خانه خالي آماده ي پر شدن در نظر گرفت. آرايه ي دوبعدي را مي توان مانند يك جدول تشكليل شده از رديف ها و ستون ها در نظر گرفت و الي آخر...
سي شارپ دو نوع آرايه ي چند بعدي را پشتيباني مي كند : rectangular and jagged
در يك آرايه ي rectangular هر رديف ، طولش با رديف بعدي يكي است. آرايه ي jagged در حقيقت آرايه ايي از آرايه ها است ، بنابراين هر كدام از آنها مي تواند طول مختلفي داشته باشد.

تعريف يك آرايه ي دوبعدي به صورت زير است :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex19 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- نحوه ي تعريف ، مقدار دهي اوليه و استفاده از آرايه هاي دو بعدي را در مثال فوق ملاحظه مي نماييد.
2- در يك آرايه ي دوبعدي محل قرار گيري رديف ها و ستون ها براي مثال به صورت زير است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده از آرايه هاي چند بعدي :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex20 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- در حقيقت مثال فوق تعريف آرايه ايي از آرايه ها بود.
2- چون مقدار دهي اوليه به صورت واضحي انجام شده نيازي به ذكر ابعاد آرايه به صورت صحيح وجود نداشت

azad62
20-05-2006, 21:26
سلام دوست عزيز
خسته نباشي
يه تقويم ويژول فارسي چطوره؟

WooKMaN
20-05-2006, 23:07
ببين دوست عزيز خوبه
اما شما با ويبي 6 كار ميكني يا با ويبي دات نت ؟ [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

WooKMaN
20-05-2006, 23:10
مقدمه اي بر سي شارپ : قسمت دهم

Jagged arrays

Jagged arrays آرايه اي از آرايه ها است و همانطور كه ذكر شد لزومي ندارد كه هر رديف آن با رديف بعدي هم طول باشد . هنگام تعريف اين نوع آرايه شما تعداد رديف ها را مشخص مي نماييد. هر رديف يك آرايه را نگهداري مي كند. در اينجا هر آرايه بايد تعريف شود. روش تعريف Jagged array به صورت زير است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در اينجا تعداد براكت ها بيانگر ابعاد آرايه مي باشد. براي مثال آرايه ي زير دو بعدي است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و براي مثال براي دسترسي به پنجمين عنصر آرايه ي سوم به صورت زير عمل مي شود :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex21 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :

هنگام كار با آرايه هاي rectangular براي درسترسي به اعضا به صورت زير عمل مي شد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما در اينجا بدين صورت است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده از System.Array :

دات نت فريم ورك كلاسي را معرفي كرده است به نام Array. توسط اين كلاس كار با آرايه ها و اعمال روي آنها براي مثال سورت كردن و غيره به شدت ساده مي شود .


مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex22 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


توضيحاتي در مورد كد فوق :
از دو متد Sort و Reverse در اينجا براي سورت كردن و نمايش آرايه به ترتيب معكوس (از انتها به ابتدا) استفاده گرديده است.

تعريف آرايه هاي ديناميك در سي شارپ :

يكي از مشكلاتي كه با آرايه هاي معمول وجود دارد اين است كه قبل از هر كاري بايد طول آْنها را مشخص كرد. گاهي از اوقات ما دقيقا نمي دانيم برنامه چه تعداد عضو را دريافت مي كند تا آرايه اي از پيش تعريف شده با همان تعداد عضو ايجاد كنيم. براي حل اين مشكل از كلاس ArrayList تعريف شده در دات نت فريم ورك مي توان استفاده كرد.

هنگام استفاده از ArrayList نيازي به دانستن تعداد اعضايي كه بايد اضافه شوند نمي باشد و با استفاده از متد Add آن به سادگي مي توان اعضاء را به آن اضافه نمود . تعدادي از خواص و متدهاي اين كلاس به صورت زير هستند :

Adapter , FixedSize , ReadOnly , Repeat , Synchronized , Capacity,Count , IsFixedSize , IsReadOnly , IsSynchronized , Item , SyncRoot , Add , AddRange , BinarySearch , Clear , Clone , Contains , CopyTo , GetEnumerator , GetRange , IndexOf , Insert , InsertRange , LastIndexOf , Remove , RemoveAt , RemoveRange , Reverse , SetRange , Sort , ToArray , TrimToSize

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex23 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :

1- با كلمه ي كليدي override در قسمت هاي بعدي آشنا خواهيم شد.
2- براي استفاده از ArrayList لازم بود تا فضاي نامي را كه اين كلاس در آن تعريف شده است ، به برنامه اضافه كرد.
3- در مثال فوق نحوه ي تعريف دو كلاس را در يك فضاي نام مشاهده مي نماييد.
4- نحوه ي تعريف و مقدار دهي ArrayList و همچنين استفاده از خواص آن در مثال فوق بررسي شده است

WooKMaN
03-06-2006, 23:53
مقدمه اي بر سي شارپ : قسمت يازدهم
از اين قسمت به بعد مي خواهيم نگاهي دقيق تر به بحث شيء گرايي در سي شارپ بياندازيم؛ همانند فضاهاي نام ، كلاس ها ، ارث بري ، پلي مرفيسم و غيره.

در قسمت هاي قبل آشنايي مختصري با فضاهاي نام پيدا كرديم. در ادامه جزئيات بيشتري را در مورد آن بررسي خواهيم كرد.
فضاهاي نام (namespaces) براي اداره كردن و نظم بخشيدن به كدها ارائه شده اند. همچنين از امكان تشابه اسمي در بين قسمت هاي مختلف برنامه نيز جلوگيري مي كنند. استفاده از آنها عادت پسنديده اي است هنگاميكه قصد داريم از كد نوشته شده بارها و بارها استفاده كنيم.

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex24 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
يكي از روش هاي مناسب براي معرفي فضاهاي نام ، ارائه ي آنها به صورت سلسله مراتبي مي باشد. قسمت هاي عمومي تر در بالا و قسمت هاي اختصاصي تر در فصاهاي نام داخلي تر قرار داده مي شوند. اين روش به معرفي فضاهاي نام تو در تو منتهي مي شود (nested namespaces) ، همانند مثال بالا.

كد فوق را به صورت زير با استفاده از عملگر دات (.) مي توان خلاصه نويسي كرد و نتيجه با قبل تفاوتي ندارد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
طريقه ي فراخواني اعضاي فضاهاي نام :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex25 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :
در كد فوق نحوه ي استفاده از اعضاي تعريف شده در فضاهاي نام را مي توان مشاهده كرد. نحوه ي استفاده از آنها همانطور كه در قسمت هاي قبل نيز گفته شد به صورت زير است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید براي مثال در فصاي نام tutorial كلاس myExample1 قرار دارد و داخل آن متد myPrint1 تعريف شده است. پس نحوه ي دسترسي به متد آن به صورت زير است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید كلاس هاي myExample1 و myExample2 هر دو به يك فضاي نام (ex25.tutorial) تعلق دارند ، هر چند جدا از هم نوشته شده اند. حتي آنها را با حفظ سلسله مراتب خودشان مي توان در فايلهاي جداگانه اي نيز نوشت.

استفاده از using :

مثال : يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex26 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :

همانند مثال بالا ، براي خلاصه نويسي مي توان از كلمه ي using به همراه نام namespace مورد نظر استفاده كرد. براي مثال اگر متد WriteLine را بخواهيم كامل بنويسيم به صورت زير است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید اما با قيد كردن و الحاق كردن فضاي نام آن ، ديگر نيازي به ذكر System در ابتداي آن نيست.

نكته :

باز هم مي توان خلاصه نويسي بيشتري را ارائه داد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در اين صورت تنها كافي است متد كلاس تعريف شده در آنرا به صورت زير فراخواني كنيم :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mohsennowruzi
04-06-2006, 23:52
كلاس ها در سي شارپ :

تا بحال در حد كاربرد ، با كلاس ها آشنا شده ايم . اما در اين قسمت مي خواهيم نگاهي دقيق تر به كلاس ها بياندازيم.

هر كدي در سي شارپ قسمتي از يك كلاس مي باشد و تركيب تمام خواص و متدهاي موجود در يك كلاس يك نوع داده ي جديد تعريف شده از طرف ما را پديد مي آورد. هر متغيري كه از كلاس ساخته شود ، شيء ناميده مي شود و يك كپي منحصر به فرد است. براي مثال برنامه ي زير را درنظر بگيريد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اينجا كلاس Data تعريف شده است و داراي يك عضو به نام x مي باشد. به اين نوع داده در كلاس فيلد گفته مي شود و هنگاميكه به صورت public معرفي مي شود يعني خارج از كلاس نيز قابل دسترسي است. در كد بالا دو متغير از كلاس تعريف و مقدار دهي اوليه شده اند. خروجي برنامه به صورت زير است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دليل اين خروجي آن است كه هر instance (نمونه) از كلاس منحصر بفرد است و در اينجا نمي توان انتظار داشت كه هر دو خروجي يكي شوند.

براي مقدار دهي اوليه متغيرهايي كه به صورت فيلد تعريف مي شوند ، بهتر است مقدار دهي آنها را در سازنده ي كلاس (constructor) انجام دهيم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور كه پيشتر نيز ذكر شد ، متدي كه هم نام كلاس است ، سازنده نام مي گيرد. يك كلاس مي تواند بيش از يك سازنده داشته باشد. براي مثال :

class Data
{
public int x;
private Data(){}
public Data(int y){x = y;}
public Data(int y, int z){x = y + z;}
}

از آنجائيكه كه سازنده ي بدون پارامتر ذكر شده در كد فوق private تعريف شده است بنابراين خارج از كلاس ديگر قابل دسترسي نمي باشد . بنابراين كدي خارج از كلاس ، تنها مي تواند از دو سازنده ي ديگر استفاده كند. براي مثال تعريف دو متغير جديد از اين كلاس به صورت زير مي باشد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سي شارپ به شما اجازه مي دهد تا سازنده ها را در يك كلاس توسط كلمه ي كليدي this نيز فراخواني كنيد يعني بجاي ذكر نام متد سازنده از كلمه ي this استفاده شود ( در خود كلاس ) .

اگر مي خواهيد متغيري را بين نمونه (instance) هاي مختلف يك كلاس به اشتراك بگذاريد كلمه ي كليدي static وارد صحنه مي شود. به مثال زير توجه كنيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بايد خاطر نشان كرد كه متغيرهاي استاتيك توسط نمونه هاي كلاس قابل دستيابي نيستند و فقط درون كلاس به شكل زير مي توان از آْنها استفاده كرد :

.

در مثال فوق دو نمونه از كلاس Counted تعريف شده است. با هر بار فراخواني كلاس ، خودبخود سازنده اجرا شده و يك عدد به اين شمارشگر استاتيك اضافه مي شود. همانطور كه ذكر شد، براي اينكه بتوان به اين متغير استاتيك در خارج از كد دسترسي پيدا كرد يك متد غير استاتيك تعريف شده است.

در مثال فوق تابع GetInstanceCount تنها يك عدد را بر مي گرداند. در برنامه نويسي شيء گرا مرسوم است كه در اين حالت به جاي توابع از خواص استفاده شود كه به اندازه ي كافي در مورد آنها در قسمت هاي قبل توضيح داده شد. در اين صورت تعريف فوق به صورت زير در مي آيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و در اين صورت قسمت بعدي كد به صورت زير اصلاح مي شود (فراخواني خواص ، بدون ذكر پرانتزها بعد از نام آنها صورت مي گيرد):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر يك خاصيت هم خواندني و هم نوشتني باشد به صورت زير تعريف مي شود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فيلدهاي پابليك را مي توان خواند و يا تغيير داد. اگر لازم باشد تا كاربر نتواند آنها را تغيير دهد مي توان از كلمه ي كليدي readonly قبل از تعريف آنها استفاده كرد. مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بحث كلاس ها ادامه دارد...

WooKMaN
05-06-2006, 00:19
مرسي محسن جان [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohsennowruzi
05-06-2006, 11:15
خواهش مي كنم اين هم ادامه مبحث :rolleye:
با استفاده از ايندكسرها مي توان با يك كلاس همانند آرايه ها رفتار كرد. به مثال زير توجه كنيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مثال فوق نحوه ي تعريف و استفاده از ايندكسرها را مي توان مشاهده كرد. كلاس IntIndexer حاوي آرايه اي به نام myData مي باشد. بدليل private بودن آن در خارج از كلاس قابل دسترسي نيست. اين آرايه در سازنده ي كلاس (متد IntIndexer) با كلمه ي empty مقدار دهي اوليه شده است.
عضو بعدي كلاس Indexer مي باشد و با كلمه ي كليدي this و براكتها مشخص شده ست (this[int pos]). همانطور كه ملاحظه مي فرماييد نحوه ي تعريف ايندكسرها شبيه به تعريف خواص مي باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجي مثال فوق به صورت زير است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده از اعداد صحيح روشي است متداول براي دسترسي به اعضاي آرايه ها در بسياري از زبانها اما ايندكسرها در سي شارپ فراتر از اين مي رود. ايندكسرها را مي توان با پارامترهاي متعددي تعريف كرد و هر پارامتر با نوعي مختلف (دقيقا همانند پارامترهاي ورودي متدها). البته محدوديتي كه اينجا وجود دارد در مورد نوع پارامتر ها است كه تنها مي تواند integers, enums, and strings باشد . بعلاوه قابليت Overloading ايندكسرها نيز وجود دارد. به همين جهت به آنها آرايه هاي هوشمند هم گفته مي شود (smart arrays) .مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مثال فوق اولين ايندكسر با يك پارامتر از نوع اعداد صحيح تعريف شده است و در ايندكسر دوم از نوع رشته.
خروجي برنامه ي فوق به صورت زير است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نكته :
1- امضاي (ليست پارامترهاي) ايندكسر ها در يك كلاس بايد منحصر بفرد باشد .
2- تعريف يك ايندكسر به صورت استاتيك مجاز نيست.

در صورت نياز به ايندكسرهايي با پارمترهاي ورودي متعدد مي توان به صورت زير عمل كرد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
يك مثال ديگر :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خوب WooKMaN جان ادامه رو شما بزارين :)

mohsennowruzi
11-06-2006, 10:00
سلام
ظاهرا از WooKMaN جان خبري نيست خوب من يه درس ديگه هم مي زارم.
در ضمن وقتي اين درس ها تموم بشه همه اون ها رو در قالب يه فايل PDF آپلود مي كنم. :biggrin:

ارث بري (Inheritance) :

ارث بري يكي از مفاهيم اوليه ي برنامه نويسي شيء گرا مي باشد. با استفاده از آن استفاده مجدد از كد موجود به نحوي مؤثر ميسر مي گردد و صرفه جويي قابل توجهي را در زمان برنامه نويسي پديد مي آورد. به كد زير دقت كنيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كد فوق از دو كلاس استفاده مي كند. كلاس بالايي ParentClass و كلاس اصلي ChildClass مي باشد. كاري كه انجام شده است استفاده از كدهاي كلاس والد ParentClass در كلاس بچه (!) ChildClass مي باشد. براي اينكه ParentClass را بعنوان كلاس پايه براي ChildClass معرفي كنيم به صورت زير عمل شد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

كلاس پايه با استفاده از معرفي كولون ":" ، پس از كلاس مشتق شده تعريف مي شود. در سي شارپ تنها ارث بري يگانه پشتيباني مي شود. بنابراين تنها يك كلاس پايه را براي ارث بري مي توان تعريف كرد.

ChildClass دقيقا توانايي هاي ParentClass را دارا است. بنابراين مي توان گفت ChildClass همان ParentClass است. براي مثال در كد فوق ChildClass داراي متد print نمي باشد اما آنرا از كلاس ParentClass به ارث برده است و در متد Main برنامه از آن استفاده گرديده است.

هنگام ساختن يك شيء از كلاس مشتق شده (derived) ، ابتدا يك نمونه از كلاس والد خود بخود ساخته مي شود. اين مورد در خروجي كد فوق هنگامي كه متدهاي سازنده ها روي صفحه چاپ شده اند قابل مشاهده است.

تبادل اطلاعات بين كلاس والد و كلاس فرزند :

به مثال زير دقت كنيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كلاس فرزند با كلاس والد در هنگام instantiation مي تواند تبادل اطلاعات كند. همانطور كه در مثال فوق بارز است با استفاده از كلمه ي كليدي base ، كلاس فرزند تابع سازنده ي كلاس والد را فراخواني كرده است. اولين خط خروجي بيانگر اين موضوع است.

گاهي از اوقات ما مي خواهيم تابعي را كه در كلاس والد تعريف شده است را در كلاس فرزند با تعريف ديگري و مخصوص به خودمان ارائه دهيم. در اينصورت تابع تعريف شده در كلاس فرزند ، تابع هم نام والد را مخفي خواهد كرد و ديگر آن تابع والد فراخواني نخواهد گرديد. در اين حالت تنها يك راه براي دسترسي به تابع اصلي والد وجود دارد و آن استفاده از base. مي باشد كه در كد فوق پياده سازي شده است.
با استفاده از base. مي توان به تمام اعضاي public و يا protected كلاس والد از درون كلاس فرزند دسترسي داشت.
راه ديگري كه براي اين منظور وجود دارد در آخرين خط كد فوق در متد Main پياده سازي شده است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
براي تبديل نوع هاي مختلف در سي شارپ مي توان از پرانتز و سپس ذكر نوع اصلي استفاده كرد به اين عمل casting و يا boxing هم مي گويند. در كد فوق درحقيقت child به نوعي از parent تبديل شده است. بنابراين مانند اين است كه يك نمونه از كلاس والد متد print همان كلاس را فراخواني مي كند.

WooKMaN
12-06-2006, 00:47
با عرض پوزش يه خورده سرم شلوغه دير آپديت ميكنم !

mohsennowruzi
17-06-2006, 23:11
پلي مرفيسم (Polymorphism)

يكي ديگر از مفاهيم اوليه ي شيء گرايي پلي مرفيسم ( چند ريختي ) مي باشد. پلي مرفيسم به معناي توانايي استفاده كردن از فرم هاي مختلف يك نوع است بدون توجه به جزئيات آن .
براي مثال هنگاميكه سيگنال تلفني شما فرستاده مي شود ، از نوع تلفني كه در انتهاي خط موجود است خبري ندارد. تلفن انتهاي خط ، مي خواهد يكي از تلفن هاي عهد عتيق باشد و يا تلفني با آخرين امكانات روز .
شركت مخابرات (!) تنها از نوع پايه اي به نام phone خبر دارد و فرض مي كند كه هر instance از اين نوع مي داند كه چگونه صداي زنگ تلفن شما را به صدا در آورد. بنابراين شركت مخابرات از تلفن شما به صورت پلي مرف استفاده مي كند.
در عمل پلي مرفيسم هنگامي مفيد خواهد بود كه بخواهيم گروهي از اشياء را به يك آرايه نسبت دهيم و سپس متدهاي هر يك را فراخواني كنيم. الزاما اين اشياء از يك نوع نخواهند بود.

نحوه ي ايجاد متدهاي پلي مرفيك :
براي ايجاد متدي كه نياز است تا پلي مرفيسم را پشتيباني نمايد ، تنها كافي است آنرا از نوع virtual در كلاس پايه تعريف كنيم. مثال :
فرض كنيد تابع DrawWindow در كلاس Window تعريف شده است. براي ايجاد قابليت پلي مرفيسم در آن به صورت زير عمل مي شود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اين حالت هر كلاسي كه از Window مشتق شود ، مجاز است نگارش خاص خودش را از DrawWindow ارائه كند. در اين صورت در كلاسي كه از كلاس پايه ي ما ارث مي برد ، تنها كافي است كه كلمه ي كليدي override را قبل از نام تابع مذكور ذكر نماييم.

يك مثال كامل :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كلاس DrawingObject ، كلاسي پايه براي تمام كد ما كه از آن به ارث مي برد ، مي باشد. متد Draw در آن با كلمه ي كليدي virtual معرفي شده است. يعني تمام كلاس هاي فرزند اين كلاس والد مي توانند اين متد را override كنند ( تحريف كردن و يا تحت الشعاع قرار دادن هم ترجمه شده است! ).
در ادامه سه كلاس تعريف شده اند كه تمامي آنها از كلاس مبنا ارث مي برند و تابع Draw را تحريف كرده اند (!). با استفاده از كلمه ي كليدي override مي توان تابع مجازي كلاس مبنا را با تعريفي جديد در زمان اجراي برنامه ارائه داد. تحريف شدن تنها زماني رخ مي دهد كه كلاس ، توسط ريفرنس كلاس مبنا مورد ارجاع واقع شده باشد.
و در متد Main برنامه از اين كلاس ها در عمل استفاده گرديده است. در متد Main ، آرايه اي از نوع DrawingObject تعريف و مقدار دهي اوليه شده است تا بتواند 4 شيء از نوع اين كلاس را در خودش ذخيره كند.
بدليل رابطه ي ارث بري موجود مي توان آرايه ي dObj را با نوع هايي از كلاس هاي Line ، Circle و Square مقدار دهي كرد (همانند كدهاي بعدي متد Main ) . اگر ارث بري در اينجا وجود نمي داشت مي بايست به ازاي هر كلاس يك آرايه تعريف مي شد.
سپس از حلقه ي زيباي foreach براي حركت در بين اعضاي اين آرايه استفاده گرديده است. در اينجا هر شيء متد خاص خودش را در مورد Draw فراخواني مي كند و نتيجه را روي صفحه نمايش خواهد داد.
خروجي نهايي به صورت زير خواهد بود :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mohsennowruzi
17-06-2006, 23:17
كلاس ها ي abstract
كلاس ها را همچنين مي توان به صورت abstract تعريف كرد. از اين نوع كلاس ها نمي توان instance ايي را ايجاد نمود. در اين كلاس هاي پايه ، صرفا تعريف متدها و خواص هايي عنوان گرديده و در آينده در كلاس هاي فرزند توسعه داده خواهند شد. براي مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
والي كه شايد پيش بيايد اين است كه اگر interface ها صرفا تعريف توابع و خواص را مي توانند در خود جاي دهند پس چه دليلي براي بكار بردن آنها و طولاني كردن كار كد نويسي وجود دارد؟
كاربردهاي زيادي را مي توان براي اينترفيس ها برشمرد. اينترفيس يك رفتار را تعريف مي كند. فرض كنيد در حال توسعه ي برنامه ايي هستيد كه بر روي دو كامپيوتر مختلف بايد با هم در ارتباط مستقيم بوده و برهم كنش داشته باشند و هر برنامه از ماژولي به نام CCommObj communication object استفاده مي نمايد. يكي از متدهاي اين شيء ، SendData() مي باشد كه رشته اي را دريافت كرده و به برنامه ي ديگر مي فرستد. اين فراخواني از نوع asynchronous است زيرا ما نمي خواهيم اگر خطايي در شبكه رخ داد، برنامه براي هميشه منتظر باقي بماند. اما چگونه برنامه ي A كه تابع ذكر شده را فراخواني كرده است مي تواند تشخيص دهد كه پيغام به مقصد رسيده است يا خير و يا آيا خطايي در شبكه مانع رسيدن پيغام گشته است يا خير؟ جواب بدين صورت است كه CCommObj هنگام دريافت پيغام ، رخدادي را سبب خواهد شد و اگر خطايي رخ داده باشد خير. در اين حالت نياز به يك ماژول logging نيز احساس مي گردد تا خطاهاي رخ داده را ثبت نمايد. يك روش انجام آن اين است كه CCommObj پياده سازي اين امكان را نيز بعهده گرفته و اگر فردا نيز خواستيم ماژول ديگري را به برنامه اضافه كنيم هر روز بايد CCommObj را تغيير دهيم. تمام اين كارها را به سادگي مي توان در يك اينترفيس مدل كرد. روش آن نيز در ادامه بيان مي گردد:
در ابتدا يك اينترفيس ايجاد مي كنيم تا ليست تمام امكانات ممكن را "منتشر" كند:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

شي ء CCommObj ما از اين توابع كه بعدا توسعه داده خواهند شد براي با خبر سازي كلاينت ها استفاده مي نمايد. تمام متدها در يك اينترفيس ذاتا پابليك هستند بنابراين نيازي به ذكر صريح اين مطلب نمي باشد و اگر اينكار را انجام دهيد كامپايلر خطاي زير را گوشزد خواهد كرد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در ادامه كلاينت CClientApp_A را پياده سازي خواهيم كرد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در كد فوق كلاس CClientApp_A از ICommObjEvents ارث برده و تمام متدهاي اين اينترفيس را پياده سازي نموده است. هنگامي كه CCommObj تابع OnDataSent را فراخواني مي كند اين كلاينت پيغام را دريافت خواهد كرد. لازم به ذكر است كه كلاس كلاينت ما چون از يك اينترفيس ارث بري مي نمايد پس بايد تمام توابع و خواص كلاس پايه را پياده سازي كند در غير اينصورت هر چند برنامه كامپايل خواهد شد اما هنگامي كه شيء CCommObj هر كدام از توابع اين كلاس را فراخواني كد ، خطاي زمان اجرا رخ خواهد داد.
متد Init كلاس فوق آرگوماني را از نوع CCommObj دريافت نموده و در يك متغير private آنرا ذخيره مي نمايد. همچنين در اين متد ، متد Advise از كلاس CCommObj نيز فراخواني گشته است.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mohsennowruzi
18-06-2006, 11:44
در كلاس CCommObj كه با آن آشنا شديم ، آرايه اي Private از نوع ICommObjEvents به نام m_arSinkColl وجود دارد. اين آرايه تمام اينترفيس هاي sink شده را ذخيره مي كند. واژه ي sink در اينجا به كلاسي گفته مي شود كه دريافت كننده ي رخدادها است. متد Advise تنها sink وارده به آنرا در يك آرايه ذخيره مي كند و سپس انديس آرايه را كه در اينجا cookie ناميده شده است بر مي گرداند. اين كوكي توسط كلاينتي كه ديگر نمي خواهد از آن آيتم هيچونه رخدادي را دريافت كند به سرور فرستاده مي شود و سپس سرور اين آيتم را از ليست خودش حذف خواهد كرد.

نحوه ي فراخواني متد advise توسط كلاينت نيز جالب است.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اينجا تنها يك this بعنوان آرگومان به متد advice فرستاده شده است در حاليكه انتظار مي رفت آرگوماني از نوع ICommObjEvents به تابع فرستاده شود. دليل صحت اين عمل بدين صورت است كه كلاس ClientApp_A از اينترفيس ICommObjEvents ارث برده است و آنرا پياده سازي نموده است.
در ادامه ليست كامل برنامه ي نوشته شده را در حالت Console ملاحظه مي فرماييد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در متد Main برنامه ي فوق ، ما دو كلاينت تعريف كرده ايم و يك نمونه از CCommObj را. دو كلاينت instance هاي CCommObj را بعنوان آرگومان دريافت كرده اند. در هنگام فراخواني init توسط هر كلاينت متد advise فراخواني مي گردد. در خاتمه Read مربوط به كلاينت 1 فراخواني شده است كه سبب مي شود تا رخداد OnDataSend شيء CCommObj اجرا شود و به تمام كلاينت ها فرستاده شود.

هدف از اين مثال ارائه ي بعضي از جنبه هاي اينترفيس ها و نحوه ي استفاده از آنها بود. دو مطلب ديگر در مورد اينترفيس ها باقي مانده اند تا به پايان بحث مربوط به آنها برسيم:

چگونه مي توان متوجه شد كه يك شيء واقعا يك اينترفيس را پياده سازي كرده است؟
دو روش براي فهميدن اين موضوع وجود دارد:
- استفاده از كلمه ي كليدي is
- استفاده از كلمه ي كليدي as

اولين مثال زير از كلمه ي كليدي is استفاده مي كند :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كلمه ي كليدي is مقدار true را بر مي گرداند اگر اپراتور سمت چپ ، اينترفيس سمت راست را پياده سازي كرده باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مثال فوق اپراتور as در حال casting شيء theClient5 به ICommObjEvents مي باشد. چون CClientApp_C اينترفيس را پياده سازي نمي كند حاصل خط اول نال خواهد بود.

به صورت خلاصه :
يك اينترفيس قراردادي است كه به كلاينت گارانتي مي دهد يك كلاس خاص چگونه رفتار خواهد كرد. هنگاميكه كلاسي يك اينترفيس را پياده سازي مي كند به تمام كلاينت ها مي گويد كه : من تمام موارد ذكر شده در اينترفيس را ارائه و پياده سازي خواهم كرد. نمونه ي عملي استفاده از اينترفيس ها بحث dot net remoting است.

mohsennowruzi
18-06-2006, 11:48
مقابله با خطاها در سي شارپ

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

EXCEPTION يك خطاي زمان اجر است كه بدليل شرايطي غيرنرمال در برنامه ايجاد مي شود. در سي شارپ exeption كلاسي است در فضاي نام سيستم. شيء ايي از نوع exception بيانگر شرايطي است كه سبب رخ دادن خطا در كد شده است. سي شارپ از exception ها به صورتي بسيار شبيه به جاوا و سي پلاس پلاس استفاده مي نمايد.

دلايلي كه بايد در برنامه exception handling حتما صورت گيرد به شرح زير است:
- قابل صرفنظر كردن نيستند و اگر كدي اين موضوع را در نظر نگيرد با يك خطاي زمان اجرا خاتمه پيدا خواهد كرد.
- سبب مشخص شدن خطا در يك نقطه از برنامه شده و ما را به اصلاح آن سوق مي دهد.

بوسيله ي عبارات try...catch مي توان مديريت خطاها را انجام داد. كدي كه احتمال دارد خطايي در آن رخ دهد درون try قرار گرفته و سپس بوسيله ي يك يا چند قطعه ي catch مي توان آنرا مديريت كرد. و اگر از اين قطعات خطايابي استفاده نشود برنامه به صورتهاي زير متوقف خواهد شد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برنامه شروع به اجرا مي كند. سپس وارد بلوك و يا قطعه ي try مي گردد. اگر هيچ خطايي هنگام اجراي دستورات داخل آن رخ ندهد ، برنامه به خط آخر جهش خواهد كرد و كاري به قطعات catch ندارد.
اما در اينجا در اولين try عددي بر صفر تقسيم شده است بنابراين كنترل برنامه به بلوك catch منتقل مي شود و صرفا نوع خطاي رخ داده شده نوشته و نمايش داده مي شود. سپس برنامه به كار عادي خودش ادامه مي دهد.

تعدادي از كلاس هاي exception در سي شارپ كه از كلاس System.Exception ارث برده اند به شرح زير هستند :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در كد فوق صرفا عمومي ترين نوع از اين كلاس ها كه شامل تمامي اين موارد مي شود مورد استفاده قرار گرفت يعني :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر نيازي به خطايابي دقيقتر باشد مي توان از كلاس هاي فوق براي اهداف مورد نظر استفاده نمود.

مثالي ديگر: ( در اين مثال خطايابي دقيق تر با استفاده از كلاس هاي فوق و همچنين مفهوم finally نيز گنجانده شده است )

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

قسمت موجود در قطعه ي فاينالي همواره صرفنظر از قسمت هاي ديگر اجرا مي شود.

به مثال زير دقت كنيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قسمت چاپ Remaining program اجرا نشده است.

عبارت throw :

اين عبارت سبب ايجاد يك خطا در برنامه مي شود.

مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اين حالت قسمت فاينالي اجرا شده و برنامه بلافاصله خاتمه پيدا مي كند

mohsennowruzi
18-06-2006, 11:51
سربارگذاري عملگر ها (Operator OverLoading)

به تعريف مجدد راه و روش اجراي عملگر ها توسط ما ، سربارگذاري عملگرها گفته مي شود. فرض كنيد مي خواهيد عدد 2 را به يك مقدار datetime اضافه كنيد. خطاي زير حاصل خواهد شد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

جالب بود اگر مي توانستيم عدد 2 را به datetime اضافه كنيم و نتيجه ي آن تعداد روزهاي مشخص بعلاوه ي دو مي بود. اينگونه توانايي ها را مي توان بوسيله ي operator overloading ايجاد كرد.

تنها عملگر هاي زير را مي توان overload كرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نحوه ي انجام اينكار نيز در حالت كلي به صورت زير است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

به مثال زير توجه كنيد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در مثال فوق عملگر + دوبار overload شده است. يكبار توسط آن مي توان يك عدد صحيح را به يك تاريخ اضافه كرد و بار ديگر يك يك تاريخ را مي توان به عدد صحيح افزود.


موارد زير را هنگام سربارگذاري عملگرها به خاطر داشته باشيد:

1- تنها اپراتورهاي ذكر شده را مي توان overload كرد. اپراتورهايي مانند new,typeof, sizeof و غيره را نمي توان سربارگذاري نمود.
2- خروجي متدهاي بكار گرفته شده در سربارگذاري عملگر ها نمي تواند void باشد.
3- حداقل يكي از آرگومانهاي بكار گرفته شده در متدي كه براي overloading عملگرها بكار مي رود بايد از نوع كلاس حاوي متد باشد.
4- متدهاي مربوطه بايد به صورت public و static تعريف شوند.
5- هنگامي كه اپراتور < را سربارگذاري مي كنيد بايد جفت متناظر آن يعني > را هم سربارگذاري نماييد.
6- هنگاميكه براي مثال + را overload مي كنيد خودبخود =+ نيز overload شده است و نيازي به كدنويسي براي آن نيست.


يكي از موارد جالب بكار گيري سربارگذاري عملگرها در برنامه نويسي سه بعدي و ساختن كلاسي براي انجام عمليات ماتريسي و برداري مي باشد

mohsennowruzi
18-06-2006, 11:55
Delegates

Delegates در سي شارپ روشي مطمئن و typesafe را براي بكار گيري مفهوم function pointer ارائه مي دهند. يكي از ابتدايي ترين استفاده هاي function pointers پياده سازي callback مي باشد. اما در ابتدا لازم است تا با اصول اوليه ي كاري آن آشنا شويم.

مثال يك :
يك delegate چگونه تعريف و استفاده مي شود؟
Delegate يك شيء است كه بيانگر يك تابع مي باشد بنابراين مي تواند بعنوان آرگومان ورودي يك تابع ديگر و يا عضوي از يك كلاس بكار رود.
در زبان "function-pointer" ، Func1() اشاره گري به Func2() را بعنوان پارامتر دريافت كرده و نهايتا آنرا فراخواني مي كند.
در زبان "delegate" ، Func1() يك شيء delegate از Func2() را دريافت كرده و سپس آنرا فراخواني مي كند.
در مثال زير از دو تابع براي شرح اين مطلب سود جسته شده است:
Func1() از delegate استفاده مي كند.
Func2() يك delegate است.

( شماره گذاري خطوط ، در كد زير ، صرفا براي راحت تر شدن توضيحات در مورد آنها است و لزومي به تايپ آنها در برنامه ي اصلي نيست. )

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


LINE 02
يك شيء delegate را براي Func2 تعريف مي كند.

LINE 04-06
تابعي را تعريف كرده است كه آرگومان ورودي آن از نوع Delg است.

LINE 07-09
تابعي را تعريف مي كند كه بايد به صورت delegate به تابع ديگر فرستاده شود.

LINE 10-14
تابع Main اجراي برنامه را با ايجاد يك شيء delegate براي Func2 آغاز كرده و سپس تابع Func1 را فراخواني مي كند.

مثال 2:
چگونه مي توان از delegates در كارهاي عملي استفاده كرد؟

طرح يك مساله:
شخصي تقاضاي ثبت نام در يك مؤسسه ي آموزشي و همچنين تقاضاي كاريابي در يك شركت را داده است. هر كدام از اين نهادها روشي خاص خود را براي ارزيابي شخص دارند.

راه حل (با روشي شيء گرا):
شخص مشخصاتي همچون سن / جنس / ميزان تحصيلات قبلي / تجربيات كاري و مدارك مرتبط دارد.
مؤسسه ي آموزشي تعدادي از اين مشخصات را براي ارزيابي شخص استفاده مي كند و اين امر در مورد شركت ياد شده نيز صادق است.
شيء شركت و شيء آموزشگاه هر كدام توابع ارزيابي خاص خودشان را پياده سازي مي كنند.
شخص ، اينترفيسي واحدي را در اختيار شركت / آموزشگاه براي ارزيابي خود قرار مي دهد.

پياده سازي (با استفاده از سي شارپ):
ما delegate‌ايي را تعريف مي كنيم كه بيانگر اينترفيسي است كه به شركت و آموزشگاه اجازه ي چك كردن شخص را مي دهد.
سه كلاس school و company و person را تعريف مي نماييم.
كلاس test را براي آزمودن اين موارد ايجاد مي كنيم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

LINE 03
Delegate مورد نياز را تعريف مي كند.

LINE 04-23
كلاس person را تعريف مي كند. اين كلاس تابعي پابليك را ارائه مي دهد كه آرگومان ورودي آن از نوع GetChecker مي باشد.

LINE 24-30
كلاس school را تعريف مي كند و سپس تابعي را كه delegate است ارائه مي دهد.

LINE 31-37
كلاس company را تعريف مي كند و سپس تابعي را كه delegate است ارائه مي دهد.

LINE 38-36
كلاس test را پياده سازي مي نمايد. سپس يك شيء شخص ساخته مي شود. در ادامه new GetChecker(School.SchoolCheck) و new GetChecker(Company.CompanyCheck) شيء ايي را ايجاد مي كند از نوع delegate مورد نياز و آنرا به تابع CheckMe مي فرستد. خروجي نتيجه ي ارزيابي اين شخص مي باشد.

اگر چك كردن اشخاص بيشتري نياز باشد به اين صورت عمل مي شود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثال 3 :
Delegates در تعامل بين دات نت فريم ورك و سي شارپ چه نقشي دارد؟

طرح يك مساله:
نمايش دادن ميزان پيشرفت خواندن يك فايل هنگامي كه حجم فايل بسيار زياد است.

راه حل ( با استفاده از سي شارپ):
در مثال زير از كلاس FileReader براي خواندن يك فايل حجيم استفاده شده است. هنگاميكه برنامه مشغول خواندن فايل است 'Still reading.. را نمايش مي دهد و در پايان 'Finished reading..'. را عرضه مي كند.
براي اينكار از فضاي نام System.IO استفاده شده است. اين فضاي نام حاوي delegate ايي مهيا شده براي ما مي باشد. بدين ترتيب مي توانيم به دات نت فريم ورك بگوييم كه ما تابعي را تعريف كرده ايم كه او مي تواند آنرا فراخواني كند.
سؤال: چه نيازي وجود دارد تا دات نت فريم ورك تابع ما را فراخواني و اجرا كند؟ با استفاده از تابع ما كه دات نت فريم آنرا صدا خواهد زد در طول خواندن فايل به ما گفته مي شود كه بله! من هنوز مشغول خواندن هستم! به اين عمليات Callback نيز گفته مي شود. به اينكار پردازش asynchronous نيز مي گويند!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


LINE 02
فضاي نام System.IO را به برنامه ملحق مي كند. اين فضاي نام به صورت خودكار حاوي تعريف delegate زير مي باشد:

public delegate void AsyncCallback (IAsyncResult ar);

LINE 03-10
تعريف كلاس

LINE 06
شيء delegate را تعريف مي كند.

LINE 07-10
سازنده ي كلاس را پياده سازي مي كنند. در اينجا ما تصميم گرفته ايم كه بافري حاوي 256 بايت را در هر لحظه بخوانيم.

LINE 09
شيء delegate نمونه سازي شده است.

LINE 18-23
readFile را پياده سازي مي كند.

LINE 12-16
نحوه ي استفاده از شيء IAsyncResult را بيان مي كند.

LINE 12
sInput.EndRead(result) تعداد بايتهاي خوانده شده را بر مي گرداند. اين خواندن تاجايي كه تعداد بايتهاي خوانده شده صفر است ادامه پيدا مي كند و در اينجا 'Finished reading..' اعلام مي گردد.

mohsennowruzi
18-06-2006, 12:00
خوب بيست قسمت آموزش سي شارپ از اين سايت ها بود:

منبع با واسطه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

منبع بي واسطه
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اگه فرصت شد همه آموزش ها را در قالب 1 فايل PDF مي زارم

تا بعد

mohsennowruzi
18-06-2006, 15:45
دوباره سلام
اين لينك دانلود مطالبي كه تا حالا تو اين تاپيك مطرح شده در قالب 1 فايل PDF

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


اين هم لينك يه مقاله در مورد سي شارپ از آقاي فكري نجات

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

سعي مي كنم چند تا مقاله ديگه هم در اين مورد تو چند روز آينده براتون بزارم

WooKMaN
18-06-2006, 21:44
محسن مرسي [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] داري بد جور حال ميديها [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohsennowruzi
19-06-2006, 12:12
سلام
خواهش مي كنم
اين لينك دانلود كامل سايت dev.irكه بخشي از مطالب از اون نقل شده

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در ضمن يه تاپيك هم با اين موضوع وجود داره
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

D E V I L
29-06-2006, 14:55
اگه منبع را ذكر مي كردي بد نبود !!!

mohsennowruzi
29-06-2006, 21:45
منبع همه مطالب ذكر شده
كافي به شماره 32 نگاه كنيد

Satyar
29-06-2006, 21:49
عالي بود.

ممنونم

من مشتاقم آقا....بازم در اين زمينه مطلب بزارين.
منم يه چيزايي بلدم..كمك اگه خواستين بهم بگيد.(شايد موثر باشم)

mahsoft
30-06-2006, 00:28
خیلی خوبه ولی چی بگم که من ......

Satrikon
30-06-2006, 16:48
ببخشيد آقا نويد(ووك من)(رامبد)(نيش نيش)
من pdf اينو دارم
شما كپي-پيست كردي؟
خب چرا كامل نزاشتي؟؟؟
و در n پست گزاشتي؟!

WooKMaN
01-07-2006, 22:47
ببخشيد آقا نويد(ووك من)(رامبد)(نيش نيش)
من pdf اينو دارم
شما كپي-پيست كردي؟
خب چرا كامل نزاشتي؟؟؟
و در n پست گزاشتي؟!


خب جييگر شما داري من كه ندارم [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من تيكه تيكه از جايي ديگه ميگرفتم

mohsennowruzi
02-07-2006, 12:36
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

WooKMaN
24-07-2006, 00:09
man yek barnaame baa c# neveshtam ke az database sql server express estefaade mikone vaghti barnaame run hast table haa ke update mishan save mimoone oon update,hataa vaghti beine table haa switch mikonam taghiraat baaghi mimoonan amaa vaghti ke exit mikonam va dobaare run mikonam taghiraat save nashodan
دوست عزيز فارسي تايپ كن تا جوابت داده بشه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Saeid.Online
07-08-2006, 22:27
بعد از کلی تحقیق در مورد اینکه کدام زبان از زبان های برنامه نویسی Microsoft Visual Studio 2005 را انتخاب کنم و

به صورت کامل کار را با آن شرو کنم بالاخره زبان C#.net را انتخاب کردم و تصمیم دارم فقط روی همین زبان مانور بدم.

.::البته لازم به ذکر است که من دانشجوی رشته کامپیوتر هستم و قبلا یه مقدار C کار کردم البته در حدد معمولی::.

البته يكم Sql .Accsses هم می دونم چون قبلا وبی کار کردم .

از شما بروبچ پا کار C#.net می خوام که یه کتاب که از ابتدا برای اینکه پایم قویتر بشه در مورد آموزش C#.net به من

معرفی کنید.البته من هم میخوام WindowsAppliction کار کنم و هم WebAppliction .

پس یه کتاب به من معرفی کنید که در هر دو مورد نیازم رو جواب بده و تمرین و مثال هم زیاد داشته باشه.

البته وكمن جان اگر مطالب اين فروم منو راه ميندازه بگو تا فعلا با اين فروم جلو برم و كتابي نگيرم.


با تشکر .::Saeid.Online::.

WooKMaN
08-08-2006, 01:27
البته وكمن جان اگر مطالب اين فروم منو راه ميندازه بگو تا فعلا با اين فروم جلو برم و كتابي نگيرم.

آره عزيز چرا رات نندازه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

از همين جا ادامه بده موفق ميشي [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Encor3
11-08-2006, 02:03
Mmmmmmmmmmmmaaaaaaaaaaaaaaaaaa
آقا واقعا عالی...

Manager_66
23-08-2006, 09:57
سلام و خسته نباشيد
من يه سوال خفن دارم ،2005 #C با ورژن هاي قبلي اين برنامه چه تفاوتهايي دارند :sad:

WooKMaN
24-08-2006, 01:00
سلام و خسته نباشيد
من يه سوال خفن دارم ،2005 #C با ورژن هاي قبلي اين برنامه چه تفاوتهايي دارند :sad:
دوست عزيز بيشتر تفاوتشون اضافه شدن كامپوننتهاي مربوط به شبكه و ديتابيس هستش نسبت يه ورژن 2003 ....[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در ضمن وقتي asp.net رو با سي شارپ كار ميكني مثل هلو ممونه ...[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

lordisoh
26-08-2006, 13:50
خیلی مهم
يه نفر به من بگه چه طوري مي تونم محتويات يه panel را پرینت کنم؟ لطفا کامل توضیح بدین.

uni.tux
26-08-2006, 21:47
خسته نباشي!
دستت درد نكنه ولي اگر ميشه همين نوشته ها منتقل كن به pdf .
اگر اينكار رو بكني خيلي كار بزرگي كردي ممنون!
===================
واآيا كردي و من نمي دونم مي شه لينكش رو بذاري؟
---===---
واقعا دستت درد نكنه!

mohsennowruzi
27-08-2006, 00:41
خسته نباشي!
دستت درد نكنه ولي اگر ميشه همين نوشته ها منتقل كن به pdf .
اگر اينكار رو بكني خيلي كار بزرگي كردي ممنون!
===================
واآيا كردي و من نمي دونم مي شه لينكش رو بذاري؟
---===---
واقعا دستت درد نكنه!


دوست عزیز
اگه یه نگاه به پست های قبلی می کردی لینک رو گذاشته بودم
این هم یک بار دیگه!
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Last Killer
30-08-2006, 19:01
جان من عاشق #C ام
اگه كمك خواستين من هستم البته بهتره كمي سطح كلاس رو بالا ببريم
نظرت چيه؟ :evil:

WooKMaN
30-08-2006, 20:19
جان من عاشق #C ام
اگه كمك خواستين من هستم البته بهتره كمي سطح كلاس رو بالا ببريم
نظرت چيه؟ :evil:
سطح كلاست رو ببر روي low و بروبچ رو راه بنداز .... [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Last Killer
31-08-2006, 15:22
به هر حال ما هستیم در هر سطحی
ولی باید با هم هماهنگ تر بشیم :evil:
نظرت چیه؟؟؟؟؟؟؟؟؟؟؟

Last Killer
31-08-2006, 15:27
بچه ها من حوصله نداشتم ببینم آقا نوید چی بهتون گفته بس اگه تکراری می گم ببخشید
CODE sNIPPET:
BARAYE INKE MAJBOOR NASHIN HAR BAR AMALIYAT NEVESHATN IF ,FOR,FOREACH ro har bar bezanin in mekanizm ro tarahi kardan
ba in kar ghalebe koli bazi az dastoor haye por karbord ro berahati miyarid
baraye in kar az kilid haye zir estefade konid
ctrl + K + x
hala yeki sho bezanid
chi mibinid
in kar sorate barname nevisi ro kheyli mibare bala
felan

WooKMaN
31-08-2006, 19:02
به هر حال ما هستیم در هر سطحی
ولی باید با هم هماهنگ تر بشیم :evil:
نظرت چیه؟؟؟؟؟؟؟؟؟؟؟
هستم خدمتتون [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] .... واسه هماهنگی فکری داری پی ام بده ... [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Last Killer
08-09-2006, 14:18
inheritence يك مقوله خيلي جالب برنامه نويسي شي گراست
شما مي تواند از 1 كلاس و x اينترفيس ارث ببريد
البته از همه كلاس ها نميشه ارث برد به اين كلاس ها sealed گفته مي شود
شما هم مي تواند كلاس هاي خود را سيلد كنيد
در ظمن متد ها و... كه private باشند به ارث بر نميرسند
نحوه ارث بري :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
:evil: :evil: :evil:

محمد امين
15-09-2006, 03:03
سلام دوستان
من لينك چند تا كتاب درباره آموزش سي شارپ رو ميخواستم اما لينكهايي كه گير آوردم همه خرابن. اگه ممكنه هر كدوم رو كه سراغ دارين برام بذارين. ممنون

c#
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

sams
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Microsoft Visual C# .NET Step by Step--Version 2003
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

O'reilly - Learning C#:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

C Sharp reference:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](ebook-HTML)%20Algorithms%20And%20Data%20Structures%20In% 20C++.exe

Prentice hall: c# how to program
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] nd.Edition.Dec.2005.eBook-BBL.rar.html

محمد امين
15-09-2006, 03:32
سلام دوستان
من لينك چند تا كتاب درباره آموزش سي شارپ رو ميخواستم اما لينكهايي كه گير آوردم همه خرابن. اگه ممكنه هر كدوم رو كه سراغ دارين برام بذارين. ممنون

c#
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

sams
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Microsoft Visual C# .NET Step by Step--Version 2003
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

O'reilly - Learning C#:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

C Sharp reference:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](ebook-HTML)%20Algorithms%20And%20Data%20Structures%20In% 20C++.exe

Prentice hall: c# how to program
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] nd.Edition.Dec.2005.eBook-BBL.rar.html
البته يكي شو همين الان پيدا كردم. واقعا كتابهاي خوبي هستند:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

WooKMaN
15-09-2006, 18:49
سلام دوستان
من لينك چند تا كتاب درباره آموزش سي شارپ رو ميخواستم اما لينكهايي كه گير آوردم همه خرابن. اگه ممكنه هر كدوم رو كه سراغ دارين برام بذارين. ممنون

c#
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

sams
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Microsoft Visual C# .NET Step by Step--Version 2003
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

O'reilly - Learning C#:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

C Sharp reference:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](ebook-HTML)%20Algorithms%20And%20Data%20Structures%20In% 20C++.exe

Prentice hall: c# how to program
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] nd.Edition.Dec.2005.eBook-BBL.rar.html
محمد جان مرسي واقعا عالي بود [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ][1].gif

mohsennowruzi
16-09-2006, 13:08
سلام دوستان
من لينك چند تا كتاب درباره آموزش سي شارپ رو ميخواستم اما لينكهايي كه گير آوردم همه خرابن. اگه ممكنه هر كدوم رو كه سراغ دارين برام بذارين. ممنون

c#
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

sams
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Microsoft Visual C# .NET Step by Step--Version 2003
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

O'reilly - Learning C#:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

C Sharp reference:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](ebook-HTML)%20Algorithms%20And%20Data%20Structures%20In% 20C++.exe

Prentice hall: c# how to program
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] nd.Edition.Dec.2005.eBook-BBL.rar.html


سلام
تو دو تا آدرس زير علاوه بر اون كتاب ها مي توني كتاب هاي زياد ديگه اي هم پيدا كني.
اگه نتونستي دانلودشون كني بگو من دانلود مي كنم و يه جاي ديگه برات آپلود مي كنم.


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

aminp30
16-09-2006, 13:53
سلام
تو دو تا آدرس زير علاوه بر اون كتاب ها مي توني كتاب هاي زياد ديگه اي هم پيدا كني.
اگه نتونستي دانلودشون كني بگو من دانلود مي كنم و يه جاي ديگه برات آپلود مي كنم.


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دستت درد نکنه عالی بود. ولی لینک اول برام کار نکرد. رپیدها رو هم بیشتر از دو تا نگذاشت بگیرم. اکثر لینکهاش به رپید بود.

mohsennowruzi
16-09-2006, 20:51
دستت درد نکنه عالی بود. ولی لینک اول برام کار نکرد. رپیدها رو هم بیشتر از دو تا نگذاشت بگیرم. اکثر لینکهاش به رپید بود.

سلام
لینک اول مربوط به سایت [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] هست که خودت می تونی بری تو سایت و #C رو سرچ کنی همون لینک رو هم من الآن چک کردم کار می کرد. حسنی که این سایت داره اینه که لینک هاش مال خود سایت هست و مال rapidshare و یا ... نیست البته هم زمان فقط 2 تا کتاب رو می تونی بزاری برای دانلود و در ضمن اگه عضو سایت نباشی هر روز فقط 7 تا کتاب می تونی دانلود کنی ولی اگه عضو بشی روزی 20 تا کتاب می تونی دانلود کنی در ضمن بانک کتاب هاش هم به مرور زمان به روز رسانی می شه

لینک دوم هم مربوط به [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] هست که بیشتر بچه ها می شناسنش. لیست تقریبا کاملی از کتاب ها رو در بر می گیره ولی متاسفانه اکثر کتاب هاش روی rapidshare و مگا آپلود هستند.

اگه کتاب خاصی مد نظرت باشه می تونی یه جا برات آپلود کنم و لینک مستقیم بزارم.
در صورتی هم که بچه ها تمایل داشتن باشن تمام کتاب های #C رو با توضیح و لینک مستقیم برای دانلود براتون می زارم

محمد امين
17-09-2006, 16:49
سلام
لینک اول مربوط به سایت [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] هست که خودت می تونی بری تو سایت و #C رو سرچ کنی همون لینک رو هم من الآن چک کردم کار می کرد. حسنی که این سایت داره اینه که لینک هاش مال خود سایت هست و مال rapidshare و یا ... نیست البته هم زمان فقط 2 تا کتاب رو می تونی بزاری برای دانلود و در ضمن اگه عضو سایت نباشی هر روز فقط 7 تا کتاب می تونی دانلود کنی ولی اگه عضو بشی روزی 20 تا کتاب می تونی دانلود کنی در ضمن بانک کتاب هاش هم به مرور زمان به روز رسانی می شه

لینک دوم هم مربوط به [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] هست که بیشتر بچه ها می شناسنش. لیست تقریبا کاملی از کتاب ها رو در بر می گیره ولی متاسفانه اکثر کتاب هاش روی rapidshare و مگا آپلود هستند.

اگه کتاب خاصی مد نظرت باشه می تونی یه جا برات آپلود کنم و لینک مستقیم بزارم.
در صورتی هم که بچه ها تمایل داشتن باشن تمام کتاب های #C رو با توضیح و لینک مستقیم برای دانلود براتون می زارم
دستت درد نكنه اگه لطف كني اين كتاب رو برام بذاري بازم ممنون:
Prentice hall: c# how to program

mohsennowruzi
17-09-2006, 23:07
دستت درد نكنه اگه لطف كني اين كتاب رو برام بذاري بازم ممنون:
Prentice hall: c# how to program

سلام حجمش یکم زیاد هست (16.3 مگ) امشب امکان آپلودش برام نیست فردا یا پس فردا تو دانشگاه برات آپلود می کنم. فعلا این لینک غیر مستقیم رو داشته باش:


C# How to Program
Publisher Prentice Hall
Author(s) Harvey M. Deitel, Paul J. Dietel, Jeffrey A. Listfield, Tem R. Nieto, Cheryl H. Yaeger, Marina Zlatkina
ISBN 0130622214
Release Date 14 December, 2001
Page 1568
Category C#

Developed expressly for Microsoft's .NET platform, the C# programming language is the next phase in the evolution of C and C++. This text describes how to use C# as a general-purpose programming language as well as how to develop a variety of applications. Coverage includes, for example, object-oriented programming, transforming XML documents, multithreading, COM integration, and the Unicode standard. The CD-ROM contains source-code examples

لینک اول [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
لینک دوم [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohsennowruzi
18-09-2006, 19:34
سلام
متاسفانه اول ترم چون همه دارند از اینترنت استفاده می کنند اینترنت داشگاه هم چنگی به دل نمی زنه!
بنابراین من مطالب کتاب را قسمت به قسمت آپلود می کنم تا هم راحت آپلود بشه و هم راحت دانلود بشه
فعلا مقدمه فهرست و 5 فصل اول رو داشته باشید

لینک از سایت eggdisk (لینک مستقیم)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

لینک از سایت پرشین گیگ
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

محمد امين
19-09-2006, 01:34
سلام
متاسفانه اول ترم چون همه دارند از اینترنت استفاده می کنند اینترنت داشگاه هم چنگی به دل نمی زنه!
بنابراین من مطالب کتاب را قسمت به قسمت آپلود می کنم تا هم راحت آپلود بشه و هم راحت دانلود بشه
فعلا مقدمه فهرست و 5 فصل اول رو داشته باشید

لینک از سایت eggdisk (لینک مستقیم)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

لینک از سایت پرشین گیگ
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بله ما هم با همين مشكل روبرو هستيم ولي به هرحال بازم ممنون

mohsennowruzi
19-09-2006, 11:03
بله ما هم با همين مشكل روبرو هستيم ولي به هرحال بازم ممنون

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

چون پرشین گیگ ممکنه خطای پهنای باند بده روی یه سایت دیگه هم آپلود کردم فکر می کنم سرعتش هم از پرشین گیگ بالاتر باشه

لینک از سایت eggdisk (لینک مستقیم)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

لینک از سایت پرشین گیگ
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohsennowruzi
19-09-2006, 11:33
سلام
بالاخره تموم شده همه فایل ها آپلود شدند. :biggrin:

محمد امين
20-09-2006, 01:32
سلام
بالاخره تموم شده همه فایل ها آپلود شدند. :biggrin:
ممنون آقا محسن خسته نباشي

mohsennowruzi
20-09-2006, 11:19
ممنون آقا محسن خسته نباشي
سلام
برای اون هایی که اینترنت پر سرعت دارند دوباره آپلود کردم در قالب دو قسمت فایل rar یکی 7 مگ و یکی 8 مگ
از آدرس زیر می تونید دانلودشون کنید
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در ضمن اگه کتاب دیگه ای هم خواستید بگید تا بزارم

vorojax
26-09-2006, 18:02
دوستان شرمنده يه سال داشتم
من تازه مي خام سي شاپ ياد بگيرم مي خاستم بدونم يه برنامه معموليش فايل هايه اضافي مي خاد باهاش باشه واسه اجرا يا نه؟

WooKMaN
26-09-2006, 23:43
دوستان شرمنده يه سال داشتم
من تازه مي خام سي شاپ ياد بگيرم مي خاستم بدونم يه برنامه معموليش فايل هايه اضافي مي خاد باهاش باشه واسه اجرا يا نه؟
نه عزيز واسه يه برنامه ساده فايل هاي اضافي نميخواد ...

وقتي انشالله افتادي رو كار اونقته كه ... آره ....

vorojax
27-09-2006, 15:49
دوست عزیز ممنون
فقط یه 2 سوال دیگه
بعد اگه راه افتادم برنامه ها که حجمش زیاد نمیشه؟
و اینکه وی بی نت بهتره یا سی شاپ؟
و ایا از اکتیواس ها یه وی بی معمولی میشه تو دات نت استفاده کرد؟

محمد امين
27-09-2006, 16:55
دوستان سلام مجدد
كسي CD كتاب "آموزش گام به گام C# .NET يا همون Microsoft visual c# .NET step by step" به نويسندگي John Sharp رو نداره كه لينكشو برامون بذاره؟
ممنونم.

someone
27-09-2006, 17:13
دوستان سلام مجدد
كسي CD كتاب "آموزش گام به گام C# .NET يا همون Microsoft visual c# .NET step by step" به نويسندگي John Sharp رو نداره كه لينكشو برامون بذاره؟
ممنونم.


سلام.
من CD رو دارم. حجم تمريناتش حدود 17MB هست.
اگه زياد عجله نداريد تا شنبه صبر كنيد.در ضمن mail تون رو برام بذاريد تا براتون بفرستم.
ممنون.

محمد امين
27-09-2006, 18:00
سلام.
من CD رو دارم. حجم تمريناتش حدود 17MB هست.
اگه زياد عجله نداريد تا شنبه صبر كنيد.در ضمن mail تون رو برام بذاريد تا براتون بفرستم.
ممنون.
ممنون someone جان لطف ميكنين شنبه هم خوبه. email من:
[edited]

WooKMaN
05-10-2006, 05:11
دوستان جديد ترين pdf واسه آموزش سي شارپ كدومه ؟

mohsennowruzi
08-10-2006, 00:15
دوستان جديد ترين pdf واسه آموزش سي شارپ كدومه ؟
سلام
جدیدترین کتاب رو نمی دونم ولی این لیست برخی از کتابهای سال 2006 هست


C# Bible
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
Blending the object-oriented power of C++ with the simplicity of Visual Basic, C# is the ideal language for building sophisticated .NET components and applications. This all-in-one guide by a team of .NET programming pros delivers everything you need to get up and running with C# – a complete tour of the language and practical guidance on developing a variety of .NET solutions. Take the language tour and get the scoop on C# basics and object-oriented techniques as well as on advanced topics such as delegates and versioning. Then turn to the solutions section for all the examples and source code you need to jumpstart a C# project, whether it’s a Windows Form or an ASP.NET application.

لینک دانلود: [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]%20Bible



[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
Essential C# 2.0 is a clear, concise guide to C#—including the features new to C# 2.0. The book clearly presents material for beginners and experts and provides contrasts and comparisons between C# and other languages. The C# language is covered comprehensively and each important construct is illustrated with succinct code examples. Complete code examples are available online. Mark Michaelis has organized the material for quick access. Graphical “mind maps” at the beginning of each chapter show what material is covered and how each topic relates to the whole.
لینک توضیحات بیشتر : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]





[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
Get hands-on, expert guidance for developing with Visual C# 2005.
Get the essential, straightforward information you need to master the core capabilities of Visual C# 2005. Both new and experienced developers get expert guidance, hands-on programming instruction, and practical examples to help advance their proficiency in developing applications for Microsoft Windows and the Web.

لینک توضیحات بیشتر [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohsennowruzi
23-10-2006, 14:38
كتاب آموزش سي شارپ 2005 نوشته سيد محمد هاشميان
951 صفحه شامل 22 فصل و 4 ضميمه
واقعا منيع كاملي هست
تا شب سعي مي كنم فهرستش رو براتون بزارم
اين هم لينك دانلود
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حجمش هم زياد نيست! 12 مگ ناقابل!

mohsennowruzi
23-10-2006, 15:16
شرمنده ظاهرا از روي پارسا اسپيس دانلود نمي شه! كلي وقت صرف كردم تا آپلود شد
ولي من كه از رو نمي رم
اين هم لينك eggdisk كه ظاهرا كار هم مي كنه
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگه مشكل داشت بگيد يه جاي ديگه آپلود كنم

mohsennowruzi
23-10-2006, 17:31
دوباره سلام
این هم لینک دانلود کتاب و فهرستش
اون هایی که سرعت اینترنتشون پایین هست می تونن اول فهرست رو دانلود کنند بعد اگه خوششون اومد خود کتاب رو دانلود کنند
فهرست کتاب:
fehrest.pdf ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

خود کتاب و فهرستش
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

محمد امين
24-10-2006, 15:30
دوباره سلام
این هم لینک دانلود کتاب و فهرستش
اون هایی که سرعت اینترنتشون پایین هست می تونن اول فهرست رو دانلود کنند بعد اگه خوششون اومد خود کتاب رو دانلود کنند
فهرست کتاب:
fehrest.pdf ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

خود کتاب و فهرستش
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
فكر كنم لينكتون كار نميكنه. من كه نتونستم بگيرم. ولي اگه دوستان ميخوان به من PM بدن تا آدرس بدم بگيرن (اينجا نميشه تبليغه!!)

Last Killer
24-10-2006, 20:30
اين پي دي افه اند شه
نويسندش اريك برونه كه حتما مي شناسيدش
البته انگليسي با حجم 9.22 مگ ولي ارزشه دانلود داره
Last Killer will be one of best computer programmer in the world ! ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

mohsennowruzi
27-10-2006, 00:16
سلام
فكر كنم لينكتون كار نميكنه. من كه نتونستم بگيرم. ولي اگه دوستان ميخوان به من PM بدن تا آدرس بدم بگيرن (اينجا نميشه تبليغه!!)

لینک eggdisk کار می کنه خودم تستش کردم, با reget هم گرفتم , هیچ مشکلی نداشت.
اگه فکر می کنید یه جای دیگه آپلود کنم بهتره, بگید تا اونجا آپلود کنم

محمد امين
27-10-2006, 08:54
لینک eggdisk کار می کنه خودم تستش کردم, با reget هم گرفتم , هیچ مشکلی نداشت.
اگه فکر می کنید یه جای دیگه آپلود کنم بهتره, بگید تا اونجا آپلود کنم
سلام.
نه محسن جان من كه كتاب رو دارم. زحمت نكش. اگر بقيه دوستان ميتونن بگيرن حله! دستت درد نكنه!

mehdicracker
27-10-2006, 22:28
سلام
ممنون از همه به خاطر زحمتها
يك سوال
فرق بين ++c
#c و net.
چيه؟
فهميدم مي گن ++c بهتره.
ممنون

H_T_O_A
13-11-2006, 06:34
سلام
#C از ++C پیشرفته تر و در ضمن از قابلیت های شی گرایی جاوا هم استفاده می کنه در واقع ترکیبی از این دوست.
net. هم یک کتابخانه(Librey) یا مجموعه ای از اشیا و توابع کتابخانه ایه برای نوستن برنامه های تحت وب. حالا می تونی کداشو با سی شارپ بنویسی یا با جی شارپ یا وی بی یا ... مثلا اگه کدای سی شارپ رو استفاده کنی در اصطلاح برنامتو با سی شارپ دات نت نوشتی در صورتیکه اگر از دات نت استفاده نکنی برنامت تو اینترنت کاربردی نداره بلکه فقط واسه ویندوزه.
سی شارپ قدرتش بیشتره ولی سخت تره بستگی داره چکار بخوای بکنی
اگه کمه بازم بگم

someone
14-11-2006, 00:54
سلام. ممنون از توضيحتون


net. هم یک کتابخانه(Librey) یا مجموعه ای از اشیا و توابع کتابخانه ایه برای نوستن برنامه های تحت وب.
تنها بخشي از namespace هاي Net. مربوط به WebApp ميشه.




در صورتیکه اگر از دات نت استفاده نکنی برنامت تو اینترنت کاربردی نداره بلکه فقط واسه ویندوزه.
با اين جمله اصلا موافق نيستم. دليلش هم اينه كه قبلا از Net. هم Internet وجود داشته.
دليلي نداره براي نوشتن WebApp از Net. استفاده بشه. Net. تنها بيشتر كارها رو از روي دوش يك coder
برميداره وقتي كه داره يك webApp مينوسه. واينم به دليل اينه كه ما در عصر حاضر چيزي به مفهوم برنامه نويس
نداريم و همه تحت عنوان توسعه دهنده (Developer) شناخته ميشن.
در ضمن براي نوشتن برنامه هاي تحت ويندوز هم از Net. استفاده ميشه.

mehdicracker
14-11-2006, 14:39
سلام
ممنون از اینکه جواب دادید
متوجه شدم
ممنون

yam78
18-03-2007, 00:49
سلام

کسی می تونه در مورد پلی مرفیسم بیشتر توضیح بده؟
توضیحات پست 26تون رو خوندم ولی ...
اصلا این خاصیت کجاها به درد می خوره؟ و اصلا خود مفومش رو هم اگه یکی بیشتر توضیح بده ممنون می شم

someone
18-03-2007, 01:23
سلام.
polymorphism یا چندریختی به شما اجازه میده تا از یک Object یا شئ به چند شکل استفاده کنین.
به طور خیلی ساده میتونید در نظر بگیرید که بتونین از یک تابع چند جور استفاده کنین.
فرض کنین شما در یک کلاس , متوی دارید که مثلا مقادیر Integer رو به صورت خاصی نمایش میده.
خب باز در نظر بگیرید که شما میخواید چنین متودی رو برای نمایش مقادیر string در یک کلاس دیگه به کار ببرید. دو راه وجود داره :
1- دوباره متدی برای کلاس string رو بنویسید که این کار رو انجام بده.
2- با استفاده تغییر شکل همون متود در کلاس قبلی از اون در کلاس جدید استفاده کنین.به شرطی که کلاس
string از کلاس Integer مشتق بشه. (Inherit )

میبیند که میتونید شما کلاسی به عنوان کلاس پایه داشته باشین و متودهایی رو در اون تعریف کنین(virtual)
که بتونید اونها به شکل دلخواه در کلاس های مشتق شده از این کلاس پایه استفاده کنین (override).
به این شکل شما یک متود دارید که کلاس ها ی مختلف به شکل دلخواه ازش استفاده میکنن.

yam78
18-03-2007, 21:58
ممنون someone عزیز مثال و توضیح خیلی خوبی دادی. کاملا متوجه شدم

obalit
25-11-2008, 23:55
اگه آندرياس مي دونست c# اينقدر كمه هيچ وقت نمي ساختتش.
بيخيال...

neda_pixy
04-12-2008, 14:51
سلام
چطور ميتونم درون چند ليست باكس بر اساس راديو باتني كه انتخاب شده جستجو كنم ؟

aka1
07-12-2008, 12:12
با سلام و خسته نباشين خدمت شما دوستان عزيز من حقيقتا نمي دونم كجا اين سوال را بپرسم فقط ميگم ببخشين اگه ميشه لينك دانلود كتاب آموزشي زبان #c را به صورت فارسي بزارين ممنون ميشم آخه ما توان مالي نداريم كه بتونيم اين كتاب را بخريم با تشكر براي سلامتي و ظهور امام زمان صلوات

aram24
11-12-2008, 13:26
بهترین زبان و راحت ترین زبان برنامه نویسی برای کار بانک اطلاعاتی و sql server کدوم زبانه

aram24
11-12-2008, 13:48
چطور میتونم توی پیغام ها عکس بذارم

traveler
16-12-2008, 16:43
سلام.ممنون در مورد مطلب c# که گذاشتین.مفید بود

omidex
20-12-2008, 14:39
من قبلا با Fortran و EXCEL کار کردم ولی هر کدوم محدودیت های زیادی داشتن.از شما دوستان خواهش می کنم یه زبان برنامه نویسی را به من پیشنهاد کنید که اولا دارای گرافیک بالا بوده و ثانیا از لحاظ فرمول نویسی بی کم وکاست باشه ؛من می خواهم فرمول ها و نکات کتاب درسی خودم را به صورت برنامه در آورم.


لطفا هر چه سریعتر بنده رو راهنمای کنید.

saeid_13659
21-12-2008, 02:08
دمت گرم عالي بود
من هم تصميم گرفتم از همين الان #c رو ياد بگيرم

فاطـمه
23-12-2008, 11:14
سلام بچه ها
کار خوبی رو شروع کردین
از زحمات همه ممنون
واسه من یکی که خیلی مفید بود
بعد از خوندن پستا یه سری سوال واسم پیش اومد که اگه کسی کمکم کنه ممنون میشم
در ضمن اینم بگم که فعلا تا اول پست 12 خوندم پس اگه سوالایی که می پرسم جلوتر توضیح دادین شاکی نشین[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
--------------------------------------------------------------------------------------------------------------------------------
1- در مورد چاپ خروجی توی پست 9 و پست 10(قسمت while) رو با هم مقایسه کردم.
این دو تا روش یکی هستن؟!
2-توی پست 9 قسمت foreach
دستور foreach(int i in arr) دقیقا یعنی چی؟ بیشتر منظورم استفاده از کلمه int هست
یعنی اعداد صحیح داخل آرایه رو چک می کنه؟!
3- اگه ممکنه یه توضیحی در مورد Set و Get و ساختار کلیشون بدین چون مشابهش رو قبلا ندیدم متوجه نشدم[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-----------------------------------------------------------------------------------------------------------------------------------

فاطـمه
24-12-2008, 15:51
بچه ها کسی اینجا جواب نمیده؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

لطفا راهنمایی کنید

فاطـمه
30-12-2008, 08:50
بچه ها واقعا دیگه چرا کسی اینجا نمیاد؟!!!!
میشه در مورد Windows application هم مقاله بذارین؟!

H_E_A
30-12-2008, 13:33
در مورد سوال 2 بايد بگم اين int توي اين حلقه نوع i رو مشخص مي كنه درواقع متغيير i رو توي همين جا معرفي كرده و به اين دليل از جنس int تعريف كرده كه arr آرايه اي از جنس int هستند كاراش هم اينه كه از i به عنوان يك temp استفاده مي كنه (تقريبا)، يعني دونه دونه خونه هاي ارايه رو توي متغير (در اينجا i) ميريزه و بعد كارا رو روش انجام ميده و در مرحله بعد ميره سراغ خونه بعدي آرايه تا آرايه تموم بشه
در مورد سوال 1 : من توي پست 9 حلقه ي while پيدا نكردم
در مورد سوال 3 : بعدا ميگم... (يعني فعلا وقت ندارم)

ahmadsystemco
30-12-2008, 13:47
سلام بچه ها
کار خوبی رو شروع کردین
از زحمات همه ممنون
واسه من یکی که خیلی مفید بود
بعد از خوندن پستا یه سری سوال واسم پیش اومد که اگه کسی کمکم کنه ممنون میشم
در ضمن اینم بگم که فعلا تا اول پست 12 خوندم پس اگه سوالایی که می پرسم جلوتر توضیح دادین شاکی نشین[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
--------------------------------------------------------------------------------------------------------------------------------
1- در مورد چاپ خروجی توی پست 9 و پست 10(قسمت while) رو با هم مقایسه کردم.
این دو تا روش یکی هستن؟!
2-توی پست 9 قسمت foreach
دستور foreach(int i in arr) دقیقا یعنی چی؟ بیشتر منظورم استفاده از کلمه int هست
یعنی اعداد صحیح داخل آرایه رو چک می کنه؟!
3- اگه ممکنه یه توضیحی در مورد Set و Get و ساختار کلیشون بدین چون مشابهش رو قبلا ندیدم متوجه نشدم[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-----------------------------------------------------------------------------------------------------------------------------------
سلام خدمت دوستان

فاطمه خانم در دستور foreach شما درست متوجه شديد
foreach (int i in array) 0 ليست array را همانند يك حلقه for عادي مي گردد و با پيدا كردن هر int در ليست يك شيء از آن را برگشت داده به خاطر همين وجود int i براي دانستن نوع شيء مورد جست و جو و اختصاص دادن فصاي رم براي شيء بازگشتي لازم است.
البته لازم ذكر است كه اگر در ليست شي اي به غير از شيء مورد جست و جو وجود داشته باشد و كامپايلر نتواند آن را به شيء مورد جست و جو تبديل كند موجب ايجاد خطا (Exception) ميشود.

به عبارت ديگر foreach همانند دستور زير است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

يك مثال كه هم اكنون به ذهنم خورد اين است كه:

شما مي خواهيد رنگ نوشته تمام Control هاي فرم ( و يا هر container ديگر را) عوض كنيد. راه حل اول عوض كردن رنگ تك تك آنهاست كه اگر تعداد كنترل ها زياد و يا دايناميك باشد قابل استفاده نيست اما با يك دستور foreach كار را ساده تر مي كند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اميدوارم مطالب گفته شده بدرد شما بخورد.

با تشكر AHS

فاطـمه
30-12-2008, 16:29
در مورد سوال 2 بايد بگم اين int توي اين حلقه نوع i رو مشخص مي كنه درواقع متغيير i رو توي همين جا معرفي كرده و به اين دليل از جنس int تعريف كرده كه arr آرايه اي از جنس int هستند كاراش هم اينه كه از i به عنوان يك temp استفاده مي كنه (تقريبا)، يعني دونه دونه خونه هاي ارايه رو توي متغير (در اينجا i) ميريزه و بعد كارا رو روش انجام ميده و در مرحله بعد ميره سراغ خونه بعدي آرايه تا آرايه تموم بشه
در مورد سوال 1 : من توي پست 9 حلقه ي while پيدا نكردم
در مورد سوال 3 : بعدا ميگم... (يعني فعلا وقت ندارم)
از توضیحاتتون ممنونم
در مورد قسمتی مشخص شده باید بگم که من گفتم پست 9 و قسمت while پست 10
در مورد سوال 3 هم منتظر می مانیم:20:

فاطـمه
30-12-2008, 16:33
سلام خدمت دوستان

فاطمه خانم در دستور foreach شما درست متوجه شديد
foreach (int i in array) 0 ليست array را همانند يك حلقه for عادي مي گردد و با پيدا كردن هر int در ليست يك شيء از آن را برگشت داده به خاطر همين وجود int i براي دانستن نوع شيء مورد جست و جو و اختصاص دادن فصاي رم براي شيء بازگشتي لازم است.
البته لازم ذكر است كه اگر در ليست شي اي به غير از شيء مورد جست و جو وجود داشته باشد و كامپايلر نتواند آن را به شيء مورد جست و جو تبديل كند موجب ايجاد خطا (exception) ميشود.

به عبارت ديگر foreach همانند دستور زير است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

يك مثال كه هم اكنون به ذهنم خورد اين است كه:

شما مي خواهيد رنگ نوشته تمام control هاي فرم ( و يا هر container ديگر را) عوض كنيد. راه حل اول عوض كردن رنگ تك تك آنهاست كه اگر تعداد كنترل ها زياد و يا دايناميك باشد قابل استفاده نيست اما با يك دستور foreach كار را ساده تر مي كند.



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اميدوارم مطالب گفته شده بدرد شما بخورد.

با تشكر ahs
از راهنمایی هاتون واقعا ممنون
ممکنه مثال آخر رو بیشتر توضیح بدین؟
[/left]

ahmadsystemco
31-12-2008, 17:53
از راهنمایی هاتون واقعا ممنون
ممکنه مثال آخر رو بیشتر توضیح بدین؟
[/left]
سلام
حتما
در اين مثال (كه مختص تغيير رنگ forecolor تمام control هاي يك فرم است) از دستور foreach براي جست و جو در ميان كنترلهاي فرمي كه اين متد (دستور) در آن اجرا شده استفاده مي شود.
شيء مورد جست و جو در حلقه foreach شيء كنترل Control است و اشاره گري كه براي تغيير در مشخصات كنترل ها به كار رفته my_control مي باشد كه يك نام اختياري است. اين حلقه در آرايه ي this.Controls جست و جو مي كند كه this اشاره به فرم كنوني دارد. شما مي توانيد هر Container ديگري را به جاي this به كار ببريد.
(ببخشيد مي دونم توضيحاتم اضافيه)
حلقه با پيدا كردن هر كنترل رنگ متن آن را به قرمز (my_control.ForeColor = Color.Red) تغيير مي دهد.

اميد وارم مقداري سودمند بوده باشم!

با تشكر AHS

H_E_A
01-01-2009, 14:06
سلام
یکم توضیح واسه set , get (هرچند می دونم دوستان بهتر می تونند مطلبو برسونند)
توی سی شارپ به این متد ها که برای مقداردهی یا مقدار خوانی از دیتافیلد به کار میره Accessor (اکسسور) میگند ، اون متغییر هایی که براشون از اکسسور استفاده میشه Indexer یا property و بقیه متغییر هایی که پراپرتی یا همون ایندکسر ندارند رو DataField میگند

این مثال رو در نظر بگیرید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ما اینجا میتونیم خارج از کلاس به name که دارای توصیفگر private هست مقدار بدیم یا مقدار بخونیم دقت کنید ( و بازم دقت کنید) که در اینجا متغییمون با name و پراپرتیمون رو با Name تعریف کردیم و حتما توجه دارید که سی شارپ به بزرگی و کوچکی حروف حساسه
خوب، خوبی این کار چیه؟؟؟
تو یه کلمه کپسوله سازی بهتر
اما واسه توضیح بیشتر اگه دقت کنید ما به یه متغییر اختصاصی تونستیم مقدار بدیم و مقدارشو بخونیم (یعنی با این کار می تونیم مقادیر متغییر های اختصاصی رو کنترل کنیم )
جدای از اون اگه تو مثال بالا set رو نمینوشتیم فقط میتونستیم از name مقدار بخوینم یعنی متغیر فقط خواندنی ...(و همینطور اگه get رو نداشتیم نمیتونستیم مقدارش رو بخونیم ...) و...
حالا اگه وارد بحثهای ارث بری و چند ریختی و ... بشیم کارای جالبی رو میشه با این متدهای set , get به ظاهر بی ارزش انجام داد که هر چه برنامه بزرگ تر باشه بیشتر کمکتون میکنه
اما روش صدا زدنش تو برنامه اینطوریه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خط اول یه شی به نام I از ID میسازه
خط دوم set رو اجرا میکنه که رشته _H رو به value میده و میریزدش تو name
خط سوم اول get رو صدا میکنه مقدارش رو میریزه تو value بعد E_A رو بهش اضافه میکنه و بعد اون value رو میده به name (مثل خط دوم )
حالا مقدار name برابر H_E_A است
(امیدوارم توضیحاتم مفید باشه )
(اگه ایرادی داره دوستان تذکر بدند)

فاطـمه
01-01-2009, 16:27
سلام دوست من
از توضیحاتتون واقعا ممنون
پس اگه درست فهمیده باشم از Set برای مقدار دهی به یک متغییر از کلاس استفاده می شه و از Get برای خوندن مقدارش
تنها یک ابهام واسه من مونده اونم اینه که فرق پراپرتی و متغیر دقیقا چیه؟
شما منظورتون از پراپرتی احیانا تابع نبوده یعنی رفتار؟
ببخشیدا ولی کلا این تکه کد رو متوجه نمیشم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی نمیدونم Name الان چیه ؟!

H_E_A
01-01-2009, 18:02
خودتون فرقشو گفتید (خط 3 پست 111)
مثلا توی همون کدی که مثال زدم name یک متغییره ، اما Name یک پراپرتیه
خوب اگه منظورم از پراپرتی تابع (function ) یا تو زبانهای شی گرا،متد(method ) بود که نمی گفتم پراپرتی:دی، اما میشه گفت که اکسسور ها متد هستند
خواهش میکنم، این Name اینجا همون property است یعنی تو این تکه کد که خودتون مشخص کردید تعریف میشه و متد های get , set همون Accessor هستند که به وسیله اونا به name مقدارمیدیم و میخونیم

ir24
31-03-2009, 22:58
سلام
اگر اول زبان سي ياد بگيريم بعد سي شارپ بهتر است يه مستقيما بروم سراغ سي شارپ؟

ir24
31-03-2009, 23:02
سلام
اگر اول زبان سي ياد بگيريم بعد سي شارپ بهتر است يا مستقيما بروم سراغ سي شارپ؟
لطفا راهنمائي كنيد
info@hir24.tk

siamak_asgar
04-04-2009, 12:06
سلام دوست عزیز کمک کمک کمک
من دارای یک فرمی هستم که اطلاعای را در آن وارد می کنم که هر رکورد دارای یک ID است
می خواهم با زدن یک دکمه فرمی دومی باز شود که مستقیماه رکورد مربوط به ID فعلی را نمایش دهد تا بتوان دیگر اطلاعات را ویرایش کنم
در ضمن من از C#2008 Sql2008 استفاده می کنم

f_farnaz80
06-04-2009, 15:02
سلام
كامپايلرهاي جاوا و سي شارپ و دلفي را مي خواهم.

sin2x=2sinxcosx
07-04-2009, 14:33
سلام
اگر اول زبان سي ياد بگيريم بعد سي شارپ بهتر است يا مستقيما بروم سراغ سي شارپ؟
لطفا راهنمائي كنيد
info@hir24.tk

c به درد #c نمي خوره . نميگم بري ++c ياد بگيري بعد بياي #c .

CppBuilder2006
07-04-2009, 19:29
فکر کنم #c خیلی راحت تره ولی اغلب برنامه های مهم با ++c نوشته شده ن

eAmin
07-04-2009, 22:31
c به درد #c نمي خوره . نميگم بري ++c ياد بگيري بعد بياي #c .

سلام.

فراموش نکنید که، #C هم یک زبان C Base هست، پس با این وجود نمی شه گفت که یاد داشتن C کمکی به یاد گرفتن #C نمی کنه. بلکه دقیقا برعکس این موضوع هست.
در حقیقت دونستن، یکی از زبانهای ++C/C می تونه به شما در یاد گرفتن سریع #C خیلی کمک کنه، ولی اجباری نیست.


فکر کنم #c خیلی راحت تره ولی اغلب برنامه های مهم با ++c نوشته شده ن

خب فکر می کنم خودتون هم اینو از من هم بهتر بدونید که، هر کدوم برای یه کاری ساخته شدن. برای برنامه نویسی های Low level به روشنی واضحه که #C در اینجا به کار ما نمی یاد و باید از دو زبان ++C/C استفاده کرد.

موفق باشید:10:

hobab1987
08-04-2009, 18:35
مشـــــــــــــــــــــــ ـــــــــــــــكل حل شــــــــــد.

masoud h
08-04-2009, 23:47
دست گلت درد نکنه

ahamraj
17-04-2009, 15:15
با عرض سلام
جرا این صفحات قابل ذخبره کردن نیستند؟
با احترام ahamraj

mostafatajamolian
18-04-2009, 10:27
با سلام

من يك پروژه سي شارپ دارم كه مي خوام يك رشته را در متن جاي گزين كنم كه از اين قرار است
1-متن را بگيرد
2-شروع متن
3-پايان متن
4-متني كه جايگزين شود
مثال:

1-mostafa .sd.s
2-نقطه شروع s
3-نقطه پايان(.)
4-متن جايگزين aa


جواب mosaa.saa.s

كليه مرتحل خطايابي ان را نوشتم ولي اين را نتوانستم

خواهش
مي كنم يك راهنماي باي من بكنيد كه چطوري اين كار را انجام بدم (با كد)


كمكم كن خشكل (بدون استفاده از ارايه)

mahdi_1426
18-04-2009, 11:49
سلام
من میخواستم بدونم آیا دستور معادلی میشه تو c# تعریف کرد که همون کار super تو جاوارو بکنه
آخه وقتی یک کلاس با مقدار اولیه درست میکنی بعد یه زیر کلاس از اون error میگیره در صورتی
که جاوا این کار رو راحت با super انجام میده
ممنون که وقت گذاشتین

masih_m2000
18-04-2009, 14:08
سلام

تشکر یادتون نره .بدید . من در این قسمت براتون تمرکز در مطالعه را پیش نهاد می کنم . که با خواندن این مطلب شگفت زده شوید . دوستتان دارم . ای کاربران و مدیران این سایت . خداحافظ

مطالعه ی موفق با تمرکز
مؤلف: م. حورایی



دوستانه



ازیکی ازفیلسوفان و مرتاضان هندی پرسیدند: آیا پس ازاین همه دانش و فرزانگی و ریاضت هنوزهم به ریاضت مشغولی؟

گفت: آری. گفتند: چگونه؟

گفت: وقتی غذا می خورم صرفاً غذا می خورم و وقتی می خوابم فقط می خوابم.

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

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

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

تمام نوابغ جهان کسانی بودند که از قدرت تمرکز فوق العاده ای برخوردار بودند. آشفتگی و شوریدگی ذهنی، عملاً شما را به هیچ عنوان موفق نمی کند. وقتی کارمی کنید به خانواده می اندیشید، وقتی درخانواده به سرمی برید ازشغل خود نگرانید و وقتی ورزش می- کنید در اندیشه ی تحصیل هستید و وقتی درس می خوانید فکرتان هزارسو می رود. این عملاً اتلاف وقت و مؤثر نبودن است.

موفقیت یعنی تمرکز، تمرکزو تمرکز.


خواننده ی عزیز



همه ی فعالیت های انسان برای توفیق، نیازمند تمرکزاست. اما ازسلسله فعالیت های نیازمند تمرکز، مطالعه جدی ترین فعالیتی است که تمرکزدرآن نقش اساسی و محوری دارد.

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

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

درآخرذکراین نکته ضروری است که تمرکزحواس یک مهارت بی چون و چراست که نیازبه فراگیری تکنیک ها و تمرین مستمر دارد.

اینکه شما روش های کاربردی این کتاب را چند روزی تمرین کنید و بعد رهایش کنید نتیجه همان می شود که اکنون به آن گرفتارید: " عدم تمرکزحواس". تمرینات را با صبر و حوصله و متانت کافی انجام دهید. شتاب زده عمل نکنید و منظم و آرام به پیش بروید.

" لرد بایرون" می گوید: برای پیشرفت و پیروزی سه چیزلازم است: اول پشتکار، دوم پشتکار و سوم پشتکار.

این کتاب را بخوانید اگر:

مصمم هستید و اراده ی راسخ کرده اید تمرکزتان بهترشود.

تمرین ها را انجام می دهید.

و به پیشرفت خود یقین دارید.

فصل اول
واقعیت ها در: تمرکز حواس
تمرکز چیست ؟



مهم ترین علت عدم دستیابی به یک تمرکز فکرعالی، تعاریف نادرستی است که درذهن شما برای تمرکز حواس وجود دارد.

بیشتر شما تمرکز را فکرکردن به یک موضوع ویژه به صورت مطلق و کامل و صد درصد می دانید درحالی که چنین چیزی نه تنها برای شما که برای هیچ انسانی درهیچ شرایطی به هیچ عنوان ممکن نیست.

شما ابداً قادرنیستید تمام ذهن خود را به طورکامل و مطلق در اختیاریک موضوع بگذارید و بقیه ی افکار را درآن زمان از ذهن خود کاملاً حذف کنید.

زمانی که یک انسان می تواند چنین تمرکزی داشته باشد، حداکثرسه الی چهارثانیه است. یعنی تاکنون کسی نبوده که پنج ثانیه متوالی به طورمطلق، تنها و تنها به یک چیزبیاندیشد.

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

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


اما تعریف درست تمرکز


تمرکزحواس همان قدرمی تواند واقعی باشد که عوامل حواس پرتی واقعیت دارند.

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

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

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




تمرکز حواس نسبی است



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

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

درست ترآن است که بگویید در این لحظه، با ذهنیت کنونی و در محیط فعلی عوامل حواس پرتی من بیشترو میزان تمرکزم کمتراست.

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

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

کند. پس: درمورد تمرکزحواس خود واقع بینانه قضاوت کنید و واقع بینانه حرف بزنید یعنی همیشه توجه کنید که: تمرکزحواس نسبی است.


تمرکز حواس اکتسابی است



بسیاری ازشما در مواردی که نمی توانید تمرکز حواس عالی داشته باشید، می گویید: "من ذاتاً آدم حواس پرتی هستم" . همین ذهنیت نادرست باعث می شود که نتوانید ازچنین تمرکزی برخوردار گردید.

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

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

همه توانایی های همگانی را به عضله ای تشبیه می کنند. قوی ترین و عضلانی ترین افراد را هم که در نظربگیرید، وقتی به دنیا آمدند ازعضلاتی ساده و نرم و طبیعی مانند دیگران برخورداربودند اما تمرین و ممارست و به کارگرفتن عضلات باعث شده که آن ها به مرور در رشد عضلانی خود پیشرفت کنند و به بالاترین مرتبه ی آن که مهارت های ویژه دراستفاده ازعضلات است، برسند.

تمام استعدادهای بالقوه ی انسانی را می توان به صورت بالفعل درآورد و پرورش داد و به عالی ترین درجه ی خود را رساند.

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

حافظه و تمرکزهم دو استعداد همگانی هستند که می توانند پرورش پیدا کنند و به مهارت های ویژه تبدیل شوند.

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

دکتر" اسبورن" در کتاب " پرورش استعداد همگانی ابداع و خلاقیت" براین موضوع بسیارتأکید می کند و تمرینات زیادی را برای پرورش این استعداد بالقوه به خوانندگان کتاب خود می آموزند.

علت رشد روزافزون مؤسسه های پرورش نیروهای ذهنی دردنیا همین قابلیت پرورش یافتن نیروهای ذهنی و اکتسابی بودن آن هاست.

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

به خاطرداشته باشید که اگرازیک کلید مدتی استفاده نکنید، زنگ می زند ولی تا هنگامی که کلید در قفلِِِ ِ در می چرخد و به کارگرفته می شود، هرروزبراق ترو درخشان ترمی شود.

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

فصل دوم
اساس تمرینات در: تمرکز حواس



تمرکزحواس دروهله ی اول یک تلاش ذهنی است برای انسجام بخشیدن به فکر و جمع وجورکردن آن.

هرچه بیشتربه این تلاش ادامه دهید، تمرکز شما بهبود می یابد و هرچه ازاین تلاش بازبمانید، تمرکز شما کاهش پیدا می کند.

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

اینکه شما دخترید یا پسر، مرد یا زن، سالمند یا جوان و . . . به هیچ عنوان دلیلی برای عدم توانایی شما درپرورش برخی ازنیروهای ذهنی نیست.

همان طورکه گفتیم، همه ی این ها به تلاش و کوشش فردی شما بستگی دارند. هم اکنون به یک شاخه ی گل فکرکنید. مسلماً پس ازچند لحظه عوامل حواس پرتی به سراغ شما می آیند که کاملاً طبیعی است.

اما کاری که شما باید انجام دهید این است که خیلی سریع افکارخود را جمع و جورکنید و به فکراول یعنی شاخه ی گل برگردید.

بعد از این تلاش دوباره لحظاتی بیش نمی گذرد که فکرشما منحرف می شود و شما باید مجدداً به شاخه ی گل برگردید.

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

" ملوین پاورز" درکتاب " راهنمای تمرکز بهتر" به شدت تأکید می کند که استمراریک ماهه دراین تمرین به صورت روزی پنج الی ده دقیقه ، تأثیرفوق العاده ای درتمرکزفکرشما دارد.


تمرین



زمان مشخصی را انتخاب کنید. هرزمانی که دوست دارید. مثلاً ساعت ده شب.

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

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

فراموش نکنید که استمراربک ماهه دراین تمرین بسیارحائزاهمیت است. نکته ی دیگر این که حتماً به موضوع مورد علاقه ی خود فکرکنید، به ویژه درروزهای اول تمرین. چرا که هرآنچه مورد علاقه است خود به خود ایجاد تمرکزمی کند. بعداً دراین باره بیشترشرح خواهیم داد.


نگاه کردن به یک جسم


برای شروع تمرین به هیچ عنوان با چشم بسته تمرین نکنید. چون دیدن یک تصویر عینی و ملموس، بسیارساده ترازتماشای یک تصویرذهنی است.

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


دیدن یک جسم با چشم بسته


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

درجایی آسوده بنشینید. چشمان خود را ببندید و به تصویرذهنی خود توجه کنید. هربارکه ذهنتان فرارمی کند و به تصویرها و افکاردیگرمتمایل می شود با تلاشی ساده و آرام به تصویرذهنی خود برگردید.


نگاه کردن به یک اسم معنی با چشم بسته یا باز


بعد ازچند روزمداومت در مرحله ی دوم تمرین، کمی آن را برای خود دشوارترکنید. اینک به اسامی معنی توجه کنید. به محبت، فداکاری، خشم، شادی، هیجان و . . .

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

تمرکزپیدا کردن براسامی معنی، قدرت تمرکز فکرشما را بسیارعالی می کند، به شرط آنکه درمراحل 1 و 2 تمرین مهارت کسب کرده باشید.

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

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

این تصاویردنباله دار را همیشه با یک نظم ثابت و مشخص درذهن خود بیاورید و دنبال کنید.


چگونه فکرکنیم ؟


شاید شما هم با این مشکل مواجه باشید که نمی دانید چگونه فکرکنید و یا وقتی که به فکر کردن مشغول هستید، مطمئن نیستید که دارید فکرمی کنید یا نه.

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


اگردرتجسم مشکل دارید


درمرحله ی اول تمرین، شما جسمی را با چشم بازمی بینید. بنا براین تصویرعینی دارید که به دنبال آن اندیشه خواهد بود.

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

بهترین راه برای ایجاد مهارت در دیدن تصاویرذهنی، توالی انجام مراحل 1 و 2 است یعنی اینکه ابتدا تصویری را با چشم بازببینید و سپس آن را فوراً با چشم بسته ببینید. هروقت تصویرمحو یا کمرنگ شد دوباره چشم را بازکنید و تصویرواقعی را ببینید و پس ازنگاه دقیق، مجدداً چشم خود را ببندید و تصویرذهنی آن را مشاهده کنید.

این عمل خیلی زود نتیجه می دهد و شما درساختن تصویرذهنی مهارت پیدا می کنید.

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

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


یک سؤال دیگر


درمرحله ی اول تمرین ممکن است با این سؤال مواجه شوید که مثلاً وقتی سیب را می- بینیم به چه چیزآن فکرکنیم؟

ما مؤکداً پاسخ می دهیم: به هیچ چیز. فقط تصویر را ببینید، فکرخود به خود ایجاد می- شود. رنگ، شکل، لکه های کوچک، اندازه، نوع و . . .


چند روز تمرین کنیم؟


قراربود که تلاشی ذهنی به مدت یک ماه و هرروز ده دقیقه برای انسجام بخشیدن به افکارخود داشته باشید. می توانید هرهفته ازاین ماه را به انجام یک مرحله اختصاص دهید. هفته ی اول: مرحله ی اول، هفته ی دوم : مرحله ی دوم، هفته ی سوم: مرحله ی سوم ( فکر کردن به اسم معنی )، هفته ی چهارم: مرحله ی چهارم ( فکرکردن به مفاهیم گسترده و دنباله دار) .

شما می توانید بیشترتمرین کنید مثلاً ده دقیقه صبح و ده دقیقه شب. اما ما معمولاً تمرینات فراوان را توصیه نمی کنیم تا شما علاقه و استمرارخود را ازدست ندهید و زود خسته نشوید. بهتراست ازهرگونه شتاب و فشارزیاد که ناشی ازاشتیاق فراوان شما در روزهای اول است، بپرهیزید. " استمرار" شرط اول موفقیت دراین تمرین است و " وارد شدن درهرمرحله به شرط موفق شدن درمرحله ی قبل" شرط دوم.

فاطـمه
19-04-2009, 08:06
سلام

تشکر یادتون نره .بدید . من در این قسمت براتون تمرکز در مطالعه را پیش نهاد می کنم . که با خواندن این مطلب شگفت زده شوید . دوستتان دارم . ای کاربران و مدیران این سایت . خداحافظ

مطالعه ی موفق با تمرکز
مؤلف: م. حورایی



دوستانه



ازیکی ازفیلسوفان و مرتاضان هندی پرسیدند: آیا پس ازاین همه دانش و فرزانگی و ریاضت هنوزهم به ریاضت مشغولی؟

گفت: آری. گفتند: چگونه؟

گفت: وقتی غذا می خورم صرفاً غذا می خورم و وقتی می خوابم فقط می خوابم.

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

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

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

تمام نوابغ جهان کسانی بودند که از قدرت تمرکز فوق العاده ای برخوردار بودند. آشفتگی و شوریدگی ذهنی، عملاً شما را به هیچ عنوان موفق نمی کند. وقتی کارمی کنید به خانواده می اندیشید، وقتی درخانواده به سرمی برید ازشغل خود نگرانید و وقتی ورزش می- کنید در اندیشه ی تحصیل هستید و وقتی درس می خوانید فکرتان هزارسو می رود. این عملاً اتلاف وقت و مؤثر نبودن است.

موفقیت یعنی تمرکز، تمرکزو تمرکز.


خواننده ی عزیز



همه ی فعالیت های انسان برای توفیق، نیازمند تمرکزاست. اما ازسلسله فعالیت های نیازمند تمرکز، مطالعه جدی ترین فعالیتی است که تمرکزدرآن نقش اساسی و محوری دارد.

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

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

درآخرذکراین نکته ضروری است که تمرکزحواس یک مهارت بی چون و چراست که نیازبه فراگیری تکنیک ها و تمرین مستمر دارد.

اینکه شما روش های کاربردی این کتاب را چند روزی تمرین کنید و بعد رهایش کنید نتیجه همان می شود که اکنون به آن گرفتارید: " عدم تمرکزحواس". تمرینات را با صبر و حوصله و متانت کافی انجام دهید. شتاب زده عمل نکنید و منظم و آرام به پیش بروید.

" لرد بایرون" می گوید: برای پیشرفت و پیروزی سه چیزلازم است: اول پشتکار، دوم پشتکار و سوم پشتکار.

این کتاب را بخوانید اگر:

مصمم هستید و اراده ی راسخ کرده اید تمرکزتان بهترشود.

تمرین ها را انجام می دهید.

و به پیشرفت خود یقین دارید.

فصل اول
واقعیت ها در: تمرکز حواس
تمرکز چیست ؟



مهم ترین علت عدم دستیابی به یک تمرکز فکرعالی، تعاریف نادرستی است که درذهن شما برای تمرکز حواس وجود دارد.

بیشتر شما تمرکز را فکرکردن به یک موضوع ویژه به صورت مطلق و کامل و صد درصد می دانید درحالی که چنین چیزی نه تنها برای شما که برای هیچ انسانی درهیچ شرایطی به هیچ عنوان ممکن نیست.

شما ابداً قادرنیستید تمام ذهن خود را به طورکامل و مطلق در اختیاریک موضوع بگذارید و بقیه ی افکار را درآن زمان از ذهن خود کاملاً حذف کنید.

زمانی که یک انسان می تواند چنین تمرکزی داشته باشد، حداکثرسه الی چهارثانیه است. یعنی تاکنون کسی نبوده که پنج ثانیه متوالی به طورمطلق، تنها و تنها به یک چیزبیاندیشد.

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

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


اما تعریف درست تمرکز


تمرکزحواس همان قدرمی تواند واقعی باشد که عوامل حواس پرتی واقعیت دارند.

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

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

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




تمرکز حواس نسبی است



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

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

درست ترآن است که بگویید در این لحظه، با ذهنیت کنونی و در محیط فعلی عوامل حواس پرتی من بیشترو میزان تمرکزم کمتراست.

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

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

کند. پس: درمورد تمرکزحواس خود واقع بینانه قضاوت کنید و واقع بینانه حرف بزنید یعنی همیشه توجه کنید که: تمرکزحواس نسبی است.


تمرکز حواس اکتسابی است



بسیاری ازشما در مواردی که نمی توانید تمرکز حواس عالی داشته باشید، می گویید: "من ذاتاً آدم حواس پرتی هستم" . همین ذهنیت نادرست باعث می شود که نتوانید ازچنین تمرکزی برخوردار گردید.

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

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

همه توانایی های همگانی را به عضله ای تشبیه می کنند. قوی ترین و عضلانی ترین افراد را هم که در نظربگیرید، وقتی به دنیا آمدند ازعضلاتی ساده و نرم و طبیعی مانند دیگران برخورداربودند اما تمرین و ممارست و به کارگرفتن عضلات باعث شده که آن ها به مرور در رشد عضلانی خود پیشرفت کنند و به بالاترین مرتبه ی آن که مهارت های ویژه دراستفاده ازعضلات است، برسند.

تمام استعدادهای بالقوه ی انسانی را می توان به صورت بالفعل درآورد و پرورش داد و به عالی ترین درجه ی خود را رساند.

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

حافظه و تمرکزهم دو استعداد همگانی هستند که می توانند پرورش پیدا کنند و به مهارت های ویژه تبدیل شوند.

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

دکتر" اسبورن" در کتاب " پرورش استعداد همگانی ابداع و خلاقیت" براین موضوع بسیارتأکید می کند و تمرینات زیادی را برای پرورش این استعداد بالقوه به خوانندگان کتاب خود می آموزند.

علت رشد روزافزون مؤسسه های پرورش نیروهای ذهنی دردنیا همین قابلیت پرورش یافتن نیروهای ذهنی و اکتسابی بودن آن هاست.

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

به خاطرداشته باشید که اگرازیک کلید مدتی استفاده نکنید، زنگ می زند ولی تا هنگامی که کلید در قفلِِِ ِ در می چرخد و به کارگرفته می شود، هرروزبراق ترو درخشان ترمی شود.

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

فصل دوم
اساس تمرینات در: تمرکز حواس



تمرکزحواس دروهله ی اول یک تلاش ذهنی است برای انسجام بخشیدن به فکر و جمع وجورکردن آن.

هرچه بیشتربه این تلاش ادامه دهید، تمرکز شما بهبود می یابد و هرچه ازاین تلاش بازبمانید، تمرکز شما کاهش پیدا می کند.

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

اینکه شما دخترید یا پسر، مرد یا زن، سالمند یا جوان و . . . به هیچ عنوان دلیلی برای عدم توانایی شما درپرورش برخی ازنیروهای ذهنی نیست.

همان طورکه گفتیم، همه ی این ها به تلاش و کوشش فردی شما بستگی دارند. هم اکنون به یک شاخه ی گل فکرکنید. مسلماً پس ازچند لحظه عوامل حواس پرتی به سراغ شما می آیند که کاملاً طبیعی است.

اما کاری که شما باید انجام دهید این است که خیلی سریع افکارخود را جمع و جورکنید و به فکراول یعنی شاخه ی گل برگردید.

بعد از این تلاش دوباره لحظاتی بیش نمی گذرد که فکرشما منحرف می شود و شما باید مجدداً به شاخه ی گل برگردید.

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

" ملوین پاورز" درکتاب " راهنمای تمرکز بهتر" به شدت تأکید می کند که استمراریک ماهه دراین تمرین به صورت روزی پنج الی ده دقیقه ، تأثیرفوق العاده ای درتمرکزفکرشما دارد.


تمرین



زمان مشخصی را انتخاب کنید. هرزمانی که دوست دارید. مثلاً ساعت ده شب.

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

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

فراموش نکنید که استمراربک ماهه دراین تمرین بسیارحائزاهمیت است. نکته ی دیگر این که حتماً به موضوع مورد علاقه ی خود فکرکنید، به ویژه درروزهای اول تمرین. چرا که هرآنچه مورد علاقه است خود به خود ایجاد تمرکزمی کند. بعداً دراین باره بیشترشرح خواهیم داد.


نگاه کردن به یک جسم


برای شروع تمرین به هیچ عنوان با چشم بسته تمرین نکنید. چون دیدن یک تصویر عینی و ملموس، بسیارساده ترازتماشای یک تصویرذهنی است.

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


دیدن یک جسم با چشم بسته


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

درجایی آسوده بنشینید. چشمان خود را ببندید و به تصویرذهنی خود توجه کنید. هربارکه ذهنتان فرارمی کند و به تصویرها و افکاردیگرمتمایل می شود با تلاشی ساده و آرام به تصویرذهنی خود برگردید.


نگاه کردن به یک اسم معنی با چشم بسته یا باز


بعد ازچند روزمداومت در مرحله ی دوم تمرین، کمی آن را برای خود دشوارترکنید. اینک به اسامی معنی توجه کنید. به محبت، فداکاری، خشم، شادی، هیجان و . . .

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

تمرکزپیدا کردن براسامی معنی، قدرت تمرکز فکرشما را بسیارعالی می کند، به شرط آنکه درمراحل 1 و 2 تمرین مهارت کسب کرده باشید.

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

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

این تصاویردنباله دار را همیشه با یک نظم ثابت و مشخص درذهن خود بیاورید و دنبال کنید.


چگونه فکرکنیم ؟


شاید شما هم با این مشکل مواجه باشید که نمی دانید چگونه فکرکنید و یا وقتی که به فکر کردن مشغول هستید، مطمئن نیستید که دارید فکرمی کنید یا نه.

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


اگردرتجسم مشکل دارید


درمرحله ی اول تمرین، شما جسمی را با چشم بازمی بینید. بنا براین تصویرعینی دارید که به دنبال آن اندیشه خواهد بود.

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

بهترین راه برای ایجاد مهارت در دیدن تصاویرذهنی، توالی انجام مراحل 1 و 2 است یعنی اینکه ابتدا تصویری را با چشم بازببینید و سپس آن را فوراً با چشم بسته ببینید. هروقت تصویرمحو یا کمرنگ شد دوباره چشم را بازکنید و تصویرواقعی را ببینید و پس ازنگاه دقیق، مجدداً چشم خود را ببندید و تصویرذهنی آن را مشاهده کنید.

این عمل خیلی زود نتیجه می دهد و شما درساختن تصویرذهنی مهارت پیدا می کنید.

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

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


یک سؤال دیگر


درمرحله ی اول تمرین ممکن است با این سؤال مواجه شوید که مثلاً وقتی سیب را می- بینیم به چه چیزآن فکرکنیم؟

ما مؤکداً پاسخ می دهیم: به هیچ چیز. فقط تصویر را ببینید، فکرخود به خود ایجاد می- شود. رنگ، شکل، لکه های کوچک، اندازه، نوع و . . .


چند روز تمرین کنیم؟


قراربود که تلاشی ذهنی به مدت یک ماه و هرروز ده دقیقه برای انسجام بخشیدن به افکارخود داشته باشید. می توانید هرهفته ازاین ماه را به انجام یک مرحله اختصاص دهید. هفته ی اول: مرحله ی اول، هفته ی دوم : مرحله ی دوم، هفته ی سوم: مرحله ی سوم ( فکر کردن به اسم معنی )، هفته ی چهارم: مرحله ی چهارم ( فکرکردن به مفاهیم گسترده و دنباله دار) .

شما می توانید بیشترتمرین کنید مثلاً ده دقیقه صبح و ده دقیقه شب. اما ما معمولاً تمرینات فراوان را توصیه نمی کنیم تا شما علاقه و استمرارخود را ازدست ندهید و زود خسته نشوید. بهتراست ازهرگونه شتاب و فشارزیاد که ناشی ازاشتیاق فراوان شما در روزهای اول است، بپرهیزید. " استمرار" شرط اول موفقیت دراین تمرین است و " وارد شدن درهرمرحله به شرط موفق شدن درمرحله ی قبل" شرط دوم.


مطمئنید آدرس رو اشتباه نیومدین؟:20:

سانازجون
27-04-2009, 14:14
در مورد نحوه استفاده از مودم در سی شارپ راهنمائی می خواستم.

_H2_
28-04-2009, 01:45
سلام

در مورد نحوه استفاده از مودم در سی شارپ راهنمائی می خواستم

شما باید از کلاس System.IO.Ports.SerialPort استفاده کنید
msdn.microsoft.com/en-us/library/system.io.ports.serialport_members.aspx

بدون شک اگر سوالات C#.Net را در تالار مربوطه بپرسید، زودتر به جواب خواهید رسید...
(دوستانی که تمایل به جواب دادن مشکلات #C دیگران دارند، انتظار سوال را در اینجا ندارند !!!)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

موفق باشید.

zhenoos_hadi
29-04-2009, 09:55
سلام:

1 سوال :
آیا ترجمه ی سری شوم )schaum series) در بازار موجود هست؟؟؟یعنی تو انقلاب می تونم پیداش کنم؟؟؟/
با تشکر

haybehzad
01-05-2009, 23:10
salam man be jozvehaye amozeshi niyaze shadid daram age kasi dare lotfan behem moarefi kone en id mane
behzad_depres13

فاطـمه
05-05-2009, 09:19
salam man be jozvehaye amozeshi niyaze shadid daram age kasi dare lotfan behem moarefi kone en id mane
behzad_depres13
فکر کنم این تاپیک کمکتون کنه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

refresh918
05-05-2009, 17:21
سلام.مرسی . ولی فکر کنم یه کم سخت شروع کردین ... خواستین بگین یه pdf آموزشی ساده بزارم...

reza boy
05-05-2009, 21:49
ميشه يه توضيح كامل درباره اتچ كردن همراه با عكس باشه عاليه بزارين

reza boy
06-05-2009, 18:11
كسي نيست راهنمايي كنه؟

s_paliz
06-05-2009, 19:39
من با error provider به یه تکست باکس یه اروور ست میکنم
بعد یه شرط گذاشتم و میخوام ارور از بین بره و لی نمیدونم چطوری ارور میپره
لطفا راهنمایی کنید

_H2_
07-05-2009, 11:00
سلام

ميشه يه توضيح كامل درباره اتچ كردن همراه با عكس باشه عاليه بزارين
این عملیات مخصوص اتصال دیتابیس به پایگاه sqlserver است و میتوانید در برنامه کمکی SSMS با راست کلیک روی ریشه DataBase گزینه Attach را پیدا کنید و در نهایت مسیر فایها را بدهید و OK کنید.

برای اطلاعات بیشتر و انجام عمل فوق در خود برنامه به تاپیک زیر مراجعه کنید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در پست 25 هم میتوانید نمونه برنامه ای دانلود کنید.

reza boy
08-05-2009, 16:56
ميشه به صورت مغاله اينجا بزاري؟

_H2_
09-05-2009, 02:08
سلام

ميشه به صورت مغاله اينجا بزاري؟خیلی میبخشید، همچین چیزی میتواند مفید باشد ولی اصلاً فرصت و وقت این کار را ندارم.
اگر سوال و مشکلی داشتید درخدمت هستم.
موفق باشید.

R_torabi_60
09-05-2009, 21:46
mer30 az lotfet
kheyli

R_torabi_60
09-05-2009, 21:47
mer30
kheyli amuzandast
manam mikham komak konam
lotf konid mabhasayi ke mitunam komak konamo behem begid

reza boy
10-05-2009, 22:56
سلام
خیلی میبخشید، همچین چیزی میتواند مفید باشد ولی اصلاً فرصت و وقت این کار را ندارم.
اگر سوال و مشکلی داشتید درخدمت هستم.
موفق باشید.

فقط يه توضيح درباره اتچ كردن ونحوي اتچ كردن باعكس ممنون در حد 2 يا 3 صفحه

_H2_
11-05-2009, 12:26
سلام

فقط يه توضيح درباره اتچ كردن ونحوي اتچ كردن باعكس ممنون
در مورد تکلیف احتمالی دانشگاه نمیتوانم کمکتان کنم.

اگر عملاً خودتان میخواهید ینکار را انجام بدهید و نمیتوانید ... من واقعاً نمیتوانم درک کنم!
چون سبسیار ساده است! در حد copy و paste که شما برایش آموزش تصویری بخواهید !!!!

1- برنامه SSMS را اجرا میکنید.
2- در فرم اولیه اتصال servername را یک نقطه میگذارید و وصل میشوید.
3- روی Databases در سمت چپ راست کلیک میکنید و گزینه Attach را کلید میکتند.
4- در دیالوگ دکمه Add را زده و فایل mdf تان را انتخاب میکنید.
5- OK و OK !

خلاصه در فقط و فقط یک خط!
یعنی برنامه را اجرا میکنید - یک راست کلیک و انتخاب Attach و سپس دکمه Add !

reza boy
11-05-2009, 15:24
از اول مي گفتي دانشگاه 2 سال قبل از سربازي تمام شد جيگر...............ممنون

r12784
20-05-2009, 11:34
ممنون از مطالبی که گذاشتی.
یه سوال داشتم: در مورد خواندن و نوشتن در فایلهای متنی(هم عدد و هم حروف) و خوندن قسمت های خاصی از متن
خواهش می کنم کمکم کنید چون واقعا گیجم کرده.

reza boy
23-05-2009, 11:08
سلام يه سوال به شكل ديگه ميشه اتچ كرد (كد نويسي)

_H2_
23-05-2009, 23:25
سلام

... به شكل ديگه ميشه اتچ كرد ...
راه بسیار بسیار ساده ای که میتوانید در کد attach را انجام دهید استفاده از رویه db_attach است که قبلاً در پست 136 هم نمونه کدی برای اینکار معرفی کرده بودم.
همان برنامه را میتوانید از لینک زیر دانلود کنید:
support.h02.ir/fwlink/?LinkId=1001158667
یا
h02.ir/Downloads/?familyid=439DC66A-B7FF-440D-80A5-C0404BB05888

این برنامه به سادگی attach را در کد انجام میدهد.

در روش دیگر هم میتوانید از smo استفاده کنید ولی گمانم روش فوق ساده ترین راه ممکن است و هیچ ابزار و dll اضافه ای نمیخواهد.
موفق باشید.

nrzm_61
13-08-2009, 16:03
مقدمه اي بر سي شارپ : قسمت پنجم
حلقه ها در سي شارپ :

مقدمه :

اگر نياز باشد تا قطعه اي از كد بيش از يكبار اجرا شود نياز به استفاده از حلقه ها مي باشد. براي مثال فرض كنيد آرايه اي به طول 1000 تعريف كرده ايد. اكنون مي خواهيد آنرا با هزار عدد متوالي پركنيد. بديهي است كه روش زير كارآمد نيست! :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نوشتن اين خطوط متوالي احتمالا با كپي و پيست و اصلاح آن حداقل نيم ساعت طول مي كشد! بنابراين نياز به وسيله اي حس مي شود كه بتوان بوسيله ي آن امثال اينگونه كارها را انجام داد.

تعريف حلقه ها و استفاده از آنها :

براي تعريف حلقه ها ابزارهاي متعددي مانند while, do , for , foreach وجود دارند. استفاده و انتخاب آنها بستگي به سليقه ي شما و منطق برنامه دارد. در هر حال يك مساله بديهي است كه همواره بيش از يك راه حل براي يك مساله وجود خواهد داشت.

استفاده از حلقه ي for :

عموما كدنويسي را با كد نويسي مي توان آموخت! بنابراين در مورد انواع حلقه ها مثالهايي ارائه خواهد گرديد.

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex07 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- براي تعريف حلقه ي for همانطور كه مي بينيد بايد تعداد بار اجراي حلقه ( اينجا از 0 تا 999 است ) و همچنين نحوه ي رسيدن از 0 به 1000 را مشخص كرد ( در اينجا i++ است يعني هر بار يك واحد به شمارشگر حلقه اضافه مي شود. )
2- در زبان سي i++ يعني i=i+1 و i-- يعني i=i-1 و كلا i-=n يعني i=i-n و به همين ترتيب. براي مثال i*=n يعني i=i*n و i+=n يعني i=i+n و ...
3- اگر پس از حلقه ي for يك خط كد داشته باشيم نيازي به آكولاد نيست (مانند قسمت اول كد). ولي اگر تعداد خطوط مربوط به بدنه ي for زياد بود بايد حتما از آكولاد استفاده شود (مانند قسمت دوم كد). (اين قاعده اي كلي است در زبانهاي مشتق شده از زبان سي در مورد هر چيزي!)
4- فرض كنيد در قسمت اول كد بالا بجاي 1000 مي نوشتيد 1001 . سريعا با يك خطاي زمان اجرا مواجه مي شديد. زيرا مي خواستيد به عضوي از آرايه دسترسي پيدا كنيد كه تعريف نشده است. راه مدرن چك كردن اين مسائل استفاده از خاصيت Length آرايه است كه در قسمت دوم كد در عمل مشاهده مي نماييد. هميشه از اين روش استفاده كنيد.
5- حلقه ي اول يعني اينكه كار پر كردن آرايه intData را از صفر تا 999 يكي يكي (i++) انجام بده.

استفاده از حلقه ي while :
يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex08 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضيحاتي در مورد كد فوق :
1- حلقه ي while در بالا كار انجام حلقه را تا هنگامي انجام مي دهد كه شرط ذكر شده در ابتداي آن صادق و برقرار باشد. يعني در حلقه ي فوق تا وقتي n<6 است اين حلقه ادامه خواهد يافت.
2- حلقه ي while صفر يا بيشتر بار ممكن است اجرا شود.
3- در كد فوق از {0} استفاده گرديده است. متد WriteLine به شما اين اجازه را مي دهد كه n تا آرگومان براي آن تعريف كنيد و مقادير هر كدام را كه خواستيد در كد نمايش دهيد از {x} استفاده كنيد. در اين مورد مقدار آرگومان x ام نمايش داده مي شود.

استفاده از حلقه ي do :

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex09 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- اين حلقه به حلقه ي do…while معروف است و هر دو جزء آن بايد ذكر گردد.
2- اين حلقه تا زماني كه شرط ذكر شده در قمست while صحيح است ادامه مي يابد.
3- اين حلقه در ابتداي كار بدون توجه به قسمت while حداقل يكبار اجرا مي شود. (مثال زير را اجرا نماييد)



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

استفاده از حلقه ي foreach :

يك برنامه ي سي شارپ جديد console را در VS.NET باز كنيد و نام آنرا درابتدا ex10 انتخاب نماييد. سپس كد زير را درون آن بنويسيد :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيحاتي در مورد كد فوق :
1- از foreach براي حركت در بين اعضاي يك آرايه (مانند مثال بالا) و يا مجموعه ايي از اشياء استفاده مي شود (روشي شكيل ، مدرن و مطمئن! و تقريبا به ارث رسيده از ويژوال بيسيك!!).
2- در زبانهاي مشتق شده از C ، عملگر % ، باقيمانده را محاسبه مي كند.
3- در كد فوق با استفاده از حلقه ي foreach تك تك اعضاي آرايه در مورد زوج و يا فرد بودند مورد بررسي قرار گرفته اند و تعداد اعضاي زوج و فرد در آخر نمايش داده مي شود
STAThread این توی سی شارپ چه معنا دارد ؟

mahdi7610
13-08-2009, 19:56
STAThread این توی سی شارپ چه معنا دارد ؟

STAThread یک صفت هستش که معمولا در ابتدای کليه برنامه‌های C# و قبل از آغاز متد Main() قرار مي‌گيرد.

اين صفت بيان مکنه که برنامه C# مورد نظر مي‌تواند با کد مديريت نشده COM از طريق Simple Threading Apartment ارتباط برقرار نمايد .
استفاده از اين صفت در هر برنامه‌ای مي‌تواند مفيد باشد ، چراکه شما بعنوان برنامه نويس هيچ‌گاه اطلاع نداريد که آيا کنابخانه ثالثی که از آن استفاده مي‌کنيد ، قصد برقراری ارتباط با COM را دارد يا نه؟

در کل یک نوع صفت هستش .

موفق باشید

آریامن
16-01-2010, 13:15
ادامه مطالب آقای wookman در مورد آموزش سی شارپ چی شد؟؟؟؟؟؟؟

kick_508
14-02-2010, 09:22
سلام
لطفاً نحوه اتصال با بانک اطلاعاتی و ویرایش و گرارشگیری و حذف رو در سی شارپ به من می گین ؟

Arman_BM
15-02-2010, 03:07
به جای گفتن توضیحات فراوان این لینک رو ببین:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کلا آموزش های تصویری ماکروسافت هست. مطابق با موضوع مورد نظرت رو دانلود کن. واقعا عالی توضیح میده. حالا زبان انگلیسی هست اما تصویریه.

:8:

farshidshd
23-02-2010, 12:15
اگه ممکنه لطفا" یکی از مدیران محترم همه ی این ها رو یکجا کنه و ضمیمه کنه.

L u K e !
23-02-2010, 13:23
این تاپیک اینجا چی کار می کنه ؟

sltavakoli
23-02-2010, 13:57
من که میگم کتاب How to program :C# رو بخونید از همه چیز بهتره.

sin2x=2sinxcosx
23-02-2010, 19:37
اگه ممکنه لطفا" یکی از مدیران محترم همه ی این ها رو یکجا کنه و ضمیمه کنه.


چی رو ضمیمه کنه ؟ :20:

sina_127
26-02-2010, 23:15
داداش تا اینجا که من دیدم سی شارپ رو با زبان سی درس دادی که.

farshidshd
01-03-2010, 13:26
چی رو ضمیمه کنه ؟ :20:

همه آموزشهایی که اینجا گفته شده. یکجاشون کنین بعد ضمیمه کنین برای دانلود

Molibden
08-03-2010, 14:06
چجوری میشه یه ارایه از نوع int رو از کاربر گرفت؟
منظور با حلقه اس نه اینکه برای هر خونه یه console.realline بذارم!
ممنون

mohsenbahar
05-07-2010, 16:31
از اينكه وقت ميذاري وآموزش سي شارپ را تكميل ميكني واقعا ممنون . نميدونم چه هدفي داري ولي معلومه از اين جوناي الكي نيستي . بزرگي بزرگ
سفندارمذ پاسبان تو باد خرد جان روشن روان تو باد

programmer_pc2003
24-08-2010, 16:23
سلام به همه دوستان عزیز

هر کسی به من آموزش بده استاد منه سن و جنسیت مهم نیست
نه رسمی میگم نه خودمونی، می خوام شاگرد و استادی بگم
استاد...
من زبان برنامه نویسی رو از سوم راهنمایی دارم کار میکنم علاقه ی من با ویژوال بیسیکی که تو مدرسه یاد گرفتم شروع شد اما ویژوال بیسیک منو راضی نکرد بعد پاسکال رو همینطوری از روی کتاب یاد گرفتم ببینم چطوریه اونم نشد رفتم سراغ زبان سی تا 10 فصلش رو خوب رفتم جلو اما دیدم خیلی سخت شد رفتم سی پلاس پلاس رو از روی کتاب یاد گرفتم اما محیط کنسولی این سه زبون آخری دیگه خسته ام کرد بعد دیدم من به ویژوال علاقه ی بیشتری دارم تا کنسول. در مورد یه زبان ویژال برای طراحی نرم افزار تحقیق کردم (1388) که زبان سی شارپ رو شناختم اومدم از روی سی دی آموزشی و کتاب و مطالبی که از اینترنت می گرفتم شروع به کار کردم خیلی سریع اومدم جلو اما وقتی با یکی از اساتید مجتمع فنی تهران مصاحبه داشتم گفت: "پراکنده می دونی بهتره از اول اصولی شروع کنی." حالا من می خوام از این سایت شروع به یادگیری کنم هدف من توی برنامه نویسی فقط اینه که برنامه نویس برتر بشم امیدوارم تمامی اساتیدی که اینجا حضور دارند در این زمینه منو یاری کنند.
برای شروع می خوام مطالبی رو که استاد عزیز در صفحات اول گذاشتند رو خوب کار کنم چون کنسول نویسی در سی شارپ رو اصلا کار نکردم خیلی زود بر میگردم و با سوالاتم مزاحم تمامی استادان میشم.
یه خواهش دیگه اگه میشه برنامه نویسی تحت ویندوز رو هم بگید، ممنون میشم


دوستدار شما برنامه نویس تازه کار
حسینی

elyass
25-08-2010, 16:07
سلام
ببخشید یه سوال دارم
من یه datatable و datagridview درست کردم. اطلاعات رو از database به دیتاتیبل و سپس به دیتاگریدویو انتقال دادم. حالا میخوام تغییرات کاربر در دیتاگرید رو در دیتابیس اعمال کنم ولی نمیشه ارور میده




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میشه راهنماییم کنید؟

alinewsted
04-10-2010, 09:53
درود بر دوستان برنامه نویس ، یه پرسش پیش و پا افتاده داشتم که سپاس گزارم اگر جوابم روبدید.الگوریتم پرسش پایین رو می خوام:
رشته ای از اعداد (حالا مثلا 6 ،7 عددی) که min و max اعداد رو بهمون بده و حاصل جمع و میانگین اعداد رشته رو مشخص کنه.تو سی شارپ

luky lock
10-10-2010, 08:19
سلام دوست عزیز اگه سوالی در مورد c# داشته باشم میتونی کمکم کنی

davod_danger666
12-10-2010, 18:12
سلام.....من تازه عضو شدم نمیدونم چیکار کنم....استادم بهم گفته که باید یه پروژه سی شارپ تحویلش بدم....میخواستم ببینم چه جوری میتونم یاد بگیرم؟
10 صفحه اول رو دیدم همه لینک ها خراب بود یکی کمک میکنه یه لینک درست بهم بده دان کنم؟

rasool217
14-10-2010, 18:03
جا داره یه تشکر جدا _از طرف همه ی کسایی که میخواستن تازه سی شارپ یاد بگیرن_ به خاطر نوشتن این همه پست ازتون بکنم. واقعا ممنون.کلی کمک بود.

ashkan comp
31-10-2010, 19:38
با سلام خدمت سرور عزيزم
از اطلاعات مفيدتون متشكر

khorshide55
14-01-2011, 21:43
سلام دوستان عزيز. من يك يك فرد مبتدي هستم كه مي خواهم برنامه نويسي را كلاً با سي شارپ شروع كنم، تا كنون مفاهيم كلي مثل كلاس و شي گرايي و تابع و را توسط يكي از دوستان فرا گرفته ام، به نظر شما بهترين راه براي يادگيري سريع سي شارپ بدون نياز به اينكه كلاس بروم، با توجه به اينكه بچه دار هستم و فرصت زيادي ندارم، چيست؟

gonash_f60
30-01-2011, 11:28
واقعا ممنونم مطالب قسمت سی شارپ خیلی به دردم خورد.

ompc
05-02-2011, 21:20
سلام
منم راه بدین بازی:31:
قول میدم هر کمکی از دستم بر اومد دریغ نکنم
خیلی به C# علاقه دارم تا حدی هم خوب پیش رفتم
فکر کنم بتونم خیلی از سوالاتتون رو جواب بدم

z522msn
06-02-2011, 16:25
سلام بر اساتید
میشه یکم در مورد برنامه نویسی شيء گرا در سی شارپ توضیح دهید؟؟؟

ompc
07-02-2011, 14:56
درود بر دوستان برنامه نویس ، یه پرسش پیش و پا افتاده داشتم که سپاس گزارم اگر جوابم روبدید.الگوریتم پرسش پایین رو می خوام:
رشته ای از اعداد (حالا مثلا 6 ،7 عددی) که min و max اعداد رو بهمون بده و حاصل جمع و میانگین اعداد رشته رو مشخص کنه.تو سی شارپ

سلام
مثلا
string s="2348954" masalan in
اینا رو داریم
برای تبدیل کردنشون به عدد باید اینو بنویسی
Convert.toint32(s[0])
الان رشته 5 تبدیل به عدد 5 شد.
1)ا 2 تا متغیر min و max درست می کنی و به روش بالا عدد اولی رو توشون قرار میدی
2)یه for می خوای که از 0 تا s.lenght (طول متغیر) جلو بره
3)توی حلقه هر دفعه عدد بعدی ارایه را با متغیر های min و max مقایسه می کنی و بسته به متغیر جایگزین می کنی(با استفاده از دستور Convert باید مقایسه بکنی)
================
4)برای جمع، یه متغیر sum تعریف می کنی و توی حلقه بهش مقدار رشته s[i] را اضافه می کنی
5)برای میانگین هم بیرون حلقه sum رو بخش بر s.lenght می کنی

santory_nw
07-02-2011, 19:50
salam

tashakor mikonam khob bod ta injash estefade kardim

z522msn
07-02-2011, 22:05
سلام بر اساتید
میشه یکم در مورد برنامه نویسی شيء گرا در سی شارپ توضیح دهید؟؟؟ اصلا این شيء گرا چیه و به چه دردی میخوره؟؟/

ompc
08-02-2011, 15:59
سلام بر اساتید
میشه یکم در مورد برنامه نویسی شيء گرا در سی شارپ توضیح دهید؟؟؟ اصلا این شيء گرا چیه و به چه دردی میخوره؟؟/

سلام

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

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

کلاس
کلاس روشی برای بسته بندی نوع داده مجرد است . در کلاس امکان بسته بندی و محصور کردن (Encapsulation ) مجموعه ای از داده ها . روال های پردازش کننده این داده ها را به صورت یک بسته واحد فراهم می کند .
داده های داخل یک کلاس به وسیله کلاس محافظتمی گردد . به گونه ای که پردازش داده های خصوصی یک کلاس تنها از طریق روال های داخلی آن امکان پذیر است . داده های یک کلاس را متغیر های کلاس و روال های آن را روش نامیده اند . برای مثال . کلاس انسان ها یک کلاس قابل تعریف است . در این کلاس خصوصیات مشترک انسان ها تعریف می گردد و هیچ انسان خاصی را نشان نمی دهد . کلاس یک نوع است . همانگونه که مثلا int یک نوع است .
عملیات محاسباتی ( یا غیر محاسباتی ) بر روی نوع داده انجام نمی شود . بلکه این عملیات بر روی متغیرهایی که از این نوع داده تعریف می گردد انجام می شود . بطور مشابه عملیات محاسباتی ( یا غیر محاسباتی ) روی کلاس انجام نمی شود .
شیء
یک شی یک نمونه واقعی از یک کلاس است . همانگونه که در C (زبان غیر شی گرا ) می توان متغیر یا متغیر هایی از یک نوع مثلا int تعریف کرد و این متغیر هارا پردازش نمود . در یک زبان شی گرا میتوان شی یا اشیایی را از یک کلاس تعریف کرد . این اشیا موجودیت واقعی پیدا می کنند و قابل پردازش هستند . همانطور که یک انسان خاص . از کلاس انسانها موجودیت واقعی پیدا می کند و فعالیت می کند تغذیه می کند و… در چارچوب یک زبان شی گرا به متغیر های یک نوع داده نیز اشیا میگویند . هر شی داده مخصوص به خود دارد که متغیر های عضو یا داده های عضو نامیده می شوند .
تاریخچه
دیدگاه شی‌گرایی (Object Oriented) از اواسط دهه ۱۹۷۰ تا اواخر دهه ۱۹۸۰ در حال مطرح شدن بود. در این دوران تلاشهای زیادی برای ایجاد روشهای تحلیل و طراحی شی‌گرا صورت پذیرفت. در نتیجة این تلاشها بود که در طول ۵ سال یعنی ۱۹۸۹ تا ۱۹۹۴، تعداد متدولوژیهای شی‌گرا از کمتر از ۱۰ متدولوژی به بیش از ۵۰ متدولوژی رسید. تکثر متدولوژیها و زبانهای شی‌گرایی و رقابت بین اینها به حدی بود که این دوران به عنوان “جنگ متدولوژیها” لقب گرفت. از جمله متدولوژیهای پرکاربرد آن زمان می‌توان از Booch، OOSE، OMT، Fusion، Coad-Yourdan، Shlayer-Mellor وغیره نام برد. فراوانی و اشباع متدولوژیها و روشهای شی‌گرایی و نیز نبودن یک زبان مدلسازی استاندارد، باعث مشکلات فراوانی شده بود. از یک طرف کاربران از متدولوژیهای موجود خسته شده بودند، زیرا مجبور بودند از میان روشهای مختلف شبیه به هم که تفاوت کمی در قدرت و قابلیت داشتند یکی را انتخاب کنند. بسیاری از این روشها، مفاهیم مشترک شی‌گرایی را در قالبهای مختلف بیان می‌کردند که این واگرایی و نبودن توافق میان این زبانها، کاربران تازه‌کار را از دنیای شی‌گرایی زده می‌کرد و آنها را از این حیطه دور می‌ساخت. عدم وجود یک زبان استاندارد، برای فروشندگان محصولات نرم‌افزاری نیز مشکلات زیادی ایجاد کرده بود.

***

در این تحقیق شی گرایی را در دو زبان برنامه نویسی ( C++ و C# ) مورد بررسی قرار می دهم و شی گرایی و موارد آن را در هر یک به اختصار توضیح می دهم .

در ابتدا نگاهی می اندازیم به این خاصیت در زبان برنامه نویسی C++ و در ادامه شی گرایی را در زبان C# مورد بررسی قرار میدهیم وسپس لیست برخی از برنامه های شی گرا را ذکر می کنیم .

شی گرایی در زبان C++

برنامه نویسی شی گرا چیست ؟
از آنجایی که اساس تکوین c++ برنامه نویسی شی گرا است . پس مهم است که تعریف دقیقی را از برنامه نویسی شی گرا ارائه دهیم . شی گرا از بهترین مفاهیم برنامه سازی ساخت یافته بوجود آمده است و با چندین مفهوم قوی ترکیب شده که امکان سازماندهی برمانه ها به طور کارامد را فراهم می کند . به طور کلی هنگامی که در حالتی شی گرا نیز برنامه می نویسید مساله را به بخش های تشکیل دهنده آن تجزیه می کنید . هر مولفه ای یک شی خود ظرف می شود . که شامل دستور العملهای خودش و داده های مرتبط به آن شی است . از طریق این عملیات پیچیدگی کاهش یافته و می توان برنامه های بزرگ را مدیریت کرد . همه زبان های برنامه نویسی شی گرا در سه چیز مشترک هستند : کپسوله سازی . چند ریختی و وراثت . که در زیر اشاره مختصری به هر یک از آنها می کنیم .

کپسوله سازی
همانطوری که میدانید تمام برنامه ها از دو عنصور اصلی تشکیل می شوند : عبارت برنامه ( کد ) و داده ها . کد بخشی از برنامه است که عملیات را اجرا می کند و داده ها اطلاعاتی است که توسط این عملیات تحت تاثیر قرارگرفته . کپسوله سازی یک مکانیزم برنامه نویسی است که کد و داده را با هم در یک جا قرار داده و هر دو را از استفاده نادرست وتداخل خارجی ایمن نگه می دارد.
در یک زبان شی گرا . کد و داده ممکن است باهم در چنین روشی محدود شوند که یک جعبه سیاه خود ظرف را ایجاد می کند . درون جعبه تمام داده های مورد نیلز و کد است . هنگامی که در این روش کر و داده ها با هم پیوند برقرار می کنند . یک شی به وجود می آید . به عبارت دیگر . یک شی ابزاری است که از کپسوله سازی پشتیبانی می کند .
درون یک شی ( کد و داده ها ) یا هر دو ممکن است برای آن شی محلی ( خصوصی / private ) یا عمومی ( public ) باشند . کد یا داده های محلی فقط توسط بخش دیگری از شی شناخته شده و قابل دست یابی هستند .
به همین دلیل کد یا داده محلی برای قطعه ای از برنامه که خاج از شی است . قابل دسترس نمی باشد . هنگامی که کد یا داده ها عمومی هستند بخشهای دیگری از برنامه ممکن است به آنها دسترسی داشته باشند حتی اگر درون شی تعریف شده باشند بخش های عمومی یک شی برای ارائه یک ارتباط کنترل شده با عناصر محلی شی مورد استفاده قرار می گیرند .

چند ریختی
چند ریختی کمیتی است که به یک رابط امکان می دهد تا برای یک کلاس عمومی از عملیات مورد استفاده قرار گیرد . عمل خاص توسط ذات حقیقی شی تعیین می شود . یک مثال ساده از چند ریختی در فرمان اتومبیل است . فرمان اتومبیل برای تمام اتومبیل ها بدون توجه به مکانیزمی که مورد استفاده قرار می دهند یکسان است . فرممان برای اتومبیلی که به صورت دستی کار میکند یا با نیروی برق یا هر چیز دیگری عمل یکسانی را انجام میدهد . بنابراین بعد از اینکه شما چگونگی عمل کردن فرمان را یاد گرفتید میتوانید هر نوع اتومبیلی را برانید . همین هدف نیز می تواند در برنامه نویسی اعمال شود . به عنوان مثال یک پشته ( لیستی که در آن اولین ورودی آخرین خروجی است مثل تعدادی سکه که روی هم قرار می گیرند ) را در نظر بگیرید. ممکن است برنامهای داشته باشید که نیاز به سه نوع مختلف پشته داشته باشد یک پشته برای مقادیر اعداد صحیح . یک پشته برای اعداد اعشاری و یک پشته برای کاراکترها مورد استفاده قرار گیرد . در این صورت الگوریتمی که هر سه پشته را پیاده می کند یکسان است حتی اگر داده هایی که در آنها ذخیره می شود متفاوت باشند . در یک زبان غیر شی گرا نیاز خواهید داشت تا سه نوع مختلف از روال ها ی پشته را ایجاد کرده . به هر کدام نام متفاوتی قرار داده و برای هر کدام از روابط خاص خودش استفاده کنید . به دلیل وجود چند ریختی در C++ می توانید یک مجموعه روال عمومی از پشته ایجاد کرده و آن را برای هر سه نوع به کار ببرید . با این روش بعد از اینکه استفاده از یک پشته را یاد گرفتید می توانید همه انواع آن را به کار ببرید .
به طور کلی مفهوم چند ریختی اغلب توسط عبارت ” یک رابط. چندین روش ” بیان می شود . این بدین معنی است که امکان طراحی یک رابط عمومی برای گروهی از عملیات مرتبط وجود دارد .
چند ریختی با اعمال رابط یکسانی که برای تعیین یک کلاس عمومی مورد استفاده قرار می گیرد . به کاهش پیچیدگی کمک می کند . این است وظیفه کامپایلر تا فعالیت خاصی ( مثل متد ) را برای اعمال روی آن انتخاب کند . شما به عنوان برنامه نویس نیاز ندارید تا این انتخاب را انجام دهید شما فقط نیاز دارید رابط عمومی را به خاطر سپرده و استفاده کنید .
زبان های برنامه نویسی شی گرای اولیه چون به صورت مفسری بودند از چند ریختی در زمان اجرا پشتیبانی می کردند . ولی چون C++ کامپایلری است پس هم در زمان اجرا و هم زمان کامپایل از چند ریختی پشتیبانی می کند.

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

C++ برنامه نویسی شی گرا را پیاده سازی می کند .
چندین ویژگی در C++ وجود دارد که از کپسوله سازی . چند ریختی و وراثت پشتیبانی می کنند. به خاطر داشته باشید که می توانید از C++ برای نوشتن هر نوع برنامه ای و با استفاده از هر نوع روشی استفاده کنید . این مطلب کهC++ از OOP پشتیبانی می کند بدین معنی نیست که فقط می توانید برنامه های شی گرا بنویسید . همانند پیشینه خود ( یعنیc ) یکی از قویترین مزایای C++ قابلیت انعطاف آن است .

شی گرایی در زبان C#

شئ گرایی (OOP) در #C بر چند پایه استوار است که به قرار زیرند:
- Inheritance
- Encapsulation
- Polymorphism
- Abstraction
- Interface
اکنون به توضیح مختصر هر یک می پردازیم.

Inheritance ارث بری

پدر و فرزندی را در نظر بگیرید. هر پدری مشخصات فردی به خصوصی دارد. فرزند وی می تواند همه خصوصیات او را به ارث برد و خصوصیتهای دیگری نیز داشته باشد که پدرش ندارد. این یعنی ارث بری! برای مثال پدر وقتی عصبانی می شود، داد و فریاد می کند. پسر هم این خصوصیت را به ارث می برد با این تفاوت که وقتی عصبانی می شود، علاوه بر داد زدن، چند عدد بشقاب هم می شکند. در برنامه نویسی شئ گرا از مفهوم ارث بری استفاده های زیادی می شود. برای تفهیم راحت تر مسئله فرض کنید کلاسی به نام وسیله نقلیه داریم. از آنجا که هر وسیله نقلیه ای حرکت می کند، رنگ دارد، سرعت دارد، ترمز می گیرد و… می توانیم همه این متدها و فیلدها( کدام متدها و فیلدها!؟) را در کلاس وسیله نقلیه تعریف کنیم. حال یک وهله از این کلاس را در نظر بگیرید (مثلا دوچرخه!). یک دوچرخه یک وسیله نقلیه است که همه خصوصیات عمومی یک وسیله نقلیه را دارد و البته خصوصیاتی دارد که مختص خودش هستند و در انواع دیگر یافت نمی شوند. به این منظور این دوچرخه می تواند ویژگیها و متدهای مشترک را از کلاس وسیله نقلیه به ارث ببرد و در عین حال ویژگیهای منحصر به خود را نیز داشته باشد. قابلیت استفاده دوباره از کد (Reusability) یکی از مزیات اصلی ارث بری است.

Encapsulation

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

فرض کنید سوار ماشینی هستید که به سرعت در حرکت است! در مسیری که می روید ماشین پدر نامزدتان از روبرو به شما نزدیک می شود و سعی می کنید سریع ترمز بگیرید تا برخورد نکنید. اگر قرار باشد که بدانید بعد از فشار دادن پدال ترمز چه عملیاتی انجام می شود تا ترمز گرفته شود، دیگر باید از ازدواج قطع امید کنید. ولی اگر تنها بدانید که با فشار دادن پدال، ترمز گرفته می شود شما خوشبخت خواهید شد. در واقع ما در اینجا کار ترمز گرفتن ماشین را به صورت یک کپسول آماده در نظر می گیریم. هدف Encapsulation این است که ما را از پرداختن به ریز موضوعات رها کند و اشیاء را به صورت یک جعبه سیاهی بدانیم که به ازای یک ورودی خاص خروجی خاصی می دهند. اگر می خواهیم کدهای ما نیز این مورد را رعایت کنند باید سعی کنیم نگاه کپسولی به اشیاء و عملکرد آنها داشته باشیم. در #C برای کپسوله کردن از Access Modifierهای protected ،private و public استفاده می شود.

Polymorphism

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

Abstraction

تجرید یا مجرد سازی! به کلاسی مجرد گفته می شود که پیاده سازی متدها در آن انجام نمی شود! بر خلاف انسانها که مجرد تعریف دیگری برایشان دارد! حال سئوالی پیش می آید که اگر کلاسی داشته باشیم که نخواهیم پیاده سازی متدها را در آن انجام بدیم، از آن کلاس چه استفاده ای می کنیم؟ برای پاسخ به این سئوال شرایط زیر را در نظر بگیرید:
فرض می کنیم که شما رییس یک شرکت بزرگ برنامه نویسی هستید و می خواهید پروژه بزرگی را انجام دهید. برای اجرای پروژه از برنامه نویسان مختلفی استفاده می کنید که ممکن است همه آنها هموطن نباشند! مثلا هندی، ایرانی یا آلمانی باشند! اگر قرار باشد هر برنامه نویسی در نامگذاری متدها و کلاسهایش آزاد باشد، در کد نویسی هرج و مرج به وجود می آید. شما به عنوان مدیر پروژه، کلاسی تعریف می کنید که در آن تمام متدها با ورودی و خروجی هایشان مشخص باشند. ولی این متدها را پیاده سازی نمی کنید و کار پیاده سازی را به برنامه نویسان می دهید و از آنها می خواهید که همه کلاسهایی را که می نویسند از این کلاس شما به ارث ببرند و متدها را به طور دلخواه پیاده سازی کنند. این باعث می شود که شما با داشتن یک کلاس، ورودی و خروجی های مد نظر خود را داشته باشید و دیگر نگران برنامه نویسان نباشید. کلاسی که شما تعریف می کنید یک کلاس مجرد نامیده می شود.
برای تعریف یک کلاس مجرد از کلمه کلیدی abstract استفاده می کنیم. فیلدهایی که می خواهیم در کلاسهای مشتق شده از این کلاس پیاده سازی شوند حتما باید با abstract تعریف شوند. یک کلاس مجرد می تواند فیلدها و متدهای نامجرد داشته باشد. اگر متد نامجردی در یک کلاس مجرد تعریف کردید، حتما باید آن را پیاده سازی کنید و نمی توانید پیاده سازی آن را به کلاسهای مشتق شده بسپارید.

Interface

اینترفیس در برنامه نویسی همانند همان کلاس است تنها با این تفاوت که هیچکدام از اعضای آن پیاده سازی نمی شوند. در واقع یک اینترفیس گروهی از متدها، خصوصیات، رویدادها و Indexer ها هستند که در کنار هم جمع شده اند. اینترفیس ها را نمی توان Instantiate (وهله سازی) کرد (یعنی نمی توان وهله ای از یک اینترفیس ایجاد کرد!). تنها چیزی که یک اینترفیس دارا می باشد امضای (signature) تمامی اعضای آن می باشد. به این معنی که ورودی و خروجی متدها، نوع Property ها و… در آن تعریف می شوند ولی چیزی پیاده سازی نمی شود. اینترفیس ها سازنده و فیلد ندارند (امری است بدیهی! چرا؟). یک اینترفیس نمی تواند Operator Overload داشته باشد و دلیل آن این است که در صورت وجود این ویژگی، احتمال بروز مشکلاتی از قبیل ناسازگاری با دیگر زبانهای NET. مانند VB.NET که از این قابلیت پشتیبانی نمی کند وجود داشت. نحوه تعریف اینترفیس بسیار شبیه تعریف کلاس است تنها با این تفاوت که در اینترفیس پیاده سازی وجود ندارد.

حالا این اینترفیس در کجا به کار می آید؟ اگر با C++کار کرده باشید ( در آن صورت کارتان خیلی درست می باشد!!!) با واژه ارث بری چند گانه آشنا هستید. ولی احتمالا شنیدید که جاوا و #C از ارث بری چندگانه پشتیبانی نمی کنند. (یعنی یک کلاس از چند کلاس دیگر به ارث ببرد). گاهی لازم داریم از چند کلاس به ارث ببریم. راه حلش این است که از اینترفیس ها استفاده کنیم. ولی بدانید که اگر از اینترفیسی به ارث بردید باید تمام متدهای آن را پیاده سازی کنید. یک کلاس می تواند از n تا اینترفیس و تنها یک کلاس به ارث ببرد.


منبع

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ompc
16-02-2011, 22:12
با سلام به دوستان
خیلی ضعیف کار می کنید
واقعا که ترکوندین این تاپیکو با C#
پس کجایین

=========================
استفاده از تابع Split
خیلی کارش باحاله من که کلی باهاش حال کردم
توضیح
مثلا یه رشته دارم توش یه تاریخ
date="1389/11/28"
برای تفکیکشون از این روش استفاده می کنیم
string [] split = date.split( new char {"/"}) Injori bayad bashe fek mikonam
حالا قسمت جالب
string year = split[0] baraye sal
string month = split[1] baraye mah
string day = split[2] baraye rooz
امید وارم خوشتون اومده باشه

ompc
18-02-2011, 00:02
سلام به همه ی دوستان
اینم یه اموزش ( انشاا... ) مفید
تبدیل مبنا در سی شارپ (کار با مبناهای 2،8،10،16 ) اینم اموزش ساده

long a = 999999999;
textBox5.Text = Convert.ToString(a, 16);

البته میتونید به جای عدد 16 عددهای 2،8،10 رو هم بذارین تا تبدیل کنه

---------- Post added 18-02-2011 at 12:02 AM ---------- Previous post was 17-02-2011 at 11:58 PM ----------

ببینم اینجا کسی به ADO.Net علاقه نداره، من عاشقشم اگه خواستین بگین تا بترکونیم:31:

---------- Post added at 12:02 AM ---------- Previous post was at 12:02 AM ----------

ompc
18-02-2011, 16:55
Run کردن یک برنامه(مثلا paint) با کد نویسی

System.Diagnostics.Process.Start("mspaint.exe");

حالا اگه خواستین یه عکس توی این پینته باز بشه به این صورت می شه


System.Diagnostics.Process.Start("mspaint.exe", "c:\\Test.bmp");

Guts
18-02-2011, 17:21
چجوری میشه یه ارایه از نوع int رو از کاربر گرفت؟
منظور با حلقه اس نه اینکه برای هر خونه یه console.realline بذارم!
ممنون
سادست، تعدادی ورودی میگیرد (1 2 3 4 5 6) با دستور Split رشته رو به آرایه ای از رشته تبدیل میکنید و بعد به Int پارسش میکنید.

MosaferJade
19-02-2011, 15:54
سلام
1-می خواستم بدونم چطوری تو C# میشه کدی برای ریست و شات دون و . . . نوشت
2-وهمچنین آیا میشه که تو برنامه کدی بنویسی و مثلا در
ساعت فلان کامپیوتر روشن بشه و یه آهنگ خاصی رو پخش کنه ( مثل یه ساعت که
میزارن رو نگ برای یه زمان خاص)
3-برنامه ها رو چطوری باید کرد که به محض بالا آمدن ویندوز خودش بیاد بالا
4-برنامه رو چجوری باید کرد که وقتی منیمایز شد مثل کامپلیر تو قسمت ساعت (طرف راست فلش روی تسک بار) آیکنش بره
5-حتما تو تسک منیجر تب Processes رو دیدید چطوری برنامه ای بنویسیم که فقط در این قسمت نمایش داده بشه
6-و در همون تب procsses قسمت User Name رو اگه دیده باشید بعضی فایل ها رو از نوع سیستم نوشته
آیا میشه برنامه ای نوشت که قسمت ذکر شده رو بنویسه system
پیشا پیش مرسی

ompc
20-02-2011, 21:17
سلام
1-می خواستم بدونم چطوری تو C# میشه کدی برای ریست و شات دون و . . . نوشت
2-وهمچنین آیا میشه که تو برنامه کدی بنویسی و مثلا در
ساعت فلان کامپیوتر روشن بشه و یه آهنگ خاصی رو پخش کنه ( مثل یه ساعت که
میزارن رو نگ برای یه زمان خاص)
3-برنامه ها رو چطوری باید کرد که به محض بالا آمدن ویندوز خودش بیاد بالا
4-برنامه رو چجوری باید کرد که وقتی منیمایز شد مثل کامپلیر تو قسمت ساعت (طرف راست فلش روی تسک بار) آیکنش بره
5-حتما تو تسک منیجر تب Processes رو دیدید چطوری برنامه ای بنویسیم که فقط در این قسمت نمایش داده بشه
6-و در همون تب procsses قسمت User Name رو اگه دیده باشید بعضی فایل ها رو از نوع سیستم نوشته
آیا میشه برنامه ای نوشت که قسمت ذکر شده رو بنویسه system
پیشا پیش مرسی

سلام
1-
***

2- نه فکر نکنم بشه همچین کاری کرد(اصولا نباید بشه)
****

3-شما می تونی به دو روش عمل کنی
1)با استفاده از رجیستری و مسیر زیر که یه string می سازی و ادرس برنامه رو میدی
HK_CURRENT_USER/Software/Microsoft/Windows/Current Version/Run
2)یه کپی از فایل exe برنامت رو می ذاری تو Startup
از start-->All Program-->Startup
تو اون ادرس کپی می کنی موقع بالا اومدن ویندوز برنامه خودکار اجرا میشه
********

4)از قسمت ToolBox یه شی NotifyIcon اضافه کن خودکار توی اون قسمت نشون داده می شه(**نکته** بسیار**مهم** : اگه به NotifyIcon ایکون خاصی اختصاص ندی توی system Try (همون گوشه کنار ساعت) نشون داده نمی شه) پس حتما یه عکس بهش میدی و بعد با Visible موقعی که فرم کوچیک میشه اول فرم رو Hide() می کنی و بعد Visible اونو true می کنی.


**********

5)اگه درست فهمیده باشم می خوای فرمت نشون داده نشه خوب میتونی توی load فرمت بنویسی this.hide() دیگه فرم رو نشون نمی ده


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

ompc
20-02-2011, 21:23
بستن و دوباره اجرا کردن (Restart) برنامه

Application.Restart();

ompc
20-02-2011, 22:01
کار با پوشه ها و فایها
اول این و اون بالا اضافه کنین

using System.IO;

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

//To create a directory
Directory.CreateDirectory(@"C:\MyNewDir");
//To move a directory
Directory.Move(@"C:\MyNewDir", @"C:\MyMovedDir");
//To delete a directory
Directory.Delete(@"C:\MyMovedDir");


//To Delete a File
File.Delete(@"C:\MyFile.Txt");
//To Move a File
File.Move(@"C:\MyFile.Txt", @"C:\MyOtherDir\MyFile.Txt");
//To Copy a file
File.Copy(@"C:\MyFile.Txt", @"C:\MyOtherDir\MyFile.Txt");

فکر کنم متوجه شدین @ برای چی؟
شما کاراکتر ( / ) رو توی یک رشته به تنهایی نمی تونین استفاده کنین باید بعدش یه حرف خاص بذارین مثل(t,n,b) یا برای نمایش اسلش باید دوتا پشت سر هم بذارین تا یکیش رو نشون بده
با گذاشتن @ قانون بالا رو کنسل می کنین(برای من جالب بود).

ompc
21-02-2011, 13:47
Shutdown و Restart و Logoff کردن کامپیوتر

[DllImport("user32.dll")]
public static extern int ExitWindowsEx(int uFlags, int dwReason);
// Log Off
ExitWindowsEx(0, 0);
// Reboot
ExitWindowsEx(2, 0);
// Shutdown
ExitWindowsEx(1, 0);
// Force LogOff
ExitWindowsEx(4, 0);
// Log Off
System.Diagnostics.Process.Start("ShutDown", "/l");
// Reboot
System.Diagnostics.Process.Start("ShutDown", "/r");
// Shutdown
System.Diagnostics.Process.Start("ShutDown", "/s");
دوستان دقت کنید در این مثال هم با dll گفته شد هم بدون dll اما نکته اینجاست که گفته شده در برنامه های .NET حتی الامکان از Dll ها استفاده نشه.

MosaferJade
21-02-2011, 14:27
با این سوالاتی که پرسیدی می شه یه ویروس کوچولو نوشت
من اگه بلد بودم ویروس بنویسم همه اینا رو میدونستم
فقط میخوام یه برنامه ساعت درست کنم و امکانات خاصی رو براش بسازم البته اگه جوابی برا سوالام باشه
مرسی

shahinshyd
21-02-2011, 21:17
اقا سلام
شما که زحمت کشیدی اگه لطف کنیPDF اموزشتو هم بذار ملت استفاده کنند.

ompc
22-02-2011, 12:14
سلام
چشم PDF رو هم میذارم
صبر کنید یه Acount پرشن گیگ بسازم تا دانلودش Expire نشه

بدرود

ompc
23-02-2011, 22:49
سلام

اینم یه PDF کوچولو با چندتایی اموزش

البته باید ببخشید تو این اموزش فقط ماهی میدم دستتون

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

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ebse
27-02-2011, 15:49
سلام
من تو برنامه ام می خوام از چاپگر استفاده کنم . باید چکار کنم از چه کلاسهایی استفاده کنم
خواهشا یه توضیح کامل یا یه آدرسی رو برام بزارین خیلی واجبه
ممنون

sin2x=2sinxcosx
27-02-2011, 21:02
سلام
من تو برنامه ام می خوام از چاپگر استفاده کنم . باید چکار کنم از چه کلاسهایی استفاده کنم
خواهشا یه توضیح کامل یا یه آدرسی رو برام بزارین خیلی واجبه
ممنون

سلام .
باید از System.Drawing.Printing استفاده کنین . این دو تا لینک رو ببینین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ebse
28-02-2011, 15:36
ممنون از اینکه توجه می کنید
اگه لینک فارسی باشه بهتره
اگه تونستین یه لینک فارسی
بزارین اگه هم نشد مهم نیست
ممنون

ompc
01-03-2011, 23:30
سلام
به یه مشکل برخوردم اساسی
دوتا فرم داریم f1 و f2
توی f2 یه textbox داریم و توی f1 یه دکمه
چه طوری میشه با زدن دکمه محتویات textbox تو f2 رو نمایش داد
در ضمن هر دوتا فرم هم load هستند[COLOR="Silver"]

MosaferJade
02-03-2011, 01:07
سلام

به یه مشکل برخوردم اساسی
دوتا فرم داریم f1 و f2
توی f2 یه textbox داریم و توی f1 یه دکمه
چه طوری میشه با زدن دکمه محتویات textbox تو f2 رو نمایش داد
در ضمن هر دوتا فرم هم load هستند
اول اینکه باید TextBox.Modifiers را به Public تغییر دهید
حالا در فرمی که می خواهید مقدار TextBox را بدست آورید این کد را بنویسید

f1 نام فرمی که TextBox در آن قرار گرفته

f1 a=New f1();[COLOR=White]0
...=a.TextBox.Text;0

به جای سه نقطه متغیری که مقدارTextBox باید در آن قرار گیرد را قرار دهید

موفق باشید

ompc
02-03-2011, 19:53
سلام

اول اینکه باید TextBox.Modifiers را به Public تغییر دهید
حالا در فرمی که می خواهید مقدار TextBox را بدست آورید این کد را بنویسید

f1 نام فرمی که TextBox در آن قرار گرفته

f1 a=New f1();0
...=a.TextBox.Text;0

به جای سه نقطه متغیری که مقدارTextBox باید در آن قرار گیرد را قرار دهید

موفق باشید




سلام
اینجوری میشه مقدارش و نشون داد ولی نمیشه مقدارش و تغییر داد
حالا فرض کن می خوایم یه قسمتیش و های لایت کنیم اونوقت چی؟
تشکر

MosaferJade
02-03-2011, 21:23
فکر کنم اگه مقدارش رو تو یه فایل
XML سیو کنی که در دسترس باشه
بد نیست هرجاهم خواستی مقدار
فایل رو چنج کن
موفق باشی

MosaferJade
03-03-2011, 15:46
حالا من یه سوال دارم
اگه بخوایم تو یه فرم وقتی فرم ریسایز میشه کنترل های
روی فرم هم به همون درصد تغییر کنه
اینکه تو چه رویدادی بنویسم رو می دونم (form_resize) البته اگه لازم به کد نویسی باشه
مرسی

ompc
03-03-2011, 16:53
حالا من یه سوال دارم
اگه بخوایم تو یه فرم وقتی فرم ریسایز میشه کنترل های
روی فرم هم به همون درصد تغییر کنه
اینکه تو چه رویدادی بنویسم رو می دونم (form_resize) البته اگه لازم به کد نویسی باشه
مرسی

سلام
نیازی به کد نویسی نیست
object رو انتخاب کن و از مشخصاتش گزینه Anchor رو انتخاب کن
بعدش هر 4 تا مورد Top, Bottom, Left, Right رو علامت گذاری کن مشکلت حل میشه
***************
*************
***********
*********
******
برای اون text ها هم میشه از یه کلاس و set و get استفاده کرد ولی فکر نکنم بشه به همین راحتی یه قسمتی از متنش رو select کرد

مثل Find برنامه NotePad

MosaferJade
05-03-2011, 00:05
راستی
اون بالا اگه textbox رو static تعریف می کردیم نمی شد

public static TextBox TextBox1;0

امتحان نکردم ولی بنظر شما نمیشه؟

MosaferJade
05-03-2011, 12:26
کجایی ؟
نیستی
آموزش تعطیل؟
راستی می خواستم بگم حدثی که بالا زدم درسته
اگه بری تو فایل form.designer.cs و جایی که text box اینطوری تعریف شده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدبیای یه static اینجوری بهش اضافه کنی

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید همه چی درست میشه
راستی ببخشید من یه کم دقیق توضیح میدم منظورم اصلا این نیست که اطلاعات شما(ompc) کمه
نه اصلا ایجوری نیست شما استاد من هستید خیلی چیزا هست که باید از شما یاد بگیرم خیلی چیزا هم
هست( مثل همین سوالی که شما پرسیدین) که با هم فکری میتونیم بهش برسیم
فقط اینکه من کلا دوس دارم دقیق توضیح بدم و هم اینکه دوستان مبتدی که زیاد هستن
و انجور تایپیک بیشتر بدردشون می خوره بدونن باید چکار کنن
میرم ولی با سوال بر میگردم

به هر حال ازتون معذرت می خوام ... ببخشید
موفق باشید

ompc
05-03-2011, 18:00
سلام
ای بابا این چه حرفیه (شرمندمون می کنی)
این که دقیق و کامل توضیح میدی نشونه ی اینه که دوست داری کمک کنی
خیلی ها هستند وقتی سوالی ازش می پرسی ... روم به دیوار
کلا اینجوری توضیح دادن خیلی مفید تره
راستی :
1)دیگه حرفی از استادی نباشه
2) امیدوارم این هم فکری بین تمام اعضای سایت باشه

شما(MahbubeSdaghat) بهADO.NET علاقه نداری؟
اصلا کار می کنین؟

ebse
05-03-2011, 18:20
سلام خسته نباشید
اگه میشه یه خورده درباره اینکه چطور میشه به sql در C# متصل شدو اطلاعات رد وبدل کرد توضیح بدید؟
قضیه این پرس و جو هاچیه ؟خانم صداقت شما واقعا خوب توضیح میدید
خواهشا با صبر ایوب بشینید یه توضیح کامل بدید تا آخر هفته لازمش دارم
ممنون

ompc
06-03-2011, 23:04
سلام
یه ساعت با سورس کد اینجا گذاشتم امیدوارم بتونه کمک کنه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ompc
06-03-2011, 23:15
یه اموزش توپ دیگه(البته بازم به نظر خودم)
یه فرم داریم روش یه Group Box گذاشتیم
توی Group Box 40 الی 50 تا Text Box داریم با یه دکمه
می خوایم تست کنیم اگه همه ی Text Box ها مقدار داشتن به ادامه برنامه بره در غیر این صورت اون Text Boxی که مقدار نداره رو تغییر رنگ بده و Focus کنه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای تغییر رنگ دوباره Text Box ها به حالت اوgیه توی یه For دیگه back color رو این جوری به حالت اول برگردونین.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید[COLOR="Silver"]

MosaferJade
07-03-2011, 12:57
شما(MahbubeSdaghat) بهADO.NET علاقه نداری؟
نه اصلا نمیدونم چیه؟

اصلا کار می کنین؟
اگه منظورتون ADO.NET هست که بالا جواب دادم و اگه منظورتون
کلا برنامه نویسی هست که فقط برا خودم (فعلا)

سلام خسته نباشید
اگه میشه یه خورده درباره اینکه چطور میشه به sql در C# متصل شدو اطلاعات رد وبدل کرد توضیح بدید؟
قضیه این پرس و جو هاچیه ؟خانم صداقت شما واقعا خوب توضیح میدید
خواهشا با صبر ایوب بشینید یه توضیح کامل بدید تا آخر هفته لازمش دارم
ممنون
من درباره sql اطلاعات ندارم منم مثل خودتون یه تازه واردم
با این حال هر سوالی که بتونم و بدونم جواب میدم

ompc
07-03-2011, 18:45
سلام
فكر كنم SQL رو خودم بايد توضيح بدم(ADO.NET)
دوست عزيز اگه عجله نداري صبر كن تا يه فايل پي دي اف درست كنم و برسونم بهت

بدرود

ompc
07-03-2011, 19:13
سلام
خانم صداقت اون سوال(دو تا فرم و دو تا تكست باكس) رو براي اين برنامه مي خواستم

يه نوت پد ساده كه بشه باهاش از يك فرم، قسمتي از متن تكست باكس فرم ديگه رو انتخاب كرد(HighLight)



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MosaferJade
08-03-2011, 00:40
[QUOTE] سلام
خانم صداقت اون سوال(دو تا فرم و دو تا تكست باكس) رو براي اين برنامه مي خواستم

يه نوت پد ساده كه بشه باهاش از يك فرم، قسمتي از متن تكست باكس فرم ديگه رو انتخاب كرد(HighLight)

نقل قول:
کد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


/QUOTE]
سوالتونو دقیق نفهمیدم چی گفتید

ompc
08-03-2011, 18:16
سلام
منظورم اینه که یه فرم جدید باز بشه یه کلمه رو بگیره بعد اون کلمه رو توی جعبه متن اصلی Search کنه و اگه وجود داشت اونو HighLight کنه (خوشبختانه مشکل حل شد)

اینم اموزش SQL و C#



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Puneh.A
08-03-2011, 19:49
سلام
حجم این آموزش چقدره؟:11:

ebse
09-03-2011, 15:00
1.3 مگابایت

ompc
14-03-2011, 14:35
سلام
ساده ترین روش برای اینکه :
اگر کاربر رنگ یا font قسمتی از برنامه ما رو تغییر داد(دکمه ها ، textBoxها ، یا حتی رنگ پس زمینه فرم)
برای اجرای دوباره برنامه از تنظیمات کاربر(تغییر رنگ و font و ،) استفاده کنیم چیه ؟

مثلا کاربر رنگ پس زمینه رو مشکی انتخاب کرد برنامه رو بست و دوباره موقع اجرا رنگ پس زمینه رو سیاه ببینه؟

MosaferJade
16-03-2011, 03:40
اگه یه متغیر از نوع static درست کنیم و بوسیله شرط هایی بهش ربط بدیم
البته دقیقا نمیدونم بشه یا نه
میشه یه دیتا بیس براش ساخت و از اونجا ستش کرد

ompc
16-03-2011, 12:22
سلام
یه راه ساده تر

اینجوریا نمیشه
شاید برای رشته کاربرد داشته باشه و لی برای متغیر هایی از نوع رنگ و فونت کاربرد نداره

یه راهنمایی

FrameWork

MosaferJade
16-03-2011, 19:35
می خوای چی بگی ؟
فکر کنم تا حالا باید فهمیده باشی که من تقریبا از C# هیچی نمیدونم
ولی بازم فکر می کنم با دیتا بیس بشه این کا رو کرد
ببینم نکنه...
یه بار برای بار اول آفیس 2007 رو نصب کردم تو ورد نمیدونم چه تغییراتی دادم
که کلا شکلش تغییر کرد بستم دوباره بازش کردم فایده نداشت رفتم آنستال کردم
و دوباره نصبش کردم بازم دیدم فرقی نکرد بعدش با کلی ور رفتن باهاش فهمیدم
( دقیقا یادم نیست) یه چیزی را فعال یا غیر فعال کرده بودم

نکنه منظور شما این باشه؟
اگه این باشه که اصلا از من نپرس

ompc
20-03-2011, 22:04
سلام
اون مربوط به رجیتری میشه که اگه نمی دونین مال کجاست باید ویندوز رو عوض کنین تا خوب بشه

این روش من استفاده از یک ویژگی هست که به دات نت 2 به بعد اضافه شد و باعث میشه شما هر متغیری از هرنوعی که خواستین رو به راحتی ذخیره و فراخوانی کنین

ان شاالله پی دی افش رو می ذارم همین جا

راستی پیشاپیش عیدتون مبارک

---------- Post added at 10:04 PM ---------- Previous post was at 10:04 PM ----------

سلام
اون مربوط به رجیتری میشه که اگه نمی دونین مال کجاست باید ویندوز رو عوض کنین تا خوب بشه

این روش من استفاده از یک ویژگی هست که به دات نت 2 به بعد اضافه شد و باعث میشه شما هر متغیری از هرنوعی که خواستین رو به راحتی ذخیره و فراخوانی کنین

ان شاالله پی دی افش رو می ذارم همین جا

راستی پیشاپیش عیدتون مبارک

haghshenasmahdi
30-03-2011, 10:21
سلام دوستان گل
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
می خواستم بدونم چطور ميشه يه متن رو تو cmd تايپ کرد من با اين روش امتحان کردم ولی موفق نشدم ؟ C#
System.Diagnostics.Process.Start("cmd.exe", "cd C:\\Program Files");
همچنين می خواستم بدونم چطور ميشه مسير يه کليد رو از تو ريجيستری بخونی ؟
يک دنيا ممنون

ompc
31-03-2011, 17:41
سلام
سوال اولیتو نمی دونم،
دومیتم نمی دونم
چرا دومی رو میدونم با مثال پیش می رم
وقتی شما Internet Download Manager رو نصب می کنین به طور خودکار در هنگام اجرای ویندوز، اجرا میشه چون در رجستری در ادرس :
Hkey_Current_User\Software\Microsoft\Windows\Curre ntVersion\Run
یک کلید با نام : IDMan ساخته شده است حالا می خواهیم مقدارش که همان ادرس فایل اجرایی IDM است را به دست بیاوریم.
اول رفرنس مربوطه

using Microsoft.Win32;
حالا کد ها و توضیحات


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با کدهای بالا مشخص می کنیم که با زیر شاخه CurrentUser سرو کار داریم
با متغیر subkey بقیه مسیر رو بهش میشناسونیم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدخط اول که اشاره به ادرس انتخابی ما در رجیستری داره و توی خط دوم مقدار کلیدی رو که می خوایم با توجه به اسمش توی یه متغیر از نوع object قرار میدیم و بعد تبدیل به رشته و ریختن توی label1
مشاهده می کنید که ادرس فایل اجرایی برنامه IDMan رو نشون داد.
دوست عزیز اگه شما دنبال ادرس توی رجیستری می گردید من بلد نیستم
تشکر

MosaferJade
01-04-2011, 00:56
سلام
سال نو مبارک
فکر کنم به خیلی از سوالاتی داریم بشه در اینجا به جواب رسید یه نگاه بندازید شاید بد نباشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ompc
02-04-2011, 19:39
سلام
سال نو مبارک
فکر کنم به خیلی از سوالاتی داریم بشه در اینجا به جواب رسید یه نگاه بندازید شاید بد نباشه

سلام

اون سایت مرجع برنامه نویسانه
پیشنهاد میکنم اگه می خواین در حد حرفه ای یاد بگیرین یا حرفه ای هستین حتما عضو شین.

MosaferJade
04-04-2011, 02:44
خوب چه خبر
دیگه مثل اینکه آموزشها تموم شد .آره ؟
راستی یه سوال ...
اصلا به این تایپیک ربط نداره بهتره تو pm بپرسم

MosaferJade
06-04-2011, 07:14
بازم سلام
تو تایپیک قبلی هم گفتم
دقیقتر توضیح بدید . شاید یه مثال بد نباشه

soaleman
07-04-2011, 00:05
سلام
من يک فرم دارم و يک کلاس هم کنارش نوشتم و هر متد از کلاس با بیشتر اشیاء روی فرم من سرو کار داره و مجبورم هر بار که متد را صدا میزنم کلیه اشیاء روی فرم رو نیز پاس بدم حالا ميخوام ببینم چطوری میشه فقط يک بار موقع تعريف کلاس اشیاء روی فرم پاس داده بشه و مجبور نشم هر موقع که متدي رو صدا می زنم کلیه اشياء رو هم به متد پاس بدم
اگه بازهم نامفهوم بود یک تکه برنامه آماده می کنم و میزارم
مرسی

MosaferJade
07-04-2011, 00:19
بیا روی این تایپیک

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ompc
08-04-2011, 11:45
سلام
اگه اشتباه نکرده باشم دوستمون می خواد فقط متد رو صدا بزنه(بدون پارامتر)
توی کلاست با دستورات set و get متغیرات و اماده دریافت اطلاعات کن
توی فرمت یه تابع مثلا به نام send_save ایجاد کن و متغیر ها و خاصیت هایی که هردفه مجبور به مقدار دهی بودی رو یه بار مقدار دهی کن و هربار خواستی متد save رو صدا بزنی قبلش متد save_send رو صدا بزن

می دونم با این توضیحه شیوا و فن بیان من هیچی نفهمیدی(تعجبم نداره!!! خودمم نفهمیدم)
نمونه کد رو برات گذاشتم امیدوارم مورد استفاده قرار بگیره

حجم 45 کیلوبایت

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

MosaferJade
08-04-2011, 12:09
باور کن اون بالا نفهمیدم چی گفتی ولی بازم باور کن که این لینک خیلی بهتر از شما مطالب رو بیان میکنه :31:
فکر کنم دوستمون به جواب برسن

soaleman
15-04-2011, 21:06
سلام خدمت دوستان عزیز
از همه دوستانی که مارو کمک میکنند و یا در کنار ما هستند ممنون و متشکرم
این بار خدمت شما دوستان عزیز رسیدم با یک سوال دیگه و سوال اینه که:
زمانی که یک فرم طراحی می شه و اجرا میکنیم همه چیز مرتبه و وقتی برنامه به یک سیستم دیگه که منتقل میشه و تنظیمات کارت گرافیکش فرق میکنه مخصوصا وقتی که مانیتور LCD اونم Width باشه اون وقته که جای تمام اشیاء روی فرم بد ترکیب میشه و بخش زیادی از فرم خالی میمونه و نمی دونم چطور میشه در این جابجائی اشیا روی فرم متناسب در روی فرم قرار بگیرند

لطفاً اگه راهی بلدید کمکم کنید
ممنون از همه شما

ompc
15-04-2011, 22:21
سلام خدمت دوستان عزیز
زمانی که یک فرم طراحی می شه و اجرا میکنیم همه چیز مرتبه و وقتی برنامه به یک سیستم دیگه که منتقل میشه و تنظیمات کارت گرافیکش فرق میکنه مخصوصا وقتی که مانیتور LCD اونم Width باشه اون وقته که جای تمام اشیاء روی فرم بد ترکیب میشه و بخش زیادی از فرم خالی میمونه و نمی دونم چطور میشه در این جابجائی اشیا روی فرم متناسب در روی فرم قرار بگیرند

لطفاً اگه راهی بلدید کمکم کنید
ممنون از همه شما

سلام

خاصیت Anchor کنترل هاتو به مقدار Top,Botton,Left,Right تغییر بده
کنترلت رو انتخاب کن(مثلا دکمه)
بعد توی پروپرتیسش خاصیت Anchor رو کلیک کن و توی صفحه ای که ظاهر میشه همه ی موارد رو فعال کن
منظورم همون (Top,Botton,Left,Right) است.

بدرود

soaleman
16-04-2011, 01:59
سلام

خاصیت Anchor کنترل هاتو به مقدار Top,Botton,Left,Right تغییر بده
کنترلت رو انتخاب کن(مثلا دکمه)
بعد توی پروپرتیسش خاصیت Anchor رو کلیک کن و توی صفحه ای که ظاهر میشه همه ی موارد رو فعال کن
منظورم همون (Top,Botton,Left,Right) است.

بدرود

سلام
از پاسخ شما ممنونم
اما با عرض پوزش میخواستم بگم این روش زیاد جالب جواب نمیده مخصوصا در تنظیم بین اشیاء روی فرم یا از بالا زیاد فاصله میندازه یا از پائین و ... !
من یک نمونه فرم دارم که براتون میزارم ببینید و اگه زحمتی نیست بعد از تنظیم که خوب جواب داد دوباره بگذارید ما هم استفاده کنیم.
[/URL ([URL][ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])]
اگه میشه بگید مثلا من دیتا گرید شماره 1 رو چطور میتونم در بزرگ شده فرم به تناسب بزرگترش کنم و یا برعکس و....
ممنون

8633063
17-04-2011, 15:21
خيلي خوب بود.:27:

ompc
17-04-2011, 23:08
سلام
از پاسخ شما ممنونم
اما با عرض پوزش میخواستم بگم این روش زیاد جالب جواب نمیده مخصوصا در تنظیم بین اشیاء روی فرم یا از بالا زیاد فاصله میندازه یا از پائین و ... !
من یک نمونه فرم دارم که براتون میزارم ببینید و اگه زحمتی نیست بعد از تنظیم که خوب جواب داد دوباره بگذارید ما هم استفاده کنیم.
[/URL ([URL][ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])]
اگه میشه بگید مثلا من دیتا گرید شماره 1 رو چطور میتونم در بزرگ شده فرم به تناسب بزرگترش کنم و یا برعکس و....
ممنون


سلام دوست عزیز
پاسخ شما : نمی دونم!!!!!

چرا اشیا روی فرم پرواز می کردند
من 10 تا پروژه ی دیگه توی ویندوزم باز کردم با تنظیمات مشابه ولی مثل برنامه شما نبود

نمی دونم چرا؟

انشاالله دوستان دیگه بتونن کمکتون بکنن

بدرود

salarbahari
18-04-2011, 09:01
خیلی فوری یه برنامه میخوام که توش از timer و progressbar استفاده شده باشه و بتونه یه فیلم رو اجرا کنه
پیشاپیش از همکاریتون ممنونم
یا علی

soaleman
18-04-2011, 22:47
سلام دوست عزیز
پاسخ شما : نمی دونم!!!!!

چرا اشیا روی فرم پرواز می کردند
من 10 تا پروژه ی دیگه توی ویندوزم باز کردم با تنظیمات مشابه ولی مثل برنامه شما نبود

نمی دونم چرا؟

انشاالله دوستان دیگه بتونن کمکتون بکنن

بدرود

سلام دوست گرامی
از بابت توجهی که داشتید ممنونم

اما اگه امکان داره بی زحمت یکی از اون فرمهائی رو که میگید طراحی کردید مشابه اونو بزارید شاید بشه از تنظیماتش استفاده کرد و به نتیجه ای رسید.

ممنون
یا حق

Mr Mohabat
19-04-2011, 14:35
سلام
یه سوال : فایلهای کامپیوتری دو نوع اند متنی و باینری
سوال من اینه که چطور میشه فهمید یک فایل متنی می باشد یا باینری ؟
چگونه می توان یک فایل متنی ( باینری ) را ساخت ؟
چگونه می توان یک فایل متنی ( باینری ) را باز کرد ؟
خواهشا اگه میشه در مورد متنی جدا و در مورد باینری جدا توضیح داده شود ( در C# )
مرسی

ehsan_wwe
19-04-2011, 15:12
سلام
یه سوال : فایلهای کامپیوتری دو نوع اند متنی و باینری
سوال من اینه که چطور میشه فهمید یک فایل متنی می باشد یا باینری ؟
چگونه می توان یک فایل متنی ( باینری ) را ساخت ؟
چگونه می توان یک فایل متنی ( باینری ) را باز کرد ؟
خواهشا اگه میشه در مورد متنی جدا و در مورد باینری جدا توضیح داده شود ( در C# )
مرسی

ايي كه گفتي يعني چه ؟ :18:

فايل ها بي نهايت مدل دارن از هگزا دسيمال بگير تا .....
در نهايت همشون دي كد ميشن به باينري

متني كه ميگي بايد ديد ساختارش چيه چه نوع متنيييه ؟‌ روش كد گذاريش چيه
اصلا اين فايل رو چه برنامه اي به وجود اورده چه برنامه اي قراره بخونتش

براي مثال DLL هاي ويندوز مال C هستند وقتي بازشون ميكني كد ميبيني چون ديكدوشون كردي


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Mr Mohabat
19-04-2011, 15:31
استاد فکر کنم اشتباه شده
چون همه فایلها (exe,rar,html,htm,bin,dll,zip,doc,docx,ppt.tmp,gif .ipg.mp3,wmv,pdf,ico,txt,css,ini,cnc,inf,js,map,xm l,rtf,jar, ... ) به دو دسته تقسیم می شوند یا متنی یا باینری

ompc
19-04-2011, 21:07
سلام دوست گرامی
از بابت توجهی که داشتید ممنونم

اما اگه امکان داره بی زحمت یکی از اون فرمهائی رو که میگید طراحی کردید مشابه اونو بزارید شاید بشه از تنظیماتش استفاده کرد و به نتیجه ای رسید.

ممنون
یا حق


منظورم اینه که مثل کنترل های فرم شما هنگام تغییر اندازه فرم پرواز نمی کردند. ولی بازم اون فضای خالی ایجاد میشه
امکانش هست مد فرمت رو از sizable برداری؟

ehsan_wwe
19-04-2011, 22:31
دوست عزيز
فايلايي كه مثال زدي همه كد شده هستند از نوع استرينگ

فايل هاي رجيستر بعضي هاشون باينري هستند مثل maple خيلي هاشونم هگزا دسيمال مثل smoothmouseYcorve

Mr Mohabat
20-04-2011, 02:11
در اینکه فایل ها در کل به دو دسته متنی و باینری تقسیم میشن که شکی ندارم
ولی اجازه بدید تا دوستان دیگه هم بیان هم سوال منو جواب بدن و هم در این باره اطلاعاتشون رو بگن
مرسی

mohamad skystar
20-04-2011, 19:36
سلام
دوستان من میخوام برنامه یه ماشین حساب رو با C# بنویسم.کسی میتونه کمکم کنه و کدها رو بهم بده؟

Mr Mohabat
20-04-2011, 20:58
سلام
با سی شارپ فکر نکنم زیاد سخت باشه
شما فرمتون رو طراحی کنید بقیه کار ها رو از جمله رادیکال و سینوس و کسینوس . ... را می تونید از توابعی که در

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وجود دارد استفاده کنید . اگه سوال خواصی بود در خدمتم

mohamad skystar
20-04-2011, 22:46
سلام
با سی شارپ فکر نکنم زیاد سخت باشه
شما فرمتون رو طراحی کنید بقیه کار ها رو از جمله رادیکال و سینوس و کسینوس . ... را می تونید از توابعی که در

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وجود دارد استفاده کنید . اگه سوال خواصی بود در خدمتم


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

Mr Mohabat
21-04-2011, 08:34
الان دانشگام و نميتونم اگه مشكلي نداره فردا براتون مي نويسم
فقط بگيد چجوري باشه ( منظورم اينكه چه عملياتي رو انجام بده مثلا جمع ، ضرب ، تقسيم ، تقسيم صحيح ، راديكال ، سينوس و ...
تا فردا ساعت 2 بعد از ظهر هم آماده است

mohamad skystar
21-04-2011, 20:10
آقا ممنون دمتون گرم.
همین یه ماشین حساب معمولی که این 4 عملگر ضرب جمع تقسیم و منها رو انجام بده
SIN COS TAN اینا رو نمیخواد ممنون.
بسیار لطف کردین.

soaleman
22-04-2011, 06:38
منظورم اینه که مثل کنترل های فرم شما هنگام تغییر اندازه فرم پرواز نمی کردند. ولی بازم اون فضای خالی ایجاد میشه
امکانش هست مد فرمت رو از sizable برداری؟

سلام دوست من

نه نمیشه بردارم
اگه برمی داشتم که مشکلی نداشتم

حالا از دوستان کسی واقعاً نمیتونه کمکم کنه؟
اگه میشد یک تکه برنامه رو داشته باشید که در اختیار یزارید ما هم استفاده کنیم ممنون می شم
بدرود

ehsan_wwe
23-04-2011, 21:21
خيلي دوست دارم ثابت بشه بهم كه فايل ها دو دسته هستن‌

(‌اخه من A+ خوندم مي دوني كه بچه هاي A+ خوراكشون اينه كه از استادا يا كتاباي ايراني ايراد بگيرن)‌
من ثابت كردم كه فايل ها دسته بندي هاي مخطلف دارن

ممنون ميشم اگه برام اين ابهام رو بر طرف كني

Mr Mohabat
25-04-2011, 10:36
شایدم شما راست بگین
ولی تو پاسکال و C++ به ما می گفتم که فایلها در کل به دو دسته فایل های متنی و فایل های باینری تقسیم بندی می شن
حالا فقط می تونم بگم فیل ها بیش از یه دسته اند:31:

Renoir
04-05-2011, 19:56
سلام یه سوال داشتم با سی شارپ میشه همچین برنامه ای نوشت؟
که یک سری متغیر به برنامه بدهیم ولی فرمول را در متن برنامه وارد نکنیم و مثل متغیر ها هر بار بتوانیم یک فرمولهای مختلف به برنامه بدهیم؟
مثلا مقدار a , b , c را بدهیم و یک بار بخوایم a+b+c و یک بار هم با a*b+2c یا با هر فرمول دیگری که بخواهیم حساب کند!

jabbare
04-05-2011, 20:07
سلام می خواستم در رابطه با برنامه نویسی 3 لایه ای یا برنامه نویسی لایه به لا یه کمک بگیرم خواهش می کنم کمکم کنید

ompc
05-05-2011, 00:00
سلام یه سوال داشتم با سی شارپ میشه همچین برنامه ای نوشت؟
که یک سری متغیر به برنامه بدهیم ولی فرمول را در متن برنامه وارد نکنیم و مثل متغیر ها هر بار بتوانیم یک فرمولهای مختلف به برنامه بدهیم؟
مثلا مقدار a , b , c را بدهیم و یک بار بخوایم a+b+c و یک بار هم با a*b+2c یا با هر فرمول دیگری که بخواهیم حساب کند!

سلام

چرا نشه؟
فقط باید یکم کد زیاد بزنی؟

اگه تونستم یه نمونه برات می ذارم

---------- Post added 05-05-2011 at 12:00 AM ---------- Previous post was 04-05-2011 at 11:58 PM ----------


سلام می خواستم در رابطه با برنامه نویسی 3 لایه ای یا برنامه نویسی لایه به لا یه کمک بگیرم خواهش می کنم کمکم کنید

سلام
یه سر به سایت irpdf.ir بزن

یه سرچی بکن پیداش می کنی
دم دسته

من 2 تا pdf از اونجا دانلود کردم یکی با حجم 300 کیلو و یکی با حجم 2.5 مگابایت

اونجا کامل توضیح داده.

Renoir
06-05-2011, 22:13
سلام
چرا نشه؟
فقط باید یکم کد زیاد بزنی؟
اگه تونستم یه نمونه برات می ذارم

سلام دوباره
لطفا یه نمونه برام بزار چون من هر کاری میکنم قبول نمیکنه

hexman
09-06-2011, 19:49
سلام دوستان
من يه برنامه ساده با سي شارپ ميخوام بنويسم كه بوسيله اون سرويس هاي ويندوز ايكس پي رو استارت يا استاپ كنم..چه بايد بكنم؟