دانلود فیلم آموزش کامل برنامه نویسی Visual Studio C#.NET

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
به نام خدا

CSharp.jpg



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

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


لینک دانلود :

دانلود C# Programming Tutorial - آموزش برنامه نویسی با سی شارپ به زبان فارسی







تعداد قسمت های آموزش : 95

حجم کلیه ی قسمت های آموزش (تا 95 قسمت) : حدود 8.5 گیگابایت (در حالت فشرده)

زمان آموزش (تا قسمت 95) : 185 ساعت

میانگین هر قسمت : تقریبا 2 ساعت

سطح برنامه نویسی (تا قسمت 95) : مبتدی _ متوسط

سال تهیه (تا قسمت 95) : 1396


1) فرمت تبدیل MP4 و کدک تبدیل H264 هست
2) از همینجا ، از همه ی کسایی که بهم در سی شارپ کمک کردن نهایت تشکر رو میکنم (اسم نمیبرم چون خیلی ها کمکم کردن تا احیانا یکی از قلم نیفته)
11().gif


*** برای ظهور حضرت ولی عصر ارواحنا له الفدا و برای شادی روح اموات خودتون و هر کسی که در این آموزش تلاش کردن و سهیم ان ، ممنون میشم یه فاتحه بخونین
11().gif
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
به نام خدا
قسمت 1 => نصب نرم افزار Visual Studio.Net 2017 (به مدت 17 دقیقه و حجم 23.4 مگابایت)
قسمت 2 => آشنایی با محیط و پنجره ها و پنل ها و منوهای ویژال استودیو (به مدت 2:13 دقیقه و حجم 142 مگابایت)
قسمت 3 => اعداد و تبدیل مبنای باینری ، اعداد منفی و جمع و تفریق اعداد باینری (به مدت 1:53 دقیقه و حجم 93 مگابایت)
قسمت 4 => متغییرها قسمت اول _انواع داده ای اعداد صحیح (رند) ، قوانین نامگذاری متغییرها ، آشنایی با اعداد شانزده دهی ، آشنایی بیشتر با محیط ویژال استودیو و محیط کدنویسی (به مدت 2:11 دقیقه و حجم 118 مگابایت)
قسمت 5 => متغییرها قسمت دوم _ متغییرها و انواع داده ای (انواع داده ای اعداد اعشاری و کاراکتر) ، null و nullable کردن متغییرها (به مدت 1:23 دقیقه و حجم 80 مگابایت)
قسمت 6 => متغییرها قسمت سوم _ متغییرها و انواع داده ای (رشته و بولین) ، کاراکتر کنترلی ، اعداد شونزده دهی و دودویی در سی شارپ ، casting و تبدیل نوع (به مدت 2:6 دقیقه و حجم 117 مگابایت)
قسمت 7 => متغییرها قسمت 4 _ کلمه کلیدی var ، ادامه ی casting و تبدیل نوع ، نکات درباره اعداد اعشاری، الویت عملگرها (به مدت 1:54 دقیقه و حجم 103 مگابایت)
قسمت 8 => کلمه کلیدی dynamic ،نوع object ، دستور if و if-else و else if ، عملگرهای منطقی (& و | و ^) (به مدت 2:35 دقیقه و حجم 116 مگابایت)
قسمت 9 => عملگر قسمت 2 _ ادامه ی عملگرها (منطقی & و | و&& و ||) ، نکته ی تکمیلی الویت عملگرها (الویت عملگر == و &) (به مدت 1:23 دقیقه و حجم 44 مگابایت)
قسمت 10 => عملگر قسمت 3 _ ادامه ی عملگرها (عملگر بیتی _ & و | و ^ و ~ و << و >>) (به مدت 53 دقیقه و حجم 31 مگابایت)
قسمت 11 => عملگر قسمت 4 _ ادامه ی عملگرها (مثال از عملگر بیتی & و | و ^) ، اشاره ای به enum ها ، اشاره ای به رویداد KeyDown کیبرد (کاربرد عملگرها در Enum ها و رویداد KeyDown) (به مدت 1:59 دقیقه و حجم 62 مگابایت)
قسمت 12 => breakpoint ، دستور if تو در تو ، switch و lable ها (به مدت 1:52 دقیقه و حجم 60 مگابایت)
قسمت 13 => حلقه for و کلمه کلیدی break و continue و for تو در تو (به مدت 1:39 دقیقه و حجم 53 مگابایت)
قسمت 14 => حلقه ی while و do-while ، کلمه ی کلیدی new برای ایجاد شی ، آموزش تکمیلی حلقه ی for ، تابع Microsoft.VisualBasic.Interaction.InputBox (به مدت 1:59 دقیقه و حجم 66 مگابایت)
قسمت 15 => آرایه ی یک بعدی (قسمت اول) ، توضیح مختصر کلاس Array (به مدت 2:8 دقیقه و حجم 65 مگابایت)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ادامه ی توضیح قسمت ها

قسمت 16 => آرایه های یک بعدی (قسمت دوم) ، کار با بعضی ازاعضای کلاس Array ، حلقه ی foreach (به مدت 2:58 دقیقه و حجم 101 مگابایت)
قسمت 17 => value type ها و reference type ها قسمت 1 ، Garbage Collector ، کپی کلاس ها و آرایه ها (به مدت 2:38 دقیقه و حجم 87 مگابایت)
قسمت 18 => value type ها و reference type ها قسمت 2 ، مثال و کپی آرایه ای کلاس ها (stringbuilder) ، اضافه کردن ظرفیت آرایه ، boxing و unboxing (به مدت 2:44 دقیقه و حجم 95 مگابایت)
قسمت 19 => آرایه ی چند بعدی ، حلقه ها برای آرایه ی چند بعدی (به مدت 1:25 دقیقه و حجم 46 مگابایت)
قسمت 20 => آرایه در آرایه (jagged array) ، حلقه ها برای آرایه های دندانه ای (به مدت 1:55 دقیقه و حجم 65 مگابایت)
قسمت 21 => متدها قسمت اول ، آرگومان ها در تابع ، کلمه ی کلیدی return ، چک کردن مقدار آرایه و عضو یک آرایه در شرط ها (به مدت 2:25 دقیقه و حجم 76 مگابایت)
قسمت 22 => متدها قسمت دوم ، ادامه ی آرگومان ها و ارسال شان (ارسال با مقدار و ارسال با ارجاع) در تابع ، کلمه ی کلیدی return (بازگشت مقدار از تابع و همینطور خروج از تابع) ، فراخونی تابع داخل آرگومان یک تابع (به مدت 1:48 دقیقه و حجم 67 مگابایت)
قسمت 23 => متدها قسمت سوم ، تعویض ارسال مقادیر برای آرگومان های یک تابع ، مقدار پیش فرض برای آرگومان های تابع ، کلمه ی کلیدی ref و out (به مدت 1:58 دقیقه و حجم 70 مگابایت)
قسمت 24 => متدها قسمت چهارم ، کلمه کلیدی params ، اورلود (overload) کردن متدها ، کار کردن با انواع اورلود تابع MessageBox.Show (به مدت 2:6 دقیقه و حجم 81 مگابایت)
قسمت 25 => متدها قسمت پنجم ، توابع بازگشتی (به مدت 2:17 دقیقه و حجم 80 مگابایت)
قسمت 26 => متدها قسمت شیشم، نکات و موارد ریز ، توابع بازگشتی 2 (الگوریتم فیبوناچی) ، ذخیره ی چندین مقدار در متغییر (tuple استراکچر) (به مدت 2:15 دقیقه و حجم 94 مگابایت)
قسمت 27 => شروع دوره ی شی گرایی ، ادامه ی قابلیت های جدید در C#7 (کلمه کلیدی out و ref و قابلیت جدا کردن عدد) ، فضای نام و فضای نام تو در تو و کلاس و کلاس تو در تو ، reference در solution explorer ، ایجاد کلاس در فایل مجزا (به مدت 2:30 دقیقه و حجم 89 مگابایت)
قسمت 28 => using و فضای نام ، توضیح درباره ی کلاس و ساخت آن (ایجاد کلاس ماشین) (به مدت 2:40 دقیقه و حجم 97 مگابایت)
قسمت 29 => سطح دسترسی (1) _ سطح دسترسی های public و private و internal (به مدت 1:57 دقیقه و حجم 69 مگابایت)
قسمت 30 => متغییرهای سراسری ، انواع تفاوت در متغییر محلی و سراسری (به مدت 2:36 دقیقه و حجم 95 مگابایت)
قسمت 31 => پروپرتی ها (به مدت 2:9 دقیقه و حجم 78 مگابایت)
قسمت 32 => متد سازنده ، overload در متد سازنده ، ترتیب اجرا شدن کدهای کلاس موقع ایجاد شی با breakpoint ، مقداردهی شی با استفاده از کلوشه (مقداردهی مستقیم پروپرتی ها _ بجای استفاده از پرانتز) ، سطح دسترسی متد سازنده (به مدت 2:47 دقیقه و حجم 101 مگابایت)
قسمت 33 => کلمه ی کلیدی this قسمت اول (اشاره گر به شی از همان کلاس)، فراخونی overload ها در متد سازنده با استفاده از کلمه ی کلیدی this ، متغییر سراسری و محلی هم نام ، کپی کانستراکتور (به مدت 2:30 دقیقه و حجم 93 مگابایت)
قسمت 34 => چند نکته ، دستور try-catch-finally (برای جلوگیری از خطا) ، partial class (به مدت 2:27 دقیقه و حجم 98 مگابایت)
قسمت 35 => توضیح و کارکرد ارث بری ، پیاده سازی ارث بری در کلاس ماشین های تیبا و نیسان و هواپیما قاهر 313 (به مدت 2:14 دقیقه و حجم 91 مگابایت)
قسمت 36 => چند نکته ، نوع داده ای از کلاس پدر و شی از کلاس فرزند ، ترتیب اجرای کدها در کلاس های ارث بری (به مدت 1:59 دقیقه و حجم 72 مگابایت)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ادامه ی توضیح قسمت ها

قسمت 37 => تبدیل نوع پدر به فرزند ، کلمه ی کلیدی is و as (به مدت 2:36 دقیقه و حجم 91 مگابایت)
قسمت 38 => کلمه ی کلیدی base ، ارسال آرگومان به متد سازنده ی کلاس والد توسط کلمه ی کلیدی base ، دسترسی به اعضای شی base ، پنل object browser و پیدا کردن کلاس های والد و فرزندان یک کلاس (به مدت 1:40 دقیقه و حجم 69 مگابایت)
قسمت 39 => کلمه ی کلیدی this قسمت دوم ، تبدیل شی this از درون کلاس پدر به شی ای از کلاس فرزند ، توضیح مختصر ساختار کلاس Form1 (به مدت 1:20 دقیقه و حجم 58 مگابایت)
قسمت 40 => دلیل عدم نوشتن اعضای یک استراکچر توسط پروپرتی ، نکته ی تکمیلی برای قسمت 11 و رویداد کیبرد (به مدت 1:42 دقیقه و حجم 61 مگابایت)
قسمت 41 => کلمه ی کلیدی static ، اعضای static و متد سازنده ی static ، کلاس های static ، دلیل کار نکردن کلمه کلیدی this در اعضای static (به مدت 2:31 دقیقه و حجم 95 مگابایت)
قسمت 42 => سطح دسترسی (2) ، protected و protected internal ، کلمه کلیدی readonly ، متغییرهای ثابت (constant) (به مدت 1:43 دقیقه و حجم 59 مگابایت)
قسمت 43 => Member Hiding ، چند ریختی (اعضای virtual و override) ، کاربرد کلمه ی کلیدی base در Member Hiding و چند ریختی (به مدت 2:35 دقیقه و حجم 90 مگابایت)
قسمت 44 => کلمه ی کلیدی sealed (کلاس sealed و اعضای sealed) ، اعضا و کلاس های Abstract (به مدت 2:46 دقیقه و حجم 87 مگابایت)
قسمت 45 => استراکچرها قسمت 1 (به مدت 1:59 دقیقه و حجم 73 مگابایت)
قسمت 46 => استراکچرها قسمت 2 ، متد مخرب و متد dispose (به مدت 57 دقیقه و حجم 35 مگابایت)
قسمت 47 => Enum ها (مثال موشک های هواپیما)، توضیح تکمیلی قسمت 11 (عملگرهای بیتی | و & و ^) ، کلمه کلیدی typeof، متدهای استاتیک در Enum ، چک کردن وجود موشک های هواپیما قاهر 313 در لیست تسلیحات (چک کردن وجود اعضای enum ، در مقدار enum ترکیب شده توسط حلقه) ، تفاوت رویدادهای KeyDown و KeyPress (به مدت 2:35 دقیقه و حجم 94 مگابایت)
قسمت 48 => اصلاح و نکات تکمیلی درباره ی قسمت های قبل (nullable کردن و استاتیک نشدن در استراکچر ، تبدیل کلاس ها در شرط ها ، نکته ای درباره ی کلمه ی کلیدی as) ، اینترفیس ها قسمت 1 (به مدت 2:8 دقیقه و حجم 78 مگابایت)
قسمت 49 => اینترفیس ها قسمت 2 (به مدت 2:17 دقیقه و حجم 88 مگابایت)
قسمت 50 => اینترفیس ها قسمت 3 ، پیاده سازی اینترفیس IEnumerable و IEnumerator برای یک آرایه در کلاسی (به مدت 1:5 دقیقه و حجم 44 مگابایت)
قسمت 51 => Indexer ها قسمت 1 (به مدت 1:32 دقیقه و حجم 62 مگابایت)
قسمت 52 => indexer ها قسمت 2 ، مثال کلاس تریلی و پیاده سازی اینترفیس IEnumerable و مثال foreach (به مدت 1:38 دقیقه و حجم 69 مگابایت)
قسمت 53 => کلاس کالکشن های ArrayList ، Hashtable ، SortedList و مثال foreach برایشان (به مدت 1:30 دقیقه و حجم 63 مگابایت)
قسمت 54 => control container ها ، ControlCollections و ListBox.ObjectCollection و مثال foreach برای کلاس های کالکشن (به مدت 1:39 دقیقه و حجم 84 مگابایت)
قسمت 51 => Indexer ها قسمت 1 (به مدت 1:32 دقیقه و حجم 62 مگابایت)
قسمت 52 => indexer ها قسمت 2 ، مثال کلاس تریلی و پیاده سازی اینترفیس IEnumerable و مثال foreach (به مدت 1:38 دقیقه و حجم 69 مگابایت)
قسمت 53 => کلاس کالکشن های ArrayList ، Hashtable ، SortedList و مثال foreach برایشان (به مدت 1:30 دقیقه و حجم 63 مگابایت)
قسمت 54 => control container ها ، ControlCollections و ListBox.ObjectCollection و مثال foreach برای کلاس های کالکشن (به مدت 1:39 دقیقه و حجم 84 مگابایت)
قسمت 55 => کار با کلاس ها در فضای نام System.Reflection (گرفتن اطلاعات و مقداردهی و فراخونی کردن اعضای کلاس توسط این کلاس ها) و کلاس Type (به مدت 2:16 دقیقه و حجم 98 مگابایت)
قسمت 56 => Generic ها قسمت 1 (به مدت 1:27 دقیقه و حجم 63 مگابایت)
قسمت 57 => Generic ها قسمت 2 ، محدودیت (constraint) برای Generic ها (به مدت 2:28 دقیقه و حجم 98 مگابایت)
قسمت 58 => جنریک قسمت 3 ، پیاده سازی جنریک همراه محدودیت (محدودیت کلاس Mashin) برای کلاس Trailer و MashinCollection ، پیاده سازی اینترفیس های ساخته شده توسط مایکروسافت (مثل اینترفیس های جنریک IEnumerable<> و IEnumerator<> و IList<> و IDictionary<> و توضیح تکمیلی HashTable و ... ) ، پیاده سازی اینترفیس IComparable<> برای کلاس Vehicle (به مدت 1:49 دقیقه و حجم 79 مگابایت)
قسمت 59 => جنریک قسمت 4 ،پیاده سازی اینترفیس IComparable<> وایجاد کلاس ListCustom<> و الگوریتم مرتب سازی برای متد Sort ، کلاس tuple (به مدت 2:13 دقیقه و حجم 93 مگابایت)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ادامه ی توضیح قسمت ها

قسمت 60 => اشاره گر و اندازه ی اشاره گر در ویندوز 32 و 64 بیت ، نکته ای درباره ی کلاس های اورلود شده ، متدهای Object.GetHashCode و Object.Equals و اورلود این متدها در کلاس string ، پیاده سازی اینترفیس IEquatable<>، متد dispose و کلمه ی کلیدی using ، کلمه کلیدی using static (به مدت 3:1 دقیقه و حجم 125 مگابایت)
قسمت 61 => ادامه ی using و GC ، WinForm قسمت 1 ، کلاس Program و متد Main (به مدت 1:29 دقیقه و حجم 97 مگابایت)
قسمت 62 => WinForm قسمت 2 ، مقداردهی رویداد ، شی sender و متغییر رویدادی (شی e در رویدادها) (به مدت 2:0 دقیقه و حجم 86 مگابایت)
قسمت 63 => فایل Designer.cs در فرم ها و کدنویسی در آن (به مدت 1:37 دقیقه و حجم 66 مگابایت)
قسمت 64 => WinForm قسمت 4 ، ادامه و مثالی از شی sender ، ساختار سلسله مراتبی ارث بری کلاس Form ، توضیح پروپرتی های کلاس Form در پنجره ی Properties (تا پروپرتی AutoScrollMinSize) (به مدت 1:49 دقیقه و حجم 93 مگابایت)
قسمت 65 => WinForm قسمت 5 ، ادامه ی توضیح پروپرتی های کلاس Form در پنجره ی Properties (به مدت 1:52 دقیقه و حجم 113 مگابایت)
قسمت 66 => WinForm قسمت 6 ، رویدادهای دکمه ی HelpButton رویداد ، توضیح (بصورت کد نویسی) پروپرتی های کلاس Form (تا پروپرتی BackColor) (به مدت 1:47 دقیقه و حجم 83 مگابایت)
قسمت 67 => WinForm قسمت 7 ، توضیح (بصورت کد نویسی) پروپرتی های کلاس Form (تا پروپرتی Icon) (به مدت 1:40 دقیقه و حجم 91 مگابایت)
قسمت 68 => WinForm قسمت 8 ، ارث بری کلاسی از کلاس Component ، نوع داده ای پدر ولی شی از کلاس های کنترل (Form1) ، توجه به عدم نساختن شی ای از همون کلاس در متد سازنده ی خودِ همون کلاس، توضیح (بصورت کد نویسی) پروپرتی های کلاس Form (تا پروپرتی Parent) (به مدت 1:29 دقیقه و حجم 77 مگابایت)
قسمت 69 => WinForm قسمت 9 ، اضافه کردن کنترلی به کنترل کانتینر ها (tab control و ...) ، متد Control.Show() و Form.ShowDialog() و تفاوت شان برای فرم ، پروژه های چند فرمی ، تغییر اولین فرم باز شده در متد main ، نحوه ی دسترسی از درون فرم جدید به اعضای فرم قبلی (مثال هم با استفاده از Constractor و هم با پروپرتی Tag) (به مدت 1:52 دقیقه و حجم 112 مگابایت)
قسمت 70 => WinForm قسمت 10 ، توضیح (بصورت کد نویسی) پروپرتی ها و متدهای کلاس Form (به مدت 59 دقیقه و حجم 45 مگابایت)
قسمت 71 => WinForm قسمت 11 ، کلاس InputLanguage و CultureInfo (و تغییر زبان ویندوز) ، کنترل تایمر ، رویداد InputLanguageChanged برای فرم (به مدت 2:3 دقیقه و حجم 127 مگابایت)
قسمت 72 => WinForm قسمت 12 ، توضیح رویدادهای کلاس Form ، رویدادهای مربوط به Drag&Drop (به مدت 1:58 دقیقه و حجم 131 مگابایت)
قسمت 73 => WinForm قسمت 13 ، رویدادهای موس ، استفاده از متغییرهای رویدادیِ یک رویداد در رویداد دیگر (استفاده از پروپرتی location موس از رویداد MouseMove در رویداد Click) (به مدت 1:31 دقیقه و حجم 77 مگابایت)
قسمت 74 => نکته تکمیلی GC در قسمت 61 (متد GC.WaitForPendingFinalizers()) ، نحوه ی اجرای پروپرتی ها و رویدادها ، شخصی سازی کردن پروپرتی ها و رویدادها در هر کلاسی (override کردن این متدها در انواع کلاس فرزندان کلاس Form و فرزندان کلاس Button و ...) ، رویدادهای کیبرد ، نحوه ی کار کردن کلیدهای Tab و Up و Down و ... در رویدادهای کیبرد (به مدت 2:33 دقیقه و حجم 118 مگابایت)
قسمت 75 => مختصری درباره ی کلاس SendKey ، ساختن دو کنترل و اضافه کردنشان به فرم و ریختن هر دو شی از کنترل ها در یک متغییر و ... ، توضیح رویدادهای کلاس Form ، رویداد Scroll ، اجرای رویداد Scroll توسط چرخاندن موس (از درونِ رویداد MouseWheel) (به مدت 1:48 دقیقه و حجم 100 مگابایت)
قسمت 76 => رویدادهای درگ و دراپ قسمت 2 (درگ و دراپ کردن کنترلی مثل Button درون کنترل کانتینر دیگر) ، متدهای DoDragDrop و GetDataPresent و GetFormats ، جابجایی کنترل ها با درگ کردن کنترل ها (به مدت 2:4 دقیقه و حجم 98 مگابایت)
قسمت 77 => گرافیک قسمت 1 ، Transparent کردن (میزان Opacity) یک کنترل بجز کنترل فرم ، چند نکته ی جانبی برای مباحث گرافیک و مباحث دیگر ، توضیح مختصرکلاس Graphics (Graphics گرفتن از کنترل های مختلف) (به مدت 1:34 دقیقه و حجم 77 مگابایت)
قسمت 78 => گرافیک قسمت 2 ، متدهای رسمِ کلاس Graphics از رویدادهای دیگر (بجز رویداد paint) و مشکللات مربوط به این شیوه ، رویداد Paint و همچنین مشکلات این رویداد (به مدت 1:41 دقیقه و حجم 103 مگابایت)
قسمت 79 => گرافیک قسمت 3 ، ارائه ی روشی عمومی برای مشکلات مربوط به رسم در رویداد Paint ، رسم و آشنایی مختصر با کلاس bitmap ، متد Invalide ، using کردن Brush ها ، ادامه ی توضیح اعضای کلاس Graphics (به مدت 1:45 دقیقه و حجم 139 مگابایت)
قسمت 80 => گرافیک قسمت 4 ، اعضای مربوط به رسم در کلاس Graphics ، محدودیت در پروپرتی Clip و تابع Invalidate (به مدت 1:39 دقیقه و حجم 102 مگابایت)
قسمت 81 => گرافیک قسمت 5 ، ادامه ی توضیح کلاس Graphics _ متدهای ScaleTransform و Clear و CopyFromScreen در کلاس Graphics (رسمِ تصویرِ صفحه ی نمایش) (به مدت 1:32 دقیقه و حجم 80 مگابایت)
قسمت 82 => گرافیک قسمت 6 ، ادامه ی توضیح کلاس Graphics _ متدهای TranslateTransform و RotateTransform و ScaleTransform و TranslateClip (تغییر مبدا مختصات و چرخش و تغییر مقیاس در گرافیک رسم شده) (به مدت 1:34 دقیقه و حجم 75 مگابایت)
قسمت 83 => گرافیک قسمت 7 ، اعضای Rectangle ، ادامه ی توضیح کلاس Graphics (به مدت 1:51 دقیقه و حجم 88 مگابایت)
قسمت 84 => گرافیک قسمت 8 ، اعضای کلاس Bitmap (به مدت 1:6 دقیقه و حجم 87 مگابایت)
قسمت 85 => گرافیک قسمت 9 ، ادامه ی اعضای کلاس Bitmap _ عضو GetPixel و SetPixel (تغییرات در بیت مپ مثل تغییر رنگ ، تغییر روشنایی ، سیاه و سفید کردن ، معکوس کردن یا نگاتیو کردن رنگ ، حذف یک رنگ از بیت مپ) (به مدت 1:46 دقیقه و حجم 89 مگابایت)
قسمت 86 => گرافیک قسمت 10 ، کنترل ColorDialog ، اعضای متدهای استراکچر Color (گرفتن HSL) ، حذف یک رنگ به اندازه ی پر رنگ تر شدن یا کم رنگ تر شدن اش (به اندازه ی Saturation) (به مدت 1:57 دقیقه و حجم 98 مگابایت)
قسمت 87 => گرافیک قسمت 11 ، انتخاب بخشی از تصویر بیت مپ و feature کردن آن بخش (کاهش میزان alpha به ترتیبی که از لبه ی تصویر دور میشود) (به مدت 2:34 دقیقه و حجم 118 مگابایت)
قسمت 88 => گرافیک قسمت 12 ، ایجاد ثانیه ی دیجیتالی و همچنین رسم صفحه ی شطرنج و کاربرد علامت هم باقی مانده ، کلاس HslColor و نصب کمپوننت های diagram در ستاپ ویژال استودیو ، تغییر hue و saturation بیت مپ ، توضیح درباره ی الگوریتم شطرنجی کردن بیت مپ ، توضیح درباره ی کلاس های گرافیکی بیشتر (به مدت 2:35 دقیقه و حجم 180 مگابایت)
قسمت 89 => گرافیک قسمت 13 ، اعضای کلاس ImageAttributes ، براش ها (Brush ها) (به مدت 2:9 دقیقه و حجم 107 مگابایت)
قسمت 90 => گرافیک قسمت 14 ، ادامه ی Brush ها (به مدت 1:32 دقیقه و حجم 88 مگابایت)
قسمت 91 => گرافیک قسمت 15 ، pen ها ، کلاس GraphicsPath ، کلاس Cursor ، پروژه ی نقاشی (paint) (به مدت 2:10 دقیقه و حجم 110 مگابایت)
قسمت 92 => گرافیک قسمت 16 ، پروژه ی نقاشی (paint) قسمت 2، تغییر رنگ ، کنترل NumericUpDown ، تغییر سایز pen ، تغییر سایز برای بیت مپ و رسم ، دکمه ی color picker (به مدت 1:48 دقیقه و حجم 103 مگابایت)
قسمت 93 => گرافیک قسمت 17 ، پروژه ی نقاشی (paint) قسمت 3، ادامه ی color picker ، دکمه ی براش ( و ساخت براش در فتوشاپ) ، ست کردن رنگ دلخواه (به مدت 1:53 دقیقه و حجم 102 مگابایت)
قسمت 94 => گرافیک قسمت 18 ، پروژه ی نقاشی (paint) قسمت 4، ست کردن GradiantBrush و اندازه ی دلخواه برای براش ، دکمه ی پاک کن (به مدت 1:36 دقیقه و حجم 69 مگابایت)
قسمت 95 => گرافیک قسمت 19 ، پروژه ی نقاشی (paint) قسمت 5، ادامه ی دکمه ی پاک کن با میزان trancparency و اندازه ی دلخواه (به مدت 52 دقیقه و حجم 52 مگابایت)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
اگه کسی تاخیرِ فاحشی بین صدا و تصویر (بیش از 1.5 ثانیه تاخیر) در هر قسمتی دید ، اعلام کنه
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
میگم علاوه بر روند عادی آموزش ها ، یه سری آموزش دیگه از دل همین آموزش منتها خیلی خلاصه تر (برای کسایی که میخوان فقط کلیات را بدونن و یا مرور کنن و کلا وقت شون رو کمتر برای آموزش صرف کنن) درست کنم ، چطوره؟
منتها الان نمیشه . احتمالا اگه بشه ، بعد از اتمام آموزش ها میشه
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
گروه سروش برنامه نویسی سی شارپ ایجاد کردم که در زیر لینک شو میذارم . هر کس خواست ، عضو شه .

لینک گروه :
سروش
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
میخوام فایل ها را بصورت جداگانه ، توی سروش آپلود کنم
به نظرتون برای کاربر فرقی داره که بصورت فایل تصویری (mp4) آپلود کنم یا فایل فشرده (rar) ؟ فایل rar نیاز به اکسترکت داره ولی از طرفی چون recovery record دارن ، اگه مشکلی موقع دانلود پیش بیاد ، راحت بدون دانلود مجدد ، ریکاوری میشن و مهم تر اینکه چون حجم هر فایل برای آپلود در سروش ، 50 مگ بیشتر نباید باشه (و هر قسمت هم معمولا از 50 مگ بیشتر هه) ، برش فایل rar برام خیلی راحت تره
شما چطور راحت ترین؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام دوستان
با توجه به اینکه نام کانال قبلی، نامناسب بود ، کانال جدید دیگه ای به آدرس زیر ساختم که فایل های آموزش ، اونجا در سروش ، آپلود میشن
از تعویض کانال هم عذر خواهی میکنم .
کانال قبلی ، بعد از مدتی ، حذف میشه
با تشکر

--------

آدرس کانال :

دانلود فیلم آموزش کامل برنامه نویسی Visual Studio C#.Net
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد به دوستان
میگم قضیه ای که قبلا گفته بودم که خلاصه ای از قسمت ها را درست کنم.
تقریبا هر قسمتی که 2 ساعت باشه ، خلاصه اش 40 دقیقه میشه . یعنی معمولا میانگین خلاصه ها ، بین نیم ساعت تا یک ساعت میشه (بسته به حجم مطالب و زمان) .
بعد هم اینکه خلاصه در آوردن و تدوین اش ، خیلی بیشتر از چیزی که فکر میکردم ، وقت میبره .
اگه هم خلاصه درست کنم ، فقط قسمت های مهم رو این کار رو میکنم.


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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
در گروه برنامه نویسی ، پذیرای کاربران سروش در لینک زیر هستیم :

