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

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 11:49 PM المشاركة 1   
افتراضي عبارات (جمل ) التحكم فى مسار البرنامج والحلقات مع لغة Basic والمترجم mikroBasic PRO f Twitter FaceBook Google+



عبارات (جمل ) التحكم فى مسار البرنامج والحلقات مع لغة Basic والمترجم mikroBasic PRO for PIC
(الجمل) الشرطية CONDITIONAL STATEMENTS
الشروط هى مكونات شائعة الاستخدام فى البرنامج . فهى تمكن عبارة أو عدد من العبارات statements ليتم تنفيذها اعتمادا على صحة التعبيرexpression. بعبارة أخرى 'إذا تم إستيفاء الشرط (...) , إفعل (…) . وإلا , إفعل (…) . يمكن لعبارة (جملة) الشرط أن تكون متبوعة بواسطة عبارة واحدة أو بواسطة كتلة (مجموعة) من العبارات المراد تنفيذها .

1- عبارة (جملة) IF الشرطية CONDITIONAL STATEMENT IF
بناء الجملة لعبارةif كما يلى :


كود:
if expression then operations end if
إذا كانت نتيجة التعبير expression صحيحةtrue (not 0) ، يتم تنفيذ العملياتoperations ، ثم يتقدم البرنامج بالتنفيذ من بعد end if. إذا كانت نتيجة التعبير غير صحيحة false (0)، لا يتم تنفيذ العمليات operations وعلى الفور يتقدم البرنامج بالتنفيذ من بعد end if.
كما يمكن أن يستخدم العامل ifفى تركيبة مع العامل elseكما يلى :

كود:
if expression then operations1 else other operations2 end if
إذا كانت نتيجة التعبير expression صحيحة true (not 0)، يتم تنفيذ العملية operations1، وإلا يتم تنفيذ عملية أخرى operations2. يتم تقدم تنفيذ برنامج بعد تنفيذ هذه العمليات من بعد end if .
عبارات IF المتداخلة NESTED IF STATEMENTS :
عبارة ifالمتداخلةتحتاج إلى عنايةإضافية .
عبارة ifالمتداخلةهى عبارة ifتستخدم داخل عبارة if أخرى . وكقاعدة عامة ، يتم تحليلها بدءا من أبعد عبارة if متداخلة ، فى حين يتم ربط كل عبارة elseبأقرب if لها كما يلى :






2- عبارة (جملة) SELECT CASE
عبارة select case هى عبارة شرطيةمع تفريعات متعددة . وهى تتألف منتعبير الاختيار (الانتقاء) , وهو الشرط , وقائمةمنالقيم الممكنةلهذاالتعبير.
فى البداية ، يتم تقييم تعبير الاختيار , ثمتتم مقارنتةبجميعالقيم المتاحة . إذا تم العثور علىتطابق ، يتم تنفيذ العبارات التالية للتقييم المتطابق ثم إنهاء عبارة select case . إذا كان هناكتطابقات متعددة ، سوف يتم تنفيذ العبارات التالية للتقييم المتطابق الأول . إذا لم يكن هناك قيمة تتطابق مع تعبير الاختبار , عندئذ يتم تنفيذ العبارات الافتراضية . فيما يلي مثاللبيان عبارة select case :



كود:
select case decimal_digit ' Decimal-digit value is being checked case 0 mask = %01111110 ' Display "0" case 1 mask = %00110000 ' Display "1" case 2 mask = %01101101 case 3 mask = %01111001 case 4 mask = %00110011 case 5 mask = %01011011 case 6 mask = %01011111 case 7 mask = %01110000 case 8 mask = %01111111 case 9 mask = %01111011 end select





هذا المثال لروتين برنامج تحويل الأرقام العشرية إلى المزيج الثنائى المناسب على المنفذ من أجل عرضها على شاشة وحدة عرض ليدات (سفن سيجمنت) .


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 24-05-2013 الساعة 11:53 PM
اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 11:55 PM المشاركة 2   
افتراضي


حلقات البرنامج PROGRAM LOOPS
بعض التعليمات(العمليات) يتم تنفيذهاأكثر من مرةفي البرنامج .مجموعة الأوامر التى تتكرر تصنع حلقة loopبرنامج .كم مرةسيتم تنفيذها، أى إلى متى سيبقى البرنامج داخل الحلقة، يعتمد على ظروفترك (مغادرة)الحلقة .

1- حلقة WHILE
يتم تنفيذحلقة whileعندمالا يتم تحديدعدد مرات التكرار. من الضرورى التحقق من شرط التكرارقبلتنفيذالحلقة.ببساطة ،يتم تنفيذ حلقة while طالما يتماستيفاء جميعالشروطاللازمة لتنفيذها.
فيما يلى شكل بناء حلقة while:

كود:
while expressionstatements wend

