صفحه اصلی - فروم پرشین سون

بازگشت   PersianSeven Forums > سخت افزار, نرم افزار و برنامه نویسی | Web Design & Programming > برنامه نویسی > خانواده C++ ,C و Visual C#.Net, Delphi
پورتال پرشين راهنمایی جــوایز IShop وبلاگ پرشین تماس با ما


ارسال مبحث جدید  پاسخ
 
LinkBack ابزارهای موضوع جستجو این تاپیک حالت نمایش
قدیمی 10-03-2018   #1 (لينک اين پست)
عضو پرشين سون
 
آواتار moeintnt
 
تاريخ عضويت: Aug 2018
پست ها: 93
تشكرها (از ديگران): 1
تشكر شده 16 بار در 14 پست
چوق: 67,727
فعاليت Longevity
4/20 1/20
Today پست ها
sssssss93

عکسهای خریداری شده
پيش فرض زبان برنامه نویسی c

آموزش برنامه نویسی به زبان c


ویژگی هایی که زبان برنامه نویسی C را منحصر بفرد می سازد





برنامه نویسی به زبان c را می توان مادر تمام زبان های برنامه نویسی مدرن به شمار آورد. تقریبا تمام زبان های برنامه نویسی که امروزه مورد استفاده قرار می گیرند، حداقل چند ویژگی از این زبان را به ارث برده اند.
زبانC به صورت گسترده برای توسعه نرم افزارهای کوچکترین میکروکامپیوترها تا بزرگترین کارخانه ها و ابر کامپیوترها به کار گرفته شده است.
اپلیکیشن های نوشته شده به زبان C شامل نرم افزارهای سیستمی، دسکتاپ، شرکتی، دیتابیس و غیره می باشد. در ادامه مقاله اصول این زبان شرح داده شده که می تواند در شروع موفقیت آمیز یک دوره برنامه نویسی تاثیر زیادی داشته باشد.
تاریخچه زبان C


توسعه برنامه نویسی به زبان c ارتباط نزدیکی با یونیکس داشته است. این زبان در سال 1972 توسعه داده شده اما بسیاری از ویژگی ها در سال های بعد به آن اضافه شده است.
پیش از توسعه زبان C، سیستم عامل یونیکس با استفاده از زبان اسمبلی برای کامپیوتر PDP-7 توسعه داده شده بود. بعدها بر اساس این پلتفرم و با استفاده از زبان اسمبلی کامپایلری برای C طراحی شد. دراین زمان زبان C برای تسهیل توسعه خود یونیکس طراحی شده بود. با استفاده از این کامپایلر، یونیکس برای کامپیوترPDP-7 در زبان C به صورت کامل بازنویسی شد. علاوه براین، کامپایلر زبان C نیز در زبان C و با استفاده از ابزارهای فوق العادهlex و yacc مجددا بازنویسی شد و از این طریق فرایند بوت‌استرپ (چارچوب انتهایی) C و یونیکس کامل شد.
دلیل اصلی بازنویسی یونیکس به زبان C ایجاد قابلیت جابجایی بود. از آنجایی که زبان های اسمبلی نسبت به معماری های مختلف CPU متفاوت هستند، پورت کردن سیستم عامل یونیکس برای هر یک از آنها نیازمند تلاش فراوانی بود. با توسعه یک زبان برنامه نویسی مثل C و بازنویسی سیستم عامل یونیکس به زبان C فرایند پورت کردن تا حد زیادی تسهیل می شد.
پس از توسعه این زبان، برنامه نویسان پی بردند که علاوه برنوشتن نرم افزارهای سیستمی، در موارد دیگری نیز می توان از آن استفاده کرد. بنابرین این افراد از زبان C برای نوشتن نرم افزارهایی از قبیل سرور فایل، سرورهای دیتابیس، پشته های شبکه، نزم افزار دسکتاپ و بعدا برای توسعه سرورهای وب و غیره استفاده کردند. در سال 1978 برایان کرنیگن و دنیس ریچی کتاب زبان برنامه نویسی C را منتشر کردند که تا سال 1989 و استاندارد سازی این زبان توسط ANSI به عنوان یک راهنمای غیر رسمی مورد استفاده قرار می گرفت.
گفتنی است آخرین نسخه منتشر شده از این زبان C11 نام دارد و در سال 2011 منتشر شده است.

آیا C و C++ با هم ارتباطی دارند؟






با افزایش پیچیدگی برنامه هایی که در C نوشته می شدند، مفاهیم شی گرایی از قبیل کپسوله سازی و چند ریختی برای مدیریت این پیچیدگی ها مورد استفاده قرار گرفتند که در نهایت به توسعه زبان C++ منجر شد.
C++ با اضافه کردن چند ویژگی خاص به زبان C به منظور توسعه نرم افزارهای شی گرا توسعه پیدا کرد. ایده اصلی توسعه این زبان ایجاد تغییرات تدریجی در زبان C بود به گونه ای که بتوان C و ماژول C++ را در یک برنامه و از طریق یک کامپایلر باهم ترکیب کرد. این مساله امکان استفاده مجدد از ماژول های قدیمی C را در برنامه های بزرگ نوشته شده با استفاده از مفاهیم شی گرایی فراهم می کرد.
از نظر تئوری می توان یک برنامه C را بدون هیچ تغییری در کامپایلر C++ کامپایل کرد. با این حال در عمل بررسی سختگیرانه تر کدها در کامپایلر C++ خطاهایی را شناسایی می کنند که پیش از کامپایل باید اصلاح شوند.
زبان C نسبت به قدرتی که دارد بسیار ساده است. این زبان تنها 32 کلمه کلیدی با معنای خاص دارد در حالی که C++ 82 کلمه کلیدی، جاوا 50 کلمه کلیدی، جاوا اسکریپت 63 کلمه کلیدی و COBOL 357 کلمه کلیدی دارد. تصویر کنید به خاظر سپردن صدها کلمه کلیدی و کاربردهای آنها تا چه می تواند دشوار باشد. زبان C برخلاف بسیاری از زبان های مدرن، هیچ رشته خاصی ندارد. در این زبان رشت ها به عنوان آرایه ای از کاراکتها در نظر گرفته می شود که با کاراکتر 0 ( با “\0” نشان داده می شود) پایان می یابد.
طول این رشته از طریق یک قرار داد مشخص می شود: تعداد کارکترها تا کاراکتر 0. با این حال میتوانید این قرارداد را نادیده گرفته و کاراکترهای قبل از “\0” را شمارش کرده یا ذخیره کنید.







گفتنی است عدم وجود نوع خاصی از کاراکتر یا قرارداد مذکور در سال های گذشته به باگ های فراوانی از قبیل سرریز بافر منجر شده است.
برای مثال اولین کرمی که به اینترنت راه پیدا کرد موریس نام داشت، و در نتیجه وقوع همین باگ در بخش مهمی از نرم افزار سیستم به نام فینگر دایمون ایجاد شده بود. در مثال زیر احتمال بالای وقوع این باگ در یک برنامه نشان داده شده است. این برنامه کامپایل می شود اما خطای سرریز بافر در آن رخ می دهد:# include
main()
}
;"char *buf = "hello world
;'buf[12] = 'a
;(printf("%s\n", buf
{


برخلاف برنامه نویسی به زبان c در بیشتر زبان های مدرن نوع رشته باید دقیقا مشخص شود . حتی در C++ هم پیش از کامپایل کد بالا باید با افزودن کد std::stringtype نوع رشته را مشخص کرد.
اشاره گر مرجعی به یک مکان در حافظه است. C از نظر خواندن و نوشتن مکان های حافظه انعطاف پذیری بالایی دارد. با این حالا این انعطاف پذیری هزینه زیادی به دنبال داشته و منشا باگ های بسیاری بوده است.
مهم ترین و تاثیرگذارترین باگ های ناشی از این انطعاف پذیری که اینترنت را تحت تاثیر قرار می دهند در سرورهای وب، ایمیل و FTP رخ می دهند. حتی امروزه نیز شاهد وقوع باگهایی در زمینه درج و بروزرسانی مکان های نامعتبر در حافظه هستیم.




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

آرایه ها و اشاره گرها را می توان به جای هم مورد استفاده قرار داد


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

کاربردهای گسترده تعریف کردن ماکروها


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

ماژول های کپسوله شده در فایل ها


C مفهومی به نام کلاس ندارد و به همین خاطر از آشکاری محافظت شده، عمومی و خصوصی پشتیبانی نمی کند. تنها کپسوله سازی ممکن در C، به فایل ها برمی گردد. توابع، متغیرهای جهانی و انواع متغیرهایی که در یک فایل منبع نوشته می شوند در آن فایل نمایان هستند مگر اینکه نام های آنها صادر شده باشد.
کلمات کلیدی static و extern به منظور کنترل نمایانی اسامی توابع و متغیرها ارائه شده اند.
از طرف دیگر زبان هایی از قبیل C++، جاوا و پایتون از کلاس ها و کپسوله سازی مربوط به آنها پشتیبانی می کنند.

کتابخانه های خارجی


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





آخرین ویرایش توسط Hamed.Hamishe Abi در 10-06-2018
moeintnt آفلاین است   پاسخ به نقل قول چوق/پاداش
پاسخ

به اشتراک بگذارید

برچسب ها
نویسی, برنامه, زبان


كاربران در حال ديدن تاپیک: 1 (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو این تاپیک
جستجو این تاپیک:

جستجوی پیشرفته
حالت نمایش

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

BB code : فعال
شکلکها : فعال
[IMG] : فعال
HTML : غیر فعال
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال

خط مشی بانک مرکزی
جهت ارسال تاپیک جدید: 100 چوق
جهت ارسال پست: 50 چوق
به ازای هر کارکتر در پست : 1 چوق


زمان محلی شما با تنظیم GMT +3.5 هم اکنون 04:05 AM میباشد.

Powered by vBulletin .
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.