برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم
الگوریتم (نسبت: الگوریتمی، خوارزمیک) یا خوارزمی مجموعهای متناهی از دستورالعملها است، که به ترتیب خاصی اجرا میشوند و مسئلهای را حل میکنند. به عبارت دیگر یک الگوریتم، روشی گام به گام برای حل مسئله است. شیوه محاسبه معدل در مدرسه، یکی از نمونههای الگوریتم است.
ریشه واژهٔ الگوریتمواژه الگوریتم از نام ریاضیدان و ستارهشناس و جغرافیدان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده است، که در خوارزم زاده شد و در دانشگاه «بیت الحکمه» بغداد به اوج شهرت رسید. خوارزم یکی از شهرهای «ایران بزرگ» بود، که امروزه در ازبکستان واقع شده است و خیوه نام دارد. رسالهای که خوارزمی در قرن ۹ میلادی به عربی نگاشته بود، در قرن ۱۲ بهلاتین با نام "Algoritmi de numero Indorum" ترجمه شد؛ یعنی "[کتابی بدست] «الگوریتمی» در مورد اعداد هندی"، که «الگوریتمی» نام الخوارزمی بود که مترجم در تبدیل به لاتین نام وی را جلوی نام اصلی کتاب (در مورد اعداد هندی) آورده بود. در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای «سیستم شمارش عربی (دهدهی)» (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن (رادیکال) هم الگوریسم نامیده میشود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عامتر امروزیاش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال رایانهای به کار رود» الگوریتم گفته شد.
تبدیل نام الخوارزمی به الگوریسم و سپس الگوریتم احتمالاً تحت تأثیر واژه یونانی arithmos (به معنای عدد) و arithmetic (به معنای محاسباتی) بوده است. برخی منابع هم کلمه لگاریتم را هم در تبدیل الگوریسم و الگوریتم بی تأثیر ندانستهاند.
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبان برنامهنویسی سی، زبانی همه منظوره، ساختیافته، دستوری و روندگرا میباشد که در سال ۱۹۷۲ توسط دنیس ریچی در آزمایشگاههای بل ساخته شد.
پیشینهدر سال ۱۹۶۷ مارتین ریچاردز زبان BCPL را برای نوشتن نرمافزارهای سیستمعامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامسون بل زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخههای سیستمعامل یونیکس در آزمایشگاههای بلاستفاده کرد. زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع دادهها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستمعامل یونیکس استفاده کرد اما بعدها اکثر سیستمعاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال ۱۹۷۸ توسط برایان کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.
متأسفانه استفاده گسترده این زبان در انواع کامپیوترها و سختافزارهای مختلف باعث شد که نسخههای مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال ۱۹۸۳ مؤسسه استانداردهای ملی آمریکا (ANSI) کمیتهای موسوم به X3J11 را را مأمور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید. در سال ۱۹۸۹ این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال ۱۹۹۰، سازمان بینالمللی استانداردسازی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.
در سالهای بعد و با ظهور روشهای برنامهنویسی شئگرا نسخه جدیدی از زبان C بنام C++ توسط بییارنه استراستروپ در اوایل ۱۹۸۰ در آزمایشگاههای بل توسعه یافت. در C++ علاوه بر امکانات جدید، خاصیت شئگرایی نیز به C اضافه شدهاست.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامههای آن بتوانند برروی هر ماشین و هر سیستمعامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبانجاوا را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده میشود و برنامههای نوشته شده به آن برروی هر کامپیوتری که از جاوا پشتیبانی کند (تقریباً تمام سیستمهای شناخته شده) قابل اجرا میباشد.
فهرست مطالب:
فصل اول: مفاهیم اولیه
الگوریتم
شرایط الگوریتم ها
فلوچارت
نوع داده مجرد
انواع توابع یک نوع داده
بررسی نحوه اجرای برنامه
و...
فصل دوم: زبان برنامه نویسی
مقدمه
ویژگی های مهم زبان C
کاراکتر
شناسه
متغیر
علامت توضیح
ساختار برنامه ها
دستورالعمل های اجرایی
و...
فصل سوم: انواع داده ها
مقدمه
انواع داده های اسکالر
انواع داده های غیر اسکالر
اعلان متغیرها
داده های صحیح
مقادیر ثابت صحیح
داده های اعشاری
داده های کاراکتری
و...
فصل چهارم: توابع ورودی و خروجی
مقدمه
تابع () printf
کاراکتر فرمت n%
تابع () scanf
و...
فصل پنجم: ساختارهای کنترلی و شرطی
مقدمه
دستور کنترلی while
دستور کنترلی do while
دستور کنترلی for
دستورهای شرطی if و if-else
دستور شرطی switch
و...
فصل ششم: برنامه سازی پیمانه ای
مقدمه
تعریف تابع
دستور return
فراخوانی تابع
تابع بازگشتی
استفاده از چند تابع
پارامترهای خط فرمان
و...
فصل هفتم: آرایه
مقدمه
تعریف آرایه
اندیس آرایه
مقداردهی اولیه آرایه
آرایه های چند بعدی
انتقال آرایه به یک تابع
آرایه ها و رشته ها
و...
فصل هشتم: اشاره گر
مقدمه
تعریف اشاره گر
آدرس متغیر
مقداردهی اولیه اشاره گر
اشاره گر تهی
عملیات روی اشاره گرها
و...
فصل نهم: نوع داده کاربر
مقدمه
ساختار
ساختارهای تو در تو
اختصاص مقادیر اولیه
آرایه ای از ساختارها
پردازش یک ساختار
انتقال ساختار به تابع
داده تعریف شده توسط کاربر
و...
فصل دهم: پشته و صف
مقدمه
نوع داده مجرد پشته
پشته چندگانه
ارزشیابی عبارات infix ،postfix ،prefix
نوع داده مجرد صف
صف حلقوی
و...
فصل یازدهم: ساختار درختی
مقدمه
درخت
نمایش درخت
نمایش لیست
نمایش فرزند چپ ـ همزاد راست
نمایش دودویی یک درخت
درخت دودویی
تفاوتهای درخت عادی با درخت دودویی
خواص درختان دودویی
درخت دودویی پر
و...
فصل دوازدهم: فایل
مقدمه
انواع فایل
بازکردن و بستن فایل
توابع کار با فایل ها
فایل های ورودی و خروجی
توابع دیگر
دستگاههای ورودی و خروجی استاندارد
و...
فصل سیزدهم: توابع کتابخانه ای
مقدمه
توابع تبدیل نوع
توابع ریاضی
توابع کاراکتری
توابع رشته ای
توابع تخصیص حافظه پویا
و...
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم