0% found this document useful (0 votes)
173 views22 pages

00 J Week Zero

Uploaded by

fsmondiolatiro
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
173 views22 pages

00 J Week Zero

Uploaded by

fsmondiolatiro
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬

‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫ﺟ ﻠﺴ ﻪ ﺻ ﻔ ﺮ‬

‫ﺧﻮشآﻣﺪ ﮔﻮﯾﯽ‬ ‫•‬


‫ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ ﭼﯿﺴﺖ؟‬ ‫•‬
‫دودوﯾﯽ‬ ‫•‬
‫ﺗﺼﺎوﯾﺮ‪ ،‬وﯾﺪﺋﻮ ﻫﺎ‪ ،‬ﺻﺪا ﻫﺎ‬ ‫•‬
‫ﻧﻤﺎﯾﺶ اﻃﻼﻋﺎت‬ ‫•‬
‫اﻟﮕﻮرﯾﺘﻢﻫﺎ‬ ‫•‬
‫ﺷﺒﻪ ﮐﺪ‬ ‫•‬
‫اﺳﮑﺮ چ‬ ‫•‬

‫ﺧﻮشآﻣﺪ ﮔﻮﯾﯽ‬ ‫‪-‬‬

‫وﻗﺘﯽ دﯾﻮﯾﺪ)ﻣﺪرس دوره ‪ 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‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫ﺷﺒﻪ ﮐﺪ‬

‫ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ روش ﺣﻞ ﻣﺴﺌﻠﻪ ء ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از زﺑﺎن اﻧﮕﻠﯿﺴﯽ ﯾﺎ ﻫﺮ زﺑﺎن دﯾﮕﺮ ی ﺑﻪ ﺻﻮرت‬
‫ﻣﺮﺣﻠﻪ ﺑﻪ ﻣﺮﺣﻠﻪ ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ ﺑﻪ آن ﺷﺒﻪ ﮐﺪ ﻣﯽ ﮔﻮﯾﻨﺪ ﮐﻪ ﺑﻪ ﻧﺴﺨﻪ ی ﻏﯿﺮ رﺳﻤﯽ از اﻟﮕﻮرﯾﺘﻢ اﺳﺖ ‪.‬‬

‫‪Pick up phone book‬‬

‫‪Open to middle of phone book‬‬

‫‪Look at page‬‬

‫‪If Smith is on page‬‬

‫‪Call Mike‬‬

‫‪Else if Smith is earlier in book‬‬

‫‪Open to middle of left half of boo‬‬

‫‪Go back to line 3‬‬

‫‪Else if Smith is later in book‬‬

‫‪Open to middle of right half of book‬‬

‫‪Go back to line 3‬‬

‫‪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‬‬

‫‪Smith is earlier in book‬‬

‫‪Smith is later in book‬‬

