سفارش تبلیغ
موسسه تبیان
دانشمند قرن
 تعداد کل بازدید : 4346

  بازدید امروز : 0

  بازدید دیروز : 2

دانشمند قرن

 
بارالها ! ... دیده دل هایمان را از آنچه مخالف دوستی توست، کور گردان . [امام سجّاد علیه السلام ـ در دعایش ـ]
 

نویسنده: یحیی بیگی ::: سه شنبه 13/4/85::: ساعت 1:38 عصر


·        مقداردهی اولیه متغیرها


در صورتی که  از پیش مقدار شروع متغیر را بدانیم می‌توانیم به هنگام تعریف، مقدار اولیه مورد نظر را نیز به آن اختصاص دهیم. برای این کار در تعریف متغیرها، به دنبال نام آن، اپراتور جایگزینی "=" را همراه با مقدار اولیه بکار می‌بریم. بعنوان مثال هر یک از روشهای زیر متغیرهای :


a , b , c


 را توصیف کرده و به ترتیب مقادیر 12 , 13 , -25 را به آنها اختصاص می‌دهد.


 





























روش سوم


 


روش دوم


 


روش اول


int a =12 , b =13 , c = -25 ;


 


int a =12 , b =13 ;


 


int a =12 ;


 


 


int c = -25 ;


 


int b =13 ;


 


 


 


 


int c = -25 ;


اما در دستور زیر فقط به b مقدار اولیه داده شده است :


 int a , b = 15 , c ;


در این گونه موارد برای جلوگیری از اشتباه بهتر است متغیرهایی که مقدار اولیه می‌پذیرند، جدا از سایر متغیرها توصیف گردند، مانند مثال زیر:


int a =12 , b =13 , c =25 ;


int d , e , f ;


مثال - چند نمونه دیگر از مقداردهی اولیه متغیرها در زیر نشان داده شده است :


int sum = 5 ;


char Str = " # " ;


float   tmp = 10.2 ;


double p1 = 0.1234E-6 ;


 



·        ثابتهای رشته‌ای


    یک ثابت رشته‌ای ، شامل دنباله‌ای از کاراکترها می‌باشد که در داخل گیومه دوبل قرار داده می‌شوند. مانند نمونه های زیر:


"university" ,  "256"  , " hello world"  ,  "1380-02-06"  ,  "five$" , "p4"


همچنین باید توجه داشت که " " نیز یک رشته تهی (empty) یا null است.


 مثال - ثابت رشته‌ای زیر شامل سه نشانه مخصوص (special character) است که با escape sequence متناظرشان نشان داده شده‌اند:


"\t to continue , press the \"RETURN\" KEY\n"


که در آن نشانه‌ها یا کاراکترهای مخصوص عبارتند از :


    horizontal tab   \t،


 \" گیومه یا quotation mark دوبل که دو بار بکار رفته است ،


 \n  خط جدید یا new line .


کامپایلر بطور اتوماتیک یک کاراکتر (\0) null در پایان هر ثابت رشته‌ای قرار می‌دهد که آخرین کاراکتر در داخل رشته (قبل از بسته شدن گیومه) خواهد بود. این کاراکتر وقتی که رشته نمایش داده شود ، قابل رؤیت نمی‌باشد . به هرحال می‌توان هریک از کاراکترها را در داخل رشته امتحان کرد که آیا کاراکتر null می‌باشد یا نه ؟ در خیلی موارد مشخص ساختن پایان یک رشته بوسیلة یک کاراکتر مخصوص مانند کاراکتر null نیاز به تعیین حداکثر طول برای رشته را از بین می‌برد. بعنوان مثال رشته فوق دارای 38 کاراکتر است که شامل پنج فضای خالی و چهار کاراکتر مخصوص است که با escape sequence معرفی شده‌اند و در پایان کاراکتر  null می‌باشد که انتهای رشته را مشخص می‌سازد .


      یک ثابت حرفی مانند A با یک ثابت رشته‌ای تک‌ حرفی متناظر آن مانند "A" هم‌ارز نمی‌باشد. همچنین به‌خاطر داشته باشید که در جدول کد اسکی، هر کاراکتر دارای یک مقدار عددی می‌باشد، ولی یک رشته تک ‌حرفی این‌طور نیست. در واقع یک رشته تک‌ حرفی متشکل از دو کاراکتر می‌باشد که کاراکتر دوم همان کاراکتر null است که پایان رشته را مشخص می‌سازد.


      باز هم توجه داشته باشید که یک رشته n کاراکتری نیاز به آرایه 1+n  عنصری خواهد داشت. زیرا یک کاراکتر null نیز بطور اتوماتیک بعنوان کاراکتر پایانی در آن قرار داده خواهد شد. برای مثال اگر رشته:


"COMPUTER"


در یک آرایه یک بعدی کاراکتری به نام book ذخیره گردد، خانه اول آن یعنی :


book[0]


شامل کاراکتر C و خانه آخر یعنی :


book[8]


شامل کاراکتر null خواهد بود که معرف پایان رشته است .


      مبحث رشته‌ها و آرایه‌ها و کاربرد آنها در فصل جداگانه‌ای بطور مشروح مورد بحث قرار خواهد گرفت .


 


  ·          اپراتور  cast



   می‌توان تبدیل یک نوع به نوع دیگر را به‌صورت صریح نیز انجام داد. این کار به کمک اپراتور cast انجام می‌گیرد. پس ساختار cast نوع دیگر از تبدیل است. برای این کار کافی است نوع جدید داده مورد نظر را در داخل پرانتز مستقیماً جلوی عبارت قرار دهیم. برای مثال :


k = ( float )2 ;


مقدار صحیح 2 را قبل از اختصاص‌دادن به k به float تبدیل می‌کند و سپس آن را به k اختصاص می‌دهد؛ بنابراین اپراتور cast یک اپراتور unary می‌باشد؛ یعنی فقط یک اپراند دارد.


در موارد متعددی روش casting خیلی مفید است. برای مثال حالت زیر را درنظر بگیرید :


int i =2 , k =3 ;


float h = k / i ;


در اینجا مقدار k / i (یعنی 3 / 2) برابر 1.5 خواهد شد. سپس نتیجه به float یعنی 1.0 تبدیل می‌شود و به h نسبت داده می‌شود. حال اگر بخواهیم مقدار 1.5 که نتیجه واقعی عبارت ریاضی 3/2 است به k و i یا هر دوی آنها را به‌وسیلة cast به float تبدیل کنیم. مثلاً :


( float ) k / i ;


در اینجا به‌طور صریح k به float تبدیل می‌گردد، پس نتیجه برابر 1.5 خواهد شد. عبارت مزبور را می‌توان بصورت :


k / ( float ) i ;     یا    ( float ) k / ( float ) i ;


نیز نوشت که نتیجه باز هم 1.5 می‌گردد . یعنی نتیجه سه روش مزبور هم‌ارز می‌باشد.


از مثالهای بالا نتیجه می‌شود که به کمک casting می‌توان در وسط جمله، نوع داده  را به نوع دیگری تبدیل کرد. بنابراین اپراتور cast به‌عنوان نوع یا type عمل می‌کند. یعنی type conversion است و فرمت آن به این طریق است که type جدید متغیر یا عبارت مورد نظر جلوی آن متغیر یا عبارت، در داخل پرانتز نوشته شود. برای مثال  دستور :


( int )d1+d2


یعنی اول d1 به int تبدیل می‌شود بعد با d2 جمع می‌شود . درحالی که دستور :


(int)(d1+d2)


یعنی نتیجه d1+d2 به int تبدیل می‌شود.


بنابراین فرمت اپراتور cast بصورت زیر است :


(data type) expression


     حال برای آنکه نقش اپراتور cast را بهتر متوجه شوید، به نتیجه و عملکرد دو مجموعه دستورات زیر توجه کنید:

















مثال دوم


 


مثال اول


short int x ;


 


float x ;


printf ("%s\n",(char)x) ;


 


printf ("%d\n",(int)x) ;


 در مثال اول برای متغیر x که از نوع float اعلان شده است، 4 بایت حافظه پیش‌بینی می‌شود. ولی درنتیجه اجرای دستور printf سطر دوم، به دلیل دستور (int)x مقدار آن به نوع int تبدیل می‌گردد و نمایش داده می‌شود؛ بنابراین اگر برای مثال محتوای حافظه به‌صورت :







0.25 E+7


باشد، مقدار 2500000 نمایش داده خواهد شد.


همین‌طور در مثال دوم برای متغیر x که از نوع short int اعلان شده است، دو بایت حافظه پیش‌بینی می‌شود، ولی درنتیجه اجرای دستور printf سطر دوم، به دلیل (char)x مقدار آن به نوع کاراکتر تبدیل می‌گردد و محتوای دو بایت حافظه مزبور به‌صورت یک رشته دوبایتی نمایش داده می‌شود و به همین دلیل است که در فرمت چاپ مقدار متغیر مزبور، از فرمت "%s" که برای رشته می‌باشد، استفاده شده است. حال اگر برای مثال محتوای حافظه مربوط به متغیر x به‌صورت :


1 2 3 4


باشد، موقع نوشتن به‌صورت رشته :


"1 2 3 4"


چاپ می‌شود .


در اینجا به اختصار یادآوری می‌شود که فرمتهای :


"%s", "%c", "%f", "%d"


بترتیب برای متغیرهای از نوع مقادیر صحیح ، اعشار، کاراکتر و رشته بکار برده می‌شود.


                                                                                                  ·        داده ها از نوع   void



   داده از نوع void (تهی) در استاندارد ریچی وجود نداشت و بعد به استاندارد ANSI افزوده شده است. از این نوع داده هدف مهمی مورد نظر است. و آن در مورد معرفی توابعی است که مقداری را برنمی‌گردانند، بلکه فقط عمل خاصی را انجام می‌دهند.


 مثال -  تابعی به نام FF1 که دارای دو آرگون x , y است بصورت زیر تعریف شده است  :


void FF1( x , y )


int x , y ;


 {


   --------------           


   --------------


 }


    قرار گرفتن   voidدر جلوی نام تابع مزبور به این ‌دلیل است که این تابع چیزی را برنمی‌گرداند .


   ·        پیش پردازنده



     پیش‌پردازنده را می‌توان برنامه جداگانه‌ای در نظر گرفت که قبل از کامپایلر واقعی اجرا می‌گردد. هنگامی که شما یک برنامه را کامپایل می‌کنید، پیش‌پردازنده بطور اتوماتیک اجرا می‌گردد . تمام فرامین پیش‌پردازنده با علامت "#" شروع می‌گردند که باید اولین کاراکتر خط باشد. وظیفة اصلی و مهم پیش‌پردازنده آن است که فایل درخواستی ما را آماده ساخته و وارد برنامه ما کند. برخلاف دستورات C که به سمی‌کولون ختم می‌شوند، پایان جملات آن با خط جدید مشخص می‌گردد .


 فرمان  #include


      فرمان #include موجب می‌گردد که کامپایلر همزمان با فایلی که ترجمه می‌کند، یک متن را نیز از فایل دیگر بخواند. این عمل شما را قادر می‌سازد که بتوانید قبل از شروع ترجمه، محتوای یک فایل را در فایل دیگر بریزید (درج کنید)، ضمن اینکه فایل اولیه تغییر نمی‌یابد. این عمل به‌ ویژه در حالتی که بیش از یک فایل مبنا، اطلاعاتی یکسان را سهیم شوند و بکار ببرند، مفید است. با این کار شما به جای اینکه اطلاعات مشترک دو فایل را بصورت دوبله در هر دو منظور نمایید، آن را فقط در یک فایل قرار می‌دهید ، سپس هر موقع آن اطلاعات بوسیلة فایل دوم مورد نیاز باشد ، به‌ طریق مذکور آن را برای استفاده فایل دوم نیز آماده می‌کنید.


     تعریف فرمان #include دارای دو فرم زیر است :














فرم اول


 


فرم دوم


# include < filename >


 


 


# include "filename"


       در فرم اول ، پیش‌پردازنده فقط محل خاصی را که به‌وسیلة عامل مشخص شده است، نگاه می‌کند. این محل جایی است که include file های سیستم، مانند header files برای کتابخانه زمان اجرا یا Runtime Library نگهداری می‌شوند. اگر فرم دوم بکار برده شود، پیش‌پردازنده فهرست یا دایرکتوری را که شامل فایل مبنا است، نگاه می‌کند. اگر فایل include file را در آنجا پیدا نکند، پس از آن مشابه فرم اول، محل خاص مورد نظر را جستجو می‌کند. اسامی  include fileها بر حسب قرارداد، به پسوند "h" ختم می‌شوند .


     حال ببینیم وقتی که پیش‌پردازنده با فرمان # include<stdio.h> مواجه می‌شود، چه پیش‌ می‌آید؟ پیش‌پردازنده دایرکتوری تعریف شده به‌وسیلة سیستم را برای فایلی به نام stdio.h جستجو می‌کند. سپس فرمان #include را با محتوای فایل، جایگزین می‌کند.


برای اینکه بدانید فرمان #include چگونه کار می‌کند، فرض کنید که شما فایلی به نام file1.h دارید که محتوای آن فقط دو دستور زیر است :


int st-no ;


char name ;


سپس در فایل مبنا ، فرمان #include را بصورت زیر بکار می‌برید :


#include "file1.h"


main( )


    {


       -----------


     }


حال وقتی که شما برنامه مزبور را ترجمه می‌کنید، پیش‌پردازنده به جای فرمان #include محتوای فایل مشخص شده را قرار می‌دهد. بنابراین فایل مبنا بصورت زیر درمی‌آید:


int st-no ;


char name ;


main( )


    {


       ------------


    }


 


فرمان  #define


     همانطور که می‌توان با توصیف یا اعلان کردن متغیر، اسمی را به یک محل از حافظه وابسته کرد و به آن محل با آن نام (که همان متغیر مورد نظر است) مراجعه نمود، به همان طریق می‌توان اسمی را به یک مقدار ثابت وابسته کرد و آن را با همان اسم که ثابت سمبولیکی نامیده می‌شود، مشخص نمود و هنگام نیاز، به آن مراجعه کرد. این گونه متغیرها را که معمولاً با حروف برزگ معرفی می‌شوند، ثابتهای سمبولیکی یا symbolic constants گویند و این عمل با دستور #define انجام می‌گیرد .


برای مثال با دستور :


# define book 15


می‌توان در هر جای برنامه بجای 15 از book استفاده نمود . بنابراین دو دستور زیر هم‌ارز می‌باشد :


k = 12 + 15 ;


k = 12 + book ;


هر دو دستور مقدار (12 +15 = 27 ) 27 را به متغیر k نسبت می‌دهند .


براساس دستور define مقدارbook  در حافظه بصورت مقدار ثابت 15 است که در طول برنامه تغییر نمی‌کند. انتخاب نام برای مقادیر ثابت دارای چند فایده مهم است :


      اول آنکه به بعضی مقادیر ثابت می‌توان اسم با معنی اختصاص داد. مثلاً می‌توان عدد معروف «پی» را که تا 4 رقم اعشار معادل 3.1415 است، در آغاز بصورت :


#define Pi 3.1415


تعریف کرد و سپس در سرتاسر برنامه، بجای عدد مزبور در تمام محاسبات وابسته به آن Pi را بکار برد .


      دوم آنکه اگر مجبور باشیم در یک برنامه یک مقدار ثابت طولانی نامانوس را چندین بار بکار بریم، ساده‌تر آن خواهد بود که با دستور #define یک نام مناسب برای آن انتخاب کنیم و بجای ثابت مزبور از آن نام استفاده کنیم .


مثلاً اگر مجبور باشیم همان عدد پی را با 6 رقم اعشار در قسمتهای متعددی از برنامه بکار بریم، این عمل هم پردردسر و هم اشتباه‌زا خواهد بود. لذا بهتر است مثل حالت قبل، یک اسم برای آن انتخاب کنیم .


      سوم آنکه اگر طبیعت مقدار ثابت طوری باشد که در زمانهای مختلف تغییر کند. مثل نرخ مالیات، یا اجرت ساعت کار و یا درصدی که بعنوان سود در بانکها به پس‌اندازهای پولی یا سرمایه‌گذاری تعلق می‌گیرد که همیشه ثابت نیست و ممکن است برحسب مقررات، قوانین و سایر شرایط، مقدار آن عوض شود. در چنین مواردی باید در سرتاسر برنامه مقدار ثابت موردنظر را عوض کنیم. درحالی که اگر توسط دستور #define اسمی برای آن انتخاب کرده باشیم کافی است فقط در همان یک دستور تغییر مورد نظر را اعمال کنیم. مثلاً اگر براساس قوانین، نرخ جدید مالیات بر درآمد برابر دو درصد باشد ، کافی است به آن قبلاً نام TAX اختصاص داده باشیم و با دستور :


#define TAX 0.02


مقدار جدید را جایگزین قبلی نماییم و دیگر نیازی نیست که در داخل برنامه تغییراتی انجام دهیم. از مثال بالا مشخص می‌گردد که یک ثابت سمبولیکی، نامی است که جایگزین دنباله‌ای از کاراکترها می‌گردد. کاراکترها ممکن است یک ثابت عددی، یک ثابت کاراکتری، و یک ثابت رشته‌ای باشند. بنابراین یک ثابت سمبولیکی اجازه می‌دهد که در یک برنامه به جای یک مقدار ثابت (عددی، حرفی یا رشته‌ای) یک اسم قرار گیرد. وقتی که برنامه ترجمه می‌گردد، در هر محلی از برنامه که ثابت سمبولیکی قرار گرفته باشد، دنباله کاراکترهای متناظر آن جایگزین می‌گردد. ثابتهای سمبولیکی معمولاً در آغاز برنامه تعریف می‌گردند و فرم آن بصورت زیر است :


#define   name    text


که در آن، name معرف نام سمبولیک است که معمولاً با حروف بزرگ نوشته می‌شوند؛ text نیز دنباله‌ای از کاراکترها را که باید به نام سمبولیک اختصاص داده شود، معرفی می‌نماید. توجه داشته باشید که text به سمی‌کولون ختم نمی‌گردد. زیرا تعریف ثابت سمبولیک، یک دستور واقعی C نمی‌باشد.


مثال - در زیر، نمونه‌های دیگری از ثابتهای سمبولیکی نشان داده شده است :


#define             Temp              524


#define             Pi                     3.1415


#define             true                  1


#define             false                 0


#define             Name               " payam noor "


#define             Byte_Size         8


 


خصیصه #define که برای تعریف ثابتهای سمبولیک بکار برده می‌شود، یکی از چندین خصیصه‌ای است که در پیش‌پردازنده وجود دارد . 


 
نویسنده: یحیی بیگی ::: سه شنبه 13/4/85::: ساعت 1:29 عصر

