المشاركات

عرض الرسائل ذات التصنيف ترميز البيانات والتعامل مع أخطاء الفئات في سي بلس بلس

تعدد الاستثناءات في ++C

صورة
تعدد الاستثناءات يمكننا أن ندخل ألية الاستثناء لمتابعة أي عدد من الأخطاء المحتملة , ولبيان ذلك نعدل من البرنامج السابق لنفصل بين متابعة خطأ إدخال عدد زائد , وخطأ إدخال عدد زائد وخطأ سحب عدد زائد بحيث يكون لكل فئته الاستثنائية الخاصة به : Xstack2.cpp // xstak2.cpp // demonstrates two exception handlers // UCS Laboratories   #include <iostream.h> const int MAX = 3; // stack holds 3 ints   class Stack { private : int st[MAX]; // stack: array of integers int top; // index of top of stack public : class Full { }; // exception class class Empty { }; // exception class   Stack() // constructor { top = -1; }   void push( int var) // put number on stack { if (top >= MAX-1) // if stack full, throw Full(); // throw Full e...

التعامل مع أخطاء الفئات في ++C

صورة
القسم الثاني : التعامل مع أخطاء الفئات يقدم لنا نظام بورلاند ألية مفيدة للغاية في البرمجة الكائنية , فهي تمكننا من التعامل مع الأخطاء التي يمكن أن تحدث أثناء استدعاء دالة منتمية لفئة ما , يطلق علي هذه الألية "الأستثتاء exeptions " وتقوم هذه الألية علي أربعة عناصر : 1- فئة الاستثناء exeption class : وهي فئة تعرف داخل الفئة المراد متابعة حدوث الأخطاء بها . 2- استثارة الاستثناء throwing an exeption : ويقصد بذلك وضع الشرط الذي ينتج عنه استثارة ألية الاستثناء في الدالة التي يخشي وقوع الخطأ عند استدعائها , وتكون الاستثارة باستدعاء بادئة فئة الاستثناء , فتلحق كائنا خاصا بها يتولي التعامل مع الخطأ . 3- كتلة تنفيذ الاستثناء :exeption handler (catch block ) مجموعة الأوامر المنفذة عند حدوث الخطأ . وعلي ذلك يلزم لتطبيق الألية المذكورة استخدام ثلاث كلمات حاكمة : Throw : لاستثارة الاستثناء Try : وتسبق كتلة التجربة لتحديد . Catch : وهي تتلو المجموعة السابقة علي الفور , وتحدد كتلة تنفيذ الاستثناء . وإليك مثالا تطبيقا . لنرجع إلي المثال stackaray.cpp ونتصور أننا نريد...

الفئات المرمزة في ++C

صورة
الفئات المرمزة يمكن استغلال إمكانية التعريف الرمزي للبيانات مع الفئات , ويكون ذلك مفيدا بصفة خاصة لهياكل البيانات التي تعمل كحاويات لها كالمكادس والقوائم المترابطة . فما قدمناه من أمثلة لهذه الحاويات لا تضم إلا نوعا واحدا من البيانات , فالمكدس المعطي في الفصل 8 مثلا لا يضم إلا العدد الصحيح . ولو أردنا مكدسا لنوع أخر فلابد من صياغة خاصة له . ولكم يكون حسنا لو أننا تمكنا من أن نضع صياغة واحدة تنفع لكل الأنواع . وكما نراك قد خمنت , يأتي أسلوب ترميز البيانات ليعطينا هذه الإمكانية . إليك الأن صياغة جديدة للبرنامج stackay يأخذ بأسلوب التعريف الرمزي . Tempstak.cpp // tempstak.cpp // implements stack class as a template // UCS Laboratories   #include <iostream.h> const int MAX = 100;   template < class Type> class Stack { private : Type st[MAX]; // stack: array of any type int top; // number of top of stack public : Stack() // constructor ...

الترميز في ++C

صورة
يتضمن هذا المقال طريقتين جديدتين نسبيا للإقتراب من ساحة برمجة السي++ . فإمكانية التعريف الرمزي للبيانات تسمح لنا أن نصوغ دوالا وفئات تتعامل مع أكثر من نوع من البيانات دون حاجة لتكرار الصياغة . وألية الاستثناءات تعطي طريقة موحدة وميسرة للتعامل مع الأخطاء التي تحدث داخل الفئات ولم يكن ترميز البيانات أو الاستثناءات من أساسيات لغة السي الأصلية ولكنها أدخلت بها منذ 1990 وأصبحت معتمدة في المواصفات الخاصة بها من قبل هيئتي الأنسي والأيزو . وتدعم بورلاند سي++ الأسلوبين , أما التربو سي++ فلا يدعم سوي أسلوب الترميز . القسم الأول : الترميز الدوال المرمزة لنفرض أن لدينا الدالة التالية , وهي تعيد القيمة المطلقة لأي عدد صحيح (بمعني أنها تعيد القيمة العددية , بصرف النظر عن الإشارة فتعيد كلا من القيمتين 5 و -5 بقيمة 5 ): Int abs(int n) { Retutn (n<0) ? –n: n; } ] تفسير المعامل الشرطي المستخدم : إذا كانت n أكبر من الصفر (موجبة) أعد قيمتها , وإن كانت أقل من الصفر (سالبة) , أعد –n أي تحول للموجب , حيث إن سالب السالب هو موجب , وبذلك فإن المعاد تكون القيمة الموجبة سواء أكان المتغير موجب...