المشاركات

عرض المشاركات من ديسمبر, ٢٠١٢

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

صورة
مقارنة بالدوال المكتبية سبق أن استخدمنا الدالة getche() المكتبية , فأين الإعلان عنها والتعريف بها والتنويه عنها ؟ إن ذلك متضمن في الملف التصديري المعلن عنه في صدر البرنامج conio.h . الاستغناء عن الإعلان يمكن الاستغناء عن الإعلان عن الدوال إذا كانت معرفة قبل الدالة التي تستدعيها , فيمكننا مثلا إعادة صياغة البرنامج السابق بالصورة التالية : Table2.cpp table2.cpp   // table2.cpp // demonstrates function definition preceding function calls #include <iostream.h> #include <conio.h> // no function declaration   // starline() // function definition void starline() { for ( int j=0; j<45; j++) cout << '*' ; cout << endl; } void main() // main follows function { starline(); // call to function cout << "Data type Range" << endl; sta

الدوال في C++

صورة
الدوال هذا الفصل يحتوي علي : تعريف الدوال والإعلان عنها Function definition and declaration ترحيل المعاملات Parameters passing إمرار المعاملات بالقيمة وبالإشارة Passing by value and passing by reference الدوال زائدة التحميل Function overloading معاملات الاختيار المبدئي Default arguments فئات التخزين Storage classes نقوم عن طريق الدوال بتجميع عدد من التعليمات تحت مسمي واحد . هذه الوحدة يمكن تستثار عن طريق أجزاء أخري من البرنامج . والهدف الأساسي من استخدام الدوال هو تنظيم البرنامج في شكل منطقي . فتقسيم البرنامج إلي دوال هو أحد المبادئ الأساسية في البرمجة الهيكلية , كما قدمنا في الفصل الأول . ( إلا أن البرمجة الكائنية تعطي تنظيما أقوي فعالية ) . والسبب الأخر لاستخدام الدوال هو اختصار البرامج , فأية مجموعة من التعليمات ينتظر أن تتكرر في مواضع من البرامج , تكون مؤهلة لأن توضع في دالة مستقلة . ويختزن الكود الخاص بهذه الدالة في الذاكرة مرة واحدة , مهما تكرر استخدامها . ويبين الشكل كيفية إستثارة الدالة من أجزاء أخري من البرامج . شكل التحكم في استثارة الدوال الدوال البسي

الهياكل والكائنات في C++