العباراتstatements تمثل مجموعة منالعبارات التى يتم تنفيذهابشكل متكررطالما أنقيمةالتعبيرexpression صحيحا. بعبارة أخرى، يبقى البرنامجفى الحلقة حتىيصبحالتعبير غير صحيح . يتم فحصقيمةالتعبيرقبل تنفيذالتكرار التالى . وفقا لذلك ، لو كانت قيمة التعبير غير صحيحة قبل دخول الحلقة ، فلن يتم تنفيذ التكرار ، أى لن يتم تنفيذ العبارات أبدا . سوف يتقدم البرنامج بالتنفيذ مننهاية الحلقة wend(من التعليمات التى تلى التعليمة wend).
هناك نوع خاصمن حلقات البرنامج هى الحلقة التى لا نهاية لها endless loop, ويتم إنشاؤهاإذا كان شرطالخروج من الحلقة لا يتغيرداخلالحلقة .
في هذه الحالة، يكون التنفيذبسيطنتيجة لأن تقييم الشرط يكون هودائماصحيح , مما يعنيأن البرنامجيظل فى الحلقة .

كود:
while 1 ' ‘true’ can be written instead of ‘1’ ... ' Expressions will be unceasingly executed (endless loop) ... wend

2- حلقة FOR
يتم تنفيذ حلقة forعندمايتم تحديدعدد مرات التكرار. فيما يلى شكل بناء حلقة for :


كود:
for counter = initial_value to final_value [step step_value] statements next counter

هنا، مع كل تكرار للحلقة، يتم زيادة المتغير "العداد" counter بقيمة الخطوة step_value. البارامتر step_value هو قيمة اختيارية لعدد صحيح ، وتعتبر بواحد إذا حذفت. قبل التكرار الأول ، يتم تحديد "العداد" counterبقيمته الابتدائية initial_valueوسوف يتزايد حتى يصل أو يتجاوز "القيمة النهائية" final_value. سوف يتم تنفيذ العبارات statementsمع كل تكرار. كل من "القيمة الابتدائية" initial_value و"القيمة النهائية" final_valueينبغى أن تكون تعبيرات متوافقة مع "العداد" counter، في حين أن العبارات statementsيمكن أن تكون أى عبارة لا تغير قيمة العداد . لاحظ أن بارامتر "قيمة الخطوة" step_valueقد يكون سالب ، وبالتالى يمكن العد التنازلى .
مثال :
كود:
for k=1 to 5 ' Increase variable k five times (from 1 to 5) and operation ' keep on executing "operation" every time ... next k


هنا , سوف يتم تنفيذ مجموعة من التعليمات (العمليات) operation خمس مرات (بعد 5 تكرارات k=5). بعد ذلك ، سوف يتم تحديد أن k<5 ويكون تقييم الشرط k=1 to 5 "غير صحيح" falseويتم خروج البرنامج من الحلقة .
3- حلقة DO :
يتم تنفيذ حلقة doعندما لا يتم تحديد عدد مرات التكرار. يتم تنفيذ الحلقة بشكل متكرر طالما أن نتيجة تقييم التعبير expression صحيحة true. فيما يلى شكل بناء الجملة لحلقة do :


كود:

do statements loop until expression


في هذه الحالة، العبارات statements تمثل مجموعة من العبارات التى يتم تنفيذها طالما أن التعبير expression صواب true. أى يتم فحص شروط الحلقة فى نهاية الحلقة، لذلك يتم تنفيذ الحلقة على الأقل مرة واحدة بغض النظر عن ما إذا كان الشرط صحيحا أو غير صحيح . في المثال التالى ، يظل البرنامج فى حلقة doحتى يصل المتغير (a) إلى 1E06 ( مليون تكرار) .
كود:
a = 0 ' Set initial value do a = a+1 ' Operation in progress loop until a <= 1E06 ' Check condition


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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-05-2013, 09:13 AM المشاركة 3   
افتراضي


عبارة GOTO :
عبارة "goto"تمكنك من إجراء القفز jump المطلق إلى نقطة أخرى فى البرنامج . كن حذرا عند استخدام هذه العبارة لأن تنفيذها يؤدى إلى القفز غير المشروط وتجاهل أى نوع من قيود التداخل . يتم التعرف على النقطة المقصودة عن طريق "ملصق أو لافتة" label , والذى يستخدم كدليل لعبارة "goto". يتكون الملصق من معرف صالح متبوعا بنقطتين ( . فيما يلى شكل بناء عبارة "goto":


كود:
goto: label_name

هذة العبارة تنفذ القفز إلى الملصق المسمى label_name . عبارة gotoيمكن أن تسبق أو تتبع الملصق . وبالتالي فإنه ليس من الممكن القفز داخل أو خارج إجراء أو دالة . عبارة gotoيمكن استخدامها للخروج من أى مستوى من الهياكل المتداخلة . من غير المستحسن القفز فى حلقة أو فى عبارات هيكل آخر لأن ذلك قد يعطى نتائج غير متوقعة.

عبارة GOSUB :
الروتين الفرعى subroutine هو جزء من الكود ضمن برنامج أكبر يتم تنفيذه عند الطلب . فهو ينفذ مهمة محددة ومستقلة نسبيا عن بقية الكود . وسوف يقوم المترجم بالقفز إلى الروتين الفرعى ، وتنفيذه ، والعودة إلى البرنامج الرئيسى . يتم استخدام الكلماتgosub و returnفى لغة Basicللدلالة على بداية ونهاية الروتين الفرعى كما يلى :

كود:
gosub label_name
...
...
...
label_name:
...
return

يعتبر الكثيرون أن الروتينات الفرعية صعبة الحفظ , وصعبة القراءة والاستيعاب ، تماما مثل عبارة goto. لذلك , يتم استخدامها فقط إذا لم يكن هناك أى حل أفضل.

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024