PDA

View Full Version : سوال: Main در زبان C و C ++



Spentboy
یک شنبه 10 آبان 1388, 23:06 عصر
فلسفه ی وجود متغیر int در کنار تابع اصلی برنامه چیست ( int main ) ؟ و چرا این دستور در زبان C مورد استفاده ی گسترده قرار نمیگیره و اگر هم بگیره برنامه نویس رو با مشکل مواجه نمیکنه ؟

pswin.pooya
دوشنبه 11 آبان 1388, 00:11 صبح
فلسفه ی وجود متغیر int در کنار تابع اصلی برنامه چیست ( int main ) ؟ و چرا این دستور در زبان C مورد استفاده ی گسترده قرار نمیگیره و اگر هم بگیره برنامه نویس رو با مشکل مواجه نمیکنه ؟

فلسفه وجود main و شکل آن:
تمام زبانهای برنامه نامه نویسی برای حل مسائل به وجود آمدن. یه مساله میتونه یه مساله ریاضی و یا یک بازی باشه... و برای حل مسائل داخل کامپیوتر از الگوریتم استفاده می کنن. الگوریم از کلمه الجبر و ... که کتاب خیام هستش (اگه اشتباه نکنم) گرفته شده. خیام میگه که هر مساله رو میشه به صورت یکسری از قدم ها حلش کرد. نتیجتا مسائل کامپیوتری رو به قدم های کوچکتر میشکنن و اون رو قدم به قدم حل می کنن. هر مساله کامپیوتری یک نقطه ورود ( نقطه که اولبن قدم رو مشخص میکنه) و یک نقطه خروج (قدمی که نتیجه مساله رو بیان میکنه) داره. به علاوه اون یه مساله نمایانگر یک تابع هستش. پس هر تابع میتونه یک یا چند ورودی داشته باشه. نیجتا توی کامپیوتر هر مساله که یک برنامه فرض میشه و هر برنامه یه نقطه شروع داره. این نقطه شروع program entry نامیده میشه که در زبان سی این قطعه کد کوچیک یه تابع به اسم main رو صدا میکنه. شما می تونین این اسم رو تغییر بدین و اون رو مواردی مثل kmain، WinMain و ... بذارین. (اسم مهم نیستش- اصل مطلب اینجاست که حتما باید یک نقطه برای شروع کار باشه) و نتیجتا هر مساله باید یک نتیجه رو برگردونه. خب توی مفاهیم کامپیوتری هر مساله یا برنامه باید به سیستم عامل بگه که به چه شکل تموم شده تا سیستم عامل با توجه به اون رفتار کنه. طبق قرار داد اگر برنامه صفر رو برگردونه کاملا موفقیت آمیز تموم شده و اگر یه عدد به غیر از اون رو برگردونه به سیستم عامل اعلام میکنه که حل برنامه مشکل داشته. و سیستم عامل با توجه به کد بر گردانده شده تصمیم میگیره.

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

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

xxxxx_xxxxx
دوشنبه 11 آبان 1388, 07:23 صبح
سلام،
با اجازه در ادامه صحبت های دوستمون در زبان C همه روال ها باید یک مقدار برگشتی داشته باشند. مثل یک Function که باید و بایست یک مقدار خروجی داشته باشه. main هم مثل سایر توابع هست و باید یک خروجی داشته باشه. که اون int نوع خروجی رو تعیین میکنه.

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

tdkhakpur
دوشنبه 11 آبان 1388, 12:57 عصر
فلسفه ی وجود متغیر int در کنار تابع اصلی برنامه چیست ( int main ) ؟ و چرا این دستور در زبان C مورد استفاده ی گسترده قرار نمیگیره و اگر هم بگیره برنامه نویس رو با مشکل مواجه نمیکنه ؟

ببينيد در برنامه هاي و پروژه هاي بزرگ براي داس اين نوع يعني برگشت مقدار توسط توابع ميتواند بسيار مفيد باشد خود شما هم بايد اطلاع داشته باشيد كه main هم به نوعي تابع محسوب ميشود ولي تابعي كه توسط كامپايلر نقطه شروع برنامه شما به حساب مي آيد.
اگر شما يك چنين برنامه اي را در نظر بگيريد..


int main(void)
{
int x=10, y=10;
return x+y;
}

اين برنامه چيزي جز محاسبه كاري ديگري انجام نميدهد. شما ميتوانيد از exe اين برنامه و با اجراي آن داخل ساير برنامه ها استفاده نموده و نتيجه كه برگشت داده ميشود را بگيريد.
بطور كلي ميتوان توابع و كارهاي را توسط يك برنامه ايجاد و داخل برنامه هاي ديگر از محاسبات انجام شده اين گونه برنامه ها استفاده نمود.

hamidsolat
چهارشنبه 13 آبان 1388, 21:25 عصر
مقداری برگشتی Main یک عمل اختیاریه و می تونیم این تابع رو void هم تعریف کنیم ولی مقدار برگشتی این موضوع را نشون میده که کار برنامه خاتمه پیدا کرده و سیستم عامل کنترل رو بدست میگیره

Nima_NF
پنج شنبه 14 آبان 1388, 00:54 صبح
مقداری برگشتی Main یک عمل اختیاریه و می تونیم این تابع رو void هم تعریف کنیم ولی مقدار برگشتی این موضوع را نشون میده که کار برنامه خاتمه پیدا کرده و سیستم عامل کنترل رو بدست میگیره
در استاندارد سال 1998 زبان C++‎‎ تابع main حتما باید یک مقدار int برگرداند و void نمی تواند باشد (در کامپایل های قدیمی که از این استاندارد پیروی نمی کنند صادق نیست)

در زبان C و استاندارد جدید آن نیز تابع main می تواند void هم باشد.