الاثنين، 30 مايو 2011

مقالات : مشروع التخرج

 

                   ما هو مشروع التخرج
مشروع التخرج هو أحد متطلبات التخرج الإجبارية لطلبة برنامج البكالوريوس في قسم علوم الحاسب أو أي قسم من الأقسام المرتبطة بالحاسب. وهو عبارة عن دراسة نظرية أو عمليّة أو كلاهما لمشكلة حاسوبية سواء كانت تحليل وتصميم  نظام أو تصميم موقع الكتروني أو أي موضوع من المواضيع المرتبطة بشبكات الحاسب أو تصميم برمجية تعليمية .......... الخ
     الهدف من مشروع التخرج
السِّمة الـمُميِّزة لمشروع التخرج هو أنه عمل جماعي يضم مجموعة من الطلاب يتعاونون على إتمام عمل محدد تحت إشراف أحد أعضاء هيئة التدريس.  هذه التجربة فرصة كبيرة يكتسب الطالب من خلالها مهارة العمل ضمن فريق.  تعتبر هذه المهارة ضرورية في الحياة العملية بعد التخرج إذ أن معظم مجالات العمل تنطوي على أن يكون الفرد عضواً في فريق عمل أو مجموعة أفراد يعملون كمنظومة واحدة, لكل عضو فيها دور محدد يؤديه بالتنسيق مع بقية الأعضاء وصولاً إلى الهدف النهائي للفريق.  إضافة إلى ذلك هناك بعض المنافع الأخرى منها: تعلم مهارات تقنية جديدة، ممارسة بعض تقنيات التحليل والتصميم ، تعلم مهارة الكتابة الفنية، إضافة إلى تعلم مهارة العرض الشفوي أمام الجمهور. بالطبع يعتمد مدى اكتساب الطالب لهذه المهارات على مدى مشاركته في العمل، فكلما زاد مستوى مشاركته مع بقية أعضاء الفريق كلما تعاظم حجم استفادته واكتسابه للمهارات.  




المصدر:- د.حذيفة عبدالرحمن .......كلية المعلمين بالرياض.... قسم الحاسب الآلي

مقالات : الحقيبة التعليمية

عملية تفريد التعليم واستخدام التعلم الذاتي من الاهتمامات الجادة التي عني بها الغرب ، ومارسها في مدارسه منذ زمن بعيد ، وذلك لمقابلة الفروق الفردية بين الطلبة وإتاحة الفرصة لهم لتعليم أفضل في ظروف فيزيائية ، وفنية تتيح لهم تنمية مهاراتهم وتزويدهم ، بمهارات سلوكية لمقابلة مواقف حياتية منوعة .

 ومن الاتجاهات الحديثة التي لقيت نجاحا جيدا في إنجاح عملية تفريد التعليم ، وعززت أسلوب التعليم الذاتي استخدام الحقائب التعليمية في عملية التعلم والتعليم .


  الحقيبة التعليمية عبارة عن : مجموعة من الأجهزة والأدوات والمواد والوسائل التعليمية التي تخدم مجموعة متماثلة من الأنشطة المنهجية واللامنهجية ، يتم حفظها بشكل آمن ومناسب داخل حقيبة سهلة الحمل والنقل ما أمكن ، بحيث يتم تصنيفها بداخلها بشكل يمكن الوصول إلى أي قطعة بيسر وسهولة .



المصدر:- محمد،عواد حاسم ، (1992).الحقائب التعليمية / كيفية تقييمها وإنتاجها واستخدامها وتوظيفها 
             الكلوب، بشير عبدالرحيم ، ( 1988).  التكنولوجيا في عملية التعليم والتعلم
 

مقالات : مقرر البرمجة الشيئية بلغة ++c




ا         اسم المقرر: البرمجة الشيئية بلغة سي ++
 
               رمز المقرر: 314 حسب

  عدد الساعات:3


  أهداف المقرر: 

    .        اكتساب المعارف وإدراك تعليمات وتراكيب البيانات والدوال بلغة C++
.                       القدرة على تطوير خوارزميات لحل المعضلات بلغة  C++     
                                                                     التمكن من كتابة برامج  لغة

موضوعات المقرر: 
-وسطاء التوابع-المؤشرات-السجلات-تعريفها-الوصول إلى الحقول-بناء النمط time-
-تمرير السجلات إلى التوابع-السجلات المركبة-مصفوفة السجلات-العمليات على السجلات-السجلات الثابتة-الفرق بين السجلات والمصفوفات
 تعريف الصف- مجل رؤية صف وكيفية الوصول إلى أعضائه- التوابع البناءة- التوابع البناءة بدون وسطاء- التوابع البناءة مع وسطاء- التحميل الزائد للتوابع البناءة- الإسناد الافتراضي للأعضاء- أهادمات أو المدمرات

الدوال set و get (أو الدوال الخطية) -الفصل بين الواجهات والنصوص البرمجية- استخدام الوسطاء الافتراضية مع التوابع البناءة
الأغراض الساكنة والتوابع الأعضاء الساكنة- الأغراض الساكنة- المعطيات الأعضاء الساكنة والدوال الأعضاء 



مقالات : معنى البرمجة الشيئية


معنى البرمجة الشيئية
عبارة عن أسلوب جديد في البرمجة من حيث وحدة بناء البرنامج ومن حيث الخصائص الجديدة التي يسمح بها هذا الأسلوب حيث يعتبر وحدة بناء البرنامج هو الصف (class ) الذي يتكون من البيانات ومعها الدوال(العمليات) التي تعمل على هذه البيانات .
او بصورة مختصرة:-
يمكن أن نقول هي عبارة عن طريقة جديدة مستخدمة في البرمجة تمكن من تحليل وتصميم التطبيقات بشكل كائنات تحوي البيانات وتعرف عليها مجموعة من العمليات.
ولها عدة مسميات منها:\
1-البرمجة غرضية التوجه
2-البرمجة الموجهة نحو الاشياء
3-البرمجة الكائنية الموجهة
المقارنة بين اسلوب البرمجة الشيئية والهيكيلية:
كان الاسلوب الشائع في  تصميم البرامج القوية هو أسلوب البرمجة الهيكلية الذي يعتمد اساسا على بناء هيكل للبيانات دون الاهتمام بالعمليات التي يمكن تطبيقها على البيانات, بعد ذلك بدأ المبرمجون في الكشف عن أسلوب جديد للبرمجة يجمع البيانات والعمليات في بنية واحدة وذلك للعلاقة الوثيقة بين البيانات والعمليات وكان هذا الأسلوب هو أسلوب البرمجة الكائنية او الشيئية.
ويختلف البرنامج المكتوب بأسلوبoop عن البرنامج المكتوب بالاسلوب الهيكلي فيما يلي:
1-وحدة بناء البرنامج
كان البرنامج المكتوب بالاسلوب الهيكلي عبارة عن دالة رئيسية ومجموعة دوال فرعية ,ويتم استدعاء الدوال الفرعية من داخل الدالة الرئيسية حسب تسلسل البرنامج.كما في لغةcالهيكلية أما البرنامج المكتوب باسلوب oop فقد أصبحت وحدة البرنامج فيه هي الصنف class التي تتكون من البيانات والدوال التي تعمل على هذه البيانات ويتم استدعاء الدوال كعناصر للأصناف.
2-النظرة إلى البيانات
في البرنامج الهيكلي كان مجهود المبرمج ينصب على كود البرنامج أي سطور البرنامج التي تتولى سير العمليات بينما كانت النظرة إلى البيانات نظرة ثانوية ولكن اسلوب برمجة البرمجة الشيئية يعتبر البيانات جزء مهم من البرنامج .وبالتالي أصبحت لدينا مكتبة ليس فقط من الدوال بل مكتبة من الفصائل التي تحتوي على البيانات والدوال التي تتعامل معها ووفرت هذه المكتبة الكثير من المجهود الذي يبذله المبرمج حيث كان يقوم بتعريف البيانات ثم الدوال التي تتعامل معها كل مرة .وتظهر مكتبة الاصناف في برمجة النوافذ حيث يوجد صنف للنافذة الرئيسية للبرنامج به جميع البيانات التي تخص النافذة وكذلك الدوال التي تتعامل مع هذه النافذة ويوجد صنف لمربع الحوار وبه بيانات مربع الحوار وكذلك الدوال التي تتعامل معه فأصبحت وحدة البرنامج كبيرة وليس على المبرمج كتابة كل شيء في البداية.
بعض المفاهيم الاساسية في البرمجة الشيئية oop
-الكائن:object
هو عبارة عن وحدة تحوي مجموعة من البيانات تسمى خصائص أو صفات ومعرفة عليها مجموعة عمليات(دوال)
مثال:-طالب,قلم,حاسب.
-الصنفclass
هو عبارة عن نوع يحوي مجموعة من الكائنات التي تشترك في الخصائص والعمليات .
مثال:-صنف الحاسبات,صنف الطلاب
الفرق بين الصنف والكائن:-
كل ما في الوجود هو كائن فانا وأنت وهذه الورقة والقلم كلها كائناتobjects  ولكل منها خصائص محددة ويستطيع القيام بعمليات محددة .أما الصنف فهو مجموعة من الكائنات المتشابهة فالرجال صنف وزيد كائن منه والنساء صنف وأمل كائن منه .وكمثال آخر الصنف البرمجي"بطاقة دوام"الذي يحوي الطرق المطلوبة لحساب الأجر وعدد ساعات الدوام  أما الكائن "بطاقة دوام محمد" والكائن"بطاقة دوام حسن" فإنهما يستفيدان من الإجراءات الموجودة في الصنف "بطاقة دوام" لحساب أجر محمد أو اجر حسن .
مزايا البرمجة الشيئية:-features  of oop
1- التجريدabstraction
وهو عملية تحديد كل الخصائص والعمليات التي تنتمي لصنف أو كائن معين وهي نوعان:-
أ-تجريد البيانات data abstraction
ب-تجريد العمليات methods abstraction
2-الكبسلة(التغليف) encapsulation
هي عملية تجميع كل الخصائص والعمليات في وحدة واحدة تسمى الصنف(داخل غلاف واحد) ولا يمكن الوصول إلى هذه الخصائص والعمليات إلا عن طريق الكائن





