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

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

1-تعین نیازهای برنامه
2-تحلیل برنامه
3-طراحی الگوریتم برنامه
4-پیاده سازی الگوریتم
5-تست و کنترل برنامه
6-ذخیره برنامه

----------------------------------------------------------------------------------
یک مثال : فرض کنید از ما می خواهند برنامه ای بنویسیم تا میانگین دو عدد را پیدا کند ؟

مراحلی که طی می کنیم به شرح زیر است :
ابتدا پیش خود کمی فکر می کنیم و به این نتیجه می رسیم که برای اینکه روی این دو عدد عملیاتی انجام دهیم لازم است این برای این دو عدد حافظه ای را در نظر بگیریم (این دو عدد را داخل متغیر هایی از جنس آن عدد قرار دهیم ).سپس باید روی این دو عمل اعمال محاسباتی خود را انجام دهیم (که در این مثال باید آن دو را با هم جمع کرد و تقسیم بر 2 کرد ). اکنون نوبت این است که جواب بدست آمده برای این محاسبه در حافظه ذخیره شود تا بتوان از آن استفاده کرد (پس باید یک متغیر دیگر از نوع جواب محاسبات انجام شده تعریف کرد و این نتیجه را درون آن متغیر ریخت ... سپس بر طبق دستور با حافظه خود(متغیر سوم ) به دلخواه رفتار می کنیم ..(یعنی می توان آن را چاپ کرد .. وارد برنامه ای دیگر کرد و...)
--------------------------------------------------------------------------------
همانطور که می بینید این گونه ای از پیاده سازی یک طرح برای برنامه(الگوریتم برنامه ) است که سپس می توان آن را به شکل کد در آورد و پیاده سازی کرد ....
آیا به نظرتان این طرح (الگوریتم )نمی تواند در تمام برنامه ها یکسان باشد؟

طراحی الگوریتم :
در مثال بالا یک نوع پیاده سازی الگوریتم را مشاهده کردید ....برای طراحی الگوریتم لازم است دستورات قدم به قدم طراحی شوند و محاسبه شود که الگوریتم به درستی کار می کند یا نه ....
اجازه دهید یک مقدار ساده تر بگویم : فرض کنید یک معلم به ما یک مسئله ریاضی داده است .راه حل این مسئله را الگوریتم آن به حساب می آوریم. اگر این راه حل ما را به جواب درست رساند این راه حل را در ورقه پاکنویس می کنیم ولی اگر راه جواب اشتباهی به ما داد باید مقداری به راه حل مسئله نگاه کنیم و ایراد های ان را بر طرف کنیم ...
در نوشتن یک برنامه نیز ما به همین شکل برخورد خواهیم کرد یعنی طرح آن را پیاده می کنیم و اگر آن ما را به مطلوبمان رساند آن طرح را انتخاب می کنیم ولی اگر این چنین نشد در طرح مقداری تغییرات ایجاد کرده تا به هدف خود برسیم .

دقت داشته باشید که اغلب الگوریتم ها مراحل زیر را شامل می شوند :

1-خواندن داده ها (ورودی ها به برنامه)
2-انجام عملیات ( مثل محاسبات . حلقه ها . شروط و...)
3-چاپ نتایج


فلوچارت چیست ؟
فلوچارت در حقیقت رسم این الگوریتم به صورت گرافیکی است که برای سهولت کار مورد استفاده قرار می گیرد . رسم فلوچارت برای کسانی که تازه پا به عرصه برنامه نویسی گذاشته اند سبب آسان شدن حل مسائل می شود و هر چه که پیش می روند نیاز کمتری به رسم فلوچارت می بینند و سعی می کنند تا الگوریتم را در ضحن خود طراحی و پیاده سازی کنند و شروع به نوشتن برنامه کنند .


آشنایی با زبان سی :

در پست های قبلی مقداری از الگوریتم و طرح برنامه و همچنین از فلوچارت بحث کردیم ..در این پست و پست های بعدی سعی خواهم کرد شما را بیشتر با زبان سی آشنا کرده و گام به گام از ابتدا به بررسی ساختار های این زبان بپردازم ...در طول این مسیر شاهد استفاده از مطالب قبلی نیز خواهید بود ...

خوب همانطور که می دانید زبان سی شامل یک سری دستورات خاص می باشد که یک برنامه نویس که قصد برنامه نویسی به زبانی مثل سی را دارد کد های بر نامه را نوشته سپس توسط ادیتور یا همان کامپایلر ( توربو سی یا ویژوال سی پلاس پلاس ) آن را کامپایل می کند ....

خوب در اینجا اجازه دهید که با اولین مفهوم که کامپایل است شما را بیشتر آشنا کنم ..

کامپایل کردن یعنی اینکه دستورات ما (که به زبان سی نوشته شده اند )توسط یک برنامه (که به آن کامپایلر گویند ) به زبان ماشین ترجمه شود تا برای ماشین قابل درک شود و دستگاه بتواند آن را به اجرا در آورد ....


ما در ابتدا با یک سری از ابتدایی ترین دستورات زبان سی آشنا خواهیم شد و قدم به قدم پیش خواهیم رفت .
------------------------------------------------
باز کردن و بستن برنامه : همانند تمام زبان های دیگر برای شروع باید برنامه باز شود و در انتها نیز باید برنامه بسته شود

ما برای شروع از دستور } و برای خاتمه از دستور { استفاده می کنیم ..

یعنی فرض کنید ما می خواهیم یک برنامه بنویسیم که حاوی 5 خط کد نویسی است برنامه باید به این شکل باشد :

}
خط اول کد نویسی
خط دوم کد نویسی
خط سوم کد نویسی
خط چهارم کد نویسی
خط پنجم کد نویسی
{
همانطور که ملاحظه می کنید باید تمام کد نویسی مابین } و { قرار گیرد

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

دستور خواندن از صفحه کلید : برای اینکه برنامه عددی .حرفی .رشته ای یا ... را از صفحه کلید بخواند از دستور () scanf استفاده می شود توجه داشته باشید که داخل پرانتز متغیری که می خواهیم چیزی که وارد می شود در آن قرار گیرد باید گذاشته شود ...

یک نمونه :
(scanf("%d",&i

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

دستور چاپ بر روی صفحه نمایش : برای اینکه متغیری یا عبارت ثابتی را بر روی صفحه نمایش چاپ کنیم از دستور () printf استفاده می کنیم ... توجه داشته باشید اگر بخواهیم عبارتی عینا بر روی صفحه نمایش چاپ شود به صورت ("عبارت مورد نظر ")printf عمل خواهیم کرد ...

دو نمونه :

کد:
("printf("DrEaMeR
(printf("%d",i




نکته 1:شاید بعضی از دستورات بکار برده در نمونه ها برایتان نامفهوم باشد مثل d%و یا i& و.. با این دستورات در ادامه کار آشنا خواهید شد ..

نکته2: توجه کنید باید در انتهای هر خط کد نویسی در زبان سی باید ; به کار رود (بجز در مواردی که ذکر خواهد شد )..

-------------------------------------
توجه کنید به دستوراتی مثلprintf یا scanf توابع کتابخانه ای گویند ...این بدین معنا است که زبان سی این چنین توابعی را در خود برنامه برای استفاده کاربر قرار داده .... نکته مهم در اینجا این است که برای استفاده از این دستورات ( توابع کتابخانه ای ) ما باید این توابع را به برنامه بشناسانیم (یعنی به برنامه بگوییم آقا تو یک همچین دستوری را به صورت پیش فرض داری که فلان کار را انجام می دهد ) این کار را در زبان سی توسط HEADER FILE ها انجام می دهیم (فایل های سر آیند )


نحوه تعریف کردن این توابع هم به برنامه بدین شکل است که در ابتدای کد نویسی حتی قبل از } باید دستور(دستورات) include# را به کار برد .... در ادامه بیشتر با فایل های سر آیند آشنا می شویم ....

همانند اکثر آموزش زبان های برنامه نویسی ما هم اولین برنامه خود را با برنامه hello world آغاز خواهیم کرد ..در این برنامه ما قصد داریم تا تنها یک نوشتهhello world را در خروجی چاپ کنیم .


کد:
#include <stdio>
void main()
{
printf("hello world");
}


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

یادتان می آید که گفتم هر تابعی که در برنامه می نویسیم (مثل همین printf ) باید به برنامه تعریفش کنیم که آقا این تابع فلان کار را انجام میدهد ... (البته نگران نباشید ما نباید برای برنامه این تعریفات را بنویسیم خود نویسنده برنامه این کار را انجام داده ..تنها لازم است ما جای این تعریفات را به برنامه بگوییم ..... دقت کنید هر تابع(هر چند تابع ) در یک فایل سرآیند قرار دارد که داخل آن فایل ها این تعریفات تابع به برنامه قرار دارد..پس فقط لازم است تا اسم این فایل (یا فایل های ) سرآیند را با توجه به تابع مربوطه به اول کد نویسی اضافه کنیم ) ...

اسم فایل سرآیند(header file) ای که در آن تعریفات printf (و چند تابع دیگر ) وجود دارد stdio است ..
طریقه معرفی این فایل هم بدین گونه است که قبل از شروع برنامه بنویسید <include <stdio.h#

دقت کنید جمله include# در تعریف همه این فایل های سرآیند ثابت است تنها جمله بین <> بسته به نوع تابع ها تغیر می کند ...

مورد دیگر نیز h. بعد از stdio است که آن نیز به برنامه میگوید این فایل از نوع فایل سرآیند است (header file ) پس باید بعد از قرار دادن نام هر کدام از فایل های سر آیند بین <> یک h. نیز بعد از نام آن فایل سرآیند بگذاریم

کد:
;("printf("hello world


این هم کد چاپ کردن نوشته ما است .. همانطور که گفتم باید در زبان سی در انتهای هر خط کد نویسی (بجز بعضی مورد ها ) باید یک ; بگذاریم

خوب اگر دقت کنید دیگر چیز خاصی در کد نویسی این برنامه نمی ماند بجز یک خط و آن هم
()void main است ....این دستور چیست؟؟؟

دقت کنید زبان سی به صورت پیش فرض دوست دارد تا به شکل تابعی عمل کند (در این مورد بعدا مفصل بحث خواهیم کرد) و تمایل دارد یک مقدار را به جایی برگرداند ..ما فعلا نمی خواهیم تا یک همچین اتفاقی رخ دهد پس با نوشتن این یک خط مانع از این کار می شویم (تا به توضیحاتش برسیم یادتان باشد فعلا در ابتدای هر برنامه {مابینinclude# و } در یک خط این دستور را بنویسید )