رایانه یا کامپیوتر (به انگلیسی: computer) دستگاهی است که میتواند برنامهریزی شود تا دستورات ریاضیاتی و منطقی را بهصورت خودکار انجام دهد. رایانهها میتوانند از مجموعهای عظیمی از دستورات به نام برنامه پیروی کنند، این امر به آنها اجازه میدهد تا قابلیت انجام طیف وسیعی از وظایف را داشته باشند.
یک رایانه مدرن حداقل از یک واحد پردازش، عموماً واحد پردازش مرکزی و نوعی حافظه تشکیل شدهاست. واحد پردازش وظیفه انجام عملیاتهای محاسباتی و منطقی را بر عهده دارد. دستگاههای جانبی شامل ورودی (مانند صفحهکلید)، خروجی (مانند نمایشگر) و ورودی/خروجی (مانند صفحه لمسی) میتوانند برای دریافت، نمایش و ارسال اطلاعات در رایانه مورد استفاده قرار گیرند.
در زبان انگلیسی «کامپیوتر» به دستگاه خودکاری گفته میشود که محاسبات ریاضی را انجام میدهد، بر پایهٔ «واژهنامه ریشهیابی Barnhart Concise» واژهٔ کامپیوتر در سال ۱۶۴۶ به زبان انگلیسی وارد گردید که به معنی «شخصی که محاسبه میکند» بودهاست و سپس از سال ۱۸۹۷ به ماشینهای محاسبه مکانیکی گفته میشد. در هنگام جنگ جهانی دوم «کامپیوتر» به زنان نظامی انگلیسی و آمریکایی که کارشان محاسبه مسیرهای شلیک توپهای بزرگ جنگی به وسیله ابزار مشابهی بود، اشاره میکرد.
البته در اوایل دهه ۵۰ میلادی هنوز اصطلاح ماشین رایانش (computing machine) برای معرفی این ماشینها بهکار میرفت، پس از آن عبارت کوتاهتر کامپیوتر (computer) بهجای آن بهکار گرفته شد. ورود این ماشین به ایران در اوایل دهه ۱۳۴۰ بود، واژه رایانه در دو دهه اخیر در فارسی رایج شده است.
برابر این واژه در زبانهای دیگر حتماً همان واژه زبان انگلیسی نیست. در زبان فرانسوی واژه "ordinateur"، که به معنی «سازمانده» یا «ماشین مرتبساز» است، بهکار میرود. در اسپانیایی"ordenador" با معنایی مشابه استفاده میشود، همچنین در دیگر کشورهای اسپانیایی زبان computadora بصورت انگلیسیمآبانهای ادا میشود. در پرتغالی واژه computador بهکار میرود که از واژه computar گرفته شده و به معنای «محاسبه کردن» میباشد. در ایتالیایی واژه "calcolatore" که معنای ماشین حساب است بکار میرود که بیشتر روی ویژگی حسابگری منطقی آن تأکید دارد. به سوئدی رایانه «dator» خوانده میشود که از «data» (دادهها) برگرفته شدهاست. به فنلاندی «tietokone» خوانده میشود که به معنی «ماشین اطلاعات» میباشد. اما در زبان ایسلندی توصیف شاعرانهتری بکار میرود، «tölva» که واژهای مرکب است و به معنای «زن پیشگوی شمارشگر» میباشد. در چینی رایانه «dian nao» یا «مغز برقی» خوانده میشود. در انگلیسی واژهها و تعابیر گوناگونی استفاده میشود، بهعنوان مثال دستگاه دادهپرداز («data processing machine»).
رایانهها چگونه کار میکنند؟از زمان رایانههای اولیه که در سال ۱۹۴۱ ساخته شده بودند تا کنون فناوریهای دیجیتالی رشد نمودهاست، معماری فون نوِیمن یک رایانه را به چهار بخش اصلی توصیف میکند: واحد محاسبه و منطق (Arithmetic and Logic Unit یا ALU)، واحد کنترل یا حافظه، و ابزارهای ورودی و خروجی (که جمعاً I/O نامیده میشود). این بخشها توسط اتصالات داخلی سیمی به نام گذرگاه (bus) با یکدیگر در پیوند هستند.
حافظه تصویری از یک هارددیسکدر این سامانه، حافظه بصورت متوالی شماره گذاری شده در خانهها است، هرکدام محتوی بخش کوچکی از دادهها میباشند. دادهها ممکن استدستورالعملهایی باشند که به رایانه میگویند که چه کاری را انجام دهد باشد. خانه ممکن است حاوی اطلاعات مورد نیاز یک دستورالعمل باشد. اندازه هر خانه، وتعداد خانهها، در رایانهٔ مختلف متفاوت است، همچنین فناوریهای بکاررفته برای اجرای حافظه نیز از رایانهای به رایانه دیگر در تغییر است (از بازپخشکنندههای الکترومکانیکی تا تیوپها و فنرهای پر شده از جیوه یا ماتریسهای ثابت مغناطیسی و در آخر ترانزیستورهای واقعی و مدار مجتمعها با میلیونها فیوز نیمه هادی یا MOSFETهایی با عملکردی شبیه ظرفیت خازنی روی یک تراشه تنها).
پردازش تصویری از یک CPU یا واحد پردازشگر مرکزیواحد محاسبه و منطق یا ALU دستگاهی است که عملیات پایه مانند چهار عمل اصلی حساب (جمع و تفریق و ضرب و تقسیم)، عملیات منطقی (و، یا،نقیض)، عملیات قیاسی (برای مثال مقایسه دو بایت برای شرط برابری) و دستورها انتصابی برای مقدار دادن به یک متغیر را انجام میدهد. این واحد جائیست که «کار واقعی» در آن صورت میپذیرد.
البته CPUها به دو دسته کلی RISC و CISC تقسیمبندی میشوند. نوع اول پردازشگرهای مبتنی بر اعمال ساده هستند و نوع دوم پردازشگرهای مبتنی بر اعمال پیچیده میباشند. پردازشگرهای مبتنی بر اعمال پیچیده در واحد محاسبه و منطق خود دارای اعمال و دستورهایی بسیار فراتر از چهار عمل اصلی یا منطقی میباشند. تنوع دستورها این دسته از پردازندهها تا حدی است که توضیحات آنها خود میتواند یک کتاب با قطر متوسط ایجاد کند. پردازندههای مبتنی بر اعمال ساده اعمال بسیار کمی را پوشش میدهند و در حقیقت برای برنامهنویسی برای این پردازندهها بار نسبتاً سنگینی بر دوش برنامهنویس است. این پردازندهها تنها حاوی ۴ عمل اصلی و اعمال منطقی ریاضی و مقایسهای به علاوه چند دستور بیاهمیت دیگر میباشند. هرچند ذکر این نکته ضروری است که دستورها پیچیده نیز از ترکیب تعدادی دستور ساده تشکیل شدهاند و برای پیادهسازی این دستورها در معماریهای مختلف از پیادهسازی سختافزاری (معماری CISC) و پیادهسازی نرمافزاری (معماری RISC) استفاده میشود.
(قابل ذکر است پردازندههای اینتل از نوع پردازنده مبتنی بر اعمال پیچیده میباشند)
واحد کنترل همچنین این مطلب را که کدامین بایت از حافظه حاوی دستورالعمل فعلی اجرا شوندهاست را تعقیب میکند، سپس به واحد محاسبه و منطقاعلام میکند که کدام عمل اجرا و از حافظه دریافت شود و نتایج به بخش اختصاص داده شده از حافظه ارسال گردد. بعد از یک بار عمل، واحد کنترل به دستورالعمل بعدی ارجاع میکند (که معمولاً در خانه حافظه بعدی قرار دارد، مگر اینکه دستورالعمل جهش دستورالعمل بعدی باشد که به رایانه اعلام میکند دستورالعمل بعدی در خانه دیگر قرار گرفتهاست).
ورودی/خروجی تصویری از یک رایانه، صفحه نمایشگر(Monitor) نقش خروجی و صفحه کلید(keyboard) نقش ورودی را دارد.بخش ورودی/خروجی (I/O) این امکان را به رایانه میدهد تا اطلاعات را از جهان بیرون تهیه و نتایج آنها را به همانجا برگرداند. محدوده فوقالعاده وسیعی از دستگاههای ورودی/خروجی وجود دارد، از خانواده آشنای صفحهکلیدها، نمایشگرها، نَرمدیسک گرفته تا دستگاههای کمی غریب مانند رایابینها (webcams). (از سایر ورودی/خروجیها میتوان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوحهای فشرده(CD, DVD) را نام برد).
چیزی که تمامی دستگاههای عمومی در آن اشتراک دارند این است که آنها رمزکننده اطلاعات از نوعی به نوع دیگر که بتواند مورد استفاده سیستمهای رایانه دیجیتالی قرار گیرد، هستند. از سوی دیگر، دستگاههای خروجی آن اطلاعات به رمز شده را رمزگشایی میکنند تا کاربران آنها را دریافت نمایند. از این رو یک سیستم رایانه دیجیتالی یک نمونه از یک سامانه دادهپردازی میباشد.
دستورالعملهاهر رایانه تنها دارای یک مجموعه کمتعداد از دستورالعملهای ساده و تعریف شده میباشد. از انواع پرکاربردشان میتوان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!» اشاره کرد.
دستورالعملها در داخل رایانه بصورت اعداد مشخص شدهاند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ میتواند باشد. مجموعه معین دستورالعملهای تعریف شده که توسط یک رایانه ویژه پشتیبانی میشود را زبان ماشین مینامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمینویسند بلکه بیشتر به نوعی از انواع سطح بالای زبانهای برنامهنویسی، برنامهنویسیمیکنند تا سپس توسط برنامه ویژهای (تفسیرگرها (interpreters) یا همگردانها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبانهای برنامهنویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده میشود، استفاده میکنند؛ همچنین زبانهای سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعملهای ویژه ماشین استفاده میکنند.
معماریهادر رایانههای معاصر واحد محاسبه و منطق را به همراه واحد کنترل در یک مدار مجتمع که واحد پردازشی مرکزی (CPU) نامیده میشود، جمع نمودهاند. عموماً، حافظه رایانه روی یک مدار مجتمع کوچک نزدیک CPU قرار گرفته. اکثریت قاطع بخشهای رایانه تشکیل شدهاند از سامانههای فرعی (به عنوان نمونه، منبع تغذیه رایانه) یا دستگاههای ورودی/خروجی.
برخی رایانههای بزرگتر چندین CPU و واحد کنترل دارند که بصورت همزمان با یکدیگر درحال کارند. اینگونه رایانهها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار میروند.
کارایی رایانهها بنا به تئوری کاملاً درست است. رایانه دادهها و دستورالعملها را از حافظهاش واکشی (fetch) میکند. دستورالعملها اجرا میشوند، نتایج ذخیره میشوند، دستورالعمل بعدیواکشی میشود. این رویه تا زمانی که رایانه خاموش شود ادامه پیدا میکند. واحد پردازنده مرکزی در رایانههای شخصی امروزی مانند پردازندههای شرکت ای-ام-دی و شرکت اینتل از معماری موسوم به خط لوله استفاده میشود و در زمانی که پردازنده در حال ذخیره نتیجه یک دستور است مرحله اجرای دستور قبلی و مرحله واکشی دستور قبل از آن را آغاز میکند. همچنین این رایانهها از سطوح مختلف حافظه نهانگاهی استفاده میکنند که در زمان دسترسی به حافظه اصلی صرفهجویی کنند.
برنامههابرنامه رایانهای فهرستهای بزرگی از دستورالعملها (احتمالاً به همراه جدولهائی از داده) برای اجرا روی رایانه هستند. خیلی از رایانهها حاوی میلیونها دستورالعمل هستند، و بسیاری از این دستورها به تکرار اجرا میشوند. یک رایانه شخصی نوین نوعی (درسال ۲۰۰۳) میتواند در ثانیه میان ۲ تا ۳ میلیارد دستورالعمل را پیاده نماید. رایانهها این مقدار محاسبه را صرف انجام دستورالعملهای پیچیده نمیکنند. بیشتر میلیونها دستورالعمل ساده را که توسط اشخاص باهوشی «برنامه نویسان» در کنار یکدیگر چیده شدهاند را اجرا میکنند. برنامهنویسان خوب مجموعههایی از دستورالعملها را توسعه میدهند تا یکسری از وظایف عمومی را انجام دهند (برای نمونه، رسم یک نقطه روی صفحه) و سپس آن مجموعه دستورالعملها را برای دیگر برنامهنویسان در دسترس قرار میدهند. (اگر مایلید «یک برنامهنویس خوب» باشید به این مطلب مراجعه نمایید)
رایانههای امروزه، قادرند چندین برنامه را در آن واحد اجرا نمایند. از این قابلیت به عنوان چندکارگی (multitasking) نام برده میشود. در واقع، CPU یک رشته دستورالعملها را از یک برنامه اجرا میکند، سپس پس از یک مقطع ویژه زمانی دستورالعملهایی از یک برنامه دیگر را اجرا میکند. این فاصله زمانی اکثراً بهعنوان یک برش زمانی (time slice) نام برده میشود. این ویژگی که CPU زمان اجرا را بین برنامهها تقسیم میکند، این توهم را بوجود میآورد که رایانه همزمان مشغول اجرای چند برنامهاست. این شبیه به چگونگی نمایش فریمهای یک فیلم است، که فریمها با سرعت بالا در حال حرکت هستند و به نظر میرسد که صفحه ثابتی تصاویر را نمایش میدهد. سیستمعامل همان برنامهای است که این اشتراک زمانی را بین برنامههای دیگر تعیین میکند.
سیستمعاملکامپیوتر همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستمعامل یا OS که مخفف واژههای Operating System است. سیستم یا سامانه عامل بر اساس پیشفرضها تصمیم میگیرد که کدام برنامه برای انجام چه وظیفهای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و…) استفاده شود. همچنین سیستمعامل یک لایه انتزاعی بین سختافزار و برنامههای دیگر که میخواهند از سختافزار استفاده کنند، میباشد، که این امکان را به برنامه نویسان میدهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سختافزار را بدانند بتوانند برای آن قطعه برنامهنویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته میشد با تمام این وجود کامپیوترها نمیتوانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته میشود مانند مسائلی که در مسیر حلشان در حلقه بینهایت میافتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مسئله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود. از جمله سیستم عاملهای امروزی میتوان به مایکروسافت ویندوز، مکینتاش اپل و لینوکس و بی اس دی اشاره کرد.
پاسکال یکی از زبانهای مشهور برنامهنویسی سطح بالای متداول است. پاسکال به عنوان زبان سادهشده ALgOL طراحی شد و کاربردهای آموزشی داشت. این زبان را نیکلاوس ویرت، پروفسور دانشگاه پلیتکنیک زوریخ سوییس در سالهای ۱۹۶۸ و ۱۹۶۹ میلادی طراحی کرد و در سال ۱۹۷۰ به عنوان یک زبان کارآمد و کوچک به منظور پیشبرد و توسعهٔ مهارتهای برنامهنویسی با بهرهگیری از برنامهنویسی ساختیافته و ساختمان دادهها، منتشر گردید. نام زبان پاسکال از نام بلز پاسکال، ریاضیدان فرانسوی، بر گرفته شدهاست.
پاسکال یک زبان برنامهنویسی امری و ساختیافتهٔ تأثیرگذار است که از ویژگیهایش میتوان به سادگی فراگیری آن اشاره کرد.
استاندارد این زبان برنامهنویسی در سال ۱۹۸۳ نوشته شده و دو سازمان IEEE و ANSI آن را تأیید کردهاند. هماکنون این زبان بیشتر بهعنوان زبان برنامهنویسی آموزشی برای تازهکاران در دانشگاهها آموزش داده میشود. سادگی و تجرید خوب این زبان امکان برنامهنویسی آسان بدون نیاز به آگاهی از ساختارهای پیچیدهٔ زیرین سیستمعامل را میدهد.
یک ویرایش برگرفته از پاسکال که با عنوان Object Pascal شناخته میشود، برای برنامهنویسی شیءگرا طراحی شد.
فهرست مطالب:
فصل اول: آشنایی با کامپیوتر
کامپیوترهای قدیمی
کامپیوترهای امروزی
اجزاء تشکیل دهنده کامپیوتر
سخت افزار
نرم افزار
نرم افزار سیستم عامل
و...
فصل دوم: ساختار برنامه در زبان پاسکال
اجزای تشکیلدهنده یک برنامه
کلمات ذخیره شده
لیست کلمات ذخیره شده در پاسکال
شناسه ها
ساختار برنامه در زبان پاسکال
و...
فصل سوم:
انواع عملگرها و دادهها در زبان پاسکال
عملگر
انواع عملگر
تقدم عملگرها
انواع داده ها
داده های ساده
صحیح
اعشاری
داده های ساخت یافته
و...
فصل چهارم: ورودی و خروجی
خروجی با دستور Write
خروجی با دستور Writeln
خروجی فرمتبندی شده
طریقه تعیین فرمت چاپ برای اعداد صحیح
طول میدان اعداد اعشاری
طول میدان کاراکترها و رشتهها
و...
فصل پنجم: ساختارهای شرطی و کنترل
دستورات شرطی
دستور if
If – then
دستور if همراه else
If های متداخل
دستور Case
ساختارهای کنترلی
شکل کلی حلقه
حلقه for
For های متداخل
دیاگرام دستور for
حلقه While
و...
فصل ششم: آرایه ها
آرایه و انواع آن
آرایه یک بعدی
مقدار دهی آرایه ها
آرایه دو بعدی
آرایه های چند بعدی
نکاتی چند در مورد آرایه ها
و...
فصل هفتم: توابع و روال های کتابخانه ای
ساختار تابع
توابعی برای اعداد صحیح و اعشاری
تابع Abs
تابع Sin
تابع Cos
و...
فصل هشتم: متغیر های کاراکتری و رشته ها
متغیرهایی از نوع کاراکتر
متغیرهای رشتهای
توابع و روالهای کتابخانهای برای متغیرهای رشتهای
تابع Concat
تابع Copy
روال Delete
روال Insert
و...
فصل نهم: برنامه های فرعی
روال ها
شکل کلی روال ها
انواع پارامترها
پارامترهای مقداری
پارامترهای متغیری
پارامترهای واقعی و صوری
متغیرهای محلی و سراسری
و...
فصل دهم: مجموعه ها و داده های شمارشی
مقدمه
مجموعه ها
تعریف مجموعه
عملیات روی مجموعه ها
عملگرها روی مجموعه ها
داده های شمارشی
عملیات روی داده های شماشی
و...
فصل یازدهم: رکوردها
مقدمه
تعریف رکورد
دسترسی به فیلدهای رکورد
به دست آوردن حجم یک رکورد
رکوردهای تو در تو
و...
فصل دوازدهم: فایل ها
مقدمه
فایل های متنی
طریقه ایجاد یک فایل متنی
طریقه خواندن اطلاعات از یک فایل متنی
باز کردن فایل برای خواندن
و...
فصل سیزدهم: تحلیل الگوریتم ها
مقدمه
تعریف مرتبه یا پیچیدگی الگوریتم
بدست آوردن مرتبه الگوریتمها
و...
به همراه بیش از 200 مثال و تمرین حل شده در تمام فصل ها.
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای برنامهنویسیزبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
فهرست مطالب:
فصل اول: مقدمات زبان ++C
تاریخچه مختصر
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
عملگرهای افزایش و کاهش
عملگر sizeof
عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات
توابع کتابخانه
برنامه در ++C
فصل دوم: ساختارهای تصمیم گیری و تکرار
عملگر های رابطه ای عملگر شرطی دستورالعمل شرطی عملگر کاما عملگر های منطقی دستورالعمل For فصل سوم: سایر ساختارهای تکرار دستورالعمل while دستورالعمل do while دستورالعمل break دستورالعمل continue دستورالعمل switch تابع cin.get عملگر static_cast جدول اولویت عملگرها فصل چهارم: اعداد تصادفی تولید اعداد تصادفی تعریف نوع داده ( typedef ) داده های از نوع شمارشی فرمت های مختلفه مقادیر خروجی فصل پنجم: آرایه ها آرایه یک بعدی آرایه دو بعدی فصل ششم: توابع تعریف تابع تابع بازگشتی توابع درون خطی انتقال پارامترها از طریق ارجاع کلاس های حافظه ( storage classes ) سربارگذاری توابع فصل هفتم: ساختارها و اشاره گرها ساختارها Union ها اشاره گرها ( Pointer) تعریف آرایه آرایه های دو بعدی و اشاره گرها تخصیص حافظه بصورت پویا ( عملگر new ) رشته ها و توابع مربوطه فصل هشتم: برنامه نویسی شی گرا تعریف شی گرایی چند ریختی خاصیت ارث بری پشته ایجاد شی ارث بری سازنده ها و نابود کننده ها توابع دوست کلاس های دوست توابع سازنده پارامتر دار توابع سازنده یک پارامتری عضوهای static کلاسهای تو در تو کلاس های محلی استفاده از object ها بعنوان پارامترهای تابع برگشت اشیاء انتساب اشیاء آرایه اشیاء اشاره گر به اشیاء اشاره گر this توابع مجازی و پلی مرفیسم
طراحی وب به مهارت ساخت و راهاندازی صفحات وب گفته میشود.
تیم برنرز لی، مخترع وب، با برپایی یک سایت وب در اوت ۱۹۹۱، نام خود را به عنوان نخستین سازندهٔ وب در تاریخ نگاشت. او در نخستین وب سایتش، از اَبَرمتن و پیوندی برای ایمیل (پست الکترونیک) استفاده کرده بود.
در آغاز، وب سایتها با کُدهای ساده HTML نوشته میشدند، گونهای از زبان نشانهگذاری که ساختار سادهای به وب گاهها میداد، شامل سرتیتر و پاراگراف، و توانایی پیوند دادن به آدرسهای دیگر از طریق ابرپیوند. در مقایسه با روشهای دیگر، این راه تازه و متفاوتی بود که کاربران به سادگی میتوانستند با یک مرورگر، صفحههای پیوند خورده را باز کنند.
با پیشرفت وب و هنر طراحی آن، زبان کُد نویسی اش، اَبَرمتن یا اچ تی ام ال، پیچیدهتر و پرانعطاف تر شد. ابزاری مانند جدولها که بیشتر برای نمایش نمودارهای دادهای بودند، بزودی مورد استفاده نادرست، برای چیدمانهای پنهان در صفحههای وب قرار گرفتند. با پیدایش الگوهای آبشاری وب یا «CSS»، روش نادرست طراحی با جدولهای پنهان در صفحه از گردونه خارج، و بجای آن استفاده مناسب از زبان کمکی «CSS» جایگزین شد.
فناوریهای یکپارچه سازی پایگاه داده (Database)، مانند زبانهای کُدنویسی سمت سرور (Server-Side Scripting) مانند CGI، PHP، ASP. NET، ASP، JSP و ColdFusion، و استانداردهای طراحی مدرن با الگوها (CSS)، ساختار وب سایتها را باز هم تغییر داده و آنرا پیشرفته تر کردهاند. سایت واکنش گرا یا سایت ریسپانسیو (responsive) سایتی است که با ابعاد و رزولوشن دستگاههای مختلف سازگاری دارد و کاربران بدون توجه به اینکه صفحه نمایش دستگاهشان کوچک باشد.
همچنین با آمدن نگارههای جاندار و فناوریهای پویانمایی به صفحهها، مانند فلَش (Flash)، چهره وب بیشتر از پیش تغییر کرد و توانمندیهای تازه به سازندگان رسانه و طراحهای وب داده شد.
وبسایت یا تارنماوبسایت یا تارنما یا وبگاه مجموعهای از فایلهای مختلف اعم از تصاویر، متون یا فایلهای برنامهنویسی شده است که به منظوری خاص به شکلی با هم مرتبط شدهاند. این فایلها روی یک کامپیوتر «میزبان» یا «سرور» قرار میگیرند و با یک نام دامنه مشترک فراخوانی میشوند.
انواع سایتسایتها بر اساس کاربرد و نوع برنامهنویسی به چند دسته تقسیم میشوند که عبارت است از:
سایتهای ثابت (Static Website)
این سایتها یکبار طراحی میشوند و اطلاعات مورد نیاز در داخل آنها قرار میگیرد و پس از آن برای تغییر در آنها نیاز به یک طراح حرفهای یا نیمه حرفهای سایت است. زبان برنامهنویسی اینگونه از سایتها غالباً HTML و Java Script هستند که در نوع توسعه یافته تر از CSS نیز بهره گرفته میشود. این نوع دسته از وب سایتها به صورت HTML ساده طراحی میشوند.
از آنجا که حجم کمتری از کد در طراحی سایتهای ثابت استفاده میشود سرعت بارگذاری (Loading) بالایی دارند. علاوه براین کاهش حجم کدها که باعث خوانایی بشتر سایت توسط رباتهای جستجوگر میشود از یک سو و کاهش زمان بارگذاری از سوی دیگر سبب بهتر شدن وضعیت آنها از لحاظ امتیاز دهی موتورهای جستجو یا همان «رنکینگ» میشود. سایتهای ثابت قیمت طراحی پایینتری را نیز عمدتاً نسبت به سایر سایتها دارند.
عدم امکان ایجاد تغییر در این نوع از سایتها توسط افراد عادی علاوه بر افزایش امنیت سبب بهره مندی از گرافیک و ظاهری زیبا میشود چرا که همه چیز ثابت است از جمله متون و اندازه تصاویر و همچنین همه عناصر مکان مشخص و ثابتی را دارند در نتیجه میتوان برای محل قرار گرفتن هر یک از اجزاء بهترین تصمیم را گرفت.
اما از طرفی نیز عدم امکان ایجاد تغییرات توسط افراد عادی سبب میشود تا امکان بروز رسانی سایت توسط صاحبان و مدیران سایت صلب شود.
نکته: سایتهای ثابت (Static) برای افراد، شرکتها و سازمانهایی مناسب است که حداکثر یک یا دو بار در سال نیازمند به تغییر در محتوای سایت هستند.
سایتهای پویا (Dynamic Website)
محتوای سایتهای داینامیک بعد از طراحی توسط افراد عادی که دسترسی به سیستم مدیریت محتوای سایت را داشته باشند قابل تغییر است. زبان برنامهنویسی وبسایتهای پویا میتواند براساس نیاز متفاوت باشد اما عمدتاً از زبانهای ASP، ASP.Net و Php استفاده میشود و از زبانهای کمکی CSS و Silver light یا Ajax برای ایجاد قابلیتهای ویژه نیز بهره گرفته میشود.
در اینگونه از سایتها ابتدا اسکلت سایت توسط طراح ایجاد میشود و سپس محتوا توسط مدیران سایتها تغییر میکند مانند فرم قراردادی که یکبار توسط فردی ایجاد میشود و توسط افراد دیگری بارها تکمیل میشود، از این رو طراح نسبت به محل قرار گرفتن و اندازه دقیق متون و تصاویر و سایر عناصری که بعداً توسط مدیران سایتها تغییر میکند اطلاع ندارد بنابر این چارهای ندارد جز اینکه همه حالات را در نظر بگیرد و اینکار سبب میشود تاحدودی از گرافیک و جلوه سایت کاسته شود.
یکی از مزیتهای سایتهای داینامیک این است که هیچ محدودیتی برای ایجاد، تغییر یا حذف مطالب، تصاویر و صفحات و غیره وجود ندارد.
با توجه به اینکه در سایتهای پویا از زبانهای برنامهنویسی پیشرفته استفاده میشود امکانات زیادی در آنها قابل ایجاد است مانند ایجاد صفحات هوشمند، فرمها و جستجوهای پیچیده.
استفاده زیاد از کدها سبب کند شدن بارگذاری سایت و امتیاز آن در موتورهای جستجو میشود.
نکته: سایتهای پویا برای افراد، شرکتها و سازمانهایی مناسب است که بیش از دوبار در سال نیاز به تغییر درمحتوای سایت را دارند.
پرتالها (Portal)
پرتالها سایتهای پویای جامعی هستند که چند هدف خاص را در یک سایت دنبال میکنند به عبارت دیگر مجموع چند سایت پویا که برای رسیدن به هدفی خاص در کنار هم قرار گرفتهاند را میتوان پرتال نامید. به عنوان مثال پرتال خبری میتواند از چند سایت داینامیک تشکیل شده باشد که هر یک امکانات خاصی چون عضو گیری، انتشار اخبار، انتشار تصاویر، نظر سنجی و … را در اختیار مدیران آن قرار دهد.
تمام ویژگیهای یک سایت پویا میتواند در یک پرتال نیز صدق کند.
نکته: معمولاً پرتالها توسط سازمانها، گروهها و شرکتها خریداری میشوند. به دلیل نیاز به بروز رسانی بخشهای مختلف اداره آنها توسط یک فرد بسیار مشکل است مگر آنکه به چشم یک کار حداقل پاره وقت به آن نگاه شود.
سایتهای متحرک استاتیک و نیمه داینامیک (Static and Dynamic Flash Website)
سایتهای فلش یا متحرک دو نوع استاتیک و نیمه داینامیک هستند و توسط نرمافزارهای خاصی ایجاد میشوند در برخی موارد از XML یا Action Script برای ایجاد قابلیتهای تغییر یا هوشمندی در این سایتها بهره گرفته میشود.
به طور کلی سایتهای فلش ثابت (استاتیک) غیرقابل تغییر میباشند و مانند سایتهای ثابت یکبار توسط طراح ایجاد میشوند و برای تغییر آن نیاز است تا افراد به صورت حرفهای یا نیمه حرفهای از دانش طراحی فلش برخوردار باشند.
اما سایتهای فلش نیمه داینامیک یا نیمه پویا مانند سایتهای پویا عمل میکند و قابل تغییر هستند اما تغییر در آنها به سادگی سایتهای پویا نیست و وسعت ایجاد تغییرات نیز بسیار محدودتر است.
از مزیتهای وب سایتهای فلش جذابیت آنهاست. گرافیک زیبا و انیمیشنهای جذاب. اما از معایب عمده آنها میتوان به عدم خوانده شدن اطلاعات موجود در آنها توسط رباتهای جستجوگر و عمدتاً سرعت بسیار پایین بارگذاری اشاره کرد.
نکته: سایتهای فلش برای افراد و گروهها یا شرکتها و سازمانهایی مناسب است که نیاز به تبلیغات ندارند و عموم کاربران با آنها آشنا هستند مانند خوانندگان، سیاست مداران، بازیگران و گروههای موسیقی، هتلهای معروف، مکانهای توریستی.
سایتهای مجهز به سیستم مدیریت محتوا (Content Management Systems)
سایتهای مجهز به سیستم مدیریت محتوا که در اصطلاح به CMS که مخفف Content Management System است مشهورند، وبسایتهایی از نوع پرتالها یا سایتهای پویا هستند که برای مصارف خاص توسط طراحان حرفهای یا شرکتهای طراحی حرفهای ایجاد میشوند.
تمام مزایا و معایب مربوط به سایتهای پویا در مورد سایتهای مجهز به سیستم مدیریت محتوا صدق میکند.
البته در نظر داشته باشید که سایتهای پویا و پرتالها نیز مجهز به سیستم مدیریت محتوا هستند اما آنچه که در CMSها متفاوت است طراحی آنها و سیستمهای مدیریت محتوای آنها برای مصارف خاص است.
از مزایای سیستمهای مدیریت محتوا نسبت به سایر سایتهای داینامیک میتوان به آماده بودن و جامع بودن آنها اشاره کرد. از این رو اغلب اینگونه از سایتها در کمتر از ۳ روز کاری قابل نصب و استفاده هستند.
طراحی سایتهای CMS مانند یک خط تولید محصول است و از آنجا که طراح باید نمونههای محدودی را به صورت انبوه تولید کند سعی در رعایت تمام اصول امنیتی، گرافیکی، موارد مربوط به رنکینگ و امتیاز موتورهای جستجو و سایر موارد مؤثر میکند.
با توجه به مزیتهای آنها به تمامی افراد، سازمانها و شرکتهایی که شرایط داشتن سایتهای داینامیک را دارند توصیه میشود تا ابتدا به دنبال سیستمهای مدیریت محتوای مخصوص به کار خود بگردند و در صورتی که پیدا نشد به طراحی سایتهای پویا روی بیاورند.
فهرست مطالب:
فصل اول: مقدمه
اینترنت و وب
Client / Server
مرورگر وب
Static Web Pages
Client-Side Dynamic Page
جاوا اسکریپت
VB Script
ActiveX Controls
و...
فصل دوم: HTML
HTML
Tag
مثال Tag
Tag Attributes
Character Entities
Formatting
مثال ها
روشهای آدرس دهی
Image
HTML Links
Lists
فارسی نویسی در Html
جدول ها
موزیک، ویدیو و انیمیشن ها
فرم ها
Frame
و...
فصل سوم: CSS
CSS
Style Sheets
Inline Styles
Internal Style Sheet
Selector یا انتخاب کننده
External style sheet
و...
فصل چهارم: جاوا اسکریپت
جاوا اسکریپت چیست؟
تفاوت جاوا اسکریپت با جاوا
قابلیتهای جاوا اسکریپت
تگ اسکریپت
زبان
Type
Document
src
انواع خطاها
نوشتن اسکریپت در قسمت head
نوشتن اسکریپت در قسمت بدنه
فایل خارجی جاوا اسکریپت
متغیر چیست؟
انتخاب نام متغیر
انواع متغیرها
دستور if...else if...else
switch
و...
پاسکال یکی از زبانهای مشهور برنامهنویسی سطح بالای متداول است. پاسکال به عنوان زبان سادهشده ALgOL طراحی شد و کاربردهای آموزشی داشت. این زبان را نیکلاوس ویرت، پروفسور دانشگاه پلیتکنیک زوریخ سوییس در سالهای ۱۹۶۸ و ۱۹۶۹ میلادی طراحی کرد و در سال ۱۹۷۰ به عنوان یک زبان کارآمد و کوچک به منظور پیشبرد و توسعهٔ مهارتهای برنامهنویسی با بهرهگیری از برنامهنویسی ساختیافته و ساختمان دادهها، منتشر گردید. نام زبان پاسکال از نام بلز پاسکال، ریاضیدان فرانسوی، بر گرفته شدهاست.
پاسکال یک زبان برنامهنویسی امری و ساختیافتهٔ تأثیرگذار است که از ویژگیهایش میتوان به سادگی فراگیری آن اشاره کرد.
استاندارد این زبان برنامهنویسی در سال ۱۹۸۳ نوشته شده و دو سازمان IEEE و ANSI آن را تأیید کردهاند. هماکنون این زبان بیشتر بهعنوان زبان برنامهنویسی آموزشی برای تازهکاران در دانشگاهها آموزش داده میشود. سادگی و تجرید خوب این زبان امکان برنامهنویسی آسان بدون نیاز به آگاهی از ساختارهای پیچیدهٔ زیرین سیستمعامل را میدهد.
یک ویرایش برگرفته از پاسکال که با عنوان Object Pascal شناخته میشود، برای برنامهنویسی شیءگرا طراحی شد.
تاریخچهنیکلاوس ورث پیش از پاسکال و برای فراهمآوری مقدمات آن، زبان 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 برگردید و سپس کامپایلر را به صورت خط فرمانی آغاز کنید، سپس شماره خطاهای خط را یادداشت کنید، دوباره ویرایشگر را باز کنید و به خطهای حاوی خطا بروید و دوباره همه چیز را از اول انجام دهید.
به علاوه بورلند توربو پاسکال خود را فقط ۴۹دلار میفروخت، در حالیکه مایکروسافت کامپایلر پاسکال خود را چند صد دلار به فروش میرساند، تداوم موفقیت چند ساله توربو پاسکال سبب شد که درآمدهای مایکروسافت از فروش کامپایلر پاسکال بسیار کاهش یابد.
بعد از ۹ نسخه از انتشار توربو پاسکال و بورلند پاسکال، که به تدریج زبانهای بسیار گستردهای شده بودند، بورلند در سال ۱۹۹۵ دلفی را معرفی نمود که پاسکال را به یک محیط برنامهنویسی دیداری(VISUAL) تبدیل میکرد. زبان شیءگرایی پاسکال که ما در دلفی از آن سود میجوییم در سال ۱۹۹۵ همراه با محیط برنامهنویسی دیداری (VISUAL) دلفی اختراع نشد. این زبان توسعهیافتهٔ زبان پاسکال شیءگرا بود که پیشتر در محصول بورلند پاسکال از آن استفاده شده بود، اما بورلند پاسکال آن را را اختراع نکرد بلکه تنها به گسترش و عمومی شدن آن کمک نمود.
چکیدهقصد پروفسور ورث خلق یک زبان کار آمد بود (در هر دو مورد سرعت کامپایل و کد ساخته شده) که بر پایه به اصطلاح برنامهنویسی ساخت یافته (مفهومی که به تازگی محبوب شدهاست) باشد. اصول و ریشههای پاسکال برپایه زبان الگول ۶۰ پی ریزی شد، اما علاوه بر آن مفاهیم و مکانیزمهایی را مافوق اعداد و آرایههای الگول معرفی کرد که برنامه نویسان را قادر به تعریف انواع داده (ساختمان) پیچیده خودشان میکرد و همچنین ساخت ساختمان دادههای بازگشتی و پویا مانند لیستها، درختها و گرافها را آسانتر مینمود.
امکانات مهم که برای این امور اضافه شده بود، رکوردها، شمارشها، زیر حوزهها، متغیرهای اختصاص داده شده پویا همراه اشاره گرهای وابسته و مجموعهها میباشد. برای تحقق و معنی دار کردن این امر، پاسکال یک سیستم تایپ دهی قوی روی تمام اشیا دارد، به این معنی که یک نوع داده نمیتواند بدون تبدیل صریح، به عنوان نوع دیگر تفسیر یا تبدیل شود. امروزه در بسیاری از زبانهای برنامهنویسی مکانیزمهای مشابهی به صورت استاندارد میباشند. زبانهای دیگر که از توسعه پاسکال تأثیر گرفتند، کوبول، سیمولا ۶۷ و Algol W خود آقای Wirth میباشند.
پاسکال مانند بسیاری از زبانهای اسکریپتی امروزه (اما بر خلاف زبانهای خانواده C) به تعریف پروسههای تودرتو تا هر عمقی و همچنین اکثر انواع تعریفها و اعلانها درون پروسهها و توابع اجازه میدهد. این امر یک نحو خیلی ساده و منسجم را امکانپذیر میسازد که یک برنامه کامل از نظر نحوی، خیلی نزدیک به یک تابع یا پروسه تنهاست (البته به استثنای خود کلمه کلیدی).
اولین کامپایلر پاسکال برای سری CDC 6000 خانواده کامپیوترهای پردازنده مرکزی در زوریخ طراحی شد. آقای Wirth گزارش میدهد که اولین کوشش برای پیادهسازی آن در فرترن در سال ۱۹۶۹ با توجه به نارسایی فرترن برای بیان ساختمان دادههای پیچیده، ناموفق بود. دومین تلاشها برای خود زبان پاسکال تنظیم و فرموله شد و در اواسط سال ۱۹۷۰ قابل استفاده شد. پس از آن بسیاری از کامپایلرهای پاسکال به طور مشابه، خودمیزبان بودند، به این معنا که خود کامپایلر در پاسکال نوشته شدهاست و کامپایلر هنگامی که امکانات جدید به زبان اضافه میشود یا به محیطی جدید منتقل میشود، معمولاً قادر به دوباره کامپایل کردن خود میباشد. کامپایلر GNU Pascal یک استثنای قابل توجه در این مورد میباشد که در C نوشته شدهاست.
اولین انتقال موفق کامپایلر CDC Pascal به یک کامپیوتر پردازنده مرکزی دیگر، توسط Welsh و Quinn در دانشگا ه Queen در شهر Balfast در سال ۱۹۷۲ انجام گرفت. کامپیوتر هدف یک ICL 1900 بود. اولین کامپایلر پاسکال که در آمریکای شمالی نوشته شد، در دانشگاه Illinois زیر نظر Donald B.Gillies برای PDP-11 و کد ماشین تولید شده محلی، ساخته شد. پاسکال در سراسر سالهای ۱۹۷۰ و ۱۹۸۰ از محبوبیتی بزرگ برخوردار بود.
به منظور انتشار سریع زبان، یک کامپایلر (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 از ۶–۱۹۷۵ شامل منابع و اعداد باینری لازم برای کامپایلر و فایلهای کتابخانهای زمان اجرا، برای پردازنده مرکزی PDP-10 ممکن است از این پیوند قابل دریافت باشد.
در اوایل 1980 WatcomPascal نیز برای IBM System 370 توسعه داده شد. IP Pascal یک پیادهسازی از زبان برنامهنویسی پاسکال بود که از Micropolis Dos استفاده میکرد، اما به سرعت به CP/M که برروی Z80 اجرا میشد، حرکت کرد. بعدها نیز به انواع ماشینهای ۸۰۳۸۶ در سال ۱۹۹۴ حرکت کرد و امروزه به صورت پیادهسازی شده در Linux و Windows/XP وجود دارد. در سال ۲۰۰۸ سیستم به یک سطح جدید ارتقا یافت و زبان حاصله به عنوان Pascaline (بعد از Pascal’s Calculator) نامیده شد. آن زبان، شامل اشیا، کنترلهای فضای نام، آرایههای پویا، به همراه بسیاری الحاقات دیگر، و امکانات عمومی دارای کارکرد مشابه، و حفاظت نوع داده همانند C# میباشد. این تنها پیادهسازی است که با پیادهسازی پاسکال اصلی سازگارمی باشد (که در ISO 7185 استاندارد شدهاست).
در اوایل ۱۹۸۰ به منظور مهیا کردن یک جایگزین ساخت یافته برای مفسرهای پایه که با ماشینها آمدند، UCSD Pascal به کامپیوترهای Apple II,Apple III انتقال یافت. کامپیوتر Apple, Lisa Pascal خودش را برای محیط کار Lisa در سال ۱۹۸۲ خلق کرد و این کامپایلر را به Apple Macintosh و MPW در سال ۱۹۸۵ منتقل کرد. در سال 1985 Larry Tesler در مشاوره با Niklaus Wirth پاسکال شی گرا را تعریف کردو این امکانات در هر دوی Lisa Pascal و Mac Pascal جای داده شدند.
در سالهای ۱۹۸۰، Anders Hejlsberg کامپایلر Blue Label را برای Nascom-2 نوشت. یک پیادهسازی مجدد از این کامپایلر برای IBM PC تحت نامهای Compas Pascal و PolyPascal قبل از اینکه توسط Borland شناسایی شود، در معرض فروش قرار داده شد. نامگذاری مجدد به Turbo Pascal موجب افزایش محبوبیت و قدردانی شد. قدردانی در یک قسمت به خاطر یک راهبرد قیمت گذاری جسورانه و پر پشتکار و در یک قسمت به خاطر داشتن یکی از نخستین محیطهای توسعه یکپارچه تمام صفحه. علاوه بر اینها، Turbo در زبان اسمبلی نوشته شد و تماماً به نحو احسن بهینه شد که سبب شد در رقابت بسیار کوچکتر و سریعتر شود. در سال ۱۹۸۶، Anders، توربو پاسکال را به Macintosh منتقل کرد و الحاقات پاسکال شی گرای Apple را با Turbo درآمیخت. این الحاقات سپس مجدداً به توربو پاسکال نسخه PC شماره ۵٫۵ اضافه شدند.
کامپایلر ارزان بورلند یک تأثیر شگرف بر جامعه پاسکال گذاشت که سبب تمرکز ویژه برروی کامپیوترهای شخصی IBM در اواخر سالهای ۱۹۸۰ شد. بسیاری از علاقهمندان به کامپیوترهای شخصی که در جستجوی یک جایگزین ساخت یافته برای BASIC بودند، شروع به استفاده از این محصول کردند. همچنین این محصول توسط استفادهکنندگان حرفهای نیز کمکم مورد پذیرش قرار گرفت. درهمین حین، تعدادی مفاهیم از C، به منظور اجازه دادن به برنامه نویسان پاسکال برای استفاده مستقیم از APIهای Microsoft Windows که بر پایه C بودند، وارد پاسکال شدند. این الحاقات مشتمل بر رشتههای بدون پایان، اشاره گرهای عددی و حسابی، اشاره گرهای توابع، آدرس عملگرها و انواع دادهای ناامن میباشند.
با این حال، بورلند بعداً تصمیم گرفت که امکانات شی گرایی با دقت بیشتر و جزئیات دقیقتر میخواهد و آن را با استفاده از پیش نویسهای استاندارد پاسکال شی گرا که توسط Apple به عنوان اساس و پایه پیشنهاد شده بود، مجدداً در Delphi پیاده کرد (این پیش نویس Apple هنوز یک استاندارد رسمی نمیباشد). بنابراین اولین نسخههای زبان برنامهنویسی Delphi، پاسکال شی گرا (Object Pascal) نامیده شدند. الحاقات اصلی در مقایسه با پاسکال شی گرای قدیمیتر، مدل شی گرای مبتنی بر مرجع، سازندهها و مخربهای مجازی و جزئیات بودند. کامپایلرهای متعدد دیگر نیز این شیوه را اجرا و پیادهسازی کردند.
توربو پاسکال و دیگر مشتقات به همراه واحدها یا مفاهیم پیمانهای، هم از زبانهای پیمانهای هستند. با این حال، مفهوم پیمانه تودرتو یا ورود و خروج صحیح نمادهای ویژه را مهیا نمیکنند. Super Pascal یک نوع دیگر بود که برچسبهای بدون عدد را اضافه کردکه یک دستور یا عبارت بازگشت به عنوان نامهایی از نوعها میباشد.
دانشگاههای زوریخ، Karlsruhe و Wuppertal، یک قابلیت را برای محاسبات علمی توسعه دادند (XSC Pascal) که یک راه حل مفید را برای برنامهریزی محاسبات عددی با دقت کنترل شده، مهیا میکند. در سال ۲۰۰۵ در کنفرانس WEB 2.0، Marfic Technology ابزاری معرفی کرد که توسعه کاربردهای WEBکه تماماً در Marfic Pascal نوشته شده بود را مهیا میکرد. Marfic Pascal یک گونه از پاسکال شی گرا است که بسیار نزدیک به Delphi میباشد.
فهرست مطالب:
فصل اول: مقدمه ای بر کامپیوتر و برنامه سازی
مقدمه ای بر کامپیوتر کامپیوترهای الکترونیکی قدیمی و فعلی آشنایی با سخت افزار کامپیوتر حل مسئله و برنامه سازی استراتژی برنامه نویسی مراحل آماده سازی یک برنامه برای اجرا ساختن یک برنامه یا فایل فصل دوم: پاسکال و حل مسئله شیوه توسعه نرم افزار ساختمان برنامه پاسکال شناسه ها و قواعد نامگذاری آن انواع داده ها ، تعریف ثابت ها و متغیر ها دستورات انتساب عملیات ورودی و خروجی و رویه ها شکل کلی برنامه در پاسکال عبارات محاسباتی و نوع داده عبارت محاسباتی قوانین ارزیابی عبارات نوشتن فرمولهای ریاضی در پاسکال قالب بندی خروجی برنامه خطاهای اجرایی و خطاهای منطقی فصل سوم: توابع و رویه ها توابع توابع استاندارد رویه ها ترتیب اجرای رویه ها و برنامه اصلی مزایای استفاده از رویه ها پارامترهای یک رویه فصل چهارم: ساختارهای انتخاب: دستورات if و else ساختارهای کنترل ثابت ها و متغیر های منطقی عبارات منطقی و عملگرهای رابطه ای عملگرهای منطقی جداول درستی تقدم عملگرها دستور IF قواعد پاسکال برای جفت کردن else با if دستور Case عبارت otherwise یا else (غیر استاندارد ) فصل پنجم: حلقه های تکرار: دستورات while و for و repeat حلقه های تکرار دستور While حلقه های شرطی حلقه های شمارشی حلقه های پایانه دار حلقه هایی که با پرچم های منطقی کنترل می شوند. دستور For شمارنده های نوع Char شمارش معکوس دستور Repeat حلقه های لانه ای فصل ششم: برنامه سازی پیمانه ای برنامه سازی پیمانه ای مقدمه ای بر پارامترها پارامترهای واقعی وصوری ناحیه داده های رویه پارامتر های متغیر و پارامتر های مقدار قواعد تناظر لیستپارامتر ها حوزه عمل شناسه ها حوزه عمل برای رویه های لانه ای (تو در تو) توابع طراحی گام به گام اشکالزدائی برنامه ها نکاتی در مورد اشکال زدایی توابع بازگشتی فصل هفتم: انواع داده های ساده انواع داده های ترتیبی توابع ترتیبی توابع ترتیبی و کاراکتری نوع زیر بازه سازگاری انتساب انواع شمارشی کاربرد توابع ترتیبی با انواع شمارشی خواندن و نوشتن مقادیری از نوع شمارشی دلایل استفاده از نوع شمارشی فصل هشتم: فایل های متن فایل های متن ، فایل های داده و فایل های خروجی فایل داده مزایای فایل داده ساختار اطلاعات در یک فایل متن ساختار منطقی یک فایل متن خواندن اطلاعات از فایل متن رویه read نوشتن نتایج در فایل متن رویه های write , writeln نامهای داخلی و خارجی فایل رویه reset رویه rewrite تست انتهای فایل : تابع EOF تست انتهای خط : تابع EOLN استفاده از فایل های متن اشکال زدایی در مورد فایل ها فصل نهم: مهندسی نرم افزار دوره حیات سیستم یا نرم افزار انواع داده های مجرد آزمایش برنامه های بزرگ وجدان و تعهد اخلاقی فصل دهم: آرایه آرایه پارامتر های آرایه پارامترهای آرایه مقدار یا متغیر رویه جمع کردن دو آرایه مقایسه دو آرایه تابع برای کوچکترین مقدار آرایه رویه برای مرتب کردن عناصر آرایه اشکال زدائی برنامه های آرایه دار خطاهای متداول در برنامه سازی فصل یازدهم: آرایه های فشرده و آرایه های چند بعدی آرایه فشرده تعریف آرایه های فشرده نمایش متغیرهای رشته ای مراجعه به کاراکتر های یک رشته آرایه های دو بعدی آرایه چند بعدی پردازش آرایه های دو بعدی مقدار اولیه دادن به یک آرایه محاسبه مجموع هر سطر آرایه سه بعدی خطاهای متداول برنامه سازی فصل دوازدهم: رکوردها نوع داده رکورد تعریف نوع رکورد دست یابی به فیلد های رکورد آرایه ها به عنوان فیلدهای رکورد رکورد ها به عنوان عملوند و پارامتر کپی کردن یا منتسب کردن رکورد رکورد ها به عنوان پارامتر خواندن یک کورد دستور with آرایه ای از رکورد ها استفادهاز دستور with با آرایه ای از رکوردها رکوردهای سلسله مراتبی تجرید رویه ای تجرید داده ای مخفی کردن اطلاعات در حفاظ قرار دادن برنامه سازی شی گرا رکورد های متغیر فصل سیزدهم: بازگشت پذیری پیمانه های بازگشت پذیر تابع بازگشت پذیر ضرب خواص مسائل و راه حلهای بازگشت پذیر گام های لازم جهت حل مساله بازگشت پذیری پارامتر و پشته های متغیر محلی تابع GCD تابع SUM تابع EQUAL جستجوی دودویی خطاهای متداول برنامه