المبرمج فراس الجابري

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

كل ماهو جديد ومفيد في عالم الكمبيوتر والانترنيت


    دروس في لغة السي C

    Admin
    Admin
    Admin


    المساهمات : 8
    تاريخ التسجيل : 13/03/2009

    دروس في لغة السي C Empty دروس في لغة السي C

    مُساهمة  Admin السبت مارس 14, 2009 10:37 am

    لـــغة الـــــسي

    الفصل الأول : لغة C … نظرة تاريخية و ملامح عامة

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

    و على الرغم من أن لغة الC ليست جديدة فإنها لغة سريعة التطور ، حيث أبتكرها " دينيس ريتشي" في أوائل السبعينات وقدمها بالاشتراك مع " بريان كارينجان" في كتابهما ( The C programming language )والذي يعد المرجع الأساسي في اللغة. ومنذ ذلك الحين واللغة في تطور مستمر.

    وتطورت لغة C تطورا سريعا ليظهر منها الامتداد الذي يطلق عليه C++ وتتميز لغة C++ باعتمادها أساسا جديدا من طرق البرمجة وهو ما يطلق عليه (Object Oriented Programming ).ومهدت لغة C++ الطريق لظهور لغة Visual C++ وهي الصورة الأحدث من اللغة والتي تعمل في بيئة الويندوز.

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

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

    ومن أهم ملامح البرمجة بلغة C أن البرنامج ما هو إلا معمار دقيق التصميم يعتمد في بنائه على البلوكات الجاهزة التي تتكامل معا لتصنع البناء الضخم.و البلوك أو مايسمى بالدالة ( function ) ما هو إلا مجموعة من الأوامر متعلقة بجزء محدد من البرنامج، وتنتج البلوكات من تقسيم البرنامج إلى أجزاء أصغر لكل وظيفته التي يتم تحديدها بالأوامر التي تكتب في البلوك.

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

    ونستطيع مع لغة C استخدام البلوكات الجاهزة الموجودة بمكتبات المبرمجين الآخرين، أو بناء مكتبة من الدوال للاستعانة بها وقت الحاجة.

    وهناك خطوات مطلوبة لتنفيذ أي برنامج وهي:
    1- كتابة البرنامج وحفظة على القرص باستخدام أحد برامج التحرير ( Editors)
    2- عملية الترجمة ( compilation ) وينتج عن هذه العملية البرنامج الهدف الذي يحمل عادة الامتداد " OBJ" .
    3- عملية الربط بمكتبة اللغة ( Linking) وينتج عن هذه العملية البرنامج التنفيذي الذي يحمل الامتداد "EXE". والبرنامج التنفيذي هو البرنامج الذي يتم تنفيذه بمجرد إدخال اسمه .

    وهناك العديد من برامج الترجمة الشهيرة على الكمبيوتر مثل " Terbo C" أو "Quick C" وتلك البرامج تحتوي على بيئة مجمعة تشمل محررا لكتابة البرنامج، و قوائم ذات نوافذ بها أوامر الحفظ والترجمة و الربط و التنفيذ.

    -------------------------------------------------------------------
    Admin
    Admin
    Admin


    المساهمات : 8
    تاريخ التسجيل : 13/03/2009

    دروس في لغة السي C Empty دروس في لغة السي C الفصل الثاني

    مُساهمة  Admin السبت مارس 14, 2009 11:01 am

    الفصل الثاني : مبادئ لغة ال 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).


    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”);
    }
    Admin
    Admin
    Admin


    المساهمات : 8
    تاريخ التسجيل : 13/03/2009

    دروس في لغة السي C Empty دروس في لغة السي C الفصل الثاني

    مُساهمة  Admin السبت مارس 14, 2009 11:05 am

    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






    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 ولأننا لم نخزن في هذين المتغيرين أية بيانات فإن ما نحصل علية ليس إلا بعض المخلفات الموجودة في الذاكرة، وهي بلا معنى على الإطلاق والشكل التالي يوضح مثالا لهذة المخلفات كنتيجة لتشغيل البرنامج


    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

      الوقت/التاريخ الآن هو الجمعة مايو 17, 2024 5:19 am