بایگانی برچسب‌ها : برنامه نویسی

زبان اسمبلی Assembly Language

زبان اسمبلی یا Assembly Language چیست؟

زبان اسمبلی (Assembly Language) یک زبان برنامه نویسی سطح پایین است که نزدیکی بالایی به دستورالعمل‌های ماشین دارد. این زبان به اختصار با نام ASM نیز شناخته می‌شود.

ویژگی‌های زبان اسمبلی

برخلاف اکثر زبان‌های برنامه نویسی سطح بالا که (به واسطه کامپایلرها یا مفسرها) روی معماری‌های کامپیوتری مختلف قابل استفاده می‌باشند هر زبان اسمبلی، به صورت ویژه برای یک نوع معماری کامپیوتر طراحی می‌شود. بنابراین برنامه‌هایی که به این زبان‌ها نوشته می‌شوند اصطلاحا پرتابل (قابل حمل) نیستند و برای اجرا شدن روی ماشینی با معماری متفاوت لازم است برای همان معماری مجددا نوشته شوند.

به ازای هر دستورالعمل ماشین، ثبات و … معادل‌هایی سمبولیک در زبان اسمبلی وجود دارد. هر عمل همراه با یک یا چند عملوند در این زبان یک دستور را تشکیل می‌دهند.

اسمبلر

دستورات Assembly به منظور آماده شدن برای اجرا، با کمک برنامه‌ای به نام اسمبلر (Assembler) به کد ماشین تبدیل می‌شوند. این برنامه برای تولید آبجکت کد، نمادهای قابل حفظ کردن و مدهای آدرس دهی و عملیات‌های مختلف را به معادل‌های عددی دودویی آن ترجمه می‌کند. اسمبلرهای سطح بالا (High-level Assembler) ویژگی‌های زبان های سطح بالا نظیر تعریف توابع، ساختارهای کنترلی پیشرفته‌تر (نظیر IF) و شئ گرایی را با ویژگی‌های مرسوم ترکیب می‌کنند.

فرایند تبدیل دستورات Assembly به کد ماشین را اسمبلینگ (Assembling) سورس کد می‌نامند. عکس این عمل (تبدیل از زبان ماشین به Assembly) نیز توسط برنامه‌ای موسوم به Disassembler انجام می‌شود.

مثالی از یک دستور اسمبلی

معمولا در هر دستور Assembly پس از دستورالعمل، لیستی از داده‌ها یا پارامترها قرار می‌گیرد. به عنوان مثال در معماری 8086 از نماد MOV برای لود کردن داده در ثبات‌های پردازنده استفاده می‌شود. دستور زیر مقدار هگزادسیمال 61 (معادل عدد دهدهی 97) را در ثبات AL لود می‌کند:

MOV AL, 61h

این دستور توسط اسمبلر به رشته باینری زیر تبدیل می‌شود. این رشته به یک پردازنده با معماری x86 اعلام می‌کند عدد 97 را در ثبات AL قرار دهد. پنج بیت 10110 کد باینری مربوط به این دستورالعمل است و سه بیت بعدی (یعنی 000) مشخصه ثبات AL است. در نهایت 01100001 نیز معادل باینری عدد 97 است.

10110000 01100001

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

برنامه‌هایی که به یک زبان سطح بالا نوشته می‌شوند معمولا از نظر کارایی و سرعت به پای معادل همان برنامه که به یک زبان ASM نوشته شده است نمی‌رسند. بنابراین هرچند کدنویسی به زبان اسمبلی امری طاقت فرسا و زمانبر است اما در مورد کاربردهای خاصی نظیر تعامل مستقیم با سخت افزار و ایجاد برنامه‌هایی که نیاز به بهینه سازی حرفه‌ای دارند استفاده از این زبان مفید خواهد بود.

اسمبلی Assembly
نمونه ای از برنامه سلام دنیا به زبان اسمبلی

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

نوع داده بولی Boolean Data Type

نوع داده بولی یا Boolean Data Type چیست؟

بولی (بولین یا Boolean) در علوم رایانه نوع داده‌ای است که تنها می‌تواند یکی از دو مقدار ممکن را داشته باشد؛ معمولا مقادیر مجاز برای این نوع داده با True (به معنای درست) و False (به معنای نادرست) نمایش داده می‌شود.

این نوع داده برای تعیین ارزش عبارات منطقی و جبر بولی مورد استفاده قرار می‌گیرد. عنوان این نوع داده از روی نام جورج بول (George Boole) ریاضیدان انگلیسی گرفته شده است که اولین قدم‌ها را در زمینه سیستم جبری منطق برداشت.

کاربرد نوع داده Boolean

در زبان‌های برنامه نویسی، کاربرد اصلی این نوع داده در دستورات شرطی مشاهده می‌شود که با کمک آن‌ها می‌توان بسته به اینکه نتیجه ارزیابی یک شرط بولی درست یا نادرست باشد اعمال متفاوتی را انجام داد.

در اغلب زبان‌های برنامه نویسی که از این نوع داده پشتیبانی می‌کنند، عملگرهای مقایسه‌ای (نظیر تساوی، نامساوی، کوچکتر، بزرگتر و …) یک مقدار Boolean برمی‌گردانند که بیانگر صحت یا نادرستی شرط یا عبارت است. از این نوع عبارات شرطی می‌توان برای تعیین شرط در دستورات شرطی و یا حلقه ها استفاده نمود. همچنین از متغیرهای بولی برای ایجاد Flag (به عنوان نماینده وضعیت میانی یا خروجی مجموعه‌ای از اعمال که بسته به این وضعیت قرار است تصمیم‌گیری یا اعمال متفاوتی صورت گیرد) نیز استفاده می‌شود.

در قطعه کد زیر با کمک یک مثال ساده نحوه تعریف و مقداردهی یک متغیر بولی و استفاده از آن در زبان برنامه نویسی جاوا را مشاهده می‌کنید. در این زبان، مقدار پیشفرض برای متغیر تعریف شده از نوع داده boolean برابر با false است. از آنجایی که متغیر به true مقداردهی شده است با توجه به دستور شرطی، عبارت result is true در خروجی نمایش داده می‌شود.

boolean result;
result = true;
if (result == true) {
     System.out.println("result is true");
}
else {
     System.out.println("result is false");
}

پیوندهای پیشنهادی تک دیک

 لینک واژه در ویکیپدیا

منبع باز Open Source

منبع باز یا Open Source چیست؟

نرم افزار منبع باز یا متن باز (Open Source) به نرم افزارهایی گفته می‌شود که همراه با سورس کد عرضه می‌شوند و صاحب امتیاز نرم افزار مطالعه و بررسی، تغییر و توزیع آن را به صورت رسمی و با هر هدفی مجاز دانسته است. (نحوه خواندن این اصطلاح به صورت “منبعْ باز” می‌باشد.)

در نقطه مقابل این نوع نرم افزارها، نرم افزارهای مالکیتی یا اختصاصی (Proprietary software) قرار می‌گیرند که با عنوان منبع بسته (Closed Source) نیز شناخته می‌شوند.

نرم افزارهایی که منبع آن ها در اختیار عموم قرار گرفته است اما از لحاظ قانونی مجوز تغییر یا توزیع مجدد آن‌ها صادر نشده است به نرم افزارهای “سورس – در دسترس” (Source-Available) موسوم هستند.

از جمله رایج‌ترین محصولات منبع باز می‌توان به سرور اچ تی تی پی آپاچی (Apache HTTP Server)، مرورگر موزیلا فایرفاکس، مجموعه آفیس LibreOffice، ویرایشگرهای تصاویر GIMP و Inkscape و سیستم مدیریت محتوای وردپرس و جوملا اشاره کرد.

فواید و چالش‌های استراتژی منبع باز

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

با این وجود می‌توان گفت Open Source بودن در مورد امنیت نرم افزار همانند یک تیغ دولبه عمل می‌کند. از سویی تعداد بیشتری از متخصصین می‌توانند به بررسی سورس کد نرم افزار پرداخته و مشکلات امنیتی آن را تشخیص دهند و از سویی دیگر هکرها هم می‌توانند حفره‌های یک نرم افزار متن باز را بسیار آسانتر از نرم افزارهای معمولی پیدا کرده و در جهت اهداف شرورانه خود به کار بگیرند.

منبع باز - متن باز Open Source
نرم افزارهای Open Source

آرایه Array

آرایه یا Array چیست؟

آرایه (Array) ساختمان داده ای است متشکل از چندین عنصر (اِلِمان) که برای دسترسی به آن‌ها معمولا از یک اندیس استفاده می‌شود. موقعیت هر عنصر در حافظه از روی این اندیس محاسبه می‌شود.

ساده‌ترین نوع آرایه، آرایه‌ی خطی (Linear) یا تک بُعدی است. به عنوان مثال آرایه‌ای از نوع اعداد صحیح (Integer) با تعداد 5 عنصر را در زبان C++ در نظر بگیرید. این عناصر به اندیس‌های 0 تا 4 این آرایه منتسب می‌شوند. در صورتی که آدرس شروع آرایه در مموری برابر 1000 باشد با درنظر گرفتن اینکه هر مقدار Integer، چهار بایت حافظه نیاز دارد بنابراین پنج عنصر فوق آدرس‌های 1000 تا 1019 حافظه رم را اشغال خواهند کرد.

نوع متداول دیگری از آرایه‌ها که دو بعدی هستند با عنوان ماتریس نیز شناخته می‌شوند. معمولا برای دسترسی به هر عنصر در این آرایه‌ها از دو اندیس استفاده می‌شود، یکی برای سطر و دیگری برای ستون. به عنوان مثال اگر A یک آرایه‌ی دوبعدی با 3 سطر و 3 ستون باشد و اندیس شروع برابر 0 باشد A[1][2] به عنصر موجود در سطر دوم و ستون سوم اشاره می‌کند.

با وجود اینکه کاربرد آرایه‌های با ابعاد بالاتر به اندازه‌ی آرایه‌های خطی و دو بعدی نیست اما محدودیتی در ابعاد آرایه‌ها وجود ندارد. در عین حال تمامی عناصر یک Array باید از یک نوع باشند. معادل ریاضی آرایه، چندتایی (Tuple) می‌باشد.

آرایه ها ممکن است پویا (داینامیک یا Dynamic) باشند به این معنا که اندازه (یا ظرفیت) آن‌ها می‌تواند پس از ایجاد، افزایش یا کاهش داده شود درست برخلاف نوع استاتیک (Static) که در هنگام ایجاد شدن، ظرفیتشان به صورت ثابت مشخص می‌شود و غیرقابل تغییر است.

آرایه در زبان‌های برنامه نویسی کاربرد بسیار زیادی دارد و از مهم‌ترین انواع ساختمان داده‌ها به شمار می‌رود. حتی بسیاری از ساختمان داده‌های دیگر نظیر صف، پشته، رشته و … نیز با کمک آرایه پیاده‌سازی می‌شوند.

در اغلب زبان‌های برنامه نویسی، اندیس پیش فرض اولین عنصر آرایه برابر با 0 (نظیر خانواده زبان ‌های C و بیسیک) یا 1 (نظیر MATLAB و Fortran) می‌باشد و کران بالای اندیس‌ها براساس نیاز تعیین می‌شود.

در قطعه کد زیر نحوه‌ی تعریف و مقداردهی اولیه‌ی آرایه‌ای به نام Length با پنج عنصر در زبان C++ نمایش داده شده است.

int Length[5] = {16, 20, 27, 40, 45};

به منظور تجسم این Array می‌توان تصویر زیر را در نظر گرفت. اعداد بالای خانه‌های این تصویر نمایانگر اندیس عنصر متناظر هستند.

آرایه Array
تجسم تصویری یک Array با 5 عنصر – اعداد 16 و 20 و 27 و 40 و 45 عناصر آرایه هستند و اعداد 0 تا 4 که بالای سلول های عناصر قرار گرفته‌اند نمایانگر اندیس ها هستند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

متغیر Variable

متغیر یا Variable چیست؟

متغیر (Variable) در برنامه نویسی معادل با بخشی از حافظه است که جهت دسترسی آسان‌تر به محتوای مشخصی که در آن بخش نگه‌داری می‌شود با یک نام نمادین (یا مشخصه منحصربفرد) مرتبط شده است. این محتوا، مقدار (یا Value) نامیده می‌شود. معمولا در سورس کد از نام متغیر برای دسترسی به مقدار منتسب به آن استفاده می‌شود و این مقدار برخلاف مقدار ثوابت (Constant) می‌تواند در طول اجرای برنامه تغییر داده شود.

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

در ساختار اکثر زبان‌های برنامه نویسی قراردادهایی که برای نامگذاری متغیرها درنظر گرفته شده است تقریبا مشابه یکدیگر است. به عنوان مثال عموما نام یک متغیر نمی‌تواند با رقم شروع شود، هم‌چنین استفاده از فاصله و برخی کاراکترهای خاص در اکثر زبان‌ها ممنوع است. با اینحال استفاده از علامت _ برای ایجاد نام‌های چندکلمه‌ای امکان‌پذیر است. همچنین اغلب زبان‌های برنامه نویسی مدرن در مورد نام متغیرها به بزرگی و کوچکی حروف حساس (Case-Sensitive) هستند. به عنوان مثال اگر متغیری با نام xVar تعریف شده باشد باید برای دسترسی به آن دقیقا از همین نام (با حرف V بزرگ) استفاده شود.

بسته به زبان برنامه نویسی، برای هر Variable ممکن است یک نوع (Type) نیز تعریف شود که نشان‌دهنده‌ی نوع مقادیری است که به آن متغیر می‌توان تخصیص داد. متغیرها متناسب با نوع خود می‌توانند مقادیر مختلفی از جمله اعداد صحیح، رشته‌ها، کاراکترها، مقادیر بولی و … را در خود نگه‌داری کنند. بخش‌هایی از سورس کد که در آن می‌توان از متغیر استفاده نمود را قلمرو متغیر (Variable Scope) می‌نامند. کامپایلرها و مفسرها به جای نام متغیر از محل داده‌ی متناظر با آن روی حافظه برای انتساب یا خواندن مقدار استفاده می‌کنند.

نحوه‌ی تعریف متغیرها بسته به زبان برنامه نویسی مورد استفاده می‌تواند متفاوت باشد. به عنوان مثال در زبان C++ دستور int result=0; متغیری به نام result از نوع int (عدد صحیح) با مقدار اولیه 0 ایجاد می‌کند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

بایت Byte

بایت یا Byte چیست؟

بایت (Byte) یکی از واحدهای اندازه‌گیری اطلاعات دیجیتال است که معمولا از 8 بیت (bit) تشکیل شده است. در گذشته تعداد بیت‌های لازم برای کدگذاری یک کاراکتر در رایانه را بایت می‌نامیدند.

استاندارد رایج 8 بیتی برای بایت، امکان نمایش باینری اعداد صفر تا 255 را در یک بایت فراهم می‌آورد. البته در گذشته اندازه بایت متغیر و وابسته به سخت افزار بوده است. به همین دلیل در برخی مواقع برای از بین بردن ابهام Byte، از واژه‌ی اختصاصی‌تر Octet (اکتت) با نماد o به عنوان واحدی متشکل از 8 بیت استفاده می‌شود.

لازم به ذکر است نماد Byte، حرف B بزرگ می‌باشد. این در حالی است که معمولا از حرف b کوچک به عنوان نماد بیت استفاده می‌شود. اما به منظور جلوگیری از بروز تداخل میان این دو نماد، استفاده از نماد bit برای واحد بیت توصیه می‌شود.

پیشوندهای بایت

همانند بیت، برای Byte نیز از پیشوندهای کیلو (یا Kilo با نماد K معادل هزار)، مگا (یا Mega با نماد M معادل میلیون)، گیگا (یا Giga با نماد G معادل میلیارد)، ترا (یا Tera با نماد T معادل 10 به توان 12) و … استفاده می‌شود. بر این اساس 1KB معادل 1000 بایت، 1MB معادل یک میلیون بایت و … خواهد بود. به طور مشابه پیشوندهای باینری نظیر کیلوباینری (Ki معادل 1024 یا 2 به توان 10)، مگاباینری (Mi معادل 2 به توان 20) و … برای بایت نیز قابل استفاده هستند. در جدول زیر می‌توانید نماد تعدادی از واحدهای رایج و ضریبی که به آن‌ها منتسب شده است را مشاهده کنید.

ضریبنمادنام نمادضریبنمادنام نماد
103KBkilobyte210KiBkibibyte
106MBmegabyte220MiBmebibyte
109GBgigabyte230GiBgibibyte
1012TBterabyte240TiBtebibyte
1015PBpetabyte250PiBpebibyte
1018EBexabyte260EiBexbibyte
1021ZBzettabyte270ZiBzebibyte
1024YByottabyte280YiByobibyte

نوع داده بایت

در بسیاری از زبان‌های برنامه نویسی (از جمله جاوا، ویژوال بیسیک و سی شارپ) نیز نوع داده‌ای به نام Byte وجود دارد که 8 بیت فضا را اشغال می‌کند و معمولا برای نگه‌داری اعداد صحیح بدون علامت از 0 تا 255 یا اعداد صحیح علامتدار از -128 تا 127 استفاده می‌شود.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

کلاس Class

کلاس یا Class چیست؟

کلاس (Class) در برنامه نویسی شئ گرا، نوعی قالب برنامه نویسی قابل گسترش است که برای ایجاد اشیاء، تعیین مقادیر اولیه‌ی وضعیت و مشخص نمودن رفتار آن‌ها مورد استفاده قرار می‌گیرد.

شئ (یا آبجکت Object) هایی که از روی کلاس ساخته می‌شوند را یک نمونه (Instance) از آن کلاس می‌نامند. به عنوان مثالی ساده می‌توان کلاسی تحت عنوان Circle را در نظر گرفت که خصوصیات و اعمال (یا رفتار) اشیائی به نام دایره را تعریف می‌کند. با کمک این کلاس، برنامه‌نویس می‌تواند اشیاء (دایره‌های) مختلفی با خصوصیات (مرکز و شعاع) متفاوت ایجاد کند و اعمالی نظیر محاسبه شعاع و مساحت یا ترسیم دایره را روی هرکدام انجام دهد در حالی که تعریف و پیاده‌سازی تمامی این خصوصیات و اعمال یک بار حین تعریف کلاس صورت گرفته است.

آبجکت‌ها معمولا با کمک زیرروال خاصی به نام تابع سازنده‌ (Constructor) ایجاد می‌شوند. این تابع در بسیاری از زبان‌های برنامه نویسی هم نام خود کلاس بوده و وظیفه آماده‌سازی اولیه آبجکت و تعیین مقادیر اولیه متغیرها را برعهده دارد.

متغیرهایی که برای هر آبجکت متمایز و متفاوت هستند متغیرهای نمونه (Instance Variable) نامیده می‌شوند و وضعیت و خواص آن آبجکت را مشخص می‌کنند. متغیرهای دیگری نیز در Class ها تعریف می‌شوند که برای تمام اشیاء به اشتراک گذاشته می‌شود و به آن‌ها متغیرهای کلاس (Class Variable) می‌گویند (طبیعتا با تغییر مقدار این متغیرها توسط یک آبجکت مقدار آن در تمام آبجکت‌ها به همان صورت تغییریافته مشاهده می‌شود).

