| طريقة إعداد البرنامج | أضيف في: 11/08/2009 | |||||
|---|---|---|---|---|---|---|
|
تحضير البرنامج المصدر(Source) ويتم ذلك باستخدام منسق النصوص الذي يمثل جزءا من النظام المستخدم. بعد الانتهاء من تحضير برنامج المصدر يتم استخدام أمر ترجم (Compile) لبدء عملية الترجمة حيث ينتج عنها غالبا تحديد الأخطاء الموجودة في البرنامج. يجب تصحيح هذه الأخطاء إلى حين الحصول على برنامج نظيف من الأخطاء، عندئذ ينتج البرنامج الهدف(Object). بعدها تتم عملية ربط هذا البرنامج الهدف مع أجزاء الدوال المستخدمة فيه والمتوفرة في مكتبة الدوال أتوماتيكيا وينتج عن ذلك الشكل النهائي التنفيذي للبرنامج (Executable) من المفترض عند تنفيذ هذا البرنامج، أن نحصل على النتائج المطلوبة منه وعكس ذلك يجب عمل فحص (Testing) للبرنامج لتحديد الأخطاء المنطقية، ويجب تكرار هذه الخطوة إلى حين الحصول على النتائج النهائية المطلوبة بشكل صحيح. غالبا ما تحتاج هذه العملية إلى أربع مراحل للمرور على البرنامج المصدر وهي: 1. مرحلة تضمين برنامج المصدر والأجزاء الخارجية عن طريق المعالجة الأولية (Preprocess). 2. مرحلة تصريف البرنامج (Parsing). 3. مرحلة خلق برنامج الهدف وهي مرحلة ترجمة البرنامج من لغة سي (المصدر) إلى لغة الجهازالتنفيذية(الهدف). 4. مرحلة تحسين أداء عمل البرنامج الهدف (Optimization). المثال التالي يوضح هذه المراحل: اكتب برنامجا لطباعة كلمة "مرحبا". 1. نقوم بتحضير البرنامج المصدري التالي عن طريق منسق النصوص وبعدها نقوم بحفظه على ملف اسمه : Hello.c 0002 0003 0004 0005 0006 0007 0008 [COLOR=#0000BB]<?php main ( ) { ; ("مرحبا")printf }; ?> [/COLOR] 2. إذا لم يكن هناك أخطاء في هذا البرنامج سيتم خلق برنامج تنفيذي مقابل له باسم a.out. 3. وعند تنفيذه مباشرة سوف يقوم بكتابة "مرحباً" على الشاشة. 4. إذا تفحصت قائمة الملفات على جهازك ستميز أن هناك ملفاً باسم hello.o وهذا الملف يحوي برنامج الهدف دون الدوال المستخدمة. 5. في حالة وجود أخطاء في برنامج المصدر فإن المؤشر سوف يقف عند السطر الذي يحوي الخطأ مع إظهار ملاحظة مناسبة تشرح طبيعة هذا الخطأ مختصر. تركيب برنامج سي 1. يتركب برنامج سي من مجموعة من الدوال(Functions) ، كل منها يعمل على أداء عمل محدد. 2. إن الدوال التي يتكون منها برنامج سي يمكن أن تتم ترجمتها كلا على حدة، ومن ثم يجري ربطها معاً ومع أجزاء مكتبة سي؛ لتكون البرنامج النهائي. 3. إن الاعتماد الأساسي في لغة سي يكون على مكتبة الدوال الجاهزة حتى أن البرنامج الرئيسي نفسه مبني من دالة رئيس اسمه(main) ، وهو يمثل نقطة بداية تنفيذ برنامج سي. إن صيغة الدالة هي كما يلي : 0002 0003 0004 0005 0006 0007 0008 [COLOR=#0000BB] main ( ) { : }; ?> [/COLOR] حيث يوضع بين الأقواس ( ) المعاملات (arguments) التي قد يتعامل معها البرنامج، أما جسم الدالة فينحصر بين الأقواس { }التي يجب أن تكون متساوية في العدد. أما الدوال الأخرى فتركيبها يشبه تركيب الدالة الرئيسي هذا ما عدا السطر الذي يحدد اسم ونوع الدالة والصيغة المستخدمة في هذه الحالة: 0002 0003 0004 0005 0006 0007 0008 [COLOR=#0000BB]<?php type name (arguments) { . }; ?> [/COLOR] الاستنتاج • لاحظ أن اسم الدالة يجب أن يتبع بالأقواس( ) حتى وإن لم يستخدم أي معاملات. وإذا لم نضع هذه الأقواس لا يستطيع برنامج سي التمييز والتعرف على هذا الدالة. • لاحظ أن هذه الدوال غير معرفة داخل لغة سي الذي تم تحضير البرنامج بها ولكنها موجودة في المكتبة الجاهزة. • إن جملة سي يجب أن تنتهي بالرمز ;. • يمكن للجملة أن تستمر في أكثر من سطر كما يمكن وضع أي عدد من الفراغات فيها. • تستخدم لغة سي الأقواس { }لتحديد جزء يمكن تمثيله ككتلة واحدة يتم التعامل معها وتنفيذها معا، وهي تماثل كلمات begin و end في لغة باسكال. مثال اكتب برنامجاً يخلق رقماً عشوائياً ضمن مدى معين ومن ثم يطلب من المستخدم أن يحزر قيمة هذا العدد. بعد ذلك يقوم البرنامج بالتأكد فيما إذا كان هذا العدد يساوي الرقم الذي خلقه البرنامج. الحل: يمكن وضع الخوارزمية للحل كما يلي: 1. اختر رقما عشوائيا ضمن المدى المحدد وباستخدام الدالة الخاصة بذلك. 2. بينما لم يدخل المستخدم رقم الخروج (99) اعمل ما يلي : – اطلب من المستخدم أن يدخل رقما. – إذا كان هذا الرقم مساويا للرقم العشوائي (أي صحيحا) ابتهج واطلب منه رقما آخر. – أما إذا كان اصغر أو اكبر منه اطبع رسالة بذلك أيضا. 3. عندما يدخل المستخدم رقم 99 إنهاء مع الشكر. 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 [COLOR=#0000BB]<?php #define Max 10 int getx (int max ); reward ( ); main ( ) { int n, guess; n = getran (max); while ( ( guess = getnum (max) ) != 99 ) { if (guess == n ) { reward ( ); n = getran (max); break; } if ( guess < n) { printf (" Your number was too high. \n"); } if ( guess > n ) { printf (" Your number was too low. \n"); } } printf (" Thank you for using this program \n " ); } ?> [/COLOR] سيلاحظ هنا، عزيزي الدارس، بأننا قمنا باستخدام جملة تعريف الثوابت في لغة سي وهي#define وقد استخدمناها لنعرف مدى الرقم العشوائي 10. كما أننا استخدمنا عدة دوال داخل البرنامج الرئيسي. مثلgetran و printfوهما متوفرتان في مكتبة سي. أما الدوال getnum وreward فهما غير متوفرتين في مكتبة سي. لذا يجب كتابتهما هنا كما يلي: 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 [COLOR=#0000BB]<?php int getnum ( max ); { int guess = 0; while (guess > 1 || guess < max ) { printf (" enter you guess between 1 and %d ، \n" , max); printf (" enter 99 to exit " ); scanf (" % d ", &guess ); printf (" /n thank you /n " ); } return ( guess ); } أما الدالة الأخرى للشكر والمكافأة وهي: reward ( ) { printf (" You guessed good number \n") } ?> [/COLOR] لاحظ بأنه بالإمكان تحضير هذه الدوال منفصلة أو في نفس ملف البرنامج الرئيس.
|
||||||
| الكاتب: صفوف |
|
|
|
|||
|
خيارات الدرس : |
||||||
التعليقات
|
||
|---|---|---|
|
||
|
|
| أرشيف الأقسام |
|---|
| 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |