الدوال المكتبية في C++

الدوال المكتبية في C++

تجري العديد من أنشطة اللغة بواسطة الدوال المكتبية , فهي تقوم بتداول الملفات ,وإجراء العمليات الرياضية , والرسومات , وتنظيم الذاكرة , من بين أنشطة أخري عديدة . ولسنا نريد أن نخوض في موضوع الدوال المكتبية بعمق قبل دراسة موضوع الدوال عموما في الفصل السادس , ولكننا يمكن أن نستخدم دالة مكتبية بسيطة دون الفهم العميق لما تقوم به , وإليك أولية لذلك :

المثال التالي يستخدم دالة مكتبية تسمي sqrt() لتنفيذ عملية استخراج الجذر التربيعي للأعداد المدخلة :

Sqrt.cpp

sqrt.cpp


 


// sqrt.cpp


// demonstrates sqrt() library function


#include <iostream.h>           // for cout, etc.


#include <math.h>               // for sqrt()


 


void main()


   {


   double number, answer;       // sqrt() requires type double


 


   cout << "Enter a number: ";


   cin >> number;               // get the number


   answer = sqrt(number);       // find square root


   cout << "Square root is "


    << answer << endl;      // display it


   }




يحصل البرنامج علي العدد المدخل من المستخدم , ثم يستخدم كـــ "معامل argumrnt " للدالة في العبارة



Answer = sqrt(numper);



فالمعامل إذن هو ما يدخل إلي الدالة , ويوضح بين القوسين التابعين لها . وتقوم الدالة بإجراء العملية المكلفة بها علي معاملها , وتكون النتيجة هي خرج الدالة , وهي القيمة التي تعيدها returns للدالة التي استدعتها , وهو في حالتنا الدالة الأصلية للبرنامج main() , فالدالة المذكورة تعيد الجذر التربيعي .



ولكل دالة نوعية المتغيرات التي تتعامل معها , ويمكن الاستدلال علي ذلك من كتيبات الشركة الموزعة لنظام البرمجة , ففي مثل ذلك الكتيب ستري أن الدالة sqrt() لا تتعامل إلا مع النوع double كمعاملات وقيم تعيدها , ولذا فقد عرفنا المتغيرات المدخلة علي هذا النوع .



الملفات التصديرية



عليك كما قلنا أن تضمن برنامجك الملفات التي تحتوي علي تعاريف بالكائنات والدوال المعرفة في اللغة , مثل cout , وهذه الملفات لابد أن توجد في مقدمة البرنامج . فلو أنك راجعت مستندات اللغة لوجدت أن الدالة sqrt() معرفة في الملف math.h , ولذا فقد استخدمنا الموجه #include ليعطي المترجم التعليمات بأن يضمن البرنامج هذا الملف . أما لو سهوت عن ذلك , فإنك سوف تحصل علي رسالة بهذا الشكل :Function sqrt() must have a prototype in function main() .



الملفات المكتبية



ذكرنا فيما سبق أن ملفا يحتوي علي الكائنات والدوال المكتبية سوف يربط ببرنامجك لإنتاج الملف التنفيذي , ولو أنك تستخدم نمط الذاكرة الصغير small , فسوف تستخدم الملف المكتبي المسمي cs.lip . هذا الملف يحتوي علي الدالة sqrt() , والتي تجد تعريفها في الملف التصديري math.h . فالملفات التصديرية تحتوي علي تعريفات الدوال بحسب تصنيفها , فمثلا , الملف iostream.h يحتوي علي الدوال الرياضية , ومنها الدالة sqrt() , ويريد البرنامج أن يمد بهذه التعريفات ليتعامل مع الدوال أو الكائنات , أما الدوال ذاتها , والتي يربطها الرابط , فموجودة في الملف المكتبي .



ويبين الشكل العلاقة بين الملفات بأنواعها المختلفة في عمليتي الترجمة والربط .























Submitted files and office



شكل ملفات المقدمة والملفات المكتبية





طريقتان لاستخدام الموجه #include



يمكنك استخدام الموجة #include بطريقتين , الأولي هي المعتادة :



#include <iostream.h>



حيث يوضع الملف المطلوب البحث عنه بين القوسين المبينين , والثانية علي النحو التالي :



#include “ myheade.h”



حيث يوجد الملف المطلوب البحث عنه بين علامتي تنصيص . والفرق أن الطريقة الأولي تستخدم للملفات التي تتضمنها اللغة , أي المكتبية , والثانية تستخدم للملفات المكتبية التي يضعها المستخدم لنفسه .



وحين تستخدم الصورة الأولي يبدأ المترجم في البحث عن الملف المقصود تحت الدليل المعتاد للملفات المكتبية كما وضعت في النظام , وفي الحالة الثانية يبدأ البحث في الدليل الخاص بالمستخدم , وهو المحتوي علي الملف المصدري .



والخلط بين الصورتين لن يعيق عمليتي الترجمة أو الربط , ولكنه سوف يبطئ منهما .







تلخيص



تعلمنا في هذا الفصل أن أهم وحدة بنائية في برامج لغة السي++ هي الدوال , وأن الدالة الرئيسية في البرنامج هي المسماة main() , وهي أول ما يبتدأ به تنفيذ البرنامج .



وتحتوي الدالة منقوطة . وقد تحتوي العبارات مع علي " تعابير " , وهي بعض المتغيرات والمؤثرات التي يجري تقييمها إلي قيمة معينة .



ويتم الإخراج بواسطة الكائن cout والمؤثر << , وعن طريقهما ينتقل ما يراد إخراجه إلي الشاشة , والتي تعتبر جهاز الإخراج القياسي . أما إدخال البيانات فيتم بواسطة الكائن cin مع المؤثر >> , ويتقبلان البيانات من لوحة المفاتيح , والتي تعتبر جهاز الإدخال القياسي .



والمتغيرات الأساسية للغة السي ++ هي ستة . ثلاثة منها أعداد صحيحة , وهي : char, int, long وثلاثة أعداد كسرية وهي : float, double, long double . وهذه جميعا تكون ذات إشارة (موجبة أو سالبة ) . ويمكن استخدام متغيرات الأعداد الصحيحة لتكون بلا إشارة (موجبة دائما ) فيزداد مداها للضعف . أما القيمة التي تعرف بالمميز const فتكون ثابتة طوال البرنامج .



وفي التعابير المختلطة الأنواع , يجري تحويل النوع الأدنى إلي الأعلى , وهو يكون إما تلقائيا أو بواسطة المبرمج (قسريا) .



وتستخدم لغة السي++ المؤثرات الحسابية المعتادة , لعمليات الجمع والطرح والضرب والقسمة , ويضاف إليها باقي القسمة . كما توجد مؤثرات حسابية تخصيصية , مثل += , وهي تجري حسابية وتحصصها للمتغير في أن واحد . كما يوجد مؤثر للتزايد , وأخر للتناقض , لتغيير قيمة المتغير بمقدار الوحدة .



وتوجد من الأوامر ما يوجه للمترجم وليس للحاسوب , وهذه تسمي "موجهات المترجم , أم ما قبل المعالج " , وتتميز بالمميز # . ومن ذلك الموجه #include الذي يأمر المترجم بإلحاق ملفات معينة بالبرنامج , قد تكون مكتبية , أو من وضع المبرمج . كما يوجد الموجه #define والذي يعطي قيما ثابتة لبعض الرموز المستخدمة .

التسميات: