عبد الرزاق القرن

الأعضاء
  • المساهمات

    22
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو عبد الرزاق القرن

  1. تستطيع جعل الحركة أكثر سلاسةً باستخدام التعليمة Transitions في CSS. لنفرض أنه لديك الكود التالي : .circle { width:35px; height:35px; border-radius:50px; background-color:#f00; } .circle:hover { height:50px; border-radius:50px; }<div class="circle"></div>عند التنفيذ سيزداد حجم الدائرة بشكل مباشر, ولجعل زيادة الحجم بشكل تدريجي اكتب الكود التالي : .circle { width:35px; height:35px; border-radius:50px; background-color:#f00; transition: all 200ms ease-in 0; } .circle:hover { height:50px; border-radius:50px; transition: all 300ms ease-in 0; }<div class="circle"></div>تنقسم التعليمة transition إلى 4 أقسام سنحدد وظيفتها كما يلي : transition: A B C D;1- قسم A : لتحديد الخاصّية الذي نريد تحريكها بسلاسة كأن نحدد الإطار فقط أو كل العنصر. 2- قسم B : لتحديد سرعة الحركة. 3- قسم C : لتحديد شكل الحركة. 4- قسم D : لتحديد زمن التأخير عن بدء الحركة. المصدر
  2. يمكنك إضافة ظل للنصوص باللون الذي ترغبه وبطريقة عرض الظل التي تناسبك. فقط أضف هذا الأمر إلى ملف التنسيقات CSS لعنصر الـ HTML الذي ترغب أن يَظهر ظلاً لمحتواه النصي : text-shadow: Xpx Ypx Zpx rgba(R, G, B, A);مع مراعاة استبدال الأحرف إلى قيم رقمية وفق الآتي : X : رقم يدل على مسافة ابتعاد الظل عن النص بشكل أفقي. Y : رقم يدل على مسافة ابتعاد الظل عن النص بشكل شاقولي. Z : رقم يدل على حجم Blur للظل (أن يصبح الظل أكثر ضبابيةً). R,G,B : ثلاثة قيم مجالها (من 0 إلى 255) تشكّل لون الظل حيث أن R للون الأحمر وG للون الأخضر B للون الأزرق. A : قيمة مجالها (من 0 إلى 1) تحدد الشفافية للظل. مثال عن ظل للنص يظهر أسفل النص مباشرة باللون الأسود وبشفافية متوسطة : text-shadow: 0px 3px 0px rgba(0, 0, 0, 0.5);المصدر
  3. عنصر Radio يُستخدم لتحديد خيار واحد فقط من عدّة خيارات, ولكن اذا احتوى النموذج Form على عناصر Radio لسؤالين مختلفين فيجب تمييز كُلٍّ منهم. للتمييز بين عناصر الـ Radio في C# عليك احتوائهم ضمن حاوية مثل GroupBox (تجدها ضمن قائمة Containers في صندوق الأدوات). يعتبر النموذج Form بشكل افتراضي حاوية للعناصر لذا عند إدراج 4 عناصر من نوع Radio على سبيل المثال ضمن النموذج نفسه فتتم معاملتهم على أنهم 4 خيارات لسؤال واحد. وللتمييز بين اختيارات الاسئلة نضع خيارات كُلًّ سؤالٍ ضمن حاوية مثل GroupBox . صورة توضيحية :
  4. الإجراءات المُخزّنة: هي جملة استعلام مخزنة في قاعدة البيانات يمكن أن تقوم بمجموعة من الأعمال، كإضافة سجل ثم تعديل البيانات في سجل آخر، والقيام بالحسابات على مجموعة أُخرى من السجلات وذلك اعتباراً من أمر واحد من المستخدم. عند استخدام الإجراءات المخزنة نقوم بإنشاء إجرائية مع معامِلات دخل وخرج بحيث يمكننا استدعاؤها بالصورة نفسها المُستخدمة في تعبيرات SQL المعيارية. تحتوي الإجراءات المخزنة تعبير أو مجموعة من تعبيرات SQL والتي تنفذ كجزء من تنفيذ الإجرائية مع إمكانيات التحكم بتدفق التنفيذ أو إضافة حلقات أو التنفيذ الشرطي، مما يعطي الإجرائيات المخزنة تمييزاً كبيراً. مثال بسيط عن الإجرائيات المُخزنة : CREATE PROCEDURE InsertContacts (@myName varchar(50), @myAddress varchar(50) = ‘Unknown’) AS Insert Into Contacts (contactName, contactAddress) Values (@myName, @myAddress);قمنا بإنشاء إجرائية اسمها InsertContacts بمعاملين من نمط varchar الثاني له قيمة افتراضية هي Unknown. وظيفة هذه الإجرائية تخزين الاسم والعنوان المُمرّرين عبر المعاملات ضمن قاعدة البيانات. ولاستدعاء الإجرائية نكتب الأمر التالي : EXECUTE InsertContacts ('ahmad','address'); >> للمزيد StoredProcedure.
  5. عندما نؤسّس اتصالاً بقاعدة البيانات فإننا نُمرّر استعلاماً ما ونفتح الاتصال، لذا يتوجب علينا تحديد طريقة تنفيذ الأمر. هناك عدّة طرق لتنفيذ هذه الأوامر ويتم استخدام الطريقة المناسبة للأمر الذي يحوي الاستعلام. الأوامر هي : • ExecuteReader : يستخدم عند تمرير استعلام يجلب أكثر من سجل من قاعدة البيانات ويتم تعريف DataReader لقراءة هذه السجلات والتعامل معها. string queryString = "SELECT * FROM table"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteNonQuery : يُستخدم عند تمرير استعلام لتعديل البيانات من إضافة إلى حذف أو تعديل وبذلك لا توجد بيانات مُعادة من قاعدة البيانات. string queryString = "UPDATE table SET column='value' WHERE id=5"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteScalar : يستخدم عند تمرير استعلام يجلب قيمة واحدة من قاعدة البيانات. string queryString = "SELECT COUNT(*) FROM table"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); int count = command.ExecuteScalar(); Console.WriteLine("Count is : " + count); ويوجد أيضاً : • ExecuteXmlReader : يستخدم لتنفيذ الاستعلام وإعادته على شكل XML حيث يتم تعريف XmlReader وربط الناتج به لقراءته. المصدر SqlCommand Methods .
  6. الدالة "DateAdd" تُضيف قيمة رقمية إلى حقل من نوع تاريخ كإضافة بعض الأيام و الشهور و السنوات إلى تاريخ معين. صيغة الدالة كما يلي: DATEADD(Part_of_date, number, date) • المُعامل الأول Part_of_date يأخذ إحدى القيم الثلاثة: Year : لإجراء الإضافة على الجزء الخاص بالسنوات. Month : لإجراء الإضافة على الجزء الخاص بالشهور. Day: لإجراء الإضافة على الجزء الخاص بالأيام. • المعامل الثاني number يأخذ القيمة الرقمية المراد إضافتها. • المعامل الثالث date هو الحقل أو القيمة التاريخية المراد إجراء الإضافة إليها. مثال عن الدالة, استعلام يجلب لي الاسم الكامل للموظف وتاريخ العمل وتاريخ العمل مضافاً له 3 سنوات : SELECT FullName, Date_of_working as 'Date of working', DATEADD(year,3,Date_of_working) as 'Using DATADD' FROM Employee; للمزيد حول الدالة DATEADD .
  7. بإمكانك ترك الخيار للمستخدم في اختيار اللون للنص الذي يظهر له ضمن Label. الطريقة كالتالي : • نبني غرضّ من صف ColorDialog : ColorDialog MyDialog = new ColorDialog(); • نحدّد العنصر الذي سنُطبق اللون عليه وما إذا كان اللون سُيطبق على الخلفية أم على النص : MyDialog.Color = label1.ForeColor ; • أخيرًا وبعد اختيار المستخدم اللون نضع شرطاً نختبر بهِ فيما إذا استمر باختيار اللون أو ألغى العملية : if(MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color; ملاحظة : الأوامر السابقة جميعها نضعها ضمن الطريقة المعالجة لحدث النقر على زر اختيار اللون. لتصبح كامل الأوامر كالتالي : private void button1_Click(object sender, EventArgs e) { ColorDialog MyDialog = new ColorDialog(); MyDialog.Color = label1.ForeColor ; if (MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color; } المصدر.
  8. لإنشاء عدّاد يجب عليك اتباع الخطوات التالية : • من صندوق الأدوات أنشئ عنصر Button وعنصر TextBox وعنصر Label. • من صندوق الأدوات قم بإنشاء Timer واضبط من خصائصه الـ Interval للقيمة 1000. • انقر نقرتين على العنصر Timer لتوليد الطريقة المُعالجة لحدث Tick. • في الطريقة المعالجة لحدث Tick اكتب الأوامر الخاصّة بالعداد وشريط التقدم وهي: int first_time = int.Parse(textBox1.Text); // تخزين الوقت الكلي للعداد int percentage; // متحول لتخزين النسبة المئوية للعداد if (time > 0) { label1.Text = "Remained : " + time; // طباعة الوقت المتبقي من العداد percentage = time * 100 / first_time; // معادلة تحسب النسبة المئوية للوقت المتبقي progressBar1.Value = percentage; // تعديل قيمة شريط المعالجة إلى النسبة المئوية للوقت المتبقي time -= 1; // إنقاص عداد الوقت ثانية } else if (time == 0) { timer1.Stop(); // إيقاف العداد progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); } • ضمن الطريقة المُعالجة لحدث النقر على زر بدء العداد اكتب الأوامرالتالية : time = int.Parse(textBox1.Text); timer1.Start(); // بدء العداد • قم بتعريف متحول عام ضمن الصف لقيمة العداد : int time; ليصبح كامل الكود هو : namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int time; private void button1_Click(object sender, EventArgs e) { time = int.Parse(textBox1.Text); timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { int first_time = int.Parse(textBox1.Text); int avg; if (time > 0) { label1.Text = "Remained : " + time; avg = time * 100 / first_time; progressBar1.Value = avg; time -= 1; } else if (time == 0) { timer1.Stop(); progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); } } } }
  9. لإنشاء ساعة يجب عليك اتباع التالي : 1- أنشئ Label لنضع به الوقت واضبط خصائصه كما ترغب. 2- من الـ ToolBox أدرج الأداة Timer. 3- من خصائص الأداة اضّبط الخيارات الموضّحة في الصورة وفق الآتي : Enabled : True Interval : 1000 4- الآن انقر نقرتين على الأداة Timer كما هو موضّح في الصورة لينشئ البرنامج الطريقة المُعالجة للحدث Tick. 5- سنستعين بالأوامر التي تُعيد لنا الوقت وهي : DateTime.Now.Hour // لجلب الساعة الحالية DateTime.Now.Minute // لجلب الدقيقة الحالية DateTime.Now.Second // لجلب الثانية الحالية 6- ضمن الطريقة المُعالجة للحدث Tick نُدرج الأوامر التي سيُكرر تنفيذها وفق المدة التي حددّناها في الـ Interval وهي : label1.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTme.Now.Second; 7- بعد تنفيذ البرنامج ستظهر الساعة ضمن الـ ListBox وفق التنسيق التالي H:M:S . المزيد.
  10. لانجاز فكرتك تحتاج إلى تحديد الوقت الحالي وذلك ببناء غرض من ()Date ومناداة الطريقة getHours لتحديد الساعة الحالية. من ثم تفحّص الساعة الحالية وتنفيذ الشرط المناسب لها. عملياً يمكنك استخدام الأوامر التالية : <html> <head> <script> function ChangeBackGround() { var cd = new Date(); var hours = cd.getHours(); if(hour>=0 && hour<12) { document.body.style.backgroundImage = "url('pic1.jpg')"; } else if (hour>=12 && hour<23) { document.body.style.backgroundImage = "url('pic2.jpg')"; } } </script> </head> <body onLoad="ChangeBackGround();"> <!-- Body محتوى الوسم --> </body> </html>للمزيد حول Dates في جافا سكربت.
  11. يمكنك تغيير الارتباط أو أيّ خاصّية تابعة لوسم "الارتباط التشعبي" عبر الجافا السكربت بعد الوصول إلى العقدة التي تحويها من خلال الـ id الخاص بها. لنفترض أن صفحتك تحوي على كلمة Download لها ارتباط تشعبي بـ رابط تحميل ملفٍ ما . عند الضغط على Download سيفتح رابط التحميل ثم يتغير الارتباط التشعبي إلى الصفحة الرئيسية للموقع. عندها سيتكون الأوامر كالتالي : <html> <head> <script> /* إنشاء تابع يحدد وسم الارتباط ويغيّر خاصية href */ function ChangeLink() { var domain = 'http://YourSite.com/'; document.getElementById('d1').href = domain; } </script> </head> <body> <a id="d1" onClick="ChangeLink();" href="http://YourSite.com/File.ext" target="_blank">Download</a> </body> </html>
  12. تستطيع إنجاز ذلك عبر الصف الخاص بنافذة فتح ملف "OpenFileDialog" من خلال اتباع الخطوات التالية : 1- بناء غرض من هذا الصف. 2- تحديد الخصائص التي نريدها للنافذة. 3- إضافة شرط للتحقق من فتح النافذة واختيار ملف. الأوامر التي تحتاجها هي : OpenFileDialog ofd = new OpenFileDialog(); // بناء غرض /* خصائص النافذة */ ofd.Filter = "Pictures (*.jpg)|*.jpg"; // أنواع الملفات التي نستطيع مشاهدتها واختيارها ofd.Title = "Chose a picture"; // عنّوان النافذة if (ofd.ShowDialog() == DialogResult.OK) // التحقق من اتمام عملية اختيار الملف { string path = ofd.FileName; // الاوامر التي تريد تنفيذها بعد اختيار الملف }ويمكنك أيضاً إضافة خصائص ثانوية لنافذة فتح الملف مثل : ofd.InitialDirectory = "C:\\"; // لتحديد المسار الافتراضي للنافذة عند فتحها ofd.FileName = "summer.jpg"; // لتعيين اسم افتراضي للملف عند فتح النافذة للمزيد حول نافذة فتح ملف [ OpenFileDialog Class ] .
  13. يمكنك ترتيب البيانات تنازلياً وِفق رواتب الموظفين وتحديد العدد المطلوب من أعلى الرواتب لـ جلبهم. فـ باستخدام الكود البرمجي التالي يتم استدعاء 10 سجلات من قاعدة البيانات للموظفين مرتّبةً ترتيباً تنازلياً حسب الراتب الشهري لكل موظف: SELECT * FROM employee ORDER BY salary DESC LIMIT 10 ; تستطيع تغير قيمة الخاصّية OEDER BY من"salary" إلى أحدْ أسماء الأعمدة ليتم الترتيب وفق العمود المحدد. ملاحظة : بهذا الاستعلام سيتم المرور على جميع حقول الرواتب لـ غرض الترتيب ممّا سيؤثر سلباً على الأداء إذا حوى عمود "الرواتب" عدداً ضخماً من السجلات. يمكنك قراءة المزيد حول ترتيب البيانات المعادة من هنا.
  14. يوفّر نظام التشغيل ذاكرة مؤقتة تسمى Clipboard وظيفتها تخزين النصوص ونقلها من مكان إلى آخر ضمن نظام التشغيل نفسه. تقوم الطريقة Clipboard.SetText الموجودة ضمن المكتبة System.Windows.Forms بتخزين قيمة ما إلى الحافظة Clipboard. تتّسع هذه الحافظة إلى قيمة واحدة فقط وعند تخزين قيمة جديدة تُفرَّغ الحافظة من القيمة القديمة ويتم ملّؤها بالقيمة الجديدة. الحافظة Clipboard يتم استعمالها أيضاً في عمليات النسّخ واللصّق التي نجريها يومياً في عملنا. اكتب الكود التالي ضمن الطريقة المعالِجة لِحدث النّقر على زر النسّخ : string result = textBox1.Text ; System.Windows.Forms.Clipboard.SetText(result) ; المصدر
  15. يمكن تحديد العنوان بأكثر من طريقة. من ضمن تلك الطرق استخدام الخاصّية document.title وتحديد قيمة لها لتكون القيمة المُعطى هي عنوان الصفحة. وفي خلاف ذلك سيستخدم محتوى الوسم <title> كعنوان للصفحة. تقوم الخاصّية document.title بـإرجاع العنوان للصفحـة الحاليــة. ويمكن تعديل العنوان الحالي للصفحة بـإسناد قيمة جديدة لهذه الخاصّية عبر التعليمة التالية: document.title = "اكتب هنا العنوان الجديد";من الممّكن أن تحوي الصفحة على وسم العنوان <title> والخاصّية document.title معًاً فيتم عرض العنوان الموجود ضمن وسم <title> بدايةً ومن ثم يُستبدل العنوان بالقيمة التي أُسندت للخاصّية document.title عند تفعيل هذه الخاصّية. يجب التنويه إلى أنّ معظم محركات البحث تعتمد العنوان الموجود في وسم عنوان الصفحة <title> قبل تعليمات الـJavaScript . المصدر.
  16. يمكنك إنشاء متحول من نمط DialogResult وإسناد القيمة التي تعيدها الطريقة MessageBox.show إليه ومن ثم فحص هذه القيمة فيما إذا حققت الشرط أم لم تحققه. ستكون الأوامر كالتالي : string message = "اكتب هنا النص الذي تُريد إظهاره"; string caption = "اكتب هنا العنوان الذي تريده إظهار للرسالة"; MessageBoxButtons buttons = MessageBoxButtons.OKCancel; // الأزرار التي ستظهر ضمن الرسالة DialogResult result; // المتحول الذي ستُخزن ضمنه القيمة Ok أو Cancel result = MessageBox.Show(message, caption, buttons); if (result == DialogResult.OK) { // اكتب هنا الأوامر الذي تريد تنفيذها عند الضغط على زر Ok } >> المصدر [ MessageBox.Show ]
  17. - للتنقل بين النماذج يجب عليك القيام بالتالي : 1- بناء غرض من صف النموذج الذي تريد الانتقال إليه. 2- استدعاء الطريقة show لعرض النموذج الجديد. 3- استدعاء الطريقة hide لاخفاء النموذح الحالي. - يوجد في مشروعك 3 نماذج, سيكون العمل كالتالي : • ضمن النموذج الأول : إذا أردت الانتقال إلى النموذج الثاني اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال : Form2 f2=new Form2(); f2.show(); this.hide(); • ضمن النموذج الثاني : إذا أردت الانتقال إلى النموذج الثالث اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال : Form3 f3=new Form3(); f3.show(); this.hide(); إذا أردت الرجوع إلى النموذج الأول اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال : Form1 f1=new Form1(); f1.show(); this.hide(); • ضمن النموذج الثالث : إذا أردت الرجوع إلى النموذج الثاني اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال : Form2 f2=new Form2(); f2.show(); this.hide(); << المصدر [ Display One Form from Another]
  18. هي متغيّرات تستطيع من خلالها تخزين الارقام العشرية مثل 5.16 . - تعريفات : • المتغير "Float" هو متغير رقمي لا يقبل نصوص و يقبل الفواصل العشرية, يتسع لسبعة خانات بعد الفاصلة و لابدَّ من وضع الحرف F في نهاية القيمة المعطاة للمتغير. • المتغير "Double" هو متغير رقمي لا يقبل نصوص و يقبل الفواصل العشرية, يتسع لـ 15 أو 16 خانة بعد الفاصلة. - الحجم في الذاكرة : • المتغير float من 10³⁸ × 3.4- إلى 10³⁸ × 3.4+ • المتغير double من ³²⁴⁻10 × 5.0± إلى 10³⁰⁸ × 1.7± - طريقة تعريف المتحول : • المتغير من نمط float : float x = 3.5f; • المتغير من نمط double : double x = 5.7; - ملاحظات : • في المتحول من نمط float يتم إرفاق القيمة بالحرف f لتمييزها عن القيمة من نمط double. • نستطيع تخزين ضمن المتحولين float و double قيم عددية مثل 45 وقيم عشرية مثل 45.3 بينما المتحول int يخزّن فقط قيم عددية ويهمل ما بعد الفاصلة. << المصادر [ Double | Float ]
  19. تختبر switch الشرط بناءً على عددٍ من الحالات تُسمى Case. كل حالة لها جواب للشرط , إذا وافقت الشرط فيتم تنفيذ الأوامر التي تحتويها. تشبه switch الجملة الشرطية if , ولكن كل switch تتحقق من قيم متحول واحد (مثل متحول num في المثال اللاحق). نستفيد من switch عند وجود جمل شرطية متداخلة لكونها تختصر الكثير من التعقيد فيما لو استخدمنا الجملة الشرطية if. طريقة صياغتها كالتالي : int num = int.Parse(Console.ReadLine()); switch (num) { case 1: Console.WriteLine("First"); break; case 2: Console.WriteLine("Second"); break; case 3: Console.WriteLine("Third"); break; default: Console.WriteLine(num + "th"); break; }أدرجنا المتحول num ضمن قَوسي switch وهو المتحول الذي نريد اختبار قيمته. بجانب كل حالة case أدرجنا جواباً للشرط (قيمة). عند التنفيذ وبعد الدخول إلى switch سيمر على أول حالة case. إن كانت قيمة المتحول num تساوي لقيمة الحالة case سيتم تنفيذ الأوامر المُحتواة ضمن هذه الحالة case والتوقف عند break ثم الخروج من switch. وفي حال تم المرور على جميع الحالات case ولم تحققها فسيتم تنفيذ الأوامر المُحتوات ضمن default إن وُجدت. >> للمزيد حول Switch .
  20. كما نعلم "المتحول" هو خانة في الذاكرة يتم حجزها لتخزين قيمة واحدة مثل تخزين المعدل الدراسي لطالب ما. ولكن ماذا أفعل إذا رغبت بتخزين درجات 14 مقرّر لطالب ما؟ هل أنشئ 14 متحول! طبعا لا, فمن الأفضل في هذه الحالة استخدام المصفوفات. المصفوفات هي مجموعة متسلسلة من خانات الذاكرة تحمل الاسم والنمط ذاته. وبما أن للخانات الاسم نفسه فنحتاج إلى تعداد نميّز به الخانات وهو ما يسمى بالفهرس "index". لكل مصفوفة فهرس رقمي خاص بها يبدأ من الصفر ويشير إلى خانة ما في الذاكرة. ونستطيع في كل خانة تخزين قيمة منفصلة عن قيمة خانة أُخرى. • يتم تعريف المصفوفة على الشكل التالي : DataType[] ArrayName = new DataType[LengthArray]; int[] grades = new int[3]; - DataType : هو نمط البيانات التي نريد تخزينها ضمن المصفوفة (لا يمكننا تخزين أكثر من نمط بيانات ضمن المصفوفة الواحدة). - ArrayName : اسم المصفوفة. - LengthArray : طول المصفوفة, وهو عدد القيم الأعظمي الذي نستطيع تخزينه ضمن هذه المصفوفة. • ولاسناد قيم لهذه المصفوفة : grades[0] = 75; grades[1] = 40; grades[2] = 88; أدرجنا اسم المصفوفة ثم بين قوسي مربع أدرجنا الفهرس لهذا العنصر من المصفوفة ثم أسندنا قيمة لهذا العنصر. بالتالي العنصر الاول للمصفوفة يحمل الفهرس رقم 0 والعنصر الثاني للمصفوفة يحمل الفهرس رقم 1 والعنصر الثالث للمصفوفة يحمل رقم الفهرس 2 وهكذا .. • توجد طريقة أُخرى مختصرة وهي اعطاء قيم للمصفوفة عند تعريفها, كالتالي : int[] grades = new int[3] {75,40,88} ; • ولاعادة قيمة عنصر ما ضمن مصفوفة نكتب اسم المصفوفة ثم رقم الفهرس ضمن قوسي مربع كالتالي : Console.WriteLine( grades[0] ); للمزيد حول المصفوفات [Array Tutorial]
  21. وعليكم السلام يوجد صف يسمى Random Class يحوي على عدّة طرائق تستطيع عبرها توليد أرقام عشوائية وفق عدّة تخصيصات وهي : • الطريقة Next بدون بارمترات تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر بعدد خانات غير محدود , مثال : Random r = new Random(); int hsoub = r.Next(); // ex: return 251487516 • الطريقة Next مع بارمتر واحد تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر وتنتهي عند الرقم المُحدد ضمن البارمتر , مثال : Random r = new Random(); int hsoub = r.Next(50); // ex: return 23 • الطريقة Next مع بارمترين تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر تبدأ عند الرقم المُحدد ضمن البارمتر الأول وتنتهي عند الرقم المُحدد ضمن البارمتر الثاني , مثال : Random r=new Random(); int hsoub = r.Next(100,500); ex: return 400 • الطريقة NextDouble بدون بارمترات تستطيع عبرها توليد أرقام عشوائية أكبر تماماً من الصفر وأصغر تماماً من الواحد بعدد خانات عشرية غير محدود , مثال : Random r=new Random(); int hsoub = r.NextDouble(); ex: return 0.265478513259841لمصدر : [Random Class]
  22. الكود من ناحية الـ Syntax صحيح ولكن عملياً أنت تضع قيمة textBox2 إلى جانب قيمة textBox1 لو افترضنا ان قيمة textBox2 تساوي 5 وقيمة textBox1 تساوي أيضاً 5 ستكون قيمة textBox3 هي 55 السبب أن نمط العنصر textBox هو string وبالتالي القيمة التي تُخزن ضمنه من نمط string وعند تحويل رقم من نمط int إلى نمط string سيُعامل الرقم معاملة الحرف فإذا تم جمعهُ مع رقمٍ آخر من نمط string سيكون الناتج هو الرّقمين بجانب بعضهم ولحل هذه المشكلة قم بتحويل القيم الرقمية التي تريد جمعها إلى نمط int عبر الكود التالي : Convert.ToInt32(textBox2.Text) + Convert.ToInt32(textBox1.Text)بعد هذه الخطوة قم بإسناد قيمة الجمع إلى عنصر textBox3 ولكن انتبه يجب عليك ارجاع نمط الناتج من int إلى string حتى تسطيع اسناده ليصبح كامل الكود هو : textBox3.Text = Convert.ToString (Convert.ToInt32(textBox2.Text) + Convert.ToInt32(textBox1.Text));