تا این قسمت از مقالات با دستورات و خصوصیات بسیاری از سیشارپ آشنا شدهاید که به کمک آنها میتوانید کارهای زیادی انجام دهید. مطالبی که تا اینجا ارائه شدهاند همهگی از اهمیت بسیار بالایی برخوردار هستند و امید است که خوانندگان عزیز بدون مشکل تا اینجا پیش آمده باشند. همانطور که پیش از نیز ذکر شد، لطفاً در صورت نامفهوم بودن هر مطلب و هر تمرین، حتماً مشکل خود را مطرح کنید تا در اسرع وقت به شما پاسخ داده شود. سوالات، نظرات و پیشنهادات شما موجب بالا رفتن کیفیت مطالب و همچنین درک بهتر مطلب، هم برای شما و هم دیگر خوانندگان میشود.
بسیاری از دوستان و خوانندگان از اینکه مطالب و آموزشها در محیط کنسول ارائه میشود ابراز نگرانی میکنند و خواهان ارائه مطالب در محیطی مدرنتر و کاربردیتر هستند. البته یک خوانندهی آگاه حق اظهار چنین نظر و درخواستی را دارد. او نمیخواهد وقت خود را در این دنیای سرشار از اطلاعاتی که روز به روز در حال تغییر و گسترش است، هدر دهد. یک خوانندهی باهوش چیزی را میخواند که واقعاً برایش مفید باشد و وقت ارزشمند او را نگیرد. لازم به ذکر است که نباید هیچ نگرانی به دل خود راه دهید چراکه شما در حال یادگیری اصل زبان سیشارپ هستید و پس از گذارندن این سطح میتوانید بهراحتی در محیطهای دلخواه خود فعالیت کنید و از اینکه میتوانید در محیطی مثل موبایل یا ویندوز اپلیکیشن و… برنامه بنویسید لذت ببرید.
شیرینترین لحظهی برنامهنویسی برای شما آن زمانی است که درحال آشنایی با محیط کاربردی و جدیدی مثل برنامهنویسی برای ویندوز ۸ یا اندروید هستید و میبینید که دیگر درک بسیار زیادی از دستورات دارید و از اینکه با این زبان مشکلی ندارید (و تا حد قابل قبولی با این زبان آشنایی دارید) احساس خرسندی و رضایت میکنید. همانطور که میدانید با ارائهی ویندوز جدید مایکروسافت، رابط کاربری مترو محبوبیت زیادی پیدا کرده و با وجود نوظهور بودن آن، حجم بسیار زیادی از برنامهها برای این رابط کاربری (که بسیار جذاب و دوستداشتنی است) روزانه در حال ارائه شدن هستند.
همچنین ابزارهای خیلی کاربردی و بسیار زیادی برای کمک به توسعه برنامههای این رابط کاربری ارائه شدهاند که به کمک آنها میتوانید کارهای خیلی جالبی انجام دهید و برنامههای پربارتری بنویسید. مسلماً تا چند سال آینده در ایران، ویندوز ۸ (که هم روی دستگاههای لمسی و هم پیسی ارائه میشود) محبوبیت زیادی پیدا میکند و میتوانید در کنار ارائه برنامههای ویندور فرم، ساخت اپلیکیشنهای مترو را نیز تجربه کنید.
همینطور میتوانید در محیط وب و موبایل، بازیهای رایانهای و بازیهای موبایل، Xbox و Kinect مایکروسافت و یا در شاخهی برنامهنویسی هوش مصنوعی با زبان سیشارپ و… فعالیت داشته باشید.
کافی است که برای یادگیری کاری که میخواهید انجام دهید پشتکار لازم را داشته باشید و به این راحتیها دست برندارید تا بتوانید بهزودی در محیطهای دلخواه خود با سیشارپ برنامهنویسی کنید. خوشبختانه آنقدر حجم اطلاعات ارائه شده در مورد سیشارپ و فعالیتهای مرتبط به آن زیاد هستند که اگر پا به دنیای بزرگ آن بگذارید برای انجام هرکاری، به سرعت مطلب و راه حل مورد نیاز را پیدا میکنید. تصور کنید که در سایت stackoverflow پرسش خود را مطرح میکنید و در کمتر از ۱۵ دقیقه حدود ۱۰ پاسخ و راهنمایی متنوع دریافت میکنید که همهی پاسخها به نحوی برای شما مفید هستند. این میتواند برای کار و تجربهی شما بسیار سودمند باشد. در واقع شما در این مسیر هیچگاه تنها نیستید، بلکه یاران بسیار زیادی هستند که به شما کمک میکنند تا در این راه موفق و موفقتر شوید.
در این قسمت قصد نداریم مطلب جدیدی ارائه دهیم بلکه به تمرین مباحث مطرح شده میپردازیم. اکنون دیگر با متد و کلاس آشنایی دارید و میتوانید برنامههایی که مینویسید را تا حدودی شیگرا کنید. متد را مثل یک دستگاه مکانیکی فرض کنید که یک کار خاص را برای شما انجام میدهد. گاهی این دستگاه ورودی میگیرد، گاهی نمیگیرد. گاهی چیزی را به شما برمیگرداند و گاه چیزی برنمیگرداند. بهعنوان مثال، متدی مینویسیم که دو عدد را در هم ضرب میکند و حاصل را بر میگرداند (به همانجایی که متد صدا زده شده است):
using System; class Example { static void Main() { int result; result = Multipliction(5, 5); Console.WriteLine(result); } static int Multiplication(int a, int b) { int res; res = a * b; return res; // Or // return a * b; } }
در این برنامه در کلاس Example دو متد قرار دارد. متد ()Main که نقطهی شروع برنامه است و متد ()Multiplication که هر دوی این متدها بهصورت static تعریف شدهاند. اگر بهیاد داشته باشید ذکر شد که یک متد static فقط میتواند (بهصورت مستقیم) به اعضای static دسترسی داشته باشد و همچنین دانستید که یک عضو static وابسته به هیچ شیءای نیست. متد ()Main که حتماً باید static باشد، بنابراین برای اینکه بتوانیم درون متد ()Main مستقیماً به متد ()Multiplication دسترسی داشته باشیم باید این متد را نیز بهصورت static تعریف کنیم. درون متد ()Main، متد ()Multiplication را صدا زدهایم و دو مقدار را به آن دادهایم. این دو مقدار در هم ضرب میشوند و نتیجهی آن return شده و در متغیر result ذخیره میشود.
در مثال بعد قصد داریم یک Amplifier را شبیهسازی کنیم. این Amplifier یک سری اطلاعات مثل نام، مدل، وات و… دارد.
class Amplifier { private string Name; private string Model; private int Watt; private int Multichannel; private int EffectivePower; private bool ThreeDSurroundSound; private int CurrentVolume; private int MaxVolume; public Amplifier(string name, string model, int watt, int multichannel, bool threeDSurroundSound, int maxVolume) { Name = name; Model = model; Multichannel = multichannel; Watt = watt; ThreeDSurroundSound = threeDSurroundSound; EffectivePower = watt * multichannel; CurrentVolume = 0; MaxVolume = maxVolume; } }
در ابتدا برای این کلاس یک constructor تعریف کردهایم تا فیلدهای آن حتماً در لحظهی ساخت شیء، مقداردهی شوند. در مرحلهی بعد قصد داریم یک شیء از این کلاس بسازیم و چند متد به کلاس نیز اضافه کنیم:
using System; class AmpDemo { static void Main() { Amplifier Kenwood = new Amplifier("KENWOOD", "RA-5000", 120, 5, true, 50); Console.WriteLine("Amplifier simulation "); Console.WriteLine(" Name and Model: " + Kenwood.GetNameAndModel()); Console.WriteLine(" Effictive Power: " + Kenwood.GetEffectivePower()); Console.WriteLine(" Multichannel: " + Kenwood.GetMultichannel()); Console.WriteLine(" 3D Surround Sound: " + Kenwood.GetThreeDSurroundSound()); } } class Amplifier { private string Name; private string Model; private int Watt; private int Multichannel; private int EffectivePower; private bool ThreeDSurroundSound; private int CurrentVolume; private int MaxVolume; public Amplifier(string name, string model, int watt, int multichannel, bool threeDSurroundSound, int maxVolume) { Name = name; Model = model; Multichannel = multichannel; Watt = watt; ThreeDSurroundSound = threeDSurroundSound; EffectivePower = watt * multichannel; CurrentVolume = 0; MaxVolume = maxVolume; } public int GetEffectivePower() { return EffectivePower; } public string GetNameAndModel() { return Name + " " + Model; } public int GetMultichannel() { return Multichannel; } public string GetThreeDSurroundSound() { if (ThreeDSurroundSound) return "Yes"; else return "No"; } }
همانطور که میبینید، ابتدا یک شیء از این کلاس ساخته و مقادیر مربوطه را به آن دادهایم. سپس متدهای سادهای تعریف کردهایم تا بتوانیم مقدار فیلدهای private را بخوانیم. همینطور که میدانید فیلدهای private خارج از کلاس خودشان در دسترس نیستند و ما از طریق یک متد public توانستیم مقدار آنها را به خارج از کلاس نشان دهیم. با اینکار مقدار بعضی از فیلدهای private را از طریق یک متد public بهصورت read-only در آوردیم.
همانطور که میدانید یکی از وظایف آمپلیفایر، بلند کردن و کم کردن صدا است. در اینجا صدای آمپلیفایر ابتدا روی صفر تنظیم شده و حداکثر صدای آن ۵۰ در نظر گرفته شده است. در مرحلهی بعد دو متد به این کلاس اضافه میکنیم که وظیفهی بلند کردن و کم کردن صدا را بر عهده دارند. این دو متد همچنین بررسی میکنند که صدا از عدد ۵۰ بیشتر و از عدد صفر کمتر نشود:
using System; class AmpDemo { static void Main() { Amplifier Kenwood = new Amplifier("KENWOOD", "RA-5000", 25, 5, true, 50); Console.WriteLine("Amplifier simulation"); Console.WriteLine(" Name and Model: " + Kenwood.GetNameAndModel()); Console.WriteLine(" Effictive Power: " + Kenwood.GetEffectivePower()); Console.WriteLine(" Multichannel: " + Kenwood.GetMultichannel()); Console.WriteLine(" 3D Surround Sound: " + Kenwood.GetThreeDSurroundSound()); Console.WriteLine(); // Increase Volume Kenwood.IncreaseVolume(10); Kenwood.IncreaseVolume(20); Kenwood.IncreaseVolume(10); Kenwood.IncreaseVolume(5); Kenwood.IncreaseVolume(20); // Decrease Volume Kenwood.DecreaseVolume(10); Kenwood.DecreaseVolume(30); // Increase again... Kenwood.IncreaseVolume(20); Kenwood.IncreaseVolume(10); } } class Amplifier { private string Name; private string Model; private int Watt; private int Multichannel; private int EffectivePower; private bool ThreeDSurroundSound; private int CurrentVolume; private int MaxVolume; public Amplifier(string name, string model, int watt, int multichannel, bool threeDSurroundSound, int maxVolume) { Name = name; Model = model; Multichannel = multichannel; Watt = watt; ThreeDSurroundSound = threeDSurroundSound; EffectivePower = watt * multichannel; CurrentVolume = 0; MaxVolume = maxVolume; } public void IncreaseVolume(int increaseValue) { if (CurrentVolume + increaseValue <= MaxVolume) { CurrentVolume += increaseValue; Console.WriteLine("Increaseing Volume\n Current Volume: " + CurrentVolume); Console.WriteLine(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Danger!\nloud volume can hurt your ears!"); Console.WriteLine("Max Volume is {0}. You can't violate this", MaxVolume); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(); } } public void DecreaseVolume(int decreaseValue) { if (CurrentVolume - decreaseValue >= 0) { CurrentVolume -= decreaseValue; Console.WriteLine("Decreaseing Volume\n Current Volume: " + CurrentVolume); Console.WriteLine(); } else { CurrentVolume = 0; Console.WriteLine("Decreaseing Volume\n Current Volume: " + CurrentVolume); Console.WriteLine(); } } public int GetEffectivePower() { return EffectivePower; } public string GetNameAndModel() { return Name + " " + Model; } public int GetMultichannel() { return Multichannel; } public string GetThreeDSurroundSound() { if (ThreeDSurroundSound) return "Yes"; else return "No"; } }
خروجی:
همانطور که میبینید، با صدا زدن متد افزایش صدا، به مراتب صدا را زیاد کردهایم و هنگامی که قصد تجاوز از حد را داشتهایم با پیغام خطر (قرمز رنگ) مواجه شدهایم. سپس صدا را توسط متد کاهش صدا، کاهش و مجدداً توسط متد افزایش صدا، افزایش دادهایم.
تمرین
تمرین شماره ۱۳: در تمرین شماره ۱۲ دفترچه تلفن سادهای ساختیم که شیگرا نبود. در تمرین شماره ۱۳ باید دفترچه تلفنی بسازید که در آن فقط از متد static استفاده شده باشد. برای انجام این تمرین نیازی به ساختن کلاس و شیء نیست (در تمرینهای بعد کلاس و شیء میسازید). برای حل این تمرین میتوانید از الگوی زیر پیروی کنید:
using System; class SimplePhoneBook { static void Main() { while (true) { ShowMenu(); // Use methods to build a phonebook Console.ReadLine(); } } // You can use void methods or some ret-type else static void ShowMenu() { Console.Clear(); Console.WriteLine("---- Simple Phonebook ----"); Console.WriteLine(); Console.WriteLine("1. Add"); Console.WriteLine("2. Search"); Console.WriteLine("3. Show all"); Console.WriteLine("4. Exit"); Console.WriteLine(); Console.Write("Choose a number: "); } static void Add() { // Add statements } static void Search() { // Search statements } static void ShowAll() { // Show statements } }
داوود
4 January 2013
قبل از خوندن این درس فقط میتونیم بگیم دستتون درد نکنه + و خدا حفظتون کنه!
حمید
6 January 2013
سلام و ممنون بابت آموزش ها
سوال داشتم
بعد از دستور for تا قسمت else حذف بشه چه مشکلی پیش میاد؟ چون حذف کردم ولی تغییری در خروجی حاصل نشد. آیا حذف این چند خط اشتباه است؟دلیل اون چن خط چیه؟
حمید
6 January 2013
فراموش کردم بگم سوال قبلی مربوط به درس 18 (صفحه 5) و فرهنگ لغت به روش دوم
مسعود درویشیان
6 January 2013
اینجا به این دلیل از if-else استفاده کردم تا برای جداکردن کلمات از علامت -- استفاده کنم و if رو برای این گذاشتم تا بعد از کلمه آخر دیگه -- رو نذاره
رضوان
17 May 2015
کلاس فوتبال درست کنید که نام چند فوتبالیست با تابع سرعت شوت وغیره رو نمایش بده
سعید
9 January 2013
ممنون
داوود
12 January 2013
سلام مسعود جان؛
در این تکه کد:
[C#]
public Amplifier(string name, string model, int watt, int multichannel,
bool threeDSurroundSound, int maxVolume)
[C#/]
اگه به جای متغیرهایی مثل name ، model ،watt از این متغیرها استفاده می کردیم: Name ، Model ، Watt می بایست از کلمه کلیدی this نیز استفاده می کردیم.
درسته ؟
حالا چرا شما این کار رو نکردید؟
مسعود درویشیان
12 January 2013
سلام. آره درسته
سیشارپ یه سری قواعد (یه جور خوشنویسی) برای نامگذاری داره. مثلاً متدها رو باید اینطوری نامگذاری کرد: MyMethod که حروف اول هر کلمه بزرگه. نامگذاری کلاس هم همینطوره: MyClass اما پارامترها حرف اولشون کوچیکه و حرف اول کلمههای بعدش بزرگه مثل این: myParam
به یکی از این حالت نامگذاریها میگن Pascal case. نمونه: MyClass یا MyMethod
به اون حالت دیگهی نامگذاری میگن Camel case. نمونه: myParam یا myLocalVar
توی این مثال هم من پارامترهام بهصورت Camel case هست اما Field ها Pascal case هستن
داوود
12 January 2013
ممنونم ازت؛ دستت درد نکنه.
داوود
12 January 2013
آقا مسعود در خصوص تمرین این قسمت ازتون چند تا سوال داشتم که اگه اشکال نداشته باشه یکی یکی ازتون می پرسم؛
سوال اول) ببینید ما باید چه جوری عددی رو که انتخاب کردیم پاس بدیم به کلاس اصلیمون؟
ببینید من اومدم و برای اینکار در ابتدا یک متغیر که public هم بود به ابتدای برنامه و در اینجا اضافه کردم:
[#C]
using System;
class SimplePhoneBook
{
public int b;
static void Main()
{
while (true)
{
..
[#C/]
هدفم این بود که در متد ()show بتونم اونو پاس بدم به بالا؛
بعد در این قسمت اومدم و این کار رو کردم:
[#C]
static int ShowMenu(int b)
{
Console.Clear();
Console.WriteLine(“—- Simple Phonebook —-“);
Console.WriteLine();
Console.WriteLine(“1. Add”);
Console.WriteLine(“2. Search”);
Console.WriteLine(“3. Show all”);
Console.WriteLine(“4. Exit”);
Console.WriteLine();
Console.Write(“Choose a number: “);
b = int.Parse(Console.ReadLine());
return b;
}
[#C/]
بعدش بطور نمونه و اینکه ببینم آیا متدم کار میکنه یا نه ؛ اومدم در متد اول این یک خط کد رو نوشتم:
[#C]
static void Add()
{
Console.WriteLine(“asdasd”);
// Add statements
}
[#C/]
و در ابتدای برنامه هم این تغییرات رو اعمال کردم:
[#C]
public int b;
static void Main()
{
while (true)
{
ShowMenu(1);
Add();
Console.ReadLine();
// Use methods to build a phonebook
//int a=int.Parse(Console.ReadLine());
//switch (a)
//{
// case 1:
// Add();
// break;
// case 4:
// Exit();
// break;
//}
}
}
[#C/]
اولش هدم این بود که عددی رو که به این قسمت پاس میدم با دستورات switch و case هدایتش کنم به متد مورد نظر ولی دیدم براحتی که فکر می کردم نیست و برای نمونه الان خودم عدد 1 رو جلو متد ShowMenu(1); گذاشتم که برنامه کار کنه.
حالا میشه یه راهنمایی بکنید که چطور بعنوان مثال اگه کاربر عدد یک رو وارد کرد برم وارد متد اول بشم؟
و سوال دوم) اینکه چطور در متد 4 بتونم از برنامه خارج بشم؟
این دستور رو با search جستجوش کردم ولی جواب نداد: Environment.Exit();
و سوال سوم) آیا نباید به جای while (true) از متغییری بولین استفاده کنیم که اگه به متد 4 رفت false بشه و بیاد بیرون؟؟ اینجوری که همیشه true است و داخل حلقه همیشه خواهیم بود.
ببخشید اگه سوالام زیاد شد و شایدم از سهل انگاری خودم که وقت شما رو گرفتم.
مسعود درویشیان
13 January 2013
سلام. ممنون که همیشه با جدیت مقالات رو دنبال میکنی و همیشه سوالهای خوب میپرسی
در مورد سوال اول که میگی “چهجوری عددی رو که انتخاب کردیم پاس بدیم به کلاس اصلیمون” توی قسمت بعد من حل تمرین رو با توضیح کامل قرار دادم. ببینش و اگه دیدی هنوز موضوع نامفهومه تا توضیح بیشتری در موردش بدم.
سوال دومت دستور خروج از برنامه بود که باید این دستور رو بنویسی: (0)Environment.Exit که فکر کنم صفرش رو یادت رفته
در مورد سوال سومت هم باید بگم که برنامه رو توی حلقهی بینهایت گذاشتم تا برنامه بسته نشه و هرقت خواستم با زدن عدد 4 برنامه رو ببندم.
حتماً با دیدن جواب تمرین خیلی از سوالاتت حل میشه اما اگه بازم مشکلی بود من در خدمتم
موفق باشی
داوود
13 January 2013
” و همیشه سوالهای خوب میپرسی”
سلام مسعود عزیز؛
خواهش می کنم ؛ این نظر لطف و بزرگی شماست. راستش رو بخواین من میدونم برای تهیه هر یک از این مقالات حداقل نیاز به 2 ساعت وقت هست که آماده کرده و روی سایت بذارید؛ همچنین از سختی و پرکار بودن این کار شما کاملا آگاهم.
شاید ظاهراً از منظر خوانندگان به چشم نیاید ولی برای هر خط آن و اینکه جملات به اصطلاح جور در بیایند ساعتها وقت نیاز است.
همچنین ببخشید که زیاد سوال می پرسم؛ گاها با خودم میگم شاید با خودتون بگید من چقدر سوال می پرسم و حالیم نیست ولی راستش رو بخواین میخوام از دانسته های شما نهایت استفاده رو بکنم و کم سوادی خودم رو تا حدودی جبران کنم.
خوشحال میشم اگه بتونم بطریقی زحمات شما رو جبران کنم.
دوستدار همیشگی شما : داوود.
===
آقا مسعود اینکه گفتید قسمت بعدی رو ببینم و بعدش اگه سوالی بود مزاحمتون بشم؛ آخه اینجوری باعث نمیشه که ما به نوعی تنبل بار بیایم و همیشه دنبال لقمه آماده باشیم؟ آخه وقتی که آدم بدونه حل یه تمرینی رو داره شاید دیگه زیاد به ذهنش فشار نیاره برای حل اون تمرین؟؟
نظرتون چیه؟ یا شاید هم با توجه به تجربه بیشتر شما ، هنوز برای رسیدن به اون مرحله با توجه به آموزشهای پربار شما زمان هست؟
یک دنیا ممنون و تشکر
مسعود درویشیان
13 January 2013
سلام خواهش میکنم لطف دارید
اتفاقاً میخواستم بگم که نیاز نیست هربار برای سوالهاتون عذرخواهی کنید! پرسیدن عیب نیست، ندانستن عیب است پس تا میتونید بپرسید… من اینطور برداشت میکنم که شما با سوال پرسیدن نشون میدید که چقدر فعالید، نه اینکه نمیفهمید! خب مسلمه شما در حال آموزشید، قرار نیست یه دفعه همهی موضوع رو بفهمید و حتماً سوالاتی هم براتون پیش میاد!
اول سعی کنید خودتون تمرین رو حل کنید و برای حلش از تمام توانتون استفاده کنید. اگه حل کردید که خیلی عالی اما اگه سعیتون رو کردید و نتونستید هیچ مشکلی نداره… حل تمرین رو ببینید و همون رو خوب چندین بار تمرین کنید تا با حلش آشنا بشید…
موفق باشید
داوود
14 January 2013
باشه ؛ چشم. دستتون درد نکنه. دیگه نمیدونم چجوری محبتتون رو پاسخ بدم.
داوود
16 January 2013
با سلام مجدد؛
مسعود جان؛ با اجازه تون من حل تمرین رو میذرام. راستش رو بخواین به تمرین شما اصلا نگاه نکردم و کلا خودم همش رو نوشتم.
ممنون میشم اگه اجراش کنید و ایراداتش رو بهم یادآور بشید.
مسعود درویشیان
20 January 2013
خیلی خوبه. آفرین
داوود
20 January 2013
خواهش می کنم؛ ممنونم. ولی بعدش که حل تمرین شما رو دیدم واقعا از حلش خوشم اومد. شما حتی چاپ شدن مقادیر رو هم با متد انجامش داده بودید که خیلی زیبا و قشنگ شده بود.
از نظر شی گرایی به نظرم برنامه شما به مراتب شی گرایی رو بیشتر رعایت کرده بود(با توجه به اینکه شما گرفتن و درج رو نیز با استفاده از متد پیاده سازی کرده بودید).
محمد فر
6 April 2013
با سلام و خسته نباشید و تشکر از زحمات جنابعالی.
من از ظهر تا الان داشتم تمرین مربوط به این درس رو حل میکردم می دونم که خیلی دیره ولی همه اش رو خودم حل کردم و یک مقدار خیلی کم هم از تمرین قبلی شما کمک گرفتم.اگر اشکال نداره بذارم و شما راجبش نظر بدهید؟
مسعود درویشیان
6 April 2013
بله حتماً
محمد فر
6 April 2013
تمرین رو گذاشتم.لطف کنید بهم اشتباهاتم رو بگید.ممنون
مسعود درویشیان
7 April 2013
اگه پروژه رو آپلود کنی بهتره، کدهایی که گذاشته بودی بهم ریخته شده
محمد فر
10 April 2013
من پروژه رو 18 گذاشتم به دستتون نرسیده؟
محمد فر
16 April 2013
سلام.اگر جوابم روبدید ممنون میشم
مسعود درویشیان
17 April 2013
ببخشید پروژه به دستم نرسیده لطفاً دوباره بفرستید.
محمد فر
17 April 2013
http://www.uploadbaz.com/djsyhyi15lym
محمد فر
17 April 2013
اومد؟
مسعود درویشیان
17 April 2013
خیر به من نرسید، آپلودش کنید و لینک رو قرار بدید.
محمد فر
18 April 2013
اخه لینکش رو می زارم ولی ارسال نمیشه
مسعود درویشیان
18 April 2013
لینک رو دیدم، سیستم وردپرس لینک رو جای دیگه قرار داده بود :)
محمد
28 August 2014
نمی دونم این چه مشکلی داره هر کار می کنم ارور می ده :
using System;
class MyClass
{
static void main()
{
while (true)
{
Wellcom();
Console.ReadLine();
}
}
static void Wellcom()
{
Console.BackgroundColor = ConsoleColor.Yellow;
string[] wellArray = {
“welcom to my app thats for waste of time”,
“1.search”,
“2.add”,
“3.list”,
“4.Exite”,
};
for (int i = 0; i < wellArray.Length; i++)
{
Console.WriteLine(wellArray[i]);
}
Console.BackgroundColor = ConsoleColor.Gray;
}
}
error=Error 1 Program 'c:\Users\someone\Documents\Visual Studio 2013\Projects\educates2\educates2\obj\Debug\educates2.exe' does not contain a static 'Main' method suitable for an entry point c:\users\someone\documents\visual studio 2013\Projects\educates2\educates2\CSC educates2
دیوونه شدم
مسعود درویشیان
28 August 2014
main رو با M بزرگ بنویسید. ()Main
محمد
28 August 2014
خیلی ممنون واقعا ولی چرا همینو خود ویژوال نمی فهمه که بهم بگه انگار سنتکس ارور نیست آیا این دوتا مین با هم فرق دارن؟
مسعود درویشیان
28 August 2014
اگه دقت کنی میبینی که توی خطا بهت گفته
نقطهی شروع همه برنامهها توی سیشارپ متد Main با M بزرگ هست. اگه جور دیگه بنویسی انگار از این متد استفاده نکردی!
رضوان
17 May 2015
سلام آقای درویشیان لطف کنید یک کلاس فوتبال هم برامون حل کنید وبا استفاده از تابع چند بازیکن برای آن تعریف کرده وسرعت شوت وزن وغیره رو حساب کند
عارف
16 February 2017
سلام ، خیلی ممنون بابت آموزش های عالیتون.
یه مشکل برای من پیش اومده؛ من آرایه public نمیتونم بسازم و توی متد های static بهش مقدار بدم !
class Program
{
public byte counter = 0;
public string names[];
public string numbers[];
.
.
.
.
static void add(string name, string number)
{
Program gettin = new Program ;
for (int i = 0; i<= 20; i++)
{
gettin .names = name ;
gettin .numbers = number ;
}
checkwhattodo();
}
عارف
17 February 2017
مسئله حل شد، آرایه ها رو از نوع استاتیک و نه public تعریف کردم.
شما توی 3 تا درس قبل فرمودین در کلاسی که هم اعضای استاتیک و هم غیر استاتیک وجودر داشته باشند تنها میتوان به اعضای استاتیک آن دست داشت مگر آنکه از نوع کلاس یک شی بسازیم.