منتدى دفعة (شموع المستقبل) قسم معلم حاسوب الدفعة الخامسة 2010 - 2011م

اهلاً وسهلاً بكم في منتديات (دفعة شموع المستقبل)
قسم معلم الحاسوب

منتدى دفعة (شموع المستقبل) قسم معلم حاسوب الدفعة الخامسة 2010 - 2011م


 
الرئيسيةالبوابةمكتبة الصورس .و .جبحـثالمجموعاتالتسجيلدخولتسجيل دخول الاعضاء
نرجوا من كل اعضاء المنتدى التفاعل واعادة تنشيط اقسام المنتدى لتعم الفائده للجميع

شاطر | 
 

 مقدمة إلى البرمجة بلغة السي بلس بلس

اذهب الى الأسفل 
كاتب الموضوعرسالة
محمد يحيى العبدلي
عصو فضي
عصو فضي
avatar

عدد المساهمات : 547
نقاط : 29350
السٌّمعَة : 3
تاريخ التسجيل : 15/02/2011
العمر : 27
الموقع : myy_alabdli@yahoo.com

مُساهمةموضوع: مقدمة إلى البرمجة بلغة السي بلس بلس    الخميس فبراير 24, 2011 5:07 pm

السلام عليكم ورحمه
الله
اليوم اود ان ارغب في اعطاءكم بعض الدروس الابتدائيه من لغه السي بلس
بلس
ومنها قد تقودكم الي اعترافها

مقدمة إلى البرمجة بلغة السي بلس
بلس

