قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 25-05-2017, 03:08 PM المشاركة 25   
افتراضي



للرفع.
بانتظار الاخ f.abdelaziz.
ارجو ان تكون مشكلة النت قد حلت.
تحياتي ☺☺☺

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 25-05-2017, 03:19 PM المشاركة 26   
افتراضي


التحكم فى سير البرنامج :
يتم تنفيذ معظم عبارات statements البرنامج بشكل "متتابع" sequentially ، عبارة تلو الأخرى . هناك الكثير من الحالات التى يتطلب البرنامج "اتخاد قرار" حول العملية التى يتم تنفيذها فى الخطوة التالية . يمكن تعديل التحكم فى سير فى البرنامج باستخدام "عبارات التحكم فى سير البرنامج" . هذه العبارات تتضمن تعجيل السير بناء على "الاختيار" ، والتعديل الغير مشروط للسير ، وعبارات التكرار iteration . فى هذا الجزء ، سوف نتناول هذه العبارات التى تعدل من مسار التحكم فى البرنامج .

عبارات الاختيار Selection Statements :
تستند عبارات الاختيار على التعديل "المشروط" للتحكم فى سير البرنامج . على سبيل المثال ، إذا تم تقييم "شرط" بالقيمة TRUE ، عندئذ يتم تنفيذ جزء معين من البرنامج ، وإلا يتم تنفيذ جزء مختلف .
هناك عبارتين للاختيار : عبارات “if-else” وعبارة “switch-case” .

عبارات الاختيار if-else :
عبارة if :
عبارة “if” الأساسية لها الشكل التالى ، حيث التعبير expression عادة يتضمن عوامل منطقية أو عوامل علاقات مقارنة :

كود:
if(expression) statement;
• تستخدم عبارة if عندما يكون المطلوب تنفيذ عبارة ما "إذا تحقق شرط معين" .
• عبارة if تقييم (تختبر) تعبير الشرط expression الموجود داخل القوسين ( …) .
• إذا كانت نتيجة تقييم تعبير الشرط true ( قيمة غير صفرية) ، يتم تنفيذ العبارة statement (جسم if ) .
• إذا كانت نتيجة تقييم تعبير الشرط false(0) ، يتم تخطى تنفيذ العبارة statement (جسم if ) .
• لمعرفة المزيد عن تقييم تعبير الشرط ، راجع العوامل المنطقية وعوامل العلاقة .



فى المثال التالى ، إذا كان المتغير “p” يساوى “10” ، عندئذ فإن المتغير “k” يتم تزايده بواحد :

كود:
if(p == 10) k++;

ونظرا لأن المسافات البيضاء يتم إهمالها فى لغة السى فيمكن وضع العبارة statement فى سطر مختلف كما يلى :
if(p == 10)
k++;
عبارة if…else :
الصيغة العامة :

كود:
 if (expression) statement1 else statement2
• تستخدم عبارة if…else عندما يكون المطلوب تنفيذ عبارة ما statement1 عندما يتحقق شرط expression ، أوتنفيذ عبارة مختلفة statement2 إذا لم يتحقق هذا الشرط .
• عبارة “if” يمكن أن تستخدم مع “else” ، بحيث إذا كان تقييم تعبير الشرط expression بالقيمة true يتم تنفيذ العبارة التى تلى if (جسم if ) وتخطى تنفيذ العبارة التى تلى else .
• أما إذا كان تقييم التعبير expression بالقيمة false ، عندئذ يتم تخطى تنفيذ العبارة التى تلى if العبارة ، ويتم تنفيذ العبارة التى تلى “else” (جسم else) .



فى المثال التالى ، إذا كان المتغير Total يساوى MAX ، عندئذ يتم تزايد المتغير Sum بواحد ، وإلا (وأن لم يكن يساويه) يتم تناقص المتغير Sum بواحد :

كود:
if(Total == MAX) Sum++; else Sum–;

العبارة السابقة عادة يتم كتابتها بالشكل التالى :
if(Total == MAX)
Sum++;
else
Sum–;
• فى بعض التطبيقات ، قد نحتاج إلى تنفيذ أكثر من عبارة واحدة إذا كان الشرط TRUE أو FALSE . يتم تنفيذ ذلك بضم تلك العبارات داخل زوج من الأقواس “{}” ، كما هو مبين فى المثال التالى :

كود:
if(Cnt > Sum)
{
i = k + 4;
j = j*2;
}
if(i == 10 && Cnt < 100)
{
r1 = 2*x;
r2 = i + 4;
}
else
{
r1 = 0;
r2 = 0;
}

عبارة if…else المتداخلة ( عبارة if…else lf…else ):
عبارة if…else تنفذ كودين مختلفين بناء على كون اختبار الشرط بالقيمة true أو false . أحيانا يكون الاختيار من أكثر من احتمالين .
عبارة if…else المتداخلة تسمح لك بالتحقق من شروط متعددة وتنفيذ أكواد مختلفة لأكثر من شرطين .
صيغة عبارة if…else المتداخلة :

كود:
if (testExpression1) 
{
   // statements to be executed if testExpression1 is true
}
else if(testExpression2) 
{
   // statements to be executed if testExpression1 is false and testExpression2 is true
}
else if (testExpression 3) 
{
   // statements to be executed if testExpression1 and testExpression2 is false and testExpression3 is true
}
.
.
else 
{
   // statements to be executed if all test expressions are false
}
• عبارة if…else if…else تسمح لك بتنفيذ بلوك كود من بين بلوكات الأكواد الكثيرة المختلفة . إذا كنت تختبر شرط لمتغير واحد فإنه من الأفضل استخدام عبارة switch . عبارة switch غالبا ما تكون أسرع ، وواضحة البناء ، وسهلة الفهم .






اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 25-05-2017, 03:29 PM المشاركة 27   
افتراضي


عبارات الاختيار باستخدام switch :
هناك حالات حيث قد نرغب فى القيام بعمل اختبارات شروط متعددة الطرق . على سبيل المثال ، فى تطبيق نوع القائمة menu ، اختيار المستخدم يتم عن طريق مقارنة عدد من الخيارات ، ويتم القيام بفعل مختلف مع كل خيار . مثل هذا البرنامج يمكن أن يتم كتابته عاديا باستخدام عبارات الاختيار من النوع if…else . ومع ذلك ، عندما يكون هناك خيارات كثيرة ، فإن استخدام if…else يجعل البرنامج صعب القراءة .
عادة تستخدم عبارة switch فى اختبارات الشروط متعددة الطرق . الشكل العام لهذه العبارة كما يلى :

كود:
switch (condition)
{
case condition 1:
statements;
break;
case condition 2:
statements;
break;
....................
....................
case condition n:
statements;
break;
default:
statements;
break;
}
عبارة switch تعمل على النحو التالى :
فى البداية يتن تقييم (اختبار) المتغير condition .
إذا كان المتغير condition يساوى condition 1 ، عنئذ يتم تنفيذ العبارات التابعة للحالة condition 1 .
وإذا كان المتغير condition يساوى condition 2 ، عندئذ يتم تنفيذ العبارات التابعة للحالة condition 2 .
هذه العملية تستمر حتى الحالة condition n ، حيث إذا كان المتغير condition يساوى condition n ، عندئذ يتم تنفيذ العبارات التابعة للحالة condition n .
إذا كان المتغير condition لا يساوى أى من الحالات conditions 1 إلى n ، عندئذ يتم تنفيذ العبارات التابعة للحالة الافتراضية default .
لاحظ استخدام عبارات break فى كل بلوك حتى نتأكد من العودة إلى نهاية عبارات switch ( بعد قوس الإغلاق) ويتم القفز خارج بلوك الاختيار . بدون عبارات break ، فإن البرنامج سوف يستمر فى تنفيذ تلك العبارات المصاحبة للحالة التالية . عبارة break الأخيرة ليست إجبارية ، لأن بلوك switch يغلق بعد هذه العبارة . الحالة الافتراضية default هى خيار ويمكن تجنبها إذا كنا متأكدين من أن المتغير condition سوف يكون مساويا لواحد من conditions 1 إلى n .



المثال التالى يوضح جزء من برنامج تم تنفيذه باستخدام كل من عبارات الاختيار if…else و switch . وظيفيا ، الكودان يساوى كل منهما الآخر .


كود:
if(x == 1) 						switch(x)
statement1; 							{
else if(x == 2) 							case 1:
statement2; 								statement1;
else if(x == 3) 								break;
statement3; 							case 2:
else 									statement2;
statement4; 								break;
case 3:
statement3;
break;
default:
statement4;
}


المثال المبين أدناه ، يبين كيفية استخدام عبارة الاختيار switch .
المطلوب كتابة كود برنامج يستخدم عبارة switch لتحويل الحروف السداسية عشر من A إلى F إلى مكافئها العشرى . افرض أن حرف الدخل يتم تخزينه فى متغير يسمى chr ، والخرج يتم تخزينه فى المتغير y .
الحل : لعلك تتذكر أن المكافئات العشرية للأرقام السداسية عشر هى :




كود البرنامج المطلوب يكون بالشكل التالى :

كود:
switch (chr)
{
case ‘A’:
y = 10;
break;
case ‘B’:
y = 11;
break;
case ‘C’:
y = 12;
break;
case ‘D’:
y = 13;
break;
case ‘E’:
y = 14;
break;
case ‘F’:
y = 15;
break;
}


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 25-05-2017, 03:29 PM المشاركة 28   
افتراضي