سروش

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

sapp.ir/csharptutorial

این کانال ، با شناسه ی csharptutorial@ هم در سروش ، در دسترس هست .
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
کنترل هایی که در دات نت هستن ، بصورت پیش فرض قابلیت شفاف سازی پشت کنترل ها را ندارن .
یه کلاسی بنام TransparentControl نوشتم که قابلیت شفاف سازی داره . بیت مپ هایی را دریافت میکنه و در زمان های مختلف ، رسم شون میکنه (پروپرتی از نوع بیت مپ DefaultBitmap ، در زمان استاندارد رسم میشه ؛ بیت مپ MouseEnterBitmap ، زمانی که موس روی این کنترل بیاد ، رسم میشه و بیت مپ MouseDownBitmap زمانی که روی کنترل ، کلیک چپ انجام بشه ، رسم میشه) . همچنین قابلیت رسم متن و همچنین قابلیت رسم متن همراه بیت مپ را داره.
این فایل کلاس را از لینک زیر میتونید دانلود کنید . مستنداتش بصورت فارسی ، توی اعضاش توضیح داده هست :

دانلود کلاس کنترل TransparentControl

** فقط برای ظهور حضرت ولی عصر ارواحنا له الفدا و برای حضرت فاطمه الزهرا (سلام الله علیها) و همچنین شفای تمام مریضای اسلام مخصوصا کودکان و به نیت اموات خودمون و خودتون و هر کسی که در این سهیم اند ، یه فاتحه بخونین ، ممنون میشم.

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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
یه نکته :
اینکه با تغییر مقدار یک متغییر (منظور از مقدار متغییر ، مقدار شی اون متغییر نیست . بلکه اگه نوع متغییرمون ، از نوعِ استراکچر باشه ، در این صورت ، منظور ، همون مقدار متغییر هست و اگه نوعش کلاس باشه ، در این صورت ، منظور ، مقدارِ اشاره گری هست (که این اشاره گر میتونه بسته به سیستم عامل ، 32 یا 64 بیت باشه) که به شیِ داده شده ، اشاره میکنه) ، همون متغییر ، ویرایش میشه و حافظه ی جدیدی براش در نظر گرفته نمیشه .

مثلا اگر مقدار :

کد:
int a = 3;

باشه ، و بعد مقدار متغییر a را تغییر بدیم :

کد:
a = 10;

(در اینجا چون a از نوع استراکچر هست) ، در همون آدرسی از حافظه که متغیر یا مقدار 3 قرار داشت ، در همون آدرس ، مقدار 3 ویرایش و مقدار 10 جایگزین اش میشه (یعنی حافظه ی جدید برای متغییر a در نظر گرفته نمیشه) .

یا مثلا اگه متغییری از نوع کلاس باشه :

کد:
string str = "text";

و بعد ، مقدار متغییر str را تغییر بدیم :

کد:
str = "salam";

در اینجا ، هر چند شی جدیدی برای "salam" در نظر گرفته میشه اما مقدار متغییر ، که بسته به نوعِ سیستم عامل ، میتونه اشاره گرِ 32 یا 64 بیت بوده باشه ، این اشاره گر ، در هر آدرسی از حافظه که قرار داشت ، همچنان قرار داره و فقط آدرسِ این اشاره گر ، به آدرس شی جدید (یعنی آدرس شی "salam") ، تغییر خواهد کرد .
 

the_king

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

مثلا اگر مقدار :

کد:
int a = 3;

باشه ، و بعد مقدار متغییر a را تغییر بدیم :

کد:
a = 10;

(در اینجا چون a از نوع استراکچر هست) ، در همون آدرسی از حافظه که متغیر یا مقدار 3 قرار داشت ، در همون آدرس ، مقدار 3 ویرایش و مقدار 10 جایگزین اش میشه (یعنی حافظه ی جدید برای متغییر a در نظر گرفته نمیشه) .

یا مثلا اگه متغییری از نوع کلاس باشه :

کد:
string str = "text";

و بعد ، مقدار متغییر str را تغییر بدیم :

کد:
str = "salam";

در اینجا ، هر چند شی جدیدی برای "salam" در نظر گرفته میشه اما مقدار متغییر ، که بسته به نوعِ سیستم عامل ، میتونه اشاره گرِ 32 یا 64 بیت بوده باشه ، این اشاره گر ، در هر آدرسی از حافظه که قرار داشت ، همچنان قرار داره و فقط آدرسِ این اشاره گر ، به آدرس شی جدید (یعنی آدرس شی "salam") ، تغییر خواهد کرد .
آدرس حافظه متغیر ممکنه ثابت نمونه و تغییر کنه، قبلا در موردش صحبت کردیم که GC ممکنه جابجاشون کنه بنا بر این اینکه بگیم چون a یک struct ئه و value type ئه پس آدرس حافظه اش تضمینی تغییر نخواهد کرد اشتباهه.
از طرف دیگه دارید مبحثی رو مطرح می کنید که مربوط به پیاده سازی زبان ئه، نه استفاده و آموزش زبان برنامه نویسی.
تفاوت value type ها و reference type ها برای برنامه نویس مفید خواهد بود، ولی بحث اشاره گر هایی که نه آنها را می بیند و نه بهشان دسترسی دارد و نه تاثیری روی آنها دارد و نه کارکرد آنها تاثیری روی برنامه اش دارد رو برای چه مطرح کنیم، مطالب مفید و آموزشی نیستند.

