تابع الفصل الثاني
3- التعامل مع الاعداديمكن باستخدام عبارة الطباعة و الدالة printf أن نعرض الأرقام على الشاشة بل يمكننا أيضا أن نجري العمليات الحسابية المختلفة فتتولى الدالة printf تقييم التعبيرات الحسابية وطباعة النتيجة على الشاشة.ومن الملاحظ أن الأعداد لا تحتاج لعلامات اقتباس.
وفي لغة C يجب أن نفرق بين نوعين من الأعداد:
1-الأعداد الصحيحة ( Integers)
2- الأعداد الحقيقية ( Real numbers)
أما الأعداد الصحيحة فهي تلك الأعداد التي لا تحوي كسورا. بينما تحتوي الأعداد الحقيقية على علامة عشرية ( بصرف النظر عن وجود كسر من عدمه).
فورمات الأعداد:
يلزم إخبار الكمبيوتر دائما عن نوع العدد باستخدام صيغة خاصة (فورمات) تأتي بداخل علامتي الأقتباس، لأن الكمبيوتر يتعامل مع كل نوعية من الأعداد بطريقة مختلفة تماما.
ولتوضيح استخدام الفورمات انظر الشكل
CODE |
#include <stdio.h> main() { printf(“%d \n”,130); printf(“%f\n”,130.5); }
|
وفي هذا البرنامج استخدمنا نوعين من الأعداد و لكل منهما لبفورمات الخاصة به فنجد أن رمز الفورمات المستخدم مع العدد الصحيح هو ( %d)
والحرف ( d ) بهذا الرمز هو اختصار كلمة ( decimal ) بمعنى رقم عشري أي مكتوب بالنظام العشري.
أما رمز الفورمات المستخدم لطباعة العدد الحقيقي فهو ( %f) والحرف ( f ) بهذا الرمز هو اختصار كلمة ( floating point number ) وهي الأعداد ذات العلامة العشرية.
وعند تنفيذ البرنامج السابق نحصل على النتيجة الموضحة بالشكل
ويجب على المبرمج تحري الدقة التامة عند التعامل مع الفورمات ، فلا نستخدم فورمات الأعداد الحقيقية مع الأعداد الصحيحة أو العكس. لأن الخطأ في الاستخدام ينتج عنه نتائج غير صحيحة.
التعبيرات الحسابية:
كما ذكرنا سابقا فأن دالة الطباعة يمكنها أيضا أن تجري العمليات الحسابية المختلفة وتطبع النتيجة على الشاشة.
وتستخدم المؤثرات الحسابية الموضحة ادناه لبناء التعبيرات الحسابية:
مؤثر الجمع +
مؤثر الطرح -
مؤثر الضرب *
مؤثر القسمة /
والمثال التالي يوضح استخدام المؤثرات الحسابية مع الدالة (printf )
CODE |
#include <stdio.h> main() { printf(“%d\n”,128*2); printf(“%f\n”,128.0/2); }
|
وعند تنفيذ البرنامج نحصل على الناتج الموضح بالشكل التالي
4- استخدام المتغيراتيقوم الكمبيوتر بتخزين البيانات التي يحتاجها في الذاكرة والمتغيرات ما هي إلا عناوين خانات في الذاكرة التي نحفظ فيها البيانات. ولتسهيل الوصول للبيانات المختزنة يتم في لغات البرمجة عالية المستوى استبدال العناوين الرقمية بأسماء المتغيرات.
ويكفينا هنا - لو كنا مبتدئين في البرمجة- أن نتذكر دائما أن المتغير ما هو إلا اسم لأحد الأماكن التي تختزن فيها البيانات في الذاكرة.
وأسماء المتغيرات يصطلح عليها في لغة الC بأسماء البيانات ( Identifiers)
وهناك قواعد محددة لاختيار أسماء البيانات وهي:
1-ألا يكون اسم البيان أحد الكلمات المحجوزة باللغة ( Reserved words ) أو الكلمات التي تحمل معنى خاصا مثل( main ) ويمكن التعرف على الكلمات المحجوزة باللغة من دفتر التشغيل المصاحب للمترجم.
2-يمكن أن يحتوي الاسم على أى حرف من الحروف الأبجدية ( A-Z) سواء صغيرة كانت أم كبيرة، وأي رقم من الأرقام (0-9 ) كما يمكن أن تحتوي على علامة الشرطة السفلى ( _ ) ولكن لا يجوز أن يبدأ الاسم برقم.
3-لا قيود على طول الاسم ، وتتيح هذه الميزة استخدام أسماء معبرة عن مضمونها، ومن الأفضل دائما استخدام الاسم المعبر عن محتوى المتغير لتسهيل عملية فحص البرنامج في حالة الخطأ من جهة، ولتسهيل عملية الإضافة والتعديل للبرنامج.
4-الحروف الكبيرة و الصغيرة ليست متكافئة في لغة C فمثلا اسم البيان(MY_NUMBER) يختلف عن الاسم ( my_number) وكلاهما يختلف عن الاسم ( My_Number).
الإعلان عن المتغيرات:
ليتمكن المستخدم من استخدام المتغيرات التي يريدها يتطلب البرنامج المكتوب بلغة C الإعلان المسبق عن أسمائها ونوعياتها في مستهل البرنامج .
وتصنف المتغيرات بحسب البيانات التي يمكن أن تختزن فيها فهناك المتغيرات الصحيحة ( أي التي تصلح لإختزان الأعداد الصحيحة) و هناك المتغيرات الحقيقية ( أي التي تختزن الأعداد الحقيقية)، ومع تقدمنا في اللغة سنتعرف على نوعيات أخرى من المتغيرات.
والشكل التالي يوضح برنامجا قمنا فيه بالإعلان عن المتغيرات
CODE |
#include <stdio.h> main() { /* variable declaration*/ int a; float b; /*Display output */ printf(“%d\n”,a); printf(“%f\n”,b); }
|
وكما نرى في البرنامج أنه قد تم الإعلان عن متغيرين الأول ( a) وهو من النوع الصحيح (integer) وقد استخدمنا الكلمة int للإعلان عنه.
وأما المتغير الثاني (
فهو يختزن الأعداد الحقيقية ( Real) وقد استخدمنا معه الكلمة float للإعلان عنه.
وكما ذكرنا سابقا، نلاحظ أن عبارة الإعلان تنتهي بفاصلة منقوطة كسائر عبارات البرنامج، كما أنه يلزم ترك مسافة خالية على الأقل بعد كل من الكلمات المحجوزة ( int أو float)
وبعد ذلك تقوم بقية البرنامج بطباعة محتوى المتغيرات a,b ولأننا لم نخزن في هذين المتغيرين أية بيانات فإن ما نحصل علية ليس إلا بعض المخلفات الموجودة في الذاكرة، وهي بلا معنى على الإطلاق والشكل التالي يوضح مثالا لهذة المخلفات كنتيجة لتشغيل البرنامج
تخزين البيانات في المتغيرات ( Assignment ):في البرنامج السابق لاحظنا أنه لابد من أن تختزن عددا ما في المتغير العددي الذي أعلنا عنه ويتم ذلك باستخدام عبارة التخصيص ( assignment statement) ويوضح الشكل التالي برنامجا قمنا فية بالإعلان عن متغيرين و إختزان بيانين عدديين في كل منهما ، ثم نطبع محتويات هذين المتغيرين على الشاشة.
CODE |
#include <stdio.h> main() { /* variable declaration*/ int a; float b; /* Assignment */ a=1000; b=796.5; /*Display output */ printf(“%d\n”,a); printf(“%f\n”,b); }
|
وعند تنفيذ هذا البرنامج نحصل على النتيجة الموضحة بالشكل
عبارة التخصيص ( Assignment statment ) :إن العبارة
a=1000;
يمكن قرائتها على النحو التالي:
" خصص العدد 1000 للمتغير a "
ومن الجائز أن نخصص متغيرا لمتغير آخر ، ومعنى ذلك أننا نضع نسخة من المغير الأول في المتغير الثاني.
أمالو فمنا بتخصيص تعبير حسابي يحتوي على متغيرات وقيم عددية لمتغير ما فأن البرنامج في هذه الحالة يجري عملية تقييم للتعبير الحسابي ويضع قيمته النهائية في المتغير المقصود.
ويوضح المثال التالي ثلاث عمليات تخصيص كالآتي:
1- تخصيص قيمة عددية للمتغير " a"
2- قسمة محتويات المتغير " a" على 2 وتخصيص الناتج للمتغير " b"
3- جمع محتويات كل من " a" ، " b" وتخصيصها للمتغير " c".
CODE |
#include<stdio.h> main() { int a; float b,c;
a=1024; b=a/2.0; c= b+a;
printf(“The result is %f\n”,c);
}
|
ومن الملاحظ في هذا البرنامج أنه قد تم إعلان المتغيرين " b" ، " c" في عبارة واحدة وقمنا بإستخدام علامة الفاصلة للفصل بينهما.
ونتيجة البرنامج النهائية هي طباعة محتويات المتغير " c"
التخصيص المتعدد:
يمكننا في لغة C أن نخصص قيمة ما لأكثر من متغير في نفس العبارة كالآتي:
a = b = c = 24;
تخصيص قيم ابتدائية المتغيرات:
يمكن أيضا شحن المتغير بقيمة إبتدائية أثناء الأعلان عنه كالآتي:
float a = 5.6 ;
ونقوم بشحن المتغيرات بقيمة ابتدائية عند الإعلان عنها لضمان تنظيف وعاء المتغير من مخلفات الذاكرة.
يتبع...