حياك الله حياك الله.
سلمت يداك .
اخي الكريم هذا الجدول الذي ادرجته اخرا احب ان تشرحه ايضا .
وانتظر منك ان تنبهني بانتهاء المرحلة الاولى لانني سانسخ كلامك واطبعه ان كانت هناك مشكلة بالنت.
شكرا لك 😗😗😗😗😗😗


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 25-05-2017, 03:51 PM المشاركة 29   
افتراضي


حياك الله حياك الله.
سلمت يداك .
اخي الكريم هذا الجدول الذي ادرجته اخرا احب ان تشرحه ايضا .
وانتظر منك ان تنبهني بانتهاء المرحلة الاولى لانني سانسخ كلامك واطبعه ان كانت هناك مشكلة بالنت.
شكرا لك 😗😗😗😗😗😗
أخى الكريم شكرا جزيلا لك
هناك عدة أنظمة للأعداد ، نحن نعرف منها النظام "العشرى" الذى يستخدم "عشرة" أرقام هى الأرقام من "0" إلى "9" . يوجد أيضا النظام "الثنائى" الذى يستخدم رقمين فقط هما "0" و "1" ، كما يوجد النظام "السداسى عشر" الذى يستخدم 16 رمز هى الأرقام من "0" إلى "9" علاوة على الأحرف من "A" إلى "F" بمعنى أن الحرف "A" يعادل الرقم "10" والحرف "B" يعادل الرقم "11" وهكذا وهو ما مذكور فى الجدول .

المشكلة ليست فى النت ، المشكلة فى برامج ، ومواقع تحميل .

مع تمنياتى بدوام التوفيق


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 25-05-2017, 04:02 PM المشاركة 30   
افتراضي


لا لا اخي اقصد بالمشاركة السابقة عن هذه .
فعندما كنت اكتب مشاركتي سبقتني بمشاركتك ولم انتبه الا الان .
بارك الله بك الاعداد العشرية اعرفها شكرا لك .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 28-05-2017, 02:15 PM المشاركة 31   
افتراضي


عبارات التكرار Repetition Statements :
هناك لبنة أساسية أخرى فى أى لغة برمجة وهى "التكرار" repetition، أو بناء الحلقة . فيها يتم تنفيذ واحد أو مجموعة من التعليمات مرارا وتكرارا ، حتى يتم استيفاء (تحقيق) بعض الشروط . فى الأساس ، المترجم ميكروسى برو يدعم ثلاثة أنواع من عبارات التكرار وهى حلقة while ، وحلقة do – while ، وحلقة for .

عبارة while :
الشكل العام لعبارة while كما يلى :

كود:
while(expression) statement;
هنا ، يتم تنفيذ العبارة statement طالما أن تعبير الشرط expression صواب (متحقق) true . بشكل عام ، يكون عدد العبارات أكثر من واحدة ، ويتم استخدام زوج من الأقواس {..} لاحتواء العبارات كما يلى :

كود:
while(expression)
{
statements;
}
كيف تعمل حلقة while ؟
عند الوصول إلى حلقة while ، يتم تقييم (اختبار) تعبير الشرط expression .
• إذا كان تقييم تعبير الشرط true (غير صفرى) يتم تنفيذ كود عبارات "جسم الحلقة" statements .
• يتم تقييم تعبير الشرط مرة أخرى ، وتتكرر العملية حتى يكون التقييم false ، عندئذ لا يتم تنفيذ جسم الحلقة ويتم تخطيها إلى العبارة التى تلى قوس الغلق مباشرة .



فى المثال التالى ، يتم تشكيل حلقة ، باستخدام عبارة while ، تتكرر 10 مرات . متغير التحكم فى الحلقة هو “i" ويتم إعداده فى الحالة الابتدائية بالقيمة “0” قبل دخول الحلقة . يتم تنفيذ العبارات statements طالما أن “i" أقل من “10” . لاحظ أنه داخل الحلقة ، عداد الحلقة “i" يتم تزايده بواحد “1” عند كل تكرار .

كود:
i = 0;
while(i < 10)
{
statements;
i++;
}
مثال :
اكتب برنامج يقوم بإعداد مصفوفة أعداد صحيحة integer تسمى MyArray "بأصفار" ، على فرض أن المصفوفة لها 10 عناصر .
الحل :
فيما يلى البرنامج المطلوب :


كود:
void main()
{
unsigned char i;
int MyArray[10];

i = 0;
while(i < 10)
{
MyArray[i] = 0;
i++;
}
}
عندما يتم استخدام عبارة while ، من المهم التأكد من أن الشرط الذى يحافظ على الحلقة "يتغير داخل الحلقة" ، وإلا تم تشكيل حلقة لا نهائية . فيما يلى البرنامج أعلاه مكتوب خطأ والذى لن ينهى الحلقة أبدا . يقوم هذا البرنامج بإعداد الابتدائى لعناصر المصفوفة بأصفار بشكل متكرر .


كود:
void main()
{
unsigned char i;
int MyArray[10];

i = 0;
while(i < 10)
{
MyArray[i] = 0;
}
}

• فى بعض الأحيان قد بكون من الضرورى إنشاء حلقات لانهائية فى البرنامج . يمكن تحقيق ذلك بسهولة باستخدام عبارة while ، كما هو موضح أدناه :


كود:
while(1)
{
statements;
}
هنا ، شرط تكرار الحلقة متحقق بصفة دائمة لأن تقييم “1” تكون true (غير صفرية) .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 28-05-2017, 02:27 PM المشاركة 32   
افتراضي


عبارة do – while :
هذه العبارات هى اختلاف مفيد لعبارة while . الشكل العام لعبارة do – while يكون كما يلى

كود:
do
{
statements;
} while(expression);
هنا ، يتم تنفيذ العبارات statements طالما أن التعبير expression يكون true . التعبير expression عادة يحتوى على عبارات منطقية وعبارات علاقات .



فى المثال التالى ، يتم إنهاء الحلقة بعد التكرار 10 مرات

كود:
i = 0;
do
{
statement;
i++;
} while(I < 10);
لاحظ ، مرة أخرى ، أن الشرط الذى يحافظ على الحلقة يتم تغيره داخل الحلقة ، بحيث يتم إنهاء الحلقة بعد العدد المطلوب من التكرارات .
هناك اختلاف بين عبارة while وعبارة do – while . العبارات statements داخل حلقة while قد لا يتم تنفيذها أبدا إذا كان الشرط false . على الجانب الآخر ، العبارات statements داخل حلقة do – while يتم تنفيذها "مرة واحدة" على على الأقل ، وذلك لأنه يتم اختبار الشرط عند نهاية الحلقة .
الأمثلة التالية توضح كيفية بناء حلقة do – while واستخدامها فى البرامج :
مثال 1 :
اكتب برنامج للإعداد الابتدائى لمصفوفة أعداد صحيحة integer تسمى MyArray ، بأحاد “1s” . افترض أن المصفوفة بها 100 عنصر .
الحل : البرنامج المطلوب يكون كما يلى :


كود:
void main()
{
unsigned char i;
int MyArray[100];

i = 0;
do
{
MyArray[i] = 1;
i++;
} while(i < 100);
}
مثال 2 :
اكتب كود حلقة باستخدام عبارة do – while لنسخ سلسلة string تسمى “B” إلى سلسلة أخرى تسمى “A” .
الحل :
تذكر أن السلسلة هى مصفوفة أحرف تنتهى بحرف NULL(\0) . حلقة do – while أدناه سوف تنسخ محتويات السلسلة B إلى السلسلة A ، بما فى ذلك حرف الانتهاء NULL .
لاحظ أنه يتم تزايد “i” بعد أن يتم استخدام قيمتها كمرجع للسلسلة B .
كود:
i = 0;
do
{
A[i] = B[i];
} while(B[i++] != ‘\0’);

عند استخدام عبارة do – while ، من المهم التأكد من أن الشرظ الذى يحافظ على الحلقة يتم تغيره داخل الحلقة ، وإلا يتم تشكيل حلقة لانهائية . فيما يلى البرنامج أعلاه مكتوب بخطأ والذى يؤدى إلى عدم إنتهاء الحلقة مطلقا . البرنامج يتكرر فى الإعداد الابتدائى لعناصر المصفوفة بالآحاد :

كود:
void main()
{
unsigned char i;
int MyArray[100];

i = 0;
do
{
MyArray[i] = 1;
} while(I < 100);
}
• احيانا يكون من الضرورى إنشاء حلقات لانهائية . يمكن تحقيق ذلك بسهولة باستخدام عبارة do – while كما يلى :

كود:
 do
{
statements;
} while(1);
مثال :
اكتب برنامج لضرب مصفوفتان أعداد صحيحة اسمهما X و Y كل منهما له 10 عناصر ، وخزن المجموع فى متغير نوع العدد الصحيح والمسمى Sum .
الحل :
البرنامج المطلوب يكون بالشكل التالى :

كود:
 void main()
{
int X[10], Y[10], Sum;
unsigned char I = 0;
Sum = 0;
do
{
Sum = Sum + X[i]*Y[i];
i++;
} while(I < 10);
}



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:39 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)