صفحه 1:
فصل ۱
لكيييتمها Algorithm
هدفهاي كلي
كل مسئله و ارائه الگوریتم
شناخت اجزاء لازم برای حل ه ale
بررسی صحت الگوریتم
صفحه 2:
:دانشجو يس از مطالعه اين فصل بايد بتواند
8 الگوریتمی را برای حل مسئله ارائه دهد.
a الگوریتم های مختلف بای یک مسئله را مقایسه کند.
. شرط ها و حلقه ها را در الگوریتم بکار ببرد a
صفحه 3:
در زندگی روزمره. انسان با مسائل مختلفی روبروست و برای هر کدام
از این مسائل (حل مشکلات) راه حلی و روشی را بر میگزیند.
مسائلی از قبیل راه رفتن. غذا خوردن. خوابیدن و غیره که بشر تقریباً
هر روز آنها را پیش روی خود دارد.
همه این مسائل نیاز به روشی برای حل کردن دارند مثلا راه رفتن باید
با ترتیب خاصی و مراحل معینی انجام شود. تا مسئله راه رفتن بیای
بشر حل شود. اصطلاحا روش انجام کار یا حل مسئله را الكوريتم ان
مسئله مینامند
صفحه 4:
* تعریف الگوریتم
الگوریتم مجموعهای از دستورالعمل ها. برای حل مسئله میباشد که
شرایط زیر را باید دارا باشد:
* دقیق باشد
* جزئیات کامل حل مسئله را داشته باشد.
“بايا يذير باشد.
صفحه 5:
مراحل الكوريتم **
براى حل یک مست آن
مسئله باید الگوریتم آن مسئله را مشب :
98 حا طراحی الگوریتم براى أن مسئله و سا سس ۱
١ - يده مى شود. د
ریتم معمولا سه مرحله زیر را از هم جدا میکنند: اق
*خواندن دادهها
۴انجام محاسبات
*خروجیها
صفحه 6:
0 شروع
۵-۱, ۲ را بخوان.
۲-مجموع 2 , 0 را محاسبه و در 51110 قرار بده.
۳- 91110 را در خروجی جاب كن
۴- پایان
صفحه 7:
شروع
١ سه عدد از ورودى بخوان
۲- مجموع dw عدد را محاسبه و در 5111311 قرار بده.
۳- 91110 را بر سه تقسیم کرده.در 2۷6 قرار بده.
*- 51117 , 2۷6 را در خروجی oe کن.
و بان
صفحه 8:
وت ری Be
*علامتهای شروع و پایان: که معمولا از یک بیضی استفاده میکنند:
*علامتهای ورودی و خروجی: که معمولا از متوازیالاضلاع استفاده میشود:
صفحه 9:
جایگزین یا
محاسبات
*علامت شرط: برای نمایش شرط از لوزی استفاده میشود.
*علامت اتصال: برای اتصال شکلهای مختلف بهم از فلشهای
جهتدار استفاده میکنند.
صفحه 10:
* فلوچارت مجموع سه عدد
9
Read(a,b,c)
Sum < atb+c
Ave < sum/3
3 Write(sum,ave) 2
End)
هته
صفحه 11:
جارتى رسم نمائيد كه دو عا ودی دریاا سپس
محتویات دو عدد را با هم جابجا نماید.
راى حل اين مسئله 2 , 0 را دو متغیر که در آنها دو عدد خوانده شده.
فرار می گیرند در نظر میگیریم. سپس با استفاده از یک متفیر کمکی
محتويات اين دو عدد را جابجا مى كنيم :
صفحه 12:
9 emp
صفحه 13:
صفحه 14:
EE EE EEE EE موممئي
** تمرين
١ فلوجارتى رسم نمائيد كه طول و عرض مستطيل را از ورودى دريافت
كوه امنصط بو عسات آلر| مساسيهى حاب iS
۲- فلوچارتی رسم نمائید که شعاع دایرهای را از ورودی دریافت کرده.
محيط و مساحت انرا محاسبه و جاب نماید.
فلوجارتى رسم كنيد كه سه عدد :2151 ,56601201 , 111130 را از و
بافت كرده. محتويات انها را جابجا نموده. حاصل را در خروجى
ع كيد
صفحه 15:
6- فلوجارتی رسم نمائید که دو عدد از ورودی دریافت کرده. سپس
BSS gloss pasha Sealy yaw yas gL se
۵- فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد)
را از ورودى دریافت کرده سپس آنرا به درجه فارنهایت تبدیل کند.
صفحه 16:
:ی
دستورالعملهاي شرطي **
در حل بسیاری از مسائل یا ت تقریباً تمام مسائل نیاز به استفاده از شروط
جزء نیازهای اساسی محسوب میشود. همانطور که ما خودمان در
زندگی روزمره با این شرطها سرکار داریم. بطور مثال اگر هوا ابری
باشد ممکن است چنین سخن بكوييم:
اگر هوا بارانی باشد سپس چتری برمیدارم.
در غیر اینصورت چتر برنمیدارم.
صفحه 17:
NO
عمل يا اعمال بعدى
صفحه 18:
مثال : فلوچارتی رسم نمائید که عددی را از ورودی
زوج بودن آن را تشخیص دهد. in)
Write(‘odd’) ۳
صفحه 19:
صفحه 20:
min<— b سس و موس
No =
[ia | رون موي سس
و
صفحه 21:
صفحه 22:
ب ب ب <ج ب ب << 1۳11[
تمرين **
-١ فلوجارتى رسم كنيد كه عددى را از ورودى دريافت كرده. قدر مطلق
عدد را در خروجی چاپ AS
۲- فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده مثبت. منفی
یا صفر بودن عدد را تشخیص داده, در خروجی با پیغام مناسب
چا کت
۳- فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده. بخشپذیری
آن پر ۳ و ۵ را پررسی نماید.
فلوچارتی رسم نمائید که ضرایب یک معادله درجه دوم را از ورودی
دریافت کرده ریشههای آن را محاسبه در خروجی چاپ کند.
صفحه 23:
EEE EEE << << ">
fe bail
در حل بسیاری از مسائل با عملیاتی روبرو میشویم . که نیاز به تکرار
دارند و عمل تکرار آنها به تعداد مشخصی انجام میگیرد. فرض AES
بخواهیم ميانكين ۰ عدد را محاسبه کنیم. در اینصورت منطقی بنظر
نمیرسد که ۰ متغیر مختلف را از ورودی دریافت کنیم سپس آنها ر
حت ع
صفحه 24:
*حلقه های با تکرار مشخص
*؟حلقه های با تکرار نا مشخص
صفحه 25:
در اين نوع حلقهها تعداد تکرار مشخص میباشد این حلقه از اجزاء زیر
تشکیل میشود:
۱- اندیس حلقه
۲- مقدار اولیه برای انديس حلقه
۳- مقدار افزاینده براى انديس حلقه (معمولا یک واحد در هر مرحله)
4- مقدار نهایی (تعداد تکرا حلقه)
۵- شرطی برای کنترل تعداد تکرار حلقه
صفحه 26:
صفحه 27:
صفحه 28:
صفحه 29:
aie
1
هه ۰099
۶ |" ۵۵60
ه |o
>0 0 © © هو -
صفحه 30:
مثال : فلوجارتى رسم كنيد كه 2 عدد از ورودی دریافت کرده.
بزرگترین مقدار از بین 2 عدد را بيدا كيده در خروجى جاب نمايد.
انديس حلقه i
بزرگترین مقدار
Max
صفحه 31:
صفحه 32:
صفحه 33:
write(pow)
yes
pow <— pow*x (=)
حلقه
i< 1
صفحه 34:
۱ ۲
(در پاسکال به حلقه مقط مشهورند.)
ر این حلقهها با توجه به ورودی. تعداد تکرار مشخص میشود. و دقیقاً
نمی توان تعداد تکرار حلقه را بدون ورودی معین کرد. اين حلقه ها فقط
شامل شرطی هستند که تا زمانیکه برفرار باشد حلقه اجرا میشود.
صفحه 35:
No
محموعه دستورالعملها
و جاگزینها
صفحه 36:
مثال: فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده
سپس تعداد ارقام آن را شمرده در خروجی چاپ نماید.
؟عدد خوانده شده N
؟ تعداد ارقام count
صفحه 37:
Begin
count g 0
if N>0 then
yes
N <—Ndiv10
count < count+1
صفحه 38:
در حالت کلی جملات سری بصورت:
عدد خوانده شده
جمله اول سری
جمله دوم سری
جمله سوم سری
2 كل
025 a
صفحه 39:
صفحه 40:
EE << << ">
لل هه
are
فلوجارتی رسم نمائید که عددی از ورودی دریافت کرده. كامل بودن -۱
آنرا بررسى نماید. (عدد کامل. عددی است که مجموع مقسومعلیههای
آن با خودش برابر باشد.)
۲- فلوچارتی رسم کنید كه ا را از ورودی دریافت کرده ا جمله سری
فیبوناچی را تولید نماید.
۳ فلوچارتی رسم نمائید که دو عدد ]1۷ , لا را از ورودی خوانده.
بزرگترین مقسومعلیه مشترک دو عدد را محاسبه و چاپ کند.
صفحه 41:
6,
حلقههاي تودرتو *
الكوريتمهايى كه تا حال بكار برديم. فقط شامل یک حلقه بودند.
در صورتى كه در بسيارى از مسائل ممكن است نياز به استفاده از جند
حلقه در داخل هم باشيم. در اين نوع حلقهها باید دقت بیشتری به خرج
دهيم. تا مشکلی پیش نیاید. اگر از حلقههای نوع اول بصورت تودرتو
استفاده کنیم در اینصورت برای هر حلقه شرط نهایی و انديس اوليه
جداگانه باید تعریف کنیم .
صفحه 42:
مقدار نهایی خود تکرار میشود. در کل اگر حلقه اولیه 12 بار تکرار شود و
حلقه داخلی 321 بار. در ایتصورت کل حلقه :
nxm
بار تکرار خواهد شد.
صفحه 43:
صفحه 44:
=
سرى 59 محاسبه نماید:
x
للىيى... + ۳ وت
* اندیس حلقه اول 1
* وریدی لا
* محاسبه فاکتوریل fact
* انديس حلقه داخلى ل
* مجموع Sum
صفحه 45:
cn سپ
صفحه 46:
>" << ااا
تمرینات آخر فصل *
۱- فلوچارتی رسم نمائید که آل عدد از ورودی دریافت کرده تعداد
اعداد اول و کامل را شمرده در خروجی چاپ نماید.
- فلوچارتی رسم نمائید که 26 , ۷[ را از ورودی خوانده مقدار سری
یر را محاسبه کند:
Ss برچ شاد + +1- 5
صفحه 47:
ere 17 201ص
6 فلوجارتى رسم كنيد كه تاريخ تولد شخصى را از ورودى خوانده.
سن شخص را با تاريخ روزء محاسبه نموده در خروجى جاب كند.
۵- فلوچارتی رسم نمائيد که (10<10) ۷], لا را از ورودى دريافت
کرده سری فیبوناچی بین ]۷[, ۷[ را توليد كرده. در خروجى جاب كنا
صفحه 48:
کاربرد آرایه ها در الگوریتم ها
هدفهاي كلي
شناخت آرایه ها و مفهوم آن
شناخت الگوریتم های لازم برای جستجو و مرتب سازی
مقایسه انواع روش های جستجو با هم
صفحه 49:
:دانشجو يس از مطالعه اين فصل بايد بتواند
"ذا از آرایه ها در حل مسئله استفاده کند .
8 بااستفاده از ارایه ها لیستی را مرتب نماید .
در صورت لزوم در لیستی جستجو انجام دهد .
صفحه 50:
فرض کنید بخواهیم اطلاعات ۱۰۰ کارمند را از ورودی بخوانیم و
سپس آنها را مرتب کنیم. در اینصورت باید ورودیها در جایی از
حافظه ذخيره کنیم. در زبانهای برنامهنویسی معمولا از آرایه برای
ذخیره اطلاعات در حافظه استفاده میکنند. در آرایهها ما با توحه به
تعداد ورودیها. طول آن را مشخص میکنیم. سپس دادهها را خوانده در
آن قرار مى دهيم
صفحه 51:
EEE EEE << << ">
** تعريف آرايه
خانههای پشت سر هم از حافظه كه همنوع بوده و توسط يك اسم معرفى
میشوند. ارایه نام دارد.
نحوه دسترسی په هر یک از اعضاء آرایه از طریق اندیس آرایه امکانپذیر
است . برای تعریف آرایه ابتدا طول آرایه که در حقیقت تعداد خانههای آن
را مشخص میکند. معین میکنیم. سپس نوع خانهها باید معین شوند.
در فلوچارتها آرایهها را بصورت زير نمایش میدهیم:
Name[ 1 .. Length [
طول آرایه اسم آرايه
صفحه 52:
زير مى باشد:
a{1..100]
Read(ali])
10
صفحه 53:
Nam [ inde
انديس آرايه اسم آرايه
مثال: فلوجارتى رسم كنيد كه يى آرايه حداكثر ٠٠١ عنصری را از ورودی
دريافت كرده. سيس آن را خروجى نمايش دهد.
صفحه 54:
صفحه 55:
a[1..20]
i<1
ali] <— Nmod2 و و No
1 1 1ه 3
N <— Ndiv2
صفحه 56:
مثال : فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده سپس
اعداد اول قبل از آن را تولید نموده . در یک آرایه قرار دهد.
[2]1..100
1 حه 1
A Read(N) 7
|
ke
‘alt |< 2
a[2] <— 1
صفحه 57:
صفحه 58:
EEE EEE << << ">
( جد له اعد ) جستجو و مرتب سازي ی
یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث
مرتبسازی و جستجو میباشد. منظور از جستجو اینست که یک مقداری
را از یک لیست جستجو کنیم و منظور از مرتبسازی اینست که یک لیست
مرتب از دادهها را تولید کنیم.
برای جستجو و مرتبسازی الگوریتمهای مختلفی وجود دارد در زیر
الگوریتمهای اولیه. برای جستجو و مرتبسازی را بررسی میکنیم.
صفحه 59:
دو الگوریتم زير غالبا برای جستجو بکار میروند:
صفحه 60:
مين
نیب دوي
لین
با اولي
4
تر تیب
به
عبا جستجو را د
د >
زر
م
ات
7و
ىو
حستجو:
mae
شد
بيدا
جستحو )=
>>
مود
عنصر
Lie
می سب
يسه
مقاد
يه
آراب
عنصر
9
میدهیم,
oo
ales
آن را
اندیس
صفحه 61:
Read(x)
if (i<=N) and
(flag=0)
صفحه 62:
در جستجوی دودوئی . لیست مورد جستجو مرتب میباشد. لذا برای
جستجو اعمال زیر انجام میشود:
۱- عنصر ۲ با عنصر وسط آرايه كه انديس آن برابر
middle (low+high)/2
مقایسه میشود.
صفحه 63:
tol 9 1
8 559 3 0 د ۱
ليست قرار دارد. لذا آرايه با انديسء جد يد در نظ ر كرفته
میشود و قسمت پایین لیست از فضاى جستجو حذف مىشود.
السك اذى
۳-اگر 2 از عنصر وسط آرایه بزرگتر باشد قسمت بالای لیست حذف
میشود و فضای جستجو, قسمت پایین آرایه خواهد بود.
۶- اگر 2 برابر عنصر وسط باشد عمل جستجو خاتمه میپذیرد.
صفحه 64:
مرتبسازی بحث بعدی این فصل میباشد. برای مرتب کردن دادهها نیز
/ -
الگوریتمهای مختلفی وجود دارد. که هر کدام مزایا و معایب خاص خود
را دارد. بحث مقصل در این مورد را به فصلهای بعد واگذار میکنيم.
صفحه 65:
EE EE EEE EE موممئي
** تمرین
*فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده اعداد کامل
قبل از خود را تولید و در یک آرایه قرار دهد.
*فلوچارتی رسم نمائید که یک آرایه حداکثر ۱۰۰ عنصری از ورودی
دریافت کرده عناصری از آن که اول هستند را با صفر کردن حذف نماید.
*فلوچارتی رسم نمائید که یک عدد حداکثر ۲۰ رقمی را توسط آرایهای
از ورودی دریافت نماید. سپس یک عدد تک رقمی را از ورودی خوانده
در عدد ۲۰ رقمی ضرب نموده, حاصل را در خروجی چاپ نماید.
صفحه 66:
هدفهاي كلي
شناخت كامبيوترهاى نسل قديم و امروزى
شناخت سختافزارهای لازم برای کامپیوترهای شخصی
بررسی نرمافزارها و انواع آن
صفحه 67:
:دانشجو پس از مطالعه این فصل بايد بتواند
کامپیوترهای نسل جدید را با کامپیوترهای نسل قدیم مقایسه کند.
سختافزارهای لازم برای کامپیوترهای شخصی را بشناسد.
انواع حافظه مزایا و معایب آنها را شناخته و با هم مقایسه نماید.
سیستم عامل و انواع آن را مقایسه نماید.
نرمافزار و زبانهای برنامهنویسی را تعریف AS
صفحه 68:
EE << << ">
* کامپیوترهای قدیمی
اولین کامپیوتر بزرگ aoe (Super Computer) منظوره
دیجیتال
الکترونیک. تحت عنوان ۳1/67 در سال ۱۹۶۲ میلادی در
دانشگاه ينسيلوانيا ساخته شد. اين کامپیوتر با سرمایه ارتش آمریکا
طراحی شد. وزن این کامپیوتر ۳۰ تن و ابعاد آن ۳۰-۵۰ فوت بود.
این کامپیوتر برای محاسبه جدول پرتابهها؛ پیشگویی وضع آب و هوا
و محاسبات انرژی اتمی بکار میرفت.
سو
صفحه 69:
در کامپیوترهای اولیه از لامپهای خلاء بعنوان عنصر الکترونیکی پایه
استفاده میکردند. در این ماشینها ۱۹۰۰۰ لامپ خلاء استفاده شده
بود و برای انرژی مصرفی لامپها و همچنین دستگاههای تهویه و
انرژی الکتریکی مصرف 1960 رروا خنک کننده ماشین حدود
میشد. این ماشینها دارای حجم زیادی بودند و سطحی را معادل
۵ مترمربع اشغال میکردند. این کامپیوترها به کامپیوترهای نسل
ول معزورف تن
صفحه 70:
کامپیوترهای امروزی با بکارگیری ریزپردازنده به کامپیوترهای
نسل چهارم معروفند. البته نسلهای جدید دیگر کامپیوترها نیز
«به بازار ارائه میشود
در کامپیوترهای امروزی سرعت پردازش We shes
اجزاء سختافزاری بسیار کوچک. حجم حافظه بالا و غییه
.آنها را از نسل های دیگر متمایز میسازد
صفحه 71:
: اجزاء تشکیل دهنده کامپیوتر عبار تند از
* سخت افزار
3 نرم افزار
صفحه 72:
Input
ورود
صفحه 73:
کامپیوترهای امروزی معمولا از قطعات زیر تشکیل میشوند
دستگاههای ورودی
حافظههای جانبی
حافظههای اصلی
واحد پردازشگر مرکزی
دستگاههای خروجی
صفحه 74:
* فرم افزار
نرمافزار یکی از بخشهای اساسی کامپیوتر به شمار میآید. که در
واقع سختافزار را بکار میگیرد. بعبارت دیگر رابط بین کاربر و
سختافزار را نرمافزار مینامند. نرمافزار در حقیقت روح و جان یک
کامپیوتر است. که به سختافزار هویت میبخشد.
صفحه 75:
im ۰ عامل (COG: Opercity Gystew) مشهورترین نوع
نرمافزارهای سیستمی میباشد. که مدیریت منابع سیستمی را بر
عهده دارد. سیستمعامل, همچنین ارتباط بين كاربر و اجزاء
سختافزاری و نرمافزاری دیگر را برقرار میکند.
صفحه 76:
صفحه 77:
EEE EEE << << ">
زبانهاي بر نامهنويسي *
نرمافزارها توسط زبانهای برنامهنویسی نوشته میشوند. زبانهای
برنامهنویسی یک سیستم ارتباطی هستند که توسط آنها میتوان
.دستورات لازم را به ماشین انتقال داد
هرزبان برنامهنويسى به مجموعهأى از علايم؛ قواعد و
دستورالعملها كفته مىشود كه امكان ارتباط با كامييوتر را جهت
بیان کاری یا حل مسئلهای فراهم میکند
صفحه 78:
صفحه 79:
كامبايلر برنامه نوشته در يك زبان سطح بالا را به برنامه مقصد تبديل
رسو
Source
program
صفحه 80:
Pascal gb;
# در این کتاب زبان پاسکال os 5 Sie! cle (Pascal)
برنامهها انتخاب کردیم. اين زبان که به افتخار بلز پاسکال دانشمند
فرانسوی قرن هفدهم میلادی. پاسکال نامگذاری شده است. در اواخر
سال ۱۹۱۰ و اوایل ۱۹۷۰ توسط پروفسور نیکلاس ویژت در انستیتو
فنی فدرال سوئیس مطرح گردید