صفحه 1:
اصول کامپیوتر 4
الگوریتم» فلوچارت و برنامه
صفحه 2:
را
ای بر حور
ديا
صفحه 3:
٩ برگرفته از نام ابومحمد بن موسي الخوارزمي
- مولف کتاب الجبر و المقابله
٩ در کتب قديمي بیشتر براي "الگوریتم اقلیدس براي تعيين
بزرگترین مقسوم علیه مشتركك" بکار مي رفته است.
صفحه 4:
٩ الگوریتم اقلیدس: دو عدد طبيعي مب و ب داده شده است.
بزركترين مقسوم عليه مشترك اين دو را بيدا كنيد.
© بزركترين مقسوم عليه مشترك اعداد طبيعي مب و «» بزرگترین
عدد طبيعي است كه هر دوي ب و » بر آن بخشيذير باشند
© عدد طبيعي () بر عدد طبيعي !ا بخشيذير است اكرء باقيمانده
تقسيم () بر | صفر باشد
صفحه 5:
©» GC: [Ried rexvoieder] Ovide w by a ocd fet r be the
rewindter. (Oka, D <=r <= )
©» GO! [itis zer0?] Pr =O , the ckpriker terwicntes,
wis the wewer
اي لحم عر > و ره >> م GO: [Ioterchane] Get ©
| 6 مه ۰ buck
صفحه 6:
صفحه 7:
صفحه 8:
@ هر الگوریتم اسمي دارد.
- در الگوریتم اقلیدس, از GB بعنوان اسم استفاده کردیم.
- اسم الگوریتم مي تواند بیش از يك حرف داشته باشد.
© قدمهاي هر الگوریتم با اين اسم و شماره ترتیب قدم نمایش داده
مي شوند
- )و 26 و ....
- هر قدم عنوان كوتاهي دارد که بطور خلاصه بیانگرکارکرد آن قدم
است.مثل مس ل۳
صفحه 9:
٩ مفهوم عبارت ب > این است که مقدار فعلي مب با مقدار
موجود در ب جایگزین شود
1 > به عملگر انتساب معروف است
۱
- مثال براي افزودن مقدار » به اندازه يك واحد» از عبارت 0+ >
استفاده مي کنیم
- این عملگر خاصیت جابجايي ندارد. يعني ب > با ب>ب يكي
نیست!
- جهت این عملگر از راست به چپ است
صفحه 10:
© مفهوم عبارت (0)-, در قدم © اين است كه آيا عدد مم
برابر صفر است؟
< به عملگر تست شرط معروف است
۱
در برخي از زبانها مثل عععم) از علامت (<) براي انتساب و تست
شرط استفاده مي شود
وظیفه برنامه نویس است که کاربرد درست را استفاده کند
اغلب زبانهاي پراستفاده» علایم متفاوتي براي عملگر انتساب و تست
شرط استفاده مي کنند.
صفحه 11:
9 يك الگوریتم با دستوري که کوچکترین شماره را دارد» شروع
مي شود و اجراي دستورات به صورت ترتيبي ادامه مي یابد»
مگر اینکه اجراي دستوري خارج از اين ترتیب صریحا قید شود
- در الگوریتم قبلي اجراي الگوریتم از 00) شروع مي شود
- در قدم 90) در صورتي که 7-0 . اجراي الگوریتم پایان مي یابد
و دستور BO اجرا نمي شود
- در صورت اجراي دستور 90) اجراي الگوریتم از 90) ادامه مي یابد
© علامت ] براي نشان دادن پایان متن الگوریتم استفاده مي شود
صفحه 12:
© يك الكوريتم داراي سه نوع دستور است
- انتساب
Liga =
- يرش و تكرار
© الكوريتم اقليدس؛ هر سه نوع دستور را دارد
= قوقح شیور سک let فسمتور تون باه
ند
Lovelwe Oda bebe —
صفحه 13:
Lovee Oda
@rcpsta Oda Cer,
Oountess oP bovele
(Oev.dD, 1909 - On SP, (ESE),
bora @Ougueta Ode Oprea, & متف لفح
Por اه موه و مامت وم Okeles
ا ا
Olick to reed wore to wikipedia
صفحه 14:
# الگوریتمها معمولا تعدادي ورودي و حداقل يك خروجي دارند
© متغیرها براي نگهداري مقادیر مورد استفاده در الگوریتم
استفاده مي شوند
- ».ی و متغیرهايمورد لستفاده اسلگوریتم لقلیدسهستند
© براي نمایش متغيرهاي ساده» از حروف الفباي لاتین استفاده مي
شوند
- با استفاده از اندیس» متغيرهايي از جنس بردار و ماتریس را نیز مي
توان نشان داد
- وب نشاندهنده خانه اولبردار مب لست
صفحه 15:
٩ اجراي الگوریتم در هر صورت باید پاياني داشته باشد
- الگوریتم اقلیدس در هر بار اجراء مقادیر ب , سب کمتر مي شوند و
نهایتا به صفر خواهند رسید. بنابراین با اجراي COS الگوریتم
بالاخره پایان خواهد یافت
٩ تعریف دقیق: کار هر قدم الگوریتم باید به صورت نا مبهم و
دقیق تعریف شود
- از عباراتي استفاده کنید که مطمنن شوید خواننده معني دقیق آن را
مي فهمد
© تعريف دقيق ورودي و خروجي
صفحه 16:
شرایط يك الگوریتم-ادامه
9 كارايي: الگوریتم باید هوشمندانه طراحي شده و از راه حلهاي
كارا و قابل فهم براي انجاغ كاز هاي مورة نظر استفاده کل
- قدم اول الگوریتم اقلیدس را مي توان چنین نوشت:
GC: [Ried rewwoicder] Let r be w - 4. »©
٩ بديهي است که الگوریتم با این تغییر دوباره درست کار خواهد
كرد اما به دليل تكرار زياد عمل تفریق» الگوریتم كارايي سابق
را نخواهد داشت
صفحه 17:
شرایط يك الگوریتم-ادامه
© در عمل نه تنها به الكوريتم هاي يايان يذير نياز داريم؛ بلكه
الكوريتم هايي را مي يسنديم كه در زمان معقول يايان يابند
- الكوريتم هاي خوب مورد نظر ماست!
صفحه 18:
_ چگونه مقادیر دو متغیر ب و مارا با هم جابجا مي کنید؟
0 بدون استفاده از حافظه کمكي اینکار را انجام دهید
©. چهار متغیر (a,b,7,¢) داده شده اند. مقادیر این متغیر ها را
(bod) Go pe تغییر دهید. يعني:
4 مقدار جدید هب برابر با مقدار قبلي ما باشد
©. مقدار جدید ما برابر با مقدار قبلي مج باشد
©. مقدار جدید ع برابر با مقدار قبلي 4 باشد
مقدار جدید ل برابر با مقدار قبلي م باشد
6 اینکار را با حداقل جابجايي ممکن انجام دهید
اصول كامپيوتر 1
الگوريتم ،فلوچارت و برنامه
2
الگوريتم
الگوريتم :قدمهاي حل يك مساله
برگرفته از نام ابومحمد بن موسي الخوارزمي
–
مولف كتاب الجبر و المقابله
در كتب قديمي ،بيشتر براي “الگوريتم اقليدس براي تعيين
بزرگترين مقسوم عليه مشترك” بكار مي رفته است.
3
الگوريتم اقليدس
الگوريتم اقليدس :دو عدد طبيعي mو nداده شده است.
بزرگترين مقسوم عليه مشترك اين دو را پيدا كنيد.
بزرگترين مقسوم عليه مشترك اعداد طبيعي mو ،nبزرگترين
عدد طبيعي است كه هر دوي mو nبر آن بخشپذير باشند
عدد طبيعي Nبر عدد طبيعي kبخشپذير است اگر ،باقيمانده
تقسيم Nبر kصفر باشد
4
الگوريتم اقليدس
E1:
[find remainder] Divide m by n and let r be the
reminder.(Clearly, 0 <=r <=n )
E2:
[it is zero?] if r =0 , the algorithm terminates,
n is the answer
E3:
[Interchange] Set m n , n r and go
back to step E1 ▐
5
flowchart
E1:Find Remainder
E2:Is it zero
No
E3: Interchange
Yes
6
GW-Basic Program
10 r = m mod n
20 if r = 0 then print n : exit
30 m=n : n= r : goto 10
7
الگوريتم
هر الگوريتم اسمي دارد.
–
–
در الگوريتم اقليدس ،از Eبعنوان اسم استفاده كرديم.
اسم الگوريتم مي تواند بيش از يك حرف داشته باشد.
قدمهاي هر الگوريتم با اين اسم و شماره ترتيب قدم نمايش داده
مي شوند
–
–
8
E1و E2و ....
هر قدم عنوان كوتاهي دارد كه بطور خالصه بيانگركاركرد آن قدم
است.مثل find remainder
الگوريتم -عملگر انتساب
مفهوم عبارت m nاين است كه مقدار فعلي mبا مقدار
موجود در nجايگزين شود
به عملگر انتساب معروف است
Replacement, Assignment, Substitution
–
–
–
9
مثال براي افزودن مقدار nبه اندازه يك واحد ،از عبارت n n+1
استفاده مي كنيم
اين عملگر خاصيت جابجايي ندارد .يعني m nبا nmيكي
نيست!
جهت اين عملگر از راست به چپ است
الگوريتم -تست شرط
مفهوم عبارت r=0در قدم E2اين است كه آيا عدد r
برابر صفر است؟
–
= به عملگر تست شرط معروف است
Equality, Condition
–
–
–
1
در برخي از زبانها مثل Basicاز عالمت (=) براي انتساب و تست
شرط استفاده مي شود
وظيفه برنامه نويس است كه كاربرد درست را استفاده كند
اغلب زبانهاي پراستفاده ،عاليم متفاوتي براي عملگر انتساب و تست
شرط استفاده مي كنند.
الگوريتم-پرش
يك الگوريتم با دستوري كه كوچكترين شماره را دارد ،شروع
مي شود و اجراي دستورات به صورت ترتيبي ادامه مي يابد،
مگر اينكه اجراي دستوري خارج از اين ترتيب صريحا قيد شود
–
–
–
در الگوريتم قبلي اجراي الگوريتم از E1شروع مي شود
در قدم E2در صورتي كه ، r=0اجراي الگوريتم پايان مي يابد
و دستور E3اجرا نمي شود
در صورت اجراي دستور E3اجراي الگوريتم از E1ادامه مي يابد
عالمت ▐ براي نشان دادن پايان متن الگوريتم استفاده مي شود
11
الگوريتم-خالصه
يك الگوريتم داراي سه نوع دستور است
–
–
–
انتساب
شرط
پرش و تكرار
الگوريتم اقليدس ،هر سه نوع دستور را دارد
–
–
1
تمام برنامه هاي كوچك و بزرگ از همين سه نوع دستور تشكيل يافته
اند
پيشنهاد Lovelace Ada
Lovelace Ada
Augusta Ada King,
Countess of Lovelace
(Dec.10, 1815 – Nov 27, 1852),
born Augusta Ada Byron, is mainly known
for having written a description of Charles
Babbage's early mechanical generalpurpose computer, the analytical
engine(1842-1843).
Click to read more in wikipedia
1
متغيرها
الگوريتمها معموال تعدادي ورودي و حداقل يك خروجي دارند
متغيرها براي نگهداري مقادير مورد استفاده در الگوريتم
استفاده مي شوند
–
m، nو rمتغيرهايمورد اƒستفƒاده ƒاƒƒلگوريتم ƒاƒقليدسهستند
براي نمايش متغيرهاي ساده ،از حروف الفباي التين استفاده مي
شوند
–
–
1
با استفاده از انديس ،متغيرهايي از جنس بردار و ماتريس را نيز مي
توان نشان داد
m1نƒƒشاندهنده ƒخƒانه ƒاولبƒƒƒردار mاƒست
شرايط يك الگوريتم
اجراي الگوريتم در هر صورت بايد پاياني داشته باشد
–
الگوريتم اقليدس در هر بار اجرا ،مقادير m , nكمتر مي شوند و
نهايتا به صفر خواهند رسيد .بنابراين با اجراي E2الگوريتم
باالخره پايان خواهد يافت
تعريف دقيق :كار هر قدم الگوريتم بايد به صورت نا مبهم و
دقيق تعريف شود
–
از عباراتي استفاده كنيد كه مطمئن شويد ،خواننده معني دقيق آن را
مي فهمد
تعريف دقيق ورودي و خروجي
1
شرايط يك الگوريتم-ادامه
كارايي :الگوريتم بايد هوشمندانه طراحي شده و از راه حلهاي
كارا و قابل فهم براي انجام كارهاي مورد نظر استفاده كند
–
قدم اول الگوريتم اقليدس را مي توان چنين نوشت:
[find remainder] Let r be m - n.
E1:
بديهي است كه الگوريتم با اين تغيير دوباره درست كار خواهد
كرد اما به دليل تكرار زياد عمل تفريق ،الگوريتم كارايي سابق
را نخواهد داشت
1
شرايط يك الگوريتم-ادامه
در عمل نه تنها به الگوريتم هاي پايان پذير نياز داريم ،بلكه
الگوريتم هايي را مي پسنديم كه در زمان معقول پايان يابند
–
1
الگوريتم هاي خوب مورد نظر ماست!
تمرين
.1
چگونه مقادير دو متغير aو bرا با هم جابجا مي كنيد؟
.1
.2
چهار متغير ( )a,b,c,dداده شده اند .مقادير اين متغير ها را
به صورت ( )b,c,d,aتغيير دهيد .يعني:
.1
.2
.3
.4
.3
1
بدون استفاده از حافظه كمكي اينكار را انجام دهيد
مقدار جديد aبرابر با مقدار قبلي bباشد
مقدار جديد bبرابر با مقدار قبلي cباشد
مقدار جديد cبرابر با مقدار قبلي dباشد
مقدار جديد dبرابر با مقدار قبلي aباشد
اينكار را با حداقل جابجايي ممكن انجام دهيد