تعتبر لغةC++ من أشهر اللغات التي تتمتع بطابع القوة والمرونة لإنتاج
أسرع برامج وأفضلها أداءاً. وعلى الرغم من وجود العديد من لغات البرمجة الأخرى إلا
أنها تفتقر شمولية لغة C++ وقوتها . فاللغة C++ تتميز بقابليتها على معالجة
التطبيقات الكبيرة والمعقدة، والقوة في صيانة البرامج المكتوبة بها مما يوفر وقتاً
في تصميم البرامج وتطويرها .
تعتبر اللغة C++ امتداداً للغة C. وقد أنشأها
Bjarne Stroustrup عام 1979 م، وكانت تسمى حينها C مع فئات( C with classes)، وتغير
اسمها إلى C++ في العام 1983م.
تعتمد اللغة C++ أسلوب البرمجة كائنية المنحى
Object Oriented Programming، والذي يعرف اختصاراً بـ (OOP)، والذي تم تطويره بسبب
قيود كانت أساليب البرمجة القديمة المتمثلة في اللغات الإجرائية تفرضها على
المبرمجين. ولكي نتعرف على طبيعة تلك القيود يجب أن نلقى الضوء على ما يحدث في
اللغات الإجرائية.
اللغات الإجرائية:
لغات Pascal،C ،Basic و Fortran وغيرها
من لغات البرمجة التقليدية هي لغات إجرائية (Procedural). أي أن كل عبارة في اللغة
هي عبارة عن تعليمة للحاسوب أن ينفذ شيئاً ما : أحصل على دخل أو أجمع أرقام الخ..…
.
لذا نجد أن البرنامج المكتوب بلغة إجرائية هو عبارة عن لائحة من التعليمات. لا
تبدو هنالك مشكلة مع البرامج الإجرائية الصغيرة، فالمبرمج ينشئ لائحة التعليمات
ويقوم الحاسوب بتنفيذها. ولكن مع كبر حجم البرامج لا تعود لائحة من التعليمات فعالة
حيث يصعب فهم برنامج يتألف من مئات من العبارات إلا إذا كانت مقسمة إلى أجزاء أصغر،
لذا تم اعتماد أسلوب الدالات (Functions) والإجراءات (Procedures) كوسيلة لجعل
البرامج أسهل للقراءة والفهم، حيث تمتلك كل دالة في البرنامج واجهة محددة، وتنفذ
هدفاً محدداً. ولكن المشكلة ما تزال قائمة : مجموعة من التعليمات تنفذ مهاماً
محددة.
و مع تزايد حجم البرامج وتعقيدها، يظهر ضعف الأسلوب الإجرائي، حيث تصبح
البرامج الضخمة معقدة إلي حد كبير. من أهم أسباب فشل اللغات الإجرائية هو الدور
الذي تلعبه البيانات فيها، حيث تعطى البيانات أهمية ثانوية على الرغم من أنها هي
السبب في وجود البرامج، ويكون التشديد على الدالات التي تعمل على هذه البيانات، حيث
يتم تعريف البيانات خارج أي دالة لكي يصبح بالإمكان الوصول إليها من كل الدالات في
البرنامج، لذا غالباً ما تكون البيانات عرضة للتغيير أو التعديل الخطأ. وعلى الرغم
من أن هنالك بعض اللغات كـ Pascal وC تعرف متغيرات محلية (Local )، وهي متغيرات
معرفة في دالة واحدة. لكن المتغيرات المحلية غير مفيدة للبيانات المهمة التي يجب
الوصول إليها من عدة دالات في البرنامج. أيضاً هناك مشكلة طريقة تخزين البيانات
بسبب إمكانية عدة دالات للوصول إليها. لا يمكن تغيير ترتيب البيانات من دون تغيير
كل الدالات التي تتعامل معها.
وإذا أضفنا بيانات جديدة نحتاج لتعديل كل الدالات
حتى تستطيع هذه الدالات استعمال هذه البيانات الجديدة .
غالباً ما يكون تصميم
البرامج الإجرائية صعباً، لأن مكوناتها الرئيسية (الدالات) عبارة عن بنية بيانات لا
تقلد العالم الحقيقي جيداً .و يصعب في اللغات الإجرائية إنشاء أي نوع بيانات جديد
بخلاف الأنواع المعرفة أصلاً في تلك اللغات ، لكل هذه الأسباب تم تطوير الأسلوب
الكائني المنحى.
الأسلوب الكائني المنحى:-
الفكرة الأساسية وراء اللغات
كائنية المنحى هي دمج البيانات والدالات التي تعمل على تلك البيانات في كينونة
واحدة تسمى كائن (Object)، وعادة تزود دالات الكائن -والتي تسمى أعضاء دالية
(Member functions)- الطريقة الوحيدة للوصول إلي البيانات، لذا تكون البيانات محمية
من التعديلات الخطأ ويقال أن البيانات ودالاتها مغلفة (Encapsulated) في كينونة
واحدة.
مميزات اللغات كائنية المنحى :
هنالك تطابق بين الكائنات في البرمجة
وكائنات الحياة الفعلية، فالعديد من الكائنات الفعلية لها وضعية ( خصائص يمكن أن
تتغير ) وقدرات (أشياء يمكن أن تقوم بها).
في C++ تسجل بيانات الكائن ووضعيته
كما تتوافق أعضاءه الدالية مع قدراته، تدمج البرمجة كائنية المنحى المرادف البرمجي
للوضعيات والقدرات في كينونة واحدة تسمى كائن النتيجة لذلك كينونة برمجية تتطابق
بشكل جيد مع الكثير من كائنات الحياة الفعلية.
الفئات والوراثة
(Inheritance):
الكائنات في OOP هي مثيلات من الفئات، حيث يمكننا تعريف كثير من
الكائنات تابعة لفئة معينة، وتلعب دور خطة أو قالب يتم إنشاء الكائنات على أساسه،
وهي التي تحدد ما هي البيانات والدالات التي سيتم شملها في كائنات تلك الفئة. لذا
فالفئة هي وصف لعدد من الكائنات المتشابهة. وتؤدى فكرة الفئات إلي فكرة الوراثة،
حيث يمكن استعمال فئة OOP كأساس لفئة فرعية واحدة أو أكثر تسمى الفئة القاعدة (Base
class)، ويمكن تعريف فئات أخرى تتشارك في خصائصها مع الفئة القاعدة ولكنها تضيف
خصائصها الذاتية أيضاً، تسمى هذه الفئات المشتقة (Derived classes).
قابلية
إعادة الاستعمال Reusability:
بعد كتابة الفئة يمكن توزيعها على المبرمجين لكي
يستعملوها في برامجهم ، يسمى هذا الأمر قابلية إعادة الاستعمال Reusability ويزود
مفهوم الوراثة ملحقاً هاماً إلي فكرة إعادة الاستعمال حيث يستطيع المبرمج أخذ فئة
موجودة أصلاً ومن دون تغييرها يضيف ميزات وقدرات جديدة إليها وذلك من خلال اشتقاق
فئة جديدة من الفئة القديمة.
إنشاء أنواع بيانات جديدة:-
من أهم فوائد
الكائنات أنها تعطى المبرمج وسيلة لإنشاء أنواع بيانات جديدة، كالأرقام المركبة أو
الإحداثيات ثنائية الأبعاد أو التواريخ أو أي نوع من أنواع البيانات قد يحتاج
المبرمج إلي استعمالها.
تعدد الأشكال والتحميل الزائد : Polymorphism and
overloading
يسمى استعمال الدالات والعوامل في أساليب مختلفة وفقاً لما يتم
استعمالها عليه بتعدد الأشكال. لا تضيف اللغة C++ إمكانية إنشاء أنواع بيانات جديدة
فقط، بل وتتيح أيضاً للمبرمج القدرة على العمل على أنواع البيانات الجديدة تلك
باستعمال نفس العوامل التي تستخدمها الأنواع الأساسية كـ + أو = ويقال عندها أنه تم
تحميل هذه العوامل بشكل زائد لتعمل مع الأنواع الجديدة.


