اقتصاد خرد (به انگلیسی: Microeconomics) شاخهای از علم اقتصاد است که به مطالعه منحصر به فرد اقتصاد، تجزیه و تحلیل بازار، رفتار مصرفکنندگان و خانوارها و بنگاهها میپردازد و اساس آن مدلهای ریاضی است. اقتصاد خرد چگونگی رفتار انسانها و انتخابهایشان را در سطح واحدهای خرد یا کوچک اقتصادی مانند یک فرد، یک بنگاه، یک صنعت یا بازار یک کالای خاص بررسی میکند و به چگونگی تعامل بین خریداران و مصرفکنندگان و عوامل مؤثر در انتخاب خریداران میپردازد. اقتصاد خرد بهخصوص به الگوی عرضه و تقاضا برای کالاها و خدمات و همچنین تعیین قیمت خروجی در بازارهای خاص توجه دارد و معمولاً در بازارهایی که در آن کالاها در حال خرید و فروش هستند کاربرد دارد.
تفاوت بین اقتصاد خرد و کلاناقتصاد خرد یا اقتصاد میکرو راجع به رفتارهای گروههای انفرادی است، حال آنکه اقتصاد کلان یا ماکرو، رفتارهای اقتصادی در سطح کلی را مورد بررسی قرار میدهد. اقتصاد خرد، مباحثی چون رفتار مصرفکننده، رفتار تولیدکننده و چگونگی تعیین قیمت در بازارهای مختلف را دربر میگیرد. حال آنکه اقتصاد کلان، تغییرات متغیرهای اقتصادی از قبیل درآمد ملی، سطح اشتغال و سطح عمومی قیمتها را مورد مطالعه و تحلیل قرار میدهد.
تعاریف اولیهکالای مکمل و کالای جانشین: کالاهای مکمل کالاهایی هستند که به موازات یکدیگر مورد تقاضا واقع میشوند، مثل اتومبیل و لاستیک اتومبیل. کالاهای جانشین به آن دسته از کالاها اطلاق میشود که بتوانند جانشین یکدیگر شوند مثل فندک به جای کبریت.کالای مادی و کالای غیرمادی: کالاها بر دو نوع هستند: یا مادی اند (مثل نان و کره و اتومبیل) یا غیرمادی اند یعنی خدماتی هستند (مثل خدمات مشاورهای، خدمات بانکی و بیمه).اهداف اقتصاد خردیکی از اهداف اقتصاد خرد بررسی بازار و برقرار کردن یک رابطهٔ نسبی پولی بین کالاها و خدمات است. همچنین به بررسی موارد شکست بازار (مواردی که بازار قادر به تولید نتیجهٔ مطلوب و درخور نبوده) میپردازد و تئوریهایی را برای داشتن یک بازار رقابتی شرح میدهد.
در نظریه عرضه و تقاضا معمولاً فرض بر این قرار داده میشود که فضا کاملاً رقابتی است. این بدین معناست که خریداران و فروشندگان بسیاری در بازار وجود دارند و هیچکدام از آنها نمیتوانند بر قیمتها تأثیر بگذارند. درمعادلات زندگی واقعی این فرض با مشکل مواجه است زیرا بسیاری از خریداران و فروشندگان این توانایی را دارند که بر قیمتها تأثیرگذار باشند. در خصوص نظریهٔ عرضه و تقاضا در اغلب موارد تجزیه و تحلیل پیچیدهای نیاز است تا بتوان یک مدل عرضه و تقاضا ارائه داد.
زمینههای مهم در علم اقتصاد خرداقتصاد خرد خود به سه بخش تقسیم میشود: برقراری تعادل عمومی، انتخاب تحت عدم اطمینان، تئوری بازیها و در نظر گرفتن کشش عرضه و تقاضا درون سیستم بازار.
قانون تقاضا و عرضه آلفرد مارشال، اقتصاد دان برجسته انگلیسیبازار رقابتی کامل، بازاری است که در آن تعداد زیادی فروشنده، کالاهای مشابه را به تعداد زیادی از خریداران ،عرضه میکنند. قیمت در بازار به وسیله عرضه و تقاضا تعیین میشود. آلفرد مارشال، عرضه و تقاضا را به دو لبه قیچی تشبیه میکند که برای بریدن پارچه لازم است. او معتقد است که عرضه و تقاضا مانند دو تیغ قیچی، به یکدیگر کمک کرده، قیمت کالاها در بازار را تعیین میکنند. عرضه منعکس کننده شرایط کمیابی و تقاضا بیان کننده خواستهها و نیاز افراد میباشد. اگر کالایی کمیاب باشد ولی کسی تمایلی برای خرید آن نداشته باشد، واضح است که آن کالا نمیتواند قیمتی داشته باشد.
فهرست مطالب:
فصل اول: تعریف علم اقتصاد و کاربرد آن
چرا اقتصاد را یاد می گیریم؟
هزینه فرصت
نهایی گرایی
بازارهای کارآمد
اقتصاد خرد
اقتصاد کلان
نظریه ها و مدل ها
و...
فصل دوم: سیستم های اقتصادی
سیستم اقتصادی
اقتصاد با برنامه ریزی متمرکز
اقتصاد بازار آزاد
قیمت
سیستم اقتصادی مخلوط، بازار و دولت
ادعای طرفداران حضور دولت در اقتصاد
سخنی کوتاه در مورد اقتصاد ایران
و...
فصل سوم: عرضه و تقاضا
بنگاه
خانوار
تقاضا در بازار ستاده ها
قانون تقاضا یا قیمت و مقدار تقاضا
فواید منحنی تقاضا
اثر درآمدی
اثر جانشینی
دو مشخصه از منحنی تقاضا
عوامل دیگر تعیین کننده در تقاضای خانوار
و...
فصل چهارم: رفتار مصرف کننده و مطلوبیت
عوامل مؤثر در تقاضای خانوار
شکل محدودیت بودجه
پایه و اساس انتخاب یا مطلوبیت
نارسایی ها و مشکلات مفهوم مطلوبیت
نزولی بودن مطلوبیت نهایی
و...
فصل پنجم: بنگاه و تولید
تولید و تکنیک تولید
تابع تولید
تولید نهایی
قانون بازده نزولی
تولید متوسط
رابطه بین تولید متوسط و تولید نهایی
منحنی های تولید یکسان یا منحنی های بی تفاوتی در تولید
نرخ نهایی تکنیکی جانشینی
و...
فصل ششم: کشش
کشش قیمتی تقاضا
خصوصیات قانون تقاضا
کالای ضروری
کالای کشش پذیر
و...
فصل هفتم: هزینه
هزینه های آشکار
هزینه های پنهان
سود اقتصادی
قانون بازدهی نزولی
کوتاه مدت
بلند مدت
کل هزینه ثابت
و...
فصل هشتم: قیمت و تولید
رقابت کامل
به حداکثر رساندن سود در کوتاه مدت
سود یا زیان کوتاه مدت
منحنی عرضه کوتاه مدت شرکت
تعادل بلند مدت یک شرکت رقابتی
صنایع با هزینه های ثابت، فزاینده و کاهنده
مزایای رقابت کامل
و...
فصل نهم: قیمت و تولید انحصاری
انحصار خالص
تقاضا و درآمد نهایی
به حداکثر رساندن سود
انحصار از نظر کارایی
کنترل انحصار
و...
فصل دوم: قیمت و محصول
تعریف رقابت انحصاری
به حداکثر رساندن سود
خصوصیات رقابت انحصاری
مفاهیم کارایی بلند مدت رقابت انحصاری
مقایسه رقابت انحصاری با رقابت کامل
محصولات متمایز
رقابت غیر قیمتی
و...
رایانه یا کامپیوتر (به انگلیسی: 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 مثال و تمرین حل شده در تمام فصل ها.
لینک دانلود و خرید پایین توضیحات
دسته بندی: Word
نوع فایل: doc (قابل ویرایش و آماده پرینت)
تعداد صفحه: 4 صفحه
قسمتی از متن فایل دانلودی
تابع ()printf
این تابع برای انتقال اطلاعات از کامپیوتر به صفحه نمایش مورد استفاده قرار
می گیرد و بصورت زیر استفاده می شود : ;
( عبارت دیگر " / عبارت " 1) printf) "
عبارت " 1 شامل تعدادی کاراکترهای کنترلی ، کاراکترهای قالب جهت تعیین شکل
خروجی و رشته های دیگری است که باید به خروجی منتقل شوند . " عبارت دیگر " شامل
اطلاعاتی هستند که با فرمت مشخص شده در " عبارت " 1، باید به خروجی منتقل شوند.
کاراکترهایی که برای تعیین فرمت خروجی مورد استفاده قرار می گیرند با کاراکتر %
شروع می شوند ( جدول 1 ) .
کاراکتر | نوع اطلاعات که باید به خروجی منتقل شود |
%C | % یک کاراکتر | |
%d | % اعداد صحیح دهدهی مثبت و منفی | |
%i | % اعداد صحیح دهدهی مثبت و منفی | |
%e | % نمایش علمی عدد همراه با حرف e | |
%E | % نمایش علمی عدد همراه با حرف E | |
%f | % عدد اعشاری ممیز شناور | |
%g | % اعداد اعشاری ممیز شناور | |
%G | % اعداد اعشاری ممیز شناور | |
%O | % اعداد مبنای 8 مثبت | |
%S | % رشته ای از کاراکترها ( عبارت رشته ای ) | |
%U | % اعداد صحیح بدون علامت ( مثبت ) | |
%x | % اعداد مبنای 16 مثبت با حروف کوچک | |
%X | % اعداد مبنای 16 مثبت با حروف بزرگ | |
%p pointer | % ( اشاره گر ) | |
%n | % موجب میشود تا تعداد کاراکترهایی که تا قبل | |
| ازاین کاراکتر به خروجی منتقل شده اند شمارش | |
| شده و در پارامتر متناظر با آن قرار گیرد . | |
%% | % علامت % |
جدول (1) . کاراکترهای فرمت در تابع ()printf
کاراکترهای کنترلی که در تابع ()printf بکار میروند در جدول (2) آمده است .
بعضی از کاراکترهای کنترلی برای انتقال خروجی به یک محل معین از صفحه نمایش
مورد استفاده قرار می گیرند .
| کاراکتر عملی که انجام می شود |
\f | \ موجب انتقال کنترل به صفحه جدید می شود | |
\n | \ موجب انتقال کنترل به خط جدید می شود | |
\t | \ انتقال به 8 محل بعدی صفحه نمایش | |
\" | \ چاپ کوتیشن (") | |
\' | \ چاپ کوتیشن (') | |
\0 NULL | \ رشته تهی | | back slash | \\ |
|
\V | \ انتقال کنترل به 8 سطر بعدی | |
\N | \ ثابت های مبنای 8( N( عدد مبنای 8 است ) | |
\xN | \ ثابت های مبنای 16( N( عدد مبنای 16 است ) |
جدول (2) . کاراکترهای کنترلی
چند دستور متوالی که شامل تابع ()print باشند ، خروجی خود را بر روی یک سطر
منتقل یم کنند . مگر این که با پارامتر کنترلی \n کنترل را به سطر بعدی منتقل
کنیم .
مثال 1:
main)(
{
printf(" i like %c "/'c' );
printf("%s"/"very much." );
}
خروجی حاصل از اجرای برنامه فوق بصورت ذیل خواهد بود : i like c very much.
با استفاده از \n می توانیم خروجی را در چند سطر داشته باشیم . main)(
{
printf("this is second program.\n" );
printf("output is in two line." );
}
خروجی حاصل از اجرای برنامه فوق بصورت ذیل است : this is second program.
output is in two line.
مثال 2: main)(
{
int num ;
printf("the address of num is:" );
printf(" %p"/ &num );
}
در مثال فوق عبارت &num آدرس متغیر num را مشخص می کند که برای نوشتن آن از
کاراکتر فرمت %p استفاده شده است . نمونه ای از خروجی مثال 2 بصورت زیر است . the address of num is : 6A30:OFE4
اگر در تابع ()printf چند کاراکتر فرمت داشته باشیم ، هر کاراکتر با یک عنصر
داده که باید به خروجی برود تطبیق داده می شود : main)(
مقدمه
تاکنون توابع حقیقی و توابع برداری را که تنها دارای یک متغیر مستقل بودند مورد مطالعه قرار دادیم. اگرچه بسیاری از پدیدههای جهان فیزیکی توسط این توابع توصیف میشوند، ولی اغلب کمیتهای فیزیکی در واقع به بیش از یک متغیر وابسته هستند. به عنوان مثال ، حجم یک مکعب مستطیل به طول ، عرض و ارتفاع آن و دمای نقطهای از یک جسم به مختصات آن نقطه (و احتمالا زمان) بستگی دارد. متناظر با هر کمیتی که به چند متغیر وابسته باشد، یک تابع با چند متغیر وجود دارد.
تعریفتابع f که دامنه آن زیرمجموعهای از و برد آن مجموعهای از اعداد حقیقی باشد را یک تابع (حقیقی) n متغیره میگوییم.
توابع دو متغیره و سه متغیرهتابع f یک تابع دو متغیره است، اگر دامنه آن مجموعهای از نقاط صفحه باشد. به همین ترتیب f را یک تابع سه متغیره میگوییم اگر دامنه آن مجموعهای از نقاط فضا باشد.
اعمال جبری در مورد توابع دو متغیرهاگر f و g دو تابع با دو متغیر باشند، آنگاه مجموع ، حاصلضرب و خارج قسمت دو تابع دو (یا چند) متغیره به صورت زیر تعریف میشوند:
دامنه توابع حاصلجمع ، تفاضل و حاصلضرب f و g برابر با اشتراک دامنههای f و g است، و دامنه خارج قسمت f و g برابر با مجموع نقاط مشترک بین دامنههای f و g است به طوری که
اگر f یک تابع دو متغیره و g یک تابع یک متغیره باشند، آنگاه gof به صورت:
تعریف میشود. دامنه تابع gof مجموعه همه نقاط در دامنه f است. بطوری که عدد حقیقی در دامنه g باشد.
با وجودی که رسم نمودار توابع دو متغیره به آسانی رسم نمودار توابع یک متغیره نیست، نمودار بسیاری از این توابع را میتوانیم رسم کنیم. ولی رسم نمودار توابع سه متغیره ممکن نیست، زیرا برای این کار به چهار بعد نیاز است. با این وجود ، با استفاده از سطوحی به نام "سطوح تراز" میتوان اطلاعات مفیدی در مورد توابع سه متغیره به دست آورد. اگر f یک تابع سه متغیره باشد، آنگاه به ازای هر c مجموعه همه نقاط را بطوری که یک سطح تراز f مینامیم. به عنوان مثال ، اگر نمایش دمای نقطه باشد، آنگاه سطح تراز سطحی است که دمای تمام نقاط آن مقدار ثابت C است. به ازای c=0 ، سطح تراز نمودار تابع f با معادله است. به این دلیل ، نمودار یک تابع دو متغیره را یک سطح با یک رویه مینامیم. برای رسم سطوح تراز ، مقطع آن را با صفحههای x=c، y=c و z=c پیدا میکنیم. هر یک از این مقاطع را یک اثر سطح تراز مینامیم. مهمترین سطوح تراز سطوح تراز درجه دوم هستند.
سطوح یا رویههای درجه دومسطوح درجه دوم به 9 دسته تقسیم میشوند. در زیر a ، b و c اعداد حقیقی و مثبت هستند.
بیضیوار
اگر a=b باشد، نمودار این بیضیوار یک دایره است. همچنین ، اگر a=b=c ، آنگاه نمودار این بیضیوار یک کره به مرکز مبدا و شعاع a است. اثر بیضیوار در صفحه z=k به شکل بیضی است.
اگر a=b ، این سطح یک استوانه (مدور) است. اثر استوانه بیضوی در صفحه های z=k یک بیضی است.
اثر مخروط در صفحههای z=k یک بیضی (یا دایره ، a=b) یا یک نقطه اگر (k=0) است. اثر این مخروط در صفحههای x=0 و y=0 شامل دو خط که از مبدا میگذرند است. اگر a=b ، این سطح را یک مخروط (دو پارچه) مدور مینامیم.
اثر سهمیوار در هر صفحه z=k یک بیضی (یا دایره ، اگر a=b) ، یک نقطه یا تهی است. اثر این سطح در صفحههای x=0 و y=0 یک سهمی است. اگر a=b ، این سطح را یک سهمیوار مدور مینامیم.
اثر این سطح با صفحههای y=0 سهمی است.
اثر این سهمیوار در صفحههای x=0 و y=0 دو سهمی ، یکی روبه بالا و دیگری روبه پایین است. اثر این سطح در صفحه z=0 متشکل از دو خط متقاطع است. اثر آن در هر صفحه دیگر موازی با صفحه xy یک هذلولوی است. نمودار این سطح شبیه به زین اسب است.
اثر این سطح در هر صفحه z=k هذلولوی
است.
ورق هذلولیوار یک پارچه
اثر این ورق در صفحههای x=0 و y=0 هذلولوی و در صفحههای z=k یک بیضی (یا دایره ، اگر a=b) است.
اثر این سطح در صفحههای y=k یا x=l یک هذلولوی و در صفحه های z=e یک بیضی (یا دایره ، اگر a=b)، یک نقطه یا تهی است.
فرض کنیم f تابعی n-متغیره باشد. اگر همه متغیرها به جز یکی از آنها را ثابت در نظر بگیریم، تابعی با یک متغیر به دست میآید. که این همان مشتق جزئیتوابع چندمتغیره است.
مشتق جزئی برای توابع دومتغیرهاگر D دامنه f باشد، آنگاه تابعی از دو متغیر x و y و با دامنه
نیز نشان میدهیم. و را مشتقهای جزئی مرتبه اول f مینامیم. نماد به جای d برای تمایز مشتقهای جزئی از مشتقهای دیگر به کار رفته است. توجه کنید که برای محاسبه ، متغیر y را در ثابت در نظر گرفته و با f همچون تابعی یک متغیره رفتار کردهایم. این مطلب در مورد نیز صادق است.
تعبیر دیگر مشتق ، آهنگ تغییر است. به عبارت دیگر آهنگ تغییر در نسبت به x (وقتی y ثابت در نظر گرفته شود) است. به عنوان مثال ، فرض کنید نمایش دمای یک صفحه فلزی در نقطه در صفحه xy باشد. در این صورت ، آهنگ تغییر دما در روی خط y=b است. اگر وقتی x افزایش مییابد، دما افزایش یابد، آنگاه و اگر با افزایش x دما کاهش یابد، آنگاه . به همین ترتیب ، آهنگ تغییر دما در روی خط x=a است.
مشتقهای جزئی رتبههای بالاترمفهوم مشابهی با مشتقهای مرتبههای بالاتر توابع یکمتغیره در مورد توابع n-متغیره وجود دارد. اگر f تابعی از متغیرهای x و y باشد، آنگه و توابعی از متغیرهای x و y هستند. در نتیجه مشتقهای جزئی و را نیز میتوان در نظر گرفت. این مشتقها که مشتقهای جزئی مرتبه دوم نامیده میشوند، عبارتند از:
اگر تابع f با دو متغیر x و y باشد به طوری که و در پیوسته باشند در این صورت:
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(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 توابع مجازی و پلی مرفیسم