تمرين - بدء استخدام أساسيات الصفيف
- 19 دقائق
يمكن استخدام الصفائف لتخزين قيم متعددة من نفس النوع في متغير واحد. ترتبط القيم المخزنة في صفيف بشكل عام. على سبيل المثال، يمكن تخزين قائمة بأسماء الطلاب في صفيف سلسلة يسمى students.
يركز عملك في قسم الأمان على العثور على نمط للطلبات الاحتيالية. تريد أن تقوم التعليمات البرمجية الخاصة بك بمراجعة طلبات العملاء السابقة وتحديد العلامات المرتبطة بطلبات احتيالية. تأمل شركتك في إمكانية استخدام العلامات لتحديد أوامر الشراء الاحتيالية المحتملة في المستقبل قبل معالجتها. نظرا لأنك لا تعرف دائما مسبقا عدد الطلبات التي تحتاج إلى مراجعتها، فلا يمكنك إنشاء متغيرات فردية للاحتفاظ بكل معرف طلب. كيف يمكنك إنشاء بنية بيانات للاحتفاظ بقيم متعددة ذات صلة؟
في هذا التمرين، يمكنك استخدام الصفائف لتخزين وتحليل مجموعة من معرفات الطلبات.
ما هي المصفوفة؟
الصفيف هو مجموعة من عناصر البيانات الفردية التي يمكن الوصول إليها من خلال اسم متغير واحد. يمكنك استخدام فهرس رقمي يبدأ بالصفر للوصول إلى كل عنصر من عناصر المصفوفة. تسمح لك الصفائف بإنشاء مجموعة من قيم البيانات التي تشترك في غرض مشترك أو خصائص تحت اسم متغير واحد لتسهيل المعالجة.
الإعلان عن الصفائف والوصول إلى عناصر الصفيف
المصفوفة هي نوع خاص من المتغيرات يمكن أن تحتوي على قيم متعددة من نوع البيانات نفسه. يختلف بناء جملة التعريف قليلا لصفيف لأنه يجب عليك تحديد كل من نوع البيانات وحجم الصفيف.
إعداد بيئة الترميز الخاصة بك
تتضمن هذه الوحدة أنشطة ترشدك خلال عملية إنشاء نموذج التعليمات البرمجية وتشغيله. يتم تشجيعك على إكمال هذه الأنشطة باستخدام Visual Studio Code كبيئة تطوير. يساعدك استخدام Visual Studio Code لهذه الأنشطة على أن تصبح أكثر راحة في الكتابة وتشغيل التعليمات البرمجية في بيئة مطور يستخدمها المحترفون في جميع أنحاء العالم.
فتح Visual Studio Code.
يمكنك استخدام القائمة Windows (أو مورد مكافئ لنظام تشغيل آخر) لفتح Visual Studio Code.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، انتقل إلى مجلد سطح مكتب Windows.
إذا كان لديك موقع مجلد مختلف حيث تحتفظ بمشاريع التعليمات البرمجية، يمكنك استخدام موقع المجلد هذا بدلا من ذلك. لهذا التدريب، الشيء المهم هو أن يكون لديك موقع يسهل تحديد موقعه وتذكره.
في مربع الحوار فتح مجلد ، حدد تحديد مجلد.
إذا رأيت مربع حوار أمان يسألك عما إذا كنت تثق بالمؤلفين، فحدد نعم.
في قائمة Visual Studio Code Terminal ، حدد New Terminal.
لاحظ أن موجه الأوامر في لوحة Terminal يعرض مسار المجلد للمجلد الحالي. على سبيل المثال:
C:\Users\someuser\Desktop>إشعار
إذا كنت تعمل على جهاز الكمبيوتر الخاص بك بدلا من بيئة الاختبار المعزولة أو البيئة المستضافة وأكملت وحدات Microsoft Learn الأخرى في سلسلة C# هذه، فربما تكون قد أنشأت بالفعل مجلد مشروع لعينات التعليمات البرمجية. إذا كان الأمر كذلك، يمكنك تخطي الخطوة التالية، والتي تستخدم لإنشاء تطبيق وحدة تحكم في مجلد TestProject.
في موجه الأوامر Terminal، لإنشاء تطبيق وحدة تحكم جديد في مجلد محدد، أدخل المطالبة التالية:
dotnet new console -o ./CsharpProjects/TestProjectيستخدم أمر .NET CLI هذا قالب برنامج .NET لإنشاء مشروع تطبيق وحدة تحكم C# جديد في موقع المجلد المحدد. ينشئ الأمر مجلدات CsharpProjects وTestProject نيابة عنك، ويستخدم TestProject كاسم لملفك
.csproj.إذا تم عرض رسالة تخبرك بأن الملفات موجودة بالفعل، فتابع الخطوات التالية. ستقوم بإعادة استخدام ملفات المشروع الموجودة.
في طريقة عرض EXPLORER، قم بتوسيع المجلد CsharpProjects .
يجب أن تشاهد مجلد TestProject وملفين، ملف برنامج C# المسمى Program.cs وملف مشروع C# يسمى TestProject.csproj.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، حدد المجلد CsharpProjects ، ثم حدد تحديد مجلد.
في طريقة عرض EXPLORER، قم بتوسيع المجلد TestProject، ثم حدد Program.cs.
حذف أسطر التعليمات البرمجية الموجودة.
ستستخدم مشروع وحدة تحكم C# هذا لإنشاء نماذج التعليمات البرمجية وبنائها وتشغيلها أثناء هذه الوحدة النمطية.
أغلق لوحة Terminal.
الإعلان عن صفيف جديد
لتعريف صفيف جديد من السلاسل التي يمكن أن تحتوي على ثلاثة عناصر، أدخل التعليمات البرمجية التالية:
string[] fraudulentOrderIDs = new string[3];خذ دقيقة لفحص التعليمات البرمجية الخاصة بك.
يقوم العامل
newبإنشاء مثيل جديد لمصفوفة في ذاكرة الكمبيوتر يمكن أن تحتوي على ثلاث قيم للسلسلة. لمزيد من المعلومات حول الكلمة الأساسيةnew، راجع الوحدة النمطية "أساليب الاستدعاء من مكتبة فئات .NET باستخدام C#".لاحظ أن المجموعة الأولى من الأقواس
[]المربعة تخبر المحول البرمجي فقط أن المتغير المسمىfraudulentOrderIDsعبارة عن صفيف، ولكن المجموعة الثانية من الأقواس[3]المربعة تشير إلى عدد العناصر التي يمكن للصفيف الاحتفاظ بها.إشعار
يوضح هذا المثال كيفية تعريف صفيف من السلاسل، ومع ذلك، يمكنك إنشاء صفيف من كل نوع بيانات بما في ذلك البدائيات مثل
intوأنواعboolالبيانات الأكثر تعقيدا مثل الفئات. يستخدم هذا المثال بساطة السلاسل لتقليل عدد الأفكار الجديدة التي تحتاج إلى استيعابها عندما تبدأ.
تعيين قيم لعناصر صفيف
عند هذه النقطة، قمت بالإعلان عن صفيف من السلاسل، ولكن كل عنصر من عناصر الصفيف فارغ. للوصول إلى عنصر مصفوفة، يمكنك استخدام فهرس رقمي يبدأ بالصفر داخل الأقواس المربعة. يمكنك تعيين قيمة لعنصر صفيف باستخدام = كما لو كان متغيرا عاديا.
لتعيين قيم معرف الطلب إلى الصفيف الخاص بك
fraudulentOrderIDs، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";خذ دقيقة لفحص التعليمات البرمجية الخاصة بك.
لاحظ أنك تستخدم اسم الصفيف للوصول إلى عناصر الصفيف. يتم الوصول إلى كل عنصر بشكل فردي عن طريق تحديد رقم الفهرس الصفري داخل الأقواس المربعة.
نظرا لأن الصفيف الخاص بك تم تعريفه كسلسلة، يجب أن تكون القيم التي تقوم بتعيينها أيضا سلاسل. في هذا السيناريو، تقوم بتعيين معرفات الطلبات لعناصر الصفيف.
محاولة استخدام فهرس خارج حدود الصفيف
قد لا يبدو بديهيا في البداية، ولكن من المهم أن تتذكر أنك تعلن عن عدد العناصر في الصفيف. ومع ذلك، يمكنك الوصول إلى كل عنصر من عناصر الصفيف بدءا من الصفر. لذلك، للوصول إلى العنصر الثاني في الصفيف، يمكنك استخدام الفهرس 1.
من الشائع أن ينسى المبتدئون أن الصفائف لا تستند إلى الصفر ويحاولون الوصول إلى عنصر من الصفيف غير موجود. إذا ارتكبت هذا الخطأ، يحدث استثناء وقت التشغيل لإعلامك بأنك حاولت الوصول إلى عنصر خارج حدود الصفيف.
ل "قطع" التطبيق الخاص بك عن قصد، حاول الوصول إلى عنصر رابع من الصفيف الخاص بك باستخدام قيمة الفهرس ل 3.
في أسفل ملف التعليمات البرمجية، أدخل سطر التعليمات البرمجية التالي:
fraudulentOrderIDs[3] = "D000";تأكد من أن التعليمات البرمجية الخاصة بك تطابق هذا المثال:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";في قائمة Visual Studio Code File ، حدد Save.
في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
يجب فتح لوحة Terminal، ويجب أن تتضمن موجه أوامر يظهر أن Terminal مفتوحة لموقع مجلد TestProject.
في موجه الأوامر Terminal، لتحويل التعليمات البرمجية برمجيا، اكتب
dotnet buildثم اضغط على Enter.يجب أن تشاهد الرسالة التالية:
Build succeeded. 0 Warning(s) 0 Error(s)في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب
dotnet runثم اضغط على Enter.عند تشغيل التطبيق، تحصل على رسالة خطأ وقت التشغيل التالية:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6لاحظ الأجزاء التالية من الخطأ:
- رسالة الخطأ:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - موقع الخطأ:
Program.cs:line 6
- رسالة الخطأ:
التعليق خارج السطر الذي أنشأ خطأ وقت التشغيل.
// fraudulentOrderIDs[3] = "D000";
لقد رأيت كيفية تعيين قيمة لعنصر صفيف. انظر الآن إلى كيفية الوصول إلى قيمة يتم تخزينها في عنصر صفيف.
استرداد القيم من عناصر صفيف
يعمل الوصول إلى قيمة عنصر صفيف بنفس طريقة تعيين قيمة لعنصر صفيف. ما عليك سوى تحديد فهرس العنصر الذي تريد استرداد قيمته.
لكتابة قيمة كل معرف طلب احتيالي، قم بتحديث التعليمات البرمجية الخاصة بك على النحو التالي:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");في قائمة Visual Studio Code File ، حدد Save.
في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
في موجه الأوامر Terminal، اكتب
dotnet runثم اضغط على Enter.يجب أن تشاهد الرسالة التالية:
First: A123 Second: B456 Third: C789
إعادة تعيين قيمة صفيف
عناصر الصفيف هي تماما مثل أي قيمة متغيرة أخرى. يمكنك تعيين قيمة واستردادها وإعادة تعيينها لكل عنصر من عناصر الصفيف.
في نهاية ملف التعليمات البرمجية، لإعادة تعيين ثم طباعة قيمة عنصر الصفيف الأول، أدخل التعليمات البرمجية التالية:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");تأكد من أن التعليمات البرمجية الخاصة بك تطابق المثال التالي:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");في قائمة Visual Studio Code File ، حدد Save.
في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
في موجه الأوامر Terminal، اكتب
dotnet runثم اضغط على Enter.يجب أن تشاهد الرسالة التالية:
First: A123 Second: B456 Third: C789 Reassign First: F000
تهيئة صفيف
يمكنك تهيئة صفيف أثناء الإعلان تماما كما تفعل مع متغير عادي.
التعليق خارج الأسطر حيث تقوم بتعريف
fraudulentOrderIDsالمتغير.يمكنك استخدام تعليق متعدد الأسطر (
/* ... */) للتعليق على إعلانfraudulentOrderIDsو الأسطر المستخدمة لتعيين قيم لعناصر الصفيف.لتعريف الصفيف وتهيئة القيم في عبارة واحدة، أدخل التعليمات البرمجية التالية:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];يستخدم هذا المثال صياغة تعبير المجموعة ، التي تم تقديمها في C# 12 وتدعم في .NET 10.
قد ترى أيضا بناء جملة قديما يستخدم لتهيئة صفيف.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };لاحظ أن بناء الجملة القديم هذا يستخدم أقواس
{}متعرجة لإحاطة قيم الصفيف. كلا بناءي الجملة صالحان.إشعار
قد ترى تركيبة من بناء الجملة الأقدم وبناء جملة تعبير المجموعة المستخدمة في هذا التدريب.
تأكد من أن التعليمات البرمجية الخاصة بك تطابق المثال التالي:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");خذ دقيقة لفحص بيان الإعلان.
لاحظ أن بناء الجملة هذا مضغوط وسهل القراءة. عند تشغيل التطبيق، يجب ألا يكون هناك أي تغيير في الإخراج.
في قائمة Visual Studio Code File ، حدد Save.
في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
في موجه الأوامر Terminal، اكتب
dotnet runثم اضغط على Enter.يجب أن تشاهد نفس الرسالة كما كان من قبل:
First: A123 Second: B456 Third: C789 Reassign First: F000
استخدام الخاصية Length لصفيف
بناءً على كيفية إنشاء المصفوفة، قد لا تعرف مسبقاً عدد العناصر التي تحتوي عليها المصفوفة. لتحديد حجم مصفوفة، يمكنك استخدام خاصية Length.
إشعار
Length لا تستند خاصية الصفيف إلى الصفر.
في نهاية ملف التعليمات البرمجية، للإبلاغ عن عدد الطلبات الاحتيالية، أدخل التعليمات البرمجية التالية:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");تستخدم هذه التعليمة البرمجية خاصية الصفيف
Length، وهي عدد صحيح، لإرجاع عدد العناصر في الصفيف الخاص بكfraudulentOrderIDs.تأكد من أن التعليمات البرمجية الخاصة بك تطابق هذا المثال:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");احفظ التغييرات على ملف Program.cs ، ثم قم بتشغيل التطبيق.
ينبغي أن تشاهد المخرج التالي:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
خلاصة
فيما يلي أهم الأشياء التي يجب تذكرها عند العمل مع الصفائف:
- الصفيف هو متغير خاص يحتوي على مجموعة من عناصر البيانات ذات الصلة.
- يجب عليك حفظ التنسيق الأساسي لإعلان متغير مصفوفة.
- قم بالوصول إلى كل عنصر من عناصر المصفوفة لتعيين قيمه أو الحصول عليها باستخدام فهرس يبدأ بالصفر داخل أقواس مربعة.
- إذا حاولت الوصول إلى فهرس خارج حدود الصفيف، فستحصل على استثناء وقت التشغيل.
- تمنحك الخاصية
Lengthطريقة برمجية لتحديد عدد العناصر في المصفوفة.