پاسخ: مشکلات avr و دات نتی
دوستان رشته ی بنده الکترونیک نیست. اگر اشتباهی در کار من مشاهده کردید، به بزرگواری خودتون ببخشید.
+makintash ، دوست عزیز از تذکرتون سپاس گزارم.
با مشورت هایی که انجام شد، احتمال دادیم مشکل از نحوه ی اتصال باشه.
تصویر زیر یه شکل اتصال رو بیان می کنه:
چیز بیش تری دستم رسید، در اختیارتون قرار می دم.
موفق باشید
آرمین:11():
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
سلام
این کد چرا ارور میده؟ :
کد:
int x;
MessageBox.Show(x.ToString());
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
نقل قول:
سلام
این کد چرا ارور میده؟ :
کد:
int x;
MessageBox.Show(x.ToString());
سلام!
مقداری برای x تعریف نشده و در سی شارپ برخلاف زبان های مفسری اگر متغیری مقدار دهی نشه، مقدار پیش فرضی برای اون در نظر گرفته نمیشه.
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
نقل قول:
سلام!
مقداری برای x تعریف نشده و در سی شارپ برخلاف زبان های مفسری اگر متغیری مقدار دهی نشه، مقدار پیش فرضی برای اون در نظر گرفته نمیشه.
ممنون استاد آرمین
ولی من تو آموزشی که از یه شرکت دارم ، بصورت تئوری گفت که مقدار پیش فرض داره اگه ندیم اما عملی انجام نداد
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
سلام
آقا آرمین مبحث چند ریختی با توضیح ساده رو کجا میتونم بخونم؟ این کسی که آموزشش رو میبینم ، همه چی رو خوب و ساده توضیح میده . چند ریختی رو هم همینطور ولی روی چند ریختی زیاد تمرکز نکرد
این چیزایی که از چند ریختی میگم ، ببینین درسته یا چیزای دیگه ای هم هست؟ :
چندریختی یعنی تابعی در کلاس پدر رو میشه در کلاس فرزند ، تغییر داد که میشه همون از یه تابع ، به چند شکل و ریخت استفاده کرد . با استفاده از کلمه virtual در کلاس پدر میشه به تابع این قابلیت رو اضافه کرد . با استفاده از کلمه override در کلاس فرزند ، میشه تابع پدر رو تغییر داد به دلخواه
یا به عبارتی تابع چند ریختی فقط توی کلاس پدر با کلمه ی virtual تعریف میشه . نه هیچ کلاس دیگه ای و تغییر این تابع فقط توی کلاس فرزند با کلمه ی override انجام میشه نه هیچ کلاس دیگه ای
در کلاس فرزند اگه بخوایم تابع چند ریختی رو تغییر بدیم ، چون به نوعی تابع مجدد تعریف باید بشه و تابع هم فقط در سطح (داخل) کلاس تعریف میشه ، پس برای تغییر تابع چند ریختی یا در واقع باید کلمه ی override را داخل و در سطح کلاس بنویسیم نه در داخل توابع یا متد دیگه و ... و بعدش هم هر جور خواستیم بدنه و خروجی شو تغییر میدیم
چون تابع چند ریختی باید از کلاس فرزند در دسترس باشه تا لود شه ، پس باید سطح دسترسی این نوع تابع در کلاس پدر که تعریف کردیم ، public باشه
برای فراخونی این تابع چند ریختی شده یعنی تغییر داده شده ، که داخل کلاس فرزند تعریف کردیم ، مثل حالت عادی ، با ایجاد شی از کلاس های دیگه ، در دسترسه
--------------
خسته میشین بخونین :Love-ssa~! (1):
نکته ی دیگه ای هست که فکر کنم باشه یا فقط همینه؟
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
نقل قول:
سلام
آقا آرمین مبحث چند ریختی با توضیح ساده رو کجا میتونم بخونم؟ این کسی که آموزشش رو میبینم ، همه چی رو خوب و ساده توضیح میده . چند ریختی رو هم همینطور ولی روی چند ریختی زیاد تمرکز نکرد
این چیزایی که از چند ریختی میگم ، ببینین درسته یا چیزای دیگه ای هم هست؟ :
چندریختی یعنی تابعی در کلاس پدر رو میشه در کلاس فرزند ، تغییر داد که میشه همون از یه تابع ، به چند شکل و ریخت استفاده کرد . با استفاده از کلمه virtual در کلاس پدر میشه به تابع این قابلیت رو اضافه کرد . با استفاده از کلمه override در کلاس فرزند ، میشه تابع پدر رو تغییر داد به دلخواه
یا به عبارتی تابع چند ریختی فقط توی کلاس پدر با کلمه ی virtual تعریف میشه . نه هیچ کلاس دیگه ای و تغییر این تابع فقط توی کلاس فرزند با کلمه ی override انجام میشه نه هیچ کلاس دیگه ای
در کلاس فرزند اگه بخوایم تابع چند ریختی رو تغییر بدیم ، چون به نوعی تابع مجدد تعریف باید بشه و تابع هم فقط در سطح (داخل) کلاس تعریف میشه ، پس برای تغییر تابع چند ریختی یا در واقع باید کلمه ی override را داخل و در سطح کلاس بنویسیم نه در داخل توابع یا متد دیگه و ... و بعدش هم هر جور خواستیم بدنه و خروجی شو تغییر میدیم
چون تابع چند ریختی باید از کلاس فرزند در دسترس باشه تا لود شه ، پس باید سطح دسترسی این نوع تابع در کلاس پدر که تعریف کردیم ، public باشه
برای فراخونی این تابع چند ریختی شده یعنی تغییر داده شده ، که داخل کلاس فرزند تعریف کردیم ، مثل حالت عادی ، با ایجاد شی از کلاس های دیگه ، در دسترسه
--------------
خسته میشین بخونین :Love-ssa~! (1):
نکته ی دیگه ای هست که فکر کنم باشه یا فقط همینه؟
سلام!
سجاد جان این توضیحاتی که فرمودی درسته و برای تکمیلش می تونی مطلب زیر رو هم مطالعه کنی:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
ولی چند ریختی فقط همین نیستش و مفاهیم abstract، delegate و operator رو هم در بر می گیره:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
در مورد Delegate هم این مطلب شاید مفید باشه:
نقل قول:
Delegate راهي براي اجراي چندين تابع مختلف است كه ورودي مشابهي دارند. فرضا" اگر سه تابع داشته باشيم كه عمليات هاي رياضي مختلفي رو روي يك عدد مشابه اجرا مي كنند؛ به جاي اجراي تك تك اون سه تابع با ورودي يكسان، مي تونيم سه تابع رو در يك Delegate تعريف كنيم و سپس با يك بار دادن اون عدد به Delegate ايجاد شده، Delegate خودش عدد ورودي رو به سه تابع داخليش ميده و نتايج رو بر مي گردونه. حال اگر يكي از اين سه تابع به جاي يه ورودي به دو ورودي نياز داشته باشه ديگه نميشه از اين روش استفاده كرد. در اين جا به اصطلاح گفته ميشه Delegate Signature بين سه تابع مطابقت نداره (عدم تشابه در پارامتر هاي ورودي و يا مقادير برگشتي توابع). در مبحث چند ريسماني هم وقتي قصد داريم تابعي رو توسط يك Thread كه يك متد Delegate محسوب ميشه اجرا كنيم ممكنه با مشكل عدم تطابق Delegate Signature رو به رو بشيم.
در حالت كلي اگر قصد داشته باشيم تابعي رو توسط يك Thread مجزا اجرا كنيم و اون تابع داراي پارامتر ورودي باشه جهت هماهنگ كردن Delegate Signature، بايد از عبارت delegate قبل از معرفي تابع استفاده كنيم. در دستور شما هم تابع Sort چهار ورودي داره كه باعث ميشه از اين قاعده مستثني نباشه. لازم به ذكره در نسخه هاي جديد سي شارپ اين هماهنگي با استفاده از عبارت هاي لاندا (Lambda Expression) هم امكان پذيره.
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
نقل قول:
سلام!
سجاد جان این توضیحاتی که فرمودی درسته و برای تکمیلش می تونی مطلب زیر رو هم مطالعه کنی:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
ولی چند ریختی فقط همین نیستش و مفاهیم abstract، delegate و operator رو هم در بر می گیره:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
در مورد Delegate هم این مطلب شاید مفید باشه:
سلام
ممنون آقا آرمین :11():
من از یکی سئوال میپرسم که الان نیست که جواب بده.
زیادم هست سئوالاتم و نیاز هم دارم
همونطور که میدونی آقا آرمین توی سی شارپ مبتدی هستم و تا مبحث ارث بری رو و حالا نمیدونم کامل میدونم از این مبحث یا نه ولی الان توی مبحث چند ریختی گیر کردم
مبحث تعریف تابع virtual و تغییر بدنه اش با override رو انگار یه چیزایی متوجه شدم ولی در مبحث کلی چند ریختی و مخصوصا کلمه کلیدی new و new virtual بجای override گیر کردم
در کل اطلاعات تیکه پاره از چند جا درباره مبحث چند ریختی گرفتم که الان باعث گیج شدنم شد مخصوصا در کلمه کلیدی new و new virtual اش
این سئوالاتی که در زیر مطرح کردم رو از اون نفر پرسیدم که اگه وقت کنی جواب بدی اوستا آرمین (البته هر چه سریعتر بهتر:Love-ssa~! (1):) ممنون میشم :
ببخشید آقا علی کنجکاو شدم بدونم اون کد خط بالا چیه دقیقا؟
اگه سطح دسترسی public که اولش نوشتین رو برداریم میشه همون ساخت شی یعنی اگه این جوری باشه :
کد:
Class3 a = new Class3();
ولی تا جایی که میدونم موقع تعریف شی ، سطح دسترسی براش نمیزارن
چیه دقیقا این؟
--------------
بعد یه سئوال دیگه دارم اینکه داخل یک کلاس میشه کلاس دیگه ای تعریف کرد و بعد داخل اون متد و اعضاء تعریف کرد؟ (منظورم تعریف یک کلاس کنار کلاس دیگه نیست. منظورم داخل یک کلاس هست)
چجوری میشه تو کد زیر ، از کلاس داخلی شی درست کرد یا متد meth را فراخونی کرد؟ :
کد:
namespace MultiClassTest
{
class MyClass1
{
public class MyClass2
{
public string x = "1";
public string meth()
{
string y = "internal class";
return y;
}
}
}
}
فضای نام تو در تو رو فهمیدم که باید فضای نام ها را با استفاده از using و نوشتن نام فضای نام و بعد با گذاشتن نقطه و بعد نوشتن فضای نام داخلی ، ملحق کنیم
-------------------------------------
نقل قول:
به این نکته توجه کنید که اگر کلاس B وارث کلاس A باشد و کلاس C وارث کلاس B باشد، C می تواند هر چیزی که
نقل قول:
در A ویژگی virtual داشته را override کند، چه در B بازنویسی شده باشند و چه نشده باشند.
منظورتون اینه که اگه A کلاس پدربزرگ و B پدر و C فرزند باشه و مثلا متد Test در کلاس پدربزرگ یعنی کلاس A بصورت virtual تعریف شده باشه و بعد در کلاس B یه override از متد Test بسازیم و این متد رو هر جور دلمون خواست تغییر بدیم و بعد حالا میتونیم توی کلاس C متد Test در کلاس A یعنی کلاس پدربزرگ رو دوباره override کنیم؟!
ولی من اینو تست کردم دیدم وقتی میخوایم یه متد رو override کنیم ، فقط آخرین متدی که override کردیم در آخرین کلاس در دسترسمون هست و فقط اونو میتونیم تغییر بدیم و متدهای دیگه در کلاس های قبلی اش که override کردیم از دسترسمون خارج میشه یعنی وقتی در کلاس B که متد رو یه بار override کردیم (چون در کلاس A بصورت virtual تعریف کردیم) ، در دفعه ی بعد که میخوایم override تعریف کنیم یعنی وقتی در کلاس C بصورت override میخوایم بنویسیم ، فقط متد Test ای که در کلاس B (بصورت override) تعریف کردیم در دسترسمون هست و متد Test در کلاس A از دسترس مون خارج میشه
نقل قول:
کلاس B می تواند Test کلاس A را نادیده بگیرد، مثلا می خواهد Test اش private باشد، دقت کنید که override ای در کار نیست،
نقل قول:
عبارت new مشخص کننده نادیده گرفتن صریح Test کلاس A است :
کد:
public class B : A
{
private new void Test()
{
}
}
کلاس B می تواند Test جدید اش را طوری ارائه کند که فرزندانش بتوانند آنرا بازنویسی کنند، هم عبارت new و هم virtual بکار رفته.
فرزندان کلاس B ارتباط شان را با Test ئه کلاس A از دست می دهند، چون B از اساس Test جدیدی را virtual کرده :
کد:
public class B : A
{
public new virtual void Test()
{
}
}
البته موارد زیادی در این بحث چند ریختی هست، مخصوصا یکسری موارد خاص ویژوال استدیو هست، مثلا در بعضی از کلاس ها
بخشی از موارد رو override می کنند، نه به این جهت که باز نویسی شوند، صرفا به این جهت که از دید برنامه نویس مخفی شوند. در فروم از اینجور مثال ها هست.
من این تیکه ها رو متوجه نشدم
وقتی در کلاس پدربزرگ که متدم رو public و virtual تعریف کردم و بعد در کلاس پدر بصورت private new تعریف کردم ، از متد فرزند هم به متد مورد نظر در کلاس پدربزرگ دسترسی داشتم یعنی فرزندان ارتباط شون رو با متد در کلاس پدربزرگ از دست ندادن
------------------------------------------
یه سئوال دیگه اینکه وقتی توی کلاس پدر ، متدی با قابلیت virtual تعریف میکنم توی هیچ متدی از کلاس پسر با کلمه کلیدی this در دسترس نیست و فقط باید شی براش درست کنم تا در دسترس قرار بگیره . سطح دسترسی شم public هه
مگه کلمه کلیدی this هم کلاس خودی و هم کلاس های اجدادش رو اون عضوهایی که قابلیت دسترسی دارن (بجز public static) رو در دسترس مون قرار نمیده؟
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
سلام
آقا نوع داده ای object چیه؟
تا حالا توضیحاتی که شنیدم و قبل از آشنایی با نوع داده ای var فکر میکردم که نوع داده ای object همون کار var را میکنه
ولی الان فهمیدم var همون چیز مورد نظرم بود یعنی اتوماتیک نوع متغییر را تشخیص میده و خیلی به درد عملیات ریاضی و جاهایی که انواع مختلف عددهای رند و غیر رند با هم بکار میره میخوره و کار آدمو راحت میکنه . نوع متغییر var هم موقع نوشتن کد مشخص میشه ولی object و dynamic انگار موقع اجرا برنامه مشخص میشن
پس نوع داده ای object به درد کجا میخوره؟
انگار نوع dynamic هم داریم. این باز چیه؟ برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ] چن تا!!! فرقشون با هم چی ان؟
--------------------
بعد اینکه فایل با پسوند mp3 رو نمیشه بدون ابزار windows media player توی #C پلی کرد؟
----------------------------------
یه سئوال دیگه
چرا وقتی یه کنترل (مثلا button) به پروژه اضافه میکنیم ، ویژال استودیو اتوماتیک با نام همون کنترل ، برامون از کلاس اش یه شی (instance) ایجاد میکنه و ما از اون به بعد فقط کافیه که اعضاشو مثل پروپرتی ها و متدها و متغییرها و ... برای استفاده و فراخونی نام ببریم (که مشخصه با نقطه جدا میشن) ولی برای فراخونی یک فرم جدید باید خودمون یه شی از کلاس اش ایجاد کنیم؟
چرا این فرق هست؟ همه مگه کنترل نیستن؟
--------------------------------------------------
سئوال دیگه اینکه چجوری میشه توی یک رویدادی کدی بنویسیم که وقتی اون رویداد اتفاق میافته ، اتوماتیک یه دکمه از کیبرد رو برامون فشار بده (نه اینکه کاربر خودش فشار بده) مثلا دکمه F1 یا دکمه Delete و ... رو؟
--------------------------------------------------این کلاس keys در رویدادهای کیبرد دقیقا چیه؟ من کد زیر رو وقتی در رویداد KeyDown (فرم) مینویسم ، هر دکمه ای رو میزنم بهم پیام E رو میده. چرا؟ :
کد:
string y = Convert.ToString(Keys.E);
MessageBox.Show(y);
مگه نباید فقط وقتی دکمه E را میزنم فقط عمل کنه؟
------------------------------------------------------
و اینکه من در کد زیر که توی رویداد KeyDown گذاشتم ، میخوام وقتی کلیدهای ترکیبی Ctrl+E رو زدم ، بهم پیام بده ولی نمیده . علت اشتباهم کجاست؟ :
کد:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control==true && e.KeyData==Keys.E)
{
MessageBox.Show(e.Control.ToString()+" + "+e.KeyData.ToString()+" pressed");
}
}
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
سلام!
1- تفاوت Var با Object و Dynamic:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
2-MP3 بدون Windows Media Player:
اگر منظورت اینه که کنترلر WMP در فرم معلوم نشه، بله امکان پذیره:
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
اما اگر میخوای بدون استفاده از هیچ کتابخونه ای این کار رو بکنی، غیر ممکن نیست ولی سخته.
3-دکمه و فرم همه مگه کنترل نیستن؟
سجاد جان کلمه کلیدی this برای همین کار هستش! مثلا button1.Text برای دکمه معادلش برای فرم میشه this.Text (دیگه نیازی به ساخت شی نیستش).
4-فشرده شدن اتوماتیک یه دکمه از صفحه کلید:
با دستور برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ] این کار امکان پذیره.
5-Keys در سی شارپ:
Keys در واقع یه Enum از دکمه های صفحه کلید هستش. در رویداد KeyDown اگر شما از شرط استفاده نکنی، هر کلیدی که پایین نگه داشته باشه رویداد رخ میده و مقدار کارکتر کلید E به نمایش در میاد.
6-فشردن کلید ترکیبی:
شرطت باید به این شکل اصلاح بشه:
کد:
if (e.KeyCode == Keys.E || e.KeyCode == Keys.Control)
پاسخ: طرح مشکلات ، سوالات ، آموزش ها و پروژه های مربوط به زبان های دیگر تحت دات نت
سلام
چرا عضو protected از یک کلاس ، فقط وقتی درون کلاس فرزند ، از همون کلاس فرزند شی بسازیم در دسترس هه؟ یعنی به چه دلیل وقتی از کلاس فرزند ، شی ای از کلاس پدر بسازیم ، اعضای protected تعریف شده از کلاس پدر در دسترس نیست؟