أوامر الاشتراطات - C++ Tutorial
من انتقلوا معنا الى الدرس الثاني يبدو انهم سوف يكملون المسيرة الى اخرها واتمنى انا ان اكملها معهم .
كما تحدثنا عن اللغات بصفة عامة وقلنا ان الاشتراطات من الامور الهامة في اي لغة والآن لانريد ان نعيد ما قلناه سابقا لندخل مباشرة في موضوع اليوم
المعنى البسيط والقريب لموضوع اليوم انك تريد من برنامجك ان يفعل اشياء معينه عند تحقق شروط معينه ولكن كيف نصيغ هذه الاوامر هذا هو موضوع اليوم
انك ترى الشروط دائما وربما بدون ان تدري فأول شئ فعلته اليوم عند اتصالك بالانترنت هو ادخال كلمة السر – أليس كذلك – نعم هو كذلك ولا شئ غيره – ان برنامج الاتصال قد وضع شرط صحة كلمة السر لكي يمكنك من الدخول وربما اشياء اخرى مثل عدم انتهاء مدة الاشتراك وصحة اسم المستخدم وهكذا كلها شروط انها ايضا موضوعنا هذا اليوم ومعظم الشروط المستخدمه لقيمتين هي هل هما متساويتان ام احدهما اكبر او اصغر بالاضافة الى المعاملات البولينية Boolean operators
ومن درس منكم علم الجبر سوف يتذكرها بسرعة ام من نسى او لم يدرسها اصلا فالموضوع بسيط جدا لانك تمارسه في حياتك اليومية ربما دون ان تدري وهي
AND , OR , NOT
كمثال من الحياة اليومية
Ask Mohamad AND Ali
يجب ان تسأل محمد وعلى وليس واحد منهم فقط بل يجب ان يكون السؤال للاثنين
Ask Mohamad OR ALI
اي يجب ان تسأل محمد او على يكفي فقط واحد منهم
Ask Mohamad NOT Ali
اي يجب ان تسأل محمد وليس على فلو سألت على فان الشرط غير متحقق
الجدول التالي يعبر عن طريقة صياغة المعاملات البولينية في لغة سي++
| التعبير أو الصيغة | التفسير |
| || | OR |
| && | AND |
والجدول التالي يعبر عن العلاقات الشرطية وكيف تصاغ في لغة سي++
| التعبير أو الصيغة | التفسير |
| > | اكبر من فتحة القوس في اتجاه الاكبر |
| < | اصغر من |
| == | يساوي (تذكر انهم علامتين متجاورتين |
| >= | اكبر من او يساوي |
| <= | اصغر من او يساوي |
| != | لا يساوي |
تذكر جيدا خطأ من السهل ان تقع فيه ان الشروط غير التخصيص بمعنى انك عندما تخصص قيمة لمتغير فاءنك لابد ان تستخدم علامة يساوي واحدة فقط مثل
A=5;
B=A;
C=18;
اما في صياغة شرط فاءنك لابد ان تضع علامتين اذا اشترطت التساوي مثل
if (A==B)
if (A==18)
ارجو ان تنتبه لذلك
ولنأخذ مثال اليوم فقد تأخرنا كثيرا
// This is a remark do you remember ?
// It has no effection , just for you , is it?
#include <iostream.h>
int main()
{
int Num;
cout<<"Please input a Number : ";
cin>>Num;
if(Num < 50)
{
cout<<"The Number is less than 50";
}
if(Num == 50)
{
cout<<"The Number is equal to 50";
}
if(Num > 50)
{
cout<<"The Number is bigger than 50";
}
return 0;
}
لقد بدأت السطور الحمراء بالامر
cin<<Num;
هذا الامر جديد علينا ان معناه ادخل قيمة المتغير Num والذي اعلن عنه في بداية البرنامج على انه عدد صحيح فسوف يتوقف البرنامج عند هذا الامر ليطلب منك ادخال قيمة يخزنها في المتغير Num ليجري عليها العمليات التي تلي السطر المذكور سابقا
وألآن الى الاوامر التالية موضع شرحنا اليوم
if(Num < 50)
{
cout<<"The Number is less than 50";
}
والقاعدة هي الامر if ويفتح قوسين عاديين بينهما شروط حسب القاعدة السابق شرحها في اول الموضوع ثم قوس لبداية بلوك تعليمات واحد لفتح بداية بلوك والاخر للتحديد نهاية بلوك ومابداخل القوسين عدة تعليمات ينفذها البرنامج اذا تحقق الشرط
وهنا الشرط هو انك اذا ادخلت قيمة اصغر من 50 فمعنى ذلك تحقق الشرط وعليه سوف يطبع البرنامج الرسالة
cout<<"The Number is less than 50";
واذا لم يتحقق الشرط فلن يطبع الرسالة السابقه بل سيتحول الى السطور التالية
if(Num == 50)
{
cout<<"The Number is equal to 50";
}
بنفس الاسلوب السابق يختبر الامر if ماذا كان الرقم الذي ادخله المستخدم يساوي 50 فاذا كان ذلك صحيحا فسوف يقوم بتنفيذ الامر او الاوامر التي بداخل بلوك الشروط وهي
cout<<"The Number is equal to 50";
فاءذا لم يتحقق الشرط فسوف لن ينفذ البرنامج مابداخل بلوك الشروط وينتقل الى السطور التالية
if(Num > 50)
{
cout<<"The Number is bigger than 50";
}
فاذا تحقق الشرط هو ان العدد المدخل اكبر من خمسون فسوف ينفذ البرنامج الامر او الاوامر التي بداخل بلوك الشرط وهو الامر
cout<<"The Number is bigger than 50";
والا فسوف ينتقل البرنامج الى السطور التالية
return 0;
}
حيث ينتهي البرنامج ويخرج وتذكر قوس اغلاق البلوك وهو البلوك الرئيسي للدالة main
البرنامج السابق هو برنامج بسيط يقوم باستقبال رقم منك ليتعرف عليه ما اذا كان هذا الرقم اصغر من او يساوي او اكبر من 50 وفي كل حالة حسب ماتدخل من ارقام سوف يطبع لك الرسائل
· الرقم اصغر من 50
· الرقم يساوي 50
· الرقم اكبر من 50
بالطبع سوف تحصل على اجابة واحدة من الثلاثه حسب المدخلات
لنأخذ عدة اوامر شرطية في صورة فردية للشرح لدمج كل ماسبق شرحة في دالة واحدة
if (A == 5 && B == 7)
{
نفذ هذه الاوامر عند تحقق الشرط
}
الشرط هو ان تكون قيمة المتغير A تساوي خمسة وقيمة المتغير B تساوي 7 لتنفيذ ما بداخل بلوك الشروط فاءذا كانت مدخلاتك كما يلي
| A | B | مدى تحقق الشرط |
| 3 | 2 | لايتحقق الشرط |
| 5 | 3 | لايتحقق الشرط |
| 3 | 7 | لايتحقق الشرط |
| 5 | 7 | يتحقق الشرط |
| 7 | 5 | لايتحقق الشرط |
| 1 | 2 | لايتحقق الشرط |
ولمثال آخر بلوك الشروط التالية
if (A > 5 || B <= 7)
{
نفذ هذه الاوامر عند تحقق الشرط
}
وقد كان الشرط السابق ان تكون قيمة A اكبر من 5 أو قيمة B اصغر من او تساوي
7 فلو كانت ادخالاتك كمايلي
| A | B | مدى تحقق الشرط |
| 3 | 2 | لايتحقق الشرط |
| 5 | 3 | لايتحقق الشرط |
| 3 | 7 | لايتحقق الشرط |
| 7 | 2 | يتحقق الشرط |
| 10 | 8 | لايتحقق الشرط |
| 10 | 7 | يتحقق الشرط |
مدخلك الى تعلم البرمجة العادية 3 - C++ Intro 3
ثامنا : يجب ان تعرف أوامر التخزين على الاقراص داخل اللغة التي تتعلمها
بعد ان قمت بتخزين بيانات الموظفين عليك الآن بتخزينها على القرص حتى لاتفقد وتقوم باسترجاعها وقتما تشاء وكذلك اوامر الاسترجاع راجع هذه الجزئية في كتب اللغة التي تتعلمها وافضل وانصح بجعلها في مرحلة متأخرة من التعليم
تاسعا : يجب ان اوامر اخراج البيانات على الشاشة او الطابعة داخل اللغة التي تتعلمها
بالطبع هي المرحلة الاخيرة فأنت تريد ان ترى ثمرة عملك لكي يكون البرنامج مفيدا فما فائدة البرنامج اذا لم تظهر نتائجه
مثال
cprintf ( “The employer’s name is “,HisName);
البرنامج يقوم بطبع القيمة المخزنة في المتغير السابق ان عرفناه سابقا
كمتغير حرفي يحمل اسم الموظف ليقوم بطبع محتوياته
عاشرا : يجب ان تتعلم استخدام كومبايلر اللغة التي تستخدمها وهو الذي يقوم بعمل الملف القابل للتنفيذ من الكود الذي
كتبته وكذلك اوامر الحذف والتحرير واستخدام قوائم المساعدة ومرعاة كتابة اوامر اللغة بصيغة سليمة
ألان لنطبق كل المراحل السابقه في برنامج واحد لنتعرف على الفكرة وكما ذكرت لك سابقا لاتهتم بالاوامر المكتوبة هنا فهي خاصة بلغة سي كمثال ولكن تختلف البرمجة من لغة لاخرى
// This is a remark
// This code fragment has been written by Eng. Mohamad hasan
الآن نعلن عن المتغيرات
Struct MyData{
Int EmployerNumber;
Float HisSalry;
Char [40] HisName , buf [40];
}D;
int I;
double TotalSalries;
الآن نبدء ادخال البيانات بعمل دوران الف دورة
For (I = 0 ; I < 1000;I++){
ادخال الاسم
Gets (D.HisName);
ادخال الرقم المسلسل
AgainBaby:
Gets (buf);
D.EmployerNumber = atoi (buf);
If (D.EmployerNumber > 1000 ){
هنا نضع شرط عدم الزيادة عن الف كرقم لموظف
Printf (“Number is greater than 1000 , Please repeat again”);
Goto AgainBaby;
}
ادخال الراتب الشهري
Gets (buf);
HisSalry = atof (buf);
استدعاء روتين فرعي لتخزين البيانات
HaySaveMyData ();
}
هنا سنقوم بعمل دوران الف مرة لاستدعاء الالف بيان المخزنه لعرضهم
For (I = 0 ; I < 1000;I++){
والان سوف نضع روتين لاستدعاء البيانات من القرص
HayLoadThisRecord (I)
وهنا سوف نضع اوامر لعرض كل بيان تم تحميله من القرص
Printf (“\n Employer No. %d“, D.EmployerNumber );
Printf (“\n Employer Name %s“, D.HisName );
Printf (“\n Salary . %.2f“, D.HisSalary );
}
والآن الى الدوال الفرعية للتخزين
Void HaySaveMyData (void)
{
توضع اوامر الكتابة على القرص هنا (ليس موضوعنا في هذه المرحلة)
}
Void HayLoadThisRecord (int i)
{
توضع اوامر التحميل من القرص هنا (ليس موضوعنا في هذه المرحلة)
}