منتديــــات أصحاب
منتديــــات أصحاب
منتديــــات أصحاب
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتديــــات أصحاب


 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

 لغة ال"c" (الفصل الثاني)

اذهب الى الأسفل 
كاتب الموضوعرسالة
ThE MaN

صاحــب الموقــع  صاحــب الموقــع



ذكر عدد الرسائل : 2799
العمر : 35
البلد : فلسطين
المزاج : اخر انبساط
علم بلدك : لغة ال"c" (الفصل الثاني) 70px-Flag_of_Palestine.svg
نشاط العضو :
لغة ال"c" (الفصل الثاني) Left_bar_bleue70 / 10070 / 100لغة ال"c" (الفصل الثاني) Right_bar_bleue

نقاط : 6439
السٌّمعَة : 0
تاريخ التسجيل : 01/07/2007

لغة ال"c" (الفصل الثاني) Empty
مُساهمةموضوع: لغة ال"c" (الفصل الثاني)   لغة ال"c" (الفصل الثاني) I_icon_minitimeالسبت 8 ديسمبر 2007 - 17:20

الفصل الثاني :
مبادئ لغة ال C :


1- البرنامج الأول بلغة ال C

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

يوضح البرنامج التالي برنامجا صغيرا يطبع على الشاشة عند تشغيله العبارة
"Hello C "



CODE

#include <stdio.h>
main()
{
printf ( “Hello C”);
}



إن البرنامج يعتمد أساسا على الدالة printf فهي المسئولة عن طباعة العبارة
المطلوب طباعتها على الشاشة. وعندما تتقدم في اللغة ستجد أن لغة C مبنية من
دوال مختلفة لكل وظيفتها المحددة، كما ذكرنا سابقا.

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

والإطار الذى يحوي البرنامج يبدأ بكلمة main يعقبها القوس الأيسر " { " والذي
تتالى بعده عبارات البرنامج، ثم ينتهي بالقوس الأيمن " } ".

ويطلق على الجزء المحتوى بين القوسين " { } " اسم البلوك (block) .و البلوك
الذي يبدأ بكلمة (main) يسمى بلوك البرنامج.
وفي المثال السابق يتكون البرنامج من بلوك واحد هو بلوك البرنامج.

والسطر الأول من البرنامج والمحصور بين العلامتين " /* */" يسمى التعليق
ويستخدم التعليق لكتابة الملاحظات على البرنامج، ومن المفيد دوما كتابة
التعليقات لتسهيل مراجعة البرنامج .

وعند ترجمة هذا البرنامج فإن مترجم لغة C يتجاهل تماما كل ما يأتي بين هاتين
العلامتين. ويجوز أن تضيف إلى البرنامج ما تشاء من الملاحظات وفي أي مكان من
البرنامج وبأي عدد من السطور مادمت تبدأ وتنتهي بالعلامتين المميزتين" /* " ،
" */ ".

أما السطر الثاني والذي يبدأ بالعلامة الخاصة " # " فيسمى بالتوجيه (
Directive ) وهو لا يمثل جزءا من منطق البرنامج ولكنه يستخدم لتوجيه المترجم
أثناء الترجمة ، حيث يدله على مكان الملف " stdio.h " والذي يطلق عليه اسم
ملف العناوين للدخل و الخرج أو (Standard Input Output header file )

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

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

ولكن هناك من القواعد ما يجب الإلتزام به :

1-تكتب التوجيهات على سطر مستقل.
2- تستخدم الدوال ( مثل printf ) في تكوين عبارات البرنامج ( staements)
وتنتهي كل عبارة بفاصلة منقوطة. والفاصلة المنقوطة لاغنى عنها حتى لو كان
البرنامج محتويا على عبارة واحدة، وأغلب الأخطاء التي نحصل عليها تكون نتيجة
نسيان فاصلة منقوطة.
3- تتطلب بعض الكلمات الخاصة باللغة أن نعقبها بمسافة خالية على الأقل وإلا
تعرضنا لرسالة خطأ من المترجم عند ترجمة البرنامج.
4- تكتب الكلمات المفتاحية للغة ( key words ) مثل أسماء الدوال (مثل printf
) بالحروف الصغيرة ( small letters).
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://m2kar.yoo7.com
ThE MaN

صاحــب الموقــع  صاحــب الموقــع



ذكر عدد الرسائل : 2799
العمر : 35
البلد : فلسطين
المزاج : اخر انبساط
علم بلدك : لغة ال"c" (الفصل الثاني) 70px-Flag_of_Palestine.svg
نشاط العضو :
لغة ال"c" (الفصل الثاني) Left_bar_bleue70 / 10070 / 100لغة ال"c" (الفصل الثاني) Right_bar_bleue

نقاط : 6439
السٌّمعَة : 0
تاريخ التسجيل : 01/07/2007

لغة ال"c" (الفصل الثاني) Empty
مُساهمةموضوع: رد: لغة ال"c" (الفصل الثاني)   لغة ال"c" (الفصل الثاني) I_icon_minitimeالسبت 8 ديسمبر 2007 - 17:20

2-الطباعة على الشاشة

تستخدم الدالة printf لطابعة النصوص على الشاشة وهي كأي دالة أخرى تأتي
متبوعة بقوسين نكتب بينهما النص المطلوب طباعته بين علامتي اقتباس.

وكل ما نكتبة بين علامتي الاقتباس يظهر كما هو على الشاشة ولذلك يصطلح على
تسميته بالحرفي ( string) .

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



CODE

#include <stdio.h>
main()
{
printf(“Welcome ”);
printf(“ C Programmer”);
}



وناتج البرنامج موضح بالشكل التالي




CODE
WelcomeC Programmer



ونلاحظ أن العبارتين طبعتا على الشاشة دون أي فاصل بينهما.

و لكننا حتما نريد الفصل بين العبارات المختلفة فمثلا ماذا لو أردنا الإنتقال
لسطر جديد لتطبع العبارة الثانية على سطر مستقل؟

إن الإنتقال لسطر جديد يستلزم إضافة علامة خاصة إلى نهاية الحرفي الأول،
وتسمى هذه العلامة بعلامة السطر الجديد ( new line character ) وتكتب كالآتي
( \n)

ولنجرب إستخدام هذه العلامة وذلك كما هو موضح في الشكل التالى



CODE

#include <stdio.h>
main()
{
printf(“Welcome \n”);
printf(“ C Programmer”);
}



وعند تنفيذ هذا البرنامج نحصل على النتيجة التالية



CODE

Welcome
C Programmer



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

ويمكن استخدام دالة الطباعة لتطبع على الشاشة محتويات بطاقة تحمل الاسم
والعنوان كما هو موضح بالشكل التالي




CODE

Future Horizons Co.
81 emarat othman
NasrCity
Cairo



و البرنامج المستخدم لطباعة هذة البطاقة موضح بالمثال التالي



CODE

#include <stdio.h>
main()
{
printf(“Future Horizons Co.\n”);
printf(“81 emarat othman \n“);
printf(“NasrCity\n”);
printf(“Cairo\n”);
}
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://m2kar.yoo7.com
ThE MaN

صاحــب الموقــع  صاحــب الموقــع



ذكر عدد الرسائل : 2799
العمر : 35
البلد : فلسطين
المزاج : اخر انبساط
علم بلدك : لغة ال"c" (الفصل الثاني) 70px-Flag_of_Palestine.svg
نشاط العضو :
لغة ال"c" (الفصل الثاني) Left_bar_bleue70 / 10070 / 100لغة ال"c" (الفصل الثاني) Right_bar_bleue

نقاط : 6439
السٌّمعَة : 0
تاريخ التسجيل : 01/07/2007

لغة ال"c" (الفصل الثاني) Empty
مُساهمةموضوع: رد: لغة ال"c" (الفصل الثاني)   لغة ال"c" (الفصل الثاني) I_icon_minitimeالسبت 8 ديسمبر 2007 - 17:21

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 ) وهي الأعداد ذات العلامة
العشرية.

وعند تنفيذ البرنامج السابق نحصل على النتيجة الموضحة بالشكل



CODE

130
130.5



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

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

مؤثر الجمع +
مؤثر الطرح -
مؤثر الضرب *
مؤثر القسمة /

والمثال التالي يوضح استخدام المؤثرات الحسابية مع الدالة (printf )




CODE

#include <stdio.h>
main()
{
printf(“%d\n”,128*2);
printf(“%f\n”,128.0/2);
}



وعند تنفيذ البرنامج نحصل على الناتج الموضح بالشكل التالي



CODE

256
64.000000
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://m2kar.yoo7.com
ThE MaN

صاحــب الموقــع  صاحــب الموقــع



ذكر عدد الرسائل : 2799
العمر : 35
البلد : فلسطين
المزاج : اخر انبساط
علم بلدك : لغة ال"c" (الفصل الثاني) 70px-Flag_of_Palestine.svg
نشاط العضو :
لغة ال"c" (الفصل الثاني) Left_bar_bleue70 / 10070 / 100لغة ال"c" (الفصل الثاني) Right_bar_bleue

نقاط : 6439
السٌّمعَة : 0
تاريخ التسجيل : 01/07/2007

