العودة   منتديات LeQatar > .:: • الإبداع والهوايات والترفية • ::. > +.. عالم التكنولوجيا والإتصالات ..+ > الكمبيوتر والإنترنت

الكمبيوتر والإنترنت كل مايدور حول الكمبيوتر من كتب وبرامج وألعاب وماسنجر،وتطوير المواقع..



عدد الأعضاء الذي يشاهدون هذا الموضوع الآن : 1 (0 عضو و 1 ضيف)
 

المشاركة في الموضوع
 
خيارات الموضوع طريقة العرض
  #1  
قديم 17-08-2006, 05:33:27 AM
melomane melomane is offline
مشترك جديد
تاريخ التّسجيل: Aug 2006
رقم العضوية: 8604
الإقامة: LeQaTaR
الجنس: رجـــل
المشاركات: 7
قوة التقييم: 0
نقاط التقييم: melomane will become famous soon enough

مقدمة في لغة البرمجة C++, سلسلة دروس


بسم الله الرحمن الرحيم

اخواني الاعزاء .. هذه مقدمة في دروس لغة البرمجة C++ و التي تعد من أعظم لغات البرمجة للحواسيب الشخصية و المتوسطة على الاطلاق ان لم تكن اعظمها..

أرجو ملاحظة النقاط التالية:
* ستكون بعض الدروس متأخرة قليلا ( لا اضمن نشر الدروس بسرعة كبيرة ! )
* سأحاول استخدام اللغة الانجليزية في شرح معظم الدروس للتسهيل على من اراد الاستزادة
* سأحاول البداية من الصفر المطلق في الدروس ، فمن عنده خلفية ( يتحملنا شوي ) لحد ما نصل عند مستواه ، و ذلك لتحقيق الفائدة العامة
* سنبدأ بالتطبيق في المراحل الاولى على برنامج Visual C++ version 6 الموجود في حزمة البرامج MS Visual Studio 6 ولا داعي لشرح كيفية تنزيل البرنامج
* تتطلب الدروس معرفة أساسيات نظام التشغيل Windows للمستخدمين العاديين


الدروس تحتوي ( حتى اللحظة ) :

1. البرنامج ( اهميته و ماهيته )
2. مراحل انتاج البرنامج
3. تاريخ لغة البرمجة C++
4. المتغيرات
5. البرنامج الاول
6. الادخال و الاخراج و أولويات العميليات الحسابية
7. الجمل الانتقالية: if , switch
8. جمل الحلقات: goto و while و do-while و for
9. الجمل break و continue
10. المصفوفات ذات البعد الواحد
11. المصفوفات ذات الابعاد المتعددة
12. المؤشرات

و اللائحة ستطول مع الزمن ان شاء الله.

نبدأ الدرس الاول..
البرنامج: هو مجموعة أوامر يكتبها المبرمج حسب خطوات منطقية متسلسلة لحل مشكلة معينة.
أذكّر.. البرنامج ما هو الا حل مشكلة معينة مهما عظم أو صغر..

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

من أنواع البرامج:

1. نظم التشغيل (Operating Systems): و هي مجموعة هائلة من البرمجيات الصغيرة التي يحل كل منها مشكلة صغيرة جدا كجمع رقمين أو تحديث الالوان على الشاشة. و من أمثلتها المعروفة نظم Windows و نظام Linux و Unix و Apple Mac.

2. البرمجيات المساعدة (Utility Softwares): و هي برمجيات تساعد المستخدم على حل بعض المشاكل التي تواجه الجهاز و منها مضادات الفيروسات و أشباهها. من أمثلتها McAfee .

3. الألعاب الحاسوبية: و هي برمجيات تساعد المستخدم على الخروج من واقعه الحقيقي الى واقع آخر بهدف التسلية و المرح. " بالنسبة للأمثلة فلكل منا أمثلته المفضلة !

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