سنبدأ بكتابة
برنامج يعرض نصاً على الشاشة:-




//Program 1-1:
//This
program will display a message on the
screen.
#include
main ( )
{
cout <<''welcome
to C++ !\n'';
return 0;
}

الخرج من البرنامج:

welcome to C++
!




يقوم الحاسوب بتنفيذ البرنامج ويعود سريعاً للمحرر IDE.
من
الآن فصاعداً، إذا أردت تثبت المخرجات على الشاشة عليك إضافة التالي إلى
البرنامج:
#include
في أول البرنامج، وإضافة
العبارة:
getch( )
في السطر الذي يسبق العبارة return
0




التعليقات:Comments
// Program 1-1:
//This program
will display a message on the screen.

يبدأ هذا السطر من البرنامج بالشرطة
المزدوجة (//) الدالة على أن بقية السطر عبارة عن تعليق (comment)، تضاف التعليقات
إلى البرامج لتساعد المبرمج أو أي شخص آخر قد يحتاج إلى قراءة البرنامج على فهم ما
الذي يفعله البرنامج، لذا من المستحسن أن يبدأ كل برنامج في لغة C++ بتعليق يوضح
الغرض الذي من أجله كتب البرنامج.
تستخدم الشرطة المزدوجة (//) إذا كان التعليق
يمتد لسطر واحد فقط single-line comment .
هنالك نوع آخر من التعليقات يتيح لنا
كتابة تعليقات تمتد إلى عدة أسطرmulti-line comments ، نستطيع كتابة التعليق السابق
على الصورة:
/* Program 1-1:
This program will display a message on the
screen
*/

يبدأ الرمز */ التعليق وينهيه الرمز */ . نجد أن نهاية السطر
لا تعنى انتهاء التعليق لذا يمكننا كتابة ما نشاء من أسطر التعليقات قبل الانتهاء
بالرمز */.

مرشدات المهيئ(Preprocessor Directive)
:-
#include
يسمى هذا بمرشد المهيئ Preprocessor
directive، وهو عبارة عن تعليمة للمصرف أن يدرج كل النص الموجود في الملفiostream.h
في البرنامج، وهو ملف يجب تضمينه مع أي برنامج يحتوى على عبارات تطبع بيانات على
الشاشة أو تستقبل بيانات من لوحة المفاتيح.
يسمى iostream ملف ترويسة (header
file)، وهنالك الكثير من ملفات الترويسة الأخرى، فمثلاً إذا كنا نستعمل في برنامجنا
دالات رياضية كـ sin( ) وcos( ) نحتاج إلى شمل ملف ترويسة يدعى math.h، وإذا كنا
نتعامل مع سلاسل الأحرف سنحتاج للملف string.h. وعموماً هنالك عدد كبير من ملفات
الترويسات التي يجب تضمينها على حسب طبيعة البرنامج ، تعتبر ملفات الترويسات جزء
مهم من برامج لغة C++ وسنحتاج إلى شمل الملف iostream.h لتشغيل أي برنامج يقوم
بعمليات إدخال وإخراج.
الدالة main :-
main( )
يبدأ تشغيل أي برنامج C++
من دالة تدعي main( )، وهي دالة مستقلة ينقل نظام التشغيل التحكم إليها. وهي جزء
أساسي في برنامج C++.
الأقواس بعد main تشير إلى أن main هي عبارة عن دالة. قد
يحتوى برنامج C++ على أكثر من دالة إحداهما بالضرورة هي main. يحتوى البرنامج
السابق على دالة واحدة.
يبدأ تنفيذ البرنامج من الدالة main حتى لو لم تكن هي
الأولى في سياق البرنامج. يتم حصر جسم الدالة main بأقواس حاصرة { } .
الخرج إلى
الشاشة:-
cout<<'' welcome to C++ !\n '';
هذه العبارة (statement)
تجبر الحاسوب أن يظهر على الشاشة النص المحصور بين علامتي الاقتباس '' .'' ويسمى
هذا النص ثابت سلسلي.
يجب أن تنتهي كل عبارة في برنامج C++ بفاصلة منقوطة ;
(semi colon).
الاسم cout والذي يلفظ كـ C out يمثل كائن في C++ مقترن مع الشاشة
والعامل << والذي يسمى بعامل الوضع Put to operator يجبر على إرسال الأشياء
التي على يمينه إلى أي شئ يظهر على يساره


//Program 1-2:
Output
#include
main ( )

{
cout << 7
<< " is an integer.\n";
cout << 'a' << "is a
character.\n";
}


الخرج من البرنامج:

7 is an integer.
a
is a character


من خرج البرنامج يتضح لنا الآتي:
1- يتم حصر النص
المطلوب ظهوره على الشاشة بين علامتي اقتباس"is an integer ".
2- تتم كتابة
الثوابت الرقمية بدون علامتي اقتباس << 7.
3- يتم حصر حرف واحد مطلوب
ظهوره على الشاشة بعلامة اقتباس فردية <<’a’.
تقوم بعض اللغات كـ Basic
مثلاً بالانتقال إلى سطر جديد تلقائياً في نهاية كل عبارة خرج ، لكن C++ لا تفعل
ذلك كما أن العبارات المختلفة والموضوعة في أسطر مختلفة لا تؤدي إلى ذلك .
لا
ينشئ الكائن cout أسطراً جديدة تلقائياً، والمخرجات في البرنامج التالي توضح
ذلك:-
//Program 1-3:This program displays output on the
screen
#include
main (
)
{
cout<<10;
cout<<20<<30;
return
0;
}

تظهر الخرج:-

102030


حيث يلتصق كل الخرج ببعضه
البعض ، لذا من الجيد أن يكون لدينا طرق في C++ للتحكم بطريقة تنسيق الخرج والتي
منها تتابعات الهروب(Escape Sequences).
تتابعات الهروب (Escape
Sequences):
نلاحظ أنه لم تتم طباعة \n على الشاشة ، \ تسمى الشرطة الخلفية
(Back slash) أو حرف هروب (Escape character) وتسمى هي والحرف الذي يليها تتابع
هروب. تتابع الهروب \n يعنى الانتقال إلى سطر جديد حيث يجبر المؤشر على الانتقال
إلى بداية السطر التالي ، الآن إليك بعض تتابعات الهروب الشائعة:-
تتابع الهروب
الوصف
\n سطر جديد.
\t مسافة أفقية.
\b حرف التراجع back space.
\\
لطباعة شرطة خلفية.
\r حرف الإرجاع، يجبر المؤشر على الانتقال إلى
بداية هذا
السطر.
'' لطباعة علامة اقتباس
العبــارة return 0 :-
تكتب العبارة
return 0; في نهاية الدالة main( ) . القيمة 0 تشير إلى أن البرنامج انتهى نهاية
صحيحة وسيبدو لنا سبب تضمين هذه العبارة واضحا عندما نتعرف على الدوال في C++
بالتفصيل.
مثال آخر لبرنامج C++ :-
إليك الآن مثالاً لبرنامج يستقبل رقمين من
المستخدم ويجمعهما ويعرض ناتج الجمع:-

// Program 1-4: Addition
program
#include
#include
main ( )
{
int integer1, integer2, sum;
cout <<"Enter first
integer\n";
cin >> integer1;
cout <<"Enter second
integer\n";
cin >> integer2;
sum= integer1+integer2;
cout
<<"sum="<getch();
return
0;
}

Enter first integer
7
Enter second integer
3
sum=
10




1. حدد ما إذا كانت العبارات الآتية صحيحة أم خطأ:

التعليقات تجبر الحاسوب على طباعة النص الذي يلي // على الشاشة عند تنفيذ
البرنامج.
 تتابع الهروب \n يجبر المؤشر على الانتقال إلى سطر جديد.

برنامج C++ والذي يقوم بطباعة ثلاث أسطر على الشاشة يجب أن يحتوى على ثلاث عبارات
تستعمل cout.
2. ما هو الخرج من العبارة الآتية:
cout << “\n **\n
***\n ****\n”;
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
مقدمة إلى البرمجة بلغة السي بلس بلس
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى دفعة (شموع المستقبل) قسم معلم حاسوب الدفعة الخامسة 2010 - 2011م :: المنتديات الدراسية :: منتدى لغات البرمجة-
انتقل الى: