زبان برنامه نویسی سی/پیش درآمدی بر برنامه نویسی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
Amir.Vector (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱:
[[پرونده:Cprogramming.jpg|وسط|جایگزین=زبان برنامه‌نویسی سی C|وسط|جلد کتاب]]
 
{{سرص|زبان برنامه نویسی سی|زبان برنامه نویسی سی/آشنایی با زبان های برنامه نویسی}}
''این کتاب را تقدیم می‌کنم به سرکار علّیه خانم '''شقایق جعفری جوزانی'''''
 
امروزه بیشتر امور ،امور، به صورت خودکار انجام می‌شوند . بعد از انقلاب رنسانس و صنعتی در اروپا ،اروپا، جهان به سمت ماشینی و روتین شدن پیش رفت . اما علم الکترونیک باعث شد تا کارها با دقت و کلیت و سرعت بیشتری انجام پذیرند . اختراع ترانزیستورها و در نهایت مدار های میکروسکوپی و کوانتومی ،کوانتومی، منجر به پیشرفت چشمگیر علم الکترونیک شد و در نهایت کامپیوتر یا همان رایانه اختراع شد و پا به عرصه وجود گذاشت . رایانه برخلاف دستگاه‌های الکترونیکی دیگر ،دیگر، قابل برنامه‌ریزی است . اما این برنامه‌ریزی در ابتدا با ورق‌هایی پر از حفره انجام میشد که می‌توانست به پردازشگر بفهماند که باید چه کاری انجام دهد ( به این ورقه‌ها punch card گفته می‌شد )
 
برخلاف یک دستگاه دی‌وی‌دی که تنها می‌تواند کارهایی را که از پیش برای آن در نظر گرفته شده انجام دهد؛ یک رایانه ،که امروزه شامل تبلت‌ها و گوشی‌های همراه هوشمند و بسیاری دیگر از دستگاه‌های الکترونیکی دیگر می‌شود می‌تواند مدام برنامه‌های مختلفی را دریافت کند و بر اساس آنها عمل کند. همان طور که گفته شد در ابتدای امر، کار برنامه دادن به رایانه، بسیار مشکل بود، گرچه کارهایی که در آن زمان انجام می‌شدند آنقدر ساده بودند که به هیچ وجه با پردازش‌هایی که رایانه‌ها و برنامه‌های امروزی انجام می‌دهند قابل مقایسه نیستند. اما این حفره ها به مثابه 0 و 1 بودند ! اما 0 و 1 چیستند ؟ رایانه، یک دستگاه دیجیتالی است ؛است؛ بر خلاف دستگاه‌های الکترونیکیِ قدیمی که آنالوگ بودند و سیگنال‌ها از طریق موج‌هایی که بر روی جریان الکتریکی ایجاد می‌شدند ،می‌شدند، رفت و آمد می‌کردند ؛می‌کردند؛ در دستگاه‌های الکترونیکی دیجیتالی ،دیجیتالی، سیگنال‌ها با قطع و وصلِ جریان ،جریان، رفت و آمد می‌کنند . وجود جریان ( یا وجود بار ) نماینده عدد « ۱ » و عدم وجود جریان ( یا عدم وجود بار ) نماینده عدد « ۰ » می‌باشند و بدین‌ترتیب با جریان الکتریکی که مرتب قطع-و-وصل می‌شود که تحت استانداردها و پروتکل‌های الکترونیکی است ،است، سیگنال‌ها رفت و آمد می‌کنند ( سیگنال به معنی پیام است که در علوم برق و الکترونیک به جریان الکتریکی یا امواج الکترومغناطیسی‌ای گفته می‌شود که دارای معنای خاصی باشد ) بنابراین زبان واقعی ماشین و از جمله رایانه یا کامپیوتر ،رایانه، زبان 0 و 1 می باشد که جهت سهولت در کار ،کار، سیگنال ها را که همان 0 و 1 می باشند و در مبنای ۲ هستند ( دودویی ) به مبناهای دیگری همچون ۴۴، ، ۸ ،۸، ۱۰ و ۱۶ تبدیل می نمایند . اما این کار باز هم باعث سهولت مطلوبی نمی گردد . برنامه نویسی به زبان ماشین فوق‌العاده امری دشوار و وقت‌گیر است . اما فراموش نکنید که برای نوشتن هسته ( کرنل ) یک سیستم عامل ( که مجموعه ای از نرم افزارها و میان افزارها جهت مدیریت سخت‌افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) یا درایور یک دستگاه الکترونیکی ،الکترونیکی، مطمئناً باید از زبان‌های سطح پائین استفاده نمائید و با سخت‌افزار ارتباط برقرار نمائید
''این کتاب را تقدیم می‌کنم به سرکار علّیه خانم '''شقایق جعفری جوزانی'''''
در دهه های دور ،دور، زبانی برای تلفیق با زبان ماشین و سهولت در برنامه‌نویسی ابداع شد که زبان اسمبلی ( Assembly ) نام دارد و هنوز هم به کار می‌رود و این زبان دارای کدهایی می باشد که که هر کد ،کد، نماینده یک عمل پردازنده رایانه ( واحد پردازشگر مرکزی Central Processing Unit - CPU ) می‌باشد و بدین ترتیب کار تا حدی آسان شد . بعد از گذشت زمان ،زمان، مهندسین دانش رایانه زبان های بسیار زیادی را ارائه کردند که همگی جزء زبان های سطح بالا ( زبان‌های نزدیک به زبان و فهم انسان ) به شمار می‌روند و کار نوشتن برنامه و برنامه دادن به رایانه را تا حد زیادی آسان می‌نمایند
<br>
این نکته را فراموش نکنید که زبان ماشین برای هر پردازنده مجزا می باشد . به دنبال آن نیز زبان اسمبلی سی‌پی‌یو ( و نه اسمبلیِ سطح بالا ) نیز برای هر پردازنده جدا می باشد . به غیر از این دو زبان ،زبان، تمامی زبان‌ها ،زبان‌ها، سطح بالا به شمار می روند . مزیت زبان‌های سطح پائین این است که شما هیچ گونه محدودیتی در نوشتن برنامه ندارید و از کرنل سیستم عامل گرفته تا برنامه های جانبیجانبی، ، خدماتی ،خدماتی، کاربردی و ... همه را می توانید بنویسید . اما این نکته مهم ،مهم، همچنان وجود دارد که اگر برنامه ای را بخواهید برای ماشین های مختلف بنویسید باید برای هر کدام از نو برنامه را نوشته و سپس اجرا کنید . از طرفی اگر اشتباهی مرتکب شوید ممکن است به سیستم آسیب وارد کنید . از زبان‌های سطح پائین ،پائین، معمولاً فقط در نوشتن میان‌افزار و کرنل سیستم عامل استفاده می‌شود و البته تمام کرنل یا سیستم عامل را به زبان اسمبلی نمی‌نویسند ؛نمی‌نویسند؛ بلکه از زبانی نزدیک به اسمبلی مثل سی استفاده می‌کنند و در داخل کدهای C از کدهای اسمبلی کمک می‌گیرند ( هرگاه زبان سی پاسخگوی نیاز ما برای ارتباط با سخت‌افزار نباشد )
<br>
ربان برنامه‌نویسی، زبانی برای نوشتن کدهایی است که در چارچوب خاصی نوشته می‌شوند تا ترجمه آن به زبان هایماشین امکان‌پذیر باشد و سپس توسط به پیاده‌ساز زبان ( مثلاً کامپایلر Compiler ) به زبان ماشین یا زبان سیستم عامل ترجمه می‌شوند و یا توسط مفسر ( interpreter ) بدون ترجمه به زبان ماشین، تفسیر شده و به اجرا در می‌آیند. هر چه زبان، سطح پائین‌تری داشته باشد، در نوشتن برنامه وظیفه بیشتری به شما واگذار می‌شود و حتی برای نوشتن برنامه‌های ساده نیز باید مدت‌های طولانی‌تری نسبت به زبان‌های سطح بالا ،کدنویسی کنید زبان های سطح بالا، زبان هایی هستند که مجموعه‌ای از نیاز های برنامه‌نویسی را که به صورت متداول در برنامه‌نوسی به کار می‌روند را با زبان‌های سطح پائین نوشته‌اند تا برنامه‌نویس به راحتی و در کم‌ترین زمان ،زمان، برنامه مورد نیاز خود را بنویسد و بدون نیاز به تغییر کد ( یا با کم‌ترین تغییر در کد ) آن را روی هر ماشینی پیاده سازی نماید . زبان هایی همچون Pascal ،Pascal، ALGOL 68 ،68، Ada و در نهایت زبان C و خانواده آن که شامل Objective-C و ++C می شود و بسیاری از زبان ها که تأثیر گرفته از سی هستند همگی زبان های سطح بالا هستند و زبان هایی همچون COBOL ( کوبول ) یا Python ( پایتون ) زبان های خیلی سطح بالا محسوب می شوند . با نوشتن برنامه ،برنامه، شما این قابلیت را به رایانه می دهید تا کارهای مورد نیاز یا مد نظر شما را به صورت روتین انجام دهد
<br>
زبان‌های برنامه‌نویسی با کمک دستورها ،دستورها، عملگرها و داده‌ها ،داده‌ها، امکاناتی را نظیر پردازش بر روی اعداد ،اعداد، حروف و متون ،متون، برقراری ارتباط با سخت افزار و ارتباط با ورودی‌ها و خروجی‌های سیستم را فراهم می نمایند . ضمن اینکه خطا در زبان های سطح بالا توسط مجموعه برنامه‌های پیاده‌ساز رفع می گردد و به عبارتی Debug ( رفع اشکال ) می‌شود.
 
امروزه بیشتر امور ، به صورت خودکار انجام می‌شوند . بعد از انقلاب رنسانس و صنعتی در اروپا ، جهان به سمت ماشینی و روتین شدن پیش رفت . اما علم الکترونیک باعث شد تا کارها با دقت و کلیت و سرعت بیشتری انجام پذیرند . اختراع ترانزیستورها و در نهایت مدار های میکروسکوپی و کوانتومی ، منجر به پیشرفت چشمگیر علم الکترونیک شد و در نهایت کامپیوتر یا همان رایانه اختراع شد و پا به عرصه وجود گذاشت . رایانه برخلاف دستگاه‌های الکترونیکی دیگر ، قابل برنامه‌ریزی است . اما این برنامه‌ریزی در ابتدا با ورق‌هایی پر از حفره انجام میشد که می‌توانست به پردازشگر بفهماند که باید چه کاری انجام دهد ( به این ورقه‌ها punch card گفته می‌شد )
 
برخلاف یک دستگاه دی‌وی‌دی که تنها می‌تواند کارهایی را که از پیش برای آن در نظر گرفته شده انجام دهد ؛ یک رایانه که امروزه شامل تبلت‌ها و گوشی‌های همراه هوشمند و بسیاری دیگر از دستگاه‌های الکترونیکی دیگر می‌شود می‌تواند مدام برنامه‌های مختلفی را دریافت کند و بر اساس آنها عمل کند . همان طور که گفته شد در ابتدای امر ، کار برنامه دادن به رایانه ، بسیار مشکل بود ، گرچه کارهایی که در آن زمان انجام می‌شدند آنقدر ساده بودند که به هیچ وجه با پردازش‌هایی که رایانه‌ها و برنامه‌های امروزی انجام می‌دهند قابل مقایسه نیستند . اما این حفره ها به مثابه 0 و 1 بودند !
اما 0 و 1 چیستند ؟
رایانه ، یک دستگاه دیجیتالی است ؛ بر خلاف دستگاه‌های الکترونیکیِ قدیمی که آنالوگ بودند و سیگنال‌ها از طریق موج‌هایی که بر روی جریان الکتریکی ایجاد می‌شدند ، رفت و آمد می‌کردند ؛ در دستگاه‌های الکترونیکی دیجیتالی ، سیگنال‌ها با قطع و وصلِ جریان ، رفت و آمد می‌کنند . وجود جریان ( یا وجود بار ) نماینده عدد « ۱ » و عدم وجود جریان ( یا عدم وجود بار ) نماینده عدد « ۰ » می‌باشند و بدین‌ترتیب با جریان الکتریکی که مرتب قطع-و-وصل می‌شود که تحت استانداردها و پروتکل‌های الکترونیکی است ، سیگنال‌ها رفت و آمد می‌کنند ( سیگنال به معنی پیام است که در علوم برق و الکترونیک به جریان الکتریکی یا امواج الکترومغناطیسی‌ای گفته می‌شود که دارای معنای خاصی باشد ) بنابراین زبان واقعی ماشین و از جمله رایانه یا کامپیوتر ، زبان 0 و 1 می باشد که جهت سهولت در کار ، سیگنال ها را که همان 0 و 1 می باشند و در مبنای ۲ هستند ( دودویی ) به مبناهای دیگری همچون ۴ ، ۸ ، ۱۰ و ۱۶ تبدیل می نمایند . اما این کار باز هم باعث سهولت مطلوبی نمی گردد . برنامه نویسی به زبان ماشین فوق‌العاده امری دشوار و وقت‌گیر است . اما فراموش نکنید که برای نوشتن هسته ( کرنل ) یک سیستم عامل ( که مجموعه ای از نرم افزارها و میان افزارها جهت مدیریت سخت‌افزار و از طرفی فراهم نمودن محیطی برای ایجاد برنامه می باشد ) یا درایور یک دستگاه الکترونیکی ، مطمئناً باید از زبان‌های سطح پائین استفاده نمائید و با سخت‌افزار ارتباط برقرار نمائید
 
در دهه های دور ، زبانی برای تلفیق با زبان ماشین و سهولت در برنامه‌نویسی ابداع شد که زبان اسمبلی ( Assembly ) نام دارد و هنوز هم به کار می‌رود و این زبان دارای کدهایی می باشد که که هر کد ، نماینده یک عمل پردازنده رایانه ( واحد پردازشگر مرکزی Central Processing Unit - CPU ) می‌باشد و بدین ترتیب کار تا حدی آسان شد . بعد از گذشت زمان ، مهندسین دانش رایانه زبان های بسیار زیادی را ارائه کردند که همگی جزء زبان های سطح بالا ( زبان‌های نزدیک به زبان و فهم انسان ) به شمار می‌روند و کار نوشتن برنامه و برنامه دادن به رایانه را تا حد زیادی آسان می‌نمایند
 
این نکته را فراموش نکنید که زبان ماشین برای هر پردازنده مجزا می باشد . به دنبال آن نیز زبان اسمبلی سی‌پی‌یو ( و نه اسمبلیِ سطح بالا ) نیز برای هر پردازنده جدا می باشد . به غیر از این دو زبان ، تمامی زبان‌ها ، سطح بالا به شمار می روند . مزیت زبان‌های سطح پائین این است که شما هیچ گونه محدودیتی در نوشتن برنامه ندارید و از کرنل سیستم عامل گرفته تا برنامه های جانبی ، خدماتی ، کاربردی و ... همه را می توانید بنویسید . اما این نکته مهم ، همچنان وجود دارد که اگر برنامه ای را بخواهید برای ماشین های مختلف بنویسید باید برای هر کدام از نو برنامه را نوشته و سپس اجرا کنید . از طرفی اگر اشتباهی مرتکب شوید ممکن است به سیستم آسیب وارد کنید . از زبان‌های سطح پائین ، معمولاً فقط در نوشتن میان‌افزار و کرنل سیستم عامل استفاده می‌شود و البته تمام کرنل یا سیستم عامل را به زبان اسمبلی نمی‌نویسند ؛ بلکه از زبانی نزدیک به اسمبلی مثل سی استفاده می‌کنند و در داخل کدهای C از کدهای اسمبلی کمک می‌گیرند ( هرگاه زبان سی پاسخگوی نیاز ما برای ارتباط با سخت‌افزار نباشد )
 
ربان برنامه‌نویسی ، زبانی برای نوشتن کدهایی است که در چارچوب خاصی نوشته می‌شوند تا ترجمه آن به زبان ماشین امکان‌پذیر باشد و سپس توسط به پیاده‌ساز زبان ( مثلاً کامپایلر Compiler ) به زبان ماشین یا زبان سیستم عامل ترجمه می‌شوند و یا توسط مفسر ( interpreter ) بدون ترجمه به زبان ماشین ، تفسیر شده و به اجرا در می‌آیند . هر چه زبان ، سطح پائین‌تری داشته باشد ، در نوشتن برنامه وظیفه بیشتری به شما واگذار می‌شود و حتی برای نوشتن برنامه‌های ساده نیز باید مدت‌های طولانی‌تری نسبت به زبان‌های سطح بالا کدنویسی کنید
زبان های سطح بالا ، زبان هایی هستند که مجموعه‌ای از نیاز های برنامه‌نویسی را که به صورت متداول در برنامه‌نوسی به کار می‌روند را با زبان‌های سطح پائین نوشته‌اند تا برنامه‌نویس به راحتی و در کم‌ترین زمان ، برنامه مورد نیاز خود را بنویسد و بدون نیاز به تغییر کد ( یا با کم‌ترین تغییر در کد ) آن را روی هر ماشینی پیاده سازی نماید . زبان هایی همچون Pascal ، ALGOL 68 ، Ada و در نهایت زبان C و خانواده آن که شامل Objective-C و ++C می شود و بسیاری از زبان ها که تأثیر گرفته از سی هستند همگی زبان های سطح بالا هستند و زبان هایی همچون COBOL ( کوبول ) یا Python ( پایتون ) زبان های خیلی سطح بالا محسوب می شوند . با نوشتن برنامه ، شما این قابلیت را به رایانه می دهید تا کارهای مورد نیاز یا مد نظر شما را به صورت روتین انجام دهد
 
زبان‌های برنامه‌نویسی با کمک دستورها ، عملگرها و داده‌ها ، امکاناتی را نظیر پردازش بر روی اعداد ، حروف و متون ، برقراری ارتباط با سخت افزار و ارتباط با ورودی‌ها و خروجی‌های سیستم را فراهم می نمایند . ضمن اینکه خطا در زبان های سطح بالا توسط مجموعه برنامه‌های پیاده‌ساز رفع می گردد و به عبارتی Debug ( رفع اشکال ) می‌شود
[[رده:زبان برنامه نویسی سی]]