فصل اول  کلیات و مفاهیم


                                                                                                                                                                         ·        مقدمه


      زبان C در اوایل دهه 1970 میلادی توسط دنیس ریچی در لابراتوار کمپانی BELL و بعنوان زبان برنامه‌نویسی سیستمها طراحی گردید. این زبان از دو زبان پیشین بنامهای BCPL و B منتج شده است که این دو نیز در همین لابراتوار ساخته شده بودند ..زبان C تا سال 1978 منحصر به استفاده در همین لابراتوار بود تا اینکه توسط دو تن بنامهای ریچی و کرنیه نسخه نهایی این زبان منتشر شد . به سرعت کامپایلرها و مفسرهای متعددی از C توسعه یافت لیکن برای جلوگیری از ناسازگاری های ایجاد شده و نیز حفظ قابلیت حمل زبان ، تعاریف متحدالشکلی توسط استاندارد ANSI ارایه گردید . آنچه در این درس ارایه شده بر اساس همین استاندارد میباشد .


      بطور کلی ویژگیهای مهم زبان C به اختصار به شرح زیر است :


     زبان C ، بطور گسترده ای در دسترس میباشد . کامپایلرهای تجارتی آن برای بیشتر کامپیوترهای شخصی ، مینی کامپیوترها و نیز در mainframe قابل استفاده اند .


       C ، زبانی است همه ‌منظوره ، ساختیافته سطح بالا (مانند زبان پاسکال و فرترن ) و انعطاف‌پذیر که برخی از خصوصیات زبانهای سطح پایین را که معمولاً در اسمبلی یا زبان ماشین موجود است ، نیز دارا می‌باشد . در عین حال C برای کاربردهای ویژه طراحی نشده است و می‌توان از آن در همة زمینه‌ها ، بخصوص به لحاظ نزدیکی آن به زبان ماشین در برنامه‌ نویسی سیستم استفاده کرد . بنابراین C بین زبانهای سطح بالا و سطح پایین قرار دارد و در نتیجه اجازه می‌دهد که برنامه‌ نویس خصوصیات هر دو گروه زبان را بکار برد . از اینرو در بسیاری از کاربردهای مهندسی بطور انحصاری زبان C را بکار می‌برند . ( زبانهای سطح بالا ، دستورالعملهایی شبیه زبان انسان و پردازش فکری او دارند ، همچنین یک دستورالعمل زبان سطح بالا معادل چند دستورالعمل به زبان ماشین است .)


      برنامه‌های نوشته شده به زبان C بطور کلی مستقل از ماشین یا نوع کامپیوتر است و تقریباً تحت کنترل هر سیستم عاملی ، اجرا میگردد .


      کامپایلرهای C معمولاً فشرده و کم ‌حجم می‌باشد و برنامه‌های هدف ایجاد شده بوسیلة آنها در مقایسه با سایر زبانهای برنامه‌سازی سطح بالا ، خیلی کوچک و کارآمد می‌باشد . ( کامپایلر یا مفسر ، خود برنامه ای کامپیوتری است که برنامه سطح بالا را بعنوان یک داده ورودی می پذیرد و برنامه ایجاد شده به زبان ماشین را بعنوان خروجی ایجاد می کند .)


      برنامه‌های C در مقایسه با سایر زبانهای برنامه‌سازی سطح بالا ، به‌راحتی قابل انتقال می‌باشند . دلیل این کار آن است که C خیلی از ویژگیهای وابسته به نوع کامپیوتر را در توابع کتابخانه‌ای خود منظور داشته است . بنابراین هر نسخه از C با مجموعه‌ای از توابع کتابخانه‌ای مخصوص به خود همراه است که براساس خصوصیات و ویژگیهای کامپیوتر میزبان مربوط نوشته شده است . این توابع کتابخانه‌ای تا حدودی استاندارد می‌باشد و معمولاً هر تابع کتابخانه‌ای در نسخه‌های متعدد C بشکل یکسان قابل دسترسی می‌باشد .


       C ، روش برنامه‌سازی ماژولار را پشتیبانی می‌کند . همچنین از نظر عملگرها نیز یک زبان قوی بوده و شامل اپراتورهای گوناگونی برای دستکاری روی داده‌ها در سطح bit می‌باشد .


      بطور کلی جامعیت ، عمومیت ، خوانایی ، سادگی ، کارآیی و پیمانه ای بودن که همگی از مشخصات یک برنامه ایده آل است توسط زبان C قابل پیاده سازی میباشد .


      ویژگیهای فوق موجب شده زبان C بعنوان یکی از قویترین و محبوبترین زبانهای برنامه سازی دنیا مطرح شود .


 



·        کاراکترها (Characters)


     زبان برنامه‌نویسی C مجموعه‌ای خاص از کاراکترها را شناسایی می‌کند. این مجموعه که در حکم مصالح اولیه جهت شکل دادن به اجزا اصلی برنامه هستند عبارتند از :


- حروف بزرگ و کوچک : زبان C برخلاف بعضی زبانها مثلاً پاسکال بین حروف بزرگ و کوچک فرق می‌گذارد . مثلاً FOR با for یکسان نیست .


- ارقام دهدهی : شامل 0 تا 9


- کاراکترهای مخصوص : شامل    ^ % $ # @ ! + - = / * ? < > { } [ ] ~


جای خالی یا  Blank


- کاراکترهای فرمت‌دادن یا Formating Characters ، که عبارتند از :


    کاراکتر خط جدید (New Line) یا \n


    کاراکتر برگشت به عقب (Back Space) یا \b


    کاراکترHorizontal Tab یا  \t


    کاراکترVertical Tab یا \v


    کاراکتر تغذیه فرم (Form Feed) یا \f


     کاراکتر ابتدای سطر یا \r


     کاراکتر تهی یا \0


    و غیره که با کاربرد آنها آشنا خواهید شد .


 



·        متغیرها (Variables)


      متغیرها در زبان C شناسه‌هایی هستند که محلهایی از حافظه را به خود اختصاص می‌دهند. یک متغیر ترکیبی است از ارقام ، حروف و علامت زیرخط )_( . لازم به ذکر است متغیرهایی که با علامت زیر خط شروع می شوند برای متغیرهای داخلی سیستم رزرو شده‌اند. طول هر متغیر در ANSI استاندارد تا 31 کاراکتر است ، ولی در بعضی از کامپایلرهای قدیمی زبان محدود به 8 کاراکتر می‌باشد.


      بعضی از شناسه‌های زبان C کلمات رزرو شده یا کلیدی هستند. یعنی معنی و مفهوم آن از قبل در زبان تعریف و پیش‌بینی شده است. بنابراین نمی‌توانند در برنامه به عنوان شناسه‌های تعریف شده به وسیله برنامه‌نویس بکار برده شوند . متداولترین کلمات کلیدی C به شرح زیر است :


 









































for


goto


else


if


char


float


int


main


enum


register


return


signed


default


while


do


double


sizeof


static


struct


auto


case


short


coutinue


const


union


unsigned


extern


typedef


void


switch


long


break


 


      البته در بعضی از کامپایلرهای زبان C ممکن است کلمات کلیدی دیگری نیز وجود داشته باشد که باید به کتاب راهنمای مربوطه مراجعه شود . توجه داشته باشید که همه کلمات کلیدی با حروف کوچک نوشته می‌شود پس main کلمه کلیدی است درحالی که Main کلمه کلیدی نمی‌باشد زیرا حرف اول آن بزرگ است . همینطور void کلمه کلیدی است اما VOID کلمه کلیدی نیست .


 



 


 ·        علامت توضیح (Comment)



     در زبان C هر عبارتی که بین دو علامت */ و  /*قرار گیرد صرفاً بعنوان توضیحات محسوب می‌گردند . مثلاً اگر بخواهیم در مورد یک دستور توضیح دهیم که چه کاری را انجام می‌دهد در هر جای برنامه که فضای خالی مجاز باشد می‌توان برای توضیح از علامت فوق استفاده کرد. ( در اغلب نسخه ها علامت // هم مجاز است . )


 


مثال - در برنامه زیر از علامت توضیح استفاده شده است :


#include<stdio.h>


main ( )


 {


int j , k ;


for ( j =1 ; j <= 10 ; j+ + )    /* outer loop */


 {


printf("%5d ", j ) ;


for ( k=1; k<=10; k+ +)   /* inner loop */


printf("%5d", j * k ) ;


printf("\n") ;


 }


 }


 


 



                                                                                                  ·        ساختار برنامه C


     همه برنامه‌های C شامل یک یا چندین تابع هستند که یکی از آنها تابع اصلی یا main نامیده می‌شود . هر برنامه فقط یک تابع اصلی دارد و برنامه همیشه با اجرای تابع اصلی آغاز می‌گردد. تعریف توابع دیگر ممکن است قبل یا بعد از تابع اصلی قرار گیرد . بطور کلی می‌توان گفت که هر برنامه به زبان C حداقل دارای اجزای مقدماتی بترتیب زیر است :


 



 


                                  


 


 


 



·        دستورالعملهای اجرایی


     در هر برنامه دستورالعملهای اجرایی باید بعد از تعریف متغیرها درج شوند . دستوری قابلیت اجرا دارد که در پایان آن دستور، یک علامت سمی کولون (;) نوشته شود .


     برای فهم بهتر این موضوع اولین برنامه را ارائه و سپس به تشریح آن می‌پردازیم .


 


مثال - برنامه‌ای بنویسید که مساحت مستطیلی به طول 6 و عرض 3 را محاسبه کرده و چاپ کند.


حل : برنامه مورد نظر بشکل زیر میباشد :


#include<stdio.h>


main( )


{


 int length , width , S ;


 length = 6 ;


 width = 3 ;


 S = length * width ;


 printf ("area = %d", S) ;


}


      پس از اجرای برنامه ، خروجی برنامه بصورت زیر نمایش داده می‌شود :


area = 18


      حال به تشریح برنامه می پردازیم .


      خط اول برنامه اعلان می‌کند که کتابخانه مربوط به توابع ورودی و خروجی برای دستیابی به توابع آن آماده شود. C یکی از زبانهایی است که به لحاظ داشتن توابع توکار (از پیش‌ فرض شده) بسیار غنی می‌باشد. هر مجموعه توابعی که عملیات ویژه‌ای را انجام می‌دهد در یک مجموعه تحت عنوان کتابخانه یا library قرار می‌گیرد . توابعی که عملیات ورودی و خروجی را انجام می‌دهند در کتابخانه‌ای به نام stdio.h قرار دارند که در آن stdio به معنی standard input output (ورودی و خروجی استاندارد) بوده و h نیز معرف header یا عنوان است. تابع printf نیز یکی از توابع خروجی می‌باشد .


      حال به توضیح #include می‌پردازیم . برنامه‌های نوشته شده به زبان C قبل از اینکه به‌وسیله کامپایلر ترجمه گردد در اختیار یک برنامه دیگری تحت عنوان پیش‌پردازنده یا preprocessor قرار می‌گیرد . یکی از کاربردهای اصلی این برنامه آن است که کتابخانه‌های مورد نیاز برنامه منبع را یعنی کتابخانه‌هایی را که توابع بکار رفته در برنامه منبع را شامل است برای استفاده آماده می‌نماید . این کار بوسیله دستور include که در ابتدای آن علامت # و به دنبال آن نام کتابخانه در داخل علامت :


      <> یا      " "


 می‌آید انجام می‌گیرد که اولین عبارت در برنامه بالا همین کار را برای ما انجام می‌دهد .


       در خط بعد تابع اصلی تعریف شده است . پنج خط بعدی متن برنامه اصلی را تشکیل می‌دهند که از پنج دستور ساده تشکیل شده است. پایان هر دستور را سمی کولون (;) مشخص می‌نماید چون متن برنامه بیش از یک دستور است مجموع آنها بعنوان دستور مرکب یا یک بلاک در داخل یک زوج آکولاد قرارداده می‌شود. درواقع هر آکولاد چپ برای کامپایلر C به معنی شروع بلاک و هر آکولاد راست معرف پایان آن است . البته در بعضی مواقع برحسب مورد آکولادها را می‌توان بصورت تودرتو نیز بکار برد .


      اولین دستور در متن برنامه یا همان شروع آکولاد ، توصیف متغیرها است. سه دستور بعدی دستورات محاسباتی و جایگزینی می‌باشند و در آخر نیز دستور خروجی است که در آن تابع printf برای چاپ فرمت ‌دار می‌باشد . اولین آرگومان تابع مذکور متن داخل گیومه می‌باشد که تابع آن را به همان صورت در خروجی چاپ می‌کند البته در بعضی از قسمتهای متن که شامل علامت % باشد مانند %d به کامپایلر اطلاع می‌دهد که اولین متغیر بعد از بسته ‌شدن گیومه که در این مثال S است مقادیر صحیح می‌پذیرد . در اینجا d معرف decimal است و %d فرمت متغیر در خروجی را تعریف می‌کند. در فصلهای بعدی بطور کامل به بحث فرمت متغیرها خواهیم پرداخت .


 مثال - برنامه‌ای بنویسید که طول و عرض مستطیلی را که به ترتیب a و b نامیده می‌شود از طریق دستگاه ورودی استاندارد خوانده و با فراخواندن تابعی به نام rectangle مساحت آن محاسبه گردیده ، سپس طول ، عرض و مساحت در برنامه یا تابع اصلی روی دستگاه استاندارد خروجی ، نمایش داده شود .


حل : برنامه مورد نظر در زیر نشان داده شده است :


# include <stdio . h>


main ( )


{


   int a , b , area ;


   int Rectangle (int a , int b) ;


   scanf ("%d %d" , &a , &b) ;


   area = Rectangle (a , b);


   printf ("\n length = %d width = %d area = %d" , a , b , area) ;


 }


int Rectangle (int a , int b)


{


   int s ;


   s = a * b ;


   return (s) ;


 }


       اگر 5 = a و 4 = b باشد ، خروجی برنامه مذکور بصورت زیر خواهد بود :


length = 5 width = 4 area = 20


توضیح - خط اول تا چهارم مانند برنامه قبلی است . در خط پنجم تابع فرعی Rectangle اعلان شده است که مقدار صحیح برمی‌گرداند و آرگومانهای آن نیز a و b می‌باشند که مقادیر صحیح هستند . در خط ششم ، تابع ورودی استاندارد scanf  بکار رفته است . این تابع که جزء کتابخانه stdio.h است ، اطلاعات را از طریق ورودی استاندارد که صفحه کلید می‌باشد ، دریافت می‌کند . فرمت و مکانیسم کار این گونه توابع بعد تشریح خواهد شد . در اینجا یادآور می‌شویم که فرم کلی تابع مزبور بصورت:


scanf (control string , argl , arg2 , … , argn) ;


است که در آن رشتة کنترلی (control string) که در داخل گیومه (" ")بکار برده می‌شود ، اطلاعات مورد نیاز دربارة فرمت اقلام داده‌های ورودی را شامل است و عناصر :


arg1 , arg2 , ... argn


نیز آرگومانهایی هستند که اقلام داده های ورودی را معرفی می‌نمایند . در این دستور حرف Ampersand ، یعنی "&" اپراتور یا عملگر آدرس است . پس &a و &b اشاره‌گر می‌باشند و معرف آنند که دو مقدار به آدرسهایی از حافظه به نامهای a و b خوانده شود . در رشته کنترلی نیز که در داخل گیومه قرار دارد ، از چپ به راست %d اول معرف فرمت اولین آرگومان یا داده ورودی بعنوان عدد صحیح است و بدنبال آن %d دوم نیز معرف فرمت دومین آرگومان بعنوان عدد صحیح است . درواقع آرگومانها ، معرف اشاره‌گرهایی هستند که آدرس اقلام داده‌ها را در داخل حافظه کامپیوتر مشخص می‌سازند .علامت \n در رشته کنترلی تابع printf ، موجب انتقال به سطر جدید می‌گردد . بنابراین اطلاعات بعدی در سطر جدید نشان داده خواهد شد . 


 
نویسنده: یحیی بیگی ::: جمعه 29/2/85::: ساعت 11:27 عصر
این هم نقشه مدار کنترل گام استپر موتور با گام 8/1 درجه با قابلیت چپ گرد و راست گرد بودن و کنترل سرعت استپ ها ( برای دریافت برنامه ایمیل بزنید  ) 

ybeigi@yahoo.com


 



 


 


 
نویسنده: یحیی بیگی ::: چهارشنبه 27/2/85::: ساعت 5:58 عصر
این اتوموبیل محصول شرکت رنو فرانسه میاشد
قیمت تمام شده توسط شرکت رنو حدود 7 میلیون تومان میباشد
در ایران قیمت هنوز معلومنیست
پروژه فعلا به علت درگیری وزارت صنایع با شرکت رنو پادر هواست
بعد از عفد فرار داد وتایید در ایران شما شاهد ماشینی با قیافه شبیه به دوو سیلو به جای پیکان در خیابانها به صورت وفور خواهید بود



LOGAN

لوگان L90بنزینیموتورK7MK7Jنوع گیربکس دستی کنترل آلودگی Euro IV Euro IVنوع تصویبیLSRAFHLSRAFHگنجایش صندلی 55موتورنوع موتورK7M710K7J710حجم موتور (cc)15981390قطر× کورس (میلی متر)79.5*80.579.5*70تعداد سیلندر44نسبت تراکم9.5:19.5:1تعداد سوپاپها88حداکثرتوان kW EC 64(90)55(75)حداکثر سرعت موتور 5500(rpm)5500(rpm)حداکثر گشتاور EC 128(m-kg)112(m-kg)نوع سوخت انژکتوریپاششیپاششینوع سوختبنزینبنزینمبدل کاتالیست SSگیربکسنوعJH3JH1تعداد دنده های جلو55سرعت 1000 rpm atنسبت دنده 17.247.24نسبت دنده 213.1813.18نسبت دنده 319.3719.37نسبت دنده 426.2126.21نسبت دنده 5 33.9433.94سیستم فرمانقطر دایره دوران10.50قفل فرمان ( دستی) 4.5/3.2سیستم تعلیقجلومک فرسونعقب میله پیچشی H-typeچرخها و لاستیکاستاندارد چرخ (") 6,0J155,50J14اندازه لاستیک ها Fr/Rr 185/65 R 15165/80 R 14ترمزهانوع ترمزXبوش. 8.0 A.B.Sانتخابی / استانداردتوزیع قدرت موتور الکترونیکیانتخابی / استانداردترمز دیسکی جلو238/259ترمز کاسه ای عقب 7"/8"کاراییحداکثر سرعت(kph)1751620-100kph (s) 11"5013"00استانداردهای سوخت 99/100/EC (1/100KM)دی اکسیدکربن (g/km)175164مصرف داخل شهر10.09.2مصرف خارج شهر5.85.5ترکیبی 7.36.8ظرفیتظرفیت مخزن سوخت (I) 5050وزن (کیلوگرم) AC اختیاریوزن خودرو بدون بار980975وزن روی اکسل جلو585580وزن روی اکسل عقب395395حداکثر وزن خودرو با بار 15401535ابعاد ( میلی متر)فاصله بین دو محور چرخهای عقب و جلو2630طول کلی4250تاقنمای جلو777تاقنمای عقب843فاصله بین مرکز چرخهای جلو از یکدیگر1466فاصله بین مرکز چرخهای عقب از یکدیگر 1456حجم صندوق عقب ( لیتر) 510510