لینک دانلود و خرید پایین توضیحات
دسته بندی : وورد
نوع فایل : .DOC ( قابل ویرایش و آماده پرینت )
تعداد صفحه : 22 صفحه
قسمتی از متن .DOC :
تحولی در توسعه نرم افزار
سالهاست که سخت افزار درحال پیشرفت بوده اما نرم افزار به دلایلی در برابر تقریباً هر گونه اقدامی در جهت تسریع و بهبود آن مقاومت کرده است . در حال حاضر،در میانة یک تحول در زمینه نحوة نوشتن نرم افزار قرار داریم . این تحول مبتنی بر مفهومی است که در صنعت خودروسازی توسط هنری فورد در به کارگیری قطعات استاندارد و قابل تعویض در مدل تی خودروی فورد مورد استفاده قرار گرفت. قطعات نرم افزاری ((اشیاء))یا بهتر بگوییم ((رده)) نامیده می شوند.
کاملترین زبان شی ء گرا از زبان اسمالتاک است که در دهه 1970 میلادی توسعه یافت اما در بین زباهای شیء گرا، C++ از محبوبیت بیشتری برخوردار بوده است(حدود 10 برابر اسمالتاک) .C++ دراوایل دهه 1980 میلادی توسط بیارنه استراوستروپ توسعه یافت. در فاصلة زمانی بین انتشار اولین تا دومین ویرایش این کتاب رقیب جدی دیگری پا به عرصه گذاشته است . این زبان، جاوا نام دارد که در اوایل دهه 1990 توسط جیمزگاسلینگ و همکارانش توسعه یافت.
چرا هر 10 سال یک زبان برنامه نویسی شیء گرای عمده پا به عرصه وجود میگذارد؟اسمالتاک واقع از زمان خودش جلوتر بود و یک کار تحقیقاتی به شمار میرفت. ظهور C++ درست به موقع بود و نیازهای برنامه نویسی سیستم با کارآیی بالا و توسعه برنامه های کاربردی را برآورده می ساخت. جاوا امکاناتی برای کاربردهای چند رسانه ای قابل حمل و کاربردهای شبکه ای مبتنی بر اینترنت و تور جهان گستر در اختیار توسعه دهندگان نرم افزار قرار می دهد .
کامپیوتر چیست ؟
کامپیوتر دستگاهی است که می تواند محاسبات و تصمیم گیریهای منطقی را میلیونها و حتی میلیاردها بار سریعتر از انسان انجام دهد. به عنوان مثال بسیاری از کامپیوترهای شخصی امروزی می توانند در یک ثانیه صد میلیون عمل جمع را انجام دهند. در حالی که انجام چنین محاسبه ای برای یک انسان با یک ماشین حساب ممکن است دهها سال طول بکشد. (نکات قابل تامل : چگونه می توانید بفهمید که این فرد جمع اعداد را درست انجام داده است ؟ چگونه می توانید بفهمید که کامپیوتر اعداد را درست جمع کرده است ؟) سریعترین ابر کامپیوتر1های کنونی قادر به انجام صدها میلیارد عمل جمع در یک ثانیه هستند، یعنی مقدار محاسبه ای که صدها هزار انسان می توانند در یک سال انجام دهند! و کامپیوترهایی با چند تریلیون دستورالعمل در ثانیه نیز وجود دارند که در حال حاضر در آزمایشگاههای تحقیقاتی مورد استفاده قرار می گیرند.
کامپیوتر داده ها را تحت کنترل مجموعه ای از دستورالعملها که برنامه کامپیوتری نامیده می شود پردازش می کند. این برنامه ها کامپیوتر را از طریق مجموعه هایی از اعمال (با ترتیب منظم) که توسط افرادی به نام برنامه نویس کامپیوتر مشخص شده اند، راهنمایی می کنند.
دستگاههای مختلفی (همچون صفحه کلید ، صفحه نمایش، موشواره ، دیسکها، حافظه، دیسک فشرده2 و واحدهای پردازش) که یک کامپیوتر را تشکیل می دهند سخت افزار و برنامه های کامپیوتری که بر روی یک کامپیوتر اجرا می شوند نرم افزار نامیده می شوند. هزینه های سخت افزاری در سالهای اخیر به طور چشمگیری کاهش یافته تا جایی که کامپیوترهای شخصی از لوازم زندگی شده اند. متاسفانه با توسعه برنامه های کاربردی قویتر و پیچیده تر ، هزینه های توسعة نرم افزار همواره به طور ثابتی در حال افزایش بوده بدون آنکه بتوان فن آوری توسعة نرم افزار رابهبود بخشید.
سازمان کامپیوتر
صرفنظر از تفاوتهایی که در ظاهر فیزیکی کامپیوترها است. واحد ورودی،اطلاعات(داده ها و برنامه های کامپیوتری) را از دستگاههای ورودی گوناگونی می گیرد واین اطلاعات را در اختیار واحدهای دیگر قرار می دهد تا پردازش شوند. امروزه بیشتر اطلاعات از طریق صفحه کلید و موشواره وارد کامپیوتر می شوند . در آینده شاید بیشتر اطلاعات با صحبت کردن با کامپیوتر و پویش1 تصاویر وارد شوند.
2-واحد خروجی : این واحد، بخش ، ((صدور)) کامپیوتر است .واحد خروجی، اطلاعاتی را که کامپیوتر پردازش کرده می گیرد و آنها را در یکی از دستگاههای خروجی قرار میدهد تا جهت استفاده در خارج از کامپیوتر در دسترس قرار گیرند.
امروزه بیشتر اطلاعات بر روی صفحه نمایش ، ظاهر و بر روی کاغذ، چاپ می شوند و یا برای کنترل دستگاههای دیگر مورد استفاده قرار می گیرند.
3-واحد حافظه: این واحد، بخش ((انبار)) نسبتاً کم ظرفیت کامپیوتر را تشکیل می دهد که سرعت دسترسی به آن بالاست، این واحد، اطلاعاتی را که از طریق واحد ورودی وارد شده حفظ می کند تا هر گاه این اطلاعات موردنیاز بود بلافاصله جهت پردازش پردازش شده را نیز در خود نگه می دارد تا در فرصتی توسط واحد خروجی بر روی دستگاههای خروجی قرار گیرند. به واحد حافظه معمولاً حافظه یا حافظة اولیه گفته می شود .
4-واحدریاضی ومنطقی (ALU) 2 : این واحد ، بخش ، ((ساخت)) کامپیوتر ومسئول اجرای محاسباتی همچون، جمع، تفریق، ضرب و تقسیم است . واحد ریاضی و منطقی قابلیت تصمیم گیری (مثلاً با مقایسة دو عنصر از واحد حافظه ) را نیزبه کامپیوتر میدهد.
5-واحد پردازش مرکزی (CPU) 3: این واحد ، بخش ((مدیریت )) کامپیوتر است ،این واحد، هماهنگ کننده کامپیوتر و مسئول نظارت بر عملیات سایر بخشها می باشد.
CPU به واحد ورودی می گوید چه زمانی اطلاعات باید به واحد حافظه خوانده شود، به ALU می گوید چه زمانی اطلاعات باید جهت انجام محاسبه از واحد حافظه دریافت شود و به واحد خروجی می گوید چه زمانی اطلاعات را از واحد حافظه به دستگاههای خروجی معینی بفرستد.
6-واحد حافظة ثانویه: این واحد، بخش ((انبار)) پرظرفیت و بلند مدت کامپیوتر است. برنامه ها یا داده هایی که به طور فعال مورد استفادة واحدهای دیگر نیستند معمولاًدر دستگاههای حافظة ثانویه (مانند دیسکها) قرار می گیرند تا به هنگام نیاز مجدد، مثلاً شاید ساعتها، روز، ماهها یا حتی سالها بعد مورد استفاده قرار گیرند. دسترسی به اطلاعات موجود در حافظة ثانویه نسبت به حافظة اولیه زمان بسیار بیشتری طول می کشد، اما قیمت هر واحد حافظة ثانویه بسیار کمتر از یک واحد حافظة اولیه است.
روند تکاملی سیستمهای عامل 4
کامپیوترهای قدیمی در هر زمان تنها می توانستند یک کار یا وظیفه را انجام دهند. به این شکل از اجرا((پردازش دسته ای تک کاربره) گویند. کامپیوتر درهر زمان تنها برنامه را اجرا می کند در حالی که پردازش داده ها را به صورت گروهی یا دسته ای انجام می دهد. در سیستمهای قدیمی، کاربران عموماً کارهای خود را روی دسته هایی از کارتهای منگنه به یک مرکز کامپیوتر تحویل می دادند و غالباً مجبور بودند ساعتها یا حتی روزهای صبر کنند. تا نتیجة چاپ خروجی برنامه هایشان روی میزشان حاضر شود . سیستمهای نرم افزاری موسوم به سیستمهای عامل برای کمک به سهولت استفاده از کامپیوتر ها توسعه یافتند . سیستمهای عامل اولیه، گذار روان بین کارها را با موفقیت انجام دادند و بدین ترتیب زمانی که طول می کشید تا اپراتورهای کامپیوتر، از یک کاربه کار دیگر بروند از بین می رفت و مقدار کار یا مقدار خروجی که کامپیوتر ها می توانستند پردازش کنند افزایش می یافت. با قویتر شدن کامپیوتر ها ، مشخص شد که پردازش دسته ای تک کاربره، از منابع کامپیوتر به طور کارآمد استفاده نمی کند.در عوض این فکر به ذهن رسید که می توان کاری کرد که بسیاری از کارها یا وظایف از منابع کامپیوتر به طور مشترک استفاده کنند تا میزان به کارگیری بهتری حاصل شود. به این ایده چند برنامگی گویند. چند برنامگی یعنی اجرای ((همزمان)) چند کار در کامپیوتر؛ کامپیوتر امکانات خود را به صورت اشتراکی دراختیار چند کار قرار می دهد تا آنها جلب توجه کامپیوتر با یکدیگر رقابت کنند. در سیستمهای عامل چند برنامگی اولیه، کاربران هنوز می بایست کارهای خود را روی دسته های کارت منگنه تحویل می دادند و برای دریافت نتایج، ساعتها یا روزها صبر می کردند.
در دهه 1960 میلادی چند گروه از صنعت و دانشگاهها سیستمهای عامل با اشتراک زمانی را ابداع کردند. اشتراک زمانی حالت خصوصی از چند برنامگی است که در آن کاربران از طریق پایانه هایی (دستگاههایی متشکل از یک صفحه کلید و یک صفحه نمایش) به کامپیوتر دسترسی می یابند . در یک سیستم عامل یا اشتراک زمانی ممکن است دهها یا صدها کاربر در یک لحظه با یک کامپیوتر به طور مشترک کار کنند. البته کامپیوتر واقعاً به همه کاربران به طور همزمان خدمات ارائه نمی کند، بلکه یک قسمت از کار یک کاربر را اجرا می کند، سپس به سراغ کاربر بعدی می رود و به او خدمات ارائه می کند و این کار را ادامه مید هد. کامپیوتر این کار را به قدری سریع انجام میدهد که در هر ثانیه به هر کاربر چندین بار خدمات ارائه می کند و بدین ترتیب این طور به نظر می آید که برنامه ها را به طور همزمان اجرا می کند. مزیت اشتراک زمانی آن است که کاربر از تقاضای خود پاسخهای تقریباً فوری دریافت می کند و مجبور نیست مانند روشهای قبلی مدت طولانی منتظر نتیجه بماند.
محاسبات شخصی ، محاسبات توزیعی، و محاسبات مشتری ،خدمتگزار
در سال 1977 میلادی کامپیوتر اپل، پدیدة محاسبات شخصی را رواج داد.در گذشته این پدیده یک رؤیای تفریحی بود. اما بعداً کامپیوتر به قدری ارزان شد که مردم توانستند از آن کارهای شخصی خود را معرفی کرد. کمی پس از آن، محاسبات شخصی در تجارت، صنعت وسازمانهای دولتی، امری موجه گردید. اما این کامپیوترها ، واحدهایی ((مستقل)) بودند. یعنی کار خود را روی دستگاههای خودشان انجام می دادند و سپس اطلاعات را روی دیسک ذخیره و به کامپیوترهای دیگر منتقل می کردند (به این پدیده ((شبکة ضمنی1 )) گفته می شود ). گرچه کامپیوتر های شخصی اولیه برای اشتراک زمانی چند کاربره به اندازه کافی قوی نبودند اما تصال آنها به یکدیگر به صورت شبکه ای (روی خطوط تلفن و یا در شبکه های محلی (LAN) درون یک سازمان) ، امکان پذیر بود . این ایده منجر به پدیده ای به نام محاسبات توزیعی گردید که در آن به جای محاسبات یک سازمان، کاملاً در تاسیسات کامپیوتر مرکزی انجام می گیرد در سراسر شبکه هایی از مقرها ( کار کار واقعی آن سازمان در آنها اجرا می گردد) توزیع می شود . کامپیوترهای شخصی به اندازه کافی قوی بودند که هم نیازی محاسباتی کاربران منفرد را برآورد و هم کارهای ارتباطی الکترونیکی اطلاعات را انجام دهند .
بیشتر کامپیوترهای شخصی قدرتمند امروزی به اندازه دستگاههای یک میلیون دلاری یک دهه قبل قوی هستند . قویترین دستگاههای رومیزی-موسوم به ایستگاههای کاری-امکانات چشمگیری را در اختیار کاربران منفرد قرار می دهند. در شبکه های کامپیوتری ، اطلاعات به آسانی به طور مشترک مورد استفاده قرار میگیرد و کامپیوترهایی به نام خدمتگزار، انبار از برنامه ها و داده ها را دراختیار کامپیوترهای مشتری که در سراسر شبکه توزیع شده اند قرار می دهند. و اصطلاحاً محاسبات مشتری خدمتگزار انجام می گیرد. C++.C زبانهای برنامه نویسی اصلی برای نوشتن نرم افزار سیستمهای عامل وشبکه های کامپیوتری و برنامه های کاربردی مشتری –خدمتگزار شده اند . سیستمهای عامل رایج امروزی نظیر یونیکس، سیستمهای مبتنی بر ویندوز مایکروسافت و OS/2 آی بی ام قابلیتهایی را که در این بخش مطرح شده اند دارا هستند .
زبان ماشین ، زبان اسمبلی و زبان سطح بالا
برنامه نویسان، دستورالعملها را به زبانهای برنامه نویسی گوناگونی می نویسند. برخی از این زبانها مستقیماً برای کامپیوتر قابل فهمند و برخی دیگر نیاز به مراحل میانی ترجمه دارند. امروزه از صدها زبان کامپیوتری استفاده می شود که می توان آنها را به سه نوع کلی زیر تقسیم کرد:
1-زبانهای ماشین 2-زبانهای اسمبلی 3-زبانهای سطح بالا
کامپیوترها تنهامی توانند زبان ماشین مربوط به خودشان را مستقیماً درک کنند. زبان ماشین ، ((زبان طبیعی)) کامپیوتر است و توسط طراحی سخت افزار آن کامپیوتر تعریف می شود . برنامه های به زبان ماشین به طور کلی شامل رشته هایی از اعداد (که نهایتاً تبدیل به 1و0 می شوند ) هستند که به کامپیوتر دستور اجرای ابتدایی ترین اعمال را یکی پس از دیگری می دهند. زبانهای ماشین وابسته به ماشین هستند ؛ یعنی یک زبان ماشین خاص، تنها می تواند روی یک نوع کامپیوتر مورد استفاده قرار گیرد. همان طور که در قطعه برنامه زیر دیده می شود کار با زبان ماشین برای انسانها دشوار است. قطعه برنامة زیر اضافه پرداخت را با حقوق پایه جمع می کند و نتیجه را در حقوق کل ذخیره می کند .
+1300042774
+1400593419
+1200274027
با رواج بیشتر کامپیوتر، معلوم شد که برنامه نویسی به زبان ماشین بسیار آهسته و برای بیشتر برنامه نویسان کار بسیار پرمشقتی است .از این رو برنامه نویسان به جای کار با رشته هایی از اعداد که کامپیوترها مستقیماً آنها را درک می کنند، شروع به استفاده از مخففهای انگلیسی گونه ای که بیانگر اعمال ابتدایی کامپیوتر نمودند. این مخففها اساس زبان اسمبلی را تشکیل داد . در پی آن برنامه های مترجمی به نام اسمبلر ایجاد شدند تا برنامه های اسمبلی را به سرعت به زبان ماشین تبدیل کنند. قطعه برنامة اسمبلی زیر نیز اضافه پرداخت را با حقوق پایه جمع می کند و نتیجه را در حقوق کل ذخیره می کند. ولی این کار را واضحتر از معادل زبان ماشین آن انجام می دهد :
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
گرچه این کد برای انسان واضحتر است ولی تا به زبان ماشین ترجمه نشود برای کامپیوتر نامفهوم است. با ابداع زبان اسمبلی، میزان
لینک دانلود و خرید پایین توضیحات
فرمت فایل word و قابل ویرایش و پرینت
تعداد صفحات: 25
توابع :
دربرنامه های طولانی وپیچیده که شامل چندین بخش منطقی ومستقل از هم هستند ، بهتر است برای هرقسمت منطقی ، برنامه جداگانه ای نوشته شود .
برنامه هایی که برای هر یک از بخش نوشته می شود ، تابع نام دارد درواقع تابع ، برنامه ای است که برای حل بخشی از مسئله نوشته می شود .
توابع کتابخانه ای :
تعدادی از توابع که دراغلب برنامه ها مورد استفاده قرارمی گیرند و کاربرد زیادی دارند ، از قبل نوشته شده ، به همراه کامپایلر C++ ارائه می شوند که به آنهاتوابع کتابخانه ای گویند مثل تابع clrsc() که صفحه نمایش را پاک می کند .
برحسب ضرورت می توان توابعی را بنویسید ودر برنامه مورد استفاده قرار داد .
بااستفاده از توابع می توان برنامه های ساخت یافته نوشت وظایف این نوع برنامه ها توسط بخش های مستقلی که تشکیل دهنده برنامه اند انجام می شود .
این بخش ها ی مستقل همان توابع هستند امتیازات برنامه نویسی ساخت یافته عبارتند از 1- نوشتن برنامه های ساخت یافته آسان است 2- همکاری بین افراد رافراهم می کند 3- اشکال زدایی برنامه های ساخت یافته ساده تر است 4- برنامه نویس ساخت یافته موجب صرفه جویی در وقت می شود .
نوشتن تابع
برای نوشتن تابع باید اهداف تابع مشخص باشد تابع چه وظیفه ای به عهده دارد ،ورودی های تابع چیست ، وخروجی های تابع کدامند با دانستن این موارد نوشتن تابع چندان دشوار نیست .
هر تابع دارای سه جنبه است ،1- جنبه تعریف تابع : که مجموع ای از دستورات است که عملکرد تابع را مشخص می کند 2- جنبه فراخوانی تابع دستوری است که تابع را فراخوانی می کندفراخوانی تابع بانام آن انجام می شود 3- جنبه اعلان .
نکاتی درمورد نوشتن تابع :
1- ابتدا بدون پرداختن به جزئیات پیاده سازی توابع ، آرگومانها ونتیجه ای را که ازتابع انتظار دارید ،مشخص کرده ،برنامه اصلی را بنویسید به عبارت دیگر درقدم اول لازم نیست با جزئیات پیاده سازی تابع بپردازید پس ازنوشتن برنامه اصلی ، توابع دیگر را بنویسید 2- توابع را طوری طراحی وپیاده سازی کنید که هرتابع فقط به آنچه که نیاز دارد دسترسی داشته باشد وبقیه قسمتهای برنامه وسایر اطلاعات توسط توابع غیرمرتبط قابل دستیابی نباشد این موضوع را پنهان سازی اطلاعات گویند برای این منظور ، هرتابع باید یک نقطه ورود ویک نقطه خروج داشته باشد .
3- برای ارتباط بین توابع ، ازآرگومان ها وپارامترها استفاده کنید .
چگونگی کار تابع :
وقتی تابعی ،توسط تابع دیگری فراخوانی می شود ، دستورات آن تابع اجرا می شوند پس از اجرای دستورات تابع ،کنترل اجرای برنامه ، به برنامه فراخوانی بر می گردد ، پس ازبرگشت ازتابع فراخوانی شده ، اولین دستور بعداز فراخوانی تابع ( درتابع فراخوانی ) اجرامی شود .
روش های ارسال پارامترها به توابع :
پارامترها را به دوطریق می توان ازتابع فراخوانی شونده ارسال کرد . این دوروش عبارت اند از 1- روش فراخوانی بامقدار 2- روش فراخوانی با ارجاع .
روش فراخوانی ، تعداد مقادیری رامشخص می کندکه توابع فراخوانی شونده می توانند بر گردانند در روش فراخوانی بامقدار ، دو دسته توابع می توانند وجود داشته باشد 1- توابعی که هیچ مقداری رابر نمی گردانند 2- توابعی که فقط یک مقدار را برمی گردانند اما در روش فراخوانی باارجاع توابع می توانند چندین مقدار را به تابع فراخوان برگردانند .
توابعی که هیچ مقداری را برنمی گردانند :
ممکن است در برنامه ای
توابعی که هیچ مقداری را بر نمی گردانند
ممکن است دربرنامه از توابعی استفاده کنیم که آن توابع پس از فراخوانی ، عملیات مورد نظر را انجام دهند و خروجی های مورد انتظار راتولید وچاپ نمایند وهیچ مقداری را به تابع فراخوان تحویل ندهند . دربسیاری از مسئله هایی که با کامپیوتر حل می شوند ، این گونه توابع به چشم می خورند .
توابعی که یک مقدار را بر می گردانند
در بسیاری از مسئله هایی که توسط کامپیوتر حل می شوند ، نیاز به نوشتن توابعی است که یک مقدار را بر می گردانند .
مثل تابع Sin () که سینوس یک زاویه رابر می گرداند . اینگونه ، توابع کاربردهای فراوانی دارند . برای نوشتن اینگونه توابع ، نوع آنها رابا ید در الگوی تابع وعنوان تابع مشخص کرد برای برگرداندن مقداری توسط تابع ، ازدستور return به صورت های زیر استفاده میشود :
،(> عبارت <) return
؛ >عبارت< return
تفاوتی بین دورش کاربرد return وجودندارد مقداری که توسط دستور returnبرگشت داده می شود درنام تابع قرارمی گیرددربرنامه فراخوان ، می توان نام تابع را به متغیری نسبت داد وازمحتویات آن استفاده کرد. به عنوان مثال اگر ، f1() یک تابع از نوع x,int متغیری از نوع int باشد ، دستورزیر ، تابع f1() رافراخوانی کرده ، مقداری را که توسط دستور return در نام تابع قرارمی گیرد ، در x قرار می دهد .
بازگشتی
بازگشتی به مفهومی گفته می شود که در آن ، تابعی خودش را فراخوانی می کند . توابع می توانند به طور مستقیم یا غیر مستقیم خودشان رافراخوانی کنند . درروش مستقیم ، یکی ازدستورات تابع ، فراخوانی خودش است در روش غیر مستقیم ، تابعی مثل f1() تابع f2() رافراخوانی می کند وتابع f2() نیز به نوبه خود تابع f1() را فرا خوانی می نماید برای ایجاد بازگشتی ، الگوریتمی که توسط تابع پیاده سازی می شود ، باید خصوصیت بازگشتی داشته باشد .
طرح کلی الگوریتم های بازگشتی به صورت زیر است :
یک یا چند حالت ، که در آن ، تابع وظیفه خودش را به صورت بازگشتی انجام می دهد . یعنی این حالت ها خاصیت بازگشتنی دارند .
یک یا چندحالت که در آن ، تابع وظیفه خودش را بدون فراخوانی بازگشتنی انجام می دهد . این حالت را حالت توقف گویند .
اغلب با استفاده از یک دستور if مشخص می شود که کدام یک از این حالت ها باید انجام شوندبرای این که فراخوانی های بازگشتی به اتمام برسد . باید حالت توقف اتفاق بیفتد . یعنی
این پروژه سورس کامل پروژه انبارداری به زبان سی شارپ می باشد. توجه کنید که این پروژه در حد پروژه های دانشجویی است و ظبیعتا برای تبدیل شدن به پروژه تجاری باید روی آن وقت بیشتری بگذارید.