صورة
الهياكل والكائنات قلنا من قبل أن الهياكل هي هياكل للبيانات لتجميع أنواع مختلفة منها , بينما الكائنات هي تجمع للبيانات والدوال الخاصة بالتعامل معها . ونتعرف الأن بأن هذا صحيح بالنسبة للسي التقليدية فقط , أما بالنسبة للسي ++ فالهياكل يمكن أن تضم الدوال أيضا , وعلي ذلك فليس من فرق جوهري بينها وبين الكائنات . علي أن العرف الجاري بين المبرمجين هو أن تقتصر الهياكل علي تجميع البيانات , وأن تستخدم الكائنات لتجميع البيانات والدوال معا . البيانات المعددة شكل الموصف enum كما قلنا من قبل , يمكن النظر للهياكل علي أنها نوع من البيانات يضعه المبرمج . وهناك أسلوب أخر يمكنك من ذلك , هو أسلوب البيانات المعددة enumerated data types . ويسمح لك هذا الأسلوب بتعريف بيانات خاصة بك , مما ييسر لك عملية البرمجة بقدر كبير . وهذا الأسلوب موجود في لغة الباسكال . ويشترط للإستفادة من هذا الأسلوب أن تعرف مسبقا مجموعة القيم التي يمكن أن يأخذها نوع معين من البيانات ] كأن تكون أيام الأسبوع كما في المثال التالي , ومن ثم تسميتها بالمعددة , أي محدودة العدد [ . وفي المثال التالي سوف نعلن عن نوع من البيانات يعبر ع

الهياكل المتداخلة في C++

صورة
الهياكل المتداخلة يمكن أن يضم هيكل من بين عناصره هيكلا أخر , وهو ما نقدمه لك في المثال التالي , وهو تطوير للبرنامج السابق , نصمم فيه هيكلا لبيانات يخزن فيه أبعاد غرفة ما . ويتضمن البرنامج توصيفا للهيكل السابق , distance , عناصره المتغيران الأوليان inch , feet ثم توصيفا لهيكل جديد ؛ room , عناصره أبعاد الحجرة length , width وكلاهما متغير هيكلي منتم للهيكل الأول . وأخيرا يعرف متغير هيكلي منتم للهيكل room , وهو dining , ليعبر عن غرفة معينة , هي غرفة الطعام . Englarea.cpp englarea.cpp   // englarea.cpp // demonstrates nested structures #include <iostream.h>   struct Distance // English distance { int feet; float inches; };   struct Room // rectangular area { Distance length; // length of rectangle Distance width; // width of rectangle };   void main() { Room dining; // define a room   dining.length.feet = 13; // assign val

التعامل مع عناصر المتغير الهيكلي في C++

صورة
التعامل مع عناصر المتغير الهيكلي ما أن يعرف المتغير الهيكلي , حتي تكون الإشارة لعناصره باستخدام ما يسمي مؤثر النقطة dot operator . وقد تم تخصيص قيمة أول عنصر كالتالي : Part1.modelnimber = 6244; بمعني أن الإشارة لعنصر المتغير الهيكلي يتضمن ثلاثة أجزاء : اسم المتغير ؛ part1 , ثم نقطة , ثم أسم العنصر نفسه . وتعني النقطة هنا أن البيان modelnumber هو عنصر من عناصر المتغير الهيكلي part1 . ونذكرك بـأن الجزء الأول من التعريف هو اسم المتغير الهيكلي , وليس اسم الهيكل , فنرجو الانتباه لعدم الخلط . ويستعمل اسم المتغير للتمييز بين المتغيرات المنتمية لهذه الفئة من الهياكل , وهي مثلا المتغيرات : part1, part2, part3 . والشكل يبين وضع مثل هذه المتغيرات في الذاكرة . شكل مؤشر النقطة وتعامل المتغيرات الهيكلية كغيرها من المتغيرات سواء بسواء , كما هو ملاحظ في أوامر التخصيص أو أوامر الإظهار . خواص أخري للهياكل الهياكل مرنة الاستخدام بصورة مدهشة ؛ لننظر إلي خاصية أخري من خصائصها : الجمع بين التوصيف والتعريف : في البرنامج السابق كان توصيف الهيكل والتعريف بالمتغير الهيكلي في أمرين م

الهياكل في C++

صورة
الهياكل هذا الفصل يحتوي علي : مواصفات الهياكل و تعاريفها structure specifies and definitions التعامل مع عناصر الهيكل Accessing structure members الهياكل المتداخلة nested structures الهياكل ككائنات وكنوع من البيانات structures as objects and data type البيانات المعددة enumerated data types تعرضنا إلي الأن لأنواع بسيطة من المتغيرات , كالمحارف والأعداد الصحيحة و الكسرية . وتعبر هذه المتغيرات عن بيان ما , كالطول أو درجة الحرارة . ولكن كما تعبأ البضائع في المجال في أكياس , ويجمع الموظفون في المنشآت في إدارات , وترتب الكلمات في جمل , فإنه من المفيد أن تجمع البيانات في تجمعات . وتتضمن لغة السي صورة من هذه التجمعات يسمي "الهيكل structure " ] ننوه إلي عدم الخلط بين مصطلح "هياكل البيانات data structures , كتجمعات معينة من البيانات مثل المصفوفات والمكادس والقوائم , مما سيرد ذكره خلال فصول الكتاب ويبين مصطلح " هياكل structures " كأحد أنواع هذه التجمعات [ . الهياكل الهيكل هو أحد أنواع هياكل البيانات , يمكن أن يضم أنواعا متغيرة من البيانات ] علي عكس

عبارة continue في C++

صورة
عبارة continue عبارة break تخرج البرنامج من الدوارة لتستأنف فيما بعدها . إلا أنه قد تثور الحاجة لبدأ الدوارة من أولها مرة أخري عند حدوث أمر غير متوقع , وتقوم العبارة continue بهذا التأثير , كما هو مصور في الشكل . شكل عمل العبارة continue سوف تجري تعديلا علي برنامجنا السابق divdo.cpp والذي يقسم الأعداد علي 2 , تتلاقي به إنهاء البرنامج بعد إصدار رسالة الخطأ عند القسمة علي الصفر . Divdo2.cpp divdo2.cpp   // divdo2.cpp // demonstrates CONTINUE statement #include <iostream.h>   void main() { long dividend, divisor; char sal;   do { cout << "Enter dividend: " ; cin >> dividend; cout << "Enter divisor: " ; cin >> divisor; if ( divisor == 0 ) // if attempt to { // divide by 0, cout &

كلمات حاكمة أخري للتحكم في C++

صورة
كلمات حاكمة أخري للتحكم توجد بعض الكلمات الحاكمة الأخري للتحكم في سير البرنامج , ولقد رأينا الكلمة الحاكمة break مستخدمة في التعبير الشرطي switch , ولكنها يمكن أن تستخدم في مواضع أخري , كما يوجد الكلمة continue وهي أيضا لا تستخدم إلا في الدورات , وأخيرا العبارة go to والتي يجدر عدم استخدامها . الكلمة الحاكمة break تتسبب هذه الكلمة في الخروج من أية دوارة , بالضبط كما تفعل في العبارة الشرطية switch , وتتسبب في الانتقال إلي السطر التالي لكتلة الدوارة مباشرة , ويبين الشكل طريقة عملها . شكل طريقة عمل الكلمة الحاكمة break وكمثال علي طريقة عملها , إليك برنامجا يظهر الأعداد الأولية علي هيئة أشكال علي الشاشة . Showprim.cpp showprim.cpp   // showprim.cpp // displays prime number distribution #include <iostream.h> #include <conio.h> // for getche()   void main() { const unsigned char WHITE = 219; // solid color (primes) const unsigned char GRAY = 176; // gray (non primes)