إشترك

احترف التعامل مع الجمل الشرطية




بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته درس اليوم هو عن التعامل مع الجمل الشرطية بجميع الطريق من البداية حتى الاحتراف و نبدأ على بركة الله :
التعامل مع الجملة الشرطية if …….then……..else..;
تسمح لك هذه الجملة بالسماح بتنفيذ أمر ما في حالة توفرت الشروط كمثال : إذا آمنت بالله  إذاً ستدخل الجنة و إلا ستدخل النار و الأمر لا يختلف كثيرا في حال البرمجة بلغة الدلفي تابع معي هذا الأمثلة لكي تفهم الشرح :
المثال 1 : أضف المكونات التالية : Button1 و Edit1 و Shape1 حيث ستكون أداة Edit1 لكتابة النقطة و أداة Button1 للتحقق من النقطة و أداة Shape1 ستكون لإظهار اللون إما جيد أو عادي أو سيء .بعد أن تضيف المكونات قم بكتابة الكود التالي في حدث الضغط على الزر button1  :
Begin
if edit1.Text<='10' then
shape1.Brush.Color:=clred;
 سيقوم هذا بالتالي : إذا كان النص الموجود في edit1  أقل من أو يساوي 5 إذا لون أداة shape1  هو أحمر و لكن تابع معي :
إذا كانت أقل من 10 فاللون أحمر  و إذا كانت النقطة ما بين 11 و 15 فاللون أصفر و إذا كانت النقطة أكثر من 16 و لا تتجاوز 20 فاللون أخر هل يمكن للطريقة السابقة أن تحل لنا هذا المشكل سنجرب :
if edit1.Text<='10' then
shape1.Brush.Color:=clred;
if edit1.Text>='11' then
shape1.Brush.Color:=clyellow;
if edit1.Text<='15' then
shape1.Brush.Color:=clyellow;
if edit1.Text>='16' then
shape1.Brush.Color:=cllime;
if edit1.Text<='20' then
shape1.Brush.Color:=cllime;
لا تخف الأمر لن يعمل كما تريده جربه و قم بكتابة النقطة 1 فإنك سترى بأن اللون أصبح أخضر الآن جرب أي عدد و سيصبح اللن أحمر هل تعرف لماذا :
أولا دلفي يقوم بتنفيذ الأوامر حسب الترتيب فإذا كان الأمر الأول بالإغلاق و الثاني بالتلوين فلن يعمل الأمر الثاني و هذا أمر بديهي
ثانيا : الأعداد 5 أو 15 أو 8 أقل من العدد 20 فالبرنامج يقوم بالأتي مثلا عندما تقوم بكتابة العدد 3 : يطابقه مع الشرط الأول فيتغير اللون إلى الأحمر و لكنه لن ينتهي هنا بل يطابقه مع الشرط الثاني و الثالث فيجد أنه يتحقق معهما فيقوم بتغير الألوان بسرعة من الأحمر إلى الأصفر إلى الأخضر جرب حذف الشرط الأخير و ستجد أن جميع الأعداد الأقل من 15 تغير اللون للأصفر . أتمنى أن يكون الشرح مفهوما و الآن سنحاول إيجاد طريقة لحل المشكل :
الحل الأول : يتطلب الأمر أن تقوم بكتابة شرط لكل عدد أي استخدام المساوات فقط و يعني 20 شرطا
الحل الثاني : استخدام جملة In  لتحديد المدى و للقيام بهذه المهمة يجب أن تكون على معرفة بسيطة بالمتغيرات و التعامل معها و سنشرح عمل هذه الجمة بعد أن نقوم بحل المشكل السابق :
المثال2 : أحضر نفس المكونات السابقة في المثال الأول و بعدها قم بكتابة الكود التالي :
Var
I:integer;
Begin
I:=strtoint(edit1.text);
If I in [0..10] then
Shape1.brush.color:=clred;
شرح الكود :
في البداية قمنا بتعريف متغير i  من نوع رقمي صحيح  integer و بعدها بدأ الأمر حيث قمنا بالإشارة إلى أن قيمة المتغير i  تساوي قيمة النص الموجود في edit1  أما strtoint فهي للتحويل من القيمة النصية إلى القيمة الرقمية لكي يتم حسابها .
ثم قمنا بكتابة الجملة الشرطية  التالية : إذا كانت قيمة المتغير i   " الذي قمنا بمساواته بقيمة النص الموجود في الأداة " واحدة من القيم المحصورة في المدى التالي " المدى يبدأ من 0 إلى 10  " إذا لون أداة shape1   سيصبح أحمر
الحل الثالث : باستخدام جمل ربط الشرط  و التي يمكن شرحها هكذا :
جملة and  تعني الربط بين الشرطين و تحقق كلاهما لتنفيذ الأمر
جملة Or  تعني تحقق شرط من الشرطين لكي يتم تنفيذ الأمر
جملة  xor  تعني تنفيذ الأمر في حال تحقق شرط واحد من الشرطين
جملة not  تعني نفي الشرط فإذا كان الشرط صحيح يصبح خاطئ
في حالتنا يمكننا استخدام جملة or في هذا المثال :
مثال 3 :
قم بإضافة نفس المكونات السابقة و اكتب الأمر التالي في حدث الضغط على الزر
var
i:integer;
begin
i:=strtoint(edit1.text);
if  (i=1) or (i=2) or (i=3) then
shape1.Brush.Color:=clred;
شرح الكود : نفس الشرح السابق ما عدا أن في جملة الشرط هذه قمنا بتحديد مجموعة من القيم لمطابقتها و هي 1 و 2 و 3 فإذا كان النص الموجود في الأداة edit1 هو أحد هذه القيم يتحقق الشرط و ينفذ الأمر و لكن إذا كانت هناك مجموعة كبيرة من الأوامر كيف يمكن للبرنامج تنفيذها في آن واحد . تابع المثال :
مثال 4 : أضف نفس المكونات السابقة و بعدها  أضف الكود التالي في حدث الضغط على الزر
var
i:integer;
begin
i:=strtoint(edit1.text);
if  (i=1) or (i=2) or (i=3) then
begin
shape1.Brush.Color:=clred;
showmessage('bad');
end;
end;
end.
الشرح : نفسه و لكن قمنا بإضافة begin  جديدة و هي لبداية أمر جديد و لكن يجب إضافة end  أخرى لأن كل بداية لكود يجب أن تكون لها نهاية و الكود الذي كتبته كامل لذلك قم بإضافة end ; واحدة لسابقتها
و الآن سننتقل لمثال آخر يشرح لنا else  التي تعمل في حال عدم تحقق الشرط و أرجوا متابعة المثال التالي :
المثال 5:أضف المكونات التالية  edit1/button1/button2 و اجعل خاصية visible  لbutton2  تصبح  false  لكي لا تظهر  و بعدها أكتب الأمر التالي في حدث الضغط على الزر button1  
If edit1.text='1234' then button2.visible:=true else
Showmessage('this is not true');
الشرح : يقوم هذا البرنامج بمطابقة النص المكتوب في أداة edit1  فإذا كان 1234  فستظهر أداة button2  و أذا كان غير ذلك فستظهر له رسالة فيها this is not true  و الآن انتهينا من هذا الجزء
أنتبه : يجب أن لا تكتب ;  قبل كلمة else

التعامل مع الجملة الشرطية case…of
يمكن اعتبارها البديل الأنسب لسابقتها لتدخلها في المهمات الصعبة كالموجودة في المثال التالي:
مثال 6 : في هذا المثال سنقوم بإضافة المكونات التالية : button1 / edit1  و بعدها قم بكتابة الكود التالي في حدث الضغط على الزر button1 


Var
 X:integer;
Begin
X:=strtoint(edit1.text);
Case x of
1:showmessage('bad');
2:showmessage('bad');
3:showmessage('bad');
4:showmessage('bad');
5:showmessage('bad');
6:showmessage('bad');
7:showmessage('bad');
8:showmessage('bad');
9:showmessage('bad');
10:showmessage('bad');
11:showmessage('good');
شرح الكود :
قمنا بتعريف متغير x من نوع integer  و بعدها بدء الكود في بدايته قمنا بجعل قيمة النص الموجود في أداة edit1  تساوي قيمة المتغير x  و بعدها كتبنا الجملة الشرطية التي معناها الإجمالي هو " إذا كان x  أحد القيم المطابقة للقيم المذكورة فسينفذ الأمر الذي يقابل كل قيمة " و بعدها كتبنا قيما مثلا إذا كانت القيمة هي 8 فسيظهر رسالة مكتوب فيها سيء bad  و لكن ما ذا عن المدى . نعم يجب أن نعرف كيف نتعامل مع المدى و الطريقة في الكود التالي :
Var
 X:integer;
Begin
X:=strtoint(edit1.text);
Case x of
1..10:showmessage('bad');
11..15:showmessage('good');
16..20:showmessage('very good');
ما عليك إلا كتابة أعلى و أصغر قيمة في المدى و بينهما .. نقطتان و لكن إذا ما كانت هناك مجموعة من الأوامر في حال تحقق شرط ما .تابع الكود التالي :
Var
 X:integer;
Begin
X:=strtoint(edit1.text);
Case x of
1..10:
Begin
form1.caption:='bad';
showmessage('bad');
End;
11..15:
Begin
form1.caption:='good';
 showmessage('good');
End;
16..20:
End;
Begin
form1.caption:='very good';
showmessage('very good');
الأمر واضح يجب أن تكتب الشرط مثلا " 15..16: " و بعدها تكتب begin  ثم تكتب الأوامر و بعدها تكتب end;  و لكن في حال لم يتحقق شرط ما يمكن إضافة else  بعد نهاية أوامر تحقق الشرط كما يوضح الكود التالي  :هذا الكود جزء فقط
Case x of
1..10:
Begin
form1.caption:='bad';
showmessage('bad');
End;
Else
showmessage('not true');

و بهذا ينتهي درس اليوم و ألقاكم في درس آخر و لمن وجد أخطاء في الأكواد تفضلوا الموضوع في ملف pdf  من هنا
و السلام عليكم و رحمة الله تعالى و بركاته

التعامل مع العمليات الحسابية في دلفي



بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته في درس اليوم سنتعلم كيف نتعامل مع العمليات الحسابية في دلفي حيث سنتطرق لها بالتفصيل و إنشاء الله إن ينال هذا الدرس إعجابكم و نبدأ على بركة الله  و لكن يجب إعطاء كل شيء قدر كبيرا من الأهمية :
الطريقة الأولى لانجاز العمليات الحسابية
1-    كيف تجرى العمليات الحسابية  لا بد أولا من توفر الأدوات التي سنقوم فيها بكتابة الأعداد التي سنقوم بكتابتها فلا بد أولا من توفر 3 أدوات edit   أو 2 فقط حيث يمكن استبدا الثالثة بأداة label  للنتيجة  يكون النص الموجود فيها 0   و 4 أدوات button  لكي تقوم بالحساب  و بعض المكونات الأخرى لتحسين الشكل و توضع البرنامج و هي 4 أداوت label  و بعدها سيصبح شكل الفورم هكذا :       

2-    أكتب الكود في كل زر حسب نوع العملية الحسابية و سأقوم بوضع الكود الخاص بعملية الجمع
Edit3.text:=floattostr(strtofloqt(edit1.text) + strtofloat(edit2.text));
و الآن سنشرح الكود بالتفصيل
الكود أو الأداة
الشرح
Edit3.text
في النص الموجود في هذه الأداة تظهر النتيجة كتابيا
FloatToStr
هذا السطر البرمجي معناه أن القيمة التي ستظهر في أداة النتيجة هي قيمة حرفية حيث أن وضيفة هذا السطر هو تحويل النتيجة من القيمة العددية من النوع flaot  إلى حرفية string  
StrToFloat
هو عكس الشرح السابق و هذا الكود من أجل تحويل القيمة النصية الموجودة في الأداة إلى قيمة عددية لكي يتم التعرف عليها و حسابها فلا يمكن حساب القيمة النصية
Edit1.text
النص الموجود في هذه الأداة هو العدد الأول
Edit2.text
النص الموجود في هذه الأداة هو العدد الثاني

الطريقة الثانية لإنجاز العمليات الحسابية
 الطريقة الثانية تقريبا هي نفس الطريقة و لكن الطريقة الثانية فيها بعض المميزات و سنشرحها و الآن قم بإضافة المكونات كما تبين الصورة التالية :

و بعدها قم بكتابة الكود التالي في حدث الضغط على الزر + و قبل ذلك قم بحذف begin  لكي لا تختلط الأمور
1
var
b,a : integer;
r : string;
begin
b:=strtoint(edit1.text);
a:=strtoint(edit2.text);
r:=inttostr(strtoint(edit1.Text) + strtoint(edit2.Text);)
label1.Caption:=r;
2
3
4
5
6
7

8

الآن سنقوم بشرح كل ما كتبناه واحدة بواحدة :
1)    يعني سنقوم بكتابة متغير و هو الذي يمكن أن يتغير أو يعدل عليه أثناء تنفيذ البرنامج
2)    قمنا بإضافة متغيرين   a  و  b  من نوع integer   إي عدد صحيح أو عدد تام
3)    قمنا بإضافة متغير r  من نوع string   أي قيمة حرفية يمكن قراءتها بواسطة الأدوات الموجودة في دلفي
4)    بداية السطر البرمجي
5)    قمنا بتعين قيمة للمتغير b   و هي العدد الموجود في الأداة edit1 
6)    نفس الشرح السابق
7)    قمنا بتحديد أن قيمة  r    الحرفية تساوي جمع القيمتين الرقميتين  و تحويلهما لقيمة حرفية قابلة للقراءة
8)    قمنا بتحديد الأداة التي تساوي قيمتها قيمة r  أي الأداة التي ستظهر لنا النتيجة
أما لم أراد أن يقوم ببرمجة آلة حاسبة دون اللجوء للأزرار الكثيرة فأقترح عليه هذا الموضوع من هذا الرابط
Learn-delphi-blog.blogspot.com/calc-whith-delphi

السلام عليكم و رحمة الله تعالى و بركاته
جميع الحقوق محفوظة لــ تعلم دلفي بالعربية 2015 ©