HW3.pdf

‫»ﺑﻪ ﻧﺎم ﺧﺪا«‬
‫ﺗﻮﻟﯿﺪ ﺑﺮﻧﺎﻣﻪ از ﺗﻮﺻﯿﻒ رﺳﻤ ‪ -‬ﻧﯿﻤﺴﺎل دوم ‪٩١-٩٢‬‬
‫ﺗﻤﺮﯾﻦ ‪) ٣‬ﻣﻬﻠﺖ ارﺳﺎل ﺗﺎ ‪ ٣١‬ﺧﺮداد ‪( ١٣٩٢‬‬
‫‪ ٢٨‬اردﯾﺒﻬﺸﺖ ‪١٣٩٢‬‬
‫‪١‬‬
‫ﺗﻤﺮﯾﻦﻫﺎی ﺗﺌﻮری ‪B‬‬
‫‪ .١‬ﻣﺎﺷﯿﻦ زﯾﺮ ﺑﺮای ﭘﺮدازش ‪ sequence‬ﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ‪:‬‬
‫‪١‬‬
‫اﻟﻒ( ﺳﺎزﮔﺎری داﺧﻠ ﻣﺎﺷﯿﻦ را ﺑﺮرﺳ و در ﺻﻮرت ﻋﺪم ﺳﺎزﮔﺎری ﺗﻐﯿﯿﺮات ﻻزم را اﻋﻤﺎل‬
‫ﻧﻤﺎﯾﯿﺪ‪.‬‬
‫ب( ﻋﻤﻠ ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ ﮐﻪ در آن ﻃﻮل ‪ sequence‬اول ﺑﺎزﮔﺮداﻧﺪه ﻣ ﺷﻮد‪.‬‬
‫پ( ﻋﻤﻠ ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ ﮐﻪ ‪ sequence‬دوم را ﺑﻪ اﻧﺘﻬﺎی ‪ sequence‬اول اﺿﺎﻓﻪ ﮐﺮده و‬
‫ﻧﺘﯿﺠﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪ .٢‬ﻣﺎﺷﯿﻦ زﯾﺮ ﺑﺮای ﻣﺪﯾﺮﯾﺖ ﻓﺮوش ﺑﻠﯿﺖ ﻃﺮاﺣ ﺷﺪه اﺳﺖ‪:‬‬
‫اﻟﻒ( آﯾﺎ ﻋﻤﻠﯿﺎت زﯾﺮ ﺑﺎ ‪ invariant‬اﯾﻦ ﻣﺎﺷﯿﻦ ﺳﺎزﮔﺎر اﺳﺖ؟‬
‫‪undo serve ≜ serve := serve − 1‬‬
‫ب( ﻣﺎﺷﯿﻦ را ﺑﻪ ﮔﻮﻧﻪای ﺗﻐﯿﯿﺮ دﻫﯿﺪ ﮐﻪ ﺑﯿﺸﺘﺮ از ﯾ‬
‫‪ .٣‬ﻫﺪف در اﯾﻦ ﺗﻤﺮﯾﻦ ﻃﺮاﺣ ﯾ‬
‫ﺣﺪ ﻣﺠﺎز اﻋﻼم ﺷﺪه‪ ،‬ﺑﻠﯿﺖ ﺻﺎدر ﻧ ﻨﺪ‪.‬‬
‫ﻣﺎﺷﯿﻦ ﻣﺠﺎزی ﺑﺮای ﻣﺪﯾﺮﯾﺖ ﯾ‬
‫ﭘﺎرﮐﯿﻨ‬
‫اﺳﺖ‪ .‬اﯾﻦ ﺳﯿﺴﺘﻢ ﺑﺎﯾﺪ ﻟﯿﺴﺖ ﻣﺎﺷﯿﻦﻫﺎﯾ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ در ﭘﺎرﮐﯿﻨ‬
‫ﮐﺮده و ﺳﻪ ﻋﻤﻠﯿﺎت زﯾﺮ را داﺷﺘﻪ ﺑﺎﺷﺪ‪:‬‬
‫اﻟﻒ( ﻋﻤﻠﯿﺎت ﺛﺒﺖ ورود و ﺧﺮوج ﯾ‬
‫ﻣﺎﺷﯿﻦ‬
‫ب( ﮔﺰارش ﺗﻌﺪاد ﻣﺎﺷﯿﻦﻫﺎ در ﭘﺎرﮐﯿﻨ‬
‫‪٢‬‬
‫ﺑﺎ ﻃﺮﻓﯿﺖ ﻣﺤﺪود‬
‫ﻫﺴﺘﻨﺪ را ﻧ ﻪداری‬
‫‪ .۴‬ﻣﺎﺷﯿﻦ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪:‬‬
‫ﺗﻮﺻﯿﻔ ﮐﻮﺗﺎه ﺑﻪ زﺑﺎن ﻃﺒﯿﻌ از ﻣﺎﺷﯿﻦ ﺑﻨﻮﯾﺴﯿﺪ و ﻣﺸﺨﺺ ﮐﻨﯿﺪ ﮐﺪام ﯾ‬
‫از ﻋﻤﻠﯿﺎتﻫﺎ ﺑﺎ‬
‫‪ invariant‬ﺳﺎزﮔﺎر ﻧﯿﺴﺘﻨﺪ‪ .‬ﺗﻐﯿﯿﺮات ﻻزم ﺑﺮ روی ﻋﻤﻠﯿﺎتﻫﺎ را اﻧﺠﺎم دﻫﯿﺪ‪.‬‬
‫‪ .۵‬ﻣﺎﺷﯿﻦ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪:‬‬
‫ﻗﻮاﻋﺪ ﺳﺎزﮔﺎری ﺑﺮای اﯾﻦ ﻣﺎﺷﯿﻦ را ﺑﺮرﺳ و ﻧﺎﺳﺎزﮔﺎریﻫﺎی اﺣﺘﻤﺎﻟ را ﻣﺸﺨﺺ ﮐﻨﯿﺪ‪.‬‬
‫‪٣‬‬
‫ﻣﺎﺷﯿﻦ ﻣﺠﺎزی ﺑﺮای ﻣﺪﯾﺮﯾﺖ ﯾ‬
‫‪ .۶‬در اﯾﻦ ﺗﻤﺮﯾﻦ‪ ،‬ﻫﺪف ﻃﺮاﺣ ﯾ‬
‫ﮐﺎﻻ ﺑﻪ ﻣﺸﺘﺮﯾﺎن اﺳﺖ‪ .‬اﯾﻦ ﺷﺮﮐﺖ دارای ﯾ‬
‫ﺷﺮﮐﺖ ﮐﻮﭼ‬
‫ارﺳﺎل‬
‫اﺗﻮﻣﺒﯿﻞ ﺑﺮای ارﺳﺎل ﮐﺎﻻ ﺑﻪ ﻣﺸﺘﺮﯾﺎن اﺳﺖ‪ .‬اﯾﻦ‬
‫ﺳﯿﺴﺘﻢ ﺑﺎﯾﺪ ﻗﺎﺑﻠﯿﺖ ﻧ ﻬﺪاری آدرسﻫﺎ و ﮐﺎﻻﻫﺎی ﻣﺮﺑﻮﻃﻪ را ﮐﻪ ﺑﺎﯾﺪ ارﺳﺎل آنﻫﺎ اﻧﺠﺎم ﺷﻮد‪،‬‬
‫داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻣﻤ ﻦ اﺳﺖ آدرسﻫﺎﯾ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ ﮐﻪ ﻓﻌﻼ ﺳﺮوﯾﺲدﻫ ﺑﻪ آنﻫﺎ‬
‫ﻣﻘﺪور ﻧﻤ ﺑﺎﺷﺪ‪ .‬اﯾﻦ آدرسﻫﺎ در ﻣﺠﻤﻮﻋﻪای ﺑﻪ ﻧﺎم ‪ not_supported‬ذﺧﯿﺮه ﻣ ﺷﻮﻧﺪ‪ .‬اﮔﺮ‬
‫ﮐﺎﻻﯾ ﺑﺮای ارﺳﺎل ﺛﺒﺖ ﺷﺪه ﺑﺎﺷﺪ ﮐﻪ آدرس آن در اﯾﻦ ﻣﺠﻤﻮﻋﻪ ﺑﺎﺷﺪ‪ ،‬ﮐﺎﻻ ﻧﻤ ﺗﻮاﻧﺪ ارﺳﺎل‬
‫ﺷﻮد‪.‬‬
‫در اﺑﺘﺪا ﻣﺎﺷﯿﻦ ارﺳﺎل ﺧﺎﻟ اﺳﺖ و ﻣﺠﻤﻮﻋﻪ ‪ not_supported‬ﻣﻤ ﻦ اﺳﺖ ﻫﺮ آدرﺳ در‬
‫آن وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫ﻋﻤﻠﯿﺎت زﯾﺮ ﺑﺮای اﯾﻦ ﻣﺎﺷﯿﻦ ﻣﻔﺮوض اﺳﺖ‪:‬‬
‫‪ : load (١‬اﺿﺎﻓﻪ ﮐﺮدن ﯾ‬
‫‪ : drop (٢‬رﺳﺎﻧﺪن ﯾ‬
‫ﮐﺎﻻ ﺑﺮای ارﺳﺎل‬
‫آدرس و ﯾ‬
‫ﮐﺎﻻی ﺧﺎص ﺑﻪ آدرس ﻣﺮﺑﻮﻃﻪ‬
‫‪ : return (٣‬ﺑﺮﮔﺮداﻧﺪن ﮐﺎﻻﻫﺎﯾ ﮐﻪ ارﺳﺎل آنﻫﺎ ﻣﻘﺪور ﻧﯿﺴﺖ‪.‬‬
‫‪ : deliv_unsupport (۴‬اﺿﺎﻓﻪﮐﺮدن ﯾ‬
‫آدرس ﺑﻪ ‪ not_supported‬ﮐﻪ ﻗﺒﻼ ارﺳﺎل ﺑﻪ‬
‫آن ﻣ ﺗﻮاﻧﺴﺖ اﻧﺠﺎم ﺑ ﯿﺮد‪.‬‬
‫‪٢‬‬
‫ﺗﻤﺮﯾﻦﻫﺎی ﺗﺌﻮری اﻧﻮاع‬
‫‪ .١‬ﺑﻪ ﮐﻤ‬
‫ﺗﺌﻮری اﻧﻮاع‪ ،‬ﺗﻮﺻﯿﻔ ﺑﺮای ﺑﺮﻧﺎﻣﻪ ﮐﻮﭼ ﺘﺮﯾﻦ ﻣﻀﺮب ﻣﺸﺘﺮک ﻧﻮﺷﺘﻪ و ﮐﺪ ﻣﺘﻨﺎﻇﺮ ﺑﺎ‬
‫آن را اﺳﺘﺨﺮاج ﮐﻨﯿﺪ‪) .‬ﻫﺮ ﭼﻨﺪ ﺗﺮﮐﯿﺐ ﮐﻠﻤﺎت ”ﺗﻮﺻﯿﻒ ﺑﺮﻧﺎﻣﻪ“ ﺗﺎ ﺣﺪودی ﺗﻨﺎﻗﺾ اﺳﺖ‪(.‬‬
‫‪ .٢‬ﺗﻮﺻﯿﻒ ﺑﺮﻧﺎﻣﻪ ﻣﺤﺎﺳﺒﻪ ﻟ ﺎرﯾﺘﻢ ﺑﻪ ﭘﺎﯾﻪ ‪ ٢‬را ﻧﻮﺷﺘﻪ و ﮐﺪ ﻣﺘﻨﺎﻇﺮ را اﺳﺘﺨﺮاج ﻧﻤﺎﯾﯿﺪ‪ .‬آﯾﺎ ﻣ ﺗﻮان‬
‫ﺗﻮﺻﯿﻒ ﻣﺤﺎﺳﺒﻪ ﻟ ﺎرﯾﺘﻢ ﺑﻪ ﭘﺎﯾﻪ ‪ ٢‬را ﺑﻪ ﮐﻤ‬
‫ﻣﻮرد ﺑﺮﻧﺎﻣﻪﻫﺎی اﯾﻦ دو ﺑﺮﻗﺮار اﺳﺖ( ﻧﻮﺷﺖ؟‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﯿﺪ‪.‬‬
‫‪۴‬‬
‫ﺗﻮﺻﯿﻒ ﺑﺮﻧﺎﻣﻪ ﺗﻘﺴﯿﻢ ﺑﺮ ‪) ٢‬ﻫﻤﺎنﻃﻮر ﮐﻪ در‬