ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي )(40153 f ﻣﺪرس :ﺣﻤﯿﺪ ﺿﺮاﺑﯽزاده داﻧﺸﮑﺪهي ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﯿﻮﺗﺮ ﭘﺮوژه :ﻣﺮﺣﻠﻪي دوم ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ :ﭼﻬﺎرﺷﻨﺒﻪ 7دي ،1390ﺳﺎﻋﺖ 9ﺻﺒﺢ ﭘﺮوژهي ﻧﻬﺎﯾﯽ درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ،ﭘﯿﺎدهﺳﺎزي ﯾﮏ ﺻﻔﺤﻪي ﮔﺴﺘﺮده ) (spreadsheetاﺳﺖ .در اﯾﻦ ﻣﺮﺣﻠﻪ، ﺷﻤﺎ ﺗﺠﺰﯾﻪي ﻋﺒﺎرات رﯾﺎﺿﯽ را ﮐﻪ ﻣﻮردﻧﯿﺎز اﯾﻦ ﭘﺮوژه ﺧﻮاﻫﺪ ﺑﻮد ﭘﯿﺎدهﺳﺎزي ﻣﯽﮐﻨﯿﺪ. ﻧﮑﺎت ﮐﻠﯽ ﮐﺪ ﻫﺮ ﺑﺨﺶ را در ﯾﮏ ﻓﺎﯾﻞ ﺟﺪاﮔﺎﻧﻪ و ﺑﺎ ﻧﺎم ﺧﻮاﺳﺘﻪ ﺷﺪه ﻗﺮار دﻫﯿﺪ )ﻗﺎﻟﺐ ﻓﺎﯾﻞﻫﺎ ﺑﻪ ﺷﻤﺎ داده ﺷﺪه اﺳﺖ(. ﺑﺎﻻي ﻫﺮ ﻓﺎﯾﻞ ﻧﺎم ،ﻧﺎم ﺧﺎﻧﻮادﮔﯽ و ﺷﻤﺎرهي داﻧﺶﺟﻮﯾﯽ ﺧﻮد را ذﮐﺮ ﮐﻨﯿﺪ. ﮐﺎﻣﻨﺖﮔﺬاري ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻫﺎ ﺟﺰﺋﯽ از ﻧﻤﺮهي ﺷﻤﺎ اﺳﺖ. ﻣﻮﻋﺪ ارﺳﺎل ،ﺳﺎﻋﺖ 9:00ﺻﺒﺢ روز ﭼﻬﺎرﺷﻨﺒﻪ 7دي ﻣﺎه 1390اﺳﺖ. در ﺻﻮرت ﺗﺎﺧﯿﺮ ،ﺑﻪ ازاي روز اول ٪30از ﻧﻤﺮهي ﺷﻤﺎ ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ .ﺗﺄﺧﯿﺮ ﺑﯿﺸﺘﺮ از ﺑﯿﺴﺖ و ﭼﻬﺎر ﺳﺎﻋﺖ ﻗﺎﺑﻞ ﻗﺒﻮل ﻧﯿﺴﺖ. ﻫﻢﻓﮑﺮي ﺑﺎ دﯾﮕﺮ داﻧﺶﺟﻮﯾﺎن ﻣﻮرد ﻗﺒﻮل اﺳﺖ ،اﻣﺎ ﻓﺎﯾﻞﻫﺎﯾﯽ ﮐﻪ ﻣﯽﻓﺮﺳﺘﯿﺪ ﺑﺎﯾﺪ ﺑﻪﻃﻮر ﮐﺎﻣﻞ ﺗﻮﺳﻂ ﺧﻮدﺗﺎن ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﺷﻨﺪ. در ﺻﻮرت وﺟﻮد ﻫﺮﮔﻮﻧﻪ ﻣﺸﮑﻞ ،ﺳﻮاﻻت ﺧﻮد را از ﻃﺮﯾﻖ ﺳﯿﺴﺘﻢ ﭘﯿﺎﺗﺰا ﺑﺎ ﮐﻤﮏﻣﺪرﺳﯿﻦ در ﻣﯿﺎن ﺑﮕﺬارﯾﺪ. ﺑﺨﺶ اول :ﺟﺪول ﻣﺘﻐﯿﺮﻫﺎ ﻧﺎم ﻓﺎﯾﻞsymbols.cpp : ﻓﺎﯾﻞ symbols.hﮐﻪ ﺑﻪ ﻫﻤﺮاه ﭘﺮوژه داده ﺷﺪه اﺳﺖ ،ﺷﺎﻣﻞ ﺗﻌﺮﯾﻒ دو ﮐﻼس Variableو Symbolsاﺳﺖ ﮐﻪ ﺑﺮاي ﻧﮕﻪداري و ﺑﺎزﯾﺎﺑﯽ ﻣﻘﺪار ﻣﺘﻐﯿﺮﻫﺎ در ﺑﺮﻧﺎﻣﻪي اﺻﻠﯽ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽﮔﯿﺮﻧﺪ .ﻫﺮ ﺷﯽء از ﻧﻮع Variable اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ ﯾﮏ ﻣﺘﻐﯿﺮ را ﮐﻪ ﺷﺎﻣﻞ ﻧﺎم و ﻣﻘﺪار ﻣﺘﻐﯿﺮ اﺳﺖ ﻧﮕﻪداري ﻣﯽﮐﻨﺪ .در ﮐﻼس Symbolsﺟﺪوﻟﯽ از ﻣﺘﻐﯿﺮﻫﺎ )ﺑﺎ ﻃﻮل ﺣﺪاﮐﺜﺮ (MAX_VARIABLESﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ و ﺗﻮاﺑﻊ ﻣﻮرد ﻧﯿﺎز ﺑﺮاي اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﻣﺘﻐﯿﺮ در اﯾﻦ ﺟﺪول و ﺑﺎزﯾﺎﺑﯽ ﻣﻘﺪار ﯾﮏ ﻣﺘﻐﯿﺮ درون اﯾﻦ ﺟﺪول ﭘﯿﺶﺑﯿﻨﯽ ﺷﺪه اﺳﺖ. ﭘﯿﺎدهﺳﺎزي اوﻟﯿﻪي ﮐﻼسﻫﺎي Variableو Symbolsدر ﻓﺎﯾﻞ symbols.cppآﻣﺪه اﺳﺖ .ﺷﻤﺎ ﺑﺎﯾﺪ ﺗﻮاﺑﻌﯽ را ﮐﻪ ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ در اﯾﻦ ﻓﺎﯾﻞ ﭘﯿﺎدهﺳﺎزي ﻧﺸﺪهاﻧﺪ ﺗﮑﻤﯿﻞ ﮐﻨﯿﺪ .ﺑﻪ ﻃﻮر ﺧﺎص ﺷﻤﺎ ﺑﺎﯾﺪ ﺗﺎﺑﻊ زﯾﺮ از ﮐﻼس Symbolsرا ﭘﯿﺎدهﺳﺎزي ﮐﻨﯿﺪ: ;)double Symbols::get_value(string name اﯾﻦ ﺗﺎﺑﻊ ﻧﺎم ﯾﮏ ﻣﺘﻐﯿﺮ را ﺑﻪ ﻋﻨﻮان ورودي ﻣﯽﮔﯿﺮد و ﻣﻘﺪار ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ﻣﺘﻐﯿﺮ را از درون ﺟﺪول ﻣﺘﻐﯿﺮﻫﺎ ﺑﺮﻣﯽﮔﺮداﻧﺪ. اﮔﺮ در ﺟﺪول ﭼﻨﯿﻦ ﻣﺘﻐﯿﺮي وﺟﻮد ﻧﺪاﺷﺖ ،ﺗﺎﺑﻊ ﻣﻘﺪار ﺻﻔﺮ را ﺑﺮﻣﯽﮔﺮداﻧﺪ .در واﻗﻊ ﻣﺘﻐﯿﺮي ﮐﻪ ﻣﻘﺪاردﻫﯽ ﻧﺸﺪه ﺑﺎﺷﺪ ،ﺑﻪ ﺻﻮرت ﭘﯿﺶﻓﺮض ﻣﻘﺪار ﺻﻔﺮ دارد. ﭘﺮوژه :ﻣﺮﺣﻠﻪي دوم -درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي 1 ﺑﺨﺶ دوم :ﺗﺠﺰﯾﻪي ﻋﺒﺎرات ﻧﺎم ﻓﺎﯾﻞparse.cpp : ﻓﺮض ﮐﻨﯿﺪ ﯾﮏ رﺷﺘﻪ ﺑﻪ ﺷﻤﺎ داده اﺳﺖ ﮐﻪ ﻓﻘﻂ ﺷﺎﻣﻞ اﻋﺪاد ،ﻋﻤﻠﮕﺮﻫﺎي رﯾﺎﺿﯽ ،ﻣﺘﻐﯿﺮﻫﺎ ،ﺗﻮاﺑﻊ رﯾﺎﺿﯽ و ﭘﺮاﻧﺘﺰ اﺳﺖ. ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻘﺪم ﻋﻤﻠﯿﺎت و ﻣﻘﺪار ﻣﺘﻐﯿﺮﻫﺎ ،ﺣﺎﺻﻞ ﻋﺒﺎرت ﻣﻮرد ﻧﻈﺮ را ﺑﻪ دﺳﺖ آورﯾﺪ. ﺑﺮاي ﻣﺜﺎل ﻓﺮض ﮐﻨﯿﺪ ﻋﺒﺎرت زﯾﺮ داده ﺷﺪه اﺳﺖ: )A / 2 + c * ((A - 1) * 4) - a2 * t + max_t + tan(3.1415926535/4 و ﻣﻘﺪار ﻣﺘﻐﯿﺮﻫﺎي ﺑﻪﮐﺎر رﻓﺘﻪ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ: A = 2, c = 2.5, a2 = 3.5, t = 4, max_t = 5.5 در اﯾﻦ ﺻﻮرت ﻣﻘﺪار ﻋﺒﺎرت ﻓﻮق ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ .3.5 ﺷﻤﺎ ﺑﺎﯾﺪ در ﻓﺎﯾﻞ parse.cppﺗﺎﺑﻊ زﯾﺮ را ﭘﯿﺎدهﺳﺎزي ﮐﻨﯿﺪ: ;)double parse(string exp اﯾﻦ ﺗﺎﺑﻊ ،ﯾﮏ ﻋﺒﺎرت را ﺑﻪ ﻋﻨﻮان ورودي ﻣﯽﮔﯿﺮد و ﺣﺎﺻﻞ آن را ﺑﻪ ﺻﻮرت ﯾﮏ ﻋﺪد اﻋﺸﺎري ﺑﺮﻣﯽﮔﺮداﻧﺪ. ﺑﺪﯾﻬﯽ اﺳﺖ ﮐﻪ ﺑﺮاي ﭘﯿﺎدهﺳﺎزي اﯾﻦ ﺗﺎﺑﻊ ﻣﺠﺎز ﻫﺴﺘﯿﺪ ﺗﻮاﺑﻊ دﯾﮕﺮي را ﻧﯿﺰ ﭘﯿﺎدهﺳﺎزي ﮐﻨﯿﺪ. ﻧﮑﺎت: ﭘﺮوژه :ﻣﺮﺣﻠﻪي دوم -درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي 2 ﻋﻤﻠﯿﺎت رﯾﺎﺿﯽ ﻣﺠﺎز ،ﺟﻤﻊ ،ﺗﻔﺮﯾﻖ ،ﺿﺮب و ﺗﻘﺴﯿﻢ ،و ﺗﻮاﺑﻊ ﻣﺠﺎز sinو cosو tanو arctanﻫﺴﺘﻨﺪ. در ﻣﺤﺎﺳﺒﻪي ﻋﺒﺎرتﻫﺎ ،ﺑﺎﯾﺪ اوﻟﻮﯾﺖﻫﺎي ﻋﻤﻠﮕﺮﻫﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮﻧﺪ .ﻋﻼﻣﺖ ﻣﻨﻔﯽ )ﯾﮑﺎﻧﯽ( ﺑﯿﺶﺗﺮﯾﻦ اوﻟﻮﯾﺖ را در ﺑﯿﻦ ﻋﻤﻠﮕﺮﻫﺎ دارد .ﺿﺮب و ﺗﻘﺴﯿﻢ ﻧﯿﺰ ﻧﺴﺒﺖ ﺑﻪ ﺟﻤﻊ و ﺗﻔﺮﯾﻖ داراي اوﻟﻮﯾﺖ ﻫﺴﺘﻨﺪ. اوﻟﻮﯾﺖ ﺿﺮب و ﺗﻘﺴﯿﻢ ﺑﺎ ﻫﻢ ﺑﺮاﺑﺮ و ﺗﻘﺪم آنﻫﺎ ﻧﺴﺒﺖ ﺑﻪ ﯾﮑﺪﯾﮕﺮ از ﭼﭗ ﺑﻪ راﺳﺖ اﺳﺖ .ﺟﻤﻊ و ﺗﻔﺮﯾﻖﻫﺎي ﻣﺘﻮاﻟﯽ ﻫﻢ ﺑﺎﯾﺪ از ﭼﭗ ﺑﻪ راﺳﺖ اﺟﺮا ﺷﻮﻧﺪ. ﻧﺎم ﻫﺮ ﻣﺘﻐﯿﺮ ﻣﯽﺗﻮاﻧﺪ ﺷﺎﻣﻞ ﺣﺮوف )ﺑﺰرگ ﯾﺎ ﮐﻮﭼﮏ( اﻧﮕﻠﯿﺴﯽ ،ارﻗﺎم و _ ) (underscoreﺑﺎﺷﺪ ،وﻟﯽ ﻧﺎم ﻣﺘﻐﯿﺮ ﺑﺎ ﯾﮏ رﻗﻢ ﺷﺮوع ﻧﻤﯽﺷﻮد. ﺧﻄﺎﯾﺎﺑﯽ: )ﻧﻤﺮهي اﺿﺎﻓﯽ!( رﺷﺘﻪاي ﮐﻪ ﺑﻪ ﺗﺎﺑﻊ parseداده ﻣﯽﺷﻮد ،ﻣﻤﮑﻦ اﺳﺖ ﻣﻌﺘﺒﺮ ﻧﺒﺎﺷﺪ .ﻣﺜﻼً رﺷﺘﻪﻫﺎي B1 + ( C - ) ، 0A – B1 و (A0 – 2ﺧﻄﺎ دارﻧﺪ .ﺧﻄﺎﯾﺎﺑﯽ ﺑﻪ اﯾﻦ ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ ﺗﺎﺑﻊ parseدر ﭼﻨﯿﻦ ﺷﺮاﯾﻄﯽ ﻣﻘﺪار ﺻﻔﺮ ﺑﺮﮔﺮداﻧﺪ .اﮔﺮ ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﻗﺎدر ﺑﻪ ﺧﻄﺎﯾﺎﺑﯽ ﺑﺎﺷﺪ ،ﻧﻤﺮهي اﺿﺎﻓﯽ درﯾﺎﻓﺖ ﺧﻮاﻫﯿﺪ ﮐﺮد؛ وﻟﯽ در ﺣﺎﻟﺖ ﻋﺎدي ﻣﯽﺗﻮاﻧﯿﺪ ﻓﺮض ﮐﻨﯿﺪ ﮐﻪ ﻋﺒﺎرات دادهﺷﺪه داراي ﺧﻄﺎ ﻧﯿﺴﺘﻨﺪ. ﭘﺮوژه :ﻣﺮﺣﻠﻪي دوم -درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي 3
© Copyright 2024 Paperzz