زبان برنامهنویسی پاسکال
زبان برنامهنویسی رایانه ای پاسکال یکی از زبانهای مشهور برنامهنویسی سطح بالای متداول است.پاسکال به عنوان زبان ساده شده زبان ALgOL طراحی شد و مقاصد آموزشی داشت. این زبان توسط نیکلاوس ورث (Niklaus Wirth)پروفسور دانشگاه پلی تکنیک زوریخ/سوییس در اوایل سالهای ۱۹۷۰ توسعه یافته و نام آن از نام بلز پاسکال، ریاضیدان فرانسوی، الهام گرفته شده است. وقتی پاسکال اختراع شد زبان های برنامه نویسی بسیار زیادی وجود داشت ولی تنها چند تا از آنها بسیار استفاده میشدند که عباترتند از cobol,assembler,fortrant ایده اصلی زبان جدید نظم،مدیریت دادهها و نیاز به تعریف دادهها بود،این زبان از ابتدا به گونهای طراحی شده بود که یک زبان آموزشی باشد.
استاندارد این زبان برنامهنویسی در سال ۱۹۸۳ نوشته شده است و دو سازمان IEEE و ANSI آن را تائید کردهاند. هم اکنون این زبان بیشتر بهعنوان زبان برنامهنویسیی آموزشی برای مبتدیان در دانشگاهها تدریس میشود. سادگی و تجرید خوب این زبان امکان برنامهنویسی راحت بدون نیاز به آگاهی از ساختارهای پیچیدهٔ زیرین سیستم عامل را میدهد.
از خصوصیات این زبان میتوان به سادگیی فراگیری آن اشاره کرد. پاسکال نیز مانند بسیاری از زبانهای برنامهنویسی دیگر دارای کامپایلرهای زیادی است که از معروفترین آنها میتوان به کامپایلر توربو پاسکال (Turbo Pascal) که متعلق به شرکت بورلند (Borland) است اشاره کرد. شرکت بورلند از پاسکال شیگرا بهعنوان زبان برنامهنویسی محیط توسعه نرمافزار خود به نام دلفی استفاده کرده است.
توربو پاسکال کامپایلر مشهور پاسکال، که توربو پاسکال نام داشت در سال1983معرفی شد، توربو پاسکال همیشه در بین زبان های برنامه نویسی از فروش بسیار بالایی برخوردار بود.
توربو پاسکال مفهوم جدیدی را به نامIntegrated Development Environment ویا IDE را معرفی کرد، IDE یعنی محیط برنامه نویسی مجتمع،در واقع شما در این محیط میتوانید کد را ویرایش کنید (در یک ویرایشگر هماهنگ با wordstar)، کامپایلر را آغاز کنید، خطاها را ببینید و به خط هایی که حاوی آن خطا هاست بروید،البته این مسئله هم اکنون بسیار بی معنی به نظر میآید،اما در گذشته لازم بود که شما از ويرایشگر بیرون بروید و به DOS برگردید و سپس کامپایلر را به صورت خط فرمانی آغاز کنید، سپس شماره خطاهای خط را یادداشت کنید، دوباره ویرایشگر را باز کنید و به خط های حاوی خطا بروید و دوباره همه چیز را از اول انجام دهید.
به علاوه بورلند توربو پاسکال خود را فقط 49دلار می فروخت، در حالیکه مایکروسافت کامپایلر پاسکال خود راچند صد دلار به فروش می رساند، تداوم موفقیت چند ساله توربو پاسکال سبب شد که درآمدهای مایکروسافت از فروش کامپایلر پاسکال بسیار کاهش یابد. پاسکال دلفی بعد از 9نسخه از انتشار توربو پاسکال و بورلند پاسکال، که به تدریج زبان های بسیار گستردهای شده بود، بورلند در سال 1995 دلفی را معرفی کرد که پاسکال را به یک محیط برنامه نویسی دیداری(VISUAL) تبدیل کرده بود. زبان شیئ گرایی پاسکال که ما در دلفی از آن سود می جوییم در سال 1995 همراه با محیط برنامه نوسیس دیداری(VISUAL)دلفی اختراع نشد این زبان توسعه یافته زبان پاسکال شیئ گرا بود که قبلاً در محصول بورلند پاسکال از آن استفاده شده بود، اما بورلند پاسکال آن را را اختراع نکرد او تنها به گسترش وعمومی شدن آن کمک کرد.
پاسکال یک زبان برنامه نویسی امری و ساخت یافته تأثیر گذار میباشد که در سال 1968 طراحی شد و در سال 1970 توسط آقای Niklaus Wirth به عنوان یک زبان کارآمد و کوچک به منظور پیش برد و توسعه مهارت های برنامه نویسی با استفاده از برنامه نویسی ساخت یافته و ساختمان دادهها منتشر شد.
یک نسخه برگرفته که با عنوان Object Pascal شناخته میشود برای برنامه نویسی شی گرا طراحی شد.
تاریخچه
پاسکال بر پایه یک زبان برنامه نویسی Algol میباشد و به افتخار ریاضی دان و فیلسوف فرانسوی Blaise Pascal نام گذاری شد. آقای Wirth متعاقباٌ Modula-2 و Obern که شبیه پاسکال بودند را توسعه داد. قبل از آن و برای تهیه مقدمات پاسکال، ایشان زبان Euler که از Algol-W پیروی میکرد را توسعه دادند.
در ابتدا پاسکال بسیار وسیع و جامع بود، اما تنها به منظور یاددادن برنامه نویسی ساخت یافته به دانشجویان نبود. نسلهای متمادی از دانشجویان بر روی پاسکال به عنوان یک زبان مقدماتی در دورههای لیسانس کار کردند. همچنین نسخههای متفاوتی از پاسکال مکرراً برای هر چیزی از پروژههای تحقیقاتی گرفته تا بازی های رایانهای و سیستم های جاسازی شده استفاده شد. هم اکنون کامپایلر های جدید تر پاسکال موجود میباشند که که به طور وسیع و گسترده استفاده میشوند.
پاسکال نخستین زبان سطح بالا بود که برای توسعه و تکامل در Apple Lisa استفاده شد و در سال های اولیه Mac، قسمت هایی از سیستم عامل اصلی مکینتاش، از منابع پاسکال توسط دست به زبان اسمبلی 68000 Motorola ترجمه شد. حروفچینی محبوب سیستم TeX توسط Donald E.Knuth در WEB (سیستم برنامه نویسی آموزش دیده اصلی) نوشته شد، که بر پایه DEC PDP-10 Pascal میباشد، آن هم در هنگامی که یک برنامه کاربردی مانند Total Commander در Delphi (پاسکال شی گرا) نوشته شد.
چکیده
قصد آقای Wirth خلق یک زبان کار آمد بود (در هر دو مورد سرعت کامپایل و کد ساخته شده) که بر پایه به اصطلاح برنامه نویسی ساخت یافته (مفهومی که به تازگی محبوب شده است) میباشد. اصول و ریشههای پاسکال در زبان الگول 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 را اختیاری در نظر میگیرند.
در اینجا یک مثال از کد برای یک برنامه خیلی ساده آورده شده است.
انواع داده
یک تایپ در پاسکال و در عموم زبان های برنامه نویسی محبوب دیگر، یک متغیر را به گونهای در نظر میگیرد که درآن، حوزهای از مقادیر قابل قبول تعریف میشود که متغیر قادر به ذخیره آن میباشد و همچنین مجموعهای از عملگرها را لحاظ میکند که برروی آن متغیر با آن نوع مجاز است. انواع دادهها و توضیحی مختصر در مورد آنها در زیر آورده شده است.
نوع داده حوزه قابل ذخیره توسط متغیر integer تمام اعداد از32768- تا 32768 byte اعداد صحیح از0 تا 255 real 1E-38 تا 1E+38 اعداد اعشاری از boolean تنها مقادیر درست و نادرست را نگه میدارد. char هر کاراکتر درمجموعه کد اسکی
ساختارهای داده
انواع دادهای ساده پاسکال عبارتند از real,integer,character,Boolean,enumeration که enumeration یک نوع داده جدید میباشد که توسط پاسکال معرفی شد.
زیرحوزههای هر نوع داده ترتیبی وصفی ( هر نوع ساده به غیر از 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 (i<11) 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 تا 9
3 - ارقام مبنای 16 : ارقام 0 تا 9 و حروف A تا F و یا a تا f
4 - کاراکترهای تکی : + ، - ، / ، * ، = و . . .
5 - جفت کاراکترها : مانند <> ، => ، =< ، = و . . .
6 - شناسه ( Identifier ) : از شناسهها برای نام گذاری استفاده میشود . شناسه ترکیبی از حروف ، ارقام و کاراکتر زیر خط (-) است که میتواند دارای طول دلخواهی باشد اما پاسکال فقط 63 کاراکتر اول را در نظر خواهد گرفت . شناسه حتما باید با یک حرف یا علام زیر خط (-) آغاز شود . شناسههای به دو دسته تقسیم میشوند :
-
-
الف ) شناسههای استاندارد : این شناسهها از قبل در پاسکال تعریف شده اند برای نمونه میتوان به Write و Read اشاره نمود .
- ب ) شناسههای غیر استاندارد : این شناسهها به وسیله کاربر به طور مجزا تعریف میشوند به همین دلیل به آن ها User defined گفته میشود .
-
الف ) شناسههای استاندارد : این شناسهها از قبل در پاسکال تعریف شده اند برای نمونه میتوان به Write و Read اشاره نمود .
لازم به ذکر است که پاسکال در تعریف شناسهها تفاوتی میان حروف
مطالب مشابه :
مقایسه سیستمهای عامل (لینوکس ، مک ، سولاریس)
مکینتاش(سیستم عامل شرکت لینوکس است و میشود گفت که تمام مزایا و معایب آن را دارد به
مزایا و معایب نوکیا 5800 Xpress music (یه گوشی مناسب برای همه).
مزایا و معایب نوکیا 5800 Xpress music سیستم عامل سیستم عامل مکینتاش
نمونه سوالات امتحانی درس شبکه (قسمت اول)(نمونه سوالات شبکه)
5-مزایا و معایب 7- دو سیستم عامل سرور ویندوز 7 ، ویندوز ایکس پی ، اپل مکینتاش
فایروال چیست و چه کار می کند؟(آموزش اینترنت)
با اینکه هر یک از مدل های فوق دارای مزایا و معایب سیستم عامل مکینتاش. سیستم عامل
آموزش زبان برنامه نویسی توربو پاسکال
هایی از سیستم عامل اصلی مکینتاش، از API سیستم عامل Macintosh مزایا و معایب
انواع توپولوژی شبکه-مقالات آموزشی کامپیوتر-آموزش شبکه
توضیحاتی در مورد سیستم عامل مکینتاش. افزار ، آموزش سیستم عامل و تشکر از حسن
زبان برنامهنویسی پاسکال
هایی از سیستم عامل اصلی مکینتاش، از ها و سیستم عامل ها مزایا و معایب
برچسب :
مزایا و معایب سیستم عامل مکینتاش