صفحه اصلي | فهرست مقالات | مطالب جديد | خبرنامه | نقشه سايت | طراحي وب | نسخه جديد سايت | جستجو | نسخه جديد سايت | پرسش و پاسخ

صفحه اصلي | فهرست مقالات | مطالب جديد

 
بخش ویژه

هک رشد

تکنیک های توسعه و رشد سریع کسب و کار و استارتاپ ها


دسته ها

  • هک رشد هکر رشد استارتاپ
  • ایمنی صنعتی
  • شش سیگما
  • شبکه های هوشمند توزیع برق
  • فیزیک
  • انرژی های تجدیدپذیر (نو )
  • نرم افزار مطلب Matlab
  • مهندسی کامپیوتر
  • متفرقه
  • ماشین - اخبار
  • طراحی سایت و سئو
  • ماشین - معرفی شرکتها
  • ماشین - معرفی ماشين سازان
  • ماشین - معرفی ماشين آْلات
  • برق-دانش آموزان
  • برق-مهندسی پزشکی
  • برق-فناوری اطلاعات
  • برق-مخابرات
  • برق-کنترل
  • برق-قدرت
  • برق-اتوماسیون
  • برق-الکترونیک
  • برق-عمومی
  • برق - هوش مصنوعی
  • ارتباط با صنعت2
  • سايت هاي مرتبط
  • احمد زيني هكر رشد
  • هك رشد
  • فيلدباس و اتوماسيون
  • شبكه فيزيك هوپا
  • كارگاه هواشناسي
  • مهندسي برق
  • مجله در مورد سنسورها
  • www.control.com
  • temperatures.com
  • مجله سلامت و زيبايي

  • زبان برنامه نويسي سي (C)

    زبان برنامه نويسي سي (C)

    برای کسانی که از یک زبان سطح بالا مانند pascal یا basic به سراغ سی میایند ممکن است جمله "این زبان سطح پایین است " برایشان چندان با معنی نباشد. حقیقتا زبان سی فقط مقداری از یک اسمبلر بیشتر دارد و البته به همراه تعدادی قابلیت سطح بالا ، در سی مانند اسمبلی همه چیز به عهده خودتان است.


    زبان برنامه نويسي سي (C)

    img/daneshnameh_up/c/c6/compics0005.jpg


    براي كساني كه از يك زبان سطح بالا مانند pascal يا basic به سراغ سي ميايند ممكن است جمله "اين زبان سطح پايين است " برايشان چندان با معني نباشد. حقيقتا زبان سي فقط مقداري از يك اسمبلر بيشتر دارد و البته به همراه تعدادي قابليت سطح بالا ، در سي مانند اسمبلي همه چيز به عهده خودتان است.دليلي كه بخاطر آن سي هنوز وجود دارد سرعت آن است ! سرعت اجراي كد برنامه شما براي C يعني همه چيز ! البته اين بدان معني نيست كه سرعت برنامه نويسي براي شما افزايش ميابد درواقع C براي اينكه برنامه شما را با تمام سرعت اجرا كند از تمام قابليتهايي كه به نوعي باعث ميشود بتوان به برنامه شما SAFE گفت چشم پوشي كرده است .ميتوان زبان C را به ماشين مسابقه ايي تشبيه كرد كه كمربند ايمني ندارد ! با اين ماشين ميتوان با حد اكثر سرعت حركت كرد ولي اگر تصادفي رخ دهد... !C زبان برنامه نويسي سيستم است: ويندوز 95 - 96 - NT و UNIX نيز با كمك اين زبان طراحي شده اند. اغلب هم ديده ايم كه در اين سيستم عاملها C اولين زباني است كه پشتيباني ميشود. يكي از مسائلي كه شما احتمالا از آن خبر داريد آن است كه اسمبلر Portable نيست . حتي آنجا كه يك برنامه به زبان پاسكال بهتر عمل ميكند برنامه نوشته شده با اسمبلر اجرا نميشود. اگر بگوييم كه C چيزي بيشتر از يك اسمبلر نيست پس بايد بگوييم كه اصلا Portable هم نيست ، اما اين موضوع به شيوه طراحي C بر ميگردد. در اين مورد زبان C طوري طراحي شده است كه به هيچ عنوان مشكلي نخواهد داشت . البته منظور اين نيست كه برنامه اي كه تحت داس با سي نوشته شده است تحت لينوكس هم كار خواهد كرد بلكه بحث در مورد سيستم سخت افزاري و پردازنده است.زبان C داراي يك شهرت ترسناك! به نام "Write Only" است . اين بدين معني است كه شما ميتوانيد كدي بنويسيد كه قابل خواندن و اجرا شدن نباشد (نه به اين معني كه خطاي كامپايل يا لينكر داشته باشد).تاريخچه زبان سي:- در سال 1972 توسط برايان كرناين ( Brian Kernighan ) و دنيس ريچي ( Dennis Ritchie ) در AT&T Bell Labs اختراع شد.- در سال 1983 موسسه استاندارد آمريكا شروع به استانهدارد سازي اين زبان كرد.- در سال 1989 كار استاندارد سازي زبان سي توسط سازمان جهاني استاندارد ادامه ادامه پيدا كرد.- در سال 1990 كار استاندارد سازي به پايان رسيد و امروزه آن را به نام C استاندارد مي شناسيم.- هر چيزي قبل از اين C را به نام K&R C مي شناسيم.سي اولين بار توسط برايان كرناين و دنيس ريچي در شركت AT&T اختراع شد . موضوع از آنجا شروع شد كه سعي كردند يك بازي به نام "asteroids" را بر روي مين فريم هاي شركت AT&T اجرا كنند ولي متاسفانه كارايي مين فريم باعث شد كه نتوانند آنچه را كه ميخواهند به اجرا در بياورند. بعد ها آنها با استفاده از قدرت كامپيوتر هاي 386 و تقريبا كمك 100 نفر كاربر متوجه شدند كه به اندازه كافي كنترل بر روي فضانورد موجود در بازي ندارند. فضانوردها معمولا به محض اينكه از كنار يك سياره رد ميشدند از بين ميرفتند!اين قضيه تقريبا جنبه شخصي پيدا كرد تا اينكه آنها تصميم به كد نويسي مجدد بازي بر روي يك سيستم DEC PDP-7 كه در شركت بلا استفاده مانده بود ، گرفتند متاسفانه PDP-7 هيچ سيستم عاملي نداشت بنابر اين آنها يك سيستم عامل هم طراحي كردند.پروژه طراحي سيستم عامل آنقدر عظيم شد كه عملا باعث فراموشي بازي astroids گرديد . بعدها تصميم بر آن شد كه اين سيستم عامل را براي يك DEC PDP-11 آماده كنند ولي اين كار واقعا كار سخت و مشكلي بود چرا كه تمام كد با دست و بدون كمك هرنوع اسمبلري به زبان ماشين نوشته شده بود.مجددا تصميم گيري شد كه سيستم عامل را دوباره با كمك يك زبان سطح بالا كد نويسي كنند بنابراين اين برنامه بين ماشين هاي مختلف قابليت portablity بيشتري پيدا ميكرد. تنها چيز مورد نياز طراحي يك كامپايلر براي هر ماشين جديد و نهايتا كامپايل مجدد كد در ماشين جديد بود.زباني كه در آن زمان براي اين منظور طراحي شد B نام داشت . اما اين زبان براي PDP-7 طراحي شده بود و امكانات آن به اندازه اي نبود كه بتواند از Instruction Set ماشين PDP-11 استفاده كند در نتيجه زبان C اختراع شد.Instruction Set مجموعه دستوراتي است كه توسط واحد پردازش مركزي سيستم قابل اجرا است به عنوان مثال تعدادي از دستورات موجود در instruction set يك PIC16Fxxx عبارتند از :

    MOVLWADDLWSETB....


    تقريبا همان دستورات اسمبلي!STANDARDIZATION :C كم كم داشت بسيار مشهور ميشد و با رشد سريع برنامه نويسان در اوايل دهه 1980 هزاران نفر به كمك آن مشغول به برنامه نويسي شدند . حالا زمان آن رسيده بود كه قواعد اين زبان استاندارد شود.ANSI :در آمريكا مسوليت استاندارد سازي زبانها به عهده موسسه استاندارد ايالات آمريكا ( ANSI ) ميباشد . نام ANSI در C معرف آن است كه اين نسخه از زبان C توسط كميته اي وابسته به ANSI استاندارد سازي شده است . اولين استاندارد ANSI ، X3J11 نام داشت . امروزه استاندارد ANSI براي C ض X3.15901989 ميباشد .ISO :در عرصه جهاني سازمان استاندارد جهاني ( ISO ) مسوليت استاندارد سازي زبانهاي كامپيوتري را بر عهدا دارد. ISO يك كميته متخصص JTC1/SC22/WG14 را براي برسي استاندارد X3J11 تشكيل داد. در حال حاظر استاندارد ISO براي C ض ISO 9889:1990 ميباشد كه بسيار شبيه و هماهنگ با X3.159 است.در بين استاندارد هاي مختلف تفاوتي در مورد زبان و قواعد آن وجود ندارد و


    تنها اختلاف در مورد قالب بندي و موارد اين چنيني است .در آخر زبان C كه امروزه از آن استفاده ميكنيم ISO Standard C است كه آن را Standard C ميشناسند و آن چيزي را كه Kernighan و Dennis طراحي كرده بودند K&R C ميشناسيم.Standard C در مقابل K&R C :- قابليت برسي نوع داده اضافه شد.- محاسبات مميز شناور اضافه شد.- كتابخانه استاندارد براي C طراحي شد.- قابليت هاي جديدي اضافه گرديد- امروزه تنها انتخابStandard C است.- بسياري از كامپايلر هاي جديد سي از Standard C استفاده ميكنند.- از اين به بعد در مباحث درسي منظور ما از سي همان سي استاندارد است. زبان C بسياري از محاسن خود را مديون مراحل استاندارد سازي است . سي كه امروزه از آن استفاده ميكنيم با آنچه در گذشته بوده بسيار فرق دارد. در K&R C هيچ مكانيزم و روشي براي برسي نوع داده پارامترهايي كه به توابع ارسال ميگردد وجود نداشت بنابراين اگر شما به عنوان يك برنامه نويس ميخواستيد يك تابع خاص از زبان سي را CALL كنيد مسئوليت خواندن دقيق راهنما و ارسال صحيح پارامتر ها به عهده خودتان بود و كامپايلر هيچ كمكي در اين مورد به شما نميكرد. البته يك برنامه به نام lint در آن زمان براي انجام اين كار طراحي شد.محاسبات مميز شناور در K&R C بيشتر شبيه به جوك بود تا واقعيت ! در تمام محاسبات از نوع داده double استفاده ميشد. با وجود اينكه نوع ساده اي از مميز شناور به نام float وجود داشت اما چون براي محاسبات اعداد float اول بايد آنها را به double تبديل ميكرديم و بعد دوباره به float ، انجام اين گونه محاسبات بسيار كند بود.(n9 اگرچه يك كتابخانه همراه زبان K&R C وجود داشت اما هيچ استانداردي در مورد اينكه اين كتابخانه سامل چه توابعي است وجود نداشت . در بسياري موارد ممكن يك تابع خاص نامهاي متفاوتي داشته باشد ! يا حتي به روشهاي متفاوتي از هم كار ميكردند .يك برنامه به زبان سي:در اينجا فقط ميخواهيم يك كليت از نحوه برنامه نويسي در سي را بيان كنيم.

    1. include /* comment */int main(void){printf("Hellon");printf("Welcome to the Course! n");return 0;}
    2. includeاين يك دستور پيش پردازنده است . به كمك اين دستور محتويات يك فايل خاص به برنامه شما اضافه ميشود بنابراين شما ميتوانيد از توابع و ... موجود در آن استفاده كنيد. stdio مخفف نام Standard Input and Output ميباشد و همانطور كه از نامش پيداست حاوي توابع مربوط به ورودي و خروجي ميباشد.پسوند h. نشان دهنده آن است كه اين فايل يك فايل سر باره ( Header ) است نه يك فايل سورس ( فايلهاي سورس داراي پسوند c. هستند. ) در اين باره بيشتر توضيح داده خواهد شد.Commentsتوضيحات در برنامه بين */ و /* قرار ميگيرند و هر تعداد خط كه بين اين دو قرار گيرند از نظر كامپايلر مفهوم نخواهند داشت . نكته : اگر توضيحات شما يك خطي است به كمك // ميتوانيد توضيحات خود را در برنامه اضافه كنيد :
    printf("Hello"); // comment


    mainمهمترين تابع در سي main ميباشد. اين تابع نقطه اي كه اجراي برنامه شما از آنجا شروع ميشود را مشخص ميكند . در واقع اگر شما اين تابع را در برنامه تان ننويسيد برنامه شما اصلا اجرا نميشود ( شروع برنامه شما كجاست ؟! ) و صد البته برنامه شما كامپايل هم نخواهد شد.آكولاد Brace در زبان سي از اكولاد باز "}" به معني شروع "Begin" و آكولاد بسته "{" به معني "End" ميباشد . اين روش نسبت به پاسكال هم ساده تر است و هم در آينده خواهند كد برنامه را سهل تر ميكند.nترتيب دو كاراكتر و n در سي ايجاد يك كد ميكند ( اين كد ها در مباحث بعدي مطرح شده اند ) كد n به معني "برو به ابتداي خط بعد" است . returnاين دستور در اين مثال باعث ميگردد كه مقدار 0 به سيستم عامل برگردانده شود و اجراي برنامه پايان يابد . اينكه سيستم عامل چگونه از اين اطلاعات استفاده خواهد كرد به خودش مربوط ميگردد.!به عنوان مثال MS-DOS اين مقدار را در متغير ERRORLEVEL و UNIX آن را در يك متغير موقت ?$ ذخيره ميكند. تا به حال عرف بر آن بوده است كه 0 به معني عدم رخداد خطا تلقي ميگردد و هر مقداري مانند 1و2و3و... نشاندهنده يك كد خطا ميباشد. تمام سيستم عاملها مقادير به بزرگي 255 را پشتيباني ميكنند و بعضي ديگر تا 65535 ! البته اگر Portable بودن برنامه تان برايتان مهم است بهتر است از مقادير بين 0 تا 255 استفاده كنيد.قالب زبان سي:- هر دستور با يك سميكالن (‌;‌ ) ختم ميشود.- فضاهاي خالي كه قبل يا بين دستورها قرار ميگيرد از طرف كامپايلر ناديده گرفته ميشود.- زبان سي به بزرگي و كوچكي حروف تايپ شده حساس است (Case sensitive) تمامي كلمات كليدي (Keyword) و توابع كتابخانه اي استاندارد در سي حرف كوچك هستند.- عبارات رشته اي (Strings) در بين دو علامت نقل قول - كوتيشن - ("......") قرار ميگيرند.- مفهوم خط بعد توسط n به كامپايلر سي فهمانده ميگردد. ( مثلا در دستور printf )- رفتار شانسيسميكالن :سميكالنها در سي بسيار مهم هستند. آنها دستورات را از هم متمايز ميكنند و به كامپايلر سي ميفهمانند كه چه زمان يك دستور به پايان رسيده و دستور بعدي شروع شده است. اگر شما فراموش كنيد كه در انتهاي يك دستور علامت سميكالن را قرار دهيد كامپايلر از برنامه شما خطا ميگيرد.قالب آزاد:زبان سي يك زبان آزاد در قالب بندي است يعني شما ميتوانيد كه كل برنامه تان را در يك خط بنويسيد فقط كافي است كه انتهاي هر دستور يك سميكالن بگذاريد و اين دليل اجباري بودن سميكالن است . همچنين همانطور كه گفتيم هرگونه tab يا فضاي خالي بين دستورات ناديده گرفته ميشود و فقط براي فرم دادن برنامه است.نكته : بهتر است شما هم از الگويي كه براي برنامه نويسي در اين مباحث استفاده شده استفاده كنيد تا برنامه تان در آينده خوانا تر باشد .بزرگي و كوچكي حروف :زبان سي يك زبان حساس به بزرگي و كوچكي حروف است يعني int با Int يا INT يا ... فرق دارد . به عنوان مثال شما ميتوانيد يك متغير به نام InT از نوع int داشته باشيد. تمامي كلمات كليدي و توابع كتابخانه اي استاندارد در سي حرف كوچك هستند. انواع داده اي در ادامه بحث خواهند شد.رفتار شانسي :اگر به هر دليلي دستور return در تابع main قرار نگيرد رفتار برنامه در زمان بازگشت به سيستم عامل مشخص نميباشد يعني هر بار يك مقدار شانسي به سيستم عامل تحويل داده ميشود كه اين مقدار ميتواند 0 به معناي خروج موفق و بدون خطا يا هر مقدار عددي ديگر به عنوان رخداد خطا باشد.متغير ها :- هر متغيري قبل از استفاده بايد



    تعريف شده باشد . در سي استاندارد تعريف متغير دقيقا بعد از آكولاد باز } امكان پذير است ولي در ورژن هاي بعد و خصوصا ويژوال سي اين تعريف ميتواند در هر كجاي برنامه صورت گيرد.- كاراكترهاي مورد قبول براي نامگذاري متغير ها ميتواند حرف ، عدد و "_" باشد.- كاراكتر اول در نام يك متغير نميتواند عدد باشد.- 31 كاراكتر اول در نام متغير محلي ( Local ) از طرف كامپايلر سي براي تشخيص نام متغير استفاده ميگردد و مابقي آن ناديده گرفته ميشود.- در برخي از نسخه هاي سي تا 6 كاراكتر اول در نام يك متغير سرتاسري ( Global ) براي تشخيص آن به كار ميرود اين مساله در مورد نام توابع نيز وجود دارد.- حروف كوچك و بزرگ در نام گذاري متغيرها و يا توابع آنها را از هم متمايز ميكند.تعريف متغير ها :در زبان سي ، تمامي متغير ها قبل از استفاده بايد بعريف شده باشند.( دليل اين كار قبلا توضيح داده شده است ) البته اين هيچ شباهتي با زبان فرترن ندارد زيرا در اين زبان هرگاه كامپايلر به نام متغيري برخورد كند كه قبلا برخورد نكرده است آن را همانجا تعريف كرده و نوع آن را بر اساس نام متغير تعيين ميكند. در زبان سي شما بايد هر متغيري را قبل از استفاده تعريف كنيد و نوع آن را مشخ كرده و در صورت نياز آن را مقدار دهي اوليه كنيد.نام گذاري :همانطور كه گفته شد كاراكترهاي مورد قبول براي نامگذاري متغير ها ميتواند حرف ، عدد و "_" باشد. اولين كاراكتر نام يك متغير يا تابع ميتواند حرف يا خط زير باشد اگرچه استاندارد سي پيشنهاد ميكند كه از خط زير به عنوان كاراكتر اول استفاده نكنيد.بنابر اين نامهاي "temp_in_celsius" يا "index32" نامهاي قابل قبول و "32index" يا "temp$celsius" نامهاي غير قابل قبول هستند.طبق توضيح داده شده دقت كنيد كه در نامگذاري متغير ها اختلاف نام آنها در 31 كاراكتر اول آنها باشد. حروف بزرگ :حروف بزرگ ممكن است بر طبق تصميم شما در نام گذاري يك متغير استفاده شود . معمولا برنامه نويسان براي خود داري از استفاده از "_" در نام متغير از حروف بزرگ استفاده ميكنند بنابر اين نام "temp_in_celsius" به صورت "TempInCelsius" در خواهد آمد.امروزه اين روش نام گذاري بين برنامه نويسان متداول شده است و استفاده از خط زير تقريبا به فراموشي سپرده شده است.دستورات printf و scanf - printf مقادير عددي صحيح را زماني كه از كاراكتر فرمت i% استفاده شود در روي مانيتور چاپ ميكند. - scanf مقادير عددي صحيح را زماني كه از كاراكتر فرمت i% استفاده شود از ورودي ( كاربر - صفحه كليد ) ميخواند.- "&" در دستور scanf بسيار مهم مي باشد — مفهوم و كاربرد آن جلو تر گفته خواهد شد . — چنانچه فراموش شود برنامه شما شديدا با اشكال روبرو خواهد شد !!- "&" در دستور printf لازم نيست زيرا مقدار فعلي يك متغير در اين دستور مورد استفاده قرار ميگيرد.printf : اين دستور عبارات مورد نظر شما را در خروجي چاپ ميكند و به عنوان مثال چنانچه به كاراكتر فرمت i% برخورد كند مقدار عددي متغير متناظر با آن را چاپ ميكند. با اين مورد از مثال قبل آشنا هستيد .scanf : همانطور كه گفته شد اين دستور از صفحه كليد يك مقدار ميخواند. به عنوان مثال زماني كه به كاراكتر فرمت i% برخورد ميكند منتظر دريافت يك مقدار عددي از صفحه كليد ميماند. & :همانطور كه گفتيم عملگر "&" در دستور scanf بسيار مهم مي باشد . اين عملگر به دستور scanf قابليت تغيير مقدار ذخيره شده در متغير مربوطه اش را ميدهد.چنانچه فراموش كنيد كه اين عملگر را قبل از نام متغير قرار دهيد سي نميتواند مقدار موجود در متغير را تغيير دهد و بد تر از آن اگر اين متغير را مقدار دهي اوليه نكرده باشد در آنصورت هر بار يك مقدار شانسي در آن خواهد بود و طبعا باعث گيج شدن شما خواهد شد.از آنجاييكه دستور printf نيازي به تغيير مقدار ذخيره شده در متغير را ندارد بنابر اين نيازي هم به استفاده از عملگر & قبل از نام متغير در آن نيست . بنابر اين اگر به عنوان مثال تا قبل از اجراي دستور زير در متغير j عدد 15 ذخيره شده باشد بازهم همان مقدار ذخيره خواهد بود .
    prinf( " %i " , j );


    انواع عددي صحيح در سي - زبان سي انواع مختلفي از اعداد صحيح را پشتيباني ميكند. - حداكثر و حداقل مقادير قابل ذخيره سازي در هر نوع داده اي در فايل "limits.h" تعريف شده اند.نوع داده كاراكتر فرمت تعداد بايت حداقل مقدار حداكثر مقدار
    CHAR_MAX CHAR_MIN 1 %c charSCHAR_MAX SCHAR_MIN 1 %c signed charUCHAR_MAX 0 1 %c unsigned charSHRT_MAX SHRT_MIN 2 %hi short (int)USHRT_MAX 0 2 %hu unsigned shortINT_MAX INT_MIN 2 or 4 %i intUINT_MAX 0 2 or 4 %u unsigned intLONG_MAX LONG_MIN 4 %li long (int)ULONG_MAX 0 4 %lu unsigned long



    limits.h :اين دومين فايل سرباره استانداردي است كه تا به حال ديده ايم. اين فايل شامل تعريف مقادير عددي ثابتي است كه حداقل و حداكثر اندازه انواع متفاوت عددي صحيح را در خود ذخيره كرده اند. اين فايل هم يك فايل متني است و محتويات آن با هر اديتوري حتي notepad قابل رويت است . انواع اعداد صحيح :زبان سي انواع عددي در اندازه هاي مختلف را پشتيباني ميكند. كلمات short و long نشان دهنده ميزان حافظه مورد نياز و تخصيص داده شده براي هر نوع داده است . اين به دليل وسواس سي در ميزان استفاده از حافظه است بنابر اين به شما به عنوان برنامه نويس امكان ميدهد بسته به كاري كه ميخواهيد با متغير انجام دهيد و ميزان حافظه اي كه احتياج دارد نوع مناسب را براي آن انتخاب كنيد و از تخصيص حافظه اي كه بلا استفاده ميماند خود داري كنيد.مثلا فرض كنيد كه در برنامه خود ميخواهيد يك حلقه شمارش ايجاد كنيد كه از 1 تا 800 شمارش كند در اين صورت نيازي به تعريف متغير مربوطه از نوع long نيست و بهتر است آن را از نوع short تعريف كنيد.SHRT_MAX يا LONG_MAX درواقع مقادير ثابتي هستند كه حداكثر مقدار عددي قابل ذخيره در متغير از نوع short و long را در خود نگه ميدارند مثلا براي short حداكثر مقدار 32,767 و براي long حداكثر مقدار 2,147,483,647 قابل ذخيره سازي است . البته اجباري نيست كه در ماشينهاي متفاوت اين مقادير يكسان باشد و براي رفع اين مشكل ، سي راه حل هايي دارد كه در آينده گفته خواهد شد.نكته مهم و قابل توجه در اينجا آن است كه تعداد بايت نوع داده int برابر 2 يا 4 ميتواند باشد بنابراين در حالت كلي نميتوانيم مشخص كنيم كه در يك متغير عددي صحيح int حداكثر مقدار 32 هزار قرار ميگيرد ويا مقدار 2 هزار ميليون ! به همين دليل برنامه هايي كه واقعا ميخواهند portable باشند هرگز از نوع عددي int استفاده نميكنند بلكه از long يا short استفاده ميكنند. البته اغلب ماشينها خصوصا PC ها طول 4 بايت را براي نوع عددي int در نظر گرفته اند.unsigned :اين كلمه كليدي باعث ميشود تا تمام بيتهاي يك متغير از اين نوع عددي ، براي ذخيره سازي عدد استفاده شود و طبعا بيت علامت ( براي اعداد منفي ) نخواهيم داشت . در اين نوع داده نميتوان مقادير منفي را ذخيره كرد ، فقط اعداد مثبت و عدد صفر !char :در سي هيچ نوع داده اي براي ذخيره رشته هاي كاراكتري وجود ندارد البته در ++C اين مشكل با بوجود آمدن كلاس CString رفع شده است ولي فعلا به آن نمي پردازيم.در نوع داده char تنها ميتوان يك كاراكتر ذخيره كرد و براي ذخيره سازي رشته هاي كاراكتري بايد هر كاراكتر را در يك عنصر آرايه اي از نوع char ذخيره كرد.ih% :كاراكتر h در موارد فوق بيانگر half يا نيمه است زيرا معمولا short داراي نصف اندازه نوع داده int است ( از نظر تعداد بايتها در يك ماشين كه طول int در آن 4 است ) انواع عددي حقيقي در سي - مانند اعداد صحيح ، اعداد حقيقي هم انواع مختلفي دارند. - مقادير حداكثر و حداقل در فايل float.h تعريف شده اند.مثل قبل :نوع داده كاراكتر فرمت تعداد بايت حداقل مقدار حداكثر مقدار
    FLT_MAX FLT_MIN 4 %g %e %f floatDBL_MAX DBL_MIN 8 %lg %le %lf doaubleLDBL_MAX LDBL_MIN 10 %Lg %Le %Lf long double
    float.h اين سومين فايل سرباره استاندارد سي است كه تا به حال ديده ايم . اين فايل علاوه بر مقادير ثابت كمينه و بيشينه اعداد مميز شناور محتوي چيزهاي با ارزش ديگري هم است ازجمله ميزان دقت و خطاي هر يك از سه نوع مذكور.float اين نوع داده كوچكترين نوع عددي از انواع عددي حقيقي در سي است . محاسبات به كمك اين نوع سريع تر است ولي از دقت كمتري برخوردار است همچنين براي اعداد اعشاري تا 6 رقم اعشار مناسب ميباشد. در حالت كلي بزرگترين و كوچكترين عدد قابل ذخيره توسط اين نوع عددي به ترتيب 10 به توان مثبت 38 و 10 به توان منفي 38 است.doubleاين نوع عددي درواقع نوع ميانه در بين سه نوع اشاره شده است محاسبات كند تر از نوع قبل ولي قابل اطمينان تر است . ميتوان تا 12 رقم اعشار به كمك اين نوع عددي دقت داشت . چون فضاي بيشتري براي ذخيره سازي اعداد دارد طبعا اعداد بزرگتري هم ميتواند ذخيره كند ( 10 به توان مثبت 308 يا حتي مثبت 1000 )long doubleاين نوع عددي بزرگترين نوع عددي است كه سي ميتواند آن را هندل كند و البته كند ترين و مطمئن ترين !! به كمك اين نوع ميتوان اعداد را تا 18 رقم اعشار محاسبه كرد بدون اينكه به هيچ حقه و روش رياضي خاصي براي شبيه سازي اين عدد بزرگ نياز باشد. برخي از پياده سازي هاي سي امكان ذخيره سازي اعداد به بزرگي 10 به توان مثبت 4000 را ميدهند.Constants- ثابتها در سي براي خودشان نوع داده دارند.- اعدادي كه در آنها كاراكترهاي "." يا "e" به كار رفته باشند به عنوان عدد double در نظر گرفته ميشوند.- اگر ميخواهيد صراحتا بگوييد كه عددتان float است بايد در انتهاي آن يك كاراكتر F قرار دهيد مانند : 3.5F يا 1e-7F- براي اعداد long double يك L قرارداده ميشود.- هر عددي كه حداقل شامل يكي از كاراكترهاي "." يا "e" يا "F" نباشد int در نظر گرفته خواهد شد.- اگر يك عدد int در نظر گرفته شود و بزرگي عدد چنان باشد كه از محدوده int خارج گردد بعضي از كامپايلرها بصورت اتوماتيك آن را long int در نظر ميگيرند.- اگر ميخواهيد كه صراحتا بگوييد كه عددتان يك long int است در انتهاي عدد يك L قرار دهيد مانند 9000000Lثابتهاوقتي كه يك متغير تعريف ميگردد قطعا يك نوع هم براي آن در نظر گرفته ميشود. اين نوع باعث ميگردد كه كامپايلر بداند كه اين متغير چه فضايي از حافظه اشغال ميكند و ضمنا چگونه بايد با آن برخورد كند. به طور مشابه وقتي كه يك "ثابت" تعريف ميگردد كامپايلر براي آن يك نوع داده در نظر ميگيرد فقط يك تفاوت داريم و آنهم اينكه در مورد متغير ها برنامه نويس صراحتا نوع داده اي متغير را تعيين ميكند حال اينكه در مورد ثابتها هميشه اينطور نيست. قوانين تعيين نوع داده براي "ثابتها" در بالا گفته شده است . ميبينيد كه تنها نبود "." به كامپايلر ميگويد كه عدد از نوع int است . اما كافي است شما اينگونه بنويسيد ".120" تا كامپايلر آن را بصورت "120.0" ديده و double برايش درنظر بگيرد.عملگر ها در زبان سي در زبان سي مجموعه عملگر هاي زير را داريم :- عملگرهاي حسابي- عملگرهاي casting ( كه از هولمون جلو جلو در موردش صحبت كرديم. )- عملگرهاي افزايش و كاهش يك واحد- عملگرهاي دستكاري بيتها ( Bitwise )- عملگرهاي مقايسه اي- عملگرهاي مقداردهي- عملگر sizeof- عملگرهاي شرطي


     

     

    منوي اصلي
  • صفحه اصلي
  • فهرست مقالات
  • مطالب جديد
  • خبرنامه
  • نقشه سايت
  • طراحي وب
  • نسخه جديد سايت
  • جستجو
  • نسخه جديد سايت
  • پرسش و پاسخ
  •  

    مطالب جديد
     

         
    Copyright © 2003 - 2017 by AutoIR iranresearch , All rights reserved. www.iranresearch.com www.iranresearch.ir www.autoir.ir Designed by Ahmad Zeini
    کلیه حقوق مادی و معنوی این سایت autoir.ir می باشد