Algorithm
Algorithm
• ﻫﻤﻪ اﻳﻦ ﻣﺴﺎﺋﻞ ﻧﻴﺎز ﺑﻪ روﺷﻲ ﺑﺮاي ﺣﻞ ﻛﺮدن دارﻧﺪ ﻣﺜﻼ راه رﻓﺘﻦ ﺑﺎﻳﺪ ﺑﺎ ﺗﺮﺗﻴـﺐ
ﺧﺎﺻﻲ و ﻣﺮاﺣﻞ ﻣﻌﻴﻨﻲ اﻧﺠﺎم ﺷﻮد ﺗـﺎ ﻣﺴـﺌﻠﻪ راه رﻓـﺘﻦ ﺑـﺮاي ﺑﺸـﺮ ﺣـﻞ ﺷـﻮد.
اﺻﻄﻼﺣﺎً ﺑﻪ اﻳﻦ ﻣﺮاﺣﻞ ﻗﺪم ﺑﻪ ﻗـﺪم ﺑـﺮاي ﺣـﻞ ﻣﺴـﺌﻠﻪ را اﻟﮕـﻮرﻳﺘﻢ آن ﻣﺴـﺌﻠﻪ
ﻣﻲﻧﺎﻣﻨﺪ
• ﻛﻠﻤﻪ اﻟﮕﻮرﻳﺘﻢ از ﻧﺎم داﻧﺸﻤﻨﺪ ﭘﺮآوازه اﻳﺮاﻧﻲ ﺑﻪ ﻧﺎم اﻟﺨﻮارزﻣﻲ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ.
1
اﻟﮕﻮرﻳﺘﻢ و ﻓﻠﻮﭼﺎرت
• ﺷﻨﺎﺧﺖ ﻣﺴﺌﻠﻪ
– ﺑﺮرﺳﻲ داده ﻫﺎ و ﻳﺎ ﻣﻌﻠﻮﻣﺎت)ورودﻳﻬﺎ( ،ﻣﺠﻬﻮﻻت )ﺧﺮوﺟﻴﻬﺎ( و ﻳﺎﻓﺘﻦ ارﺗﺒﺎط
ﻣﻨﻄﻘﻲ ﺑﻴﻦ داده ﻫﺎ و ﻣﺠﻬﻮﻻت )ﺗﺤﻠﻴﻞ راه ﺣﻞ(
2
ﺗﻌﺮﻳﻒ اﻟﮕﻮرﻳﺘﻢ
• ﺗﻌﺪادي دﺳﺘﻮراﻟﻌﻤﻞ ﭘﺸﺖ ﺳﺮﻫﻢ ﻛﻪ ﻣﺮاﺣﻞ ﻣﺨﺘﻠﻒ ﻛﺎري را
ﺑﺎ زﺑﺎﻧﻲ دﻗﻴﻖ و ﺑﺎ ﺟﺰﺋﻴﺎت ﻛﺎﻓﻲ ﺑﻴﺎن ﻧﻤﺎﻳﺪ ﺑﻄﻮرﻳﻜﻪ ﺗﺮﺗﻴﺐ
ﻣﺮاﺣﻞ و ﺧﺎﺗﻤﻪ ﭘﺬﻳﺮ ﺑﻮدن ﻋﻤﻠﻴﺎت در آن ﻛﺎﻣﻼ“ ﻣﺸﺨﺺ
ﺷﺪه ﺑﺎﺷﺪ را اﻟﮕﻮرﻳﺘﻢ ﮔﻮﻳﻨﺪ.
3
ﻣﺮاﺣﻞ اﻟﮕﻮرﻳﺘﻢ
ﺑﺮاي ﺣﻞ ﻳﻚ ﻣﺴﺌﻠﻪ ﺑﺎﻳﺪ اﻟﮕﻮرﻳﺘﻢ آن ﻣﺴﺌﻠﻪ را ﻣﺸـﺨﺺ ﻛﻨـﻴﻢ
)ﻳﺎ ﺑﻴﺎﺑﻴﻢ( .ﻛﻪ اﺻﻄﻼﺣﺎً ﻃﺮاﺣـﻲ اﻟﮕـﻮرﻳﺘﻢ ﺑـﺮاي آن ﻣﺴـﺌﻠﻪ
ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد .در ﻃﺮاﺣﻲ اﻟﮕﻮرﻳﺘﻢ ﻣﻌﻤﻮﻻً ﺳﻪ ﻣﺮﺣﻠﻪ زﻳـﺮ را
از ﻫﻢ ﺟﺪا ﻣﻲﻛﻨﻨﺪ:
– ﺧﻮاﻧﺪن دادهﻫﺎ
– اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت
– ﺧﺮوﺟﻲﻫﺎ
4
ﻣﺠﺮي اﻟﮕﻮرﻳﺘﻢ
• اﻟﮕﻮرﻳﺘﻢ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ ﺑﻪ دو ﺻﻮرت اﻧﺠﺎم ﺷﻮﻧﺪ
– ﺗﻮﺳﻂ ﻣﺎﺷﻴﻦ )ﻛﺎﻣﭙﻴﻮﺗﺮ(
• ﺑﻌﺪ از ﺗﺒﺪﻳﻞ ﺷﺪن ﺑﻪ زﺑﺎن ﻣﻨﺎﺳﺐ ﺑﺮاي ﻣﺎﺷﻴﻦ ﺑﻄﻮر اﺗﻮﻣﺎﺗﻴﻚ ﺗﻮﺳﻂ
ﻣﺎﺷﻴﻦ ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ.
– ﺗﻮﺳﻂ اﻧﺴﺎن
• ﺑﺮاي ﺣﺼﻮل اﻃﻤﻴﻨﺎن از ﻋﻤﻠﻜﺮد ﺻﺤﻴﺢ اﻟﮕﻮرﻳﺘﻢ ،ﮔﺎﻫﻲ ﺧﻮدﻣﺎن آن را
ﺑﺼﻮرت دﺳﺘﻲ دﻧﺒﺎل ﻧﻤﻮده و در واﻗﻊ ﺧﻮد ﻣﺠﺮي اﻟﮕﻮرﻳﺘﻢ ﻣﻲ ﺷﻮﻳﻢ.
5
ﻛﺎرﺑﺮد اﻟﮕﻮرﻳﺘﻢ
• ﻫﻤﻪ ﻣﺎ در ﻃﻲ روز ﺑﺮاي اﻧﺠﺎم ﻛﺎرﻫﺎي روزﻣﺮه از روش
اﻟﮕﻮرﻳﺘﻤﻲ) و ﻳﺎ ﻣﻨﻄﻘﻲ( اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ.
– ﻣﺎﻧﻨﺪ ﻣﻄﺎﻟﻌﻪ ﻛﺘﺎب
– ﺗﻌﻮﻳﺾ ﭼﺮخ ﭘﻨﺠﺮ ﺷﺪه
– ﭘﺨﺘﻦ ﻏﺬا
– ﭘﺨﺘﻦ ﻛﻴﻚ و ....
• در واﻗﻊ ﺑﺮاي اﻧﺠﺎم ﻫﺮ ﻳﻚ از اﻳﻦ ﻛﺎرﻫﺎ ،ﻻزم اﺳﺖ ﺗﻌﺪادي
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺳﺎده ﺗﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ ﻣﻨﺎﺳﺐ اﺟﺮاء ﻛﺮده ﺗﺎ ﺑﻪ
ﻧﺘﻴﺠﻪ ﻣﻄﻠﻮب ﺑﺮﺳﻴﻢ.
6
اﺟﺰاي اﺻﻠﻲ اﻟﮕﻮرﻳﺘﻢ
ﻫﺮ ﻣﺴﺎﻟﻪ راه ﺣﻞ و اﻟﮕﻮرﻳﺘﻢ ﺧﺎص ﺧﻮد را دارد. •
ﻣﻲ ﺗﻮان ﺑﺮاي ﺣﻞ ﻳﻚ ﻣﺴﺎﻟﻪ روﺷﻬﺎي ﮔﻮﻧﺎﮔﻮﻧﻲ را اراﺋﻪ داد. •
اﻣﺎ ﺗﻤﺎم اﻟﮕﻮرﻳﺘﻢ ﻫﺎ داراي اﻳﻦ اﺟﺰاء ﻫﺴﺘﻨﺪ: •
.1ﻧﻘﻄﻪ ﺷﺮوع :ﺣﻞ ﻣﺴﺎﻟﻪ از ﻛﺠﺎ آﻏﺎز ﻣﻲ ﮔﺮدد
ﻓﻘﻂ ﻳﻚ ﻧﻘﻄﻪ ﺷﺮوع در اﻟﮕﻮرﻳﺘﻢ وﺟﻮد دارد •
.2ﻧﻘﻄﻪ ﭘﺎﻳﺎن :ﺟﺎﻳﻲ ﻛﻪ ﻣﺮاﺣﻞ ﺣﻞ ﻣﺴﺎﻟﻪ ﭘﺎﻳﺎن ﻣﻲ ﭘﺬﻳﺮد.
ﺑﻪ ﻫﺮ ﺣﺎل اﻟﮕﻮرﻳﺘﻢ ﺑﺎﻳﺴﺘﻲ در ﻳﻚ ﻧﻘﻄﻪ ﺧﺎﺗﻤﻪ ﻳﺎﺑﺪ. •
ﻣﻲ ﺗﻮان ﭼﻨﺪﻳﻦ ﻧﻘﻄﻪ ﭘﺎﻳﺎن ﺑﺮاي اﻟﮕﻮرﻳﺘﻢ داﺷﺖ. •
.3دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ و ﻳﺎ ﺟﻤﻼت اﺟﺮاﻳﻲ
7
روﺷﻬﺎي ﺑﻴﺎن اﻟﮕﻮرﻳﺘﻢ
• اﻟﮕﻮرﻳﺘﻢ را ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرﺗﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺑﻴﺎن ﻛﺮد:
.1ﺑﻴﺎن اﻟﮕﻮرﻳﺘﻢ ﺑﺎ ﺟﻤﻼت ﻓﺎرﺳﻲ
8
ﻣﺘﻐﻴﺮ)(Variable
ﺑﻪ ﺧﺎﻧﻪ اي از ﺣﺎﻓﻈﻪ ﻛﻪ داده ﻫﺎ و اﻃﻼﻋﺎت ورودي ﻳﺎ ﺧﺮوﺟﻲ و ﻳﺎ اﻃﻼﻋﺎت •
ﻣﻮﻗﺖ را در ﺧﻮد ﻧﮕﻪ ﻣﻲ دارد ﻣﺘﻐﻴﺮ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮد.
ﻣﻘﺪار ﻣﺘﻐﻴﺮ ﻣﻲ ﺗﻮاﻧﺪ در ﻃﻮل اﺟﺮاي اﻟﮕﻮرﻳﺘﻢ ﺗﻐﻴﻴﺮ داﺷﺘﻪ ﺑﺎﺷﺪ. •
0
11100001
1
A
2
i
1 1 0 1 0 0 0 1
N
9
ﻣﺜﺎﻟﻲ از ﻳﻚ اﻟﮕﻮرﻳﺘﻢ
اﻟﮕﻮرﻳﺘﻢ ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻣﺠﻤﻮع دو ﻋﺪد 10و 20 •
ﺷﺮوع .1
ﻋﺪد 10را در ﺧﺎﻧﻪ )ﻣﺘﻐﻴﺮ( Aﻗﺮار ﺑﺪه .2
ﻋﺪد 20را در ﺧﺎﻧﻪ Bﻗﺮار ﺑﺪه .3
ﻣﺤﺘﻮﻳﺎت ﺧﺎﻧﻪ ﻫﺎي A , Bرا ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻛﻦ و در ﺧﺎﻧﻪ Cﻗﺮار ﺑﺪه .4
ﻣﻘﺪار ﺧﺎﻧﻪ Cرا ﺑﻌﻨﻮان ﻧﺘﻴﺠﻪ ﭼﺎپ ﻛﻦ .5
ﭘﺎﻳﺎن .6
10
اﺳﺘﻔﺎده از ﺑﻴﺎن رﻳﺎﺿﻲ
• ﺑﻴﺎن اﻟﮕﻮرﻳﺘﻢ در ﻗﺎﻟﺐ ﺟﻤﻼت ﻧﻮﺷﺘﺎري ﻃﻮﻻﻧﻲ و ﻓﻬﻢ اﻟﮕﻮرﻳﺘﻢ
را دﺷﻮار ﻣﻲ ﺳﺎزد.
• اﻟﮕﻮرﻳﺘﻢ ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻣﺠﻤﻮع دو ﻋﺪد 10و 20
.1ﺷﺮوع
A10 .2
B20 .3
C A+B .4
ﭼﺎپ ﻣﻘﺪار C .5
ﭘﺎﻳﺎن .6
11
اﻧﻮاع ﺟﻤﻼت ﻣﻮرد اﺳﺘﻔﺎده در اﻟﮕﻮرﻳﺘﻢ ﻫﺎ
ﺟﻤﻼت ﺷﺮﻃﻲ •
ﺟﻤﻼت ﻋﻤﻠﻴﺎﺗﻲ ) ﻳﺎ ﻣﺤﺎﺳﺒﺎﺗﻲ( •
ﺟﻤﻼت ورودي /ﺧﺮوﺟﻲ •
ﺟﻤﻼت ﺗﻮﺿﻴﺤﻲ •
12
ﻣﺜﺎل
• اﻟﮕﻮرﻳﺘﻤﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻋﺪاد زوج دو رﻗﻤﻲ را ﭼﺎپ
ﻛﻨﺪ.
)ﻣﻲ داﻧﻴﻢ ﻛﻪ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﺪد زوج دو رﻗﻤﻲ 10و اﻋﺪاد زوج ﺑﻪ اﻧﺪازه 2واﺣﺪ از ﻫﻢ ﻓﺎﺻﻠﻪ دارﻧﺪ(
ﺷﺮوع .1
J 10 .2
Jرا ﭼﺎپ ﻛﻦ .3
JJ+2 .4
اﮔﺮ J <=98اﺳﺖ آﻧﮕﺎه ﺑﻪ ﻣﺮﺣﻠﻪ 3ﺑﺮو .5
ﭘﺎﻳﺎن .6
13
ﻣﺜﺎل :اﻟﮕﻮرﻳﺘﻤﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻋﺪد از ورودي درﻳﺎﻓﺖ ﻛﺮده ﻣﺠﻤﻮع دو ﻋﺪد را
ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻧﻤﺎﻳﺪ.
1ـ ﺷﺮوع
2ـ b ,aرا ﺑﺨﻮان.
3ـ ﻣﺠﻤﻮع b , aرا ﻣﺤﺎﺳﺒﻪ و در sumﻗﺮار ﺑﺪه.
4ـ sumرا در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻦ
5ـ ﭘﺎﻳﺎن
14
ﻣﺜﺎل :اﻟﮕﻮرﻳﺘﻤﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺳﻪ ﻋﺪد از ورودي درﻳﺎﻓﺖ ﻛﺮده ﻣﺠﻤﻮع وﻣﻴﺎﻧﮕﻴﻦ
ﺳﻪ ﻋﺪد را ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻛﻨﺪ.
ورودﻳﻬﺎ اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﺧﺮوﺟﻲﻫﺎ
a ﻣﺤﺎﺳﺒﻪ ﻣﺠﻤﻮع ﭼﺎپ ﻣﺠﻤﻮع
b ,c ﻣﺤﺎﺳﺒﻪ ﻣﻴﺎﻧﮕﻴﻦ ﭼﺎپ ﻣﻴﺎﻧﮕﻴﻦ
1ـ ﺷﺮوع
2ـ ﺳﻪ ﻋﺪد از ورودي ﺑﺨﻮان
3ـ ﻣﺠﻤﻮع ﺳﻪ ﻋﺪد را ﻣﺤﺎﺳﺒﻪ و در sumﻗﺮار ﺑﺪه.
4ـ sumرا ﺑﺮ ﺳﻪ ﺗﻘﺴﻴﻢ ﻛﺮده،در aveﻗﺮار ﺑﺪه.
5ـ ave , sumرا در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻦ.
6ـ ﭘﺎﻳﺎن. 15
ﻣﺜﺎل
اﻟﮕﻮرﻳﺘﻤﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻋﺪاد زوج از 1000ﺗﺎ 2000را ﺗﻮﻟﻴﺪ •
ﻛﺮده و ﻣﺠﻤﻮع آﻧﻬﺎ را ﻫﻢ ﻣﺤﺎﺳﺒﻪ ﻛﻨﺪ.
ﺷﺮوع .1
S 0 ، J 1000 .2
Jرا ﭼﺎپ ﻛﻦ و S S + J .3
JJ+2 .4
اﮔﺮ J <= 2000اﺳﺖ آﻧﮕﺎه ﺑﻪ ﻣﺮﺣﻠﻪ 3ﺑﺮو در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار Sرا ﭼﺎپ .5
ﻛﻦ
ﭘﺎﻳﺎن .6
16
ﻧﻜﺘﻪ
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﻘﺪار ﺣﺎﺻﻞ ﺟﻤﻌﻲ را ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﻢ )ﻣﺎﻧﻨﺪ ﻣﺜﺎل •
ﻗﺒﻞ ﻛﻪ ﻣﺠﻤﻮع اﻋﺪاد زوج از 1000ﺗﺎ (2000
اﺑﺘﺪا ﻣﺘﻐﻴﺮي ) ﻣﺎﻧﻨﺪ (Sدر ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ و ﻣﻘﺪار اوﻟﻴﻪ آن را ﺻﻔﺮ ﻣﻲ ﮔﺪارﻳﻢ )ﻳﻌﻨﻲ اﻳﻨﻜﻪ –
ﻫﻨﻮز ﻫﻴﭻ ﻣﺠﻤﻮﻋﻲ را ﺣﺴﺎب ﻧﻜﺮده اﻳﻢ( S 0 ،
ﺳﭙﺲ ﺗﻚ ﺗﻚ ﺟﻤﻼﺗﻲ را ﻛﻪ ﻗﺮار اﺳﺖ ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻛﻨﻴﻢ را ﺗﻮﻟﻴﺪ ﻛﺮده ) ﺑﺎ ﻛﻤﻚ ﻳﻚ ﻣﺘﻐﻴﺮ –
دﻳﮕﺮ ،ﻣﺜﻼ Jدر ﻣﺜﺎل ﻗﺒﻠﻲ( و ﺑﺎ ﻣﺘﻐﻴﺮ Sﺟﻤﻊ ﻧﻤﻮده و ﺣﺎﺻﻞ را در Sﻗﺮار ﻣﻲ دﻫﻴﻢ ) در واﻗﻊ
ﻣﻘﺪار ﺟﺪﻳﺪ را ﺑﻪ ﺣﺎﺻﻞ ﻗﺒﻠﻲ ﻣﻲ اﻓﺰاﻳﻴﻢ – ﻣﺎﻧﻨﺪ اﻧﺒﺎره( S S + J ،
در ﻧﻬﺎﻳﺖ ﺣﺎﺻﻞ ﻣﺠﻤﻮع در اﻳﻦ ﻣﺘﻐﻴﺮ Sﻗﺮار ﻣﻲ ﮔﻴﺮد. –
S J
+
17
وﻳﮋﮔﻴﻬﺎي ﻳﻚ اﻟﮕﻮرﻳﺘﻢ ﺧﻮب
اﮔﺮ ﭼﻪ ﻳﻚ ﻣﺴﺎﻟﻪ راه ﺣﻠﻬﺎي ﻣﺨﺘﻠﻔﻲ دارد ،ﻣﻬـﻢ ﻳﺎﻓﺘﻦ ﺑﻬﺘﺮﻳﻦ راه ﺣﻞ اﺳﺖ
• ﺳﺎدﮔﻲ
ﺣﺘﻲ اﻻﻣﻜﺎن ﺳﺎده و ﻋﺎري از اﺑﻬﺎم و ﭘﻴﭽﻴﺪﮔﻲ ﺑﺎﺷﺪ. –
در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺗﻤﺎم ﺣﺎﻻت ﺧﺎص •
اﻟﮕﻮرﻳﺘﻢ ﺑﺘﻮاﻧﺪ در ﺑﺮاﺑﺮ ﺣﺎﻻت و ﺷﺮاﻳﻂ ﻣﺨﺘﻠﻒ ﭘﺎﺳﺦ و ﺟﻮاب ﻣﻨﺎﺳﺒﻲ اراﺋﻪ –
دﻫﺪ.
ﺑﻄﻮر ﻣﺜﺎل ﻫﻨﮕﺎم ﺣﻞ ﻣﻌﺎدﻟﻪ درﺟﻪ دوم ﺣﺎﻟﺘﻬﺎي ﻣﻨﻔﻲ زﻳﺮ رادﻳﻜﺎل را در ﻧﻈﺮ –
ﺑﮕﻴﺮد.
روان ﺑﻮدن ﻣﺘـﻦ اﻟﮕﻮرﻳﺘﻢ •
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﮔﻮﻳﺎ ﺑﻮده و ﻣﻨﻈﻮر آﻧﻬﺎ ﺑﺴﺎدﮔﻲ درك ﺷﻮد. –
ﺣﺪاﻗﻞ ﺑﻮدن ﺗﻌﺪاد دﺳﺘﻮرات و ﺟﻤﻼت •
18
اﻳﺠﺎد ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار)(Loops
ﮔﺎﻫﻲ اوﻗﺎت ﺑﺮاي ﺣﻞ ﻣﺴﺎﻟﻪ ﺑﺎﻳﺪ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﻣﺮﺣﻠﻪ از دﺳﺘﻮرات را ﺗﻜﺮار ﻧﻤﻮد. •
ﺑﻪ ﻣﺮاﺣﻠﻲ از اﻟﮕﻮرﻳﺘﻢ ﻛﻪ اﺟﺮاي آﻧﻬﺎ ﭼﻨﺪﻳﻦ ﺑﺎر ﺗﻜﺮار ﻣﻲ ﺷﻮد ﺣﻠﻘﻪ ) (Loopو ﻳﺎ ﺣﻠﻘﻪ ﺗﻜﺮار ﮔﻔﺘﻪ •
ﻣﻲ ﺷﻮد
ﺑﻄﻮر ﻛﻠﻲ ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار از اﺟﺰاي زﻳﺮ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ: •
ﺷﻤﺎرﻧﺪه ﺣﻠﻘﻪ )(Counter –
ﻳﻚ ﻣﺘﻐﻴﺮ ﻛﻤﻜﻲ ﻛﻪ ﭘﻴﺶ از ﺷﺮوع ﺣﻠﻘﻪ ﺑﻪ آن ﻣﻘﺪار اوﻟﻴﻪ داده ﻣﻲ ﺷﻮد •
از ﻃﺮﻳﻖ آن ﻣﻲ ﺗﻮان ﺗﻌﺪاد دﻓﻌﺎت ﺗﻜﺮار ﺣﻠﻘﻪ را ﻧﺸﺎن داد. •
ﮔﺎم اﻓﺰاﻳﺶ )(Step –
ﻣﻘﺪاري ﻛﻪ ﭘﺲ از ﻫﺮ ﺑﺎر ﻣﺮاﺣﻞ ﺣﻠﻘﻪ ﺑﻪ ﺷﻤﺎرﻧﺪه اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد. •
ﺷﺮط ﭘﺎﻳﺎﻧﻲ –
ﻣﻘﺪار و ﻳﺎ ﻣﺘﻐﻴﺮي اﺳﺖ ﻛﻪ ﭘﺲ از اﺟﺮاي دﺳﺘﻮرات ﺣﻠﻘﻪ ﺑﺎ ﺷﻤﺎرﻧﺪه ﺣﻠﻘﻪ ﻣﻘﺎﻳﺴﻪ ﻣﻲ •
ﮔﺮدد و زﻣﺎن ﭘﺎﻳﺎن اﺟﺮاي دﺳﺘﻮرات ﺣﻠﻘﻪ را ﻣﺸﺨﺺ ﻣﻲ ﺳﺎزد.
ﺑﺪﻧﻪ ﺣﻠﻘﻪ –
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ و ﺟﻤﻼﺗﻲ ﻛﻪ ﻋﻤﻠﻴﺎت اﺻﻠﻲ ﺣﻠﻘﻪ را ﺗﺸﻜﻴﻞ ﻣﻲ دﻫﻨﺪ. •
19
ﻓﻠﻮﭼﺎرت) (Flowchartﻳﺎ ﻧﻤﻮدار ﮔﺮدﺷﻲ
ﻓﻠﻮﭼﺎرت ،ﺑﻴﺎن ﺗﺼﻮﻳﺮي اﻟﮕﻮرﻳﺘﻢ ﺑﺎ ﻛﻤﻚ ﻣﺠﻤﻮﻋﻪ اي اﺳﺘﺎﻧﺪارد از •
اﺷﻜﺎل ﺳﺎده ﻣﻲ ﺑﺎﺷﺪ
ﻓﻠﻮﭼﺎرت ﻳﻜﻲ از روﺷﻬﺎي ﺑﺮﻗﺮاري ارﺗﺒﺎط ﻣﻨﻄﻘﻲ ﺑﻴﻦ ﻣﺮاﺣﻞ ﻣﺨﺘﻠﻒ •
ﺣﻞ ﻣﺴﺎﻟﻪ اﺳﺖ.
اﺷﻜﺎل اﺳﺘﺎﻧﺪارد ﻣﻮﺟﻮد: •
ﺷﺮوع درﻳﺎﻓﺖ داده
از ورودي دﺳﺘﻮرات ﻣﻘﺪار دﻫﻲ
و ﻣﺤﺎﺳﺒﺎﺗﻲ
ﺑﻠﻪ
20
ﺷﺮوع
ﻓﻠﻮﭼﺎرت
ﻣﺜﺎل :ﺑﺎ درﻳﺎﻓﺖ Nاز ورودي،
Nرا ﺑﮕﻴﺮ ﻣﺠﻤﻮع زﻳﺮ را ﺣﺴﺎب
ﻛﻨﺪ.
S0
I1
II+1
S
ﭘﺎﻳﺎن
21
ﺷﺮوع
ﻣﺜﺎل
ﻣﺜﺎل :ﺑﺎ درﻳﺎﻓﺖ Nاز ورودي ،
Nرا ﺑﮕﻴﺮ
ﻓﺎﻛﺘﻮرﻳﻞ آﻧﺮا ﻣﺤﺎﺳﺒﻪ و
P1
I1
ﭼﺎپ ﻛﻨﺪ.
PP*I
N! = 1*2*3*….*(N-1)*N
II+1
P
ﭘﺎﻳﺎن
22
ﺷﺮوع ﻣﺜﺎل
N ﻋﺪد ﻃﺒﻴﻌﻲ Nرا درﻳﺎﻓﺖ •
ﻛﻨﺪ و ﻣﻌﻴﻦ ﻛﻨﺪ ﻛﻪ N
I2
ﻋﺪدي اول اﺳﺖ ﻳﺎ ﺧﻴﺮ؟
R N MOD I
ﺑﻠﻪ
R=0
ﺧﻴﺮ
II+1 Nاول ﻧﻴﺴﺖ
ﺑﻠﻪ
<I N
ﺧﻴﺮ
Nاول اﺳﺖ
ﭘﺎﻳﺎن 23
ﺷﺮوع
ﻣﺜﺎل
N
ﻋﺪد ﻃﺒﻴﻌﻲ Nرا درﻳﺎﻓﺖ •
I2
ﻛﻨﺪ و ﻣﻌﻴﻦ ﻛﻨﺪ ﻛﻪ N
S 1
ﻋﺪدي ﻛﺎﻣﻞ اﺳﺖ ﻳﺎ ﺧﻴﺮ؟
R N MOD I
N Q
25
ريشه ھای يک معادله درجه دوم مثال :
AX²+BX+C=0 •
D=B²-4AC •
اگر ،D<0معادله ريشه ندارد •
اگر ،D=0حاصل عبارت –B/2Aرا در X1و X2قرار بده •
حاصل عبارت) (− B + D ) /(2 Aرا در X1قرار بده •
حاصل عبارت (−B − D ) / 2 Aرا در X2قرار بده •
مقادير X1و X2را نمايش بده •
شروع
A,B,C
2
D←B −4∗A∗C
Y
D<0 “No root”
N
X1← -B/2A Y
D=0
X2← X1
N
X 1 ← (− B + D ) / 2 A
X 2 ← (− B − D ) / 2 A
X1,X2
پايان
ﻓﻠﻮﭼﺎرﺗﻲ رﺳﻢ ﻛﻨﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺑﺰرﮔﺘﺮ از ﺻﻔﺮ را ﺧﻮاﻧﺪه ﺳﭙﺲ ﺑﻪ ﺗﻌﺪاد ﻣﺜﺎل :
آن ﻋﺪد ,اﻋﺪاد دﻳﮕﺮي را ﺧﻮاﻧﺪه ﻣﺠﻤﻮع و ﻣﻴﺎﻧﮕﻴﻦ آﻧﻬﺎ را ﻧﻤﺎﻳﺶ دﻫﺪ.
Y
C=N S, S / N
N
A
پايان
S←S+A
C ← C +1
مثال :8
الگوريتم برنامه ای را بنويسيد که 10عدد را گرفته و تعيين کند کدام
شروع زوج و کدام فرد است.
C←0
p
k ← p mod 2
y
”P, “even K=0
n
”P, “odd
C ← C+1
y
C< 10
n
پايان
اﻟﮕﻮرﻳﺘﻢ ﺑﺮﻧﺎﻣﻪ اي را ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﻣﺜﺒﺖ را ﺧﻮاﻧﺪه و ﻣﺜﺎل :
ﺗﻌﺪاد ارﻗﺎم ﻋﺪد را ﻧﺸﺎن دﻫﺪ.
شروع
N
)N ← (N / 10
S ← S+1
Y
N>0
N
S
پايان
ﺷﺮوع
ﻣﺜﺎل
M, N ﺑﻪ ﻛﻤﻚ ﺟﻤﻊ ﻫﺎي ﻣﺘﻮاﻟﻲ ،ﺣﺎﺻﻞ ﺿﺮب
دو ﻋﺪد ﻃﺒﻴﻌﻲ M,Nرا ﺑﺪﺳﺖ آورده و
I 1 ﭼﺎپ ﻛﻨﺪ.
S0
II+1
Nﻣﺮﺗﺒﻪ
ﺑﻠﻪ
I <= N
ﺧﻴﺮ
S
ﭘﺎﻳﺎن
31
ﺷﺮوع
ﻣﺜﺎل
M, N ﺑﻪ ﻛﻤﻚ ﺿﺮﺑﻬﺎي ﻣﺘﻮاﻟﻲ ﻣﻘﺪار ﺗﻮان MNرا
ﺑﺪﺳﺖ آورده و ﭼﺎپ ﻛﻨﺪ.
) M, Nاﻋﺪاد ﻃﺒﻴﻌﻲ ﻣﻲ ﺑﺎﺷﻨﺪ(
I 1
P1
MN = M * M * …… * M
PP*M
II+1
Nﻣﺮﺗﺒﻪ
ﺑﻠﻪ
I <= N
ﺧﻴﺮ
P
ﭘﺎﻳﺎن
32
ﻣﺜﺎل
ﺷﺮوع
ﻋﺪد ﻃﺒﻴﻌﻲ Nرا درﻳﺎﻓﺖ •
N
ﻛﻨﺪ و ﻣﺠﻤﻮع ارﻗﺎم آﻧﺮا
S0 در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ.
90527 9+0+5+2+7
ﺑﻠﻪ
Q=0
ﺧﻴﺮ
S
33
ﻣﺜﺎل
ﺷﺮوع
I I + 1
S
ﭘﺎﻳﺎن
34
ﻣﺜﺎل
ﺷﺮوع
I I + 1
K-K
S
ﭘﺎﻳﺎن
35
ﻣﺜﺎل :اﻟﮕﻮرﻳﺘﻢ ﺑﺮﻧﺎﻣﻪ اي را ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﻣﺜﺒﺖ را ﺧﻮاﻧﺪه ﻓﺎﻛﺘﻮرﻳﻞ آن را ﻧﻤﺎﻳﺶ
دﻫﺪ.
FACT ← 1
A ←1
Y
A>N FACT
N
پايان
FACT ← FACT * A
A ← A+ 1