ْ++C

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

زبان ++c یک زبان سطح میانی در نظر گرفته می‌شود. این زبان دارای قابلیت زبان‌های سطح بالا و پایین به‌صورت هم‌زمان است.

زبان ++C توسط بی‌یارنه استراس‌تروپ دانمارکی در سال ۱۹۷۹ در آزمایشگاه‌های بل (Bell Labs)، برای بهبود زبان سی و بر مبنای آن ساخته شد و آن را "C با کلاس" (C With Classes) نام‌گذاری نمودند. در سال ۱۹۸۳ به ++c تغییر نام داد. توسعه با اضافه نمودن کلاس‌ها و ویژگی‌های دیگری مانند توابع مجازی، سربارگزاری عملگرها، وراثت چندگانه، قالب توابع، و پردازش استثنا انجام شد. این زبان برنامه‌نویسی در سال ۱۹۹۸ تحت نام ISO/IEC ۱۴۸۸۲:۱۹۹۸ استاندارد شد. نسخهٔ فعلی استاندارد این زبان ISO/IEC ۱۴۸۸۲:۲۰۱۱ است.

تاریخچهٔ زبان [ویرایش]

 
بی‌یارنه استراس‌تروپ، سازنده سی++

استراس‌تروپ کار بر روی زبان «c با کلاس» را در سال ۱۹۷۹ آغاز کرد. ایدهٔ ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراس‌تروپ خطور نمود. او متوجه شد که سیمولا دارای ویژگی‌هایی مناسب برای ساخت برنامه‌های بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما بی‌سی‌پی‌ال با وجود سرعت بسیار زیاد برای ساخت برنامه‌های بزرگ بسیار سطح پایین است. زمانی که استراس‌تروپ کار خود را در آزمایشگاه‌های بل (Bell Labs) آغاز نمود با مشکل تحلیل هسته unix با توجه به محاسبات توزیع شده روبرو شده بود. با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگی‌های سیمولا گسترش داد. C به این دلیل انتخاب شد که یک زبان عمومی، سریع، قابل حمل، و به‌صورت گسترده در حال استفاده بود. علاوه بر C و سیمولا زبان‌های دیگری مانند ALGOL ۶۸، ADA، CLU، ML نیز بر ساختار این زبان جدید اثر گذاشت. در ابتداویژگی‌های کلاس، کلاس‌های مشتق شده، کنترل نوع قوی، توابع درون‌خطی، و آرگومان‌های پیش‌فرض از طریق Cfront به C اضافه شد. اولین نسخهٔ تجاری در سال ۱۹۸۵ ارائه شد.

در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت. ویژگی‌های دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر به‌صورت آزاد، کنترل نوع بهتر، و توضیحات یک‌خطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامه‌نویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمی‌ای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگی‌های جدیدی مانند ارث‌بری چندگانه، کلاس‌های انتزاعی، اعضای ایستای توایع، اعضای ثابت تابع، و اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ «راهنمای مرجع ++C» منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگی‌های اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، فضاهای نام، تبدیلات جدید، و یک نوع داده منطقی.

در حین تکامل ++C کتابخانهٔ استاندارد نیز به‌وجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین printf و scanf شد. در ادامه مهم‌ترین ویژگی اضافه شده Standard Template Library بوده‌است.

استاندارد زبان [ویرایش]

بعد از سال‌ها کار کمیته مشترک ANSI–ISO در سال ۱۹۹۸ ++C را استاندارد نمودند (ISO/IEC ۱۴۸۸۲:۱۹۹۸). به مدت چند سال پس از انتشار استاندارد این کمیته گزارشات معایب را مورد بررسی قرار داده نسخهٔ اصلاح شده استاندارد ++C منتشر شد. در سال ۲۰۰۵ گزارشی فنی‌ای به‌نام «گزارش فنی کتابخانهٔ ۱» (که معمولاً بصورت اختصار TR۱ خوانده می‌شود) انتشار یافت. با وجود این که گزارش بخشی رسمی از استاندارد نیست ولی بخش‌هایی را به آن اضافه نموده که انتظار می‌رود در نسخه‌های بعدی استاندارد در نظر گرفته شود. پشتیبانی از این گزارش در حال افزایش بین تمام کامپایلرهای فعلی است.

در حالی که ++C به هیچ مؤسسه‌ای وابسته نیست این مستندات به‌صورت آزادانه در دسترس نیستند.

نام ++C [ویرایش]

این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد. در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد. در علوم کامپیوتر هنوز هم ++C به عنوان ابرساختار C شناخته می‌شود. آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازهٔ یک واحد بکار می‌رود) و یک عرف معمول برای نشان دادن افزایش قابلیت‌ها توسط + ناشی گشته‌است. با توجه به نقل قولی از استراس‌تروپ: «این نام ویژگی‌ها تکاملی زبان در C را نشان می‌دهد.» +C نام زبانی غیرمرتبط به این زبان است.

استراس‌تروپ مبدا این نام را در فصل اول کتاب خود «زبان برنامه‌نویسی ++C» اشاره می‌نماید که معنی دیگر ++C را می‌توان در ضمائم کتاب جرج ارول بنام ۱۹۸۴ یافت. در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات فنی و حرفه‌ای بکار می‌رود. «دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار می‌رفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.

وقتی که به صورت خصوصی از ریک ماسکیتی در مورد این اسم سوال شد او در جواب گفت که این اسم بصورت خودمانی در بین آنها به کار می‌رفته‌است و تصور نمی‌کردند که این نام بصورت نام رسمی این زبان درآید.

فلسفه

در کتاب «طراحی و تکامل ++C» استراستروپ قوانین مورد استفاده در طراحی ++C را بیان می‌نماید. دانستن این قوانین به فهمیدن نحوه عملکرد ++C و چرایی آن کمک می‌کند. جزئیات بیشتر در کتاب قابل دسترسی است:

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

در سال ۱۹۹۸ استاندارد ++C شامل دو بخش هسته زبان و کتابخانه استاندارد ++C است. این کتابخانه شامل بیشتر بخش‌های STL و کتابخانه استاندارد C است. بیشتر کتابخانه‌های ++C در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانه‌ها را می‌توان در زبان‌هایی مانند فرترن، C، پاسکال، بیسیک نوشته شوند. البته با توجه به ویژگی‌های کامپایلر مشخص خواهد شد که کدام زبان را می‌توان استفاده نمود.

کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. بخش بزرگ بعدی این کتابخانه STL است. STL شامل ابزار بسیار قدرتمندی مانند نگه‌دارنده‌ها (مانند vector و list)، تکرارکننده‌ها (اشاره‌گرهای عمومی شده) برای شبیه‌سازی دسترسی مانند آرایه الگوریتم‌هایی برای جستجو و مرتب‌سازی در آنها وجود دارند. نقشه‌ها (نقشه‌های چندگانه) (آرایه شرکت‌پذیر) و مجموعه‌ها (مجموعه‌های چندگانه) واسط‌های عمومی فراهم می‌سازند. در نتیجه با استفاده از قالب تابع، الگوریتم‌های جنریک با هر نگه‌دارنده و دارای تکرارکننده عمل نماید. همانند C ویژگی‌های کتابخانه را می‌توان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود. c دارای ۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شده‌اند.

استفاده از کتابخانه استاندارد - مانند std::vector یا std::string به جای آرایه‌های C- موجب ایجاد برنامه‌های مطمئن‌تر شده‌است.

STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد ++C بوده‌است. استاندارد عبارت STL را بکار نمی‌برد بلکه آن را بخشی از کتابخانه می‌داند اما مردم هنوز هم آن را برای جداسازی بخش‌های مختلف کتابخانه با این نام بکار می‌برند.(جریان‌های ورودی/خروجی، جهانی‌سازی، تشخیص، زیرمجموعه کتابخانه C)

بیشتر کامپایلرها کتابخانه استاندارد و STL را پیاده‌سازی می‌نماید. پیاده‌سازی‌های مستقلی نیز همانند STLport نیر وجود دارند. پروژه‌های دیگر نیز پیاده‌سازی‌های خود را از STL با توجه به اهداف خود بوجود می‌آورند.

ویژگی‌های معرفی شده در ++C

در مقایسه با C زبان ++C ویژگی‌های جدیدی را معرفی نموده‌است مانند تعریف متغیر به عنوان عبارت، تغییر نوع‌های همانند تابع، new/حذف، نوع داده bool، توابع درون‌خطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، فضای نام و عملگر تعیین حوزه ::، کلاس‌ها (شامل تمام ویژگی‌های مربوط به کلاس‌ها همانند وراثت، اعضای تابع، توابع مجازی، کلاس‌های انتزاعی، و سازنده‌ها)، قالب‌ها، پردازش استثنا، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (<<) و خروجی (>>).

برخلاف باور عموم ++C نوع داده ثابت را معرفی ننموده‌است. کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد.

در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام می‌دهد. (برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)

توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجدداً در زبان ++C به کار گرفته شد.

بعضی ویژگی‌های ++C بعداً توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C با تعریف آن در زبان ++C هماهنگی ندارد. همچنین در C ویژگی‌هایی معرفی شده‌است که در ++C وجود ندارند مانند ماکروهای قابل تغییر و استفاده بهتر از آرایه‌ها به عنوان آرگومان. بعضی کامپایلرها این ویژگی‌ها را پیاده نموده‌اند اما در بقیه این ویژگی‌ها موجب ناهماهنگی می‌گردد.

برنامه Hello World

برنامه زیر با استفاده از کتابخانه استاندارد و جریان‌های خروجی یک متن را به خروجی استاندارد ارسال می‌نماید.

#include  // provides std::cout
using namespace std;
 
int main(int argc, char *argv[])
{
    cout <<"Hello, world!\n"; // prints "Hello world!"
    return 0;
}

عملگرها

به بخش عملگرهای سی و سی++ مراجعه نمایید

پیش پردازنده

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

شبه دستورات پیش‌پردازنده با استفاده از کاراکتر # قبل از هر گونه فضای خالی آغاز گشته و رشته‌هایی را در کد منبع با فایل یا رشته‌های دیگر با توجه به قوانین تعریف گشته توسط برنامه‌نویس جایگزین می‌نماید. این دستورات معمولاً اعمال زیر را انجام می‌دهند: جایگزینی ماکروها، شمول فایل‌های دیگر (برخلاف ویژگی سطح بالاتر مانند شمول ماجول‌ها/پکیج‌ها/یونیت‌ها/کامپوننت‌ها)، کامپایل شرطی و/یا شمول شرطی. به عنوان مثال:

#include 

که این دستور تمام سمبل‌ها در فایل سرایند کتابخانه استاندارد iostream را در فایل منبع وارد می‌سازد.

کاربرد معمول دیگر به عنوان ماکرو خوانده می‌شود:

#define MY_ASSERT(x) assert(x)

که کد (MY_ASSERT(x را با (assert(x در فایل منبع جایگزین می‌نماید. که این جایگزینی امکان کنترل استفاده از این تابع را در اختیار برنامه‌نویس قرار می‌دهد.

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

علاوه بر شبه‌دستورات معمول تعدادی شبه دستور برای کنترل جریان کامپایل وجود دارد که امکان شمول یا عدم‌شمول قطعه‌ای کد یا سایر ویژگی‌های کامپایل را در اختیار ما قرار می‌دهد.

دستورات پیش‌پردازنده برای کاربردهای عددی نیز به کار می‌رود که هم‌اکنون استفاده از const به جای #define ترجیح داده می‌شود. این کار علاوه بر ایجاد کنترل نوع قوی مانع از گمراهی در فضاهای نام می‌گردد.

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

قالب‌ها

قالب‌ها متفاوت با ماکروها هستند. در حالی که از هر دوی این ویژگی‌ها در زمان کامپایل برای ایجاد کامپایل شرطی استفاده می‌شوند قالب‌ها محدود به تغییرات لغوی و متنی نیستند. قالب‌ها با آگاهی از معنا و سیستم نوع در زبان استفاده شده و سایر ویژگی‌های زمان کامپایل می‌توانند از عملیات سطح بالا برای کنترل ترتیب اجرا براساس نوع پارامترها استفاده نمایند. ماکروها کنترل خود را بر کامپایل از طریق ویژگی‌های از پیش تعیین شده انجام می‌دهند ولی قادر به ایجاد انواع جدید و کنترل نوع نیستند و فقط محدود به تغییرات متنی پیش از کامپایل هستند. به زبان دیگر ماکروها کنترل خود را با استفاده از نشانه‌های از پیش تعیین شده انجام می‌دهند اما همانند قالب‌ها نمی‌توانند نشانه‌ها را خود ایجاد نمایند. قالب‌ها ابزاری برای چندریختی ایستا و برنامه‌نویسی جنریک است. مثلاً جایگزین معادل با استفاده از قالب‌ها برای عبارت خطرناک #define max(x،y) ((x)>(y)?(x):(y)) در پایین نشان داده شده‌است.

template <typename T>
const T& max(const T& x, const T& y)
{
    return x> y ? x : y;
}

این قالب در سرآیند algorithm تحت عنوان std::max() قابل دسترسی است. معمولاً می‌توان از کلمه کلیدی class بجای typename استفاده کرد.

علاوه بر این قالب‌ها یک ویژگی تورینگ-کامل هستند که به این معناست که هر برنامه قابل محاسبه توسط کامپیوتر را می‌توان با استفاده از فرابرنامه‌نویسی قالب‌ها نوشت.

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

اشیا

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

بسته‌بندی

بسته‌بندی به معنای جمع‌آوری عملیات و داده در یک محل می‌باشد. سی++ بسته‌بندی را با ایجاد امکان تعریف هر کلاس به صورت public، private، protected پیاده‌سازی نموده‌است. اعضای private فقط توسط اعضای کلاس و یا کلاس‌ها دقیقا بیان شده (friend) قابل دسترسی هستند. اعضای protected توسط کلاس‌های ارث برده شده و اعضای کلاس و کلاس‌های friend قابل دسترسی هستند.

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

عموماً توصیه بر این است که تمام اعضا به صورت خصوصی یا حفاظت شده تبدیل گردند و فقط توابعی که باید توسط دیگر کلاس‌ها به عنوان واسط استفاده شوند عمومی باقی بمانند.

وراثت

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

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

چندریختی

امکان استفاده از یک واسط برای چندین پیاده‌سازی فراهم می‌نماید و اشیا در شرایط مختلف رفتار مختلفی از خود نشان می‌دهند.

سی++ دو نوع چندریختی در اختیار برنامه‌نویس قرار می‌دهد: چندریختی زمان کامپایل و چندریختی زمان اجرا. چندریختی زمان کامپایل امکان تصمیم‌گیری‌های زمان اجرا را فراهم نمی‌سازد و چندریختی زمان اجرا اغلب موجب پایین آمدن بازدهی می‌گردد.

چندریختی ایستا

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

چندریختی پویا

چندریختی پویا شامل وراثت و توابع مجازی عضو است.

گرانبارسازی تابع

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

گرانبارسازی عملگر

بطور مشابه گرانبارسازی عملگر امکان استفاده از یک عملگر مشخص می‌شود که عملکرد متفاوتی با توجه به عملوندهای خود دارد. این عملگرهای گرانبار شده موجب فراخوانی تابع مشخصی متناسب با آن موقعیت می‌گردند. گرانبارسازی عملگر ترتیب اجرا یا تعداد عملوندهای یک عملگر را تغییر نمی‌دهد. عملگرهای . :: .* ? نمی‌توانند گرانبار شوند.

آرگومان پیش‌فرض

آرگومان پیش‌فرض در شرایطی به کار می‌رود که تعیین یک مقدار مشخص برای یک آرگومان نیاز به تعریف یک تابع جدید را برطرف می‌سازد. هنگام استفاده از این مشخصه باید دقت شود که تابع‌های گرانبار شده و تابع‌های دارای آرگومان پیش‌فرض با یکدیگر تداخل نداشته باشند به عنوان مثال:

// function with default argument but also an overloaded function
int strcpy(char *str1, char *str2, short unsigned n=65535);
// second overloaded function
int strcpy(char *str1, char *str2);

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

ساختار برنامه‌ها

ساختار برنامه‌ها در این زبان بدین صورت است که همانند زبان سی، هر برنامه بایستی یک تابع اصلی (main) به عنوان بدنه برنامه داشته باشد. هر برنامه معمولاً از تعداد زیادی فایل تشکیل می‌شود که به هم الحاق می‌گردند (با دستور include) و به این فایل‌های الحاقی سرآیند (Header) می‌گوییم. فایل‌های الحاقی حاوی کدها یا نسخه‌های اجرایی کلاس‌ها (مجموعه متغیرها و توابع) می‌باشند که در بدنه اصلی برنامه از آنها استفاده می‌شود. معمولاً هر کلاس (که تعریف یک نوع داده‌ای با متدهای مربوط به آن است) را در یک سرآیند می‌نویسند. هر سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایل‌های پیاده سازی به زبان ++C یا پیاده سازی‌های کامپایل شده (به صورت فایل اشیا مانند dll یا so یا ... ) می‌تواند به کار برده شود. به مجموعه‌های یکپارچه‌ای از کلاس‌های پیاده سازی شده (به صورت فایل‌های سرآیند با پیاده سازی‌های کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار می‌روند، یک کتابخانه ++C گفته می‌شود و قدرت اصلی این زبان در امکان به کارگیری کتابخانه‌های آماده می‌باشد. کتابخانه‌های بزرگ ++C مانند STL، MFC، QT و ... مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کرده‌اند.

منبع:

http://fa.wikipedia.org

پاسكال

تاریخچه
نیکلاوس ورث قبل از پاسکال و برای تهیه مقدمات آن، زبان Euler و سپس Algol-W را توسعه داد و بعدها زبان‌های Modula-2 و Obern که شبیه به پاسکال بودند را بوجود آورد. در زمان اختراع پاسکال، زبان‌های برنامه نویسی بسیار زیادی وجود داشت ولی تنها تعدادی از آنها بسیار استفاده می‌شدند که عبارت بودند از Fortran ، Assembler و Cobol. ایده اصلی زبان جدید نظم، مدیریت داده‌ها و نیاز به تعریف داده‌ها بود.این زبان از ابتدا به گونه‌ای طراحی شده بود که یک زبان آموزشی باشد.
در ابتدا پاسکال بسیار وسیع و جامع بود، اما تنها به منظور یاددادن برنامه نویسی ساخت یافته به دانشجویان نبود. نسلهای متمادی از دانشجویان بر روی پاسکال به عنوان یک زبان مقدماتی در دوره‌های لیسانس کار کردند. همچنین نسخه‌های متفاوتی از پاسکال مکرراً برای هر چیزی از پروژه‌های تحقیقاتی گرفته تا بازی‌های رایانه‌ای و سیستم‌های جاسازی شده استفاده شد. هم اکنون کامپایلر‌های جدید تر پاسکال موجود می‌باشند که که به طور وسیع و گسترده استفاده می‌شوند. پاسکال نخستین زبان سطح بالا بود که برای توسعه و تکامل در Apple Lisa استفاده شد و در سال‌های اولیه Mac، قسمت هایی از سیستم‌عامل اصلی مکینتاش، از منابع پاسکال توسط دست به زبان اسمبلی 68000 Motorola ترجمه شد. حروفچینی محبوب سیستم TeX توسط Donald E.Knuth در WEB (سیستم برنامه نویسی آموزش دیده اصلی) نوشته شد، که بر پایه DEC PDP-10 Pascal می‌باشد، آن هم در هنگامی که یک برنامه کاربردی مانند Total Commander در Delphi (پاسکال شی گرا) نوشته شد. توربو پاسکال: پاسکال نیز مانند بسیاری از زبان‌های برنامه‌نویسی دیگر دارای کامپایلرهای زیادی است که از معروف‌ترین آنها می‌توان به کامپایلر توربو پاسکال (Turbo Pascal) که متعلق به شرکت بورلند (Borland) است اشاره کرد. شرکت بورلند از پاسکال شی‌گرا به‌عنوان زبان برنامه‌نویسی محیط توسعه نرم‌افزار خود به نام دلفی استفاده کرده است.توربو پاسکال در سال ۱۹۸۳ معرفی شد و همیشه در بین زبان‌های برنامه نویسی از فروش بسیار بالایی برخوردار بود. توربو پاسکال مفهوم جدیدی به نام Integrated Development Environment یا (IDE) به معنای "محیط برنامه نویسی مجتمع" را معرفی کرد. در محیط IDE شما قادر خواهید بود کد را ویرایش کنید (در یک ویرایشگر هماهنگ با wordstar)، کامپایلر را آغاز کنید، خطاها را ببینید و به خط هایی که حاوی آن خطا هاست بروید، البته این مسئله هم اکنون بسیار بی معنی به نظر می‌آید، اما در گذشته لازم بود که شما از ویرایشگر بیرون بروید و به DOS برگردید و سپس کامپایلر را به صورت خط فرمانی آغاز کنید، سپس شماره خطاهای خط را یادداشت کنید، دوباره ویرایشگر را باز کنید و به خط‌های حاوی خطا بروید و دوباره همه چیز را از اول انجام دهید.به علاوه بورلند توربو پاسکال خود را فقط 49دلار می فروخت، در حالیکه مایکروسافت کامپایلر پاسکال خود راچند صد دلار به فروش می رساند، تداوم موفقیت چند ساله توربو پاسکال سبب شد که درآمدهای مایکروسافت از فروش کامپایلر پاسکال بسیار کاهش یابد. پاسکال دلفی: بعد از 9 نسخه از انتشار توربو پاسکال و بورلند پاسکال، که به تدریج زبان‌های بسیار گسترده‌ای شده بودند، بورلند در سال ۱۹۹۵ دلفی را معرفی نمود که پاسکال را به یک محیط برنامه نویسی دیداری(VISUAL) تبدیل می‌کرد. زبان شیئ گرایی پاسکال که ما در دلفی از آن سود می جوییم در سال ۱۹۹۵ همراه با محیط برنامه نوسیس دیداری(VISUAL)دلفی اختراع نشد. این زبان توسعه یافته زبان پاسکال شیئ گرا بود که قبلاً در محصول بورلند پاسکال از آن استفاده شده بود، اما بورلند پاسکال آن را را اختراع نکرد بلکه تنها به گسترش وعمومی شدن آن کمک نمود. چکیده [ویرایش] قصد پروفسور ورث خلق یک زبان کار آمد بود (در هر دو مورد سرعت کامپایل و کد ساخته شده) که بر پایه به اصطلاح برنامه نویسی ساخت یافته (مفهومی که به تازگی محبوب شده است) باشد. اصول و ریشه‌های پاسکال برپایه زبان الگول 60 پی ریزی شد، اما علاوه بر آن مفاهیم و مکانیزم هایی را مافوق اعداد و آرایه‌های الگول معرفی کرد که برنامه نویسان را قادر به تعریف انواع داده (ساختمان) پیچیده خودشان می‌کرد و همچنین ساخت ساختمان داده‌های بازگشتی و پویا مانند لیست ها، درخت‌ها و گرافها را آسانتر می‌نمود.امکانات مهم که برای این امور اضافه شده بود، رکوردها، شمارش ها، زیر حوزه ها، متغیرهای اختصاص داده شده پویا همراه اشاره گرهای وابسته و مجموعه‌ها می‌باشد. برای تحقق و معنی دار کردن این امر، پاسکال یک سیستم تایپ دهی قوی روی تمام اشیا دارد، به این معنی که یک نوع داده نمی‌تواند بدون تبدیل صریح، به عنوان نوع دیگر تفسیر و یا تبدیل شود. امروزه در بسیاری از زبان‌های برنامه نویسی مکانیزم‌های مشابهی به صورت استاندارد می‌باشند. زبان‌های دیگر که از توسعه پاسکال تأثیر گرفتند، کوبول، سیمولا 67 و Algol W خود آقای Wirth می‌باشند.پاسکال مانند بسیاری از زبان‌های اسکریپتی امروزه ( اما بر خلاف زبان‌های خانواده C ) به تعریف پروسه‌های تودرتو تا هر عمقی و همچنین اکثر انواع تعریف‌ها و اعلان‌ها درون پروسه‌ها و توابع اجازه می‌دهد. این امر یک نحو خیلی ساده و منسجم را امکان پذیر می سازدکه یک برنامه کامل از نظر نحوی، خیلی نزدیک به یک تابع و یا پروسه تنهاست (البته به استثنای خود کلمه کلیدی). پیاده سازی [ویرایش] اولین کامپایلر پاسکال برای سری CDC 6000 خانواده کامپیوترهای پردازنده مرکزی در زوریخ طراحی شد. آقای Wirth گزارش می‌دهد که اولین کوشش برای پیاده سازی آن در فرترن در سال 1969 با توجه به نارسایی فرترن برای بیان ساختمان داده‌های پیچیده، ناموفق بود. دومین تلاش‌ها برای خود زبان پاسکال تنظیم و فرموله شد و در اواسط سال 1970 قابل استفاده شد. پس از آن بسیاری از کامپایلرهای پاسکال به طور مشابه، خودمیزبان بودند، به این معنا که خود کامپایلر در پاسکال نوشته شده است و کامپایلر هنگامی که امکانات جدید به زبان اضافه می‌شود و یا به محیطی جدید منتقل می‌شود، معمولاً قادر به دوباره کامپایل کردن خود می‌باشد. کامپایلر GNU Pascal یک استثنای قابل توجه در این مورد می‌باشد که در C نوشته شده است.اولین انتقال موفق کامپایلر CDC Pascal به یک کامپیتر پردازنده مرکزی دیگر، توسط Welsh و Quinn در دانشگا ه Queen در شهر Balfast در سال 1972 انجام گرفت. کامپیوتر هدف یک ICL 1900 بود. اولین کامپایلر پاسکال که در آمریکای شمالی نوشته شد، در دانشگاه Illinois زیر نظر Donald B.Gillies برای PDP-11 و کد ماشین تولید شده محلی، ساخته شد. پاسکال در سراسر سال‌های 1970 و 1980 از محبوبیتی بزرگ برخوردار بود.به منظور انتشار سریع زبان، یک کامپایلر (porting kit) در زوریخ ساخته شد که شامل یک کامپایلر بود که برای یک ماشین پشته مجازی کد تولید می‌کرد(یعنی کدی که خودش را به یک تفسیر کارآمد معقول از خودش ارجاع می‌داد) به همراه یک مفسر برای این کد Pascal-P system. اگر چه کد SC (کامپیوتر استک) در ابتدا به قصد کامپایل به کد ماشین صحیح بود، حداقل یک سیستم (سیستم پاده سازی جالب توجه UCSD) از آن برای خلق مفسر UCSD P-system استفاده کرد. کامپایلرهای سیستم P، با P1 تا P4 نامیده می‌شوند. P1 به عنوان اولین نسخه و P4 به عنوان آخرین نسخه انتشار یافته از زوریخ.کامپایلر/ مفسرP4 هنوز برروی سیستمهای سازگار با پاسکال اصلی قابل اجرا و کامپایل است. با این حال خودش فقط یک زیرمجموعه از زبان پاسکال را قبول می‌کند. یک نسخه از P4 که زبان پاسکال کامل را قبول می‌کند و سازگار با ISO 7185 است، نیز ساخته شد و به نام کامپایلر P5 نامگذاری شد که به صورت منبع در دسترس و مهیاست. یک نسخه جایگزین از آن که به عنوان مدل پیاده سازی پاسکال شناخته می‌شودنیز پاسکال کامل را قبول می‌کند و با ISO 7185 سازگار است، اما در کامپیوترهای خواندنی فراهم نمی‌باشد.یک نسخه از کامپایلرهای P4 که اعداد باینری محلی را خلق کرد، برای کامپیوتر پردازنده مرکزی IBM System 370 توسط کمیسیون انرژی اتمی استرالیا ارائه شد. این کامپایلر AAECPascal Compiler نامیده شد پس از حروف اختصاری نام کمیسیون. یک نسخه از P4 از 6-1975 شامل منابع و اعداد باینری لازم برای کامپایلر و فایل‌های کتابخانه‌ای زمان اجرا، برای پردازنده مرکزی PDP-10 ممکن است از این پیوند قابل دریافت باشد.در اوایل 1980 WatcomPascal نیز برای IBM System 370 توسعه داده شد. IP Pascal یک پیاده سازی از زبان برنامه نویسی پاسکال بود که از Micropolis Dos استفاده می‌کرد، اما به سرعت به CP/M که برروی Z80 اجرا می‌شد، حرکت کرد. بعدها نیز به انواع ماشین‌های 80386 در سال 1994 حرکت کرد و امروزه به صورت پیاده سازی شده در Linux و Windows/XP وجود دارد. در سال 2008 سیستم به یک سطح جدید ارتقا یافت و زبان حاصله به عنوان Pascaline (بعد از Pascal’s Calculator ) نامیده شد.آن زبان، شامل اشیا، کنترل‌های فضای نام، آرایه‌های پویا، به همراه بسیاری الحاقات دیگر، و امکانات عمومی دارای کارکرد مشابه، و حفاظت نوع داده همانند C# می‌باشد. این تنها پیاده سازی است که با پیاده سازی پاسکال اصلی سازگارمی باشد (که در ISO 7185 استاندارد شده است).در اوایل 1980 به منظور مهیا کردن یک جایگزین ساخت یافته برای مفسرهای پایه که با ماشین‌ها آمدند، UCSD Pascal به کامپیوترهای Apple II,Apple III انتقال یافت. کامپیوتر Apple، Lisa Pascal خودش را برای محیط کار Lisa در سال 1982 خلق کرد و این کامپایلر را به Apple Macintosh و MPW در سال 1985 منتقل کرد. در سال 1985 Larry Tesler در مشاوره با Niklaus Wirth پاسکال شی گرا را تعریف کردو این امکانات در هر دوی Lisa Pascal و Mac Pascal جای داده شدند.در سال‌های 1980، Anders Hejlsberg کامپایلر Blue Label را برای Nascom-2 نوشت. یک پیاده سازی مجدد از این کامپایلر برای IBM PC تحت نام‌های Compas Pascal و PolyPascal قبل از اینکه توسط Borland شناسایی شود، در معرض فروش قرار داده شد. نامگذاری مجدد به Turbo Pascal موجب افزایش محبوبیت و قدردانی شد. قدردانی در یک قسمت به خاطر یک راهبرد قیمت گذاری جسورانه و پر پشتکار و در یک قسمت به خاطر داشتن یکی از نخستین محیط‌های توسعه یکپارچه تمام صفحه. علاوه بر اینها، Turbo در زبان اسمبلی نوشته شد و تماماً به نحو احسن بهینه شد که سبب شد در رقابت بسیار کوچکتر و سریعتر شود. در سال 1986، Anders، توربو پاسکال را به Macintosh منتقل کرد و الحاقات پاسکال شی گرای Apple را با Turbo درآمیخت. این الحاقات سپس مجدداً به توربو پاسکال نسخه PC شماره 5.5 اضافه شدند.کامپایلر ارزان بورلند یک تأثیر شگرف بر جامعه پاسکال گذاشت که سبب تمرکز ویژه برروی کامپیوترهای شخصی IBM در اواخر سال‌های 1980 شد. بسیاری از علاقمندان به کامپیوترهای شخصی که در جستجوی یک جایگزین ساخت یافته برای BASIC بودند، شروع به استفاده از این محصول کردند. همچنین این محصول توسط استفاده کنندگان حرفه‌ای نیز کم کم مورد پذیرش قرار گرفت. درهمین حین، تعدادی مفاهیم از C، به منظور اجازه دادن به برنامه نویسان پاسکال برای استفاده مستقیم از APIهای Microsoft Windows که بر پایه C بودند، وارد پاسکال شدند. این الحاقات مشتمل بر رشته‌های بدون پایان، اشاره گرهای عددی و حسابی، اشاره گرهای توابع، آدرس عملگرها و انواع داده‌ای ناامن می‌باشند.با این حال، بورلند بعداً تصمیم گرفت که امکانات شی گرایی با دقت بیشتر و جزئیات دقیقتر می خواهد و آن را با استفاده از پیش نویس‌های استاندارد پاسکال شی گرا که توسط Apple به عنوان اساس و پایه پیشنهاد شده بود، مجدداً در Delphi پیاده کرد( این پیش نویس Apple هنوز یک استاندارد رسمی نمی‌باشد). بنابراین اولین نسخه‌های زبان برنامه نویسی Delphi، پاسکال شی گرا (Object Pascal) نامیده شدند.الحاقات اصلی در مقایسه با پاسکال شی گرای قدیمی تر، مدل شی گرای مبتنی بر مرجع، سازنده‌ها و مخرب‌های مجازی و جزئیات بودند. کامپایلرهای متعدد دیگر نیز این شیوه را اجرا و پیاده سازی کردند.توربو پاسکال و دیگر مشتقات به همراه واحدها یا مفاهیم پیمانه ای، هم از زبان‌های پیمانه‌ای هستند. با این حال، مفهوم پیمانه تودرتو و یا ورود و خروج صحیح نمادهای ویژه را مهیا نمی‌کنند. Super Pascal یک نوع دیگر بود که برچسب‌های بدون عدد را اضافه کردکه یک دستور یا عبارت بازگشت به عنوان نام هایی از نوع‌ها می‌باشد.دانشگاه‌های زوریخ، Karlsruhe و Wuppertal، یک قابلیت را برای محاسبات علمی توسعه دادند (XSC Pascal) که یک راه حل مفید را برای برنامه ریزی محاسبات عددی با دقت کنترل شده، مهیا می‌کند. در سال 2005 در کنفرانس WEB 2.0 ، Marfic Technology ابزاری معرفی کرد که توسعه کاربردهای WEBکه تماماً در Marfic Pascal نوشته شده بود را مهیا می‌کرد. Marfic Pascal یک گونه از پاسکال شی گرا است که بسیار نزدیک به Delphi می‌باشد. ساختارهای زبان [ویرایش] پاسکال در شکل اصلی خودش به طور خالص یک زبان رویه‌ای است و دارای آرایش سنتی الگول است که شبیه ساختارهای کنترل به همراه کلمات رزروشده همچون if,then,else,while,for و ... می‌باشد. با این حال پاسکال بسیاری امکانات ساخت یافته داده‌ای و انتزاعی را داراست که در الگول 60 اصلی موجود نبودند. مانند تعاریف نوع ها، رکوردها، اشاره گرها، شمارش‌ها و مجموعه ها. یک همچنین ساختار هایی تا یک اندازه از Simula 67 ،Algol 68، Algol W خود آقای Wirth و پیشنهادات C.A.R. Hoare الهام گرفته شده و یا به ارث برده شدند. Hello World [ویرایش] برنامه‌های پاسکال توسط کلمه کلیدی Program به همراه لیستی از فایل‌های خارجی به عنوان پارامترها شروع می‌شوند. سپس بلوک عبارت اصلی که توسط کلمات کلیدی Begin و End بسته بندی شده است را دنبال می‌کنند. علامت semicolon (;) عبارات را از هم جدا می‌کند و نقطه آخر برنامه تمام برنامه را خاتمه می‌دهد. در پاسکال، بزرگ و کوچکی حروف مطرح نیست. بعضی کامپایلرها مثل توربو پاسکال در میان آنها کلمه کلیدی Program را اختیاری در نظر می‌گیرند.در اینجا یک مثال از کد برای یک برنامه خیلی ساده آورده شده است. Program HelloWorld(output); begin writeLn('Hello, World!') end. انواع داده [ویرایش] یک تایپ در پاسکال و در عموم زبان‌های برنامه نویسی محبوب دیگر، یک متغیر را به گونه‌ای در نظر می‌گیرد که درآن، حوزه‌ای از مقادیر قابل قبول تعریف می‌شود که متغیر قادر به ذخیره آن می‌باشد و همچنین مجموعه‌ای از عملگرها را لحاظ می‌کند که برروی آن متغیر با آن نوع مجاز است. انواع داده‌ها و توضیحی مختصر در مورد آنها در زیر آورده شده است.نوع داده حوزه قابل ذخیره توسط متغیر integer تمام اعداد از32768- تا 32768 byte اعداد صحیح از0 تا 255 real 1E-38 تا 1E+38 اعداد اعشاری از boolean تنها مقادیر درست و نادرست را نگه می‌دارد. char هر کاراکتر درمجموعه کد اسکی ساختارهای داده [ویرایش] انواع داده‌ای ساده پاسکال عبارتند از real,integer,character,Boolean,enumeration که enumeration یک نوع داده جدید می‌باشد که توسط پاسکال معرفی شد. var r: Real; i: Integer; c: Char; b: Boolean; e: (apple, pear, banana, orange, lemon); زیرحوزه‌های هر نوع داده ترتیبی وصفی ( هر نوع ساده به غیر از real ) را می‌توان تغییر داد و ساخت. var x: 1..10; y: 'a'..'z'; z: pear..orange; برخلاف دیگر زبان‌های برنامه نویسی زمان خودش، پاسکال نوع داده مجموعه‌ای را پشتیبانی می‌کند. (set type) var set1: set of 1..10; set2: set of 'a'..'z'; set3: set of pear..orange; یک مجموعه، مفهومی اساسی برای ریاضیات مدرن می‌باشد و آنها ممکن است در الگوریتم‌های بزرگ زیادی استفاده شوند. این چنین امکانی بسیار مفید است و ممکن است از ساختن یک معادل در زبانی که مجموعه‌ها را پشتیبانی نمی‌کند بسیار سریع تر باشد، برای مثال برای بسیاری از کامپایلرهای پاسکال if i in [5..10] then ... بسیار سریع تر است از if (i>4) and (i11) then ... تایپ‌ها می‌توانند از دیگر تایپ‌ها با استفاده از اعلان تایپ تعریف شوند: type x = Integer; y = x; ... علاوه بر این، نوع‌های پیچیده می‌توانند از نوع‌های ساده ساخته شوند: type a = Array [1..10] of Integer; b = record x: Integer; y: Char end; c = File of a; همان طور که در مثال بالا نشان داده شده است فایل‌های پاسکال سلسله‌ای از اجزا هستند. هر فایل یک متغیر بافر دارد که با f^ مشخص می‌شود. رویه‌ها (procedure) متغیر بافر را برای خواندن(get) و نوشتن(put) به المان بعدی حرکت می‌دهند. خواندن به این صورت معرفی می‌شود که read(f,x) همانند x:=f^ ; get(f) می‌باشد. نوشتن به این صورت معرفی می‌شود که write(f,x) مانند f^:=x ; put(f) است. نوع داده متن به عنوان فایلی از کاراکترها از پیش تعریف شده است. هنگامی که متغیر بافر برای رسیدگی به کاراکتر بعدی می‌تواند مورد استفاده قرار گیرد، از آن استفاده به عمل خواهد آمد (بررسی یک رقم قبل از خواندن یک مقدار صحیح). این مفهوم منجر به اشکالات جدی برای برنامه‌های محاوره‌ای با پیاده سازی‌های جدید شد، اما بعدها توسط مفهوم “lazy I/O” حل شد.در پاسکال Jensen و Wirth رشته‌ها به صورت آرایه بسته بندی شده‌ای از کاراکترها نمایش داده می‌شوند. بنابراین آنها دارای طول ثابت اند و معمولاً دارای فضای خالی می‌باشند. بعضی گونه‌ها یک نوع رشته سفارشی دارند. اشاره گرها [ویرایش] پاسکال استفاده از اشاره گرها را پشتیبانی می‌کند. type a = ^b; b = record a: Integer; b: Char; c: a end; var pointertob: a; در اینجا متغیر اشاره گر به b، یک اشاره گر به نوع داده b که یک رکورد است، می‌باشد. اشاره گرها قبل از اینکه اعلان شوند، می‌توانند استفاده شوند. این یک اعلان رو به جلو است، یک استثنا برای این قانون که اشیا قبل از استفاده باید تعریف شوند. برای ساخت یک رکورد جدید و اختصاص دادن مقدار 10 و کاراکتر A به قسمت‌های a و b در رکورد و برای مقداردهی اولیه اشاره گرc به تهی، دستورات باید به صورت زیر باشند. new(pointer_to_b); pointertob^.a := 10; pointertob^.b := 'A'; pointertob^.c := nil; ... این امر می‌تواند با استفاده از عبارت with به صورت زیر نوشته شود. new(pointer_to_b); with pointertob^ do begin a := 10; b := 'A'; c := nil end; ... توجه داشته باشید که درون حوزه عبارت with کامپایلر می‌داند که a و b به زیر حوزه‌های اشاره گر به رکورد pointertob ارجاع می‌دهد و نه به رکورد b و یا نوع داده اشاره گر a .لیست‌های پیوندی، پشته‌ها و صف‌ها با داخل کردن یک نوع اشاره گر( c) به درون رکورد، قابل ساخت می‌باشند. (مفاهیم nil و null را در برنامه نویسی کامپیوتری مشاهده کنید) ساختارهای کنترل [ویرایش] پاسکال یک زبان برنامه نویسی ساخت یافته است، به این معنا که جریان کنترل برنامه، به طور کامل در میان عبارات استاندارد ساخت یافته‌ای می‌باشد، البته بدون فرمان go to . while a b do writeln('Waiting'); if a > b then writeln('Condition met') else writeln('Condition not met'); for i := 1 to 10 do writeln('Iteration: ', i:1); repeat a := a + 1 until a = 10; case i of 0: write('zero'); 1: write('one'); 2: write('two') end; پردازه‌ها و توابع [ویرایش] پاسکال برنامه‌ها را به توابع و پردازه‌ها شکل دهی می‌کند. program mine(output); var i : integer; procedure print(var j: integer); function next(k: integer): integer; begin next :ه ا= k + 1 end; begin writeln('The total is: ', j); j := next(j) end; begin i := 1; while i = 10 do print(i) end. پردازه‌ها و توابع می‌توانند تا هر عمقی به صورت تودرتو باشند و ساختار برنامه به صورت منطقی، بیرونی‌ترین بلوک در نظر گرفته می‌شود. هر پردازه یا تابع می‌تواند اعلان‌های خودش برای برچسب‌های goto، ثوابت، تایپ ها، متغیرها و دیگر پردازه‌ها و توابع را داشته باشد که همگی باید در آن دسته قرار گیرند. این ملزومات ترتیبی، در اصل به قصد اجازه به کامپایل یک طرفه کارآمد بود. با این حال در بعضی نسخه ها، ملزومات الزامی ترتیبی قسمت اعلان ها، مورد نیاز نمی‌باشد. کامپایلرها و مفسر ها [ویرایش] کامپایلرها و مفسرهای گوناگون پاسکال برای استفاده عمومی همگان مهیا است:•Delphi محصول شرکت CodeGear (Borland پیشین) می‌باشدکه این شرکت پرچمدار توسعه با شتاب برنامه‌های کاربردی (RAD)(Rapid Application Development) است. از زبان پاسکال شی گرا استفاده می‌کند(نام گذاری زبان برنامه نویسی Delphi توسط Borland )، زاده شده از پاسکال می‌باشد و به منظور خلق برنامه‌های کاربردی برای بستر windows تهیه شده است. نسخه‌های اخیر 2005 تا 2007 کامپایل به بستر .Net را نیز پشتیبانی می‌کنند. یک نسخه از(Turbo Delphi Explorer) برای دریافت رایگان مهیا می‌باشد.•Free Pascal (http://www.freepascal.org/) یک کامپایلر چند بستره می‌باشد که در پاسکال نوشته شده است (خود میزبان می‌باشد). هدف از آن فراهم کردن یک کامپایلر نیرومند و راحت بود که هم قادر به کامپایل برنامه‌های کاربردی قدیمی باشد و نیز ابزاری برای توسعه امکانات جدید. این کامپایلر زیر نظر GNU GPL توزیع شده است. با صرف نظر از روش‌های سازگاری برای Turbo Pascal، Delphi و MacPascal، این کامپایلردارای حالت‌های نحوی شی گرا و ساخت یافته خودش به همراه پشتیبانی امکانات توسعه یافته همانند سربارگذاری عملگرها می‌باشد. او همچنین بسیاری از platformها و سیستم‌عامل‌ها را پشتیبانی می‌کند.•Lazarus(lazarus.freepascal.org) یک IDE پیوند زده شده با platform بصری شبیه Delphi می‌باشد که برای توسعه با شتاب برنامه‌های کاربردی(RAD) تهیه شده است. مبتنی بر freepascal می‌باشد، برای platformهای بسیاری شامل Linux، FreeBSD، Mac OS X و Windows آماده است. • Dev-Pascal یک محیط برنامه نویسی پاسکال است که در Borland Delphi طراحی شد و هر دوی Free Pascal و GNU Pascal را به صورت پیش فرض پشتیبانی می‌کند. او بر خلاف همزادش C++ سالهاست که دستاورد مهمی نداشته است.•Oxygene (قبل تر با نام Chrome شناخته می‌شد) کامپایلر نسل بعد پاسکال شی گرا برای .NET و platformهای تنها می‌باشد. او توسط RemObject Software ساخته و فروخته شد.•Kylix یکی از اولاد Delphi به همراه پشتیبانی برای سیستم‌عامل لینوکس و نیز یک کتابخانه شی ارتقا یافته بود. کامپایلر و محیط برنامه نویسی برای استفاده غیره تجاری هم اکنون موجود می‌باشند. این محصول توسط بورلند پشتیبانی نمی‌شود.•GNU Pascal Compiler(GPC) این کامپایلر پاسکال، مجموعه کامپایلرهای GNU است (GCC) GNU Compiler Collection. خود کامپایلر در C، وکتابخانه زمان اجرا عمدتاًدر پاسکال نوشته شده است. بصورت مجانی تحت لیسانس نشر عمومی GNU توزیع شده است. بر روی بسیاری از platformها و سیستم‌عامل‌ها اجرا می‌شود. او زبان‌های استاندارد ANSI/ISO و بخشی از زبان‌های Borland/Turbo Pascal را پشتیبانی می‌کند. یکی از دردناک‌ترین محذوفات، غیاب %100 نوع رشته سازگار با TP است. در این کامپایلر پشتیبانی Delphi و زبان‌های متنوع دیگر به کلی محدود شده است به استثنای Mac Pascal که پشتیبانی برای آن به سرعت در حال رشد است.•Virtual Pascal توسط Vitaly Mirianov در سال 1995 به عنوان کامپایلر درونی OS/2 و سازگار با نحو بورلند پاسکال ساخته شد. پس از آن به صورت تجاری توسط fprint و اضافه کردن پشتیبانی Win32 توسعه یافت و در سال 2000 یک برنامه رایگان شد. امروزه برای Win32 و OS/2 و Linux دارای توانایی کامپایل است و با بورلند پاسکال و دلفی بسیار سازگار است. توسعه این کامپایلر در 4 آوریل 2005 لغو شد.•کامپایلر P4 که پایه و اساسی برای بسیاری کامپایلرهای پیاده سازی پاسکال در پاسکال می‌باشد، شامل UCSD p-System است. او یک زیر مجموعه از پاسکال کامل را پیاده سازی می‌کند. •کامپایلر P5 یک ISO 7185 (پاسکال کامل) برگرفته از P4 می‌باشد.•Turbo Pascal یک کامپایلر برتر پاسکال برای کامپیوترهای شخصی در سال‌های 80 و اوایل 90 می‌باشد. به علت توانایی توسعه قوی اش و بویژه زمان کامپایل کوتاهش، دارای محبوبیت می‌باشد. توربو پاسکال به صورت فشرده نوشته شده است و می‌تواند تماماً در حافظه و بدون دسترسی به دیسک، کامپایل، اجرا و اشکالزدایی شود. در آن موقع فلاپی دیسک‌های کند در بین برنامه نویسان رواج داشت که این نیز سبب بزرگنمایی مزیت توربوپاسکال شد. هم اکنون نسخه‌های قدیمی توربو پاسکال (بالاتر از 5.5) برای دریافت مجانی از سایت بورلند مهیا می‌باشند.•Turbo51(turbo51.com) یک کامپایلر مجانی پاسکال برای خانواده 8051 از میکروکنترلرها می‌باشد (از نحو توربو پاسکال 7.5 استفاده می‌کند).•Dr. Pascal یک مفسر است که پاسکال استاندارد را اجرا می‌کند. نکته قابل توجه، حالت اجرای مرئی آن می‌باشد، که در این حالت، یک برنامه در حال اجرا، و متغیرهای آن برنامه و امکان بررسی خطای زمان اجرا را به صورتی وسیع و گسترده نشان می‌دهد. برنامه را اجرا می‌کند، اما اعداد باینری اجرایی را تولید نمی‌کند. این مفسر، در MS-DOS و Windows (در پنجره DOS ) و در Macintoshهای قدیمی اجرا می‌شود.•کامپایلر پاسکال توسعه داده شده Dr Pascal: این کامپایلر بر روی DOS وWindows 3.1, 95, 98, NT تست شده است.•IP Pascal زبان Pascaline (نامگذاری شده بعد از Pascal’s calculator) را پیاده می‌کند که یک پاسکال توسعه یافته وسیع می‌باشد و براساس ISO 7185 سازگار با پاسکال اصلی تهیه شده است. این زبان، پیمانه‌ها را به همراه کنترل‌های فضای نام نشان می‌دهد که مشتمل بر پیمانه‌های وظایف موازی به همراه پرچم‌های راهنما، اشیا، آرایه‌های پویا با هرتعداد بعد که در زمان اجرا تخصیص داده می‌شوند، سربارگذاری ها، لغو کردن‌ها و بسیاری امکانات دیگر است. IP Pascal یک کتابخانه قابل نقل و انتقال در درون خود دارد که به صورت سفارشی برای زبان پاسکال ساخته شده است. به عنوان مثال یک برنامه کاربردی دارای خروجی استاندارد متنی از پاسکال اصلی سال 1970 را برای کار کردن در یک پنجره و حتی در ساخت‌های گرافیکی اضافه شده، می‌توان مجدداً کامپایل کرد.•Pocket Stodio یک کامپایلر زیر مجموعه‌ای پاسکال می‌باشد که با هدف قرار دادن سیستم‌عامل Palm به منظور توسعه با شتاب برنامه‌های کاربردی/ MC68xxx طراحی و ساخته شد. برای این امر از بعضی امکانات خودش، برای کمک به واسط ها، توسطAPI های Palm OS استفاده می‌کرد.•MidletPascal – یک کامپایلر پاسکال و یک IDE که کدهای بیتی سریع و کوچک جاوا را تولید می‌کند و مخصوصاً به منظور ساخت نرم‌افزار برای موبایل طراحی شده است.•Vector Pascal یک زبان است که در مجموعه دستور العمل SIMD همانند MMX وAMD 3d کنونی، در نظر گرفته شد که تمام پردازنده‌های Intel و AMD را به خوبی موتور Play Station 2 پشتیبانی کند.•Morfic Pascal که توسعه برنامه‌های کاربردی Web تماماً نوشته شده در پاسکال شی گرا را امکان پذیر می سازد (برای هردو قسمت کارگزار و مرورگر)•Web Pascal (http://www.codeide.com/) یک محیط نرم‌افزاری و کامپایلر پاسکال online می‌باشد.•WDSibyl یک محیط توسعه بصری و کامپایلر پاسکال برای Win32 و OS/2 است.•PP Compiler، یک کامپایلر برای سیستم‌عامل‌های Palm است که مستقیماً برروی کامپیوتر هایی به اندازه کف دست اجرا می‌شود.یک لیست بلند بالا را در Pascaland می‌توان پیدا کرد. این Site در فرانسه است، اما اساساً یک لیست به همراه URL هایی به کامپایلرهاست، با این حال یک مانع کوچک برای کسانی که فرانسوی زبان نیستند وجود دارد. این پایگاه و پایگاه‌های مرکز پاسکال، سایت مرکزی اطلاعاتی Mac Pascal و سایت advocacy، به همراه مجموعه‌ای غنی از مقالات آرشیوی، به اضافه لینک هایی به بسیاری کامپایلرها و خودآموزها، نیز ممکن است جالب باشند. استانداردها [ویرایش] در سال 1983، زبان در استاندارد بین‌المللی ISO/ICE 7185 همانند استانداردهای ویژه کشورهای محلی، دارای استاندارد بود ودر برگیرنده استاندارد آمریکایی ANSI/IEEE770X3.97-1983 و ISO7185:1993 بود. این دو استاندارد فقط در اینکه استاندارد ISO یک بسط “level 1” برای آرا یه‌های صریح داشت و ANSI اجازه امکان این توسعه را به برنامه اصلی (نسخه آقای Wirth) نمی‌داد، متفاوت بودند. در سال 1989 استاندارد ISO7185 برای تصحیح خطاهای متنوع وابهاماتی که در سند اصلی موجود بود، بازنگری شد و منجر به ISO 7185:1990 شد.در 1990 یک پاسکال استاندارد توسعه یافته به عنوان ISO/ICE 10206 ساخته شد. در سال 1993 استاندارد ANSI توسط خود سازمان ANSI، با “pointer” به استاندارد ISO 7185:1990 ارتقا یافت. دراین استاندارد جدید، اتمام و انتهای وضعیت، به طور محسوسی متفاوت می‌باشد.قرار شد که ISO 7185 یک شرح روشن کننده و ابهام زدا برای زبان آقای Wirth در سال 1974 باشد، به همان صورتی که توسط دستورالعمل‌های راهنما و گزارش (Jenson & Wirth) شرح داده شده است. اما یک نکته قابل تأمل وجود دارد و آن اضافه نمودن پارامترهای آرایه همسان به عنوان level 1 برای این استاندارد و level 0 برای پاسکال بدون آرایه‌های همسان می‌باشد.توجه کنید که خود Nikulas Wirth به زبان 1974 به عنوان استاندارد ارجاع داد، مثلاً برای تفاوت گذاشتن میان آن و امکانات مخصوص ماشین برای کامپایلر CDC6000. این زبان سال 1974 برای پاسکال حرفه‌ای به صورت سند در آمد و قسمت دوم کتابچه راهنمای استفاده کنندگان پاسکال و گزارشات مربوط به آن می‌باشد.پاسکال بر روی ماشین‌های بزرگ (پردازنده‌های مرکزی و کامپیوترهای کوچک) شروع به کار کرد، و استانداردها عموماً پیروی می‌شدند. اما برروی کامپیوترهای شخصی IBM اینگونه نبود. برروی این کامپیوترها، استانداردهای توربو پاسکال و دلفی بورلند بیشترین تعداد استفاده کنندگان را دارا بود.بدین روی، عموماً درک این موضوع مهم می‌باشد که آیا یک پیاده سازی ویژه زبان، همانند زبان پاسکال اصلی می‌باشد یا یک نسخه برلند از آن همانند زبان پاسکال اصلی است.با آمدن UCSD Pascal نسخه‌های IBM-PC زبان، از نسخه‌های قبل متفاوت شدند. این نسخه یک پیاده سازی شفاهی است که توسعه‌ها و امکانات زیادی، بهمراه کاستی‌ها و تغییرات فراوانی را برای زبان بیان کرد. بسیاری از امکانات زبان UCSD در نسخه‌های بورلند، همچنان باقی مانده اند. دسته بندی ها [ویرایش] نسخه Niklaus Wirth’s Zurich زبان پاسکال در دو قالب اساسی به بیرون از ETH انتشار یافت، یکی منبع کامپایلر CDC6000 و دیگری کیت قابل حمل که سیستم Pascal-P نامیده می‌شد. کامپایلر Pascal-P امکانات متنوعی از زبان کامل را محدود کرد و مانع آنها شد. مثلاً پردازه‌ها و توابع که به عنوان پارامتر استفاده می‌شدند، رکوردهای گوناگون همسان، بسته بندی، مرتب کردن، gotoهای درون پردازه‌ای و دیگر امکانات کامپایلر کامل کنار گذاشته شدند.UCSD پاسکال زیر نظر پروفسور Kenneth Bowles بر پایه بسته Pascal-P2 بود، و در نتیجه بسیاری از محدودیت‌های زبان Pascal-P را نیز دارا بود. بعدها پاسکال UCSD به عنوان Apple Pascalنام گذاری شد و در نسخه‌های متعددی ادامه پیدا کرد. اگر چه UCSD پاسکال، زیر مجموعه پاسکال را در بسته Pascal-P با برگرداندن استانداردهای پاسکال گسترش داد، اما هنوز به صورت یک مجموعه استاندارد کامل برای پاسکال نبود.توربو پاسکال برلند، توسط Anders Hejsberg در زبان اسمبلی و مستقل از کامپایلرهای UCSD و زوریخ نوشته شد، با این حال او بسیاری از زیر مجموعه‌های مشابه و الحاقات کامپایلر UCSD را پذیرفته بود. احتمالاً این امر به این علت است که سیستم UCSD، عمومی‌ترین سیستم پاسکال بود که برای توسعه کاربردها برروی سیستم‌های ریزپردازنده‌ای دارای منابع محدود در آن زمان مهیا بود. لیست استانداردهای مربوط [ویرایش] •ISO 8651-2:1988 سیستم‌های پردازش اطلاعات—گرافیک‌های کامپیوتری— قیدهای زبانی سیستم با هسته گرافیکی (GKS)(Graphical Kernel System) – قسمت 2: پاسکال جهت گیری ها [ویرایش] پاسکال در جامعه رایانه واکنش‌های متعددی را برانگیخت که هم به صورت موافق بودند و هم به صورت انتقادی. انتقادات [ویرایش] اگرچه پاسکال بسیار محبوب است (هرچند در سال‌های 1980 و اوایل 1990 خیلی بیشتر از حالا)، نسخه‌های ابتدایی پاسکال به علت نامناسب بودن به خاطر استفاده مشکل در کاربردی غیر از تدریس، به طور گسترده مورد انتقاد قرار گرفتند.Brian Kernighan که زبان برنامه نویسی C را محبوب کرد، در زودترین زمان ممکن در سال 1981، انتقادات قابل توجه خود را در مقاله خودش با عنوان "چرا پاسکال زبان برنامه نویسی محبوب من نیست"، مطرح کرد. از سوی دیگر بسیاری از عمده تلاشهای توسعه در سالهای 1980، همچون آنهایی که برای Apple Lisa و Macintosh بودند، بشدت وابسته به پاسکال بودند (اشاره به این نکته که در آن هنگام رابط C برای API سیستم‌عامل Macintosh، مجبور به معامله با انواع داده‌ای پاسکال بود).در دهه‌های پس از آن، پاسکال به رشد و گسترش خود ادامه داد و بیشتر ایرادات Kernighan به پیاده سازی‌های فعلی وارد نیستند. متأسفانه همان طور که او در مقاله اش پیش بینی کرده بود، بیشتر الحاقات برای تصحیح این ایرادات، در کامپایلرهای گوناگون ناسازگار بودند. در دهه اخیر، اگر چه عمده تغییرات در دو گروه عمده متمایل به ISO و متمایل به Borland خلاصه می‌شوند، با این حال، وضعیتی بهتر از پیش بینی Kernighan حاصل شده است.هرچند Kernighan کمبود نوع‌های scape در پاسکال (هیچ scape وجود ندارد از مقاله چرا پاسکال زبان برنامه نویسی محبوب من نیست) و استفاده خارج از کنترل اشاره گرها و نوع‌های scape را برملا ساخت، با این حال این‌ها نکات انتقادی شدید و بسیار جدی بودند و زبان‌های java و C# و دیگر زبانها با توجه به این انتقاد وارده بر پاسکال، یک تغییر و برگشت هشیارانه را ترسیم کردند و نشان دادند، که این زبان ها، اشاره گرهای مدیریت شده “managed pointers” نامیده شدند که در واقع توسط آقایWirth با خلق پاسکال پیش بینی شده بودند.بر پایه این تجربیات پاسکال (و قبلتر با Algol )، آقای Wirth زبان‌های متعدد و بیشتری را توسعه و بسط داد همانند modula، modula 2 و obern. این زبان‌ها که بعضی از ایرادات و اشکالات پاسکال را دارا می‌باشند، به قصد رواج در میان استفاده کنندگان گوناگون و به اهدافی دیگر طراحی شده بودند، اما هیچ یک نه تأثیری شگرف به وسعت پاسکال بر روی علم کامپیوتر و استفاده کنندگان آن گذاشتند و نه تاکنون در موفقیت تجاری مشابهی همانند موفقیت پاسکال دیده شدند. مزایا و معایب زبان برنامه نویسی پاسکال [ویرایش] تاکنون ده‌ها زبان برنامه نویسی مختلف در جهان به وجود آمده و از بین رفته اند که هر یک از آنها دارای مزایا و معایبی بوده اند، زبان پاسکال نیز همانند دیگر زبانهای برنامه نویسی دارای مزایا و معایبی است . مزایای زبان پاسکال از معایب آن بیشتر است و این امر باعث دوام چند دهه‌ای آن شده است .از مهم‌ترین مزایای پاسکال، قابل فهم بودن دستورات آن می‌باشد، چرا که دستورات پاسکال به زبان محاوره‌ای نزدیک هستند . مزیت دیگر زبان پاسکال، داشتن توابع کتابخانه‌ای است که باعث ایجاد سرعت و سهولت در برنامه نویسی می‌گردد . توابع کتابخانه‌ای در حقیقت زیر برنامه‌هایی هستند که از قبل نوشته شده اند و شما می‌توانید از آنها در برنامه‌هایتان استفاده کنید . برای مثال اگر بخواهید قدرمطلق عددی را به دست آورید می‌توانید از تابع مربوطه که از قبل نوشته شده است، استفاده کنید . همچنین از دیگر مزیتهای زبان پاسکال پشتیبانی از انواع اطلاعات می‌باشد و این مزیتی است که باعت برتری زبان پاسکال نسبت به بسیاری از زبانهای برنامه نویسی می‌گردد . زبان پاسکال از اعداد صحیح، اعداد اعشاری، کاراکترها، مجموعه ها، آرایه ها و . . . پشتیبانی می‌کند . ساخت یافته (structure base) بودن زبان پاسکال نیز از مهم‌ترین مزایای آن است . برنامه ساخت یافته به برنامه‌ای گفته می‌شود که از بلوکهای پی در پی یا متداخل تشکیل شده باشد .برنامه نویسی ساخت یافته دارای مزایای متفاوتی است : با توجه به اینکه برنامه به قسمت‌های کوچک تر تقسیم بندی می‌گردد، بنابراین اشکال زدایی (debugging) آن ساده تر خواهد بود . خوانایی و درک برنامه ساده تر می‌گردد. اعمال تغییرات در برنامه ساده تر انجام می‌گیرد. آخرین مزیتی را که می‌توان مورد اشاره قرار داد، داشتن محیط مجتمع برنامه نویسی است که به طور خلاصه به آن IDE گفته می‌شود . مترجم پاسکال قابلیت ترجمه برنامه‌ها را در دو حالت مجتمع و خط فرمان دارا می‌باشد . در حالت اول می‌توان برنامه را درون ویراستار مخصوص پاسکال نوشته و اجرا کرد . این ویراستار دارای امکانات ویرایشی متعددی می‌باشد که موجب ایجاد سرعت و سهولت در نوشتن برنامه می‌گردد . در حالت دوم می‌توان برنامه را با استفاده از هر ویراستاری تهیه نموده سپس عمل ترجمه را از طریق خط فرمان سیستم‌عامل ویندوز انجام داد. پس از ذکر مزایای زبان پاسکال بهتر است به معایب آن اشاره داشته باشیم . نداشتن قابلیت انعطاف، نداشتن قابلیت انتقال و عدم امکان تعریف رکورد با طول متغیر، از جمله معایب این زبان هستند . اجزای تشکیل دهنده یک برنامه [ویرایش] یک برنامه به زبان پاسکال از قسمت‌های مختلفی تشکیل می‌شود . کوچک‌ترین واحدهای معنی دار در زبان پاسکال توکن ( Token ) نامیده می‌شود که عبارت اند از :1 - حروف : حروف الفبای بزرگ ( از A تا Z ) و حروف الفبای کوچک ( a تا z )2 - ارقام مبنای 10 : ارقام 0 تا 93 - ارقام مبنای 16 : ارقام 0 تا 9 و حروف A تا F و یا a تا f4 - کاراکترهای تکی : + ، - ، / ، * ، = و . . .5 - جفت کاراکترها : مانند ، => ، =6 - شناسه ( Identifier ) : از شناسه‌ها برای نام گذاری استفاده می‌شود . شناسه ترکیبی از حروف، ارقام و کاراکتر زیر خط (-) است که می‌تواند دارای طول دلخواهی باشد اما پاسکال فقط 63 کاراکتر اول را در نظر خواهد گرفت . شناسه حتماً باید با یک حرف یا علام زیر خط (-) آغاز شود . شناسه‌های به دو دسته تقسیم می‌شوند : الف ) شناسه‌های استاندارد : این شناسه‌ها از قبل در پاسکال تعریف شده اند برای نمونه می‌توان به Write و Read اشاره نمود . ب ) شناسه‌های غیر استاندارد : این شناسه‌ها به وسیله کاربر به طور مجزا تعریف می‌شوند به همین دلیل به آن‌ها User defined گفته می‌شود . لازم به ذکر است که پاسکال در تعریف شناسه‌ها تفاوتی میان حروف بزرگ و کوچک قائل نمی‌شود بنابراین شناسه‌های counter و COUNTER با یکدیگر معادل اند .7 - برچسب ( برچسب ) : از برچسب برای مشخص نمودن خطوط خاصی از برنامه استفاده می‌شود . با استفاده از دستور goto می‌توان کنترل برنامه را به خط مشخصی از برنامه منتقل نمود . برچسب‌ها می‌توانند عدد صحیح در محدوده 0 تا 9999 و یا یک شناسه باشد .8 - اعداد : اعداد می‌توانند حقیقی یا صحیح، مثبت یا منفی باشند . هرکدام به چند نوع تقسیم می‌شوند . باید توجه داشت که اعداد صحیح می‌توانند از نوع هگزادسیمال نیز باشند که در این صورت باید اولا با علامت $ شروع شوند و ثانیا طول آن نباید از هشت رقم هگزادسیمال بیشتر باشد بنابراین محدوده قابل قبول برای اعداد صحیح هگزادسیمال از 00000000$ تا FFFFFFFF$ است و در ضمن نباید شامل علامت + یا – باشند .9 - ثابت های رشته ای ( string constants ) : ثابت رشته‌ای، عبارت از تعدادی کاراکتر است که درون دو علامت آپوستروف ( ' ) قرار می‌گیرند . استفاده از کاراکترهای کنترلی ( کاراکترهایی که دارای کد اسکی (استاندارد) تا 30 می‌باشند ) در یک ثابت رشته‌ای مجاز است اما استفاده از کاراکترهای آپوستروف ( ' ) و carriage Return ( ) غیرمجاز است . همچنین در صورتی که از علامت # به همراه یک عدد مثبت بین 0 تا 255 استفاده شود باعث جایگزینی کاراکتر متناظر با عدد مربوط در جدول کدهای ASCII خواهد شد . کلمات رزرو شده ( Reserved words ) : به مجموعه‌ای از کاراکترها اطلاق می‌شود که برای پاسکال دارای معنای خاصی می‌باشند و هرگز نمی‌توان از آن‌ها به عنوان شناسه غیراستاندارد استفاده نمود . ساختار کلی برنامه در زبان پاسکال [ویرایش] اجزای اصلی یک برنامه به زبان پاسکال عبارت اند از: عنوان برنامه ( program Heading ) قسمت اطلاعات (Data section ) قسمت دستورالعمل‌ها ( code section ) عنوان برنامه شامل دو قسمت زیر است: نام برنامه ( program Name ) فرمان‌های کامپایلر ( compiler Directives ): این قسمت که به عنوان اولین بخش از ساختمان یک برنامه در نظر گرفته می‌شود محل قرار گرفتن نام برنامه به همراه پارامترهای ورودی و خروجی و همچنین فرمان‌های کامپایلر که کنترل عمل کامپایل شدن برنامه را برعهده دارند می‌باشد . قسمت‌های الف و ب هر دو اختیاری بوده، وجود آن‌ها باعث روشن شدن هر چه بیشتر وظیفه برنامه و شرایط ترجمه آن به زبان ماشین می‌باشد. قسمت اطلاعات ( Data section ): این قسمت خود شامل 4 قسمت دیگر می‌باشد که عبارت اند از: اعلان ثابت‌ها Constant Declaration اعلان انواع اطلاعات اعلان متغیرها Variable Declatration اعلان برچسب‌ها Label Declatration در این قسمت دستورات به ترتیب اجرا مرحله به مرحله گنجانیده می‌شوند . این قطعه، همواره شامل بلوک اصلی برنامه ( Main program Block ) بوده و می‌تواند در صورت لزوم شامل پروسیجرها و توابع نیز باشند . در بلوک اصلی برنامه که خود با کلمه رزرو شده begin شروع و با end ختم می‌گردد . دستورات عملیاتی مانند نسبت دادن مقادیر معلوم به متغیرها، فراخوانی پروسیجرها و توابع اجرای حلقه‌های مختلف و غیره انجام می‌شود . این قسمت خود شامل سه قسمت دیگر می‌باشد که عبارت اند از: پروسیجرها ( procedures ) توابع ( function ) بلوک اصلی برنامه قسمت متغییرها

منبع:

http://fa.wikipedia.org

برنامه نويسي

برنامه نويسی چيست؟

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

آشنايی با چند زبان برنامه نويسی :

 ليسب:

 یک زبان برنامه‌نویسی رایانه است که در سال ۱۹۵۸ به وسیلهٔ جان مک‌کارتی ابداع شده است. این زبان، مانند زبان برنامه‌نویسی پرولوگ، بیشتر برای برنامه‌نویسی هوش مصنوعی مورد استفاده قرار می‌گیرد. با توجه به اینکه زبان لیسپ از نحو ساده‌ای برخوردار است، تجزیه و پیاده‌سازی آن نسبتاً با سهولت انجام می‌شود.

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

لیسپ دارای گویش‌های مختلفی است که بعضی از آنها دارای قابلیت‌های شیءگرا نیز هستند. از این میان می‌توان به کامن لیسپ اشاره کرد.

  سی نام فارسی عدد ۳۰ است.

زبان برنامه‌نویسی سی یکی از زبان‌های برنامه‌نویسی رایانه‌ای است.

سی (Si) نماد شیمیایی سیلیکون است.

زبان برنامه‌نویسی ++ : C

 (تلفظ می شود: سی پلاس پلاس) یک زبان برنامه‌نویسی کامپیوتری سطح بالا و عمومی (با کاربرد های متنوع) می باشد. این زبان از تمام روش های مرسوم برنامه نویسی از قبیل برنامه‌نویسی شی‌گرا، برنامه نویسی ساخت یافته و برنامه نویسی پایه پشتیبانی می کند.

زبان ++C در سال ۱۹۸۳ در آزمایشگاه های بل (Bell Labs) و بر مبنای زبان سی با افزودن امکانات برنامه نویسی شی گرا ساخته شد. این زبان از حوالی سال ۱۹۹۰ میلادی یکی از پرکاربردترین زبان‌های برنامه نویسی به شمار می رود که برای برنامه نویسی سیستمی و برنامه نویسی ویژوال (بر مبنای GUI) در محیط های مختلف از قبیل ویندوز و لینوکس به صورت وسیع به کار می رود.

جاوا:

 امروزه یکی از متداول ترین زبان های برنامه نویسی جهان است. این زبان از لحاظ ظاهری شباهت های زیادی به ++C دارد ولی در اصل می توان تفاوت های بنیادین زیادی را برای آنها بر شمرد. بر خلاف بسیاری دیگر از زبان های کامپایلری که سورس کد آنها پس از کامپایل شدن به باینری یک ماشین حقیقی ترجمه می شود، برنامه های جاوا پس از کامپایل شدن به باینری ماشینی به نام ماشین مجازی جاوا یا JVM ترجمه می شود. این کد باینری را بایت کد می گویند. ماشین مجازی جاوا عمدتا بصورت نرم افزاری پیاده سازی می شود ولی پیاده سازی های سخت افزاری یا ترکیبی (بیشتر به صورت کمک پردازنده) از آن نیز وجود دارد. استفاده از ماشین مجازی یک روش مدرن در زبان های برنامه نویسی محسوب می شود و مزایای زیادی دارد. ماشین مجازی جاوا می تواند امنیت اجرای برنامه ها را تضمین کند و حق دسترسی های مختلفی برای برنامه ها در نظر بگیرد. همچنین ماشین مجازی جاوا سازگاری اجرای برنامه های جاوا را تحت سیستم عامل های مختلف حفظ می کند. یک باور غلط در بین بسیاری از مردم این است که برنامه های نوشته شده به زبان جاوا کندتر از برنامه های نوشته شده به زبان های کامپایلری اجرا می شود، در حالی که سرعت اجرای یک برنامه جاوا کاملا بستگی به نحوه پیاده سازی ماشین مجازی دارد. ماشین های مجازی جدید جاوا معمولا از تکنیکی به نام کامپایل در زمان لازم یا JIT استفاده می کنند. در این روش در هنگام اجرای برنامه بایت کد ابتدا به کد باینری ماشینی حقیقی که بر روی آن اجرا می شود ترجمه می شود و سپس باینری ترجمه شده بر روی ماشین اصلی اجرا می شود. در این فرآیند ماشین مجازی می تواند بهینه سازی های خاص ماشین حقیقی را بر روی کد انجام دهد که در برخی موارد باعث می شود برنامه های جاوا حتی سریع تر دیگر زبان های کامپایلری اجرا شود.

سی‌شارپ:

 همچون زبان برنامه‌نویسی جاوا زبانی‌ست شئ‌گرا و بسیار سطح بالا (high level). محصول شرکت Microsoft و بر پایه .NET از آنجایی که شئ‌گرائی و سطح بالا بودن از ابزارهای مدیریّت مؤثّر و کارآمد پیچیدگی در فضای پیچیدۀ اینترنت مدرن می باشند، در واقع می‌شود جاوا و سی‌شارپ را از جمله زبان های اصلی برای ایجاد و انجام برنامه‌های کاربردی تحت وب (web applications) و خدمات وب دانست.

بر اساس ادّعای شرکت مایکروسافت، این زبان در سال 2000 توسط تیمی به سرکردگی آندرس هلزبرگ و نیز سکات ویلتاموث ساخته شد. سی‌شارپ که فقط برای دات نت است در مجموعه NET Platform SDK. ارائه گردید که در محیط های برنامه نویسی استودیوی بصری دات نت (Visual Studio .NET)، در نسخه‌های 2003 و 2005 آن موجود است. دستورات زبان سی‌شارپ مانند جاوا سطح بالا تر از C و ++C است و برای مثال برنامه نویس مستقیما به اشاره گرها یا منابع سیستم دسترسی ندارد.

 زبان برنامه نویسی بیسیک:

 (بر گرفته از کلمات beginner's all-purpose symbolic instruction) یک زبان برنامه‌نویسی ساده از نظر آموزش و بکارگیری و داراى فهرست کوچکى از دستورات و قالبهاى ساده، مقدماتى، پايه‌اى، قلیایی، ابتدایی، اولیه، پایه‌اى، اساسى، اصلی، تهی، بنیانی که در اواسط دهه ۶۰ میلادی توسط جان کمنی و توماس کرتز در کالج دارتموت ابداع شد و به عقیده بسیاری آسان‌ترین زبان برای یادگیری است.

پایتون:

 یک زبان برنامه نویسی سطح بالا برای کامپیوتر است که توسط گیدو ون روسوم(Guido van Rossum) در سال ۱۹۹۰ ساخته شد. این زبان از زبان های برنامه نویسی تفسیری بوده و به صورت کامل یک زبان شی‌گرا است که در ویژگی‌ها با زبانهای تفسیری پرل، روبی، اسکیم، اسمال‌تاک و تی‌سی‌ال مشابهت دارد و از مدیریت خودکار حافظه استفاده می‌کند.

پایتون پروژه‌ای بازمتن توسعه یافته است و توسط بنیاد نرم‌افزار پایتون مدیریت می‌گردد. نسخهٔ ۲.۴.۲ این زبان در تاریخ ۲۸ سپتامبر ۲۰۰۵ منتشر شد.

زبان برنامه نویسی پرل:

 در سال ۱۹۸۷ توسط لاری وال ساخته شد. پرل قابلیت‌هایی از زبان برنامه‌نویسی سی،دست‌نوشته شل،أک،لیسپ و دیگر زبان‌های دیگر وام گرفته است.

پی‌اچ‌پی:

 (PHP) یکی از پر طرفدارترین زبان‌های برنامه‌نویسی متن باز (Open Source) می‌‌باشد، که بیشتر برای طراحی برنامه‌های سمت سرور در وب‌گاه‌های پویا (Dynamic) مورد استفاده قرار می‌گیرد. PHP مخفف PHP: Hypertext Preprocessor (پیش‌پردازنده فرامتن) می‌‌باشد. پی‌اچ‌پی در سال ۱۹۹۴ ایجاد شد. رسموس لردورف (Rasmus Lerdorf) ایجاد کننده اولیه آن بوده است ولی در طی زمان این زبان برنامه‌سازی، توسط سایر کارشناسان و برنامه‌نویسان تکمیل گردیده و به شکل کنونی آن درآمده‌است.

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

مشهورترین نرم‌افزارهای(بسته هاي) ایجاد شده با پی‌اچ‌پی عبارت‌اند از phpBB و PHPNuke و مدیاویکی (MediaWiki) (که این وب‌گاه با آن طراحی شده). پی‌اچ‌پی می‌تواند جایگزینی برای زبان‌های ASP.NET و JSP و Perl باشد.

سادگی استفاده از پی‌اچ‌پی و شباهت آن به زبان سی و پرل (و از نسخه ۵ آن به جاوا) باعث شده که اغلب برنامه نویسان با تجربه در کوتاه‌ترین زمان ممکن برنامه‌های کاملی را ایجاد کنند.

پی‌اچ‌پی تنها یک زبان اسکریپت‌نویسی نیست و با استفاده از PHP-GTK می‌توان برای طراحی برنامه‌های با ظاهر گرافیکی (GUI) و همچنین طراحی برنامه‌های خط فرمان شبیه پرل یا پایتون (Python) از آن استفاده کرد.

پی‌اچ‌پی امکان استفاده از انواع مختلفی از پایگاه‌های داده را از جمله MySQL، اوراکل، IBM DB2 ،Microsoft SQL Server ،PostgreSQL و SQLite با دستورهایی ساده فراهم می‌‌سازد.

پی‌اچ‌پی روی بیشتر سیستم عامل‌های معروف از جمله لینوکس، یونیکس، ویندوز و Mac OSX و با اغلب کارگزارهای وب (Web Server) معروف، قابل اجراست.

vb.net:

بعد از ارائه ویژوال بیسیک 6 شرکت مایکروسافت به دنبال ارائه تکنولــوژی دات نت سعی نمود که با بسط زبانهای برنامه نویسی قدیمی خود و انتقال آنها به ساختار جدید تر و افزودن امکانات به این زبانها بر آید و یکی از این زبانها که دستخوش تغییرات شد همان زبان ویژوال بیسیک 6 است که از آن به بعد به عنوان Visual Basic.net نام گرفت در واقع مایکروسافت با افزودن پسوند دانت نت به انتهای نام این زبانها سعی در معرفی تکنولــوژی دات نت داشت واین زبان حاوی ویژگی های جدید زیادی می‌باشد.بر خلاف ویژوال بیسیک، ویژوال بیسیک دات نِت یک زبان شیء گراست. توضیح بیشتر این که ویژوال بیسیک دات نِت از ویژگی های انتزاع(abstraction)، نهانسازی(encapsulation)، وراثت(inheritance)و چند ریختی(polymorphism) پشتیبانی می کند. نسخه‌های پیشین ویژوال بیسیک _ 4 تا 6 _ از واسطه ها(Interface) پشتیبانی می کرد اما از وراثت پشتیبانی نمی کرد. ویژوال بیسیک دات نِت وراثت را به خوبی واسطه‌ها پشتیبانی می نماید. از جمله ویژگی های دیگر آن می توان overload کردن را نام برد. به علاوه ویژوال بیسیک دات نت از چند پردازشی(multithread) پشتیبانی می کند که به شما امکان ایجاد برنامه‌های کار بردی چند پردازشی و مقیاس پذیر(scalable) را می دهد. ویژوال بیسک دات نت هم چنین با (CLS)common Language Specification ساز گار است و از اداره کردن ساختار یافته خطا پشتیبانی می کند.

دِلفی

 (Delphi) یا به تعبیری ویژوآل پاسکال – یک زبان برنامه‌نویسی است و بستری برای توسعهٔ نرم‌افزار که شرکت بورلند آن را تولید کرده است. این زبان، در بدو انتشار خود در سال ۱۹۹۵، به عنوان یکی از نخستین ابزارهایی مطرح شد که از توسعهٔ نرم‌افزار بر مبنای متدولوژی RAD پشتیبانی می‌کردند؛ یعنی تولید و توسعهٔ سریع برنامه‌های کاربردی.

این نرم افزار بر مبنای پاسکال شی‌گرا بوده و از این زبان مشتق شده است. البته بورلند نسخه‌ای از دلفی و سی‌پلاس‌پلاس‌بیلدر را برای لینوکس به نام کایلیکس (Kylix) ارائه کرد که مورد استقبال توسعه دهندگان نرم‌افزارهای لینوکس قرار نگرفت. نرم‌افزارهای دلفی در ابتدا به صورت مستقیم از کتابخانه‌های ویندوز و کتابخانهٔ مخصوص خود به نام VCL استفاده می‌کرد، اما پس از نسخه ۶ دلفی، امکانات استفاده از دات‌نت هم به آن اضافه شد. در حال حاضر می‌توان دلفی را یکی از رایج‌ترین زبان‌های ممکن در ایران دانست.

زبانِ دلفی که پیشتر بنام پاسکال شیءگرا (Object-Pascal) خوانده می‌شد و برای طراحی نرم‌افزاهای تحت ویندوز به کار می‌رفت، امروزه چنان توسعه یافته است که برای تولید نرم‌افزارهای تحت سیستم‌عاملِ لینوکس و دات‌نت نیز به کار می‌آید. بیشترین کاربرد دلفی در طراحی برنامه‌های رومیزی و پایگاه دا‌ده‌ها‌ است، اما به عنوان یک ابزارِ «چند- منظوره»، برای طراحی انواع گوناگونی از پروژه‌های نرم‌افزاری نیز مورد استفاده قرار می‌گیرد.

RAD=Rapid Application Development

.ویژوال بیسیک

 توسعه یافته زبان برنامه‌نویسی بیسیک می‌باشد. بیسیک توسط پروفسور جان کمنسی و توماس کرتز از کالج دارتموث برای نوشتن برنامه‌های ساده ایجاد شد. طراحی آن از اواسط دهه ۱۹۶۰ آغاز گردید.

ویژوال بیسیک تا نسخه ۳ به صورت ۱۶ بیتی بود. از نسخه ۵ به بعد فقط ویرایش ۳۲ بیتی آن ارائه شد. (نسخه ۴ هم به صورت ۱۶ بیتی و هم به صورت ۳۲ بیتی عرضه شده بود.)

ویژوال بیسیک از نسخه ۶ به بعد بر پایه چارچوب دات‌نت (NET.) ارائه شد.

اگر چه با ظهور ویژوال بیسیک دات نت اکثر برنامه‌نویسان ویژوال بیسیک ۶ به آن گرویدند، ولی نسخه ۶ همچنان طرفداران ویژه‌ی خود را دارد.

ویژوال بیسیک برای توسعه سریع نرم افزار (RAD یا Rapid Application Development) بر پایه رابط گرافیگی کاربر (GUI یا Graphical User Interface) توسعه داده شد. دسترسی آسان و سریع به پایگاه دادهها با استفاده از DAO ،RDO یا ADO و ایجاد کنترل‌های اکتیو ایکس از جمله مواردی هستند که این زبان را برای RAD مناسب کرده‌اند.

برنامه‌نویسی در ویژوال بیسیک به صورت رخدادگرا می‌باشد.

در برنامه‌نویسی تجاری، ویژوال بیسیک جز محبوب‌ترین‌ها است. بنابه آماری که در سال ۲۰۰۳ منتشر شد، ۵۳٪ از برنامه‌های تجاری با استفاده از این زبان تولید شده‌اند.

دقت كنيد كه زبان هايی مانند اچ‌تی‌ام‌ال (HTML) زبان برنامه‌نويسی نيستند بلكه زبانهای قالب بندی هستند.

نمونه یک برنامه

یک برنامهٔ ساده در زبان برنامه‌نویسیBasic که از ساده‌ترین زبان‌های برنامه‌نویسی است می‌تواند به شکل زیر باشد:

 REM MY FIRST TRY TO COMMAND THIS MACHINE TO DO WHAT I LIKE

PRINT "HELLO NEW WORLD!"

 END

سطر نخست که با واژه کلیدی "REM" آغاز شده و از سوی برنامهٔ واسط درنظر گرفته نمی‌شود و تنها برای نگاه داشتن یک توضیح یا مانند آن برای خود برنامه‌نویس است. سطر دوم با واژه کلیدی "PRINT" به دستگاه فرمان می‌‌دهد تا نوشته "HELLO NEW WORLD!" ("سلام دنیای نو!") را روی نمایشگر بنویسد (چاپ کند). سطر آخر پایان فرامین و برنامه را به ماشین اطلاع می‌‌دهد.

پس از نوشتن یک برنامه مانند بالا، برنامهٔ مترجم (در اینجا Basic) دستورات را تبدیل به فرامینی می‌کند که لایه زیرین، که ممکن است همان سخت افزار باشد، می‌تواند آنها را اجرا کند.

پارادایم‌ها

پارادایم برنامه‌نویسی

زبان‌های برنامه‌نویسی گوناگون براساس قابلیت‌های درنظر گرفته شده از شیوهٔ خط‌های مختلف استفاده می‌کنند. موارد ریزتری مانند چگونگی برخورد با نیازهای پشت پردهٔ ماشین مانند مدیریت حافظه و مدیریت زباله نیز در زبان‌های مختلف متفاوت است. علاوه بر این‌ها، مفاهیمی متفاوت از (اجرای) یک برنامه تصور شده‌اند که پارادایم یا الگو نام دارند. مثلاً پارادایم برنامه‌نویسی رویه‌ای با برنامه‌ها به صورت مجموعه‌ای از پیمانهها برخورد می‌کند و در برنامه‌نویسی منطقی برنامه‌ها گروه‌هایی از قضایا و قوانین منطقی هستند که ما را به نتایج راهنمایی می‌کنند. زبان‌های برنامه‌نویسی گوناگون بر اساس این پارادایم‌ها ساخته می‌شوند. مثلاً زبان برنامه‌نویسی Pascal و ++C بر مبنای برنامه‌نویسی شی‌گرا و Prolog برای برنامه‌نویسی منطقی طراحی شده‌اند. پارادایم‌ها در مواردی به هم مشابه‌اند و ممکن است تنها در شمار اندک اما تأثیرگذاری از ویژگی ها، متفاوت باشند. همچنین زبان‌های گوناگون ممکن است از ویژگی‌های چند پارادایم هم‌زمان استفاده کنند. مثلاً ++C ویژگی‌هایی از برنامه‌نویسی شی‌گرا، برنامه‌نویسی رویه‌ای و برنامه‌نویسی نوعی دارد.

برنامه‌نویسی شی‌گرا

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

در برنامه نویسی شی‌گرا (Object Oriented) همه چیز یک شی (Object)است. هر شی ویژگی‌ها(Properties) و توابع مربوط به خودش را دارد.

زبانهای برنامه نویسی شی گرا، زبانهایی هستند که در آن برنامه نویس می‌تواند اشيا مختلفی را تعریف نماید و از اشیاء تولید شده استفاده نماید. هر شی یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Methods خوانده می‌شوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی می نماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید.

 

منبع : http://www.soureshjan.com