‫ﻫﻤﭽﻨﯿﻦ ﮐﻠﻤﺎﺗﯽ را دارﯾﻢ ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ ﺗﮑﺮار ﺷﺪن ﺑﺨﺸﯽ از ﺑﺮﻧﺎﻣﻪ ی ﻣﺎ ﻣﯽ ﺷﻮﻧﺪ ﮐﻪ ﺑﻪ اﯾﻦ داﺗﻔﺎق‬
‫ﺣﻠﻘﻪ ) ﻟﻮپ ( ﻣﯽ ﮔﻮ‪ƒ‬ﻢ ‪:‬‬

‫‪Go back to line 3‬‬

‫‪Go back to line 3‬‬

‫‪8‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫اﺳﮑﺮ چ‬

‫ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ ﺑﻠﻮک ﻫﺎی ﺳﺎﺧﺘﻤﺎﻧﯽ ﮐﻪ ﺗﺎزه ﮐﺸﻒ ﮐﺮدﯾﻢ ﺑﺮﻧﺎﻣﻪ ﺑﻨﻮﯾﺴﯿﻢ‪:‬‬

‫ﺗﻮاﺑﻊ‬

‫ﻋﺒﺎرات ﺷﺮﻃﯽ‬

‫ﻋﺒﺎرات ﺑﻮﻟﯿﻦ‬

‫ﺣﻠﻘﻪﻫﺎ‬

‫ﻣﺎ ﺑﺮای ﺷﺮوع از ﯾﮏ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﮔﺮاﻓﯿﮑﯽ و ﺳﺎده ﺑﻪ ﻧﺎم ‪ Scratch‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ ‪ ،‬ﺑﻪ‬
‫ﻃﻮر ی ﮐﻪ ﺑﻠﻮک ﻫﺎی ﺣﺎوی دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ را ﮐﺸﯿﺪه و رﻫﺎ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫ﺑﻌﺪًا در دوره ‪ ،‬ﺑﺎ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺘﻨﯽ ﻣﺎﻧﻨﺪ ‪Python ، C‬و ‪ JavaScript‬ﻫﻢ ﮐﺎر ﺧﻮاﻫﯿﻢ ﮐﺮد‬
‫‪ .‬ﻫﻤﻪ اﯾﻦ زﺑﺎنﻫﺎ‪ ،‬از ﺟﻤﻠﻪ ‪ ، Scratch‬دارای وﯾﮋﮔﯽﻫﺎی ﻗﺪرﺗﻤﻨﺪی ﻣﺎﻧﻨﺪ‪:‬‬

‫ﻣﺘﻐﯿﺮﻫﺎ‬

‫ﺗﻮاﻧﺎﯾﯽ ذﺧﯿﺮه ﻣﻘﺎدﯾﺮ و ﺗﻐ•ﺮ آﻧﻬﺎ‬

‫ﺗﺮدﻫﺎ‬

‫ﺗﻮاﻧﺎﯾﯽ ﺑﺮﻧﺎﻣﻪ ﻣﺎ ﺑﺮای اﻧﺠﺎم ﭼﻨﺪﯾﻦ ﮐﺎر ﻫﻤﺰﻣﺎن‬

‫اﯾﻮﻧﺖﻫﺎ‬

‫ﺗﻮاﻧﺎﯾﯽ ﭘﺎﺳﺨﮕﻮﯾﯽ ﺑﻪ ﺗﻐ•ﺮات ﺑﺮﻧﺎﻣﻪ ﯾﺎ ورودی ﻫﺎی ﻣﺎ‬

‫‪...‬‬

‫‪9‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫ﻣﺤﯿﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﺮای ‪ Scratch‬ﺑﻪ اﯾﻦ ﺷﮑﻞ اﺳﺖ‪:‬‬

‫در ﺳﻤﺖ ﭼﭗ ‪ ،‬ﻣﺎ ﻗﻄﻌﺎت ﭘﺎزﻟﯽ دارﯾﻢ ﮐﻪ ﻧﻤﺎﯾﺎﻧﮕﺮ ﺗﻮاﺑﻊ ‪ ،‬ﻣﺘﻐﯿﺮﻫﺎ ﯾﺎ ﻣﻔﺎﻫﯿﻢ دﯾﮕﺮ ی ﻫﺴﺘﻨﺪ ﮐﻪ‬
‫ﻣﯽ ﺗﻮاﻧﯿﻢ آﻧﻬﺎ را ﺑﮑﺸﯿﻢ و در ﻓﻀﺎی ﻣﺮﮐﺰ ی رﻫﺎ ﮐﻨﯿﻢ ‪.‬‬

‫در ﺳﻤﺖ راﺳﺖ‪ ،‬ﻗﺴﻤﺘﯽ دارﯾﻢ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﻢ در آن ﮐﺎرﮐﺘﺮ ﻫﺎی ﺟﺪﯾﺪی اﺿﺎﻓﻪ ﮐﻨﯿﻢ ‪.‬‬

‫ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ اﺳﺘﻔﺎده از ﭼﻨﺪ ﺑﻠﻮک ﮐﺎر ی ﮐﻨﯿﻢ ﮐﻪ ‪ Scratch‬ﺑﮕﻮﯾﺪ‪"hello, world":‬‬

‫ﺑﻠﻮک "‪ "when green flag clicked‬ﺷﺮوع ﺑﺮﻧﺎﻣﻪ ﻣﺎﺳﺖ و زﯾﺮ آن ﯾﮏ ﺑﻠﻮک "‪ "say‬را ﭼﺴﺒﺎﻧﺪﯾﻪ اﯾﻢ ﮐﻪ‬
‫"‪"hello, world‬را در آن ﺗﺎﯾﭗ ﮐﺮدهاﯾﻢ‪.‬‬

‫ﻫﻤﭽﻨﯿﻦ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﻠﻮک "‪ "ask and wait‬را ﺑﺎ ﺳﻮاﻻﺗﯽ ﻣﺎﻧﻨﺪ "‪ "?What’s your name‬ﺑﮑﺸﯿﻢ و ﺑﺮای‬
‫ﭘﺎﺳﺦ ﺑﺎ ﺑﻠﻮک "‪ "say‬ﺗﺮﮐﯿﺐ ﮐﻨﯿﻢ ‪:‬‬

‫‪10‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫اﻣﺎ ﺑﻌﺪ از ﮔﻔﺘﻦ "‪ "!Hello‬ﺑﺎاﺳﺘﻔﺎده از اوﻟﯿﻦ ﺑﻠﻮک ﻣﻨﺘﻈﺮ ﻧﻤﺎﻧﺪﯾﻢ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک‬

‫"‪ "say () for () seconds‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ ‪:‬‬

‫ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک "‪ "join‬ﺑﺮای ﺗﺮﮐﯿﺐ دو ﻋﺒﺎرت اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﺗﺎ ‪ Scratch‬ﺑﺘﻮاﻧﺪ ﺑﮕﻮﯾﺪ‪”hello, David”:‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﻢ دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎ و ﻣﺘﻐﯿﺮﻫﺎ را ﺟﺎﯾﮕﺬار ی ﮐﻨﯿﻢ‪.‬‬

‫‪11‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫در ﺣﻘﯿﻘﺖ ‪ ،‬ﺑﻠﻮک "‪ "say‬اﻟﮕﻮرﯾﺘﻤﯽ اﺳﺖ ﮐﻪ ﻣﺎ "‪ "hello, world‬را ﺑﻪ ﻋﻨﻮان ورودی ﺑﻪ آن دادﯾﻢ‬
‫‪) Scratch‬ﮔﺮﺑﻪ( ﺑﺎ ﮔﻔﺘﻦ آن ﺧﺮوﺟﯽ را ﺗﻮﻟﯿﺪ ﮐﺮد ‪:‬‬ ‫و‬

‫ﺑﻠﻮک "‪ "ask‬ﻧﯿﺰ ورودی )ﺳﻮاﻟﯽ ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﺑﭙﺮﺳﯿﻢ( را ﻣﯽ ﮔﯿﺮد و ﺧﺮوﺟﯽ ﺑﻠﻮک "‪ "answer‬را‬

‫ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﺪ ‪:‬‬

‫ﺑﻪ ﻋﻨﻮان دو ورودی اﻟﮕﻮرﯾﺘﻢ " ‪" join‬‬ ‫ﺳﭙﺲ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺑﻠﻮک "‪ "answer‬ﻫﻤﺮاه ﺑﺎ ﻣﺘﻦ ﺧﻮد ‪،‬‬
‫اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪...‬‬

‫‪12‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫و ﺧﺮوﺟﯽ آن ﺑﻪ ﻋﻨﻮان ورودی اﻟﮕﻮرﯾﺘﻢ " ‪ " say‬ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد ‪.‬‬

‫‪13‬‬
‫ﺟﺰوه ﻫﻔﺘﻪ ﺻﻔﺮ دوره ی ﻣﺒﺎﻧﯽ ﻋﻠﻮم ﮐﺎﻣﭙﯿﻮﺗﺮ داﻧﺸﮕﺎه ﻫﺎروارد ) ‪( CS50‬‬
‫ﻣﺪرس دوره ‪ :‬ﻋﺎرف ﺗﻮﺳﻠﯽ‬

‫ﻣﯽﺗﻮاﻧﯿﻢ ﮐﺎر ی ﮐﻨﯿﻢ ﮐﻪ ‪) Scratch‬ﻧﺎم ﮔﺮﺑﻪ( ﺑﮕﻮﯾﺪ " ﻣﯿﻮ" ‪:‬‬

‫ﻣﺎ ﻣﯽﺗﻮاﻧﯿﻢ ﻧﻘﻄﻪ ‪ 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‬‬

You might also like