أولا (تحديد المشكلة و جمع المعلومات): لكل مشكلة حل مهما كانت .. و لكل داء دواء يستطب به الا الحماقة اعيت من يداويها... " بيت شعر قديم ". عليك - عزيزي المبرمج - تحديد المشكلة قبل الدخول في تفاصيلها و إعطائها حجمها الصحيح الأكيد ( لا تزيد ولا تنقص ! ). مثال:
اذا تحتاج برنامج لتمثيل الحركة على اشارة مرور.. ممكن يكون المدى ( Domain ) البرنامج هو واحد فقط من الشوارع التي تصل الى الاشارة و ممكن يكون هو جميع الحي التي تقع الاشارة في منتصفه. احذر ! فعدم تحديد المدى الصحيح للبرنامج قد يقود الى لبس في الفهم للمشكلة أو اعطائها اكبر من حجمها مما يضيع عليك المال و الجهد. اذهب الى الاماكن التي تتوقع أن يباع برنامجك فيها و استفسر من الزبائن عن المتطلبات الرئيسة للبرنامج من وجهة نظرهم ، لا تعطهم أكثر مما يطلبون لأنهم لن يحتاجوه ولا تعطهم أقل لكي لا يتأخروا عليك في الدفع .

ثانيا ( تحليل المشكلة ): حلل المشكلة الى مشاكل أبسط منها و الأبسط الى أبسط حتى تصل الى مشاكل ذرية " Atomic Subprblems " و للتمثيل:
فلكي نمثل حركة السير على الاشارة فنحن نحتاج الى عداد أو ساعة لتقسيم الحركة و معرفة أي جهة ستفتح و أيها ستغلق.. و ما الى ذلك.

ثالثا ( تصميم الحل ): وجدنا المشكلة و حللناها .. فلنبدأ بالحل.. في هذه الخطوة يجب عليك أن تبدأ بايجاد الحل المناسب و تصميمه بأقل ما يمكن من استغلال جهد الحاسب و سعته التخزينية ، مع مراعاة محاولة جعل البرنامج بأسرع ما يمكن (( من أراد الاستزادة فعليه الرجوع الى مراجع هندسة البرمجيات )) .

رابعا ( الاختبار ): في هذه المرحلة نقوم بعمليات اختبار للبرنامج جزئيا حتى نصل لاختبار لكامل محتويات البرنامج.

خامسا ( التسويق ): في هذه المرحلة نسوق البرنامج!!!!

انتهى الدرس!

الدرس الثالث: تاريخ لغة البرمجة C++ ..
طبعا هذا الدرس اختياري ، ولا يجب عليك عزيزي القاريء الالمام التام به ، لذلك سأحاول الاختصار قدر الامكان.

بدأت هذه اللغة في معامل Bill Labs و هي المكان نفسه الذي اخترع فيه الترانزستور من قبل و هي - المعامل - ذات سمعة كبيرة في مجالات التكنولوجيا جميعا..

بالنسبة للغة نفسها فهي مشتقة من لغة سابقة لها اسمها BCLP و اسمها المختصر هو B ، و من ثم تطورت الى لغة C التي صممت بسبب الحاجة الى لغة لكتابة نظم التشغيل و خاصة Unix التابع لشركة Sun Microsystems .
و من بعد ظهور البرمجة الموجهة للكائنات تطورت اللغة لتعتمد Object oreiented programming فأصبحت تدعى C++ .
دخلت Microsoft على الخط..! فأنتجت تطويرا جديدا لهذه اللغة يعتمد البرمجة للنظامها المشهور Windows و أسمته Visual C++ . و ظهر منها 6 نسخ كان آخرها VC++ 6 في عام 1998 .
في منتصف التسعينيات أنتجت شركة Sun بعض التعديلات على اللغة الاصلية و أخرجت لغة Java كلغة ببرمجة مخصصة لتطبيقات الويب و داعمة لمباديء البرمجة الكينونية و تعمل على معظم انظمة التشغيل في العالم.
في عام 2000 أنتجت مايكروسوفت .NET framework و الذي كان - ولا يزال - صيحة هائلة في عالم البرمجة.
مع الاصدار الجديد ظهرت آخر النسخ المعدلة عن اللغة C++ و التي سميت بـ Maneged C++ ( MC++ )

انتهى الدرس

الدرس الرابع .المتغيرات

# مجموعة من القواعد:
* المتغير: هو مكان في الذاكرة المؤقتة RAM يحجزه البرنامج لكي يخزن أو يسترجع المدخلات أو نتائج العمليات الحسابية.
* لغة C++ هي لغة حساسة لحالة الاحرف - على عكس Visual Basic - فمثلا: A غير a
* كل جملة من جمل اللغة C++ يجب أن تنتهي برمز الفاصلة المنقوطة.


لكي نحجز مكان في الذاكرة تكون العملية على وزن المثال التالي:
VarType varName = iniValue;
و لتفسير المثال السابق:
VarType : هو نوع المتغير ، هناك أنواع مختلفة من المتغيرات المبنية داخليا في اللغة فضلا أنه مع التقدم في اللغة يمكنك انشاء أنواع خاصة بك تلائم احتياجات برنامجك.
varName : اسم المتغير الذي يمكنك من مناداته و التعامل معه، لاحظ أنه لا يمكن أن يبدأ برقم و لا يمكن أن يكون لمتغيرين نفس الاسم و لا يمكن أن يكون اسم المتغير احدى الكلمات المحجوزة للغة أصلا.
= : علامة المساواة و هي هنا لتعطي المتغير الموجود على اليسار قيمة الموجود على اليمين.
iniValue : و هي القيمة الابتدائية للمتغير و يمكن أن تكون قيمة ( عدد مثلا ) أو متغير آخر من نفس النوع أو نوع آخر متوافق معه.
" لاحظ أن اعطاء المتغير قيمة ابتدائية هي أمر اختياري ، فيمكنك حجز متغير على الصيغة:
VarType varName; فقط! و لكن عندها يمكن أن يكون محتواه ( المتغير) هو قيمة غير معروفة و غير مفهومة "

بعض أنواع المتغيرات الموجودة في اللغة أصلا:
int : Integer value with size 4 bytes
float : a number with a fraction part with size of 4 bytes
char : a character with size of 1 byte
double : a number with fraction part with size of 8 bytes

هذه الأنواع كافية لبداية فقط! هناك العديد من الأنواع التي يمكن التعامل بها في اللغة!

و في النهاية هذه بعض الاستخدامات و الأمثلة لهذه الأنواع:
* لحجز مكان يحتوي على رقم لا يزيد عن 4294967295 فعلينا استخدام النوع int
* لحجز مكان سيحوي عمليات حسابية دقيقة و كبيرة نوعا ما نستخدم double
* لحجز مكان يحوي كلمات أو أحرف .. char
* لحجز مكان سيحوي حسابات فاتورة الكهرباء .. float

الدرس الخامس البرنامج الاول في لغة C++

في هذا الدرس سنكتب معا البرنامج الاول في اللغة C++
و لنبدأ فعليك فتح برنامج Microsoft Visual C++ 6
اذهب الى:
File -> New -> Win32 Console Application
على اليمين يوجد مربعين لإدراج النصوص.. اكتب اسم برنامجك في الأول و ليكن firstApp
في المربع الاخر نلاحظ ان مسار البرنامج " مكانه على القرص الصلب " قد تحدد. يمكنك تغييره الان فقط.

الان اضغط على OK

اختر الخيار الاول و هو An empty project و من ثم OK
و الان قد تجهزت واجهة العمل الخاصة بمشروعك .
اذهب مرة اخرى الى القائمة الرئيسية في البرنامج و اختر File -> New -> C++ source file
و اكتب اسمه .. و ليكن client
اضغط على OK
تظهر الان لديك شاشة البرنامج و فيها مكان فارغ ينتظر منك القيام بكتابة البرنامج الذي تريده.

فلنبدأ البرنامج.
اكتب الاسطر التالية:

#include
// This is my first C++ Application
void main()
{
cout<<"this is my first c++ application";
}

انتهى البرنامج و الان نشرح ما كتبناه:
السطر الاول:
هذا السطر يستدعي مكتبة من البرامج الفرعية و المساعدة و التي نحتاجها للتعامل مع المستخدم في برامج واجهة DOS
السطر الثاني:
هذا السطر يبدأ بالرموز ( // ) و هي تعني بداية تعليق سطر فردي ، التعليقات تستخدم كثيرا بين المبرمجين و هي لشرح العمليات أو لكتابة أي شيء يخطر على بالك. اكتب ما اردت أو لا تكتب شيئا فلا مشكلة ، لأن هذه التعليقات لا تخضع للفحص من قبل الـ Compiler الذي يحول برنامجك المكتوب بلغة البرمجة الى برنامج تنفيذي يشغله نظام التشغيل. و لكن لاحظ أن هذه الطريقة هي لسطر واحد فقط و هناك طريقة لطتابة أكثر من سطر للتعليق و سنأتي عليها لاحقا.
السطر الثالث:
في هذا السطر نرى تعريفا لوظيفة Function و هي الوظيفة الرئيسية لذلك سميت main و سنأتي على هذه التفاصيل لاحقا، نرى من بعد الـ main القوسين () و هما يستخدمان لكتابة لائحة المعطيات لكي يبدأ العمل و في حالتنا هذه لا يوجد أي شيء لنعطيه قبل ان يبدأ.
السطر الرابع و السادس :
هذان السطران هما مدى البرنامج الفرعي\ الوظيفة main و بهما يتحدد أين يبدأ و أين ينتهي هذا البرنامج الفرعي.
السطر الخامس:
في هذا السطر نكتب لب البرنامج و الأمر الوحيد فيه و هو طباعة الكتابة ( this is my first c++ application ) على الشاشة و يظهر هذا الكلام بين فواصل ثنائية كهذه: " و المعتمدة لكي تحيط بالكتابة.
أما عن cout<< فهو الامر المستخدم لإخراج ما بعده الى الشاشة.

لتشغيل البرنامج يجب عليك الذهاب الى القائمة و اختيار:
Build -> Execute firstApp.exe و من ثم الموافقة على الرسالة اللاحقة.
الى هنا ينتهي البرنامج الاول

الدرس السادس الادخال و الاخراج

في هذا الدرس سنطبق تطبيقا عمليا على ادخال و اخراج القيم في لغة C++ .
و برنامجنا لهذا اليوم يعمل على جمع رقمين و من ثم اخراج ناتج الجمع:

#include
void main()
{

int a;
int b;
int result;
cout<<"Please insert the number a: ";
cin>> a;
cout<<"Please insert the number b: ";
cin>>b;
result=a+b;
cout<<"The result is: "<

}

فلنشرح البرنامج:
اعتقد ان السطور الاول و الثاني و الثالث و الأخير لا تحتاج لشرح!
نبدأ من السطر الرابع و الخامس و السادس :
في هذه السطور نعرف قيما في الذاكرة لادخال و تخزين الارقام.
و قد كان من الممكن كتابة هذه السطور الثلاثة على الشكل:
int a,b,result;
و لكن كتبناها على ثلاثة اسطر للتسهيل.
أما بالنسبة للأسطر السابع و التاسع فهي – كما شرحنا من قبل تستخدم لاخراج النص بين الفاصلتين.
الاسطر الجديدة هي الثامن و العاشر و اللذان نقوم فيهما بعملية ادخال من المستخدم ( يجب عليه ان يدخل القيمة ومن ثم ان يضغط Enter لتتم العملية ) .
و اما السطر الحادي عشر فهو لاتمام عميلة الجمع بين الرقمين و تخزين الناتج في المتغير result .

العمليات الحسابية و المنطقية في لغة C++ :
+ : لجمع رقمين معا
- : لايجاد ناتج طرح رقمين
* : ايجاد ناتج ضرب رقمين
/ : ايجاد ناتج قسمة رقمين
% : ايجاد قيمة باقي القسمة ( قسمة الاول عل الثاني )
| : عملية أو (or ) المنطقية
& : عملية و (and ) المنطقية
() : يمكن استخدام هذه الاقواس لتحديد الاولوية في العمليات.

ملحوظة
نظرا لصعوبة عرض اسطرالكود بشكل صحيح فقد قررت وضع الدروس على ملفات C++ جاهزة
و هذا هو برنامج الادخال و الاخراج


الدرس السابع الجمل الانتقالية: if and switch

الاستخدام: تستخدم هذه الجمل للانتقال الى مجموعة اوامر في حال حصول شرط معين.

الشرط: هو أي تعبير حسابي أو منطقي يعيد أي قيمة غير الصفر!

مثال: اذا كانت قيمة x اكبر من 10 اطبع ok

أنواع هذه الجمل:
1. جملة if العادية:
تتكون من : if(condition) statementblock
الشرط يتبع التعريف في الاعلى.
أما بالنسبة لـ statementblock فهي أي مجموعة من الأوامر المكتوبة بلغة السي ++ بحيث تكون محاطة بالمحددات { } و التي يمكن الاستغناء عنها اذا كانت جملة واحدة فقط.

2. جملة if else :
في هذه الحالة تتبع الجملة if نفس الشروط السابقة تماما و لكن يمكنك الان معالجة حالتان و ليس واحدة:
في المرة السابقة كان من الممكن لك فقط أن تكتب مجموعة أوامر تطبق فقط اذا كان الشرط قد تنفذ. الان يمكنك كتابة مجموعة اخرى ان لم يتنفذ الشرط.
و تتكون هذه الحالة من :
if(condition) statementblock
else statementblock

طبعا يمكن ان تكون معالجة الـ else بنفس الطريقة و يمكنك كتابة اكثر من جملة بنفس الطريقة

جملة switch :
في هذه الحالة يوجد لدينا متغير و من الممكن ان يأخذ حالات معينة و يلزمنا متابعة هذه الحالات كل على حدة أو مع تداخل بينها.

هنا تختلف المعمارية العامة للجملة عن الجملة if بالتالي:
نكتب القيمة المتوقعة مسبوقة بكلمة case و نتبعهما بنقطتان ( : ) و نبدأ بكتابة الجمل التي تعالج هذه الحالة.
في نهاية الجمل التي تعالج كل حالة نضع جملة break; و التي تعني الخروج من الجملة switch فورا لأننا لا نريد ان تتداخل الجمل معا.

في حالة وصول قيمة غير متوقعة للمتغير فانه يمكننا معالجة هذه الحالة بجملة default و التي تعني أي ادخال غير معالج.

في المثال الملحق نعالج فكرة أن نكتب ما هو الرقم المدخل من قبل المستخدم اذا كان بين الرقمين 1 الى 5 ، اما في حالة اذا ادخل المستخدم رقما خارج هذا النطاق فان البرنامج ينبه المستخدم ان الادخال كان خارج النطاق المسموح. و قد تناسينا وضع الجملة break في حالة الادخال 3 .

الدرس الثامن جمل الحلقات في C++ .
و تعتمد في عملها على العودة الى مكان اخر في البرنامج بعد تنفيذ شرط معين أو التحقق من صحته.

و هي ثلاثة أنواع. اثنين منها مسموحة و الثالث يكون عقاب مستخدمه أن يقوم بعمل الشاي و القهوة لكل المؤسسة لمدة شهر كامل!

نبدأ في هذا النوع المخيف..
و هو جملة goto :
لكي تستخدم هذه الجملة يجب عليك تسمية label في احد المناطق في البرنامج قبل منطقة استخدام هذه الجملة.
و طريقة تعريف الـ label هي بكل بساطة تكتب الاسم الذي تختاره و من ثم نقطتين ( : ) .
أما لماذا لا تستخدم: فذلك لأنها تعتبر طريقة غير هيكلية للبرنامج ( Not structured ) و البرامج في هذه الايام كلها تبنى على اساس هيكلي لكي يسهل تتبعها و تقسيمها.

النوع الثاني : جملة while أو do-while :
و تستخدم لفل مجموعة من الاوامر طالما تحقق الشرط المرتبط بـ while و هي على الشكل التالي:
while(condition) statementblock
أو
do statementblock while(condition)
لاحظ التالي:
* في الحالة الاولى لا نكتب الفاصلة المنقوطة ; بعد الجملة while أبدا و الا فقدت عملها.
* في الحالة الثانية نكتب الفاصلة المنقوطة بعد القوس الاخير للشرط.
* تنطبق على statementblock نفس الشروط التي ذكرناها في الجملة if
الفرق بين حالتي الجملة while هي ان الـ statementblock لا تنفذ في الحالة الاولى الا لو كان الشرط صحيح ، أما بالحالة الثانية فهي تطبق الشرط مرة واحدة في اول تنفيذ و من ثم ترجع الى الشرط فان تحقق قامت بالعمل مرة اخرى و الا خرجت من الجملة و اكملت الباقي.

* ملاحظة هامة: دائما في جمل الحلقات البرمجية و في اي لغة برمجة لا تنس ان تضع شرطا منته .. و الا دخلت في حالة infinite loop و معناها ان يضل البرنامج يقوم بالعمل الى مالانهاية.

الملف الملحق يحوي مثال عن goto و مثال عن do-while و اخر عن while
و يبقى في هذا الموضوع جملتي العزيزة for التي تحتاج الى قرنين من الزمان في وصفها الخلاب


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

تستخدم هذه الجملة لعمل تكرار لعدد معروف احيانا.

for ( vType vName; condition ; vNameChainging ) statementblock

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


نصائح
اخواني.. هذه مجموعة من النصائح لكل من برمج برنامجا أو يبرمج برنامج أو يحب أن يبرمج برنامج في أي يوم من الايام:

* اجعل كودك ( اوامر برنامجك ) أصغر ما يمكن
* اذا كان حجم الكود كبيرا و لكن يعمل بشكل اسرع .. فهذا أفضل من كود صغير و بطيء ( طبعا ستسألوني كيف صغير و بطيء و كبير و سريع ) يعتمد هذا على المكتبات التي تستخدمها في البرمجة و على نوع الأوامر المستخدمة.
* نظم عملك في البرنامج بأقصى حد ممكن.
* لا تبخل بالتعليقات مهما كانت ( كل ما كثرت كل ما كان افضل لمن يتتبع البرنامج من بعدك و قد يكون انت)
* حاول - قدر الامكان - ان تجعل الكود مرتب بحيث يسهل الاضافة و التعديل عليه ( حتى لو كان في نسخته النهائية.

الدرس التاسع
درس اليوم خاص بأمرين يستخدمان بكثرة في جمل الحلقات و اتخاذ القرار ، الجملتان هما break و الجملة continue :

قد كنا استخدمنا الجملة break من قبل في الأمثلة الخاصة بـ switch . و قد كنا نستخدمها للخروج النهائي من الحلقات أو الجمل الخاصة باتخاذ القرار[u]

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

في المثال الملحق نلاحظ أنه في الجملة break يخرج البرنامج فوريا من الحلقة for عند الوصول الى الرقم 5 . أما في الجملة continue فهو يقفز عن المرحلة برمتها و يكمل التنفيذ فيما بعد.


الدرس العاشر المصفوفات ( Arrays ) :
هذا الدرس يحكي عن المصفوفات في اللغة C++

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

مثال صغير: عندما تريد ان تتعامل مع علامات صف دراسي مكون من 40 طالب .. لا يعقل ان تنشيء اربعين متغير من النوع int و تسميها stu1 stu2 stu3 الخ و الا فستصاب بصدمة نفسية عند الخطأ في الطالب الذي يحمل رقم 32 ..

لذلك نحن نتعامل مع المصفوفات و التي يكون لها اسم واحد و انت تحدد الرقم الذي تريده في داخل المصفوفة ان اردت عن طريق متغير في داخل for loop و تسهل العملية على الكل.

طبعا هذا شرح اولي .. فان لم تستوعب كل ما قرأته لا تعود اليه لأنك ستستوعبه عن قريب ان شاء الله. و لكن قبل كل هذا لينا مراعاة التالي:
1. اسم المصفوفة هو مؤشر ثابت لأول عنصر فيها.
2. في الـ C++ يبدأ الترقيم دائما من الصفر.
3. يمكن للمصفوفات في الـ C++ ان تصل الى 7 ابعاد مع عدد غير محدد من المتغيرات.

.................................................. ...........................

الان .. كيف يمكننا ان ننشيء المصفوفة من بعد واحد من نوع int و تحوي 40 موقع مستقل في الذاكرة؟
int array[40]; // that's a 40 variable inside the array
و بكل بساطة نتبع الاسم الذي نريده بشيء يسمى brackets و هو [ ] .
و يكون في الداخل رقم يشير الى عدد المواقع التي نريد حجزها للمصفوفة.


هذه المصفوفات لها استخداماتها في مجالات الرياضيات و الرسم باستخدام الحاسوب و غير ذلك..

و لتسهيل شرحها.. فان ما ينطبق على بعد ينطبق على بعدين و ينطبق على ثلاثة و هكذا..

لحجز مصفوفة ذات بعدين الاول ذو 4 خانات و لكل منها 5 مواقع في البعد الثاني ( يعني مثل الجدول : صفوف و اعمدة)
نحتاج عندها لصنع مصفوفة ببعدين أحدهما 4 و الاخر 5 و لتكن العناصر كلها ارقام صحيحة:
int array2D [4] [5] ; // this is the array

و لحجز مصفوفة ثلاثية الابعاد يمكننا استخدام امر مثل:
int array3d [2][3][4]; // this is a 3D array

و للتعامل مع مثل هذه المصفوفات نستخدم تشكيلة من الجمل for متداخلة فيما بينها.

الدرس الاخير من القائمة
المؤشرات في لغة C++
بالعربي بسموها Pointers
طبعا من وجهة نظر هندسية هي عبارة عن DWORD أو ما نعرفه باسم double
هذه المؤشرات كما قلنا عبارة عن متغيرات تحمل قيمة.. و هذه القيمة هي عنوان في الذاكرة..
بكل بساطة هذه القيمة هي عنوان شيء في الذاكرة.. طبعا يجب ان يكون العنوان صالح للاستخدام ( ضمن الشروط المحددة من قبل نظام التشغيل ) .

الان.. كيف يمكننا التعامل مع المؤشرات؟

أولا: انواع المؤشرات.
1. مؤشرات ثابتة ( كما في المتغيرات التي تحمل قيمة ثابتة ).
2. مؤشرات متغيرة: و هذه المؤشرات هي البداية الى عالم البرمجة الديناميكية.

ثانيا: تعريف مؤشر.
يمكنك تعريف المؤشر باستخدام الصيغة التالية:
typeName * pointerName;

و يمكن وضعه مبدئيا ليشير الى متغير ما مثلا كقيمة ابتدائية:
typeName * pointerName = &variableFromSameType;

حيث علامة & تعطي العنوان في الذاكرة للمتغير variableFromSameType
أما علامة * فتستخدم مع المؤشر لكي نستطيع التعامل مع محتوى الذاكرة هناك.

للمزيد من التوضيح الرجاء قراءة الملف الملحق..




الملفات المرفقة
اسم الملف نوع الملف حجم الملفالتحميل مرات التحميل
post-11-28582-loop_lesoon1.zip  741 بايت عدد مرات التحميل : 54
اسم الملف نوع الملف حجم الملفالتحميل مرات التحميل
c++.rar  1.2 كيلو بايت عدد مرات التحميل : 50
الرد مع إقتباس
  #2  
قديم 18-08-2006, 01:35:02 PM
الصورة الرمزية لـ جروح قطر
جروح قطر جروح قطر is offline
مشرفة قسم الديكور والمطبخ
تاريخ التّسجيل: Feb 2006
رقم العضوية: 3945
الإقامة: :قطــر الحــب:
الجنس: فـتـــاة
العمر: 33
المشاركات: 6,732
قوة التقييم: 19
نقاط التقييم: جروح قطر is a glorious beacon of lightجروح قطر is a glorious beacon of lightجروح قطر is a glorious beacon of lightجروح قطر is a glorious beacon of lightجروح قطر is a glorious beacon of lightجروح قطر is a glorious beacon of light
البلد:

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


thanks
__________________
تستطيع أن ترى الصورة بحجمها الطبيعي بعد الضغط عليها
شكرا جزيلا لك مديرنا ع هالشهاده
الرد مع إقتباس
  #3  
قديم 20-08-2006, 11:52:45 AM
الصورة الرمزية لـ Eng. LeQaTaR
Eng. LeQaTaR Eng. LeQaTaR is offline
. .. مـــديـــر الـــمـــنـــتـــدى .. .
تاريخ التّسجيل: Mar 2004
رقم العضوية: 1
الإقامة: الدوحـ( قطـ QATAR ـر )ـــة
الجنس: رجـــل
المشاركات: 27,398
مستوى اللغة الفرنسية: متوسط
قوة التقييم: 47
نقاط التقييم: Eng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud ofEng. LeQaTaR has much to be proud of
البلد:

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


الله يرحم ايام البرمجه
كان احلى كورس
يعطيج الف عافيه اختي واذا عندج ايضا دروس ياريت تنزلينها لانها مشوقه
__________________

الدعم الفني لأعضاء المنتدى

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

1- قسم الشكاوي والاقتراحات: اضغط هنا.
2- رابط الاتصال المباشر بمدير المنتدى والدعم الفني: اضغط هنا.
3- قسم خدمة الزوار: اضغط هنا.

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




الرد مع إقتباس
  #4  
قديم 16-05-2008, 08:19:32 AM
همسه عابره همسه عابره is offline
مشترك جديد
تاريخ التّسجيل: May 2008
رقم العضوية: 45766
المشاركات: 4
قوة التقييم: 0
نقاط التقييم: همسه عابره will become famous soon enough

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


بجد مشكوره على المجهود الرائع ده انا كنت محتاجه الشرح ده جدا

يعطيكى العافيه غاليتى
الرد مع إقتباس
  #5  
قديم 16-05-2008, 08:26:18 PM
همسه عابره همسه عابره is offline
مشترك جديد
تاريخ التّسجيل: May 2008
رقم العضوية: 45766
المشاركات: 4
قوة التقييم: 0
نقاط التقييم: همسه عابره will become famous soon enough

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


طب ممكن حضرتك تشرحى ايه هى ال function بالظبط معلش ؟
الرد مع إقتباس
  #6  
قديم 17-05-2008, 02:05:04 AM
همسه عابره همسه عابره is offline
مشترك جديد
تاريخ التّسجيل: May 2008
رقم العضوية: 45766
المشاركات: 4
قوة التقييم: 0
نقاط التقييم: همسه عابره will become famous soon enough

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


يا جماعه حد يرد عليا بليزززززززز

لانه فى حاجات مش فاهماها زى الاستريم برده والفنكشن عايزه اعرف عنهم ؟
الرد مع إقتباس
  #7  
قديم 17-05-2008, 09:08:12 AM
الصورة الرمزية لـ Hossam
Hossam Hossam is offline
مشرف سابق
تاريخ التّسجيل: May 2006
رقم العضوية: 6028
الإقامة: Cairo
الجنس: رجـــل
المشاركات: 12,469
قوة التقييم: 26
نقاط التقييم: Hossam is a splendid one to beholdHossam is a splendid one to beholdHossam is a splendid one to beholdHossam is a splendid one to beholdHossam is a splendid one to beholdHossam is a splendid one to beholdHossam is a splendid one to behold
البلد:

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


شكرا على المجهود

بالرغم من ان لغات البرمجة مهمة

خصوصا في مجال دراستي

لكن انا مش بحبها ومش بفهمها

لكن متابعين معاك ان شالله

يمكن نقدر نستفاد
__________________
الرد مع إقتباس
  #8  
قديم 17-05-2008, 04:39:43 PM
الصورة الرمزية لـ al jwady
al jwady al jwady is offline
مشترك فضي متميز
تاريخ التّسجيل: Mar 2008
رقم العضوية: 42064
الإقامة: بلجيكا بروكسل
الجنس: فـتـــاة
العمر: 27
المشاركات: 359
مستوى اللغة الفرنسية: متقدم
قوة التقييم: 9
نقاط التقييم: al jwady will become famous soon enough
البلد:

Post مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


شكرا على المجهود
__________________
لا اله الا الله محمد رسول الله
الرد مع إقتباس
  #9  
قديم 19-05-2008, 11:14:20 PM
الصورة الرمزية لـ Givenchy
Givenchy Givenchy is offline
مشترك برونزي
تاريخ التّسجيل: Nov 2007
رقم العضوية: 35610
الجنس: فـتـــاة
المشاركات: 87
قوة التقييم: 9
نقاط التقييم: Givenchy will become famous soon enough
البلد:

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


إقتباس:
طب ممكن حضرتك تشرحى ايه هى ال function بالظبط معلش ؟
خــــــــيتووو همـسه عـابره

7
7


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


يسلمووووووووووووو مليوماني على الموووضوع الرااائع

ومثل ماقــــال المدير

ياليت إذا عندك دروس ثانيه نزلها لنا وراح نكون ممتنين لك

تحيااااااااااااااتي لك ,,
الرد مع إقتباس
  #10  
قديم 20-05-2008, 10:02:49 PM
zeshto zeshto is offline
مشترك برونزي
تاريخ التّسجيل: Apr 2008
رقم العضوية: 44093
الإقامة: البحرين دار الزين
الجنس: فـتـــاة
العمر: 28
المشاركات: 57
مستوى اللغة الفرنسية: لا أعرف الفرنسية
قوة التقييم: 9
نقاط التقييم: zeshto will become famous soon enough
البلد:

مشاركة: مقدمة في لغة البرمجة C++, سلسلة دروس


thank you ^^
الرد مع إقتباس
المشاركة في الموضوع

Bookmarks (لنشر هذا الموضوع بالشبكات الاجتماعية الاخرى)

خيارات الموضوع
طريقة العرض

قوانين المشاركة
لا يمكنك إضافة مواضيع جديدة
لا يمكنك إضافة مشاركات جديدة
لا يمكنك إضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code is متاح
كود [IMG] متاح
كود HTML غير متاح

الإنتقال السريع




التوقيت الافتراضي للمنتدى حسب توقيت مدينة الدوحة ( +3 GMT ) . الساعة الآن 04:57:22 PM.


Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
تصميم وتطوير الاستايل تم بواسطة // LeQaTaR