الأساسيات :
راجع الخطوتان السابقتان وافهمهما جيداً قبل الدخول في هذه الفقرة.
بالرغم من أنك لم تقم إلا بخطوتين فقط في سبيل تعلم لغة البرمجة
السي بلسبلسإلا أنها قفزة كبيرة ولا شك وعلى الأقل فقد أعطتك تلك
الخطوتان مقدمة عامة عن أساسيات البرمجة؛ فلا بد وأنك صادفت
الكلمات التالية:
التعابير ، الأنماط ، المتغيرات ، الكتل ، التوابع ، المكتبات القياسية ،
العمليات ، كائنات الإدخال والإخراج.
لا تقلق فبعضالكلمات السابقة لم أذكرها صراحة فيما سبق ولكن
تعرضت لفكرتها ، سنبدأ الآن بشرح هذه الأساسيات.أيضاً تتعرضهذه
الأساسيات لبعضالمواضيع المتقدمة وليسالغرضهو حشو المادة
العلمية بل لمعرفة مقدمة ولو بسيطة عنها لأن أصغر كود يحتاج في
بعضالأحيان لتلك المعلومات.
: Variable المتحولات أو المتغيرات
المتغيرات كما رأينا عبارة عن أسماء تحجز مواقع في الذاكرة حتى يتمكن
البرنامج من تخزين البيانات فيها.
حينما تقوم بتعريف متغير فلا بد أن تخبر المترجم باسم هذا المتغير ونوع
المعلومات التي ستحفظها فيه.
حينما تقوم بتحديد نوع المعلومات للمتغير فإن المترجم يحجز له عدداً من
البايتات حسب ذلك النوع فمرة تكون بايتاً واحداً ومرة أخرى تكون اثنان
ومرة ثمان بايتات.
تسمية المتغيرات:
من الممكن أن يتألف اسم المتغير من أرقام وحروف شريطة أن يكون أول
حرف هو حرف عادي وليسرقم ، ولا يسمح بأن يحتوي الاسم على
الأحرف اللاتينية أو الرموز مثل ؟ و @ وغيرها ، وتعتبر الشرطة السفلية
حرفاً صحيحاً بالإمكان كتابته ضمن اسم المتغير _ ، أيضاً تفرق لغة السي
بلسبلسبين المتغيرات ذات الحروف الكبيرة والأخرى ذات الحروف الصغيرة
، وكعادة برمجية جيدة فمن الأفضل أن يكون اسم المتغير اسماً ذا معنى
وهذا يسهل عليك الكثير من مهام تطوير الكود وصيانته.
أنماط البيانات وحجومها:
تعرفنا في فقرة الخطوة الثانية على معلومة مهمة للغاية ألا وهي نمط
ولكن لهذا النمط عيب وحيد فهو لا يحتوي على أي علامة ، int البيانات
عشرية ، وحتى تستطيع من تمكن المتغيرات على التعامل مع الاعداد
وإذا أردت أن تغير أيضاً من ، float العشرية فلا بد أن تغير نمط البيانات إلى
ذلك لتصبح المتغيرات قادرة على التعامل مع الحروف فلا بد أن تجعل نمطها
بالنسبة للأعداد الكبيرة جداً فبإمكانك وضع أنماط أخرى مثل ، char هو
وجميعها صالحة.
النوع
الحجم
الملاحظات
bool
1
true or false
char
1
characters
int
4or2
integer numbers
float
4
float numbers
double
4
all numbers
ملاحظات على الأنماط الرقمية:
long و short بإمكانك استخدام صفات على الأنماط الأساسية ، مثل الصفة
: int اللتان تطبقان على المتغيرات من النوع
short int number=0;
long int index=0;
وبإمكانك إذا ما أردت استخدام هاتين الصفتين الاستغناء نهائياً عن الكلمة
كما في هذه السطرين: ، int
short number=0;
long index=0;
:Constants الثوابت
يوجد بعضالمتغيرات التي ترغب في عدم تغييرها أبداً وربما حينما يصل
البرنامج إلى عدة آلاف من الأسطر الكودية قد لا تستطيع معرفة إن كان هذا
المتغير تغير لذلك فستود جعله ثابتاً ، وفي حال تغير لأي ظرف من الظروف
قد يكون خطأ منك فسيقوم المترجم بإصدار خطأ ينبهك بذلك ، وحتى
تستطيع أن تقول للمترجم أن هذا المتغير ثابت ، لذلك لا تسمح لأحد بتغيرها
قبل نمط المتغير هكذا: const حتى أنا المترجم فعليك بكتابة كلمة
const int number=14 ;
تذكر حينما تقوم بالإعلان عن أن هذا المتغير ثابت فعليك تهيئته بقيمة في
نفسالوقت وإلا فلن تستطيع تهيئته بأي قيمة أخرى لأن المترجم يعتبره
ثابتاً ولن يسمح لك بتغييره أي أن السطرين التاليين خاطئين :
const int number;
number=14;
: Declarations and Definitions الإعلانات والتعاريف
كثيراً ما ستجد في هذا الكتاب وغيره من كتب البرمجة عبارتي إعلان
وتعريف يجب أن تعرف الفرق بينهما.
تفرضعليك لغة السي بلسبلسالإعلان أو التصريح عن المتغيرات قبل
استخدامها ، أنظر إلى هذا السطر:
int number =4;
لقد قمت بالإعلان عن أحد المتغيرات ، أما التعريف فهو الذي ينشأ عنه حجز
للذاكرة وبالتالي فإن الإعلان السابق هو نفسه تعريف لأنه يصاحبه حجز
للذاكرة ، في أغلب المواضيع الإعلان هو نفسه التصريح ولكن تذكر الفرق
بينهما لأنه مهم للغاية وخاصة في المواضيع المتقدمة نسبياً كالمؤشرات
والكائنات والتوابع وغيرها.
: Arithmetic Operations العمليات الحسابية
في السي بلسبلستوجد خمسعمليات حسابية:
-1 عملية الجمع ( + ) :
-2 عملية الطرح ( - ) :
-3 عملية الضرب( * ) :
-4 عملية القسمة(/) :
-5 عملية باقي القسمة (% )
جميع هذه العمليات الحسابية بإمكانك القيام بها على المتغيرات العددية،
ولا تقلق فسيأتي الوقت الذي نصل فيه إلى تطبيقها ، بالنسبة إلى العملية
وليسغيره. int الخامسة فلا يمكنك القيام بها إلا على أعداد من النوع
: Relation Operator عمليات المقارنة أو العلائقية
في السي بلسبلستوجد عمليات المقارنة حيث بإمكانك مقارنة أعداد
وهذه هي عمليات ، char مع بعضها البعضأو مقارنة أحرف من النوع
المقارنة في السي بلسبلس:
< <= > >= ==
لا تقلق فسنصل لفوائد هذه المعاملات في وحدة بنى التحكم مع تطبيقاتها.
: Assignment Operator And Expressions التعابير وعمليات الإسناد
هناك معامل آخر لم نقم بشرحه في العمليات الحسابية وهو المعامل (
= ) ، هذا المعامل يختلف في السي بلسبلسعن نظيره في الرياضيات،
هذا المعامل يقوم بإسناد المتغير الذي في يمينه إلى الذي في يساره وهو
يستخدم مع المتغيرات الحرفية فبإمكانك إسناد متغير حرفي إلى آخر ، كما
يظهر في هذا المثال:
char a=b;
في هذا السطر فإنك تخبر المترجم بالقول له أنه يجب عليه أخذ قيمة
. a ووضعها في المتغير b المتغير
وهو عددي i أيضاً هناك عملية إسناد أخرى ، لنفرضأن لدينا متغير هو
ونريد جمعه بالعدد 2 حينها ستقوم بكتابة:
i=i+2;
توفر لك السي بلسبلسمعامل إسناد أسرع من معامل الإسناد = وأكثر
اختصاراً هو =+ ، بالتالي سنختصر السطر السابق إلى هذا السطر:
i+=2 ;
: Conditional Expressions التعابير الشرطية
هل تتذكر المعاملات العلائقية ، ستظهر فائدتها هنا لنفرضأن لدينا ثلاثة
متغيرات ، حيث أننا نقوم بكتابة برنامج يقوم بمقارنة أي عددين وحساب
و a الأكبر منهما ، لنفرضأن المتغيرين أو العددين الذي نود مقارنتهما هما
. max أما المتغير الثالث فسيكون ، b
1 if (a > b )
2 max = a ;
3 if ( b < a)
4 max = b ;
5 if ( b == a)
6 max = a = b;
يقوم هذا التعبير باختبار التعبير if هنا أحد التعابير الشرطية وهو التعبير
الذي بين القوسين بعده ، وفي حال نجاح التعبير فإنه ينفذ الأوامر التي
بعده وفي حال عدم نجاحه فإنه يخرج تلقائياً ولا ينفذ الأوامر التي ضمن
. if الكلمة
b بالفعل هو أكبر من المتغير a انظر إلى السطر الأول ، لنفرضأن المتغير
حينها سيتم تنفيذ السطر الثاني أما في حال لم يكن كذلك فلن يتم تنفيذ
السطر الثاني وسيواصل البرنامج عمله وينتقل إلى السطر الثالث.
انظر أيضاً إلى عملية المقارنة في السطر الخامسوهي == أي هل
في حال كانا متساويان فإن السطر السادس ، b المتغير a يساوي المتغير
سيتم تنفيذه ، انظر أيضاً أننا في حالة المساواة لم نقم بكتابة المعامل = ،
والسبب أن المعامل = كما قلنا سابقاً هو معامل إسناد أي يأخذ القيمة
التي على يمينه ويضعها على يساره ولا يقوم بمقارنة أبداً أما المعامل ==
فيقارن بين القيمتين .
: Increment and Decrement Operators عمليات الإنقاصوالإزادة
سنتعرف الآن على عملية غريبة علينا وهذه العمليتين هي عملية الإزادة
++ وعملية الإنقاص-- .
ليسذلك فحسب بل طريقة كتابة هذه العمليتين قد تختلف ، وهي صيغتين
إما أن تكون إحدى هذه العمليتين على يمين المتغير وإما على يساره
وتختلف في كلا الحالتين ، حتى تفهم ما أعنيه لنفرضأن لدي متغيران
انظر إلى هذه الأسطر: ، b والثاني هو a الأول هو
a = ++b ;
رقماً b إن هذا السطر يخبر المترجم بالقول يا أيها المترجم زد قيمة المتغير
فلو افترضنا أن . a إلى المتغير b واحداً (أي العدد 1 ) ثم أسند قيمة المتغير
هي 6 ، فحينما يقوم البرنامج بتنفيذ السطر السابق فإنه b قيمة المتغير
زيادة واحدة أي تصبح قيمته 7 ثم يسند القيمة b يقوم أولاً بزيادة المتغير
أيضاً 7 ؛ الآن لو افترضنا أننا قمنا a أي ستصبح قيمة المتغير ، a إلى المتغير
بكتابة صيغة أخرى وهي هكذا:
a = b ++ ;
ستختلف العملية هنا ، والآن قم بالتركيز فيما سيكتب ، أولاً سيأخذ المترجم
ثم بعد ذلك a بدون أي تغيير ويقوم بإسنادها إلى المتغير b قيمة المتغير
زيادة واحدة ، أي أن هذه الصيغة عكسالصيغة b يقوم بزيادة المتغير
هي 6 ، فأولاً سيأخذ المتغير هذه b السابقة فلو فرضنا أن قيمة المتغير
هي 6 ثم a وبالتالي تصبح قيمة المتغير ، a القيمة ويسندها إلى المتغير
. أي أنها ستصبح 7 ، b بعد ذلك يقوم المترجم بزيادة المتغير
أتمنى أن تكون الصيغتان مفهومتان ، أيضاً نفسالشرح السابق يطبق
على عملية الإنقاص-- ، مع إختلاف العمل الذي تقومان به طبعاً.
: sizeof المعامل
حيث أن هذا المعامل يحسب لك ، sizeof هناك معامل آخر وهو المعامل
حجم المتغيرات أو أي شيء آخر ومن الممكن استخدامه بهذا الشكل:
sizeof (int) ;
أما إذا أردت حساب أحد ، int حيث يحسبك لك حجم نمط البيانات من النوع
المتغيرات فبإمكانك استخدامه بدون أقواس، أي هكذا:
sizeof a ;
يتبع
تكملة من سلسلة لـدروس
C ++
I LOVE it