برنامه نویسی

شروع آموزش برنامه نویسی

توسط admin | گروه برنامه نویسی | 1403/08/02

نظرات 0

برنامه نویسی چیست

برنامه‌نویسی سی‌شارپ (C#) یک زبان برنامه‌نویسی مدرن، شیءگرا و چندمنظوره است که توسط مایکروسافت توسعه داده شده است. این زبان برای ساخت نرم‌افزارهای مختلف از جمله برنامه‌های تحت ویندوز، وب و موبایل استفاده می‌شود.

انجام سریع پروژه های برنامه نویسی 09131253620

معرفی سی‌شارپ

  • تاریخچه و توسعه: آغاز زبان سی‌شارپ در سال ۲۰۰۰ میلادی توسط مایکروسافت و معرفی آن در قالب پلتفرم .NET.

  • ویژگی‌ها:

    • زبان شیءگرا و تایپ ایمن

    • پشتیبانی از برنامه‌نویسی موازی

    • مدیریت حافظه خودکار (garbage collection)

    • سازگاری با ویندوز و پلتفرم‌های دیگر از طریق .NET Core

اصول و قواعد زبان

  • نحوه تعریف کلاس و شیء:

    کد csharp
  • public class Person {     public string Name { get; set; }     public int Age { get; set; }      public void Introduce() {         Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");     } } 
  • انواع داده‌ای و متغیرها: آشنایی با انواع داده‌ای مانند int، string، float و غیره.

  • ساختارهای کنترلی: شامل if-else، switch، حلقه‌ها (for، while و do-while).

کتابخانه‌ها و فریم‌ورک‌های مهم

  • .NET Framework و .NET Core: پلتفرم‌های اصلی برای توسعه برنامه‌های سی‌شارپ.

  • ASP.NET: فریم‌ورک برای توسعه برنامه‌های وب.

  • Xamarin: برای توسعه برنامه‌های موبایل.

نمونه‌هایی از کاربردهای واقعی

  • توسعه برنامه‌های کاربردی ویندوز

  • توسعه بازی‌ها با استفاده از Unity

  • توسعه برنامه‌های وب با استفاده از ASP.NET

منابع یادگیری بیشتر

  • کتاب‌ها:

    • "C# 9.0 in a Nutshell" by Joseph Albahari

    • "Pro C# 9.0 with .NET 5" by Andrew Troelsen

  • وب‌سایت‌ها و دوره‌های آنلاین:

    • Microsoft Learn

    • Pluralsight

    • Udemy

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

سی‌شارپ (C#) یک زبان برنامه‌نویسی مدرن، شیءگرا و تایپ ایمن است که توسط مایکروسافت توسعه داده شده است. ساختار زبان سی‌شارپ به گونه‌ای طراحی شده که برنامه‌نویسان می‌توانند به راحتی مفاهیم پیچیده را مدیریت کنند و کدهای قابل خواندن و نگهداری بنویسند.

ساختار زبان برنامه‌نویسی سی‌شارپ

تعریف و نحو کلی

سی‌شارپ یک زبان استاتیک تایپ است، به این معنی که نوع داده‌ها در زمان کامپایل بررسی می‌شوند. هر برنامه سی‌شارپ شامل کلاس‌ها، اعضای کلاس و متدها است. ساختار اصلی هر برنامه سی‌شارپ به صورت زیر است:

کد csharp
using System;
 
namespace HelloWorld {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello, World!");
}
}
}

در این برنامه، فضاهای نام (namespaces) برای سازماندهی کلاس‌ها و متدها استفاده می‌شوند. namespace بلوک‌های کد را منطقی و سازمان‌یافته نگه می‌دارد.

کلاس‌ها و اشیاء (Objects)

کلاس‌ها بلوک‌های اساسی ساختاری سی‌شارپ هستند و اشیاء نمونه‌هایی از این کلاس‌ها. کلاس‌ها می‌توانند شامل فیلدها، خواص (properties)، متدها و رویدادها (events) باشند.

کد csharp
public class Person {
private string name;
public int Age { get; set; }
 
public Person(string name, int age) {
this.name = name;
Age = age;
}
 
public void Speak() {
Console.WriteLine($"Hello, my name is {name} and I am {Age} years old.");
}
}

اینترفیس‌ها (Interfaces)

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

کد csharp
public interface IGreetable {
void Greet();
}
 
public class FriendlyPerson : IGreetable {
public void Greet() {
Console.WriteLine("Hi there! Nice to meet you!");
}
}

ارث‌بری (Inheritance)

سی‌شارپ از ارث‌بری (inheritance) برای ایجاد کلاس‌های جدید از کلاس‌های موجود استفاده می‌کند. این ویژگی باعث می‌شود کدهای مشترک به راحتی بین کلاس‌ها به اشتراک گذاشته شوند.

کد csharp
public class Animal {
public void Eat() {
Console.WriteLine("Eating...");
}
}
 
public class Dog : Animal {
public void Bark() {
Console.WriteLine("Barking...");
}
}

پلی‌مورفیسم (Polymorphism)

پلی‌مورفیسم اجازه می‌دهد متدهای مختلف با یک نام مشابه در کلاس‌های مختلف پیاده‌سازی شوند. این ویژگی از طریق متدهای مجازی (virtual methods) و اینترفیس‌ها امکان‌پذیر است.

csharp
public class Animal {
public virtual void Speak() {
Console.WriteLine("Animal sound");
}
}
 
public class Dog : Animal {
public override void Speak() {
Console.WriteLine("Woof!");
}
}

مدیریت حافظه و منابع

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

کد csharp
public class ResourceHolder : IDisposable {
public void Dispose() {
// Clean up resources here
}
}

نتیجه‌گیری

 

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

برای توسعه پروژه‌های C#، ابزارها و محیط‌های توسعه مختلفی وجود دارد که هرکدام ویژگی‌ها و امکانات خاص خود را دارند. این ابزارها کمک می‌کنند تا فرآیند توسعه سریع‌تر، کارآمدتر و ساده‌تر انجام شود.

ابزارها و محیط‌های توسعه برای C#

Visual Studio

Visual Studio محیط توسعه یکپارچه (IDE) بسیار قدرتمندی است که توسط مایکروسافت توسعه یافته و کامل‌ترین ابزار برای توسعه پروژه‌های C# به شمار می‌رود. ویژگی‌های اصلی آن عبارتند از:

  • پشتیبانی کامل از زبان‌های مختلف برنامه‌نویسی مانند C#، VB.NET و F#

  • اشکال‌زدایی (Debugging) قوی و پیشرفته

  • ابزارهای طراحی ویژوال برای توسعه برنامه‌های ویندوز، وب و موبایل

  • امکانات مدیریت نسخه‌ها و همکاری تیمی

Visual Studio Code

Visual Studio Code یک ویرایشگر کد منبع قدرتمند و سبک است که توسط مایکروسافت توسعه داده شده است. امکانات آن شامل:

  • افزونه‌های متعدد برای پشتیبانی از زبان‌های مختلف، از جمله C#

  • قابلیت‌های اشکال‌زدایی

  • یکپارچگی با سیستم‌های کنترل نسخه مانند Git

  • محیط کاربر پسند و قابل تنظیم

Rider

Rider یک IDE دیگر برای توسعه پروژه‌های C# است که توسط JetBrains ارائه می‌شود. ویژگی‌های بارز Rider عبارتند از:

  • اشکال‌زدایی پیشرفته

  • تحلیل کد و ابزارهای بازسازی (refactoring) قدرتمند

  • یکپارچگی با سیستم‌های کنترل نسخه

Xamarin

Xamarin یک ابزار توسعه برای ایجاد برنامه‌های موبایل است که از زبان C# استفاده می‌کند. با Xamarin، می‌توانید برنامه‌های بومی برای iOS و Android با استفاده از یک کد پایه مشترک بنویسید.

.NET CLI

.NET CLI (Command Line Interface) ابزاری است که به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌های .NET و C# را از طریق خط فرمان ایجاد، اجرا و مدیریت کنند. این ابزار برای اتوماسیون و اسکریپت‌نویسی بسیار مناسب است.

Unity

Unity یک موتور بازی‌سازی است که از C# برای توسعه بازی‌های دو بعدی و سه بعدی استفاده می‌کند. Unity یکی از محبوب‌ترین ابزارها برای توسعه‌دهندگان بازی است.

 

این ابزارها می‌توانند به شما در توسعه پروژه‌های C# کمک کنند و هرکدام با ویژگی‌ها و امکانات خاص خود، فرآیند توسعه را ساده‌تر و کارآمدتر می‌کنند. کدام یکی از این‌ها به نظرتان جذاب‌تر است یا تجربه‌ای با آن‌ها داشته‌اید؟

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

۱. منابع آموزشی

  • دوره‌های آنلاین: سایت‌هایی مثل Udemy، Coursera، و Pluralsight دوره‌های مبتدی تا پیشرفته را ارائه می‌دهند.

  • کتاب‌ها: کتاب‌هایی مثل "C# in Depth" نوشته Jon Skeet و "Head First C#" نوشته Andrew Stellman و Jennifer Greene.

۲. نصب محیط توسعه

  • Visual Studio: محیط توسعه کامل برای کدنویسی C#.

  • Visual Studio Code: ویرایشگر سبک و قابل تنظیم با افزونه‌های C#.

۳. یادگیری اصول اولیه

  • انواع داده‌ای و متغیرها: آشنایی با int، string، bool و غیره.

  • ساختارهای کنترلی: شرط‌ها (if-else)، حلقه‌ها (for، while).

  • کلاس‌ها و اشیاء: تعریف و استفاده از کلاس‌ها.

۴. تمرین‌های عملی

  • حل تمرینات کدنویسی در سایت‌هایی مثل LeetCode و HackerRank.

  • پروژه‌های کوچک مانند ساخت یک برنامه ماشین حساب یا مدیریت کتابخانه.

۵. منابع پیشرفته

  • مطالعه عمیق‌تر در زمینه‌های OOP، برنامه‌نویسی موازی، و طراحی الگوها (design patterns).

  • انجام پروژه‌های واقعی و استفاده از فریم‌ورک‌هایی مثل ASP.NET برای توسعه وب.

۶. مشارکت در انجمن‌ها

  • پیوستن به انجمن‌های برنامه‌نویسی و شرکت در تالارهای گفت‌وگو مثل Stack Overflow و Reddit.

 

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

در اینجا ۱۰ دستور اولیه برای شروع آورده شده است:

۱. دستور if (شرطی)

کد csharp
int number = 10;
if (number > 5) {
Console.WriteLine("Number is greater than 5");
}

خروجی:

 
Number is greater than 5 

۲. دستور else

کد csharp
int number = 3;
if (number > 5) {
Console.WriteLine("Number is greater than 5");
} else {
Console.WriteLine("Number is 5 or less");
}

خروجی:

 
Number is 5 or less 

۳. دستور else if

کد csharp
int number = 5;
if (number > 5) {
Console.WriteLine("Number is greater than 5");
} else if (number == 5) {
Console.WriteLine("Number is equal to 5");
} else {
Console.WriteLine("Number is less than 5");
}

خروجی:

 
Number is equal to 5 

۴. حلقه for

کد csharp
for (int i = 0; i < 5; i++) {
Console.WriteLine("Iteration: " + i);
}

خروجی:

 
Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4

۵. حلقه while

کد csharp
int i = 0;
while (i < 5) {
Console.WriteLine("Iteration: " + i);
i++;
}

خروجی:

 
Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4

۶. حلقه do-while

کد csharp
int i = 0;
do {
Console.WriteLine("Iteration: " + i);
i++;
} while (i < 5);

خروجی:

 
Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4

۷. دستور switch

کد csharp
int day = 3;
switch (day) {
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
default:
Console.WriteLine("Other day");
break;
}

خروجی:

 
Wednesday 

۸. متدها (توابع)

کد csharp
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
 
Greet("Alice");

خروجی:

 
Hello, Alice 

۹. آرایه‌ها

کد csharp
int[] numbers = {1, 2, 3, 4, 5};
foreach (int number in numbers) {
Console.WriteLine("Number: " + number);
}

خروجی:

 
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

۱۰. لیست‌ها

کد csharp
List<string> names = new List<string> {"Alice", "Bob", "Charlie"};
names.Add("Dave");
foreach (string name in names) {
Console.WriteLine("Name: " + name);
}

خروجی:

 
Name: Alice
Name: Bob
Name: Charlie
Name: Dave

 

این ده مورد می‌تواند نقطه شروع خوبی باشد.

 

۱۱. دستورات break

کد csharp
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // خروج از حلقه زمانی که i برابر 5 است
}
Console.WriteLine("Iteration: " + i);
}

خروجی:

 
Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4

۱۲. دستور continue

کد csharp
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // ادامه به تکرار بعدی بدون اجرای کدهای بعدی
}
Console.WriteLine("Iteration: " + i);
}

خروجی:

 
Iteration: 0
Iteration: 1
Iteration: 3
Iteration: 4

۱۳. تعریف متغیرها

کد csharp
int age = 25;
string name = "Alice";
bool isStudent = true;
 
Console.WriteLine($"Name: {name}, Age: {age}, Student: {isStudent}");

خروجی:

 
Name: Alice, Age: 25, Student: True 

۱۴. عملگرهای ریاضی

کد csharp
int a = 10;
int b = 3;
int sum = a + b;
int difference = a - b;
int product = a * b;
int quotient = a / b;
int remainder = a % b;
 
Console.WriteLine($"Sum: {sum}, Difference: {difference}, Product: {product}, Quotient: {quotient}, Remainder: {remainder}");

خروجی:

 
Sum: 13, Difference: 7, Product: 30, Quotient: 3, Remainder: 1 

۱۵. تبدیل نوع (Type Casting)

کد csharp
double x = 9.78;
int y = (int)x; // تبدیل ضمنی از double به int
 
Console.WriteLine($"Double: {x}, Integer: {y}");

خروجی:

 
Double: 9.78, Integer: 9 

۱۶. رشته‌ها (Strings)

کد csharp
string greeting = "Hello";
string name = "World";
string message = greeting + ", " + name + "!";
Console.WriteLine(message);

خروجی:

 
Hello, World! 

۱۷. رشته‌های چند خطی

کد csharp
string multiLineString = @"This is a
multi-line
string.";
Console.WriteLine(multiLineString);

خروجی:

 
This is a
multi-line
string.

۱۸. رشته‌های فرموله شده

کد csharp
string name = "Alice";
int age = 25;
string message = $"Name: {name}, Age: {age}";
Console.WriteLine(message);

خروجی:

 
Name: Alice, Age: 25 

۱۹. متدهای رشته‌ای

کد csharp
string phrase = "Hello World!";
string lowerCasePhrase = phrase.ToLower();
string upperCasePhrase = phrase.ToUpper();
bool containsWorld = phrase.Contains("World");
 
Console.WriteLine($"LowerCase: {lowerCasePhrase}, UpperCase: {upperCasePhrase}, Contains 'World': {containsWorld}");

خروجی:

 
LowerCase: hello world!, UpperCase: HELLO WORLD!, Contains 'World': True 

۲۰. تعریف و استفاده از آرایه‌ها

کد csharp
int[] numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;
 
foreach (int number in numbers) {
Console.WriteLine(number);
}

خروجی:

 
1
2
3
4
5

۲۱. متدهای آرایه‌ای

کد csharp
int[] numbers = {1, 2, 3, 4, 5};
Array.Reverse(numbers);
 
foreach (int number in numbers) {
Console.WriteLine(number);
}

خروجی:

 
5
4
3
2
1

۲۲. کار با تاریخ و زمان

کد csharp
DateTime now = DateTime.Now;
DateTime specificDate = new DateTime(2023, 10, 23);
 
Console.WriteLine($"Now: {now}, Specific Date: {specificDate}");

خروجی:

 
Now: [Current DateTime], Specific Date: 2023-10-23 00:00:00 

۲۳. قالب‌بندی تاریخ و زمان

کد csharp
DateTime now = DateTime.Now;
string formattedDate = now.ToString("yyyy-MM-dd HH:mm:ss");
 
Console.WriteLine(formattedDate);

خروجی:

 
[Current Date in yyyy-MM-dd HH:mm:ss format] 

۲۴. کار با لیست‌ها

کد csharp
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
numbers.Add(6);
numbers.Remove(3);
 
foreach (int number in numbers) {
Console.WriteLine(number);
}

خروجی:

 
1
2
4
5
6

۲۵. استفاده از واژه‌نامه‌ها (Dictionaries)

کد csharp
Dictionary<string, int> ages = new Dictionary<string, int> {
{"Alice", 25},
{"Bob", 30}
};
ages["Charlie"] = 35;
 
foreach (var entry in ages) {
Console.WriteLine($"{entry.Key}: {entry.Value}");
}

خروجی:

 
Alice: 25
Bob: 30
Charlie: 35

۲۶. متدهای بازگشتی (Recursion)

کد csharp
int Factorial(int n) {
if (n <= 1) {
return 1;
}
return n * Factorial(n - 1);
}
 
Console.WriteLine($"Factorial of 5: {Factorial(5)}");

خروجی:

 
Factorial of 5: 120 

۲۷. دستورات استفاده (using statements)

کد csharp
using (StreamWriter writer = new StreamWriter("test.txt")) {
writer.WriteLine("Hello, World!");
}

خروجی: فایل test.txt با محتوای "Hello, World!"

۲۸. مدیریت استثناها (Exception Handling)

کد csharp
try {
int result = 10 / 0;
} catch (DivideByZeroException ex) {
Console.WriteLine("Cannot divide by zero.");
}

خروجی:

 
Cannot divide by zero. 

۲۹. کلاس‌های جزئی (Partial Classes)

کد csharp
public partial class MyClass {
public void Method1() {
Console.WriteLine("Method1");
}
}
 
public partial class MyClass {
public void Method2() {
Console.WriteLine("Method2");
}
}
 
MyClass obj = new MyClass();
obj.Method1();
obj.Method2();

خروجی:

 
Method1
Method2

۳۰. برنامه‌نویسی ناهمزمان (Asynchronous Programming)

کد csharp
public async Task DoWorkAsync() {
await Task.Delay(1000);
Console.WriteLine("Work completed.");
}
await DoWorkAsync();

خروجی:

 
Work completed. 

دستورات سیستمی C#

دستورات سیستمی در سی‌شارپ به شما اجازه می‌دهند تا با سیستم‌عامل و دیگر منابع پایین‌سطح تعامل داشته باشید. این دستورات شامل تعامل با فایل‌ها و پوشه‌ها، دسترسی به اطلاعات سیستم، مدیریت فرآیندها، و استفاده از APIهای ویندوز می‌شوند. در اینجا چند مثال از دستورات سیستمی آورده شده است:

۱. خواندن و نوشتن فایل‌ها

کد csharp
using System.IO;
 
// نوشتن در فایل
File.WriteAllText("example.txt", "Hello, World!");
 
// خواندن از فایل
string content = File.ReadAllText("example.txt");
Console.WriteLine(content);

خروجی:

 
Hello, World! 

۲. مدیریت پوشه‌ها

کد csharp
using System.IO;
 
// ایجاد پوشه جدید
Directory.CreateDirectory("NewFolder");
 
// حذف پوشه
Directory.Delete("NewFolder");

۳. دریافت اطلاعات سیستم

کد csharp
using System;
 
string machineName = Environment.MachineName;
string osVersion = Environment.OSVersion.ToString();
int processorCount = Environment.ProcessorCount;
 
Console.WriteLine($"Machine Name: {machineName}, OS Version: {osVersion}, Processor Count: {processorCount}");

خروجی:

 
Machine Name: [Your Machine Name], OS Version: [Your OS Version], Processor Count: [Processor Count] 

۴. مدیریت فرآیندها

کد csharp
using System.Diagnostics;
 
// راه‌اندازی یک فرآیند جدید
Process.Start("notepad.exe");
 
// بستن فرآیند با نام
foreach (var process in Process.GetProcessesByName("notepad")) {
process.Kill();
}

۵. استفاده از APIهای ویندوز

کد csharp
using System;
using System.Runtime.InteropServices;
 
class Program {
[DllImport("user32.dll")]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
 
static void Main() {
MessageBox(IntPtr.Zero, "Hello, World!", "Hello", 0);
}
}

خروجی:

  • یک پنجره پیغام با محتوای "Hello, World!" باز می‌شود.

۶. خواندن و نوشتن در رجیستری

کد csharp
using Microsoft.Win32;
 
// نوشتن در رجیستری
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\MyApp");
key.SetValue("Username", "Alice");
key.Close();
 
// خواندن از رجیستری
key = Registry.CurrentUser.OpenSubKey(@"Software\MyApp");
string username = (string)key.GetValue("Username");
key.Close();
 
Console.WriteLine($"Username: {username}");

خروجی:

 
Username: Alice 

۷. استفاده از متغیرهای محیطی

کد csharp
using System;
 
string path = Environment.GetEnvironmentVariable("PATH");
Console.WriteLine(path);

۸. نظارت بر تغییرات فایل‌ها

کد csharp
using System;
using System.IO;
 
class Program {
static void Main() {
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\Your\Path\Here";
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.txt";
watcher.Changed += OnChanged;
watcher.EnableRaisingEvents = true;
 
Console.WriteLine("Press enter to exit.");
Console.ReadLine();
}
 
private static void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine($"File: {e.FullPath} has been modified.");
}
}

خروجی:

  • هرگاه فایل متنی در مسیر مشخص‌شده تغییر کند، پیغامی در کنسول نمایش داده می‌شود.

۹. ارسال درخواست‌های HTTP

کد csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
 
class Program {
static async Task Main() {
using (HttpClient client = new HttpClient()) {
string response = await client.GetStringAsync("https://api.github.com");
Console.WriteLine(response);
}
}
}

۱۰. مدیریت حافظه

کد csharp
using System;
using System.Runtime.InteropServices;
 
class Program {
[DllImport("kernel32.dll")]
public static extern void GetSystemTime(ref SYSTEMTIME lpSystemTime);
 
public struct SYSTEMTIME {
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
 
static void Main() {
SYSTEMTIME stime = new SYSTEMTIME();
GetSystemTime(ref stime);
Console.WriteLine($"System time: {stime.wHour}:{stime.wMinute}:{stime.wSecond}");
}
}

خروجی:

 
System time: [Current Time] 

 

این دستورات به شما کمک می‌کنند تا بتوانید با سیستم‌عامل و منابع آن به طور مستقیم تعامل کنید و عملیات‌های سطح پایین را انجام دهید. برای استفاده از اسمبلی‌ها در سی‌شارپ، می‌توانید از دستورات سطح پایین و کتابخانه‌های مربوطه استفاده کنید. اسمبلی‌ها معمولاً به‌صورت مستقیم با سخت‌افزار در تعامل هستند و شامل کدهای سطح پایین‌تری مانند کدهای اسمبلی و توابع API ویندوز می‌شوند. در سی‌شارپ، این کار از طریق پشتیبانی از Interoperability و PInvoke (Platform Invocation) انجام می‌شود.

مثال کاربرد PInvoke

در این مثال، از تابع MessageBox در user32.dll ویندوز استفاده می‌کنیم:

کد csharp
using System;
using System.Runtime.InteropServices;
 
class Program {
// اعلان تابع PInvoke
[DllImport("user32.dll")]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
 
static void Main() {
// استفاده از تابع MessageBox
MessageBox(IntPtr.Zero, "Hello, World!", "Hello", 0);
}
}

توضیحات:

  • DllImport یک ویژگی است که به شما اجازه می‌دهد تا تابعی از یک DLL (Dynamic Link Library) خارجی را وارد کنید.

  • MessageBox تابعی است که از user32.dll ویندوز وارد شده و برای نمایش یک پیام استفاده می‌شود.

دستورات سطح پایین اسمبلی

برای استفاده از کدهای سطح پایین اسمبلی، می‌توانید از دستور unsafe و fixed در سی‌شارپ استفاده کنید:

کد csharp
using System;
 
class Program {
unsafe static void Main() {
int value = 10;
int* pValue = &value;
 
Console.WriteLine("Value: " + value);
Console.WriteLine("Address: " + (int)pValue);
}
}

توضیحات:

  • unsafe اجازه می‌دهد که کدهای غیرایمن (که مستقیماً با حافظه کار می‌کنند) نوشته شوند.

  • int* pValue یک اشاره‌گر به متغیر value است که آدرس حافظه‌ی آن را ذخیره می‌کند.

 

استفاده از دستورات و روش‌های فوق به شما امکان می‌دهد تا به کارهای سطح پایین‌تر و بهینه‌تر در سی‌شارپ بپردازید. 

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

مثال ۱: رسم یک دایره ساده با استفاده از GDI+

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class CircleForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
g.FillEllipse(Brushes.Blue, 50, 50, 100, 100);
}
static void Main() {
Application.Run(new CircleForm());
}
}

توضیحات: این مثال یک دایره آبی رنگ را در پنجره‌ای رسم می‌کند.

مثال ۲: رسم یک مستطیل با استفاده از GDI+

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class RectangleForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
g.FillRectangle(Brushes.Green, 50, 50, 200, 100);
}
static void Main() {
Application.Run(new RectangleForm());
}
}

توضیحات: این مثال یک مستطیل سبز رنگ را در پنجره‌ای رسم می‌کند.

مثال ۳: رسم خطوط با استفاده از GDI+

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class LineForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
g.DrawLine(Pens.Red, 10, 10, 200, 200);
}
static void Main() {
Application.Run(new LineForm());
}
}

توضیحات: این مثال یک خط قرمز رنگ را از نقطه‌ای به نقطه‌ی دیگر رسم می‌کند.

مثال ۴: استفاده از قلم‌های سفارشی

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class CustomPenForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Blue, 5);
g.DrawEllipse(pen, 50, 50, 100, 100);
}
static void Main() {
Application.Run(new CustomPenForm());
}
}

توضیحات: این مثال از یک قلم سفارشی آبی رنگ با ضخامت ۵ پیکسل برای رسم یک دایره استفاده می‌کند.

مثال ۵: رسم چندضلعی

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class PolygonForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
Point[] points = { new Point(50, 50), new Point(100, 25), new Point(150, 50), new Point(100, 100) };
g.FillPolygon(Brushes.Yellow, points);
}
static void Main() {
Application.Run(new PolygonForm());
}
}

توضیحات: این مثال یک چندضلعی زرد رنگ را در پنجره‌ای رسم می‌کند.

مثال ۶: رسم متن

کد سی شارپ
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class TextForm : Form {
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
Font font = new Font("Arial", 24);
g.DrawString("Hello, World!", font, Brushes.Black, 50, 50);
}
static void Main() {
Application.Run(new TextForm());
}
}

توضیحات: این مثال متن "Hello, World!" را با استفاده از فونت Arial و اندازه ۲۴ پیکسل رسم می‌کند.

مثال ۷: استفاده از تصاویر

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class ImageForm : Form {
private Image image;
public ImageForm() {
image = Image.FromFile("path_to_your_image.jpg");
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
g.DrawImage(image, 50, 50);
}
static void Main() {
Application.Run(new ImageForm());
}
}

توضیحات: این مثال یک تصویر را از فایل خوانده و در پنجره نمایش می‌دهد.

مثال ۸: استفاده از DirectX

کد csharp
using System;
using SharpDX;
using SharpDX.Direct3D11;
using SharpDX.DXGI;
using SharpDX.Windows;
using Device = SharpDX.Direct3D11.Device;
 
public class DirectXForm : RenderForm {
private Device device;
private SwapChain swapChain;
public DirectXForm() : base("DirectX Example") {
InitializeDirectX();
}
private void InitializeDirectX() {
var swapChainDesc = new SwapChainDescription {
BufferCount = 1,
ModeDescription = new ModeDescription(800, 600, new Rational(60, 1), Format.R8G8B8A8_UNorm),
Usage = Usage.RenderTargetOutput,
OutputHandle = this.Handle,
SampleDescription = new SampleDescription(1, 0),
IsWindowed = true
};
Device.CreateWithSwapChain(SharpDX.Direct3D.DriverType.Hardware, DeviceCreationFlags.None, swapChainDesc, out device, out swapChain);
}
protected override void Dispose(bool disposing) {
swapChain.Dispose();
device.Dispose();
base.Dispose(disposing);
}
static void Main() {
using (var form = new DirectXForm()) {
RenderLoop.Run(form, () => { });
}
}
}

توضیحات: این مثال یک پنجره DirectX ساده ایجاد می‌کند. برای اجرا به کتابخانه‌های SharpDX نیاز دارید.

مثال ۹: استفاده از OpenGL با OpenTK

کد csharp
using System;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
 
class Program : GameWindow {
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
GL.ClearColor(Color4.CornflowerBlue);
}
 
protected override void OnRenderFrame(FrameEventArgs e) {
base.OnRenderFrame(e);
GL.Clear(ClearBufferMask.ColorBufferBit);
SwapBuffers();
}
 
static void Main() {
using (var program = new Program()) {
program.Run(60);
}
}
}

توضیحات: این مثال یک پنجره OpenGL ساده ایجاد می‌کند که رنگ پس‌زمینه‌ی آن CornflowerBlue است. برای اجرا به کتابخانه‌های OpenTK نیاز دارید.

مثال ۱۰: انیمیشن ساده با GDI+

کد csharp
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
 
public class AnimationForm : Form {
private int x = 0;
private Timer timer;
 
public AnimationForm() {
this.DoubleBuffered = true;
timer = new Timer();
timer.Interval = 16;
timer.Tick += UpdateFrame;
timer.Start();
}
 
private void UpdateFrame(object sender, EventArgs e) {
x += 5;
if (x > this.ClientSize.Width) {
x = 0;
}
this.Invalidate();
}
 
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
Graphics g = e.Graphics;
g.FillEllipse(Brushes.Red, x, 50, 50, 50);
}
 
static void Main() {
Application.Run(new AnimationForm());
}
}

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

 

این ده مثال، تنوعی از گرافیک کامپیوتری در سی‌شارپ را پوشش می‌دهد، از استفاده‌های پایه‌ای GDI+ گرفته تا کاربردهای پیچیده‌تر OpenGL و DirectX. با این نمونه‌ها می‌توانید به آسانی مفاهیم مختلف گرافیک کامپیوتری را در سی‌شارپ یاد بگیرید و به کار ببرید.

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر