PDA

View Full Version : مبتدی: تفاوت کامپایلر c , c++



adelante94
شنبه 27 آبان 1391, 23:37 عصر
سلام
تو دانشگاه در درس مبانی برنامه سازی مقدماتی ما زبان C رو شروع کردیم به ما گفتن Borland C رو باید یاد بگیریم حالا هر جا میگردم که کامپایلرشو داونلود کنم فقط با ++Borland C مواجه میشم ، آیا من تو اشتباهم یا این دو با هم فرق دارن؟:متفکر:
مرسی

vistacali
یک شنبه 28 آبان 1391, 16:36 عصر
با زبان C می‌شه برنامه‌های کنسولی (شبیه DOS) نوشت و هر جایی اجرا کرد و حتی کامپایل نمود (مثل لینوکس) ولی محدود به همون صفحه نمایش داسی و صفحه کلید است.

با زبان C++‎ می‌شه برنامه‌های کنسولی (شبیه DOS) نوشت و هر جایی اجرا کرد و حتی کامپایل نمود (مثل لینوکس) ولی محدود به همون صفحه نمایش داسی و صفحه کلید است ولی خود زبان c++ شی‌گراست. تمامی پروژه‌های C کاملا قابل انتقال به C++‎ هستند.
Borland C رو فکر کنم فقط برنامه های c رو اجرا میکنه ++Borland C هم سی و هم سی پلاس رو میشه توش استفاده کرد

اینم لینک توربو c (http://www.4shared.com/rar/yfPIC2Uw/Turbo_C_45_Win.html)

shahmohammadi
یک شنبه 28 آبان 1391, 19:24 عصر
سلام.

با زبان C می‌شه برنامه‌های کنسولی (شبیه DOS) نوشت و هر جایی اجرا کرد و حتی کامپایل نمود (مثل لینوکس) ولی محدود به همون صفحه نمایش داسی و صفحه کلید است.اين طور نيست. مي شه با استفاده از win32 بوسيله ي سي برنامه ويندوز هم نوشت. و يا براي دستگاه هاي مختلف و آي سي ها برنامه نوشت كه اصلا هم كنسولي نستند. با زباني به قدرت ايندو مي شه توي هر محيطي برنامه نوشت.

سي پلاس پلاس هم محدود به كنسول نيست. با هاش برنامه ويندوز هم مي شه نوشت.

كامپايلر هاي C++‎‎ اكثرا داراي يك كامپايلر c هم هستند. حالا اگر شما فايل برنامه رو با پسوند c ذخيره كنيد فقط بايد از دستورات c استفاده كنيد. اما اگر برنامه رو با پسوند cpp ذخيره كنيد برنامه تون C++‎‎ هست.

همون كامپايلر C++ رو دانلود كنيد خوبه. دو سه روز بعد از اينكه شروع به يادگيري شون كرديد فرق اين دو زبان رو خواهيد دونست.

مصطفی ساتکی
یک شنبه 28 آبان 1391, 23:55 عصر
تو C++‎ شما وراثت چندگانه دارید ولی توObjective C همچین چیزی ندارید.
زمانیکه شما تو C از malloc استفاده می کنید نیاز به type casting ندارید ولی تو C++‎ اگر Type cast نکنید با خطا روبرو میشید.
تو C++‎ شما template و overload و namespace دارید ولی تو C ندارید.
تو C++‎ شما می تونید داخل struct تابع مورد نظر خودتون رو بنویسید ولی تو C نمیشه همچین کاری انجام داد.
تو C++‎ شما متغیر reference دارید ولی تو C همچین چیزی ندارید.
تو C ورودی و خروجی استاندارد توسط printf و scanf صورت می گیره ولی تو C++‎ از stream استفاده میشه cin و cout
تو C++‎ می تونید exception رو مدیریت کنید ولی همچین چیزی تو C وجود نداره.

یک نکته ای که یادم رفت ذکر کنم در زبان C شما بایستی متغیر ها را در ابتدای بلوک معرفی کنید ولی در C++ نیازی نیست.

BORHAN TEC
دوشنبه 29 آبان 1391, 00:39 صبح
سلام

تو C++‎ شما وراثت چندگانه دارید ولی تو C همچین چیزی ندارید.
توی C که اصلاً چیزی به اسم برنامه نویسی شی گرا وجود نداره که شما از وراثت چندگانه صحبت می کنید(البته خواهشاً بحث ObectiveC رو وسط نیارید، چون به نظر من این زبان ربط زیادی به C نداره).

با زبان C++‎‎ می‌شه برنامه‌های کنسولی (شبیه DOS) نوشت و هر جایی اجرا کرد و حتی کامپایل نمود (مثل لینوکس) ولی محدود به همون صفحه نمایش داسی و صفحه کلید است ولی خود زبان C++‎ شی‌گراست.
بی خیال، پس به نظر شما این همه برنامه گرافیکی رو چطوری با C++ نوشته اند؟؟؟ :چشمک:

vistacali
دوشنبه 29 آبان 1391, 03:41 صبح
سلام

با زبان C++‎‎‎‎ می‌شه برنامه‌های کنسولی (شبیه DOS) نوشت و هر جایی اجرا کرد و حتی کامپایل نمود (مثل لینوکس) ولی محدود به همون صفحه نمایش داسی و صفحه کلید است ولی خود زبان C++‎‎‎ شی‌گراست.



بی خیال، پس به نظر شما این همه برنامه گرافیکی رو چطوری با C++‎‎ نوشته اند؟؟؟ :چشمک:

منبع (http://en.wikipedia.org/wiki/C%2B%2B)

اول من نگفتم C++‎‎شئ گرایی نیست برو دقیق بخون تا بفهمی چی گفتم در طراحی زبان C++‎‎ اقای Stroustrup خودش گفته



C++‎‎ is designed to directly and comprehensively support multiple programming styles (procedural programming (http://en.wikipedia.org/wiki/Procedural_programming), data abstraction (http://en.wikipedia.org/wiki/Data_abstraction), object-oriented programming (http://en.wikipedia.org/wiki/Object-oriented_programming), and generic programming (http://en.wikipedia.org/wiki/Generic_programming))


از آنجا که اساس C++‎‎ برنامه نویسی شی گرا است.

شی گرا از بهترین مفاهیم برنامه سازی ساخت یافته بوجود آمده است و با چندین مفهوم قوی ترکیب شده که امکان سازماندهی برنامه ها را به طور کارآمد را فراهم می کند.به طور کلی هنگامی که در حالتی شی گرا نیز برنامه می نویسید مساله را به بخش های تشکیل دهنده آن تجزیه می کنید. هر مولفه ای یک شی خود ظرف می شود که شامل دستورالعملهای خودش و داده های مرتبط با آن شی است . از طریق این عملیات پیچیدگی کاهش یافته و می توان برنامه های بزرگ را مدیریت کرد . همه زبان های برنامه نویسی شی گرا در سه چیز مشترک هستند : کپسوله سازی ، چند ریختی و وراثت.پسوله سازی همانطور که می دانید تمام برنامه ها از دو عنصر اصلی تشکیل می شوند : عبارت برنامه (کد) و داده ها . کد بخشی از برنامه است کد عملیات را اجرا می کند و داده ها اطلاعاتی است که توسط این عملیات تحت تاثیر قرار گرفته . کپسوله سازی یک مکانیزم برنامه نویسی است که کد و داده ها را با هم در یک جا قرار داده و هر دو را از استفاده نادرست و تداخل خارجی ایمن نگه می دارد .در یک زبان شی گرا ، کد و داده ممکن است با هم در چنین روش محدود شوند که یک جعبه سیاه خود ظرف را ایجاد می کند . درون جعبه تمام داده های مورد نیاز و کد است . هنگامی که در این روش کد و داده ها با هم پیوند برقرار می کنند یک شی به وجود می آید . به عبارت دیگر یک شی ابزاری است که ازکپسوله سازی پشتیبانی می کند.درون یک شی (کد وداده ها) یا هردو ممکن است برای آن شی محلی (خصوصی/Private) یا عمومی (Public) باشند.کد یا داده های محلی فقط توسط بخش دیگری از شی شناخته شده و قابل دست یابی هستند.به همین دلیل کد یا داده محلی برای قطعه ای از برنامه که خارج از شی است قابل دسترس نمی باشد . هنگامی که کد یا داده ها عمومی هستند بخش ها دیگری از برنامه ممکن است به آنها دسترسی داشته باشند حتی اگر درون شی تعریف شده باشند بخش های عمومی یک شی برای ارائه یک ارتباط کنترل شده با عناصر محلی شی مورد استفاده قرار می گیرند.چند ریختی کمیتی است که به یک رابط امکان می دهد تا برای یک کلاس عمومی از عملیات مورد استفاده قرار می گیرد . عمل خاص توسط ذات حقیقی شی تعیین می شود.به عنوان مثال یک پشته را در نظر بگیرید . ممکن است برنامه ای داشته باشید که نیاز به سه نوع مختلف پشته داشته باشید یک پشته برای مقادیر صحیح ،یک پشته برای اعداد اعشاری و یک پشته برای کاراکترها مورد استفاده قرار می گیرد.در این صورت الگوریتمی که هر سه پشته را پیاده می کند یکسان است حتی اگر داده هایی که در آنها ذخیره می شود متفاوت باشند . در یک زبان غیر شی گرا نیاز خواهید داشت تا سه نوع مختلف از روال های پشته را ایجاد کرده . به هر کدام نام متفاوتی قرار داده و برای هر کدام از روابط خاص خودش استفاده کنید . به دلیل وجود چند ریختی در C++‎‎ می توانید یک مجموعه روال عمومی از پشته ایجاد کرده وآن را برای هر سه نوع به کار ببرید.به طور کلی مفهوم چندریختی اغلب توسط عبارت "یک رابط چندین روشی" بیان می شود . این بدین معنی است که امکان طراحی یک رابط عمومی برای گروهی از عملیات مرتبط وجود دارد.چند ریختی با اعمال رابط یکسانی که برای تعیین یک کلاس عمومی مورد استفاده قرار می گیرد . به کاهش پیچیدگی کمک می کند .زبان های برنامه نویسی شی گرای اولیه چون به صورت مفسری بودند از چند ریختی در زمان اجرا پشتیبانی می کردند. ولی چون C++‎‎ کامپایلری است پس هم در زمان اجرا و هم در زمان کامپایل از چند ریختی پشتیبانی می کند.وراثتعملیست که یک شی می تواند مشخصه های شی دیگری را به دست آورد. به همین دلیل از مفهوم دسته بندی سلسه مراتبی پشتیبانی می کند.بدون استفاده از وراثت هر شی به طور مجزا بایستی تمام مشخصه های خودش را تعریف کند . با استفاده از وراثت شی فقط نیاز به تعریف مشخصه هایی دارد که در داخل آن کلاس منحصر به فرد هستند . این سبب می شود که صفات عمومی را از پدرشان به ارث ببرند.بنابراین مکانیزم وراثت به یک شی امکان می دهد تا نمونه خاص از یک حالت عمومی تر باشد.
منبع :Herbert Schildt (http://en.wikipedia.org/wiki/Herbert_Schildt)اینم سایتش (http://www.herbschildt.com/)برای دانلود کتاباش pdf هر کدوم رو هم خواستی پیدا نکردی بگو برات ارسال میکنم
خوب دوست گرامی من داشتم به دوستی که سوال کرده بود توی کنسول توضیح میدادم و نگفتم هم که سی پلاس شی گرا نیست الان کجای مطلب من اشتباه بوده میشه توضیح بدی من بدونم در صورت توضیح لطفا منبع خودتون هم را هم ذکر فرمائید

BORHAN TEC
دوشنبه 29 آبان 1391, 09:12 صبح
سلام

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

منبع :Herbert Schildt اینم سایتش برای دانلود کتاباش pdf هر کدوم رو هم خواستی پیدا نکردی بگو برات ارسال میکنم
شما لطف دارین، ولی اکثر کتابهای C++‎‎‎‎‎‎‎ رو دارم! اگه شما کتابی رو نداشتید PM بدین تا براتون بفرستم. :لبخند:

خوب دوست گرامی من داشتم به دوستی که سوال کرده بود توی کنسول توضیح میدادم و نگفتم هم که سی پلاس شی گرا نیست
شی گرا بودن رو که کاملاً درست نوشته اید و از این بابت مشکلی نیست. خودتان خواهشاً یکبار دیگه جمله ای که نوشته اید رو بخونید. اگه یه کاربر تازه وارد این جمله شما رو بخونه فکر می کنه که با C++‎‎‎‎‎‎‎ فقط میشه برنامه های تحت کنسول نوشت و فکر می کنه که C++‎‎‎‎‎‎‎ قابلیت ساخت برنامه های مبتنی بر GUI رو نداره. :متعجب:

در صورت توضیح لطفا منبع خودتون هم را هم ذکر فرمائید
چه منبعی بهتر از سالها سر و کله زدن با C++‎‎‎‎‎‎‎/Qt و C++‎‎‎‎‎‎‎ Builder و Visual C++‎‎‎‎‎‎‎ و Delphi و Lazarus و Oxygene و Visual Basic ؟!!! :لبخند:

vistacali
دوشنبه 29 آبان 1391, 13:40 عصر
دوستان به کسی بر نخورد من منظور خواسی از این بیت ندارم
«رنجش هر کسی ز یک چیز است رنجش من ز نیم دیوانه‌است»
فقط با خوندن این تایپیک یهو یاد این شعر افتادم

Ananas
دوشنبه 29 آبان 1391, 14:58 عصر
شعر بود یا شر؟

BORHAN TEC
دوشنبه 29 آبان 1391, 23:05 عصر
دوستان به کسی بر نخورد من منظور خواسی از این بیت ندارم
«رنجش هر کسی ز یک چیز است رنجش من ز نیم دیوانه‌است»
فقط با خوندن این تایپیک یهو یاد این شعر افتادم
سلام
مهم نیست!!! ولی خواهشاً اگر در یک موضوع اطلاعات دقیقی ندارید، دیگران را گمراه نکنید! اون توضیحاتی هم که نوشته اید رو میدونم که از سایت دیگه کپی کردین و برای خودتان نیست.
این رو بدون: قلکی که توش اسکناس باشه هر چقدر هم که تکونش بدی سر و صدا نداره ولی قلکی که توش پول خرد هست خیلی سر و صدا داره. روی این جمله ام خیلی فکر کن، چون منظور من دقیقاً به شخص شماست. :لبخندساده:
یا حق...

مسعود اقدسی فام
دوشنبه 29 آبان 1391, 23:17 عصر
قلکی که توش اسکناس باشه هر چقدر هم که تکونش بدی سر و صدا نداره ولی قلکی که توش پول خرد هست خیلی سر و صدا داره.



قشنگ و جالب بود. مرسی.

Ananas
سه شنبه 30 آبان 1391, 01:08 صبح
قلکی که توش اسکناس باشه هر چقدر هم که تکونش بدی سر و صدا نداره ولی قلکی که توش پول خرد هست خیلی سر و صدا داره. منظورت از "خرد" سکه هست؟ سکه الان ارزشش زیاد تر از اسکناسه. هزاری هم الان خرده. (قبل از اینکه ترورم کنن باید این پست رو حذف کنم:شیطان:)