- إطلاق متغير
صدقونى ، ما عرفتهم سابقا في الدرس سيساعدنا كثيرا على فهم ما سيحصل في بقية الدرس، و الآن إلى العمل :
- ماهو المتغير ؟
باختصار المتغير هو معلومة صغيرة نقوم بتخزينها في الـ:RAM ، و هو يدل على قيمة يمكن ان تتغير باستمرار أثناء تشغيل البرنامج، كمثال ذكرنا سابقا بأن الرقم 5 يدل على الصحة عند اللاعب، و طبعا إذا تراجع العدد إلى الصفر فسيموت اللاعب و تخسر الجولة .
في برنامجنا سيكون هناك الكثير من المتغيرات و هذا ما سترونه في وقت لاحق .
في لغة الـ:C ، المتغير يتميز بشيئين :
1- القيمة : و هو الرقم الذي نخزنه، مثلا 5
2- الإسم : و هي الشيء الذي يجب أن نعرفه، في السي ليس مهما أن نحفظ عنوان الذاكرة، يكفي أن نعطي أسماءا للقيم الخاصة بها و نحفظها و هذا في صالحنا طبعا، و طبعا المصنف Compilateur هو من يقوم بترجمة الإسم الذي اخترته إلى البرنامج على شكل عنوان.
- تسمية المتغير
كما قلت فلكل متغير اسم في لغة السي، فمثلا الرقم 5 الخاص بصحة اللاعب يمكننا إطلاق الإسم "Nombre de vies" عليه ، أو أي شيء يقارب ذلك المعنى . هذا يعطينا حرية كبيرة لكن هذا يقيدنا بشروط :
1- يجب أن يحتوى الإسم فقط على حروف minuscules أو majuscules أو أرقام (abcABC012...).
2- يجب أن يبدأ الإسم بحرف
2- لا يسمح بوضع الفراغ بين كلّ كلمتين و بهذا يسمح لكم باستخدام الرمز _ لأنه الوحيد المسموح به من غير باقيه من الرموز .
3- لا يمكنكم استخدام الحروف التي لها إضافات كحروف éàê .
يجب أن تعرفوا بأن لغة السي تفرق بين الحروف minuscules و الحروف majuscules و يعتبرهما مختلفين جدا، فبهذا يمكننا اعتباره بأنه يحترم قواعد اللغة بالرغم من أننا نجدهما نفس الشيء . كمثال ، الإسم largeur أو LARGEUR أو LArgEuR يعتبرهما أسماء مختلفة لقيم مختلفة !
هذه بعض الأمثلة على أسماء قيم صحيحة : nombreDeVies و nombre_de_vies و prenom و nom و numero_de_telephone و numeroDeTelephone.
لكل مبرمج طريقة خاصة في كتابة القيم، و أنا لي طريقتى الخاصة هي كالتالى :
1- أبدأ دائما اسم القيمة بحرف minuscule ،
2- إن كان في الاسم أكثر من كلمة أضع حرف majuscules في بداية كلّ كلمة.
تذكر بأنه مهما كان اسم القيمة طويلا لن يؤثر على الجهاز أو البرنامج في شيء ، المهم أن تجعله مفهوما كي تستطيع حفظه، لا تختصر مادمت في البداية فمثلا اسم القيمة nombreDeVies يمكننى أن أكتبه بالشكل ndv لكنه غير مفهوم ، و بهذا أنصحكم بعدم الإكتراث لطوله أو قصره .
- أنواع المتغيرات
كما سبق و عرفنا بأن الحاسب ماهو إلا عبارى عن آلة حاسبة ضخمة تتعامل مع الأرقام و الأعداد فحسب، لكن هناك أنواع كثيرة من الأرقام !
1- entiers positifs هناك الأعداد الطبيعية : 45 و 398 و 7650.
2- décimaux هناك أيضا الأعداد العشرية : 75,909 و 1,7741 و 9810,7 .
3- entiers négatifs هناك الأعداد الطبيعية السالبة : -87 و -916
4-négatifs décimaux الأعداد العشرية السالبة : -76,9 و -100,11
جهازكم المسكين بحاجة للمساعدة ! ، عندما تطلب منه تخزين عدد، يجب أن تشرح له نوعه، هذا ليس منطقيا صح ؟ طبعا بامكانه أن يقوم بذلك لكن إذا قدمت له نوع الرقم سيكون أكثر تنظيما و لا يأخذ مساحة كبيرة من الذاكرة !
مادمتم بتطلقوم قيمة فيجب أن تعطوا نوعها، هذه بعض الأنواع في لغة الـ:C ( هي أهمها، لكن توجد اخرى نستعملها أيضا في الـ:C++ )
إسم النمط |
الأعداد المخزنة |
char |
-128 إلى 127 |
int |
-2 147 483 648 إلى 2 147 483 647 |
long |
-2 147 483 648 إلى 2 147 483 647 |
float |
-3.4 x 10 puissance 38 إلى 3.4 x 10 puissance 38 |
double |
-1.7 x 10 puissance 308 إلى 1.7 x 10 puissance 308 |
( لقد قمت بوضع الأهم فقد فاللائحة تبقى طويلة جدا )
1-الأنماط الثلاث الأولى (char, int, long) تسمح يتخزين الأعداد الطبيعية .
2- النمطين الأخيرين (float, double) يسمحان بتخزين الأعداد العشرية.
ملاحظة : النمطين (float, double) يسمحان بتخزين الأعداد الكبيرة جدا، قد تفوق تصوركم لأنها من أسس العشرة و بالتالى قد تصادفون 500 صفر بعد الواحد كـ:1000000000000000000000000000000000000000000000000000 ( طبعا لا يمكننى كتابة كل الأصفار )
كما تلاحظون فنمطى int و long يبدوان متطابقين، لكن الـ:int أصغر من الـ:long، هذا كي تعرفوا الفرق بينهما. .... في التطبيقات استخدم شخصيا الـ:char, int و double .
ستجدون بأنه في معظم الأحيان نستخدم الاعداد الطبيعية فقط، على أي حال هي الأسهل من الأخرى . و هنا أنبهكم للأعداد العضوية فالجهاز لا يعرف الفاصلة بل يتعامل مع النقاط، لهذا عضو ان تكتبوا مثلا 54,9 أكتبوا 54.9 !
ليس هذا كل شيء، بالنسبة للأنماط التي تخزم الأعداد الطبيعية، هناك انماط أخرى نسميها "unsigned"و التي تعني " غير الموقعة " ، و التي لا تسمح بتخزين إلا الأعداد الموجبة، و لكي نستخدمها يكفي أن نكتب الإسم "unsigned" قبل النمط ، كالتالي :
unsigned char |
0 à 255 |
unsigned int |
0 إلى 4 294 967 295 |
unsigned long |
0 إلى 4 294 967 295 |
كما ترون فـ: " غير الموقعة " تعنى الانماط التي ليس لها القدرة على تخزين الأعداد السالبة، ما يميزها عن باقيها أنه بامكانها تخزين مضاعف الأرقام التي تخزنه باقيها، مثلا النمط char يتوقف عند 182 ، فإن النمط unsigned char يتوقف عند 255 .
- لماذا هناك ثلاث أنماط لتخزين الأعداد الطبيعية . ستكون واحدة كافية أليس كذلك ؟
نعم لكن تم صنع العديد منها من أجل حفظ الذاكرة ، فالفرق بينهم أن كل واحدة " مثلا char" لا تأخذ نفس الحجم من الذاكرة مثلما تفعل الأخرى " مثلا int".
لكن في عصرنا الحالي، أصبحت ذاكرات الوصول العضوائي RAM تتمتع بسعة خيالية لهذا لم يعد بودنا القلق على المساحة التي تشغلها المتغيرات. على أي حال لا تهتموا بأمر اختيار النمط المناسب حاليا .
بالإجمال ، نميز بين الأعداد الطبيعية و الأعداد العشرية كالتالي :
1- الأعداد الطبيعية : استخدموا فيها النمط int .
2- الاعداد العشرية : استخدموا فيها النمط double.
- إطلاق المتغير :
هاقد وصلنا ، قوموا ببناء مشروع جديد و سمّوه "variables". سنتعلم كيف ( نطلق متغيرة - نعلنها )، بمعنى آخر نسمح للكومبيوتر باتغلال الذاكرة قليلا، مادمتم تعرّفتم على معناها قليلا فسيكون الأمر سهلا بالنسبة لكم ، وجب فقط الحفاظ على الترتيب :
1- نكتب في المساحة المخصصة للكودسورس نمط المتغير الذي سنقوم باطلاقه.
2- نترك فراغ espace
3- اختيار الإسم الذي نريده أن يكون للمتغير .
4- طبعا انتهاء التعليمة ، أي إشارة نقطة-فاصلة ;
مثلا، إذا أردت إطلاق متغيرتي التي سميتها nombreDeVies بالنمط int سيكون عليّ كتابة التالي :
هذا فقط ! ، يمكننى اختيار أي نمط و أي إسم كالتالي مثلا :
int noteDeMaths;
double sommeArgentRecue;
unsigned int nombreDeZerosEnTrainDeLireUnNomDeVariableUnPeuLong;
أعتقد بأنكم فهمتم المبدأ الآن ، ماقمنا به نسميه : إطلاق أو إعلان متغير . يجب عليكم من الآن وصاعدا إعلان متغيرات في بداية الدالة . و بما أننا في البداية فنحن نملك الدالة الرئيسية main فقط و هذا ما سيصبح عليه الكودسورس إذا :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) // Equivalent de int main()
{
// Début de la fonction
int nombreDeVies;
return 0;
// Fin de la fonction
}
كما تلاحظون، ففي السطر الثالث كتبت التعليق Equivalent de int main() قصدت بها : معادل للدالة main
أما بداية الدالة Début de la fonction و نهاية الدالة Fin de la fonction واضحتان .
طبعا سيأخذكم الفضول و ستقومون بالترجمة و التشغيل build & run لكن كما تلاحظون لا شيء يحدث، بالواقع لقد حدثت أشياء لكن لا يمكنكم أن تروها ، فعندما وصل الجهاز للسطر الخاص بإطلاق المتغير عرف بأنه واجب عليه تخزين بعض المعلومات في الذاكرة ذات الوصول العشوائي mémoire vive .
المشكل الوحيد الذي يمكن أن نصادفه هو ماذا يفعل الجهاز إذا كانت الذاكرة ممتلئة و لا يوجد بها فراغ، لكن لحسن الحظ هذا ما يحصل نادرا فقط و متأكدة من أنه لن يصادفكم . و لهذا لا تهتموا بالأمر فالمتغيرات التي ستطلقونها ستعمل بشكل عادي .
أريد أن أشير لكم لشيء وجب أن تعرفوه و هو إن أردتم أن تطلقوا أكثر من متغيرة من نفس النوع، ليس من الواجب أن تضعوا كلّ متغير في سطر بل يكفي أن تفرقوا بينهم بفاصلة كالتالي :
int nombreDeVies, niveau, ageDuJoueur;
هذا ما سيطلق ثلاث متغيرات من نوع int و التي هي : nombreDeVies و niveau و ageDuJoueur .
و الآن ماذا سنفعل برأيكم ؟ طبعا سنقوم بإطلاق متغيرة من عندنا و بامكاننا أن نعطيها قيمة .
- تعيين قيمة متغير
هذا أمر سهل للغاية فإن أردنا أن نعطي قيمة لمتغيرنا الرئيسي nombreDeVies يكفي أن نفعل التالي :
لن نفعل شيئا بعد هذا، ستضعون إسم المتغير، إشارة تساوي ، بعدها القيمة التي تريدون أن تضعوها بالداخل، في هذه الحالة سنعطي القيمة 5 للمتغير nombreDeVies . برنامجنا الكامل سيكون هكذا :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int nombreDeVies;
nombreDeVies = 5;
return 0;
}
و هنا كذلك لن يظهر شيئا بالجهاز فكل شيء سيتم داخل الذاكرة، فهنا لقد قمنا بإدخال قيمة معيّنة لأعماق جهانا و هو شيء جيد . يمكنكم الآن إطلاق أي قيم تريدون مثلا هكذا :
int nombreDeVies;
nombreDeVies = 5;
nombreDeVies = 4;
nombreDeVies = 3;
في هذا المثال، المتغير سيأخذ القيمة 5 ثم 4 ثم 3 ، و هذا ما سيقوم الجهاز بتخزينه أسرع من رمشة العين .. هنا ينتهي برنامجنا .
- قيمة متغير جديد
هناك سؤال وجيه يجب أن نسأله ، عند إطلاق متغير، أي قيمة تكون فيها ؟
لما يقوم الجهاز بقراءة هذا السطر :
- نحن نعرف بأنه سيخزن المتغير في الذاكرة لكن بأي قيمة يأخذه ؟ 0 مثلا ؟
الإجابة هي لا ، ثم لا ثم لا ، لا يمكن للجهاز وضع قيمة من عنده، طبعا سيشغل المساحة، لكن القيمة لا تتغير، لا يمكننا مسح ما يوجد في خلية الذاكرة، لأن المتغير حينها سيأخذ قيمة آخِرِ متغير خزّنته الذاكرة و قد يكون أي عدد كان !
إذا لم يتم تغيير هذه المنطقة من الذاكرة أبدا، يمكن أن تكون القيمة هي 0، لكن هذا ليس مؤكدا طبعا، يمكن له أن يأخذ القيمة 363 أو 18 مثلا، مما يدل أنه هناك برنامج قديم مرّ على هذه القيم من قبل ! و لهذا كي لا تعترضنا المشاكل لاحقا يجب تهيئة المتغير قبل إطلاقه، في لغة السي هذا أمر ممكن كلّ ما في الأمر هو القيام بالدمج بين الإطلاق و تعيين المتغير في نفس التعليمة كالتالي :
في هذه الحالة المتغير nombreDeVies تم إطلاقه متبوعا بالقيمة 5 . و هذا يضمن لكم بأن المتغير الذي ستطلقونه لاحقا ( و لو لم تعطوه قيمة محددة ) سيأخذ القيمة 5 فقط و ليس أي قيمة لا تعرفون وظيفتها .
- الثوابت
في بعض الأحيان نكون بحاجة إلى أن نحافظ على قيمة واحدة للمتغير طيلة برمجة البرنامج، و بالتالي فما إن نطلقها و يسجلها الجهاز ، لا يمكن لأي أحد أي يغيّر فيها، هذا النوعم النادر من المتغيرات نسميه بالثوابت ، لإطلاق ثابت، الأمر سهل، يكفي أن نكتب اسم "const" تماما قبل النمط الخاص بمتغيرتك . لكن كما تعرفون يجب أن نعطيه قيمة معينة ليحافظ عليها طيلة الوقت، و اذكروا بأنه ما إن تطلقوها لن يمكنكم التراجع في إعادة كتابتها ، هذا مثال لإطلاق ثابت :
const int NOMBRE_DE_VIES_INITIALES = 5;
هذا ليس بالأمر الضروري و الحتمي، لكن لنتفق أن نكتب حروف الثابت كلّها majuscules لنفرق بين الثابت و المتغير، و لا تنسوا أن تجعلوا الرمز _ بدلا للفرغ espace ..
غير هذا، الثابت يستعمل بشكل عادي كالمتغير ، يمكنكم اختيار قيمته ثم إطلاقه، الشيء الوحيد و الذي ذكرته هو أنكم إذا حاولتم تغيير قيمته لاحقا سيقوم المصنف بإظهار خطأ لكم لعدم القدرة على تغييره . و كما تعرفون فأخطاء الترجمة تظهر لكم في منطقة الموت ( الفرغ في الأسفل ) ، فسيظهر لكم المصنف عبارة كهذه تقريبا : [Warning] assignment of read-only variable ' NOMBRE_DE_VIES_INITIALES' بمعنى : تحذير أنت غبي فلماذا تحاول تغيير الثابت الذي لا يتغير ؟ ( أمزح فقط ) ، إنه يحذر بأنه غير قادر إلا على قراءة المتغير nombre de vies .
- إظهار محتوى متغير
نحن نعرف كيف نظهر مسج على الشاشة باستخدام الدالة printf . الآن سنتعلم كيف نظهر القيمة الخاصة بالمتغير باسخدام نفس الدالة،
سنكتب نفس عبارة الدالة لكننا سنعطيها إشارة تقوم فيها بإظهار قيمة المتغير لنا . مثلا :
printf("Il vous reste %d vies");
هذه الإشارة أو الرمز الذي تكلمت عنه هو إشارة % متبوعة بحرف d ، يشير % إلى ما يجب أن نقوم بإظهاره، أما d فيعني بأن العدد صحيح أو طبيعي .
هناك العديد من الرموز التي يمكن استخدامها ، هذين أسهل و أسبط إثنين منها :
الرمز |
المعنى |
%d |
عدد صحيح (ex. : 4) |
%f |
عدد عشري (ex. : 5.18) |
سأكلمكم عن مزيد من الرموز في الوقت المناسب لذلك، فقط إعلموا أنكم إذا أردتم أن تستخدموا نمط int عليكم باستخدام d% و إن أردتم أن تستخدموا نمط double فعليكم باستخدام الرمز f% ،
إقتربنا من النهاية، لقد قلنا بأننا نريد إظهار عدد صحيح لكننا لم نحدده بالظبط ما هو ! يجب أن نأمر الدالة printf قيمة أي متغير ندير أن نظهر على الشاشة .
لفعل ذلك، يجب أن تفتحوا قوس ثم تكتبوا إسم المتغير و تضعون فاصلة كالتالي :
printf("Il vous reste %d vies", nombreDeVies);
الـ:d% سيتم استبداله بالمتغير المشار إليه nombreDeVies ثم فاصلة من بعده .
لنجرب البرنامج الآن :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int nombreDeVies = 5; // Au départ, le joueur a 5 vies
printf("Vous avez %d vies\n", nombreDeVies);
printf("**** B A M ****\n"); // Là il se prend un grand coup sur la tête
nombreDeVies = 4; // Il vient de perdre une vie !
printf("Ah desole, il ne vous reste plus que %d vies maintenant !\n\n", nombreDeVies);
return 0;
}
هذا التمرين البسيط يشبه ما يحصل في ألعاب الفيديو مع إضافات أخرى بطبيعة الحال، هذا ما سيظهر لكم في الواجهة :
Vous avez 5 vies
**** B A M ****
Ah desole, il ne vous reste plus que 4 vies maintenant !
يجب أن تعرفوا ما يحصل في برنامجكم :
1- في البداية ينطلق اللاعب بصحة 5 hp . و هذا ما وضعناه في الدالة printf
2- اللاعب يتلقى ضربة و الذي يظهر BAM .
3- يبقى له في الصحة 4 و هذا ما توضحه كذلك الدالة printf.
كان هذا سهلا جدا .
- إظهار العديد من المتغيرات في نفس الدالة printf
يمكن إظهار قيمة متغيرات عديدة تحت نفس الدالة printf ، يكفي أن تأمروا الـ:d% أو الـ:%f ما تريدون القيام به ، و طبعا تأمرون المتغير بنفس الأمر ، و تفصلونها بفواصل كالتالي :
printf("Vous avez %d vies et vous etes au niveau n°%d", nombreDeVies, niveau);
int main(int argc, char *argv[])
{
int nombreDeVies = 5; // Au départ, le joueur a 5 vies
printf("Vous avez %d vies\n", nombreDeVies);
printf("**** B A M ****\n"); // Là il se prend un grand coup sur la tête
nombreDeVies = 4; // Il vient de perdre une vie !
printf("Ah desole, il ne vous reste plus que %d vies maintenant !\n\n", nombreDeVies);
return 0;
}
يجب أن تأمروا متغيرتكم بالأمر الصحيح ، الـ:d% الأول يتم تغييره بالمتغيرة الأولى nombreDeVies و الـ:d% الثاني يتم تغييره بالمتغير الثانية niveau ، إن خلطتم في ترتيبهما لن يكون لجملتكم أي معنى .
لنقم بتجريب آخر الآن، كما ستلاحظون سأحذف الأصطر الأولى ( توجيهات المعالج التي تبتدأ بدياز # ) ، و هذا ما ستجدونه :
int main(int argc, char *argv[])
{
int nombreDeVies = 5, niveau = 1;
printf("Vous avez %d vies et vous etes au niveau n°%d\n", nombreDeVies, niveau);
return 0;
}
int main(int argc, char *argv[])
{
int nombreDeVies = 5; // Au départ, le joueur a 5 vies
printf("Vous avez %d vies\n", nombreDeVies);
printf("**** B A M ****\n"); // Là il se prend un grand coup sur la tête
nombreDeVies = 4; // Il vient de perdre une vie !
printf("Ah desole, il ne vous reste plus que %d vies maintenant !\n\n", nombreDeVies);
return 0;
}
و هذا ما سيظهر بالشاشة :
Vous avez 5 vies et vous etes au niveau n°1
- استرجاع قيمة:
المتغيرات التي كنّا نعمل عليها أصبحت مهمة أكثر الآن، سنتعلم كيف نطلب من المستخدم كتابة رقم في الكونسول، هذا الرقم سنقوم باسترجاعه ثم تخزينه في الذاكرة، و ما إن نستطيع القيام بهذا الأمر يصبح الباقي سهلا كلّه و يمكننا حينها تجربة عدة أشياء .
لنطلب من المستخدم إدخال شيء في الكونسول، سنستخدم دالة أخرى جاهزة كذلك و هي الدالة scanf و هي دالة تشبه كثيرا الدالة printf ، ستكتبون على d% لتشروا لجهاز بأن المستخدم سيدخل رقما صحيحا ( للأرقام العشرية سأرجع لاحقا ) ، بعدها تكتبون اسم المتغير الذي سيتلقى القيمة .
هذا مثال بسيط :
int age = 0;
scanf("%d", &age);
سنضع الـ:d% داخل القوسين، و كذا ستكتبون الرمز & مرفوق باسم المتغير الذي يتلقى القيمة.
حذاري ! : إذا كنتم ستستخدمون عددا عشريا فيجب أن ترفقوه بالرمز f% ، فهناك فرق فيه عند الدالة printf و هذا ما سنعود إليه لاحقا .
double poids = 0;
scanf("%lf", &poids);
لنرجع إلى برنامجنا الآن، عندما يصل هذا الأخير للدالة scanf، سيقوم بالتوقف قليلا في انتظار من المستخدم أن يدخل قيمة معينة، و هذا الرقم سيكون مخزنا في المتغير age . هذا برنامج صغير يطلب من المستخدم إدخال عمره :
int main(int argc, char *argv[])
{
int age = 0; // On initialise la variable à 0
printf("Quel age avez-vous ? ");
scanf("%d", &age); // On demande d'entrer l'age avec scanf
printf("Ah ! Vous avez donc %d ans !\n\n", age);
return 0;
}
هذا هو الناتج :
Quel age avez-vous ? 20
Ah ! Vous avez donc 20 ans !
معناه أن هذا البرنامج يتوقف عندما يصل للسؤال و الذي يطرحه للمستخدم : "Quel age avez-vous ?". أي كم عمرك ؟ و عندما يظغط المستخدم رقما يدل على سنّه و يظغط على Entree للتأكيد، يكمل بعدها البرنامج في التنفيذ و التشغيل و هنا تكون مهمة الجهاز فقط إرجاع السن و يجيبك ، آآه إذا أنت ذو العشرين سنة أو الخامس عشر حسب ما كتبت له .
و هنا تكونون قد فهمتم المبدأ ، بفضل الدالة scanf يمكننا التعامل مع المستخدم أو اللاعب إن كانت لعبة، إعرفوا بأنه لا يوجد شيء يمنعكم من كتابة عدد عشري :
1- عندما تدخلون رقم عضوي كـ:2.9 مثلا، سيتم أوتوماتيكيا قطعه و أخذ الجزء الصحيح منه و في هذه الحالة سيتم تخزين الرقم 2 فقط، عندما تدخلون قيما ملخبطة ("éèydf"), لا تتغير قيمة المتغير، و لحسن الحظ لقد نظّمنا متغيرتنا على القيمة 0 دائما ، يعني يقوم الجهاز باظهار : السن = 0 ، و بالتالي نتيجة تدل على وجود خطأ، أما إن كنا لم ننظم متغيرتنا فتوقعوا أن تأتيكم أي نتيجة ، تظهر لكم قفيمة آخر متغير عملت به أي أي عدد كان !
ينتهى درسنا للمتغيرات اليوم هنا ، للعلم فالمتغيرات نعمل بها دائما في البرمجة، و إذا فهمتم مبدأ أن المتغير هو تخزين قيمة مؤقتا في الذاكرة، فقد فهمتم كلّ شيء، و لا يبقى سوى أن تحفظوا أنماط المتغيرات int - char ..إلخ .
قوموا بتجارب من عندكم بالدالة scanf و أجيبوا الجهاز بقيم و هي التي سيظهرها لكم ، المهم الدرس القادم سيكون حول كيفية القيام بالحساب بلغة السي، فكونوا على استعداد لاستخدام الدالتين scanf و printf .