اینها مواردی است که نه قابل نمایش ئه و نه قابل بررسی. فرضا می گوییم این string اشاره گری دارد که حالا تغییر بکند یا نکند. اگر کسی بپرسد این اشاره گر کو، نشان بده که تغییر میکند یا نمی کنید، نمی توانید نشانش بدهید، مقدارش آدرس اش را نمی توانید بخوانید، حتی در کد unsafe هم نمی توانید برای string یا struct و object و ... اشاره گر تعریف کنید. جابجا شدنش هم برایتان ملموس نیست. ابدا متوجه نمی شوید که کی جابجا شد و چرا شد، برای کد شما تفاوتی ندارد که اشاره گری وجود دارد یا نه. برنامه نویس #C چرا باید اینها را بداند که اشاره گری در اون پشت هست یا نیست و تغییر میکند یا نمی کند؟ شما که دسترسی مستقیم به حافظه مدیریت شده ندارید. فرقی بحال کد #C نخواهد کرد. کاری با آن نخواهد داشت. عوض شدن و نشدن هم هیچ فرقی بحالش نخواهد کرد. اینها مباحث پیاده سازی یک زبان هستند، مثلا اینکه در ماشین مجازی NET. حافظه اشیاء جابجا می شوند یا نمی شوند.
ولی به کسی که از NET. استفاده می کند ربطی ندارد که در ماشین مجازی چطور پیاده سازی شده و جابجایی ای صورت میگیرد یا نه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آدرس حافظه متغیر ممکنه ثابت نمونه و تغییر کنه، قبلا در موردش صحبت کردیم که GC ممکنه جابجاشون کنه بنا بر این اینکه بگیم چون a یک struct ئه و value type ئه پس آدرس حافظه اش تضمینی تغییر نخواهد کرد اشتباهه.
از طرف دیگه دارید مبحثی رو مطرح می کنید که مربوط به پیاده سازی زبان ئه، نه استفاده و آموزش زبان برنامه نویسی.
تفاوت value type ها و reference type ها برای برنامه نویس مفید خواهد بود، ولی بحث اشاره گر هایی که نه آنها را می بیند و نه بهشان دسترسی دارد و نه تاثیری روی آنها دارد و نه کارکرد آنها تاثیری روی برنامه اش دارد رو برای چه مطرح کنیم، مطالب مفید و آموزشی نیستند.

اینها مواردی است که نه قابل نمایش ئه و نه قابل بررسی. فرضا می گوییم این string اشاره گری دارد که حالا تغییر بکند یا نکند. اگر کسی بپرسد این اشاره گر کو، نشان بده که تغییر میکند یا نمی کنید، نمی توانید نشانش بدهید، مقدارش آدرس اش را نمی توانید بخوانید، حتی در کد unsafe هم نمی توانید برای string یا struct و object و ... اشاره گر تعریف کنید. جابجا شدنش هم برایتان ملموس نیست. ابدا متوجه نمی شوید که کی جابجا شد و چرا شد، برای کد شما تفاوتی ندارد که اشاره گری وجود دارد یا نه. برنامه نویس #C چرا باید اینها را بداند که اشاره گری در اون پشت هست یا نیست و تغییر میکند یا نمی کند؟ شما که دسترسی مستقیم به حافظه مدیریت شده ندارید. فرقی بحال کد #C نخواهد کرد. کاری با آن نخواهد داشت. عوض شدن و نشدن هم هیچ فرقی بحالش نخواهد کرد. اینها مباحث پیاده سازی یک زبان هستند، مثلا اینکه در ماشین مجازی NET. حافظه اشیاء جابجا می شوند یا نمی شوند.
ولی به کسی که از NET. استفاده می کند ربطی ندارد که در ماشین مجازی چطور پیاده سازی شده و جابجایی ای صورت میگیرد یا نه.

سلام استاد.
خیلی ممنون از راهنمایی تون .
بله ، میدونم آدرس حافظه ی متغییر ، ممکنه در کدهای managed ثابت نمونه و تغییر کنه (قبلا گفته بودید) .
منظور من این بود که وقتی ما ، شی جدیدی به متغییری میدیم ، آدرس حافظه ی اشاره گر اش (یا اگه استراکچر هست ، آدرس حافظه ی استراکچرش) ، تغییر نمیکنه . که البته با سئوال تون که ازم پرسیدید که نشون بدم که تغییر میکنه یا نه ، فعلا جواب خاصی ندارم :)
میخواستم در جواب تون این رو بگم که مثلا وقتی دو متغییر از نوع int بنام های a و b داریم . اشاره گری بنامptr_1 داریم که به متغییر a اشاره میکنه و اشاره گری به اشاره گر ptr_1 داریم بنام ptrPtr_2 .
بعد از نوشتن این کدها ، در خط بعد ، اشاره گرِ ptr_1 را به متغییر b ، تغییر میدیم . من فکر میکردم ، در این صورت ، اگه اشاره گرِ ptrPtr_2 ، به مقدار b اشاره کنه ، پس یعنی حافظه ی جدیدی برای مقدار اشاره گر ptr_1 ، در نظر گرفته نمیشه حال اینکه ممکنه حافظه ی جدیدی براش در نظر گرفته بشه و آدرس حافظه ی جدیدش را در اشاره گرِ ptrPtr_2 ریخته باشه .

شما هم نمیدونین وقتی شی جدیدی میدیم ، آیا حافظه ی متغییر (حافظه ی اشاره یا در صورت استراکچر بودن ، حافظه ی استراکچرِ) جدیدی در نظر گرفته میشه یا نه؟
اینکه به ما مربوط میشه یا نمیشه ، خوب علم هه دیگه . قطعا توی ارتباط کدهای managed و unmanaged در سطوح بالاتر ، این علم ها کاربرد دارن .
خیلی ممنون .
 

the_king

مدیرکل انجمن
سلام استاد.
خیلی ممنون از راهنمایی تون .
بله ، میدونم آدرس حافظه ی متغییر ، ممکنه در کدهای managed ثابت نمونه و تغییر کنه (قبلا گفته بودید) .
منظور من این بود که وقتی ما ، شی جدیدی به متغییری میدیم ، آدرس حافظه ی اشاره گر اش (یا اگه استراکچر هست ، آدرس حافظه ی استراکچرش) ، تغییر نمیکنه . که البته با سئوال تون که ازم پرسیدید که نشون بدم که تغییر میکنه یا نه ، فعلا جواب خاصی ندارم :)
اشکال کار همینجا است، مطلبی نیست که بدردی بخوره. اگه کسی ندونه که اشاره گری هست یا ندونه که تغییر میکنه یا نمیکنه هیچ فرقی بحالش نمی کنه. علمی که منفعتی در اون نباشه دانستنش هم بیخوده.
میگیم هر متغیری رو یک فیل با خرطومش نگهداشته که وقتی روز میشه خرطومش رو میبره بالا و وقتی شب میشه خرطومش رو میاره پایین. حالا فیل ئه کو؟ هست دیگه، بدونید که فیل داره. خرطومش رو میشه ببینیم که بالا است یا پایین؟ نه دیگه ولی همینطوره که گفتم، دیده نمیشه. حالا این فیلم و خرطومش روی کدی که مینویسم چه تاثیری داره یا چه مواردی رو باید در موردش رعایت کنم؟ هیچی. بود و نبودش تاثیری نداره. همین فقط یک داستانه که باید بگم، جزو آموزشه. بدردتونم نمیخوره، ولی چون خوشم میاد میگمش.

میخواستم در جواب تون این رو بگم که مثلا وقتی دو متغییر از نوع int بنام های a و b داریم . اشاره گری بنامptr_1 داریم که به متغییر a اشاره میکنه و اشاره گری به اشاره گر ptr_1 داریم بنام ptrPtr_2 .
بعد از نوشتن این کدها ، در خط بعد ، اشاره گرِ ptr_1 را به متغییر b ، تغییر میدیم . من فکر میکردم ، در این صورت ، اگه اشاره گرِ ptrPtr_2 ، به مقدار b اشاره کنه ، پس یعنی حافظه ی جدیدی برای مقدار اشاره گر ptr_1 ، در نظر گرفته نمیشه حال اینکه ممکنه حافظه ی جدیدی براش در نظر گرفته بشه و آدرس حافظه ی جدیدش را در اشاره گرِ ptrPtr_2 ریخته باشه .
تا قسمتی که ptr_1 به b اشاره کنه رو متوجه میشم ولی بعدش رو متوجه نمیشم چی میگید. ptr_1 و ptr_2 مثل هر اشاره گر دیگری یک حافظه 32/64 بیتی دارند که مقدار عددی داخلش ذخیره شده. اینکه به چی اشاره کنند نه تاثیری رو حجم حافظه شون داره و نه تاثیری روی آدرس حافظه ای که بهش اشاره می کنند. ptr_1 قبلا به a اشاره می کرد، حالا به b اشاره می کنه، این نه تاثیری روی a داره و نه b و نه ptr_2. فقط مقدار ptr_1 تغییر میکنه. انگار int i = 5000 بشه i = 6000 .فقط همین.

شما هم نمیدونین وقتی شی جدیدی میدیم ، آیا حافظه ی متغییر (حافظه ی اشاره یا در صورت استراکچر بودن ، حافظه ی استراکچرِ) جدیدی در نظر گرفته میشه یا نه؟
صحبت همون فیل ئه و خرطومه است. ما در زبان #C اشاره گری برای این متغیر که میگید نداریم، وقتی چیزی وجود نداره و در زبان تعریف نشده، در مورد جابجا شدن چه چیزی بدونیم؟
فرض کنید حافظه قبلی باشه، یا فرض کنید حافظه جدید باشه. هر دو فرض به یک اندازه بی معنی هستند. الان این قضیه فیل و خرطومش چقدر علمی و مفید بود؟ این فرض شما هم همونقدر علمی و مفید میشه.

اینکه به ما مربوط میشه یا نمیشه ، خوب علم هه دیگه . قطعا توی ارتباط کدهای managed و unmanaged در سطوح بالاتر ، این علم ها کاربرد دارن .
خیلی ممنون .
خوب نمیشه دیگه. کجا کاربرد داره؟ میدونید که آدرس یک شیء یا ساختار struct رو نه میتوانید دریافت کنید و نه می توانید آدرسش رو به محیط unmanaged بفرستید.
یکطرف حافظه درون ماشین مجازی است، یک طرف حافظه سیستم عامل. این دو حافظه دو تا دنیای کاملا متفاوت هستند. این کجا، اون کجا.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
به نام خدا

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

دانلود C# Programming Tutorial - آموزش برنامه نویسی با سی شارپ به زبان فارسی

با تشکر از همه ی عزیزانی که در ساخت این آموزش کمک کردند مخصوصا استاد علی (در انجمن مجید آنلاین)

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

سلامی مجدد
علاوه بر دانلود فیلم های آموزش سی شارپ از سایت p30download ، همه ی 95 قسمت از فیلم ها را بصورت مجزا در کانال زیر در سروش آپلود شد و کسانی که مایل بودن میتونن دانلود کنن :


این کانال ، با شناسه ی @csharptutorial در سروش هم در دسترس هست .
همچنین فیلم ها در سایت مگا آپلود شده بود که لینکش قرار داده شد .

در صورت تمایل ، نظرات و پیشنهادات و سئوالات برنامه نویسی سی شارپ و کامپیوتر را میتونید در گروه سروش زیر طرح کنید :




*** بعد از استفاده از آموزش ، به نیت حضرت ولی عصر (عج) و برای اموات خودمون و خودتون ، یه فاتحه بگیرین ، ممنون میشم .

*** با تشکر ویژه از استادم (The King) که کمک بسیار زیادی در مطالب علمی آموزش بهم کردن . :rose:
 

جدیدترین ارسال ها

بالا