eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
126 دنبال‌کننده
168 عکس
38 ویدیو
375 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
14 در سی‌شارپ، کلمه کلیدی public یکی از دستورات دسترسی (Access Modifiers) است که برای تعیین سطح دسترسی اعضای کلاس‌ها، متدها، و متغیرها استفاده می‌شود. وقتی یک عضو با کلمه کلیدی public تعریف می‌شود، آن عضو از هر جایی در برنامه قابل دسترسی است. مثال‌های استفاده از publicکلاس‌ها و متدهادر اینجا یک مثال از تعریف یک کلاس و متد public آورده شده است: public class Person { public string Name { get; set; } public void PrintName() { Console.WriteLine("Name: " + Name); } } در این مثال: - کلاس Person به صورت public تعریف شده است، بنابراین از هر جایی در برنامه قابل دسترسی است. - متغیر Name و متد PrintName نیز به صورت public تعریف شده‌اند، بنابراین می‌توان از هر جایی در برنامه به آن‌ها دسترسی داشت. استفاده از کلاس و متد publicدر اینجا نحوه استفاده از کلاس و متد public آورده شده است: class Program { static void Main(string[] args) { Person person = new Person(); person.Name = "John Doe"; person.PrintName(); } } در این مثال: - یک نمونه از کلاس Person ایجاد شده است. - متغیر Name تنظیم شده و متد PrintName فراخوانی شده است. دستورات دسترسی دیگرعلاوه بر public، دستورات دسترسی دیگری نیز وجود دارند که سطح دسترسی متفاوتی را تعیین می‌کنند: یک- private: فقط از داخل همان کلاس قابل دسترسی است. دو- protected: از داخل همان کلاس و کلاس‌های مشتق شده قابل دسترسی است. سه- internal: فقط از داخل همان اسمبلی (Assembly) قابل دسترسی است. چهار- protected internal: از داخل همان اسمبلی و کلاس‌های مشتق شده قابل دسترسی است. پنج- private protected: از داخل همان کلاس و کلاس‌های مشتق شده در همان اسمبلی قابل دسترسی است.
15 برای ساخت یک ماشین حساب ساده در سی شارپ که کاربر بتواند دو عدد وارد کند و عملگرهای جمع، تفریق، ضرب و تقسیم را انتخاب کند، می‌توانید از کد زیر استفاده کنید: using System; namespace CalculatorApp { class Program { static void Main(string[] args) { Console.WriteLine("Enter the first number:"); double num1 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Enter the second number:"); double num2 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Enter an operator (+, -, *, /):"); char op = Console.ReadLine()[0]; double result = 0; switch (op) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': if (num2 != 0) { result = num1 / num2; } else { Console.WriteLine("Cannot divide by zero."); return; } break; default: Console.WriteLine("Invalid operator."); return; } Console.WriteLine("Result: " + result); Console.ReadKey(); } } } در این برنامه، ابتدا از کاربر خواسته می‌شود که دو عدد و یک عملگر را وارد کند. سپس با استفاده از یک ساختار switch، عملیات مورد نظر انجام شده و نتیجه به کاربر نمایش داده می‌شود.
16 برای ساخت یک ماشین حساب با استفاده از توابع در سی شارپ، می‌توانید از کد زیر استفاده کنید: using System; namespace CalculatorApp { class Program { static void Main(string[] args) { Console.WriteLine("Enter the first number:"); double num1 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Enter the second number:"); double num2 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Enter an operator (+, -, *, /):"); char op = Console.ReadLine()[0]; double result = Calculate(num1, num2, op); if (!double.IsNaN(result)) { Console.WriteLine("Result: " + result); } Console.ReadKey(); } static double Calculate(double a, double b, char op) { switch (op) { case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': if (b != 0) { return a / b; } else { Console.WriteLine("Cannot divide by zero."); return double.NaN; } default: Console.WriteLine("Invalid operator."); return double.NaN; } } } } در این برنامه، تابع Calculate برای انجام عملیات ریاضی استفاده می‌شود. این تابع سه پارامتر a، b و op را می‌گیرد و بر اساس عملگر op، عملیات مناسب را انجام می‌دهد و نتیجه را برمی‌گرداند.
17 static void Main(string[] args) { int k; while(true) { Console.Write(" \n1=salam 2=Khodahafrz 3=exit "); k = Convert.ToInt32(Console.ReadLine()); switch(k){ case 1: Console.Write("\nSalam\n"); break; case 2: Console.Write("\nKhodahafez\n"); break; case 3: return; } } ساخت منو و وقتی return را بزنید از حلقه خارج می شوید و Console.ReadKey(); لازم نیست بنویسید
18 توابع هم‌نام یا Overloading در سی‌شارپ به شما این امکان را می‌دهند که چندین تابع با نام یکسان اما با پارامترهای متفاوت تعریف کنید. این قابلیت به شما اجازه می‌دهد تا توابعی با رفتارهای مختلف اما با یک نام مشترک داشته باشید. برای مثال، می‌توانید یک تابع Sum داشته باشید که دو عدد صحیح را جمع می‌کند و یک تابع دیگر با همان نام که سه عدد صحیح را جمع می‌کند. در زیر یک مثال ساده از توابع هم‌نام در سی‌شارپ آورده شده است: using System; namespace OverloadingExample { class Program { static void Main(string[] args) { Console.WriteLine(Sum(5, 10)); // خروجی: 15 Console.WriteLine(Sum(5, 10, 15)); // خروجی: 30 Console.ReadKey(); } static int Sum(int a, int b) { return a + b; } static int Sum(int a, int b, int c) { return a + b + c; } } } در این مثال، دو تابع Sum تعریف شده‌اند که یکی دو پارامتر و دیگری سه پارامتر می‌پذیرد. هنگام فراخوانی تابع، کامپایلر بر اساس تعداد و نوع پارامترها تصمیم می‌گیرد که کدام تابع را اجرا کند.
19 توابع بازگشتی (Recursive Functions) توابعی هستند که خودشان را فراخوانی می‌کنند. این نوع توابع برای حل مسائل پیچیده با تقسیم آن‌ها به زیرمسائل ساده‌تر بسیار مفید هستند. یکی از معروف‌ترین مثال‌های توابع بازگشتی، محاسبه فاکتوریل یک عدد است. در زیر یک مثال ساده از تابع بازگشتی برای محاسبه فاکتوریل در سی‌شارپ آورده شده است: using System; namespace RecursiveExample { class Program { static void Main(string[] args) { int number = 5; Console.WriteLine($"Factorial of {number} is {Factorial(number)}"); Console.ReadKey(); } static int Factorial(int n) { if (n <= 1) return 1; else return n * Factorial(n - 1); } } } در این مثال، تابع Factorial خودش را فراخوانی می‌کند تا زمانی که مقدار n به 1 یا کمتر برسد. این فرآیند بازگشتی ادامه می‌یابد تا زمانی که شرط پایان (base case) برقرار شود.
20 استفاده از توابع بازگشتی به جای حلقه‌ها در برنامه‌نویسی می‌تواند در برخی موارد مفید باشد، به ویژه زمانی که مسئله به طور طبیعی به صورت بازگشتی تعریف می‌شود. برای مثال، مسائل مربوط به درخت‌ها و گراف‌ها اغلب با استفاده از توابع بازگشتی ساده‌تر حل می‌شوند. در زیر یک مثال از استفاده از تابع بازگشتی برای محاسبه مجموع اعداد یک آرایه آورده شده است: using System; namespace RecursiveSum { class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 3, 4, 5 }; Console.WriteLine($"Sum of array: {Sum(numbers, numbers.Length)}"); Console.ReadKey(); } static int Sum(int[] arr, int n) { if (n <= 0) return 0; else return arr[n - 1] + Sum(arr, n - 1); } } } در این مثال، تابع Sum به صورت بازگشتی مجموع اعداد آرایه را محاسبه می‌کند. اگر طول آرایه صفر باشد، تابع مقدار 0 را برمی‌گرداند. در غیر این صورت، آخرین عنصر آرایه را به مجموع بازگشتی بقیه عناصر اضافه می‌کند. استفاده از توابع بازگشتی می‌تواند کد را خواناتر و ساده‌تر کند، اما باید به مدیریت حافظه و جلوگیری از بازگشت‌های بی‌نهایت توجه داشت.
21 در اینجا یک مثال دیگر از استفاده از توابع بازگشتی برای حل مسئله فیبوناچی آورده شده است. دنباله فیبوناچی به این صورت است که هر عدد برابر با مجموع دو عدد قبلی خود است. به عنوان مثال، دنباله فیبوناچی به این صورت شروع می‌شود: 0, 1, 1, 2, 3, 5, 8, ... در زیر یک مثال از تابع بازگشتی برای محاسبه عدد فیبوناچی آورده شده است: using System; namespace FibonacciExample { class Program { static void Main(string[] args) { int n = 10; Console.WriteLine($"Fibonacci of {n} is {Fibonacci(n)}"); Console.ReadKey(); } static int Fibonacci(int n) { if (n <= 1) return n; else return Fibonacci(n - 1) + Fibonacci(n - 2); } } } در این مثال، تابع Fibonacci به صورت بازگشتی دو مقدار قبلی دنباله را محاسبه می‌کند و آن‌ها را با هم جمع می‌کند تا مقدار فعلی را به دست آورد. اگر n کمتر یا مساوی 1 باشد، تابع مقدار n را برمی‌گرداند که شرط پایان (base case) است.
22 کلمه کلیدی ref در سی‌شارپ برای ارسال پارامترها به صورت ارجاعی به متدها استفاده می‌شود. این به این معناست که هر تغییری که در پارامتر داخل متد انجام شود، در متغیر اصلی خارج از متد نیز اعمال می‌شود. این قابلیت زمانی مفید است که بخواهید متغیری را درون یک متد تغییر دهید و این تغییرات در متغیر اصلی نیز منعکس شود. مثال زیر را در نظر بگیرید: using System; namespace RefKeywordExample { class Program { static void Main(string[] args) { int number = 10; Console.WriteLine("Before: " + number); // خروجی: Before: 10 ModifyNumber(ref number); Console.WriteLine("After: " + number); // خروجی: After: 20 Console.ReadKey(); } static void ModifyNumber(ref int num) { num = 20; } } } در این مثال، متغیر number با استفاده از کلمه کلیدی ref به متد ModifyNumber ارسال می‌شود. هر تغییری که درون این متد روی num انجام شود، در متغیر اصلی number نیز اعمال می‌شود.
23 کلمه کلیدی out در سی‌شارپ برای ارسال پارامترها به صورت ارجاعی به متدها استفاده می‌شود، با این تفاوت که پارامترهای out باید درون متد مقداردهی شوند. این قابلیت زمانی مفید است که بخواهید یک متغیر بدون مقدار اولیه را به متد ارسال کنید و درون متد به آن مقدار بدهید. مثال زیر را در نظر بگیرید: using System; namespace OutKeywordExample { class Program { static void Main(string[] args) { int result; CalculateArea(5, 10, out result); Console.WriteLine("Area: " + result); // خروجی: Area: 50 Console.ReadKey(); } static void CalculateArea(int length, int width, out int area) { area = length * width; } } } در این مثال، متغیر result بدون مقدار اولیه به متد CalculateArea ارسال می‌شود. درون این متد، مقدار area محاسبه و به result اختصاص داده می‌شود.
24 در سی‌شارپ، enum یا شمارش (Enumeration) راهی برای تعریف مجموعه‌ای از مقادیر ثابت است که می‌توانند به یک متغیر اختصاص داده شوند. این مقادیر معمولاً نام‌هایی هستند که به صورت عددی ذخیره می‌شوند. برای تعریف یک enum، از کلمه کلیدی enum استفاده می‌کنیم. به عنوان مثال: enum Direction { North, East, South, West } در این مثال، Direction یک enum است که چهار مقدار North، East، South و West را تعریف می‌کند. به صورت پیش‌فرض، مقادیر این enum از 0 شروع می‌شوند و به ترتیب افزایش می‌یابند، یعنی North برابر 0، East برابر 1، South برابر 2 و West برابر 3 است. همچنین می‌توانید مقادیر پیش‌فرض را تغییر دهید: enum Direction { North = 3, East = 5, South = 7, West = 9 } در این حالت، مقادیر به ترتیب 3، 5، 7 و 9 خواهند بود.
25 در اینجا یک مثال ساده از استفاده enum در یک برنامه سی‌شارپ آورده شده است. این برنامه جهت حرکت را از کاربر می‌گیرد و بر اساس مقدار enum، پیامی را نمایش می‌دهد: using System; enum Direction { North, East, South, West } class Program { static void Main() { Console.WriteLine("Enter a direction (North, East, South, West):"); string input = Console.ReadLine(); Direction direction; if (Enum.TryParse(input, true, out direction)) { switch (direction) { case Direction.North: Console.WriteLine("You are heading North."); break; case Direction.East: Console.WriteLine("You are heading East."); break; case Direction.South: Console.WriteLine("You are heading South."); break; case Direction.West: Console.WriteLine("You are heading West."); break; default: Console.WriteLine("Unknown direction."); break; } } else { Console.WriteLine("Invalid direction entered."); Console.ReadKey(); } } } در این مثال: - یک enum به نام Direction تعریف شده است که چهار مقدار North، East، South و West دارد. - برنامه از کاربر یک جهت می‌گیرد و آن را به یک مقدار enum تبدیل می‌کند. - بر اساس مقدار enum، یک پیام مناسب نمایش داده می‌شود. این برنامه به شما کمک می‌کند تا بفهمید چگونه می‌توانید از enum برای مدیریت مجموعه‌ای از مقادیر ثابت در برنامه‌های خود استفاده کنید.