201 lines
12 KiB
Markdown
201 lines
12 KiB
Markdown
---
|
||
title: The C Programming Language
|
||
localeTitle: لغة البرمجة C
|
||
---
|
||
## مبادئ
|
||
|
||
* اقامة
|
||
* برنامجك الأول C #
|
||
* أنواع ومتغيرات
|
||
* بيانات التحكم في التدفق
|
||
* العاملين
|
||
* سلاسل
|
||
* الفصول ، الكائنات ، الواجهة والطرق الرئيسية
|
||
* الحقول والخصائص
|
||
* نطاق ومعدلات إمكانية الوصول
|
||
* التعامل مع الاستثناءات
|
||
|
||
## متوسط
|
||
|
||
* الأدوية
|
||
* الأحداث ، المندوبين وتعديلات لامدا
|
||
* إطار مجموعة
|
||
* LINQ
|
||
|
||
## المتقدمة
|
||
|
||
* برمجة غير متزامنة (Async and Await)
|
||
* مكتبة المهام المتوازية
|
||
|
||
## ما هو الجديد في C # 6
|
||
|
||
* Null-Conditional Operator
|
||
* Auto-Initializers
|
||
* تعبير Nameof
|
||
* تعبير وظائف بودي وخصائص
|
||
* ميزات أخرى
|
||
|
||
## المبادئ الشيئية (OOP)
|
||
|
||
* التغليف
|
||
* التجريد
|
||
* ميراث
|
||
* تعدد الأشكال
|
||
|
||
## المبادئ الصلبة
|
||
|
||
* مبدأ المسؤولية الواحدة
|
||
* مفتوح المبدأ مغلق
|
||
* مبدأ استبدال Liskov
|
||
* مبدأ الفصل بين الواجهة
|
||
* مبدأ الانقلاب التبعية
|
||
|
||
## C # Best practices، Pattern Designs & Test Driven Development (TDD)
|
||
|
||
## اقامة
|
||
|
||
[LinqPad](http://www.linqpad.net/) عبارة عن [لوحة شاشة](http://www.linqpad.net/) NET لاختبار سريعا مقتطفات C # [code.The](http://www.linqpad.net/) الإصدار القياسي مجاني وأداة مثالية للمبتدئين لتنفيذ العبارات والتعبيرات والبرامج اللغوية.
|
||
|
||
بدلاً من ذلك ، يمكنك أيضًا تنزيل [Visual Studio Community 2015](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) وهو [IDE قابل](https://en.wikipedia.org/wiki/Integrated_development_environment) للتوسعة يستخدمه معظم المتخصصين لإنشاء تطبيقات المؤسسة.
|
||
|
||
## برنامجك الأول C #
|
||
|
||
`//this is the single line comment
|
||
|
||
/** This is multiline comment,
|
||
compiler ignores any code inside comment blocks.
|
||
**/
|
||
|
||
//This is the namespace, part of the standard .NET Framework Class Library
|
||
using System;
|
||
// namespace defines the scope of related objects into packages
|
||
namespace Learning.CSharp
|
||
{
|
||
// name of the class, should be same as of .cs file
|
||
public class Program
|
||
{
|
||
//entry point method for console applications
|
||
public static void Main()
|
||
{
|
||
//print lines on console
|
||
Console.WriteLine("Hello, World!");
|
||
//Reads the next line of characters from the standard input stream.Most common use is to pause program execution before clearing the console.
|
||
Console.ReadLine();
|
||
}
|
||
}
|
||
}
|
||
`
|
||
|
||
يجب أن يكون لكل تطبيق من تطبيقات C # وحدة التحكم [طريقة رئيسية](https://msdn.microsoft.com/en-gb/library/acy3edy3.aspx) تمثل نقطة دخول البرنامج.
|
||
|
||
تحرير [HelloWorld](https://dotnetfiddle.net/kY7QRm) في .NET Fiddle ، أداة مستوحاة من [JSFiddle](http://jsfiddle.net) حيث يمكنك تغيير مقتطفات الشفرة والتحقق من الإخراج لنفسك. لاحظ أن هذا مجرد مشاركة واختبار مقتطفات الشفرة ، وليس لاستخدامها في تطوير التطبيقات.
|
||
|
||
إذا كنت تستخدم visual studio ، اتبع هذا [البرنامج التعليمي](https://msdn.microsoft.com/en-us/library/k1sx6ed2.aspx) لإنشاء تطبيق وحدة التحكم وفهم أول برنامج C #.
|
||
|
||
## أنواع ومتغيرات
|
||
|
||
C # هي لغة مكتوبة بقوة. كل متغير لديه نوع. كل تعبير أو بيان يتم تقييمه إلى قيمة. هناك نوعان من الأنواع في C #
|
||
|
||
* أنواع القيم
|
||
* أنواع المرجع.
|
||
|
||
**أنواع القيم** : المتغيرات التي تحتوي على أنواع قيم تحتوي على قيم مباشرة. إن تعيين متغير نوع قيمة واحد إلى آخر ينسخ القيمة المحتواة.
|
||
|
||
[تحرير في .NET Fiddle](https://dotnetfiddle.net/JCkTxb)
|
||
|
||
`int a = 10;
|
||
int b = 20;
|
||
a=b;
|
||
Console.WriteLine(a); //prints 20
|
||
Console.WriteLine(b); //prints 20
|
||
`
|
||
|
||
لاحظ أنه في اللغات الديناميكية الأخرى قد يكون هذا مختلفًا ، ولكن في C # يكون هذا دائمًا نسخة قيمة. عند إنشاء نوع القيمة ، يتم إنشاء مساحة واحدة على الأرجح في [بنية تخزين العناصر](http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html#orgheadline2) ، وهي بنية بيانات "LIFO" (آخر في أول خطوة). المكدس لديه حدود الحجم وعمليات الذاكرة فعالة. أمثلة قليلة من أنواع البيانات المضمنة هي `int, float, double, decimal, char and string` .
|
||
|
||
النوع | مثال | وصف
|
||
\--------- | -------------------------------------------------- --------------------------- | -------------------------------------------------- -------------------------------------------------- -----------------------------
|
||
_عدد صحيح_ `int fooInt = 7;` | **وقعت 32 بت** عدد صحيح
|
||
_طويل_ | `long fooLong = 3000L;` | **وقعت** عدد صحيح **64 بت** . **يتم استخدام L لتحديد أن قيمة المتغير هذه من النوع long / ulong**
|
||
_مزدوج_ | `double fooDouble = 20.99;` | الدقة: **15-16 رقمًا**
|
||
_تعويم_ | `float fooFloat = 314.5f;` | الدقة: **7 أرقام** . **يتم استخدام F لتحديد أن قيمة المتغير هذه من نوع float**
|
||
_عشري_ | `decimal fooDecimal = 23.3m;` | الدقة: من **28 إلى 29 رقمًا** . المزيد من الدقة والنطاق الأصغر يجعلها مناسبة **للحسابات المالية والنقدية**
|
||
_تشار_ | `char fooChar = 'Z';` | **حرف Unicode 16 بت** واحد
|
||
_منطقية_ | `bool fooBoolean = false;` | منطقية - **صحيحة و خاطئة**
|
||
_سلسلة_ `string fooString = "\"escape\" quotes and add \n (new lines) and \t (tabs);` | **سلسلة من أحرف Unicode.**
|
||
|
||
للحصول على قائمة كاملة بجميع أنواع البيانات المضمنة ، انظر [هنا](https://msdn.microsoft.com/en-us/library/ms228360)
|
||
|
||
[**أنواع المراجع**](https://msdn.microsoft.com/en-us/library/490f96s2.aspx) : تخزن متغيرات أنواع المراجع إشارات إلى الكائنات الخاصة بها ، مما يعني أنها تخزن العنوان إلى موقع البيانات الموجودة على [المكدس](http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html#orgheadline2) ، وتُعرف أيضًا بالمؤشرات. يتم تخزين البيانات الفعلية على ذاكرة [الكومة](http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html#orgheadline3) . لا يؤدي تعيين نوع المرجع إلى نوع آخر إلى نسخ البيانات ، وإنما ينشئ النسخة الثانية من المرجع الذي يشير إلى نفس الموقع على كومة الذاكرة المؤقتة.
|
||
|
||
في كومة الذاكرة المؤقتة ، يتم تخصيص الكائنات ثم deallocated بترتيب عشوائي ولهذا السبب يتطلب مقدار الحمل من إدارة الذاكرة [وجمع البيانات المهملة](https://msdn.microsoft.com/en-us/library/hh156531(v=vs.110) .aspx).
|
||
|
||
إذا لم تكن تكتب [تعليمات برمجية غير آمنة](https://msdn.microsoft.com/en-us/library/t2yzs44b.aspx) أو تتعامل مع [التعليمات البرمجية غير المُدارة](https://msdn.microsoft.com/en-us/library/sd10k43k(v=vs.100) .aspx) ، فلا داعي للقلق بشأن عمر مواقع الذاكرة الخاصة بك. سيعتني مترجمو .NET و CLR بهذا ، ولكن لا يزال من الجيد الاحتفاظ بهذا العقل لتحسين أداء تطبيقاتك.
|
||
|
||
مزيد من المعلومات [هنا](http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx?ArticleID=9adb0e3c-b3f6-40b5-98b5-413b6d348b91)
|
||
|
||
## بيانات التحكم في التدفق
|
||
|
||
* [if else](https://msdn.microsoft.com/en-us/library/5011f09h.aspx) statement: [Edit in .NET Fiddle](https://dotnetfiddle.net/IFVB33)
|
||
|
||
` int myScore = 700;
|
||
if (myScore == 700)
|
||
{
|
||
Console.WriteLine("I get printed on the console");
|
||
}
|
||
else if (myScore > 10)
|
||
{
|
||
Console.WriteLine("I don't");
|
||
}
|
||
else
|
||
{
|
||
Console.WriteLine("I also don't");
|
||
}`
|
||
|
||
` /** Ternary operators
|
||
A simple if/else can also be written as follows
|
||
<condition> ? <true> : <false> **/
|
||
int myNumber = 10;
|
||
string isTrue = myNumber == 10 ? "Yes" : "No";
|
||
`
|
||
|
||
* بيان [التبديل](https://msdn.microsoft.com/en-GB/library/06tc147t.aspx) : [تحرير في .NET Fiddle](https://dotnetfiddle.net/lPZftO)
|
||
|
||
باستخدام النظام
|
||
|
||
برنامج الطبقة العامة { الفراغ الثابت العام Main () { int myNumber = 0؛ التبديل (myNumber) { // يمكن أن يحتوي قسم التبديل على أكثر من علامة حالة واحدة. الحالة 0: حالة 1: { Console.WriteLine ("Case 0 or 1")؛ استراحة؛ }
|
||
|
||
` // Most switch sections contain a jump statement, such as a break, goto, or return.;
|
||
case 2:
|
||
Console.WriteLine("Case 2");
|
||
break;
|
||
// 7 - 4 in the following line evaluates to 3.
|
||
case 7 - 4:
|
||
Console.WriteLine("Case 3");
|
||
break;
|
||
// If the value of myNumber is not 0, 1, 2, or 3 the
|
||
//default case is executed.*
|
||
default:
|
||
Console.WriteLine("Default case. This is also optional");
|
||
break; // could also throw new Exception() instead
|
||
}
|
||
}
|
||
`
|
||
|
||
}
|
||
|
||
* [For](https://msdn.microsoft.com/en-us/library/ch45axte.aspx) & [Foreach](https://msdn.microsoft.com/en-gb/library/ttw7t8t6.aspx) : [Edit in .NET Fiddle](https://dotnetfiddle.net/edxtvq)
|
||
|
||
لـ (int i = 0؛ i <10؛ i ++) { Console.WriteLine (ط)؛ // print 0-9 }
|
||
|
||
Console.WriteLine (Environment.NewLine)؛ لـ (int i = 0؛ i <= 10؛ i ++) { Console.WriteLine (ط)؛ // print 0-10 }
|
||
|
||
Console.WriteLine (Environment.NewLine)؛ لـ (int i = 10 - 1؛ i> = 0؛ i--) // decrement loop { Console.WriteLine (ط)؛ // يطبع 9-0 }
|
||
|
||
Console.WriteLine (Environment.NewLine)؛ //إلى عن على (؛ ؛ ) { // جميع التعبيرات اختيارية. هذا البيان // ينشئ حلقة لا نهائية. \* //
|
||
}
|
||
|
||
* [أثناء](https://msdn.microsoft.com/en-us/library/2aeyhxcd.aspx) [القيام](https://msdn.microsoft.com/en-us/library/370s1zax.aspx) [بالمهام](https://dotnetfiddle.net/O5hOF1) [أثناء](https://msdn.microsoft.com/en-us/library/370s1zax.aspx) : [تحرير في .NET Fiddle](https://dotnetfiddle.net/O5hOF1)
|
||
|
||
// استمر في فترة التكرار حتى يساوي الفهرس 10. int i = 0؛ بينما (أنا <10) { Console.Write ("While statement")؛ Console.WriteLine (i)؛ // اكتب الفهرس على الشاشة. i ++؛ // زيادة المتغير. }
|
||
|
||
عدد int = 0؛ // نفذ العمل أولاً ، حتى يتم استيفاء الشرط ، أي ينتهي عند وجود رقم يساوي 4. فعل { Console.WriteLine (العدد) ؛ // يطبع القيمة من 0-4 عدد ++؛ // أضف واحدة للرقم. } بينما (العدد <= 4) ؛ |