تبلیغات
وبلاگ انجمن علوم کامپیوتر دانشگاه پیام نور فریمان - آموزش برنامه نویسی پاسکال 1
 
وبلاگ انجمن علوم کامپیوتر دانشگاه پیام نور فریمان
اصول برنامه نویسی

الگوریتم
مجموعه ای از دستورالعمل ها كه به صورت محدود و پایان پذیر است و اگر بصورت متوالی دنبال شود موجب انجام كار خاصی می گردد
.
شرایط و معیارالگورتیم
1. ورودی( می تواند چند ورودی داشته باشد یا هیچ ورودی را از محیط خارج تامین نكند
. )
2.
خروجی (حداقل یك كمیت به عنوان هدف و نتیجه الگوریتم به خروجی برگزدانده می شوند
. )
3.
قطعیت (واضح و بی ابهام باشد
. )
4.
محدودیت ( بالاخره باید الگوریتم پایان یابد و برای تمام حالات عملی انجام گیرد و بازتابی داشته باشد
. )
5.
كارآیی ( هر دستورالعمل باید انجام پذیر باشد
. )
نكته : در علم كامپیوتر باید بین یك الگوریتم و یك برنامه تفاوت قائل شد، بعنوان مثال سیستم عامل برنامه ایست كه هیچ گاه پایان نمی پذیرد در صورتیكه شرط الگوریتم پایان پذیریست
.
نكته : یك الگوریتم را به شیوه های مختلف می توان بیان كرد و برای هر مساله می توان الگوریتم های متفاوتی نوشت
.
نوع داده مجرد
ADT (abstract data type)
یك نوع داده مجرد مفهوم مجردیست كه با مجموعه ای از خواص منطقی تعریف شده است . بعد از تعریف این نوع داده مجرد، باید اعمال مربوط به آن را مشخص گردد و می توان آن نوعِ داده را پیاده سازی كرد
.
یك پیاده سازی نرم افزاری شامل ویژگی های چگونگی نمایش یك نوع داده جدید بر اساس داده های موجود است، به عبارت دیگر نوع داده مجموعه ای از انواع داده مقصد) ( object وعملكرد هایی است كه بر روی این نوع داده ها عمل می كنند
.
توابع یك نوع داده مجرد را به چند گروه تقسیم می كنند
:
1.
ایجاد كننده یا سازنده ( این توابع نمونه جدیدی از نوع تعیین شده ایجاد می كند
. )
2.
تبدیل كننده ( این توابع با استفاده از یك یا چند نمونه دیگر نمونه تعیین شده را ایجاد می كند
. )
3.
مشاهده كننده یا گزارش دهنده ( اطلاعاتی را راجع به یك نمونه از نوع داده را ارائه می دهد
. )
بررسی نحوه اجرای یك برنامه
عواملی چون :برآورده شدنِ اهداف اصلی برنامه، صدق كردن تمام مقادیر، مستند سازی برنامه، ایجاد واحدهای منطقی، استفاده موثر از توابع، خوانا بودن كد ها ی برنامه، استفاده موثر برنامه از حافظه ها ی اصلی و كمكی، زمان اجرای برنامه و ... در ارزیابی برنامه موثرند
.
تعیین تخمین های حافظه و زمان مورد نیاز را تحلیل نحوه اجرای برنامه می نامند
.
پیچیدگی فضای لازم
فضای مورد نیاز یك برنامه شامل موارد زیر است
:
1.
نیازمندیهای فضای ثابت
2. نیازمندیهای فضای متغیر
می توانیم نیازمندیهای فضای كل را بصورت مجموع نیازمندیهای فضای ثابت و متغیر بیان كنیم
.
پیچیدگی زمان
میزان یا پیچیدگی زمان یك برنامه مقدار زمانی است كه كامپیوتر برای اجرای كامل برنامه نیاز دارد . این زمان شامل مجموع زمان كامپایل و زمان اجرای برنامه است البته از آنجا كه برنامه بعد از كامپایل اول دیگر نیازی به كامپایل مجدد ندارد و می توانیم چندین بار بدون كامپایل آنرا اجرا كنیم، زمان مهم برای ما زمان اجرای برنامه است
.
چرخه زندگی سیستم ( شیوه توسعه نرم افزار
)
این چرخه شامل موارد زیر است
:
1.
تعین نیاز های مسئله
:
نیازها دو دسته اند : دسته اول نیازمندیهای عملیاتی سیستم كه در واقع كاربر با آن سرو كار دارد و دسته دوم نیازمندی های غیر عملیاتی هستند كه این نیازمندیها محدودیت ها و استانداردها ی سیستم را مشخص می كنند
.
2.
تحلیل مساله
:
در تحلیل دو شیوه موجود است : شیوه از پایین به بالا ((bottom up و شیوه از بالا به پایین
((top down
در شیوه از پایین به بالا ما ابتدا كل برنامه را در نظر گرفته و بعد به ریشه ها و قسمت ها ی مختلف می پردازیم . این روش قدیمی و غیر ساخت یافته است اما در شیوه از بالا به پایین ما برنامه را به قسمت های قابل كنترل تقسیم می كنیم و در نهایت به برنامه اصلی دست پیدا می كنیم
.
3.
طراحی الگوریتم برای حل مساله
:
در این مرحله، طراح سیستم را هم از نقطه نظر داده های مقصود مورد نیاز برنامه و هم از نظراعمالی كه بر روی انها انجام می گیرد، بررسی می كند. از آنجایی كه نوع داده مجرد و مشخصات الگوریتم ها مستقل از زبان هستند لذا جزئیات برنامه نویسی را نادیده می گیریم
.
4.
پیاده سازی الگوریتم
:
در این مرحله الگوریتم توسعه می یابد و بر طبق زبان انتخاب شده الگوریتم پیاده سازی می شود
.
5.
بازبینی، بررسی و آزمایش برنامه كامل شده
:
در این مرحله برنامه ها با انواع داده های ورودی مختلف آزمایش و خطا های مختلف رفع می شوند، جنبه های مختلف در این زمینه عبارتند از : اثبات درستی، آزمایش درستی و خطا زدایی
.
نكته : باید توجه داشت كه برنامه بدون خطایی كه سرعت پایینی دارد از ارزش كمی برخوردار است
.
6.
پشتیبانی و به روز رسانی برنامه
:
این بخش طولانی ترین دوره شیوه توشعه نرم افزار است . دراین مرحله برنامه وابسته به نیازهای جدید یا تغییر نیازهای قدیم یا بروز اشتباهات مختلف و ... به روز رسانی یا اصلاح می شود
.
نكته : سه مرحله اول توسعه نرم افزار یعنی نیازمندیها، تحلیل مساله و طراحی الگوریتم، به عهده تحلیلگران سیستم است و برنامه نویس مرحله چهارم را به عنوان نوعی كتابدار انجام می دهد . در اصطلاح برنامه نویسی به دو مرحله آغازی تحلیل و به مراحل سه و چهار تركیب گفته می شود
.
بعضی از الگو های توسعه نرم افزار
:
1.
روش آبشاری
:
در این روش پس از تعریف هر مرحله توسعه نرم افزار به سمت مرحله بعدی پیش می رود
.
2.
برنامه نویسی اكتشافی
:
دراین روش در حداقل زمان ممكن سیستمی ایجاد می شود و سپس اصطلاحات لازم در آن بوجود می آید، تا عمل مورد نظر را به درستی انجام دهد . این روش معمولا در توسعه سیستم های هوش مصنوعی كه كاربران نمی توانند نیاز های مشروح را بطور دقیق بیان كنند و كفایت به جای صحت هدف اصلی طراحان سیستم است بكار می رود
.
طراحی شئ گرا
:
ازآنجا كه پنهان سازی اطلاعات یك استراتژی طراحی است كه در آن اطلاعات تا آنجایی كه ممكن است در داخل قطعات سیستم مخفی می شوند ، طراحی شئ گرا نیز بر مبنای پنهان سازی اطلاعات است ، در روش شئ گرا سیستم به صورت مجموعه ای از اشیا یا حالت اختصاصی خود در نظر گرفته می شود
.
ویژگی های طراحی شی گرا
:
1.
ناحیه مشترك داده ها حذف می شوند و اشیا به جای استفاده از متغیر های عمومی و مشترك با تبادل پیام ها با یكدیگر ارتباط برقرار می كنند . این كار هم باعث سهولت در اصلاحات و هم كاهش اتصال كل سیستم می شود
.
2.
اشیا نهادهای مستقلی هستند كه به راحتی قابل تغییرند زیرا تمام حالت ها و اطلاعات در داخل خود شئ پنهان شده است و اشیا دیگر چه از روی عمد و چه تصادفی به اطلاعات یك شی نمی توانند دست یابند و تغییر در یك شی بدون مراجعه به اشیای دیگر صورت می گیرد
.
3.
اشیا ممكن است توزیع شده باشند و می توانند بصورت ترتیبی یا موازی اجرا شوند
.
امتیازات روش طراحی شئ گرا
:
1.
به دلیل مستقل بودن اشیا نگهداری سیستم آسانتر است ، می توان اشیا را جداگانه اصلاح كرد و افزودن یا حذف یك شی تغییری در سایر اشیا سیستم نخواهد داشت
.
2.
اشیا قطعات مناسبی هستند كه می توانند مجددا مورد استفاده قرار گیرند
.
3.
برای دسته ای از سیستم ها نگاشت روشنی بین نهاد های دنیای واقعی ( مثل قطعات سخت افزاری ) و اشیای كنترل كننده آنها در سیستم وجود دارد این موضوع درك سیستم را بالا می برد
.
طراحی تابعی
:
طراحی تابعی روشی برای انجام طراحی نرم افزار است ، در آن طراحی به مجموعه ای از واحدهای متاثر به هم تجزیه می شود كه هر كدام وظیفه خاصی دارند در واقع طراحی تابعی مكمل تكنیك طراحی شی گراست . یك روش طراحی تابعی طراحی ساخت یافته است، این روش با استفاده از نمودارهای جریان داده ها پردازش داده ای منطقی را توصیف می كند
.
استراتژی طراحی تابعی بر تجزیه سیستم به مجموعه ای از توابع متاثر به همه تكیه دارد كه حالت متمركز سیستم بین توابع مشترك است . طراحی تابعی جزییات الگوریتم را در یك تابع پنهان می كند اما اطلاعات حالات سیستم مخفی نیست، این كار ممكن است موجب مشكلاتی گردد زیرا یك تابع می تواند این حالت را طوری تغییر دهد كه سایر توابع انتظارش را ندارند . این روش زمانی موفق است كه میزان اطلاعاتی حالت سیستم اندك باشد و از اشتراك داده ها جلوگیری گردد . بعضی از سیستم هایی كه واكنش های آنها وابسته به یك محرك یا ورودی است و متاثر از ورودی های قبلی نیست ، ماهیت تابعی دارند.

تفاوت‌هایی بین برنامه نویسی و الگوریتم هست به عنوان مثال یك الگوریتم الزاما باید پایان پذیر باشه ولی یه برنامه میتونه تموم نشه و در رم سیستم باشه از سایر تفاوت‌ها میشه به این مطلب اشاره كرد كه خوب ما الگوریتم رو به صورت زبان معمولی و یه سری از علائم مینویسیم كه میتونن منحصر به فرد نباشن و از یك نفر تا نفر دیگه شیوه‌ی نگاشت الگوریتم فرق كنه حتی زبانی كه مینویسیمش(انگلیسی ، فارسی و......) ولی در برنامه نویسی با یك سری دستورات و ساختارهای كه منحصر به فردی این نوشته‌هامون رو شبیه‌سازی میكنیم به شكلی كه این دستگاه احمق و بیشعور و نفهم بتونه هرچی كه ما میخوایم برامون اجرا كنه

آخه كامپیوتر خیلی خره اصلا عقل و شعور نداره ولی توان محاسباتیه بالایی داره این ما برنامه نویسا هستیم كه باید این توانایی رو در جهتی كه ما میخوایم استفاده كنیم صوق بدیم و حالیش كنیم چیكار باید برامون بكنه پس عملی كه ما در برنامه نویسی انجام میدیم فقط شبیه‌سازی و تبدیل اون الگوریتم به یك ساختار ثابت ، و منحصر به فرد هستش

خب یكم اطلاعات عمومی در مورد زبان‌های برنامه نویسی بدم كه گنگ نباشید نسبت به لغات

زبان‌های برنامه نویسی خودشون دسته بندی میشن

1.زبان ماشین نزدیك ترین زبان به سخت افزار زبان ماشین هستش كه شبیه سازی ما در این زبان به صورت دستوراتی دودویی یا باینری هستن كه فقط میتونن شامل 0 و 1 باشن خب این زبان از سرعت اجرای زیادی برخورداره ولی نوشتن اون و حفظ كردن ساختار برنامه نویسی خیلی پیچیده هست و نمیشه حفظش كرد به همین دلیل تولید كنندگان زبان به فكر بهینه كردن برنامه نویسی افتادن

2.زبان اسمبلی: بعد از زبان ماشین این زبان در رتبه‌ی دوم از لحاظ نزدیكی به سخت افزار قرار داره سرعت اجرای بالایی داره برای نوشتن برنامه‌های كوچیك محاسباتی خیلی خوب بود ولی به محض گسترش برنامه نویسی به دلیل زیاد بودن كدهاش دقت كار پایین میومد و خطاهای زیادی توش رخ میداد

3. زبان‌های سخت یافته مثل پاسكال ، سی و...

این زبان‌ها كارایی بالایی داشتن چون همه چیز توشون ساخت یافته بود و برنامه نویسان برای مثلا چاپ روی صفحه فقط از یك دستور استفاده میكردن در واقع اصول برنامه نویسی بسیار زیبا شده بود و خود زبان به زبان محاوره‌ای نزدیك شده بود بنابراین فراگیری و حفظ كردنش ساده بود این زبان‌ه یك سری ساختار‌ها و كلمات ذخیره شده دارن كه میشه باهاشون برنامه نوشت

در سطح بندی زبان‌ها سی سطح دو در كنار اسمبلی قرار میگیره چون قابلیت كار با سخت افزارش بیشتر از پاسكال هست و از این باب قویتره

در حال حاضر بهترین زبان برای فراگیری برنامه نویسی همین پاسكال هست من كه روش سرمایه‌گذاری كردم خوب جواب داد برای شما هم همینطور خواهد بود

4-زبان‌های ویژوال(شیءگرا
)...........

در زبان‌های سخت یافته همه چیز برنامه نویسی خوب بود ولی خب اكثرا لازم بود كاربر یك دكمه رو بزنه نه اینكه یه فرمان وارد كنه تولید شیء در ساخت یافته‌ها چون تحت داس هم بودند سخت بودپس از این لحاظ با توسعه‌ی سیستم‌عامل ها مثل 95 و غیره این قسمت از برنامه نویسی هم كامل شد و زبان‌های شیءگرا به بازار اومدن مثل VB,VC,Delphi و كه علاوه بر ساخت یافته بودن شیءگرا هم بودن و تولید شی در اون‌ها خیلی ساده بود


درباره وبلاگ

وبلاگ انجمن علوم کامپیوتر دانشگاه پیام نور فریمان

ع :علم
ل: لیاقت
و :وقار
م : متانت

ک : کوشش
ا :ادب
م :مهارت
پ : پویندگی
ی : یکرنگی
و : ورزیدگی
ت :توانمندی
ر: راستگوی
!!!




مدیر وبلاگ : ارغوان جلال زاده
پیوندهای روزانه
جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :
p30java
ابزار وبلاگنویسان ابزار وبلاگنویسان