00 J Week Zero
00 J Week Zero
ﺟ ﻠﺴ ﻪ ﺻ ﻔ ﺮ
وﻗﺘﯽ دﯾﻮﯾﺪ)ﻣﺪرس دوره CS50در ﻫﺎروارد( ﺳﺎل اوﻟﯽ ﺑﻮد از ﺑﺮداﺷﺘﻦ ﻫﺮ دوره ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﻪ
ﺷﺪت وﺣﺸﺖ داﺷﺖ .ﺑﻪ ﻫﺮ ﺣﺎل وﻗﺘﯽ ﺳﺎل دوم داﻧﺸﮕﺎه را ﻣﯽﮔﺬراﻧﺪ ﺟﺮأت اﯾﻨﮑﻪ دوره ﻣﺸﺎﺑﻪ
cs50را ﺑﺮدارد ﭘﯿﺪا ﮐﺮد اﻟﺒﺘﻪ ﺑﻪ ﺻﻮرت passو failﺑﻮد.
ﻣﺮﺗﺒﻂ ﺑﺎ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﺮﮐﺖ در واﻗﻊ ﺣﺪودا دو ﺳﻮم از داﻧﺶآﻣﻮزان cs50ﻗﺒﻼ در ﻫﯿﭻ دوره
ﻧﮑﺮدﻧﺪ .
اﻫﻤﯿﺖ دارد وﺿﻌﯿﺖ ﺷﻤﺎ ﻧﺴﺒﺖ ﺑﻪ دﯾﮕﺮ و ﻣﻬﻤﺘﺮﯾﻦ ﻧﮑﺘﻪ :ﭼﯿﺰ ی ﮐﻪ در اﻧﺘﻬﺎی اﯾﻦ دوره
ﻫﻢﮐﻼﺳﯽﻫﺎی ﺧﻮد ﻧﯿﺴﺖ ﺑﻠﮑﻪ ﭘﯿﺸﺮﻓﺖ و وﺿﻌﯿﺖ ﺷﻤﺎ ﻧﺴﺒﺖ ﺑﻪ ﺧﻮدﺗﺎن در اﺑﺘﺪای دوره اﺳﺖ
ﮐﻪ اﻫﻤﯿﺖ دارد.
1
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﺑﺮای ﺷﺮوع ﻣﺎ ﺑﻪ راﻫﯽ ﺑﺮای ﻧﻤﺎﯾﺶ ورودیﻫﺎوﺧﺮوﺟﯽ ﻫﺎ ﻧﯿﺎز دارﯾﻢ ﺗﺎ ﺑﺘﻮاﻧﯿﻢ داده ﻫﺎ را ﺑﻪ •
ﺻﻮرت اﺳﺘﺎﻧﺪارد ذﺧﯿﺮه و روی آﻧﻬﺎ ﮐﺎر ﮐﻨﯿﻢ .
دودوﯾﯽ -
ﺑﺮای ﺷﻤﺮدن ﺗﻌﺪاد اﻓﺮاد درون ﯾﮏ اﺗﺎق ،ﻣﺎ اﺣﺘﻤﺎﻻ از اﻧﮕﺸﺘﺎن ﺧﻮد اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ ،ﺑﻪ •
ﻃﻮر ی ﮐﻪ ﻫﺮ ﻋﺪد ﻧﺸﺎن دﻫﻨﺪهء ﯾﮏ ﻣﻘﺪار ﻣﺸﺨﺺ اﺳﺖ .ﺑﻪ اﯾﻦ روش " ،روش ﯾﮕﺎﻧﯽ " ﯾﺎ
" "unaryﮔﻔﺘﻪ ﻣﯽ ﺷﻮد .
ﺑﺮای ﺷﻤﺮدن ﺗﺎ اﻋﺪاد ﺑﺎﻻﺗﺮ ،از ارﻗﺎم ٠ﺗﺎ ٩ﯾﺎ اﻋﺪاد ﺳﺎﺧﺘﻪ ﺷﺪه ازآﻧﻬﺎاﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ ﮐﻪ ﺑﻪ •
اﯾﻦ روش ،روش "ده دﻫﯽ " ﯾﺎ " "decimalﮔﻔﺘﻪ ﻣﯽ ﺷﻮد .
123
۳در ﺳﺘﻮن ﯾﮑﺎن ۲ ٬در ﺳﺘﻮن دﻫﮕﺎن و ۱در ﺳﺘﻮن ﺻﺪﮔﺎن اﺳﺖ.
ﺑﻨﺎﺑﺮاﯾﻦ :
ﻫﺮ ﮐﺪام از اﯾﻦ ﺟﺎﯾﮕﺎهﻫﺎ) ﯾﮑﺎن ،دﻫﮕﺎن و ( ..ﯾﮑﯽ از ﺗﻮانﻫﺎی ده را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﻨﺪ .ﺑﻨﺎﺑﺮاﯾﻦ
در ﻫﺮ ﺟﺎﯾﮕﺎه ﯾﮑﯽ از ارﻗﺎم ٠ﺗﺎ ٩ﻣﯽ ﺗﻮاﻧﺪ ﻗﺮار ﮔﯿﺮد .
ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎ از روش ﺳﺎده ﺗﺮ ی ﺑﺮای ﺷﻤﺎرش اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ ﮐﻪ ﻧﺎم آن " دودوﯾﯽ " ﯾﺎ ""binary •
اﺳﺖ.
2
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
در اﻋﺪاد دودوﯾﯽ )ﻣﺒﻨﺎی ، (۲ﻫﺮ ﺟﺎﯾﮕﺎه ﻧﺸﺎن دﻫﻨﺪه ی ﺗﻮاﻧﯽ از ٢اﺳﺖ ﺑﺎ دو رﻗﻢ ٠و ١ -
ﻣﻮرد اﺳﺘﻔﺎده ﺑﻮدن ﯾﺎ ﻧﺒﻮدن آﻧﻬﺎ را در ﻫﺮ ﺟﺎﯾﮕﺎه ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﯿﻢ.
421
000
ﺣﺎل ا ﮔﺮ ﻣﻘﺪار دودوﯾﯽ را ﺑﻪ ۰ ۱ ۱ﺗﻐ•ﺮ دﻫﯿﻢ ،ﻣﻘﺪار دﺳﯿﻤﺎل آن ﺑﺮاﺑﺮ ﺑﺎ ۳ﺧﻮاﻫﺪ ﺑﻮد.
421
011
ا ﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﻋﺪد ۸را ﻧﺸﺎن دﻫﯿﻢ ﺑﻪ ﯾﮏ رﻗﻢ دﯾﮕﺮ ﻧﯿﺎز ﺧﻮاﻫﯿﻢ داﺷﺖ.
8421
1000
اﻋﺪاد دودوﯾﯽ ﺑﻪ اﯾﻦ ﻋﻠﺖ ﺑﺮای ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎ ﻗﺎﺑﻞ ﻓﻬﻢ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﯽ ﺗﻮان آﻧﻬﺎ را ﺑﺎ اﺳﺘﻔﺎده از
اﻟﮑﺘﺮﯾﺴﯿﺘﻪ و ﺑﻪ ﺻﻮرت روﺷﻦ ﯾﺎ ﺧﺎﻣﻮش ﺑﻮدن ﺗﺮاﻧﺰﯾﺴﺘﻮر ﻫﺎﻧﺸﺎن داد .ﻫﺮ ﺑﯿﺖ ﻧﯿﺎز دارد ﺗﺎ روﺷﻦ
ﯾﺎ ﺧﺎﻣﻮش ﺑﺎﺷﺪ .در ﯾﮏ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﯿﻠﯿﺎردﻫﺎ ﺳﻮƒﭻ ﺑﻪ ﻧﺎم ﺗﺮاﻧﺰﯾﺴﺘﻮر وﺟﻮد دارد ﮐﻪ ﻫﺮ ﮐﺪام ﻣﯿﺘﻮاﻧﻨﺪ
ﻧﻤﺎﯾﺎن ﮐﻨﻨﺪهی ﯾﮏ ﺑﯿﺖ ﺑﺎﺷﻨﺪ ﮐﻪ روﺷﻦ ﯾﺎ ﺧﺎﻣﻮش اﺳﺖ .
ﺑﺎ ﺗﻌﺪاد ﮐﺎﻓﯽ از ﺑﯿﺖﻫﺎ ﯾﺎ اﻋﺪاد دودوﯾﯽ ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎ ﻣﯿﺘﻮاﻧﻨﺪ ﻫﺮ ﻋﺪدی را ﺷﻤﺎرش ﮐﻨﻨﺪ.
ﺑﺮای ﻧﻤﺎﯾﺶ ﺣﺮوف ﮐﺎﻓﯽ اﺳﺖ ﺗﺼﻤﯿﻢ ﺑﮕﯿﺮﯾﻢ ﮐﻪ ﻫﺮ ﻋﺪدی ﺑﯿﺎنﮔﺮ ﭼﻪ ﺣﺮﻓﯽ ﺑﺎﺷﺪ .ﺳﺎلﻫﺎ ﻗﺒﻞ
ﺗﻌﺪادی اﻧﺴﺎن ﺟﻤﻌﺎ ﯾﮏ ﺟﺪول اﺳﺘﺎﻧﺪارد ﺑﻪ ﻧﺎم ﺟﺪول اﺳﮑﯽ را ﺑﻪ ﻋﻨﻮان اﻋﺪاد ﻣﻮرد ﻧﻈﺮ ﺑﺮای
ﻧﻤﺎﯾﺶ ﺣﺮوف ﺗﺸﮑﯿﻞ دادﻧﺪ .ﺑﺮای ﻣﺜﺎل ﺣﺮف Aرا ﺑﺎ ﻋﺪد ۶۵ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ B ٬را ﺑﺎ ﻋﺪد ۶۶و
ﺑﻪ ﻫﻤﯿﻦ ﺗﺮﺗﯿﺐ . ...اﯾﻦ ﺟﺪول ﺷﺎﻣﻞ ﻋﻼﺋﻢ ﻧﮕﺎرﺷﯽ و دﯾﮕﺮ ﺳﻤﺒﻮلﻫﺎ ﻧﯿﺰ اﺳﺖ.
دﯾﮕﺮ ﮐﺎرا ﮐﺘﺮﻫﺎ ﻣﺎﻧﻨﺪ ﺣﺮوف ﺑﺎ ﻋﻼﺋﻢ ﺗﻠﻔﻈﯽ و اﯾﻤﻮﺟﯽﻫﺎ ﺑﺨﺸﯽ از ﯾﮏ اﺳﺘﺎﻧﺪار ﺑﻪ ﻧﺎم unicode
ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﯿﺖﻫﺎی ﺑﯿﺸﺘﺮ ی ﻧﺴﺒﺖ ﺑﻪ اﺳﺘﺎﻧﺪارد اﺳﮑﯽ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ ﺗﺎ اﯾﻦ ﮐﺎرا ﮐﺘﺮﻫﺎ را در ﺧﻮد
ﺟﺎ دﻫﺪ.
3
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
وﻗﺘﯽ ﻣﺎ ﯾﮏ اﯾﻤﻮﺟﯽ درﯾﺎﻓﺖ ﻣﯽﮐﻨﯿﻢ ٬ﮐﺎﻣﭙﯿﻮﺗﺮﻣﺎ در واﻗﻊ ﯾﮏ ﻋﺪد دﻫﺪﻫﯽ ﻣﺎﻧﻨﺪ ۱۲۸۵۱۴
) (۱۱۱۱۱۰۱۱۰۰۰۰۰۰۰۱۰درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ ﮐﻪ اﻣﻮﺟﯽ ﻣﻮرد ﻧﻈﺮ را ﻧﺸﺎن ﻣﯽ دﻫﺪ .
ﯾﮏ ﺗﺼﻮﯾﺮ ﻧﯿﺰ از ﺑﺴﯿﺎر ی از ﻧﻘﺎط ﻣﺮﺑﻌﯽ ﮐﻮﭼﮏ ﯾﺎ ﭘﯿﮑﺴﻞ ﺗﺸﮑﯿﻞ ﺷﺪه اﺳﺖ ﮐﻪ ﻫﺮ ﯾﮏ از آﻧﻬﺎ را
ﻣﯽ ﺗﻮان ﺑﻪ ﺻﻮرت ﺑﺎﯾﻨﺮ ی ﺑﺎ ﺳﯿﺴﺘﻤﯽ ﺑﻪ ﻧﺎم RGBﻧﺸﺎن داد ،ﺑﺎ دادن ﻣﻘﺎدﯾﺮ ﻣﺨﺘﻠﻒ ﺑﻪ ﻫﺮ ﯾﮏ
از رﻧﮓ ﻫﺎی ﻗﺮﻣﺰ ،ﺳﺒﺰ و آﺑﯽ ،ﻣﯽ ﺗﻮاﻧﯿﻢ ﻣﯿﻠﯿﻮن ﻫﺎ رﻧﮓ ﻣﺨﺘﻠﻒ ﺑﺴﺎزﯾﻢ :
اﯾﻦ ﻣﻘﺎدﯾﺮ از رﻧﮓ ﻫﺎی ﻗﺮﻣﺰ ،ﺳﺒﺰ و آﺑﯽ ﺑﺮای ﺑﺪﺳﺖ آوردن رﻧﮓ زرد روﺷﻦ ﺗﺮﮐﯿﺐ ﻣﯽ ﺷﻮﻧﺪ :
ا ﮔﺮ ﺑﻪ اﻧﺪازه ﮐﺎﻓﯽ ﺗﺼﻮﯾﺮﻣﺎن را ﺑﺰرگ ﮐﻨﯿﻢ ،ﻣﯽ ﺗﻮاﻧﯿﻢ ﭘﯿﮑﺴﻞ ﻫﺎی آﻧﺮا ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ :
اﻋﺪاد ﺑﺎﯾﻨﺮ ی ورودی ﺑﺎﯾﺪ ﺑﻪ ﻋﻨﻮان اﻋﺪاد، ﺑﺮﻧﺎﻣﻪﻫﺎی راﯾﺎﻧﻪای ،ﺑﺮ اﺳﺎس ﻣﺘﻦ ﮐﺪﺷﺎن ،ﻣﯽداﻧﻨﺪ ﮐﻪ
ﺣﺮوف ﯾﺎ ﭘﯿﮑﺴﻞ ﺗﻔﺴﯿﺮ ﺷﻮﻧﺪ.
4
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﻓﯿﻠﻢ ﻫﺎ ﻓﻘﻂ ﺗﺼﺎوﯾﺮ ﺑﺴﯿﺎر زﯾﺎدی ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎ ﺳﺮﻋﺖ زﯾﺎد و ﺑﻪ ﺻﻮرت ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺑﺎ ﺗﻌﺪادی
ﻓﺮﯾﻢ در ﺛﺎﻧﯿﻪ ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮﻧﺪ.
ﻣﻮﺳﯿﻘﯽ را ﻧﯿﺰ ﻣﯽﺗﻮان ﺑﺎ ﻧﺖ ﻫﺎی در ﺣﺎل ﭘﺨﺶ ،ﻣﺪت زﻣﺎن و ﺣﺠﻢ آﻧﻬﺎ ﻧﺸﺎن داد.
اﻟﮕﻮرﯾﺘﻢ ﻫﺎ
ﺑﻨﺎﺑﺮاﯾﻦ ا ﮐﻨﻮن ﻣﯽﺗﻮاﻧﯿﻢ ورودیﻫﺎ و ﺧﺮوﺟﯽﻫﺎ را ﺑﻪ ﺧﻮﺑﯽ ﻧﺸﺎن دﻫﯿﻢ .ﺟﻌﺒﻪ ﺳﯿﺎه ﻗﺒﻠﯽ ﺷﺎﻣﻞ
اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ) ،دﺳﺘﻮراﻟﻌﻤﻞﻫﺎی ﮔﺎم ﺑﻪ ﮔﺎم ﺑﺮای ﺣﻞ ﯾﮏ ﻣﺴﺌﻠﻪ( اﺳﺖ :
ﻣﺎ ﻣﯽﺧﻮاﻫﯿﻢ ﻧﺎم دوﺳﺘﻤﺎن ،ﻣﺎﯾﮏ اﺳﻤﯿﺖ را در دﻓﺘﺮﭼﻪ ﺗﻠﻔﻦ ﭘﯿﺪا ﮐﻨﯿﻢ.
ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ ور ق زدن ﺗﮏ ﺗﮏ ﺻﻔﺤﺎت دﻓﺘﺮﭼﻪ ،ﻧﺎم او را ﭘﯿﺪا ﮐﻨﯿﻢ و ﯾﺎ ﺑﺪون ﭘﯿﺪا ﮐﺮدن ﻧﺎم او ﺑﻪ
اﻧﺘﻬﺎی دﻓﺘﺮﭼﻪ ﺑﺮﺳﯿﻢ .اﯾﻦ اﻟﮕﻮرﯾﺘﻢ درﺳﺖ از زﯾﺮا ا ﮔﺮ ﻧﺎم او در دﻓﺘﺮﭼﻪ ﺑﺎﺷﺪ ﻧﻬﺎﯾﺘﺎ آن را ﭼﯿﺪا ﻣﯽ
ﮐﻨﯿﻢ .
ﻫﻤﭽﻨﺒﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ ﺻﻔﺤﺎت را دو ﺗﺎ دو ﺗﺎ ور ق ﺑﺰﻧﯿﻢ ؛اﻣﺎ اﯾﻦ اﻟﮕﻮرﯾﺘﻢ درﺳﺖ ﻧﯿﺴﺖ زﯾﺮا ﻣﻤﮑﻦ
اﺳﺖ ﺻﻔﺤﻪ ای ﮐﻪ ﻧﺎم او در آن اﺳﺖ را رد ﮐﻨﯿﻢ .
راه ﮐﺎرآﻣﺪ ﺗﺮ آن اﺳﺖ ﮐﻪ وﺳﻂ دﻓﺘﺮﭼﻪ را ﺑﺎز ﮐﻨﯿﻢ و ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﯾﻨﮑﻪ اﺑﻦ دﻓﺘﺮﭼﻪ ﺑﺮ اﺳﺎس ﺣﺮوف
اﻟﻔﺒﺎ ﻣﺮﺗﺐ ﺷﺪه اﺳﺖ ،ﺗﺸﺨﯿﺺ دﻫﯿﻢ ﮐﻪ ﻧﺎم ﻣﺪ ﻧﻈﺮ در ﺳﻤﺖ راﺳﺖ اﺳﺖ ﯾﺎ ﭼﭗ و ﺑﻪ ﻫﻤﯿﻦ
5
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
راﺣﺘﯽ ﻓﻀﺎی ﻣﺴﺌﻠﻪ را ﻧﺼﻒ ﮐﻨﯿﻢ .ﺑﺎ ﺗﮑﺮار اﯾﻦ روش ﻓﻀﺎی ﻣﺴﺌﻠﻪ ﻫﺮ ﺑﺎر ﻧﺼﻒ ﻣﯽ ﺷﻮد .ﺑﺮای
ﻣﺜﺎل ا ﮔﺮ ﺑﺎ ١٠٢٤ﺻﻔﺤﻪ ﺷﺮوع ﮐﻨﯿﻢ ﺑﺎ ١٠ﺑﺎر اﻋﻤﺎل اﯾﻦ روش ﺑﻪ ﯾﮏ ﺗﮏ ﺻﻔﺤﻪ ﺧﻮاﻫﯿﻢ رﺳﯿﺪ .
اوﻟﯿﻦ راه ﺣﻞ ﻣﺎ ﮐﻪ ﻫﺮ ﺑﺎر ﯾﮏ ﺻﻔﺤﻪ را ور ق ﻣﯽ زدﯾﻢ ،ﻣﺎﻧﻨﺪ ﺧﻂ ﻗﺮﻣﺰ اﺳﺖ :ﺑﺎ اﻓﺰاﯾﺶ اﻧﺪازه
ﻣﺴﺌﻠﻪ ،زﻣﺎن ﺣﻞ ﻣﺎ ﺑﻪ ﺻﻮرت ﺧﻄﯽ اﻓﺰاﯾﺶ ﻣﯽ ﯾﺎﺑﺪ.
راه ﺣﻞ دوم ،ﮐﻪ دو ﺻﻔﺤﻪ ای ور ق ﻣﯽ زدﯾﻢ ،ﻣﺎﻧﻨﺪ ﺧﻂ زرد اﺳﺖ :ﺷﯿﺐ ﻣﺎ ﮐﻤﺘﺮ ﺷﯿﺐ دار اﺳﺖ،
اﻣﺎ ﻫﻨﻮز ﻫﻢ ﺧﻄﯽ اﺳﺖ.
راه ﺣﻞ ﻧﻬﺎﯾﯽ ﻣﺎ ﻣﺎﻧﻨﺪ ﺧﻂ ﺳﺒﺰ اﺳﺖ :ﻟﮕﺎرﯾﺘﻤﯽ اﺳﺖ .از آﻧﺠﺎ ﮐﻪ زﻣﺎن ﺣﻞ ﻣﺎ ﺑﺎ اﻓﺰاﯾﺶ اﻧﺪازه
ﻣﺴﺌﻠﻪ ،آﻫﺴﺘﻪ و آﻫﺴﺘﻪ اﻓﺰاﯾﺶ ﻣﯽﯾﺎﺑﺪ .ﺑﻪ ﻋﺒﺎرت دﯾﮕﺮ ،ا ﮔﺮ دﻓﺘﺮﭼﻪ ﺗﻠﻔﻦ از ۱۰۰۰ﺻﻔﺤﻪ ﺑﻪ ۲۰۰۰
ﺻﻔﺤﻪ ﻣﯽ رﺳﯿﺪ ،ﺑﺮای ﯾﺎﻓﺘﻦ ﻣﺎﯾﮏ ﻓﻘﻂ ﺑﻪ ﯾﮏ ﻣﺮﺣﻠﻪ دﯾﮕﺮ اﺣﺘﯿﺎج داﺷﺘﯿﻢ .ا ﮔﺮ اﻧﺪازه از ۲۰۰۰ﺑﻪ
۴۰۰۰ﺻﻔﺤﻪ دوﺑﺎره دو ﺑﺮاﺑﺮ ﺷﻮد ،ﻣﺎ ﻓﻘﻂ و ﻓﻘﻂ ﺑﻪ ﯾﮏ ﻣﺮﺣﻠﻪ دﯾﮕﺮ اﺣﺘﯿﺎج دارﯾﻢ.
6
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﺷﺒﻪ ﮐﺪ
ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ روش ﺣﻞ ﻣﺴﺌﻠﻪ ء ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از زﺑﺎن اﻧﮕﻠﯿﺴﯽ ﯾﺎ ﻫﺮ زﺑﺎن دﯾﮕﺮ ی ﺑﻪ ﺻﻮرت
ﻣﺮﺣﻠﻪ ﺑﻪ ﻣﺮﺣﻠﻪ ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ ﺑﻪ آن ﺷﺒﻪ ﮐﺪ ﻣﯽ ﮔﻮﯾﻨﺪ ﮐﻪ ﺑﻪ ﻧﺴﺨﻪ ی ﻏﯿﺮ رﺳﻤﯽ از اﻟﮕﻮرﯾﺘﻢ اﺳﺖ .
Look at page
Call Mike
Else
Quit
ﺑﻌﻀﯽ از اﯾﻦ ﺳﻄﺮﻫﺎ ﺑﺎ ﻓﻌﻞ اﻣﺮ ی ﯾﺎ ﯾﮏ ﻋﻤﻞ ﺷﺮوع ﻣﯽ ﺷﻮﻧﺪ .در ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﻪ اﯾﻦ ﺳﻄﺮ ﻫﺎ
ﺑﻪ ﻧﻮﻋﯽ ﻓﺮاﺧﻮاﻧﯽ ﺗﺎﺑﻊ ﻣﯽ ﮔﻮﯾﻨﺪ:
Pick up
Open to
Look at
Call
Open to
Open to
Quit
7
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﻣﺎ ﻫﻤﭽﻨﯿﻦ ﺷﺎﺧﻪﻫﺎﯾﯽ دارﯾﻢ ﮐﻪ ﺑﻪ ﻣﺴﯿﺮﻫﺎی ﻣﺨﺘﻠﻒ ﻣﻨﺘﻬﯽ ﻣﯽ ﺷﻮﻧﺪ ،ﻣﺎﻧﻨﺪ دوراﻫﯽ ﻣﻮﺟﻮد در
ﺟﺎده ،ﮐﻪ آﻧﻬﺎ را ﺷﺮط ﻣﯽﻧﺎﻣﯿﻢ :
If
Else if
Else if
Else
Quit
و ﺳﻮاﻻﺗﯽ ﮐﻪ ﺗﺼﻤﯿﻢ ﻣﯽ ﮔﯿﺮﻧﺪ ﺑﻪ ﮐﺠﺎ ﺑﺮوﯾﻢ ﻋﺒﺎرات ﺑﻮﻟﯿﻦ ﻧﺎﻣﯿﺪه ﻣﯽﺷﻮﻧﺪ ،ﮐﻪ در ﻧﻬﺎﯾﺖ ﺑﻪ ﯾﮏ
ﻣﻘﺪار درﺳﺖ ﯾﺎ ﻏﻠﻂ ﻣﻨﺠﺮ ﻣﯽ ﺷﻮﻧﺪ :
Smith is on page
ﻫﻤﭽﻨﯿﻦ ﮐﻠﻤﺎﺗﯽ را دارﯾﻢ ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ ﺗﮑﺮار ﺷﺪن ﺑﺨﺸﯽ از ﺑﺮﻧﺎﻣﻪ ی ﻣﺎ ﻣﯽ ﺷﻮﻧﺪ ﮐﻪ ﺑﻪ اﯾﻦ داﺗﻔﺎق
ﺣﻠﻘﻪ ) ﻟﻮپ ( ﻣﯽ ﮔﻮƒﻢ :
8
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
اﺳﮑﺮ چ
ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ ﺑﻠﻮک ﻫﺎی ﺳﺎﺧﺘﻤﺎﻧﯽ ﮐﻪ ﺗﺎزه ﮐﺸﻒ ﮐﺮدﯾﻢ ﺑﺮﻧﺎﻣﻪ ﺑﻨﻮﯾﺴﯿﻢ:
ﺗﻮاﺑﻊ
ﻋﺒﺎرات ﺷﺮﻃﯽ
ﻋﺒﺎرات ﺑﻮﻟﯿﻦ
ﺣﻠﻘﻪﻫﺎ
ﻣﺎ ﺑﺮای ﺷﺮوع از ﯾﮏ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﮔﺮاﻓﯿﮑﯽ و ﺳﺎده ﺑﻪ ﻧﺎم Scratchاﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ ،ﺑﻪ
ﻃﻮر ی ﮐﻪ ﺑﻠﻮک ﻫﺎی ﺣﺎوی دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ را ﮐﺸﯿﺪه و رﻫﺎ ﻣﯽ ﮐﻨﯿﻢ.
ﺑﻌﺪًا در دوره ،ﺑﺎ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺘﻨﯽ ﻣﺎﻧﻨﺪ Python ، Cو JavaScriptﻫﻢ ﮐﺎر ﺧﻮاﻫﯿﻢ ﮐﺮد
.ﻫﻤﻪ اﯾﻦ زﺑﺎنﻫﺎ ،از ﺟﻤﻠﻪ ، Scratchدارای وﯾﮋﮔﯽﻫﺎی ﻗﺪرﺗﻤﻨﺪی ﻣﺎﻧﻨﺪ:
ﻣﺘﻐﯿﺮﻫﺎ
ﺗﺮدﻫﺎ
اﯾﻮﻧﺖﻫﺎ
...
9
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
در ﺳﻤﺖ ﭼﭗ ،ﻣﺎ ﻗﻄﻌﺎت ﭘﺎزﻟﯽ دارﯾﻢ ﮐﻪ ﻧﻤﺎﯾﺎﻧﮕﺮ ﺗﻮاﺑﻊ ،ﻣﺘﻐﯿﺮﻫﺎ ﯾﺎ ﻣﻔﺎﻫﯿﻢ دﯾﮕﺮ ی ﻫﺴﺘﻨﺪ ﮐﻪ
ﻣﯽ ﺗﻮاﻧﯿﻢ آﻧﻬﺎ را ﺑﮑﺸﯿﻢ و در ﻓﻀﺎی ﻣﺮﮐﺰ ی رﻫﺎ ﮐﻨﯿﻢ .
در ﺳﻤﺖ راﺳﺖ ،ﻗﺴﻤﺘﯽ دارﯾﻢ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﻢ در آن ﮐﺎرﮐﺘﺮ ﻫﺎی ﺟﺪﯾﺪی اﺿﺎﻓﻪ ﮐﻨﯿﻢ .
ﺑﻠﻮک " "when green flag clickedﺷﺮوع ﺑﺮﻧﺎﻣﻪ ﻣﺎﺳﺖ و زﯾﺮ آن ﯾﮏ ﺑﻠﻮک " "sayرا ﭼﺴﺒﺎﻧﺪﯾﻪ اﯾﻢ ﮐﻪ
""hello, worldرا در آن ﺗﺎﯾﭗ ﮐﺮدهاﯾﻢ.
ﻫﻤﭽﻨﯿﻦ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﻠﻮک " "ask and waitرا ﺑﺎ ﺳﻮاﻻﺗﯽ ﻣﺎﻧﻨﺪ " "?What’s your nameﺑﮑﺸﯿﻢ و ﺑﺮای
ﭘﺎﺳﺦ ﺑﺎ ﺑﻠﻮک " "sayﺗﺮﮐﯿﺐ ﮐﻨﯿﻢ :
10
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
اﻣﺎ ﺑﻌﺪ از ﮔﻔﺘﻦ " "!Helloﺑﺎاﺳﺘﻔﺎده از اوﻟﯿﻦ ﺑﻠﻮک ﻣﻨﺘﻈﺮ ﻧﻤﺎﻧﺪﯾﻢ ،ﺑﻨﺎﺑﺮاﯾﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک
ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک " "joinﺑﺮای ﺗﺮﮐﯿﺐ دو ﻋﺒﺎرت اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﺗﺎ Scratchﺑﺘﻮاﻧﺪ ﺑﮕﻮﯾﺪ”hello, David”:
11
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
در ﺣﻘﯿﻘﺖ ،ﺑﻠﻮک " "sayاﻟﮕﻮرﯾﺘﻤﯽ اﺳﺖ ﮐﻪ ﻣﺎ " "hello, worldرا ﺑﻪ ﻋﻨﻮان ورودی ﺑﻪ آن دادﯾﻢ
) Scratchﮔﺮﺑﻪ( ﺑﺎ ﮔﻔﺘﻦ آن ﺧﺮوﺟﯽ را ﺗﻮﻟﯿﺪ ﮐﺮد : و
ﺑﻠﻮک " "askﻧﯿﺰ ورودی )ﺳﻮاﻟﯽ ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﺑﭙﺮﺳﯿﻢ( را ﻣﯽ ﮔﯿﺮد و ﺧﺮوﺟﯽ ﺑﻠﻮک " "answerرا
ﺑﻪ ﻋﻨﻮان دو ورودی اﻟﮕﻮرﯾﺘﻢ " " join ﺳﭙﺲ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک " "answerﻫﻤﺮاه ﺑﺎ ﻣﺘﻦ ﺧﻮد ،
اﺳﺘﻔﺎده ﮐﻨﯿﻢ...
12
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
و ﺧﺮوﺟﯽ آن ﺑﻪ ﻋﻨﻮان ورودی اﻟﮕﻮرﯾﺘﻢ " " sayﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد .
13
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﻣﺎ ﻣﯽﺗﻮاﻧﯿﻢ ﻧﻘﻄﻪ Scratchرا ﺑﻪ ﺳﻤﺖ ﻣﺎوس داﺷﺘﻪ ﺑﺎﺷﯿﻢ و ﺑﻪ ﺳﻤﺖ آن ﺣﺮﮐﺖ ﮐﻨﯿﻢ :
14
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﺗﻨﻈﯿﻢ ﮐﻨﯿﻢ ،اﺳﺘﻔﺎده ﮐﻨﯿﻢ و ﺗﻐ•ﺮ در اﯾﻨﺠﺎ counter ،ﻣﺘﻐﯿﺮ ی اﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﻢ ﻣﻘﺪار آن را
دﻫﯿﻢ.
ا ﮔﺮ آن را ﺑﺎ اﺷﺎره ﮔﺮ ﻣﺎوس ﻟﻤﺲ ﮐﻨﯿﻢ ،ﻣﯽﺗﻮاﻧﯿﻢ ﮐﺎر ی ﮐﻨﯿﻢ ﮐﻪ spriteﻣﯿﻮ ﮐﻨﺪ .
را ﺑﺸﻨﻮﯾﻢ : ا ﮔﺮ اﯾﻦ ﮐﺎر را اﻧﺠﺎم دﻫﯿﻢ ،ﻣﯽﺗﻮاﻧﯿﻢ ﻏﺮش Scratch
در اﯾﻨﺠﺎ ،ﻣﺎ دو ﺷﺎﺧﻪ ﯾﺎ ﺷﺮاﯾﻂ ﻣﺨﺘﻠﻒ دارﯾﻢ ﮐﻪ ﺑﺮای ﻫﻤﯿﺸﻪ ﺗﮑﺮار ﻣﯽﺷﻮﻧﺪ .ا ﮔﺮ ﻣﺎوس آن را
ﻟﻤﺲ ﮐﻨﺪ "Scratch " ،ﻏﺮش ﻣﯽ ﮐﻨﺪ ،در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻓﻘﻂ ﻣﯿﻮ ﻣﯽ ﮐﻨﺪ.
15
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﻣﯽﺗﻮاﻧﯿﻢ Scratchرا ﺑﺎ ﭼﻨﺪ ﺑﻠﻮک دﯾﮕﺮ ﺑﻪ ﺳﻤﺖ ﻋﻘﺐ ﯾﺎ ﺟﻠﻮ ﺣﺮﮐﺖ دﻫﯿﻢ :
16
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﺑﺎ دو " "costumeﻣﺨﺘﻠﻒ ،ﯾﺎ دو ﺗﺼﻮﯾﺮ ﻣﺘﻔﺎوت scratchﮐﻪ در آن ﻣﻮﻗﻌﯿﺖ ﻫﺎی ﻣﺘﻔﺎوﺗﯽ دارد ،
ﺣﻨﯽ ﻣﯽ ﺗﻮان ﺗﺼﻮﯾﺮ ی ﻣﺘﺤﺮک ﺳﺎﺧﺖ.
17
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﺑﻪ ﺑﺮﻧﺎﻣﻪ دﯾﮕﺮ ی ﻧﮕﺎه ﻣﯽﮐﻨﯿﻢ ،ﮐﻪ در آن ﻣﯽﺗﻮاﻧﯿﻢ از spaceﺑﺮای ﺳﺎ ﮐﺖ ﮐﺮدن ﯾﮏ ﺷﯿﺮ درﯾﺎﯾﯽ
اﺳﺘﻔﺎده ﮐﻨﯿﻢ:
ﻣﺎ ﻣﺘﻐﯿﺮ ی ﺑﻪ ﻧﺎم ” “ mutedدارﯾﻢ ﮐﻪ ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض falseاﺳﺖ .و ﺑﺮﻧﺎﻣﻪ ﻣﺎ داﺋﻤًﺎ ﺑﺮرﺳﯽ ﻣﯽ
ﮐﻨﺪ ﮐﻪ آﯾﺎ ﮐﻠﯿﺪ spaceﻓﺸﺮده ﺷﺪه اﺳﺖ ﯾﺎ ﺧﯿﺮ ،و ا ﮔﺮ ﻓﺸﺮده ﺷﺪه ﺑﺎﺷﺪ ،ﻣﺘﻐﯿﺮ ﺑﻪ trueﺗﻐ•ﺮ ﻣﯽ
ﯾﺎﺑﺪ .در واﻗﻊ ا ﮔﺮ ﺑﺮﻧﺎﻣﻪ mutedﺑﺎﺷﺪ ﺑﺎ ﻓﺸﺮدن spaceاز آن ﺣﺎﻟﺖ در ﮐﯽ آﯾﺪ و ا ﮔﺮ ﻧﺒﺎﺷﺪ ،
mutedﻣﯽ ﺷﻮد .
18
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
از اﯾﻦ ﻃﺮﯾﻖ ،ﻣﯽﺗﻮان ﺿﺎﻣﻦ ﺑﻮد ﮐﻪ ﺻﺪا ﭘﺨﺶ ﻣﯽﺷﻮد ﯾﺎ ﻧﻪ ،زﯾﺮا ﻣﺠﻤﻮﻋﻪ دﯾﮕﺮ ی از ﺑﻠﻮکﻫﺎی
ﻣﻮﺟﻮد در ﺑﺮﻧﺎﻣﻪ ﺷﯿﺮ درﯾﺎﯾﯽ ﻣﺘﻐﯿﺮ mutedرا ﺑﺮرﺳﯽ ﻣﯽ ﮐﻨﻨﺪ :
ﺑﺎ اﯾﺠﺎد ﭼﻨﺪ روح) (spriteﯾﺎ ﮐﺎرا ﮐﺘﺮ ،ﻣﯽ ﺗﻮاﻧﯿﻢ ﻣﺠﻤﻮﻋﻪ ای از ﺑﻠﻮک ﻫﺎ ﮐﻪ در واﻗﻊ ﺑﺮﻧﺎﻣﻪ ی ﻣﺮﺑﻮط
: ﺑﻪ آن ﮐﺎرﮐﺘﺮ ﺧﺎص ﻫﺴﺘﻨﺪ را ﺑﻪ ﻃﻮر ﺟﺪا ﮔﺎﻧﻪ ﺑﺴﺎزﯾﻢ
19
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﮐﺎرﮐﺘﺮ اول ﺗﻨﻬﺎ ﻣﯽ ﺗﻮاﻧﺪ ﺑﮕﻮﯾﺪ ” ”marcoو ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺑﻠﻮک " "broadcast eventﯾﮏ ﭘﯿﺎم
ﻣﺨﻔﯽ را ﺑﺮای ﮐﺎرﮐﺘﺮ دوم ارﺳﺎل ﮐﻨﺪ .ﻫﻨﮕﺎﻣﯽ ﮐﻪ اﯾﻦ ﭘﯿﺎم ﺑﻪ ﮐﺎرﮐﺘﺮ دوم ﻣﻨﺘﻘﻞ ﻣﯽ ﺷﻮد ﻣﯽ ﮔﻮﯾﺪ
”“polo
ﺣﺎل ﮐﻪ ﺗﻌﺪادی از اﺻﻮل را آﻣﻮﺧﺘﯿﻢ وﻗﺖ آن اﺳﺖ ﮐﻪ ﺑﻪ روش ﻃﺮاﺣﯽ و ﮐﯿﻔﯿﺖ ﺑﺮﻧﺎﻣﻪ ) ذاه ﺣﻞ
ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ ﺗﮑﺮار ﺑﺮﺧﯽ از ﺑﻠﻮک ﻫﺎ ﮐﺎر ی ﮐﻨﯿﻢ ﮐﻪ ﮔﺮﺑﻪ scratchﺳﻪ ﺧﻮد ( ﻓﮑﺮ ﮐﻨﯿﻢ .ﺑﺮای ﻣﺜﺎل
ﮐﻨﺪ : ﺑﺎر ﺳﺮﻓﻪ
20
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ا ﮔﺮ ﭼﻪ اﯾﻦ راه ﺣﻞ ﮐﺎﻣﻼ درﺳﺖ اﺳﺖ اﻣﺎ ﺑﺮای ﺟﻠﻮﮔﯿﺮ ی از ﺳﻪ ﺑﺎر ﺗﮑﺮار ﺷﺪن ﯾﮏ ﺑﻠﻮک ﻣﯽ ﺗﻮاﻧﯿﻢ
از اﯾﺠﺎد ﯾﮏ ﺣﻠﻘﻪ اﺳﺘﻔﺎده ﮐﻨﯿﻢ :
ﻣﺮﺣﻠﻪ ﺑﻌﺪی ﺟﻤﻊ ﮐﺮدن ﺗﻌﺪادی از ﺑﻠﻮک ﻫﺎ ) ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ ﻋﻤﻞ ﺧﺎﺻﯽ ﻣﯽ ﺷﻮﻧﺪ ( در ﯾﮏ ﺑﻠﻮک و
در واﻗﻊ اﯾﺠﺎد ﯾﮏ ﺗﺎﺑﻊ ﺟﺪﯾﺪ اﺳﺖ .ﺑﺮای ﻣﺜﺎل ﻣﺎ ﻣﯽﺗﻮاﻧﯿﻢ ﯾﮏ ﺑﻠﻮک ﺑﻪ ﻧﺎم " "coughاﯾﺠﺎد ﮐﻨﯿﻢ
و ﺑﺮﺧﯽ ﺑﻠﻮک ﻫﺎ را داﺧﻞ آن ﻗﺮار دﻫﯿﻢ :
ا ﮐﻨﻮن ،ﻫﻤﻪ ﺷﺨﺼﯿﺖﻫﺎی ﻣﺎ ﻣﯽﺗﻮاﻧﻨﺪ در ﻫﺮ ﻣﮑﺎن ﮐﻪ ﻣﺎ ﻣﯽﺧﻮاﻫﯿﻢ ،از ﺑﻠﻮک " "coughاﺳﺘﻔﺎده
ﮐﻨﻨﺪ.
21
ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ( CS50
ﻣﺪرس دوره :ﻋﺎرف ﺗﻮﺳﻠﯽ
ﻣﺎ ﺣﺘﯽ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﻪ ﺗﺎﺑﻊ coughﺧﻮد ﺗﻌﺪاد دﻓﻌﺎت ﺳﺮﻓﻪ ﮐﺮدن را ﻫﻢ وارد ﮐﻨﯿﻢ ،ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺮای
ﻣﺸﺨﺺ ﮐﺮدن ﺗﻌﺪاد ﺳﺮﻓﻪ ﻫﺎ ﻓﻘﻂ ﺑﻪ ﯾﮏ ﺑﻠﻮک اﺿﺎﻓﻪ ﺗﺮ ﻧﯿﺎز دارﯾﻢ :
22