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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 18-05-2013, 01:00 PM المشاركة 17   
افتراضي



2-2 أسس البرمجة بلفة Basic :
مقدمة :
مثل استخدام أى لغة والذى لا يقتصر على الكتب والمجلات فقط ، فإن البرمجة بلغة Basicلا علاقة لها عن كثب بأى نوع خاص من أجهزة الكمبيوتر،أو بمعالج أو بنظام التشغيل. إنها لغة للأغراض العامة. بناء لهذا الواقع يمكن صنع بعض المشاكل لأن لغة Basicتختلف قليلا اعتمادا على تطبيقها (مثل الهجات المختلفة للغة واحدة). لذلك، لن يتوفر لك وصفا مفصلا لجميع سمات لغة Basicفى هذا الكتاب. بدلا من ذلك، سوف يتم وصف التطبيق الفعلى للبرمجة بلغة Basic، أى لغة Basic المستخدمة بواسطة المترجم
mikroBasic PRO الخاص بالميكروكونترولر PIC.
لفة البرمجة Basic هى لغة برمجة بسيطة وسهلة الفهم . لاستخدامها بشكل صحيح , فإنه يكفى أن تعرف عدد قليل من العناصر الأساسية التى يتكون منها كل برنامج , وهى ما يلى :

• المعرفات Identifiers .
• التعليقات Comments .
• العوامل Operators .
• التعبيرات Expressions .
• التعليمات Instructions
• الثوابتConstants .
• المتغيرات Variables .
• الرموز Symbols.
• التوجيهات Directives .
• الملصقات ( اللافتات – التسميات) Labels .
• الإجراءات والدوال Procedures and functions .
• الوحدات (الموديولات) Modules .

فيما يلى مثال للكيفية التى لا يجب أن يكون عليها كتابة البرنامج . فلا يتم تضمين تعليقات ،وأسماء اللافتات لا معنى لها، ولا يتم تجميع مقاطع الكود ... هذا البرنامج سوف يعمل بشكل صحيح، ولكن الغرض منه وطريقة تنفيذه سوف يتم معرفتها فقط للمبرمج الذى كتبه (على الأقل لمدة يوم أو اثنين).




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






هيكل البرنامج :

اعلانات

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


هيكل البرنامج :
مثل لغات البرمجة الأخرى، توفر لغة Basicمجموعة من القواعد المحددة بدقة والتى يجب مراعاتها عند كتابة البرامج. من أجل كتابة برنامج بلغة Basic، من الضروري تثبيت البرمجيات softwareالتى توفر بيئة العمل المناسبة وتفهم هذه القواعد على جهاز الكمبيوتر الخاص بك . عندما تكتب خطاب , أنت بحاجة إلى برنامج لمعالجة النصوص، أليس كذلك ؟ فى هذه الحالة ، أنت فى حاجة إلى المترجم :
mikroBasic PRO for PIC.
وخلافا لمعظم البرامج التى تعودت على التعامل معها، لا تبدأ عملية كتابة البرامج فى المترجم من خلال اختيار الخيار File>New (ملف جديد) ، ولكن من خلال اختيار الخيار Project>New(مشروع جديد) . لماذا؟ حسنا، أنت سوف تكتب برنامج في وثيقة بالمتداد (.mbas)(mikroBasic). وتكتب , وتكتب , وتكتب بجدية , وعند ترجمة ذلك إلى الكود السداسى عشر hex، سوف يتم إنشاء مستند جديد بالامتداد (.hex) . فى نفس الوقت فإن المترجم سوف يقوم تلقائيا بإنشاء العديد من الوثائق بالإضافة إلى ذلك. الغرض من هذه الوثائق ليست مهما فى هذه المرحلة. بالطبع، يجب أن يكون هناك شىء لربطهم جميعا . هذا الشىء هو ما نتحدث عنه وهو "المشروع" . البرنامج الذى تكتبه هو مجرد جزء منه.





فقط للتأكد من أننا نسير فى نفس الطريق , من الآن كلمة "وحدة" moduleتشير إلى مستند بالامتداد
(.mbas).ويشلر إلى النص الذى تحتويه بالبرنامج program. كل مشروع مكتوب بالمترجم
mikroBasic PRO for PIC له الامتداد ( .mbppi)ويتكون من وحدة واحدة على الأقل (الوحدة الرئيسية Main Module) . كل مشروع يتطلب وحدة رئيسية واحدة . يتم التعرف عليها عن طريق كلمة programوهى ترشد المترجم من أين يبدأ عملية الترجمة . عند إنشاء مشروع فارغ فى معالج المشروع Project Wizard بنجاح، سوف يتم عرض الوحدة الرئيسية تلقائيا في نافذة محرر الكود Code Editor كما يلى :

كود:
 
 
program MyProject ' The main module is called MyProject here main: ' Main procedure ... '* ... '* Write program code here ... '* end.


لا يسبق أى شىء كلمة program، باستثناء التعليقات. كما ذكر أعلاه، يجوز للمشروع أن يشمل أيضا الوحدات الأخرى التى ، على خلاف الوحدة الرئيسية , تبدأ بكلمة module.
كود:
 
module MyModule ' Auxiliary module is called MyModule ... '* ... '* Implements ... '* end.



لجعل المترجم مألوف مع جميع الوحدات والتى تنتمي إلى مشروع واحد، فمن الضرورى تحديدها فى الوحدة الرئيسية باستخدام الكلمة "تضمين" include متبوعة باسم الوحدة بين قوسى تنصيص . امتدادات هذه الملفات لا يلزم ضمها . يسمح بضم وحدة واحدة فقط لكل تضمين include . عدد التضمينات غير محدود ، ولكنها جميعا يجب أن تكون محددة مباشرة بعد كلمة اسم البرنامج (الوحدة الرئيسية) . إليك مثال على ذلك

كود:
 
program MyProgram ' Start of program (main module named ‘MyProgram’) ' Other modules included are: include "utils" ' Module "utils" include "strings" ' Module "strings" include "MyUnit" ' Module "MyUnit" ...

تنظيم الوحدة الرئيسية ORGANIZATION OF THE MAIN MODULE :

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

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


تنظيم الوحدة الرئيسية ORGANIZATION OF THE MAIN MODULE :
في الأساس، يمكن تقسيم الوحدة الرئيسية إلى قسمين: قسم الإعلانات declarations وقسم جسم body البرنامج. ما هو الإعلان فى البرمجة ؟ الإعلان هو عملية تحديد خصائص معرفات لاستخدامها فى البرنامج. مثل معظم لغات البرمجة الأخرى، تتطلب لغة Basicأيضا أن ين إعلام جميع المعرفات قبل استخدامها فى البرنامج. وإلا ، فإن المترجم قد لا يكون قادرا على تفسيرها بشكل صحيح. فيما يلى طريقة إعلان متغير يسمى distance :


كود:
dim distance as float ' Declare variable distance
كما ترى، هو متغير بنقطة عائمة floating point (نقطة عشرية) ، أى عدد بعلامة عشرية اختيارية يتغير مكانها .
فيما يلى مثال لطريقة كتابة الوحدة الرئيسية بشكل صحيح :



تنظيم الوحدات الأخرى ORGANIZATION OF OTHER MODULES
تبدأ الوحدات الأخرى بكلمة "وحدة" module. تتكون كل وحدة من ثلاثة أقسام هى : التضمين include ، والواجهة interface والتنفيذ implementation. قسم التنفيذ هو فقط الوجوبى . ويبدأ بكلمة "تنفيذ" implementsكما يلى :



المعرفات IDENTIFIERS :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-05-2013, 01:32 AM المشاركة 20   
افتراضي


المعرفات IDENTIFIERS :
المعرفات هى أسماء اختيارية (إعتباطية) تسند (تخصص) إلى كائنات لغة Basicمثل الثوابت constants ، والمتغيرات variables ، والدوال functions, والإجراءات procedures الخ .شخص ما جاء بفكرة استخدام كلمة "المعرف" identifier بدلا من الاسم name.هكذا وببساطة .فيما يلى بعض القواعد التي يجب مراعاتها عند استخدام المعرفات:
• قد تحتوى على المعرفات على جميع الحروف الأبجدية (سواء العلوية أو السفلية)، والأرقام (0-9) والشرطة السفلية (_).
• لا يجب أن يكون الحرف الأول من المعرف رقما.
• لا تحتوى المعرفات على أحرف خاصة مثل! [{# $٪ & الخ .
• لغة Basicليست حساسة لحالة الأحرف، وهو ما يعني أن FIRST و first وFirstسوف تعتبر متطابقة.
• يستخدم رمز (علامة) الإقحام ^ للدلالة على العامل الأسى exponentiation operator ، ويتم استخدام رمز النجمة * للدلالة على الضرب multiplication، بينما غيرها من الرموز يكون لها المعانى المعتادة.
• الكلمات المستخدمة بالفعل من قبل المترجم يجب ألا تستخدم كمعرفات . الدول التالى يبين قائمة بالكلمات المخصصة للمترجم mikroBasic:







هذه القائمة بالمعرفات التى لا يجب أن تستخدم فى البرنامج .
التعليقات COMMENTS :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-05-2013, 01:35 AM المشاركة 21   
افتراضي


التعليقات COMMENTS :
التعليقات هي جزء من البرنامج المستخدم لتوفير مزيد من المعلومات عن البرنامج وجعله واضح للمستخدم. فى لغة Basic، ويعتبر أى نص بعد علامة اقتباس مفردة (') تعليقا comment. لا يتم ترجمة التعليقات فى الكود القابل للتنفيذ. المترجم قادرة على التعرف على الأحرف الخاصة المستخدمة فى وضع علامة مكان بداية التعليقات ويتجاهل النص التالى تماما أثناء الترجمة. على الرغم من التعليقات لا يمكن أن تؤثر على تنفيذ البرنامج، إلا أنها لا تقل أهمية عن أي جزء آخر من البرنامج لأن كل برنامج تقريبا يحتاج إلى تحسين أو تعديل أو ترقية أو تبسيط فى بعض النقاط . بدون التعليقات ، فإنه يكاد يكون من المستحيل فهم حتى أبسط البرامج.






الملصقات (اللافتات) LABELS


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-05-2013, 01:37 AM المشاركة 22   
افتراضي


الملصقات (اللافتات) LABELS
توفر الملصقات أسهل طريقة للسيطرة (التحكم) على تدفق البرنامج. فهى تستخدم فى وضع علامة على خطوط (سطور) خاصة فى البرنامج حيث يتم تنفيذ تعليمات القفز والروتينات الفرعية المناسبة . يجب أن يتم إنهاء جميع الملصقات بواسطة النقطتين ':' حتى يتمكن المترجم من التعرف عليها بسهولة.






الثوابت CONSTANTS


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-05-2013, 01:39 AM المشاركة 23   
افتراضي


الثوابت CONSTANTS
الثابت هو عدد أو حرف قيمة والذى قيمته لا يمكن أن تتغير أثناء تنفيذ البرنامج. على عكس المتغيرات، يتم تخزين الثوابت في ذاكرة ROM للميكروكونترولر من أجل توفير الكثير من مساحة ذاكرة RAMقدر الإمكان . يتعرف المترجم على الثوابت عن طريق أسمائها والبادئة const. يتم إعلان كل ثابت باسم فريد من نوعه والذى يجب أن يكون معرفا صالحا.
الثوابت تكون متاحة فى الأشكال : العشرية , والسداسية عشر , والثنائية . يميز المترجم بينها وفقا للبادئات الخاصة بكل منهم . إذا لم يكن للثابت بادئة يعتبر عشرى افتراضيا .






يتم إعلان الثوابت في جزء الإعلان بالبرنامج أو بالروتين. بناء جملة الثوابت تكون كما يلى :

كود:

const constant_name [as type] = value

عادة يتم كتابة أسماء الثوابت بالأحرف الكبيرة . يتم التعرف على نوع الثابت تلقائيا عن طريق حجمه. فى المثال التالى ، يعتبر الثابت MINIMUMعدد صحيح بإشارة وسوف يتم تخزينه داخل 2 بايت 2-byteمن ذاكرة الفلاش (16 بت) 16-bit:
كود:

const MINIMUM = -1000 ' Declare constant MINIMUM


تحديد نوع الثابت يكون اختيارى . فى حالة غياب النوع، يفترض المترجم أصغر نوع والذى يمكن أن يستوعب قيمة الثابت .
كود:
const MAX as longint = 10000 const MIN = 1000 ' Compiler will assume word type const SWITCH = "n" ' Compiler will assume char type

في المثال التالى ، يتم إعلان ثابت يسمى T_MAX لكى يكون له القيمة الكسرية 32.60 . الآن، يمكن للبرنامج مقارنة درجة الحرارة المقاسة بهذا الثابت مع استخدام اسم ذات معنى بدلا من العدد 32.60 .

كود:
const T_MAX = 32.60 ' Declare temperature T_MAX const T_MAX = 3.260E1 ' Another way of declaring constant T_MAX


"ثابت السلسلة النصية" string يتكون من الأحرف. يتم إحاطته بعلامات اقتباس مزدوجة. كما يمكن أيضا تضمين مساحة فارغة فى ثابت السلسلة النصية كحرف. تستخدم ثوابت السلسلة النصية لتمثيل الكميات الغير عددية مثل الأسماء والعناوين والرسائل الخ .
كود:
const Message_1 = "Press the START button" ' Message 1 for LCD const Message_2 = "Press the RIGHT button" ' Message 2 for LCD const Message_3 = "Press the LEFT button" ' Message 3 for LCD

فى المثال السابق , إرسال الثابت Message_1 إلى وحدة العرض LCDسوف يتسبب فى عرض الرسالة ‘press the START button’.

المتغيرات VARIABLES :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-05-2013, 01:41 AM المشاركة 24   
افتراضي


المتغيرات VARIABLES :
المتغير هو كائن مسمى قادرة على احتواء البيانات والتى يمكن تعديلها أثناء تنفيذ لببرنامج. يتم إعلان كل متغير باسم فريد من نوعه والذى يجب أن يكون معرفا صالحا. على سبيل المثال، لجمع الرقمين
(number1 + number2) فى البرنامج، فمن الضروري أن يكون هناك متغير لتمثيل ما نسميه بالمجموع sum. فى هذه الحالة تكون number1, number , sum متغيرات. بناء جملة إعلان متغير واحد تكون كما يلى:

كود:
dim variable_name as type


فى لغة Basic تكون المتغيرات "نوعية" , وهو ما يعنى أنه من الضرورى تحديد نوع بيانات المتغير المطلوب الحصول عليها. يتم تخزين المتغيرات في ذاكرة الوصول العشوائي RAMومساحة الذاكرة المحتلة (بالبايت) تعتمد على نوعها. بالإضافة إلى الإعلانات المفردة ، يمكن إعلان المتغيرات من نفس النوع على شكل قائمة. فيما يلى قائمة لمتغيرات مفصولة بفواصل لمعرفات صالحة، حيث النوع typeيمكن أن يكون أى نوع من البيانات.


كود:

dim i, j, k as byte 'Define variables i, j, k dim counter, temp as word 'Define variables counter and temp


الرموز SYMBOLS :



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