تالار گفتگوی کیش تک/ kishtech forum

نسخه‌ی کامل: C++ & C
شما درحال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب‌بندی مناسب.
 
زبان برنامه نویسی C چیست؟ معرفی، تاریخچه و مفاهیم اولیه
زبان C چیست؟ زبان C یک زبان برنامه نویسی همه منظوره بسیار محبوب، ساده و انعطاف پذیر می باشد. این زبان یک زبان مستقل از ماشین و ساختاریافته است که در موارد بی شماری بکارگرفته شده است. زبان C زبان اولیه برای نوشتن هرچیزی از سیستم عامل ها گرفته(ویندوز و دیگر سیستم عامل ها) تا برنامه های پیچیده ماننده پایگاه داده اوراکل، گیت و مفسر پایتون و دیگر موارد بوده است.
گفته می شود که زبان برنامه نویسی C یک زبان برنامه نویسی اسطوره ای است. می توان گفت، C زبان پایه برای برنامه نویسی است. با دانستن زبان برنامه نویسی C ، می توان براحتی دانش دیگر زبان هایی که از مفاهیم C بهره می گیرند را فرا گرفت. هنگام استفاده از زبان برنامه نویسی C حافظه کامپیوتر نقش مهمی را ایفا میکند، لذا داشتن پیش زمینه ای از سازوکار آن ضروری می باشد.
[img=596x323]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg[/img]
تاریخچه زبان  C
پدر یا پایه زبانهای برنامه نویسی ‘ALGOL’ است. این زبان نخستین باز در سال 1960 معرفی شد. ‘ALGOL’ در کشورهای اروپایی در مقیاس بزرگی استفاده می شد. ‘ALGOL’ مفهوم برنامه نویسی ساختاریافته را به انجمن توسعه دهندگان (دولوپر) معرفی کرد. در سال 1967، زبان برنامه نویسی جدیدی بنام ‘BCPL’ که مخفف زبان برنامه نویسی ترکیبی پایه (Basic Combined Programming Language) است معرفی گردید. BCPL را مارتین ریچاردز مخصوص نوشتن نرم افزارهای سیستمی طراحی و توسعه داده بود. این نقطه آغازین عهد زبانهای برنامه نویسی بود. تنها پس از سه سال، در سال 1970 زبان برنامه نویسی جدیدی بنام ‘B’ توسط کن تامپسون معرفی شد که شامل ویژگی های متعدد ‘BCPL’ بود. این زبان برنامه نویسی تحت سیستم عامل یونیکس در آزمایشگاه های بل و AT&T ساخته شد. هم ‘BCPL’ و هم ‘B’ زبان های برنامه نویسی سیستمی بودند.
[img=477x443]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg[/img]
در سال 1972، دانشمند بزرگ علوم کامپیوتر، دنیس ریتچیه ، زبان برنامه نویسی جدیدی به نام C را در آزمایشگاههای بل ساخت. این زبان از زبانهای برنامه نویسی ‘ALGOL’ ، ‘BCPL’، و ‘B’ ساخته شده بود. زبان برنامه نویسی C شامل تمام ویژگی های این زبان ها و همچنین مفاهیم اضافی دیگری بود که آن را از دیگر زبان ها مجزا می ساخت.
زبان C
زبان برنامه نویسی C زبان قدرتمندی است که شدیداً در ارتباط مفهومی با سیستم عامل یونیکس است. حتی بخش اعظم سیستم عامل یونیکس به زبان ‘C’ کدنویسی شده است. در ابتدا برنامه نویسی به زبان C محدود به سیستم عامل یونیکس بود، اما همزمان با شروع انتشار گسترده آن در سرتاسر دنیا، این زبان تجاری شده و کامپایلرهای بسیاری برای سیستم های کراس-پلتفرم (چندسکویی) ارائه شدند. امروزه ‘C’ در طیف متنوعی از سخت افزارها و سیستم عامل ها اجرا می شود.
گاهی اوقات به روز ماندن با آخرین نسخه زبان برای توسعه دهندگان دشوار می گردید زیرا سیستم ها کماکان نسخه های قدیمی تر زبان را اجرا میکردند. برای اطمینان از اینکه زبان ‘C’ استاندارد خواهد ماند ، سازمان ملی استاندارد آمریکا (ANSI ) استانداردی تجاری برای زبان ‘C’ در سال 1989 تعریف کرد. سپس این استاندارد در سال 1990 توسط سازمان استاندارد جهانی(ISO) به رسمیت شناخته شد. زبان برنامه نویسی ‘C’ همچنین با نام ‘ANSI C’ شناخته می شود.
[img=376x625]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png[/img]
زبان هایی مانند C++/Java از زبان ‘C’ توسعه یافته‌اند. این زبان ها در تکنولوژی‌های مختلف به صورت گسترده استفاده شده‌اند. بنابراین،  ‘C’ پایه و اساسی برای دیگر زبان ها که هم اکنون مورد استفاده هستند تشکیل می دهد.
 
 
 کاربردهای کلیدی زبان C
2.[font=Times New Roman]    [/font]برای توسعه برنامه های سیستمی استفاده می شود.
3.[font=Times New Roman]    [/font]برای توسعه برنامه های کامپیوترهای رومیزی استفاده می شود.
4.[font=Times New Roman]    [/font]بیشتر اپلیکیشن های شرکت Adobe با استفاده از زبان برنامه نویسی C توسعه یافته اند.
5.[font=Times New Roman]    [/font]در توسعه مرورگرها و افزونه های آنها استفاده می شود. مرورگر گوگل کروم با استفاده از زبان برنامه نویسی C ساخته می شود.
6.[font=Times New Roman]    [/font]در توسعه پایگاههای داده استفاده می شود. MYSQL محبوب ترین نرم افزار پایگاه داده است که با زبان C نوشته می شود.
7.[font=Times New Roman]    [/font]در توسعه سیستم عامل ها بکار گرفته می شود. سیستم عامل هایی همچون Apple’s OS X ، Microsoft Windows  با زبان C توسعه می یابند. این زبان برای توسعه سیستم عامل های دسکتاپ همچون سیستم عامل های تلفن همراه استفاده می شود.
8.[font=Times New Roman]    [/font]برای تولید کامپایلر استفاده می گردد.
9.[font=Times New Roman]    [/font]برای توسعه اپلیکیشن های اینترنت اشیا بکار می رود.
بایسته‌های یادگیری زبان C ؟
[list]
[*]همانطور که قبلاً بررسی کردیم، C زبان پایه برای بسیاری از زبان های برنامه نویسی است. بنابراین، آموختن C به عنوان زبان اصلی نقش مهمی در مطالعه دیگر زبان ها ایفا می کند. بسیاری از مفاهیم از جمله نوع داده ها، عملیات ها، عبارات کنترلی و بسیاری دیگر، بین زبان C و دیگر زبان ها مشترک است. C را می توان برای کاربردهای  بسیاری استفاده کرد. این زبان ساده بوده و اجرای سریعی را فراهم می آورد. موقعیت های شغلی فراوانی برای توسعه دهنده زبان C در بازار وجود دارد.
[*]‘C’  زبانی ساختاریافته است که به ماژول های متعددی تقسیم بندی می شود. هر ماژول به صورت جداگانه نوشته شده و در کنار یکدیگر تشکیل یک برنامه واحد می دهند. این ساختار روند تست، نگهداری و دیباگ را آسان می کند.
[*]زبان ‘C’ دارای 32 کلمه کلیدی ، نوع داده های متنوع و مجموعه ای از توابع قدرتمند داخلی است که عمل برنامه نویسی را بسیار کارآمد میسازد.
[*]ویژگی دیگر برنامه نویسی ‘C’ این است که می تواند خودش را توسعه دهد. یک برنامه C شامل توابع مختلفی بوده که بخشی از یک کتابخانه می باشند.  می توان توابعو وِیژگی های خود را به کتابخانه افزود. در برنامه خود می توانیم در هر زمان دلخواه  به این توابع دسترسی پیدا کرده و استفاده کنیم. این ویژگی کارکردن با برنامه های پیچیده را آسان می کند.
[*]کامپایلرهای مختلفی در بازار برای نوشتن و اجرا  با این زبان موجود است.
[*]زبان ‘C’ قابلیت حمل بسیار بالایی دارد، بدین معنی که برنامه های نوشته شده در این زبان را می توان در دیگر ماشین ها هم اجرا کرد. اگر بخواهیم کدهایمان در کامیپوترهای دیگر هم قابل استفاده باشند، این وِیژگی بسیار حیاتی است.
[/list]
زبان برنامه نویسی C چگونه کار می‌کند؟
زبان C یک زبان کامپایل شده است. کامپایلر یک ابزار ویژه است که برنامه ها را ترجمه کرده و به یک فایل object  تبدیل کرده که برای ماشین قابل خواندن است. پس از فرآیند ترجمه، لینکر فایل های object مختلف را با یکدیگر ترکیب کرده و یک برنامه قابل اجرا تولید می کند. دیاگرام زیر اجرای یک برنامهرا نشان می دهد
[img=585x189]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg[/img]
امروزه کامپایلرهای مختلفی به صورت آنلاین موجود بوده که می توان از آنها بهره برد. عملکرد آنها تفاوتی با هم نداشته و بیشتر کامپایلرها خصوصیات مورد نیاز برای اجرای برنامه های C و C++ را فراهم می کنند.
لیست محبوب ترین کامپایلرهای آنلاین موجود در زیر آمده است:
[list]
[*]Clang compiler
[*](MinGW compiler (Minimalist GNU for Windows
[*]Portable ‘C’ compiler
[*]Turbo C
[/list]
خلاصه مطالب در باره زبان C
[list]
[*]‘C’  در سال 1972 توسط دنیس ریتچیه توسعه یافت.
[*]زبانی بسیار قدرتمند است.
[*]C  یک زبان برنامه نویسی سطح پایین نزدیک به زبان ماشین است.
[*]در حوزه توسعه نرم افزار به وفور به کار برده می شود.
[*]C  زبانی ساختار یافته و رویه محو است.
[*]از پشتیبانی سیستم عامل ها و پلتفرم های سخت افزاری مختلفی برخوردار است.
[*]برای اجرای برنامه های نوشته شده به زبان ‘C’ کامپایلرهای مختلفی موجود است.
[*]یک کامپایلر فایل سورس را ترجمه کرده و یک فایل object ایجاد می کند.
[*]لینکر همه ی فایل های object را بهم متصل کرده و یک فایل قابل اجرا می سازد.
[*]این زبان قابلیت حمل بالایی دارد.
[/list]
 
تفاوت‌های بین زبان C و C++
درک تفاوت‌های C و C++ خیلی مهم است و هنوز خیلی از افراد هستن که در C++ به سبک C کد می‌نویسند و از امکانات پیشرفته زبان C++ استفاده نمی‌کنند. پس برای برنامه‌نویس حرفه‌ای شدن درک صحیح تفاوت بین C و C++ خیلی مهم است. هر دو زبان قدرتمندی هستن و برای درک قدرت زبان C کافیست بدانید هسته سیستم عامل‌های ویندوز و لینوکس با C نوشته شده است. و اکثر برنامه‌های قدرت‌مند مثل Mozilla Firefox با C++ نوشته شدن.
[img=631x302]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg[/img]
یاد آوری
C یک زبان برنامه نویسی سطح میانه است که توسط دنیس ریتچی در آزمایشگاه بل در سال 1972 ابداع شد. زبان C ویژگی های زبان های سطح پایین و سطح بالا را ترکیب می کند. به همین دلیل به عنوان زبان سطح میانی شناخته می شود.
C از لحاظ سنتی یک زبان برنامه نویسی سطح بالا محسوب می شود که امکان توسعه میان افزارها و برنامه های قابل حمل را فراهم می کند.زبان C با هدف نوشتن نرم افزارهای سیستمی توسعه یافت. این زبان یک زبان ایده آل برای نوشتن میان افزار سیستم ها می باشد.
زبان برنامه نویسی C++ چیست؟
C++ یک زبان برنامه نویسی کامپیوتری است که ویژگی های زبان C و همچنین Simula67(اولین زبان شی گرایی) را دارا می باشد. C++ مفاهیم کلاس و شی را معرفی کرد.
این زبان ویژگی های زبان های سطح بالا و پایین را پوشش می دهد. بنابراین یک زبان سطح میانی محسوب می شود. در گذشته “C همراه با کلاس” نامیده می شد زیرا همه خصوصیات زبان C را دارا بود.
تفاوت بین C و C++ : تفاوت های بنیادی
[img=551x151]file:///C:/Users/Admin/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png[/img]
[align=justify]مبانی اختلاف
C
C++
نوع برنامه نویسی
یک زبان برنامه نویسی رویه محور است
زبان برنامه نویسی شی گرا است.
دیدگاه
زبان C دیدگاه برنامه نویسی بالا به پایین را دنبال می کند.
زبان C++ دیدگاه برنامه نویسی پایین به بالا را دنبال می کند.
پسوند فایل
پسوند فایل در برنامه C به صورت .c است.
پسوند فایل در برنامه++C به صورت .cpp است.
تقسیم بندی برنامه
در زبان برنامه نویسی C، یک برنامه بزرگ به بخش های کوچکتری تقسیم شده که تابع نام دارند.
در زبان برنامه نویسی C++ ، یک برنامه بزرگ به بخش های کوچکتری تقسیم شده که کلاس و شی نامیده می شوند.
ساختار
ساختار در زبان C ویژگی اعلان تابع را فراهم نمی کند.
ساختار در زبان ++C ویژگی اعلان تابع را به عنوان تابعی عضو از ساختار فراهم می کند.
توابع درون خطی
توابع درون خطی را پشتیبانی نمی کند.
توابع درون خطی را پشتیبانی می کند.
عملیات استاندارد I/O
در زبان C توابع scanf و printf برای ورودی و خروجی استاندارد استفاده می شوند.
در زبان ++C، (, cin >> ) و (   ,cout<<برای عملیات استاندارد ورودی و خروجی بکار می روند.
امنیت داده
در زبان C امنیت داده وجود ندارد.
داده امن بوده و از طریق توابع خارجی قابل دسترسی نیست.(با استفاده از ویژگی محصورسازی OOP ها)
سادگی کدنویسی
زبان C زبان برنامه نویسی قدیمی تری است که به عنوان یک زبان دستی توصیف می شود. در این زبان، باید به برنامه انجام هرچیزی را دستور دهید . علاوه برآن، این زبان به شما اجازه انجام تقریباً هرکاری را می دهد.
C++ زبانی تعمیم یافته از C است. این زبان امکان نوشتن کد شی گرایی با قابلیت کنترل بالا را فراهم می کند.
سازگاری با دیگر زبانها
C با زبان های دیگر سازگار نیست.
زبان C++ با زبان های عمومی دیگر سازگار است.
اشاره گر
C از اشاره گرها پشتیبانی می کند.
C از اشاره گر و ارجاعات(رفرنس) پشتیبانی می کند.
متغیر
در C، متغیرها باید در ابتدای برنامه تعریف شوند.
C++ اجازه اعلان متیغرها در هرجایی از توابع را فراهم می کند.
نقطه تمرکز
تمرکز زبان C روی گام ها یا رویه های حل مسئله است.
زبان C++روی اشیا و نه گامها یا رویه ها تمرکز دارد. این زبان سطح بالاتری از چکیده سازی دارد.
اضافه بار تابع
زبان C استفاده از اضافه بار تابع(function overloading) را فراهم نکرده است.
زبان C++ استفاده از اضافه بار تابع(function overloading) را فراهم کرده است.
نوع داده
زبان C اجازه اعلان نوع داده رشته ای یا بولی(Boolean) را نمی دهد. این زبان نوع داده های پایه داخلی را پشتیبانی می کند.
زبانی C++ نوع داده رشته ای و بولی را فرهم می کند.
رسیدگی به استثناها(Exception Handling)
زبان C رسیدگی به استثناها را فراهم نمی کند.هرچند می توان با استفاده از برخی راه حلها آن را پیاده سازی کرد.
C++ رسدیگی به استثاها را پشتیبانی می کند. علاوه بر آن، می توان آن را با بلوک های try و catch هم پیاده کرد.
توابع
توابع با آرایش پیش فرض را پشتیبانی نمی کند.
توابع با آرایش پیش فرض را پشتیبانی نمی کند.
فضای نام
چنین چیزی در زبان C وجود ندارد.
زبان C++ چنین ویژگی را دارا می باشد.
سورس کد
برنامه با سورس کد فرمت آزاد
از زبان برنامه نویسی C نشات گرفته است.
ارتباط
C زیرمجموعه ای از C++ است. نمی تواند کدهای C++را اجرا کند.
C++ زبرمجموعه C است. C++ توانایی اجرای اکثر کدهای C را دارد اما C چنین توانایی ندارد.
محوریت
زبان تابعمحور است
زبان شیء محور است.
تمرکز
بجای تمرکز بر داده ،روی روش یا رویه تمرکز دارد.
بجای تمرکز بر روش یا رویه روی داده تمرکز دارد.
محصورسازی (Encapsulation)
از محصورسازی پشتیبانی نمی کند.زیرا داده ها و توابع جدا بوده و موجودیت های آزادی هستند.
از محصورسازی پشتیبانی می کند و داده ها و توابع به عنوان یک شی محصورسازی می شوند.
مخفی سازی اطلاعات
زبان C مخفی سازی اطلاعات را پشتیبانی نمی کند. در این زبان، داده ها موجودیت های آزادی بوده که می توان خارج از کد تغییر داد.
محصورسازی داده را مخفی می کند. به طوری که ساختارداده ها و عملگرها بر هدفمند استفاده می شوند.
مدریریت حافظه
[align=justify]C توابع () mallocو ()calloc [color=#282828][size=large][font=B Nazanin]را ر