رفتار یک Class یا نمونه‌های آن توسط متدها (Method) یا توابع عضو (Member Function) مشخص می‌شود. متدها را نیز می‌توان به دو گروه متدهای نمونه و متدهای کلاس دسته‌بندی نمود. در واقع متدها عملی را روی آبجکت یا کلاس انجام می‌دهند.

به عنوان مثال می‌توان کلاسی با نام Employee (به معنای کارمند) در نظر گرفت. در این کلاس، می‌توان متغیرهایی برای نگه‌داری نام و نام خانوادگی، کد ملی، سمت، حقوق ماهیانه، بخش سازمانی و … مربوط به کارکنان یک شرکت یا سازمان تعریف نمود. تخصیص شغل و واریز حقوق به حساب کارمند از جمله اعمالی هستند که می‌تواند در قالب متدها تعریف شده و بخشی از رفتار آبجکت‌های از نوع Employee را تعیین کنند.

نمونه‌ای از تعریف یک Class ساده با دو متغیر عضو و تابع سازنده آن به زبان Visual Basic .Net:

Public Class Employee
    Public FirstName As String
    Public LastName As String
       
    Public Sub New(ByVal f_name As String, ByVal l_name As String)
        FirstName = f_name
        LastName = l_name
    End Sub
End Class   

تغییردهنده‌های سطح دسترسی امکان کنترل سطح دسترسی به کلاس‌ها، متدها و اعضای آن‌ها را فراهم می آورد. به عنوان مثال تنها متدهای یک کلاس می‌توانند به اعضای خصوصی (Private) آن کلاس دسترسی داشته باشند.

بسته به زبان‌های برنامه نویسی مختلف، ممکن است یک کلاس، کلاس دیگری را در بربگیرد یا با مشتق شدن (به ارث بردن رفتارها و متغیرها) از یک کلاس دیگر، رابطه‌ای سلسله مراتبی با کلاس‌های والد برقرار کند. برای مثال کلاس Employee می‌تواند از کلاسی به نام People (با عناصر و متدهای مرتبط با افراد) مشتق شود چرا که از نظر منطقی هر Employee یک People نیز به شمار می‌رود.

از مزایای استفاده از کلاس‌ها و برنامه‌نویسی شئ گرا می‌توان به قابلیت استفاده‌ی مجدد، عیب‌یابی و نگه‌داری ساده‌تر، توسعه‌پذیری و کارایی بالاتر اشاره کرد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

نوع داده Data Type

نوع داده یا Data Type چیست؟

نوع داده (Data Type) در برنامه‌نویسی، یک دسته‌بندی برای داده‌هاست که به کامپایلر یا مفسر اعلام می‌کند داده موردنظر به چه شکلی مورد استفاده قرار خواهد گرفت. در واقع این دسته‌بندی مشخص‌کننده‌ی گونه داده‌ها از قبیل اعداد صحیح (Integer)، اعداد ممیز شناور (Floating Point)، بولی (Boolean)، کاراکترها (Character)، رشته‌ها (String) و … است و برای هریک مقادیر ممکن، اعمالی که روی مقادیر داده‌های آن قابل انجام است و حتی نحوه‌ی نگه‌داری مقادیر آن نوع را معین می‌کند.

در زبان‌های برنامه‌نویسی، هنگام تعریف هر متغیر (Variable) می‌توان نوع داده‌ی آن را نیز مشخص نمود. انواع داده‌ای که پیشتر به تعدادی از آن‌ها اشاره شد از رایج‌ترین انواع داده‌ای هستند که در اغلب زبان‌ها با عناوین مختلف و البته شبیه به یکدیگر شناخته شده هستند. هر داده بسته به نوع خود و بازه‌ی مقادیر قابل استفاده، فضای متفاوتی را روی حافظه اشغال می‌کند. بنابراین یکی از وظایف برنامه نویس، تشخیص مناسب نوع داده‌ای است که باید برای یک متغیر تعریف کند تا ضمن عملکرد صحیح برنامه، بیش از اندازه‌ی مورد نیاز فضا اشغال نکند. به عنوان مثال، نوع int در زبان برنامه نویسی جاوا (Java)، بیانگر اعداد صحیح 32 بیتی با بازه‌ی منفی 2,147,483,648 تا مثبت 2,147,483,647 است و اعمال قابل انجام روی مقادیر متغیرهای تعریف شده از این نوع داده شامل جمع، تفریق، ضرب و … می‌باشد.

افزون بر نوع داده‌های از پیش تعریف شده، اغلب زبان‌های برنامه نویسی امکان ایجاد نوع داده‌های بیشتر توسط برنامه نویسان را نیز مهیا کرده‌اند.

در کنار نوع داده‌های اصلی (از قبیل اعداد صحیح، ممیز شناور و بولی)، برخی از انواع داده‌ها از ترکیب انواع اصلی به وجود می‌آیند. آرایه‌ها و مجموعه‌ها از انواع ترکیبی به شمار می‌روند. از جمله دیتا تایپ‌های رایج دیگری که در بسیاری از زبان‌های برنامه نویسی قابل استفاده و ایجاد می‌باشد می‌توان به نوع داده‌های شمارشی (Enumerated) اشاره نمود. مقادیری نظیر سِمَت شغلی که می‌تواند تنها مقادیر مشخصی از قبیل مدیریت، معاونت، کارمند و … را داشته باشد معمولا از همین نوع هستند. ارجاعات (اشاره‌گرها) نیز نوع داده دیگری هستند که مقدار آن در واقع یک آدرس است و این آدرس به مقدار دیگری اشاره می‌کند که در مکانی روی حافظه قرار دارد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

برنامه نویسی شئ گرا Object-Oriented Programming

برنامه نویسی شئ گرا یا Object-Oriented Programming چیست؟

برنامه نویسی شئ گرا (Object-Oriented Programming) یا به اختصار OOP، یک مدل برنامه‌نویسی بر پایه‌ی مفهوم اشیاء (Object ها) می‌باشد. در مدل رایج این مفهوم، متغیرها و عملیات مرتبط با یک موضوع مشخص با کمک مفهوم کلاس‌ها به صورت کپسوله، در کنار یکدیگر و در قالب یک بسته‌بندی قرار می‌گیرد.

در برنامه‌نویسی شئ گرای مبتنی بر کلاس، هر شئ نمونه‌ای است از یک کلاس و داده‌های مربوط به هر شئ، ممکن است وابسته به خود آن شئ باشد (متغیرهای نمونه) یا برای تمامی اشیاء از همان نوع، ثابت و یکسان باشد (متغیرهای کلاس). از این متغیرها در برنامه‌نویسی شئ گرا تحت عنوان فیلد (field)، ویژگی یا خصوصیت (Attribute/Property) یاد می‌شود. رویه‌هایی که رفتار یا عملیات مرتبط با اشیاء را پیاده‌سازی می‌کنند معمولا متد (method) نامیده می‌شوند و همانند متغیرها به دو دسته‌ی متدهای نمونه و متدهای کلاس دسته‌بندی می‌شوند.

اشیا می‌توانند در دنیای واقعی معادل یک شئ حقیقی باشند و یا اینکه کاملا انتزاعی باشند. برای مثال، در یک نرم افزار ترسیم اشکال می‌توان دایره‌ها و مستطیل‌هایی که روی صفحه رسم می‌شوند را در قالب یک شئ به شمار آورد. در یک نرم افزار حسابداری نیز هر کارمند در شرکت یک شئ به شمار می‌رود. اگر تصور کنیم به عنوان مثال، هر کارمند نمونه‌ای از کلاسی با نام Employee باشد این کلاس می‌تواند دارای متغیرهایی برای نگه‌داری نام و نام خانوادگی کارمند، جنسیت، شماره حساب و … باشد. عملیات مرتبط با این اشیاء از جمله واریز حقوق به حساب کارمند نیز از متدهای این کلاس به شمار می‌رود.

در سایه‌ی برنامه‌نویسی شئ گرا می‌توان مفاهیمی چون وراثت و چندریختی را نیز تعریف نمود. اکثر زبان‌های برنامه نویسی امروزی نظیر C#، Visual Basic، PHP، C++، Java و … از شئ گرایی پشتیبانی می‌کنند. از مزایای استفاده از این مدل برنامه‌نویسی می‌توان به قابلیت استفاده‌ی مجدد، عیب‌یابی و نگه‌داری ساده‌تر، توسعه‌پذیری و کارایی بالاتر اشاره کرد.

زبان برنامه نویسی سی پلاس پلاس C++ Programming Language

زبان برنامه‌نویسی سی پلاس پلاس (C++) چیست؟

سی پلاس پلاس (C++) یکی از زبان‌های برنامه‌نویسی پرکاربرد، همه منظوره و شیء گرا است که علاوه بر دارا بودن ویژگی‌های عمومی برنامه‌نویسی، امکان دستکاری سطح پایین حافظه را نیز فراهم می‌آورد. از همین رو سی پلاس پلاس را یک زبان سطح میانه (یا ترکیبی) می‌دانند چرا که برخی از ویژگی‌های زبان‌های سطح پایین و زبان‌های سطح بالا را به طور همزمان در خود جای داده است.

منشأ تولد این زبان برنامه نویسی به اواخر دهه 70 میلادی بازمی‌گردد. Bjarne Stroustrup در سال 1979 کار روی پروژه‌ای به نام C with Classes (سی همراه با کلاس‌ها) را به عنوان توسعه‌ای از زبان برنامه نویسی C آغاز کرد که چهار سال پس از آن نامش به سی پلاس پلاس تغییر داده شد و به طور رسمی در سال 1985 منتشر شد. استفاده از این نام به دلیل هم‌خوانی ارتباطش با زبان برنامه نویسی C است. هم‌چنین عملگر افزایش (یا Increment) به کار رفته در نام این زبان (که در بسیاری از زبان‌های برنامه‌نویسی با نماد ++ شناخته می‌شود) نیز تأکیدی بر پیشرفت C++ نسبت به زبان C می‌باشد.

ویژگی‌ها و کاربردهای C++

سی پلاس پلاس یک زبان کامپایلی است که همانند سی پیاده‌سازی‌های گوناگونی از آن برای پلتفرم‌ها و سیستم‌عامل‌های مختلف فراهم شده است. گفتنی است ساختار اصلی این زبان از زبان سی الهام گرفته شده است و بسیاری از زبان‌های مدرن امروزی نظیر سی شارپ و جاوا تحت تأثیر سی و فرزند خوش‌نامش سی پلاس پلاس شکل گرفته‌اند.

ویژگی‌هایی چون شئ گرایی، وراثت، چندریختی، سربارگذاری عملگرها، مدیریت استثنائات و … از جمله ویژگی‌هایی است که علاوه بر قابلیت‌های به ارث برده شده از زبان سی در سی پلاس پلاس به چشم می‌خورد.

امروزه زبان سی پلاس پلاس همانند سی با اهداف متمایل به برنامه نویسی سیستمی و جاسازی شده (Embedded)، مورد استفاده‌ی فراوان توسعه‌دهندگان قرار می‌گیرد. به علاوه، کارایی و همچنین انعطاف‌پذیری بالای این زبان برنامه نویسی آن را به گزینه‌ی بسیار مناسبی برای توسعه‌ی اپلیکیشن‌های دسکتاپ و همچنین مواردی که به کارایی و عملکرد بالایی نیاز دارند تبدیل کرده است.

برنامه‌ی Hello World به زبان C++:

#include <iostream>
int main()
{
    std::cout << "Hello, world!\n";
}