3-إخفاء البيانات data hiding
وهي مبزة ناتجة عن كبسلة البيانات وتعني إخفاء بعض البيانات وإضافة مستوى حماية معين عليها حتى نمنع الوصول الخطأ إليها
4-الوراثة inheritance
وهي أن يرث صنف معين الخصائص والعمليات المعرفة في صنف آخر مما يساعد على إعادة استخدام الاصناف التي تم انشاؤها من قبل .
مثلا إذا كان لينا صنفان Q1 وQ2





فإن Q2 يرث عناصر Q1 بالإضافة إلى f3()

5- تعدد الأشكال polymorphism
وهي ميزة تمكن من إنشاء كائنات لها القدرة على القيام بأكثر من وظيفة أو إنشاء دوال لها القدرة على القيام بأكثر من وظيفة.

مقالات : تقنية غرضية التوجه


تعتبر التقنية عرضية التوجه من احدث وأقوى التقنيات البرمجة في الوقت الراهن ، فهي تعتمد على طريقة جديدة في حل المسائل والتطبيقات البرمجية ، تتلخص هده الطريقة بالنظر إلى النظام على انه مجموعة من الأغراض المتفاعلة مع بعضها البعض لأداء الوظائف المطلوبة . حيث لكل غرض أفعال وصفات خاصة به.
إضافة إلى ذلك فان هذا الأسلوب يوفر للمبرمجين إمكانية إعادة استخدام البرمجيات . بالتالي إمكانية تسويقها .
إن معظم لغات البرمجة الحديثة من ضمنها c++ تتمتع بإمكانيات البرمجة العرضية التوجه والدي أصبح يحل محل أسلوب البرمجة التقليدي وهو البرمجة الإجرائية . لذلك أصبح من الضروري على كل متخصص يريد تعلم واحتراف البرمجة أن يتعلم هذا الأسلوب ويتقن فن التعامل معه بمهارة وجودة لكي يتمكن من مواكبة التطور السريع في هذا المجال المهم والحيوي من مجالات التقنية المعلوماتية.

مقالات : دوال البناء والهدم


** دوال البناء والهدم ::

أولا: دوال البناء
Constructor Function .:::

هي عبارة عن دالة تحمل نفس اسم الصنف
ويتم استدعاؤها مباشرة عند اشتقاق كائن من الصنف وتستخدم غالباً لإعطاء خصائص ( متغيرات ) الصنف قيم ابتدائية .

- ملاحظات :

1- لا يمكن تهيئة البيانات العضو أثناء التعريف .
2- لا يوجد مردود (
return ) لدوال البناء .
3- يمكن أن يحوي الصنف أكثر من دالة بناء ( التحميل الزائد للدوال ).

** مثال توضيحي لمؤثر دقة الوصول ودوال البناء .:



كود
PHP:
#include <iostream.h>
#
include <cstdlib>
using namespace std ;
//انشاء صنف باسم MYCLASS
class myclass
{
int a;
public:
myclass();
void show();
};
myclass::myclass()
{
cout<<"Constructor Function \n";
a=10;
}
void myclass::show()
{
cout<<"a="<<a<<"\n";
}
int main()
{
myclass ob;
ob.show();

system("PAUSE");
return 0;
والان شرح بسيط لاهم ما ورد في الكودالسابق :
1.    كود PHP:
myclass();

الاعلان عن
دالة بناء ( لان اسمها من اسم الصنف ) ولاحظ اننا وضعنا في نهاية تعريف الدالة فاصلة منقوطة ( ; ) وهذه نضعها في حال لم نريد كتابة تفاصيل الدالة داخل الصنف .
1.    كود PHP:
myclass::myclass()

لاحظ اننا كتبنا هذا الكود بعد اقفال الكلاس .
لكتابة تفاصيل الدالة خارج الصنف نستخدم هذه الطريقة بحيث في البداية كتبنا اسم الصنف
myclass ومن ثم مؤثر دقة الوصول وهو ( :: ) ومن ثم اسم الدالة myclass().(لاحظ هنا اننا نتحدث عن دالة البناء ، ودالة البناء ليس لها DataType عكس دالة show التي سترد الان ) .
1.   
كود
PHP:
void myclass::show()


لاحظ هنا في البداية نكتب نوع الدالة
DataType وهو Void الموجود في دالة show ، ومن ثم اسم الصنف ومؤثر دقة الوصول واسم الدالة ( كما في الدالة السابقة)
1.    ** دالة الهدمDestructor Function :

هي عبارة عن دالة
عضو في الصنف ، ويتشكل اسمها من المحرف ( ~ ) مضافاً إليه اسم الصنف . وتستخدم لإنهاء الأعمال الداخلية للكائنات حتى يستطيع النظام استعادة الذاكرة لحفظ كائنات جديدة .

ملاحظات على دالة الهدم :

1- ليس لها وسائط ، ولا ترجع فيمة .
2- يمكن للصنف أن يحتوي على دالة هدم واحدة فقط .
3- لا يمكن تحميل دالة الهدم بشكل زائد.
** استخدام الوساط ( التلقائية ) الإفتراضية مع دالة :

يمكن أن يستخدم أي نوع أو أي عدد من المعاملات ( الوسائط) داخل دالة البناء ، في هذه الحالة يتم استدعاء دالة البناء للكائنات ذات المعاملات التي تتناسب مع عدد المعاملات الموجودة داخل دالة البناء .







مثال .:





1.    كود PHP:
#include <iostream.h>
#
include <cstdlib>
using namespace std ;
class myclass
{
private:
int x,y;
public:
myclass()
{
x=y=1;
}
myclass(int a ,int b)
{
x=a;
y=b;
}
void display()
{
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
};

int main()
{
int n,m;
cin>>n>>m;
myclass ob1;
ob1.display();
myclass ob2(n,m);
ob2.display();
system("PAUSE");
return 0;
}





1.     
توضيح بسيط لأهم ما ورد في هذا الكود :

في البداية يطلب البرنامج من المستخدم ادخال عددين ليسجلهما في المتغيرين m,n ..
و عند اشتقاق الكائن الأول وهو ob1 كما يظهر هنا ::..

كود
PHP:
myclass ob1;
فإنه يتم مباشرة استدعاء التعليمات المكتوبة داخل دالة البناء myclass وهي ::.
1.   
كود
PHP:
myclass()
{
x=y=1;
}

أي يجعل قيمة x و y تساوي العدد ( 1 ) .
ومن ثم استدعاء دالة الطباعة للكائن ob1 كما في هذا الشكل :.
1.    كود PHP:
ob1.display();

بعد ذلك تم اشتقاق كائن اخر من الصنف myclass باسم ob2 وله وسيطتين وهما العددين الذين ادخلهما المستخدم في بداية البرنامج .::
كود PHP:
[right]myclass ob2(n,m);
ob2.display();
[/
right]

ليتم بعدها طباعة العددين m,n من خلال دالة الطباعة display()
** متى تستدعى دوال البناء والهدم ؟!

1- يعتمد الترتيب الذي يستدعى به هذه الدوال على ترتيب الذي يدخل فيه التنفيذ أو يخرج من المجال الذي عرفت فيه الكائنات .
2- بشكل عام . يتم استدعاء دوال الهدم بترتيب
معاكس لدوال البناء غير أنه يمكن أن يتغير هذا الترتيب في بعض الحالات ( ستذكر في السياق )
3- تستدعى دوال البناء للكائنات المعرفة في
المجال العام وقبل تنفيذ أي دالة بما فيها الدالة Main() .
4- تستدعى دوال الهدم المقابلة عندما تنتهي الدالة
main().
5- تستدعى دوال البناء
للكائنات المحلية التلقائية عندما يصل التنفيذ إلى النقطه التي عرفت فيها الكائنات .
6- تستدعى دوال الهدم المقابلة عندما تغادر الكائنات المجال الذي عرفت فيه .
7- تستدعى دوال البناء للكائنات
المحلية الساكنة عندما يصل التنفيذ إلى النقطة التي عرّفت فيها الكائنات وتستدعى دوال الهدم المقابلة عند انتهاء الدالة Main() .

1.    ** برنامج يوضح لك النقاط السابقة حتى تتضح الرؤية حول كيفية الاستدعاء

كود
PHP:
#include <iostream.h>
#
include <cstdlib>
using namespace std ;
class createAndDestroy
{
private:
int data;
public:
createAndDestroy (int);
~
createAndDestroy();
};
createAndDestroy::createAndDestroy(int value)
{
data=value;
cout<<"object "<<data<<" Constructor \t";
}
createAndDestroy::~createAndDestroy()
{
cout<<"object"<<data<<"destructor"<<endl;
system("PAUSE");
}
void create();
createAndDestroy first(1);


int main()
{
cout<<"global object before main"<<endl;
createAndDestroy second(2);
cout<<"Local Automatic in main"<<endl;
static createAndDestroy third(3);
cout<<"Local Static in main"<<endl;
create();
createAndDestroy fourth(4);
cout<<"Local Aotumatic in main"<<endl;

system("PAUSE");
return 0;
}

void create()
{
createAndDestroy fifth(5);
cout<<"Local Aotumatic in Create \n";
static createAndDestroy sixth(6);
cout<<"Local Static in create \n";
createAndDestroy seventh(7);
cout<<"Local Automatic in Create \n";
system ("PAUSE");
}

وهذا هو شكل المخرجات :