السلام عليكم ورحمة الله

ايمانا منا بضرورة نشر العلم والتطوير فى الوطن العربى واعترافا بفضل هذا المنتدى الرائع ودورة الفعال فى نشر العلم قررنا المساهمة بشىء صغير راجين الله عز وجل ان ينفع به اخواننا اعضاء المنتدى.

دورة البرمجة بلغة السى


## كورس البرمجة بلغى السى

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

## بعد انتهاء هذه الدورة سوف يكون لديك القدرة على:

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



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


الدرس الأول
مفاهيــــم اساســـيــــة
نتعلم فى هذا الدرس التالى :
- ما هى البرمجة وما معنى لغة برمجة وما معنى برنامج
- ما هى مراحل صناعة البرمجيات
- لماذا نتعلم لغة السى فى تلك الدورة
- الطرق المختلفة لكتابة البرامج



ما هى البرمجة :
ببساطة البرمجة هى العلم المختص بصناعة وتطوير برامج الحاسب الألى.
عندما تود صناعة سيارة فانك تتعلم علم الميكانيكا والكهرباء حتى يمكنك صناعة سيارة كذلك اﻷمر عندما تود صناعة برنامج يقوم بوظيفة ما ( مثل برنامج اكسيل ) فانك تذهب لعلم البرمجة حتى تتعلم اﻻسس والقواعد التى تمكنك من القيام بذلك.

وأطق عليه علم ﻷنه ليس مجرد كتابة مجموعة اوامر وانما تمر صناعة البرمجيات بمراحل متعددة حتى ينتج فى النهاية برنامج صحيح كامل ذو فائدة.


تلك المراحل كما يلى :
-Analysis
فى تلك المرحلة نحدد ما هو المطلوب من البرنامج تنفيذه

- Design
فى تلك المرحلة بعد اﻻنتهاء من تحدد متطلبات البرنامج كاملة نقوم برسم البرنامج فى صورة مخططات توضح الية عمل البرنامج بالتفصيل

- Implementation
وهنا نبدأ فى كتابة كود البرنامج الذى يقوم بتنفيذ ما سبق

- Testing
بعد اﻻنتهاء من البرنامج ( أو أجزاء منه ) نقوم بعمل اختبار لنتأكد من انه خالى من اﻻخطاء ويقوم بوظيفته بطريقة صحيحة

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


فى هذه الدورة نهتم بمرحلة كتابة كود البرنامج.

-----------------------------------------
اذن ما هو البرنامج وما هى لغة البرمجة ؟

برنامج الحاسب الالى هو مجموعة من اﻻوامر توجه الحاسب لاداء وظيفة معينة
وتكتب برامج الحاسب اﻻلى باستخدام احد لغات البرمجة .


ما هى لغة البرمجة ؟

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

تأمل الجمل التالية هل هى صحيحة ام لا:

" يلعب على بالكرة "
"يلب على بالكرة "
"على الكرة يلعب "


" يلعب على بالكرة" --- جملة عربية صحيحة
"يلب على بالكرة" --- جملة ذات خطأ لغوى "يلب"

"على الكرة يلعب" --- جملة ذات خطأ معنوى

كيف امكننا تحديد ذلك ؟ عن طريق معرفتنا بقواعد اللغة العربية

كذلك للغات البرمجة
ال Syntax فى لغة البرمجة هو قواعد تركيب الجملة
والSemantic فى لغة البرمجة هو ما يحدد الخطأ المعنوى والذى نطلق عليه Logical error

يوجد العديد والعديد من لغات البرمجة مثل


تختلف اللغات فيما بينها فى اﻻتى:



(فمثلا لغة PHP تستخدم فى برمجة مواقع اﻻنترنت ولغة Java تستخدم للتطبيقات المكتبية )


(فمثلا البرامج التى تكتب بلغة السى شارب لا تعمل على نظام تشغيل لينكس)
Assembly, C,C++,JAVA, C#, PHP, Python 1 - قواعد كتابة اﻻوامر فى تلك اللغة 2 -المميزات المتاحة وسهولة تنفيذ مطلوب ما فى اللغة 3 - التطبيق الذى تستخدم فيه تلك اللغة 4 - نظام التشغيل الذى تعمل عليه البرامج الناتجة من تلك اللغة
-----------------------------------------

لماذا ندرس لغة السى فى هذه الدورة ؟؟؟

1- لغة بسيطة وسهلة التعلم

2- مفردات اللغة قليلة 3- لغة قوية ( معظم انظمة التشغيل العملاقة مثل Linux مكتوب بلغة البرمجة سى )

4- ثابتة الى حد كبير ( غير متغيرة باستمرار مثل باقى اللغات الحديثة )
5- هى اﻻساس لكل لغات البرمجة اﻻخرى وتعلمها يجعل من السهل اﻻنتقال لأى لغة برمجة اخرى


-----------------------------------------

الطرق المختلفة لكتابة البرامج

مرت صناعة تطوير البرمجيات بمراحل عديدة
Linear Programming
فى بداية كتابة البرامج كانت اﻻوامر تكتب بصورة خطية كأوامر متتالية غير مقسمة الى اجزاء واذا كتبت مجموعة اوامر خاصة بتنفيذ عملية معينة وليكن عملية جمع رقمين ثم فى خطوة اخرى فى نفس البرنامج وأردت تنفيذ عملية جمع مرة اخرى فانك تعيد كتابة تلك الاوامر مرة أخرى .

Structured Programming
انتقالا من المرحلة السابقة تم ابتكار مفهوم تقسيم البرنامج الى عدة اجزاء تسمى Functions تقوم كل منها باداء بعض اﻻوامر. واذا اردت ان تستخدم اوامر كنت قد كتبتها مسبقا فى صورة function فانك تستدعى تلك ال function باسمها وﻻ تعيد كتابة الكود مرة اخرى. وأصبح الكود أكثر تنظيما واصبح من السهل تقسيم البرامج الكبيرة الى اجزاء يقوم أشخاص مختلفة بعمل كل جزء منها ثم يتم دمجها بعد ذلك.

Object Oriented Programming

الطريقة السابقة كان لها عيوب اﻻعتمادية على البيانات. كل جزء من اجزاء البرنامج يتعامل مع بعض البيانات وربما يشترك أكثر من جزء فى التعامل مع نفس البيانات وهنا تظهر المشكلة عندما يتم توزيع البرنامج ﻷكثر من جزء وربما يحتاج اجزاء مختلفة التعامل مع نفس البيانات أو يتم بالخطأ تداول بعض ال functions دون الحاقها بالبيانات الخاصة بها.
ظهر بعد ذلك مفهوم البرمجة المعتمدة على الكائنات Objects وليس ال Functions واختلفلت كليا وجهة نظرنا لطريقة تصميم البرنامج. فبدلا من التفكير فى تقسيم البرنامج لبعض ال Functions أصبح التفكير فى ضم ال Functions والبيانات المعتمدة عليها فى وحدة واحدة وهى Class او Object وهذا هو المنطلق الذى يبنى به اللغات الحديثة مثل C# و JAVA

الدرس القادم ان شاء الله
- ماذا نحتاج لصناعة برنامج
- Compiler , Linker and executable
- كتابة وتحليل ومكونات البرنامج بلغة السى
- كتابة برامج بسيطة للتطبيق على كيفية ترجمة وتشغيل البرنامج

اتمنى من الله ان يجعل فى هذه الدروس فائدة. وأى استفسار أو شىء غير مفهوم أسعد بالاجابة عليه ان شاء الله هنا فى الموضوع