لغة ال"c" (الفصل الثاني) Empty
مُساهمةموضوع: رد: لغة ال"c" (الفصل الثاني)   لغة ال"c" (الفصل الثاني) I_icon_minitimeالسبت 8 ديسمبر 2007 - 17:21

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 للإعلان عنه.
وأما المتغير الثاني (

لغة ال"c" (الفصل الثاني) Cool
فهو يختزن الأعداد الحقيقية ( Real) وقد استخدمنا معه الكلمة float للإعلان
عنه.

وكما ذكرنا سابقا، نلاحظ أن عبارة الإعلان تنتهي بفاصلة منقوطة كسائر عبارات
البرنامج، كما أنه يلزم ترك مسافة خالية على الأقل بعد كل من الكلمات
المحجوزة ( int أو float)
وبعد ذلك تقوم بقية البرنامج بطباعة محتوى المتغيرات a,b ولأننا لم نخزن في
هذين المتغيرين أية بيانات فإن ما نحصل علية ليس إلا بعض المخلفات الموجودة
في الذاكرة، وهي بلا معنى على الإطلاق والشكل التالي يوضح مثالا لهذة
المخلفات كنتيجة لتشغيل البرنامج




CODE

22348
476.950



تخزين البيانات في المتغيرات ( 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);
}



وعند تنفيذ هذا البرنامج نحصل على النتيجة الموضحة بالشكل



CODE

1000
796.5




عبارة التخصيص ( 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 ;
ونقوم بشحن المتغيرات بقيمة ابتدائية عند الإعلان عنها لضمان تنظيف وعاء
المتغير من مخلفات الذاكرة.


5-التحكم في الفورمات

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

ويتم ذلك باستخدام علامات خاصة لتعديل مواصفات الفورمات يطلق عليها علامات
تعديل الفورمات ( format modifiers )
والشكل التالي يوضح طرقا مختلفة لطباعة الرقم الحقيقي 25

الوصف | التأثير على شكل الناتج | النتيجة

%.0f | حذف جميع الأصفار الزائدة | 25
%.3f | إظهار ثلاث أصفار فقط بجوار العلامة | 25.000


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

والمثال التالي يوضح برنامجا لطباعة العدد 75 بصور مختلفة




CODE

#include <stdio.h>
main()
{
float x;
x=75;
printf(“%.0f\n”,x);
printf(“%.1f\n”,x);
printf(“%.2f\n”,x);
}



وعند تنفيذه نحصل على الناتج الموضح بالشكل




CODE

75
75.0
75.00



والآن ماذا لو كان العدد المطلوب طباعته محتويا على كسر عشري مثل
25.8756
واستخدمنا تعديلا في الفورمات لطباعته ؟ إن ما يحدث في هذه الحالة هو تقريب
العدد إلى عدد من الخانات العشرية بحسب الرقم المستخدم في الفورمات

ويمكنك تجربة البرنامج التالي لطباعة قيمة الكسر ¾ في صور مختلفة وبدرجات
مختلفة من التقريب.




CODE

#include <stdio.h>
main()
{
printf(“%.0f\n”,3.0/4.0);
printf(“%.1f\n”,3.0/4.0);
printf(“%.2f\n”,3.0/4.0);

}




وناتج هذا المثال هو الموضح بالشكل



CODE

1
0.8
0.75
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://m2kar.yoo7.com
ThE MaN

صاحــب الموقــع  صاحــب الموقــع



ذكر عدد الرسائل : 2799
العمر : 35
البلد : فلسطين
المزاج : اخر انبساط
علم بلدك : لغة ال"c" (الفصل الثاني) 70px-Flag_of_Palestine.svg
نشاط العضو :
لغة ال"c" (الفصل الثاني) Left_bar_bleue70 / 10070 / 100لغة ال"c" (الفصل الثاني) Right_bar_bleue

نقاط : 6439
السٌّمعَة : 0
تاريخ التسجيل : 01/07/2007

لغة ال"c" (الفصل الثاني) Empty
مُساهمةموضوع: رد: لغة ال"c" (الفصل الثاني)   لغة ال"c" (الفصل الثاني) I_icon_minitimeالسبت 8 ديسمبر 2007 - 17:22

6- متغير الرمز ( char variable ) :

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

و الرموز التي يمكن تخزينها في هذا النوع من المتغيرات فهي قد تكون رموزا
موجودة في جدول الكود آسكي ( ASCII code table) وهو جدول يحتوي الرموز
المعتمدة من هيئة المواصفات القياسية الأمريكية، ويضم جميع الحروف والأرقام
والعلامات الخاصة وعلامات التحكم والأرقام الكودية المناظرة لكل منها.

و للإعلان عن متغير رمز بالاسم "a" مثلا نستخدم العبارة التالية:
char a;
ولتخصيص رمز ما لهذا المتغير فإننا نضعه بين علامتي اقتباس مفردتين كالآتي
a = 'Z'
و بهذا التخصيص أصبح متغير الرمز "a " محتويا على الحرف " Z"، ولطباعة
محتويات المتغير الرمز نحتاج إلى توصيف جديد للفورمات وهو التوصيف" %c"

,هذا التوصيف يحتوي على الحرف الأول من كلمة character وهو مخصص لطباعة
الرموز.

والمثال التالي يوضح برنامجا قمنا فيه بالإعلان عن متغير رمز بالاسم "
first_letter"
ثم خصصنا لهذا المتغير الحرف " A" ثم طبعنا محتويات المتغير باستخدام التوصيف
%c.
وعند تنفيذ هذا البرنامج فإنه يطبع على الشاشة الحرف A.




CODE

#include <stdio.h>
main()
{
char first_letter;
first_letter = ‘A’;
printf(“%c\n”,first_letter);
}



ومن أهم خصائص متغير الرمز أننا نستطيع أن نطبعه بطريقتين مختلفتين:
1- باستخدام الفورمات %c.
2- باستخدام الفورمات %d.

في الحالة الأولى كما رأينا في المثال السابق فأن الرمز المختزن هو الذي يظهر
على الشاشة.

أما لو استخدمنا الفورمات %d فإن رقم الكود آسكي المناظر للرمز هو الذي يظهر
على الشاشة.

والمثال التالي يوضح استخدام نوعي موصفات الفورمات مع متغير الرمز




CODE

#include <stdio.h>
main()
{
char first_letter;
first_letter = ‘A’;
printf(“%c\n”,first_letter);
printf(“%d\n”,first_letter);

}




6- تخزين الحرفيات والمؤشرات(String & Pointer )
في لغة C:


إلى الآن تعلمنا كيفية التعامل مع المتغير الرمز ، والمتغيرات العددية.
و سنتعلم الآن نوعا جديدا من المتغيرات وهو المتغير الحرفي ( string ) ولا
ريب أن كل المبرمجين الذين سبق لهم التعامل مع لغات أخرى مثل البيسك قد
تعودوا على إستخدام هذا النوع من المتغيرات…

ولكن لغة C لاتحتوي متغيرا من هذا النوع بل تختزن الحرفيات بطرية خاصة كرموز
متتابعة.

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

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

وتختلف طريقة الأعلان عن المؤشر بحسب البيان المخزون فيه، فإذا كان المؤشر
يشير إلى عدد صحيح مثلا فيسمى في هذة الحالة ( مؤشر إلى عدد صحيح ) ويعلن عنه
بعبارة كالعبارة التاليه:
int *a;

أما لو كان يشير إلى رمز من الرموز فيسمى في هذه الحالة مؤشر إلى رمز أو (
character pointer) ويعلن عنه بعبارة كالعبارة التاليه:

char * a
ونلاحظ أنه في كلتا الحالتين فأن " a" هو اسم المؤشر الذي اخترناه وهو يأتي
مسبوقا بالعلامة " * " التي تدل على كونه مؤشرا. أما نوع المؤشر فهو يتم
تحديدة وفقا لنوع البيان المشار إلية فقد يكون عددا صحيحا ( int ) أو حقيقيا
( real ) أو رمزا ( char ) وهي الأنواع الثلاثة التي عرفناها في لغة C

والمثال التالي يوضح كيفية تخصيص متغير حرفي وطباعته على الشاشة، ونلاحظ أنه
لطباعة الحرفي نقوم بطباعة المؤشر الذي يشير إليه مع استخدام توصيف جديد
للفورمات وهو ( %s )




CODE

#include <stdio.h>
main()
{
char *a;
a = “Welcome C programmer”;
printf(“%s\n”,a);
}



وناتج البرنامج هو الموضح بالشكل التالي



CODE

Welcome C programmer



وعند الأعلان عن مؤشر بالعبارة
char *a;
فأن هذا يؤدي إلى خلق الآتي:
1- المؤشر " a " الذي يشير إلى أول حرف من الحرفي.
2- المتغير" *a " الذي يحتوي على أول حرف من الحرفي.

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

والمثال التالي يساعدنا على تعميق مفهوم المؤشر، فهو يبدأ بإعلان عن متغير
رمز " a " ثم يختزن فيه الحرفي " Hello again "، ويطبع محتويات العديد من
المتغيرات المتعلقة بالحرفي.




CODE

#include <stdio.h>
main()
{
char *a;
a = “Hello again”;
printf(“%s\n”,a);
printf(“%c\n”,*a);
printf(“%d\n”,a);
printf(“%p\n”,a);
printf(“%d\n”,*a);
}
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://m2kar.yoo7.com
 
لغة ال"c" (الفصل الثاني)
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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