رایانه یا کامپیوتر (به انگلیسی: 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 مثال و تمرین حل شده در تمام فصل ها.
فرمت:pdf و word
فهرست
مقدمه
پیشینه پژوهش
اهداف پژوهش
سؤالات پژوهش
فرضیه های پژوهش
متغیرهای پژوهش
جامعه پژوهش و روش نمونه گیری
ابزار گردآوری اطلاعات
مقدمه
کامپیوترها اولین بار در دهه 1950 به کتابخانه ها وارد شده اند. در ابتدا از آنها برای سرعت بخشیدن به خدمات کتابشناختی کتابخانه ها و کاهش هزینه ها استفاده می شد، اما کم کم کاهش هزینه ها در استفاده از انواع نوآوری ها و کاربرد بیشتر آن زمینه شروع تغییرات بسیاری در خدمات کتابخانه ها را فراهم کرد
کتابخانه ها در ایران، از اواسط دهه 1350 با ثبت موجودی کتابخانه مرکزی دانشگاه شهید چمران اهواز بر روی کارتهای پانچی 80 ستونه کامپیوتری مورد توجه قرار گرفت. اما در پایان دهه 1350 در اثر مشکلات اقتصادی و اجتماعی ناشی از وقوع انقلاب اسلامی و هشت سال جنگ تحمیل.(ورود فناوری های جدید اطلاعاتی به تاخیر افتاد).
منابع:
1- آر پاول، پاول(1379) .روشهای اساسی پژوهش برای کتابداران. تهران: دانشگاه آزاد اسلامی: مرکز انتشارات علمی.
2- ابراهیمی، رحمان و علی پو ر نجمی، سکینه .(1388)پیامدهای ورود فناوری اطلاعات و ارتباطات در آموزش کتابداری و اطلاعرسانی. ارتباط علمی.
3- اشرفی، حجت(1388). کتابخانه های عمومی زمینه ای برای توسعه خلاقیت در جامعه. در مجموعه مقالات خلاقیت و نوآوری در کتابخانه های عمومی، نشست تخصصی خلاقیت و نوآوری.294-269 ، در کتابخانه های عمومی، اسفند 71
4- اکبری، مریم( 1389 ). تحلیل وضعیت و روند پذیرش موتورها و ابر موتوهای جستجو توسط دانشجویان تحصیلات تکمیلی دانشگاه اصفهان بر اساس نظریه اشاعه نوآوری های راجرز. فصلنامه علوم و فناوری اطلاعات.
الگوریتم (نسبت: الگوریتمی، خوارزمیک) یا خوارزمی مجموعهای متناهی از دستورالعملها است، که به ترتیب خاصی اجرا میشوند و مسئلهای را حل میکنند. به عبارت دیگر یک الگوریتم، روشی گام به گام برای حل مسئله است. شیوه محاسبه معدل در مدرسه، یکی از نمونههای الگوریتم است.
ریشه واژهٔ الگوریتمواژه الگوریتم از نام ریاضیدان و ستارهشناس و جغرافیدان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده است، که در خوارزم زاده شد و در دانشگاه «بیت الحکمه» بغداد به اوج شهرت رسید. خوارزم یکی از شهرهای «ایران بزرگ» بود، که امروزه در ازبکستان واقع شده است و خیوه نام دارد. رسالهای که خوارزمی در قرن ۹ میلادی به عربی نگاشته بود، در قرن ۱۲ بهلاتین با نام "Algoritmi de numero Indorum" ترجمه شد؛ یعنی "[کتابی بدست] «الگوریتمی» در مورد اعداد هندی"، که «الگوریتمی» نام الخوارزمی بود که مترجم در تبدیل به لاتین نام وی را جلوی نام اصلی کتاب (در مورد اعداد هندی) آورده بود. در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای «سیستم شمارش عربی (دهدهی)» (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن (رادیکال) هم الگوریسم نامیده میشود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عامتر امروزیاش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال رایانهای به کار رود» الگوریتم گفته شد.
تبدیل نام الخوارزمی به الگوریسم و سپس الگوریتم احتمالاً تحت تأثیر واژه یونانی arithmos (به معنای عدد) و arithmetic (به معنای محاسباتی) بوده است. برخی منابع هم کلمه لگاریتم را هم در تبدیل الگوریسم و الگوریتم بی تأثیر ندانستهاند.
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبان برنامهنویسی سی، زبانی همه منظوره، ساختیافته، دستوری و روندگرا میباشد که در سال ۱۹۷۲ توسط دنیس ریچی در آزمایشگاههای بل ساخته شد.
پیشینهدر سال ۱۹۶۷ مارتین ریچاردز زبان BCPL را برای نوشتن نرمافزارهای سیستمعامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامسون بل زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخههای سیستمعامل یونیکس در آزمایشگاههای بلاستفاده کرد. زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع دادهها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستمعامل یونیکس استفاده کرد اما بعدها اکثر سیستمعاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال ۱۹۷۸ توسط برایان کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.
متأسفانه استفاده گسترده این زبان در انواع کامپیوترها و سختافزارهای مختلف باعث شد که نسخههای مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال ۱۹۸۳ مؤسسه استانداردهای ملی آمریکا (ANSI) کمیتهای موسوم به X3J11 را را مأمور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید. در سال ۱۹۸۹ این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال ۱۹۹۰، سازمان بینالمللی استانداردسازی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.
در سالهای بعد و با ظهور روشهای برنامهنویسی شئگرا نسخه جدیدی از زبان C بنام C++ توسط بییارنه استراستروپ در اوایل ۱۹۸۰ در آزمایشگاههای بل توسعه یافت. در C++ علاوه بر امکانات جدید، خاصیت شئگرایی نیز به C اضافه شدهاست.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامههای آن بتوانند برروی هر ماشین و هر سیستمعامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبانجاوا را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده میشود و برنامههای نوشته شده به آن برروی هر کامپیوتری که از جاوا پشتیبانی کند (تقریباً تمام سیستمهای شناخته شده) قابل اجرا میباشد.
فهرست مطالب:
فصل اول: مفاهیم اولیه
الگوریتم
شرایط الگوریتم ها
فلوچارت
نوع داده مجرد
انواع توابع یک نوع داده
بررسی نحوه اجرای برنامه
و...
فصل دوم: زبان برنامه نویسی
مقدمه
ویژگی های مهم زبان C
کاراکتر
شناسه
متغیر
علامت توضیح
ساختار برنامه ها
دستورالعمل های اجرایی
و...
فصل سوم: انواع داده ها
مقدمه
انواع داده های اسکالر
انواع داده های غیر اسکالر
اعلان متغیرها
داده های صحیح
مقادیر ثابت صحیح
داده های اعشاری
داده های کاراکتری
و...
فصل چهارم: توابع ورودی و خروجی
مقدمه
تابع () printf
کاراکتر فرمت n%
تابع () scanf
و...
فصل پنجم: ساختارهای کنترلی و شرطی
مقدمه
دستور کنترلی while
دستور کنترلی do while
دستور کنترلی for
دستورهای شرطی if و if-else
دستور شرطی switch
و...
فصل ششم: برنامه سازی پیمانه ای
مقدمه
تعریف تابع
دستور return
فراخوانی تابع
تابع بازگشتی
استفاده از چند تابع
پارامترهای خط فرمان
و...
فصل هفتم: آرایه
مقدمه
تعریف آرایه
اندیس آرایه
مقداردهی اولیه آرایه
آرایه های چند بعدی
انتقال آرایه به یک تابع
آرایه ها و رشته ها
و...
فصل هشتم: اشاره گر
مقدمه
تعریف اشاره گر
آدرس متغیر
مقداردهی اولیه اشاره گر
اشاره گر تهی
عملیات روی اشاره گرها
و...
فصل نهم: نوع داده کاربر
مقدمه
ساختار
ساختارهای تو در تو
اختصاص مقادیر اولیه
آرایه ای از ساختارها
پردازش یک ساختار
انتقال ساختار به تابع
داده تعریف شده توسط کاربر
و...
فصل دهم: پشته و صف
مقدمه
نوع داده مجرد پشته
پشته چندگانه
ارزشیابی عبارات infix ،postfix ،prefix
نوع داده مجرد صف
صف حلقوی
و...
فصل یازدهم: ساختار درختی
مقدمه
درخت
نمایش درخت
نمایش لیست
نمایش فرزند چپ ـ همزاد راست
نمایش دودویی یک درخت
درخت دودویی
تفاوتهای درخت عادی با درخت دودویی
خواص درختان دودویی
درخت دودویی پر
و...
فصل دوازدهم: فایل
مقدمه
انواع فایل
بازکردن و بستن فایل
توابع کار با فایل ها
فایل های ورودی و خروجی
توابع دیگر
دستگاههای ورودی و خروجی استاندارد
و...
فصل سیزدهم: توابع کتابخانه ای
مقدمه
توابع تبدیل نوع
توابع ریاضی
توابع کاراکتری
توابع رشته ای
توابع تخصیص حافظه پویا
و...