ﺗﻤﺮﻳﻦ ﺳﺮي دوم درس ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﻲءﮔﺮا ﻣﻮﻋﺪ ارﺳﺎل :ﺷﻨﺒﻪ 15ﻓﺮوردﻳﻦ 1388 ﻣﺤﻤﺪ دﺷﺘﻲ -اﻣﻴﺮ ﺷﻴﺨﻬﺎ ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ :ﺷﻨﺒﻪ 15ﻓﺮوردﻳﻦ 1388 ﻧﻜﺎت ﻛﻠﻲ ورودي ﺑﺮﻧﺎﻣﻪﻫﺎ ورودي اﺳﺘﺎﻧﺪارد ) (consoleو ﺧﺮوﺟﻲ آﻧﻬﺎ ﻧﻴﺰ ﺧﺮوﺟﻲ اﺳﺘﺎﻧﺪارد اﺳﺖ . ﺑﺮاي ﭼﺎپ در ﺧﺮوﺟﻲ اﺳﺘﺎﻧﺪارد از ﺗﻮاﺑﻌﻲ ﺷﺒﻴﻪ ﺑﻪ System.out.printlnاﺳﺘﻔﺎده ﻛﻨﻴﺪ. ﺑﺮاي ﺧﻮاﻧﺪن از ورودي اﺳﺘﺎﻧﺪارد ﻧﻴﺰ از ﻛﻼس Scannerﻛﻤﻚ ﺑﮕﻴﺮﻳﺪ. ﻣﺸﺨﺼﺎت ﻛﻠﻲ ﺗﻤﺮﻳﻦ ﻫﺎ ﺑﻪ اﻳﻦ ﺷﺮح اﺳﺖ: ﻧﺎم ﻛﻼس ﻧﺎم ﻓﺎﻳﻞ ﻧﻤﺮه ﺗﻤﺮﻳﻦ 1 Rational Rational.java 25 ﺗﻤﺮﻳﻦ 2 Polynomial Polynomial.java 25 ﺗﻤﺮﻳﻦ 3 Matrix Matrix.java 25 ﺗﻤﺮﻳﻦ 4 Projectile Projectile.java 25 ﻫﺪف از اﻳﻦ ﺗﻤﺮﻳﻦ ،آزﻣﺎﻳﺶ درك ﺷﻤﺎ از ﻣﻔﻬﻮم ﺷﻲءﮔﺮاﻳﻲ و ﺑﻜﺎرﮔﻴﺮي اﻳﻦ ﻣﻔﻬﻮم در ﻋﻤﻞ اﺳﺖ .ﭘﺲ از اﻳﻦ ﺗﻤﺮﻳﻦ ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﺮاﺣﺘﻲ ﺑﺘﻮاﻧﻴﺪ ﻣﺪﻟﻬﺎي ﺳﺎده ﺟﻬﺎن واﻗﻌﻲ را ﺑﺼﻮرت ﺷﻲء ﮔﺮا ﻣﺪل ﻛﻨﻴﺪ . ﺑﺮاي ارﺳﺎل ﺗﻤﺮﻳﻦ ﺑﻪ آدرس زﻳﺮ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ : http://ce.sharif.edu/~m_jahangir/java882 ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﺑﺎﻳﺪ ﻫﺮ ﻛﺪام از ﻓﺎﻳﻠﻬﺎي .javaرا ﺑﻄﻮر ﺟﺪاﮔﺎﻧﻪ ارﺳﺎل ﻧﻤﺎﻳﻴﺪ. ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ ﺳﺎﻋﺖ ) 11:59ﻇﻬﺮ( روز ﺷﻨﺒﻪ 15ﻓﺮوردﻳﻦ 87ﺑﻮده و ﺑﻪ ﻫﻴﭻ ﻋﻨﻮان ﺗﻤﺪﻳﺪ ﻧﺨﻮاﻫﺪ ﺷﺪ. %20ﻧﻤﺮه ،از 24ﺳﺎﻋﺖ ﺗﺎ 25ﺳﺎﻋﺖ ،ﺑﻪ ازاي ﻫﺮ 2دﻗﻴﻘﻪ ﻣﻮﺟﺐ ﻛﺴﺮ ﺷﺪن %1ﻧﻤﺮهي دﻳﮕﺮ و ﺑﻴﻦ 25ﺳﺎﻋﺖ ﺗﺎ 48ﺳﺎﻋﺖ ﺑﺎﻋﺚ ﻛﺴﺮ ﺷﺪن %50ﻧﻤﺮه ﻣﻲﺷﻮد .ﺗﺄﺧﻴﺮ ﺑﻴﺸﺘﺮ از 48ﺳﺎﻋﺖ ﻗﺎﺑﻞ ﻗﺒﻮل ﻧﻴﺴﺖ . ﻗﻄﻊ ﺑﻮدن اﻳﻨﺘﺮﻧﺖ ﺧﻮاﺑﮕﺎه ،ﻛﻨﺪي ﭘﺎﻳﮕﺎه اﻳﻨﺘﺮﻧﺘﻲ داﻧﺸﻜﺪه ،ﺗﻤﺎم ﺷﺪن ﻛﺎرت اﻳﻨﺘﺮﻧﺖ و … ﻫﻴﭻﻛﺪام دﻟﻴﻞ ﻣﻮﺟﻬﻲ ﺑﺮاي ﺗﺄﺧﻴﺮ ﻧﻴﺴﺘﻨﺪ .ﺑﻨﺎﺑﺮاﻳﻦ ﭘﻴﺸﻨﻬﺎد ﻣﻲﺷﻮد ﺟﻮابﻫﺎي ﺧﻮد را در داﻧﺸﻜﺪه ارﺳﺎل ﻛﻨﻴﺪ . ﻫﺮﮔﻮﻧﻪ روﻧﻮﺷﺖ ،1ﺑﺮاي ﻣﻨﺒﻊ روﻧﻮﺷﺖ و ﻫﻤﭽﻨﻴﻦ ﻧﺴﺨﻪﻫﺎي روﻧﻮﻳﺴﻲ ﺷﺪه -2ﻧﻤﺮه در ﭘﻲ ﺧﻮاﻫﺪ داﺷﺖ . 1ﻛﭙﻲ ﻳﺎ ﻫﻤﺎن ﻛُﭗ ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا ﺗﺄﺧﻴﺮ ﺗﺎ 1ﺳﺎﻋﺖ ،ﺑﻪ ازاي ﻫﺮ 3دﻗﻴﻘﻪ ﻣﻮﺟﺐ ﻛﺴﺮ ﺷﺪن %1ﻧﻤﺮه ،از 1ﺳﺎﻋﺖ ﺗﺎ 24ﺳﺎﻋﺖ ﻣﻮﺟﺐ ﻛﺴﺮ ﺷﺪن 1 ﺗﻼش ﺑﺮاي اﺳﺘﻔﺎده از ﻣﻨﺎﺑﻊ ﺳﻴﺴﺘﻢ ﻣﺎﻧﻨﺪ ﻛﺎرت ﺻﺪا و ﭘﺮﻳﻨﺘﺮ و ﻧﻮﺷﺘﻦ ﺑﻪ ﻓﺎﻳﻞ و ...ﻣﻨﺠﺮ ﺑﻪ درﻳﺎﻓﺖ ﻧﻤﺮهي ﺻﻔﺮ در اﻳﻦ ﺗﻤﺮﻳﻦ ﻣﻲﺷﻮد . ﺳﻮاﻻت ﺧﻮد را ﺑﺎ ﻓﺮﺳﺘﺎدن اﻳﻤﻴﻞ ﺑﻪ آدرس [email protected]ﻳﺎ ﺑﺎ chatﺑﺎ آﻳﺪيﻫﺎي java_taﻳﺎ ta.javaﻣﻄﺮح ﻛﻨﻴﺪ . ﻧﺤﻮه ﺗﺼﺤﻴﺢ ﺗﻤﺮﻳﻨﻬﺎي 1و 2و 3ﺑﺼﻮرت ﺑﺮﺧﻂ ) (Online Judgeاﺳﺖ .ﺗﻮﺟﻪ ﻓﺮﻣﺎﻳﻴﺪ ﻛﻪ ﺗﺤﻮﻳﻞ ﺣﻀﻮري ﺑﺮاي اﻳﻦ ﺗﻤﺮﻳﻦﻫﺎ اﺟﺒﺎري اﺳﺖ و در ﺗﺤﻮﻳﻞ ﺣﻀﻮري ،ﻓﻘﻂ ﻧﺤﻮه ﻛﺪﻧﻮﻳﺴﻲ و ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﻣﻮرد ﭘﺮﺳﺶ ﻗﺮار ﻣﻲﮔﻴﺮد و در ﺻﻮرﺗﻲ ﻛﻪ ﺷﻤﺎ ﻧﺘﻮاﻧﻴﺪ ﻣﻨﻄﻖ ﺧﻮد را ﺑﺪرﺳﺘﻲ ﺑﻴﺎن ﻛﻨﻴﺪ ،ﻧﻤﺮه ﺗﻤﺮﻳﻦ ﻣﻮرد ﻧﻈﺮ را ﻧﺨﻮاﻫﻴﺪ ﮔﺮﻓﺖ و اﻳﻦ ﺗﻘﻠﺐ ﻧﻴﺰ ﻣﺤﺴﻮب ﺧﻮاﻫﺪ ﮔﺮدﻳﺪ . در ﻣﻮرد ﺗﻤﺮﻳﻦ ،4ﺗﻤﺎﻣﻲ ﻧﻤﺮه در ﻫﻨﮕﺎم ﺗﺤﻮﻳﻞ ﺣﻀﻮري داده ﺧﻮاﻫﺪ ﺷﺪ .ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﻣﻌﻴﺎر ﺗﺤﻮﻳﻞ ﺗﻤﺮﻳﻦ 4ﺑﺮ اﺳﺎس درﺳﺘﻲ ﻛﺎرﻛﺮد ﻃﺒﻖ ﺻﻮرت ﺳﻮالﻫﺎ و وﺟﻮد ﻳﻚ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﻪ وﻳﮋﮔﻲﻫﺎي ﮔﻔﺘﻪ ﺷﺪه را داﺷﺘﻪ ﺑﺎﺷﺪ ،ﻣﻲﺑﺎﺷﺪ . ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻞ ﺣﻀﻮري 17و 18ﻓﺮوردﻳﻦ ﻣﻲ ﺑﺎﺷﺪ . ﺗﻌﺪادي ﺗﻤﺮﻳﻦ ﺑﻪ ﺻﻮرت اﺧﺘﻴﺎري داده ﺷﺪه اﺳﺖ .اﻳﻦ ﺗﻤﺮﻳﻦﻫﺎ ﻫﻴﭻ ﻧﻤﺮهاي ﻧﺪارﻧﺪ و ﺗﺼﺤﻴﺢ ﻧﺨﻮاﻫﻨﺪ ﺷﺪ. اﮔﺮﭼﻪ اﻳﻦ ﺗﻤﺮﻳﻦﻫﺎ ﻫﻴﭻ ﻧﻤﺮهاي ﻧﺪارﻧﺪ ،وﻟﻲ ﭘﻴﺸﻨﻬﺎد ﻣﻲﺷﻮد ﻛﻪ ﺑﺎ ﺣﻞ اﻳﻦ ﺗﻤﺮﻳﻦﻫﺎ ،ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺧﻮد را ﻗﻮي ﻛﻨﻴﺪ . ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا 2 ﺗﻤﺮﻳﻦ (Rational.java) 1 ﻛﻼﺳﻲ ﺑﺎ ﻧﺎم Rationalﺑﺼﻮرت زﻳﺮ ﭘﻴﺎده ﺳﺎزي ﻧﻤﺎﻳﻴﺪ class Rational { ;)public Rational(int num, int denum public Rational(int num); ;)public Rational(Rational base ;)(public Rational public Rational add(Rational num); ;)public Rational sub(Rational num public Rational mul(Rational num); ;)public Rational div(Rational num ;)(public double toFloatingPoint public String toString(); } اﻳﻦ ﻛﻼس ﺑﺎﻳﺪ ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ را ﺑﺮ روي ﻛﺴﺮﻫﺎ اﻧﺠﺎم دﻫﺪ .ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛـﻪ ﻫﻤﻴﺸـﻪ ﺑﺎﻳـﺪ ﻧﺘـﺎﻳﺠﻲ ﻛـﻪ در ﻣﺘﻐﻴﺮﻫـﺎي دروﻧﻲ ﺧﻮد ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﺪ ،در ﺣﺎﻟﺖ ﺳﺎده ﺷﺪه ،ﺑﺎﺷﻨﺪ) .ﺑﺮاي ﻣﺜﺎل ،ﻛﺴﺮ 2/4ﺑﺼﻮرت ﻳﻚ ﺷﻲء ذﺧﻴﺮه ﺧﻮاﻫﺪ ﺷﺪ ﻛـﻪ ﺻﻮرت آن 1و ﻣﺨﺮج آن 2اﺳﺖ(. ﭘﺎراﻣﺘﺮﻫﺎي ورودي ﻛﻪ ﻣﻲﮔﻴﺮد( ﻳﻚ ﺳﺎزﻧﺪه ﺑﺪون آرﮔﻮﻣﺎن ﻧﻴﺰ ﻓﺮاﻫﻢ ﻛﻨﻴﺪ ﺗﺎ در ﺣﺎﻟﺘﻲ ﻛﻪ در اﺑﺘﺪا ﻣﻘﺪاري داده ﻧﻤﻲ ﺷـﻮد ،ﻛﺴـﺮ ﺑﺼـﻮرت ﭘـﻴﺶ ﻓـﺮض، ﻣﻘﺪار ﺻﻔﺮ را ﺑﮕﻴﺮد. ﻳﻚ ﺳﺎزﻧﺪه ﻧﻴﺰ ﻓﺮاﻫﻢ ﻛﻨﻴﺪ ﻛﻪ از روي ﻳﻚ ﺷﻲء Rationalدﻳﮕﺮ ﺑﺘﻮاﻧـﺪ ﺧـﻮد را ﺑﺴـﺎزد) .ﻳـﻚ Rationalرا ﺑﻌﻨـﻮان آرﮔﻮﻣﺎن ﺑﮕﻴﺮد( ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا ﻳﻚ ﺳﺎزﻧﺪه ﻓﺮاﻫﻢ ﻛﻨﻴﺪ ﺗﺎ ﺑﺘﻮان ﻳﻚ ﻧﻤﻮﻧﻪ از اﻳـﻦ ﺷـﻲء را ﻫﻨﮕـﺎم ﺳـﺎﺧﺘﻪ ﺷـﺪن ،ﻣﻘـﺪاردﻫﻲ اوﻟﻴـﻪ ﻧﻴـﺰ ﻛـﺮد) .ﺗﻮﺳـﻂ 3 ﻳﻚ ﺳﺮي ﻣﺘﺪﻫﺎي publicﺑﺮاي ﻫﺮ ﻛﺪام از اﻋﻤﺎل زﻳﺮ ﻗﺮار دﻫﻴﺪ: .1ﺟﻤﻊ ﻛﺴﺮ ﻓﻌﻠﻲ ﺑﺎ ﻳﻚ ﻛﺴﺮ دﻳﮕﺮ ﺑﻮﺳﻴﻠﻪ ﻣﺘﺪ .add )public Rational add (Rational num .2ﺗﻔﺮﻳﻖ ﻛﺴﺮ ﻓﻌﻠﻲ از ﻳﻚ ﻛﺴﺮ دﻳﮕﺮ ﺑﻮﺳﻴﻠﻪ ﻣﺘﺪ .sub )public Rational sub (Rational num .3ﺿﺮب ﻛﺴﺮ ﻓﻌﻠﻲ ﺑﺎ ﻳﻚ ﻛﺴﺮ دﻳﮕﺮ ﺑﻮﺳﻴﻠﻪ ﻣﺘﺪ .mul )public Rational mul (Rational num .4ﺗﻘﺴﻴﻢ ﻛﺴﺮ ﻓﻌﻠﻲ ﺑﺎ ﻳﻚ ﻛﺴﺮ دﻳﮕﺮ ﺑﻮﺳﻴﻠﻪ ﻣﺘﺪ .div )public Rational div (Rational num ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ در ﺗﻤﺎﻣﻲ ﻣﺘﺪﻫﺎي ﺑﺎﻻ ﻧﺘﺎﻳﺞ در ﺷﻲء ﻛﻪ ﻣﺘﺪ ﺑﺮ روي آن ﺻﺪا زده ﺷﺪه اﺳﺖ ،ذﺧﻴﺮه ﻧﻤـﻲ ﺷـﻮﻧﺪ ﺑﻠﻜﻪ ﺑﺎﻳﺪ در ﻳﻚ ﺷﻲء ﻛﺴﺮ ﺟﺪﻳﺪ ذﺧﻴﺮه ﺷﻮﻧﺪ ﻛﻪ ﺗﻮﺳﻂ اﻳﻦ ﻣﺘﺪﻫﺎ ﺑﺮﮔﺮداﻧﺪه ﻣﻲ ﺷﻮد . ﺑﺮاي ﻣﺜﺎل اﮔﺮ اﻋﺪاد ﻛﺴﺮي xو yرا داﺷﺘﻪ ﺑﺎﺷﻴﻢ و ﻣﻘﺪار اوﻟﻴﻪ ﻫﺮﻛﺪام از آﻧﻬﺎ 1/2ﺑﺎﺷﺪ ،ﻋﻤﻞ ) x.add(yﺑـﺮ روي ﻣﻘﺎدﻳﺮ xو yﺗﺄﺛﻴﺮي ﻧﺨﻮاﻫﺪ داﺷﺖ و ﻣﻘﺪار ﻫﺮ دوي آﻧﻬﺎ 1/2ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪ . .5ﻳﻚ ﻋﺪد ﻛﺴﺮي را ﺑﻪ ﻓﺮﻣﺖ اﻋﺸﺎري ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ ،ﺑﻮﺳﻴﻠﻪ ﻣﺘﺪ toFloatingPoint. )public double toFloatingPoint (Rational num .6ﻳﻚ ﻋﺪد ﻛﺴﺮي را ﺑﻪ رﺷﺘﻪ ﻣﺘﻨﻲ ﺑﺎ ﻗﺎﻟﺐ " "a/bﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ ﻛﻪ aﺻﻮرت ﻛﺴﺮ و bﻣﺨﺮج ﻛﺴﺮ اﺳﺖ . ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا 4 )( public String toString (Polynomial.java) 2 ﺗﻤﺮﻳﻦ : را ﭘﻴﺎده ﺳﺎزي ﻛﻨﻴﺪ ﻛﻪ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪPolynomial در اﻳﻦ ﺳﻮال ﺷﻤﺎ ﺑﺎﻳﺪ ﻛﻼس class Polynomial { Polynomial(double[] coefficients); Polynomial(String str); double evaluate(double x); int degree(); Polynomial add(Polynomial p); Polynomial subtract(Polynomial p); Polynomial multiply(Polynomial p); Polynomial divide(Polynomial p); Polynomial differentiate(); Polynomial integral(double constant); double findRoot(double start, double end, double accuracy) double max(double start, double end, double accuracy) boolean equals(Polynomial p); String toString(); ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا } 5 . اول آراﻳﻪ اي از ﺿﺮاﻳﺐ ﻣﻲ ﮔﻴﺮد و ﭼﻨﺪﺟﻤﻠﻪاي را ﻣﻲ ﺳﺎزدConstructor (( )اﺧﺘﻴﺎريx^2+13x+1388 )ﻣﺜﻼ. دوم ﻳﻚ رﺷﺘﻪ ﻣﻲ ﮔﻴﺮد و ﭼﻨﺪﺟﻤﻠﻪاي را ﻣﻲ ﺳﺎزدConstructor ﻣﻘﺪار داده ﺷﺪه را ﺑﻪ ﻣﺘﻐﻴﺮ ﭼﻨﺪﺟﻤﻠﻪاي ﻣﻨﺼﻮب ﻣﻲ ﻛﻨﺪ و ﺳﭙﺲ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ آن ﻣﻘﺪار ﭼﻨﺪﺟﻤﻠﻪاي را،evaluate ﻣﺘﺪ .ﺑﺪﺳﺖ ﻣﻲ آورد . درﺟﻪي ﭼﻨﺪﺟﻤﻠﻪاي را ﺑﺮﻣﻲﮔﺮداﻧﺪ،degree ﻣﺘﺪ . ﭼﻨﺪﺟﻤﻠﻪ اي داده ﺷﺪه را ﺑﺎ ﭼﻨﺪﺟﻤﻠﻪاي ﻣﺎ ﺟﻤﻊ ﻣﻲ ﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ،add ﻣﺘﺪ ﻣﺘﺪ ،subtractﭼﻨﺪﺟﻤﻠﻪ اي داده ﺷﺪه از ﭼﻨﺪﺟﻤﻠﻪ اي ﻣﺎ ﻛﻢ ﻣﻲ ﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،multiplyﭼﻨﺪﺟﻤﻠﻪ اي داده ﺷﺪه را در ﭼﻨﺪﺟﻤﻠﻪ اي ﻣﺎ ﺿﺮب ﻣﻲ ﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،divideﭼﻨﺪﺟﻤﻠﻪ اي ﻣﺎ را ﺑﺮ ﭼﻨﺪﺟﻤﻠﻪ اي داده ﺷﺪه ﺗﻘﺴﻴﻢ ﻣﻲ ﻛﻨﺪ و ﺧﺎرج ﻗﺴﻤﺖ را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،differentiateﻣﺸﺘﻖ ﭼﻨﺪﺟﻤﻠﻪ اي را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،integralاﻧﺘﮕﺮال ﭼﻨﺪﺟﻤﻠﻪ اي را ﺑﺎ ﺟﻤﻠﻪ ي ﺛﺎﺑﺖ constantﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،findRootرﻳﺸﻪ ي ﭼﻨﺪﺟﻤﻠﻪ اي را از startﺗﺎ endﺑﺎ دﻗﺖ accuracyﺑﺮﻣﻲ ﮔﺮداﻧﺪ .در ﺻﻮرﺗﻴﻜﻪ رﻳﺸﻪ اي ﭘﻴﺪا ﻧﺸﺪ ،ﻣﻘﺪار end+1را ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،maxﻣﻘﺪاري از ﻣﺘﻐﻴﺮ )از startﺗﺎ endﺑﺎ دﻗﺖ (accuracyﻛﻪ در آن ﭼﻨﺪﺟﻤﻠﻪ اي ﻣﻘﺪار ﺑﻴﺸﻴﻨﻪ ي ﺧﻮد را دارد ،ﺑﺮﻣﻲ ﮔﺮداﻧﺪ. ﻣﺘﺪ ،equalsﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﭼﻨﺪﺟﻤﻠﻪ اي ﻣﺎ ﺑﺎ ﭼﻨﺪﺟﻤﻠﻪ اي داده ﺷﺪه ﺑﺮاﺑﺮ اﺳﺖ ﻳﺎ ﺧﻴﺮ. ﻣﺘﺪ ،toStringﭼﻨﺪﺟﻤﻠﻪ اي را ﺑﺼﻮرت ﻳﻚ رﺷﺘﻪ ﺑﺮﻣﻲ ﮔﺮداﻧﺪ) .ﻣﺜﻞ (x^2+13x+1388 ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا 6 ﺗﻤﺮﻳﻦ (Matrix.java) 3 در اﻳﻦ ﺳﻮال ﺷﻤﺎ ﺑﺎﻳﺪ ﻛﻼس Matrixرا ﭘﻴﺎده ﺳﺎزي ﻛﻨﻴﺪ ﻛﻪ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﻨﺪ. class Matrix { Matrix(int rows, int cols); ;)Matrix(double[][] data ;)Matrix add(Matrix m Matrix subtract(Matrix m); Matrix multiply(Matrix m); ;)(Matrix transpose boolean equals(Matrix m); String toString(); } Constructorاول ،ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ ﺗﻌﺪاد ﺳﻄﺮ rowsو ﺗﻌﺪاد ﺳﺘﻮن colsﻣﻲﺳﺎزد. Constructorدوم ،ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ دراﻳﻪﻫﺎي داده ﺷﺪه در آراﻳﻪي دوﺑﻌﺪي dataﻣﻲﺳﺎزد. ﻣﺘﺪ ،addﻣﺎﺗﺮﻳﺲ داده ﺷﺪه را ﺑﺎ ﻣﺎﺗﺮﻳﺲ ﻣﺎ ﺟﻤﻊ ﻣﻲﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻣﺘﺪ ،subtractﻣﺎﺗﺮﻳﺲ داده ﺷﺪه را از ﻣﺎﺗﺮﻳﺲ ﻣﺎ ﻛﻢ ﻣﻲﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻣﺘﺪ ،transposeﺗﺮاﻧﻬﺎدهي ﻣﺎﺗﺮﻳﺲ ﻣﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻣﺘﺪ ،equalsﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ ﻣﺎﺗﺮﻳﺲ دادهﺷﺪه ﺑﺎ ﻣﺎﺗﺮﻳﺲ ﻣﺎ ﺑﺮاﺑﺮ اﺳﺖ ﻳﺎ ﺧﻴﺮ. ܾ ܽ ቂرا ﺑﻪ رﺷﺘﻪي ” “a b\nc dﺗﺒﺪﻳﻞ ﻣﺘﺪ ،toStringﻣﺎﺗﺮﻳﺲ ﻣﺎ را ﺑﻪ ﻳﻚ رﺷﺘﻪ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ .ﻣﺜﻼ ﻣﺎﺗﺮﻳﺲ ቃ ݀ ܿ ﻧﻤﺎﻳﺪ .ﺑﻄﻮر دﻗﻴﻖ ﺗﺮ ،ﺑﺮاي ﻳﻚ ﻣﺎﺗﺮﻳﺲ Am*nﺑﺎﻳﺪ اﺑﺘﺪا دراﻳﻪ ﻫﺎي A11و A12و ...و A1nرا ﭼﺎپ ﻛﻨﺪ و ﺳﭙﺲ ﻳﻚ ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا ﻣﺘﺪ ،multiplyﻣﺎﺗﺮﻳﺲ داده ﺷﺪه را در ﻣﺎﺗﺮﻳﺲ ﻣﺎ ﺿﺮب ﻣﻲﻛﻨﺪ و ﺣﺎﺻﻞ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. 7 ﻛﺎراﻛﺘﺮ ﺧﻂ ﺟﺪﻳﺪ (\n) را ﻧﻮﺷﺘﻪ و ﺳﭙﺲ ﺑﻪ ﺳﺮاغ ﺳﻄﺮ ﺑﻌﺪي ﺑﺮود و ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﺗﻴﺐ mﺳﻄﺮ را ﭼﺎپ ﻛﻨﺪ) .در اﻧﺘﻬﺎي ﭼﺎپ ﺳﻄﺮ mام ﻫﻢ ﺑﺎﻳﺪ ﻳﻚ \nﻧﻮﺷﺘﻪ ﺷﻮد(. اﺧﺘﻴﺎري: class SquareMatrix extends Matrix { SquareMatrix(int n); SquareMatrix inverse(); double determinant(); double eigenValues(double start, double end, double accuracy); } Constructorآن ،ﻣﻘﺪار nرا ﻣﻲﮔﻴﺮد و ﻣﺎﺗﺮﻳﺴﻲ ﻣﺮﺑﻌﻲ ﺑﻪ اﻧﺪازهي ﺳﻄﺮ و ﺳﺘﻮن nﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ. ﻣﺘﺪ ،inverseﻣﻌﻜﻮس ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻌﻲ ﻣﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻣﺘﺪ ،determinantدﺗﺮﻣﻴﻨﺎن ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻌﻲ ﻣﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻣﺘﺪ ،eigenValueاوﻟﻴﻦ ﻣﻘﺪار وﻳﮋه2ي ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻌﻲ ﻣﺎ را از startﺗﺎ endﺑﺎ دﻗﺖ accuracyﺑﺮﻣﻲﮔﺮداﻧﺪ .در ﺻﻮرﺗﻴﻜﻪ ﻣﻘﺪار وﻳﮋهاي ﻧﺪاﺷﺖ ،ﻣﻘﺪار end+1را ﺑﺮﻣﻲﮔﺮداﻧﺪ) .ﻣﻲﺗﻮاﻧﻴﺪ از ﻛﻼس Polynomialاﺳﺘﻔﺎده ﻛﻨﻴﺪ( ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا 8 2 ﺑﻪ ﺻﻔﺤﻪي 454ﻛﺘﺎب رﻳﺎﺿﻲ ﻋﻤﻮﻣﻲ ) (2ﺧﻮد ﻣﺮاﺟﻌﻪ ﻓﺮﻣﺎﺋﻴﺪ. ﺗﻤﺮﻳﻦ (Projectile.java) 4 ﻳﻚ اﭘﻠﺖ ﺟﺎوا ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻛﺎرﺑﺮ ﺑﺘﻮاﻧﺪ ﺑﺎ ﻛﺸﻴﺪن ﻣﻮﺷﻮاره ﺑﺮ روي اﭘﻠﺖ ،ﺑﺮدار ﺳﺮﻋﺖ اوﻟﻴﻪ ﻳﻚ ﭘﺮﺗﺎﺑﻪ را ﻣﺸﺨﺺ ﻛﻨﺪ. ﺳﭙﺲ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻛﻠﻴﺪ ﻣﻮﺷﻮاره رﻫﺎ ﺷﺪ؛ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺴﺘﻲ ﻣﺴﻴﺮ ﺣﺮﻛﺖ ﭘﺮﺗﺎﺑﻪ را ﺑﺮ روي ﺻﻔﺤﻪ اﭘﻠﺖ رﺳﻢ ﻛﻨﺪ .در ﺻﻮرت ﻧﻴﺎز ،ﺿﺮﻳﺐ ﻣﻨﺎﺳﺒﻲ را ﺑﺮاي ﺳﺮﻋﺖ اوﻟﻴﻪ اﻧﺘﺨﺎب ﻛﻨﻴﺪ ﻛﻪ ﻣﺴﻴﺮ رﺳﻢ ﺷﺪه در ﺻﻔﺤﻪ اﭘﻠﺘﻲ ﺑﺎ اﻧﺪازه ﻣﻌﻘﻮل ﻗﺎﺑﻞ ﻧﻤﺎﻳﺶ ﺑﺎﺷﺪ .ﻧﻴﺎزي ﺑﻪ ﭘﻮﻳﺎﻧﻤﺎﻳﻲ 3ﺣﺮﻛﺖ ﭘﺮﺗﺎﺑﻪ ﻧﻴﺴﺖ. در ﭘﻴﺎده ﺳﺎزي ﺑﻪ ﻧﻜﺎت زﻳﺮ ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ: - ﻣﺒﺪأ ﻣﺨﺘﺼﺎت اﭘﻠﺖ ،ﮔﻮﺷﻪ ﺑﺎﻻي ﺳﻤﺖ ﭼﭗ اﺳﺖ ،اﻣﺎ ﺷﻤﺎ در ﺷﺒﻴﻪ ﺳﺎزي ﺑﺎﻳﺪ ﮔﻮﺷﻪ ﭘﺎﻳﻴﻦ ﺳﻤﺖ ﭼﭗ را ﺑﻌﻨﻮان ﻣﺒﺪأ ﻓﺮض ﻛﻨﻴﺪ . - ﺑﺮاي ﻳﺎﻓﺘﻦ اﺑﻌﺎد اﭘﻠﺖ از ﻣﺘﺪﻫﺎي )( getWidthو )( getHeightاﺳﺘﻔﺎده ﻛﻨﻴﺪ .اﻳﻦ ﻣﺘﺪﻫﺎ از JAppletﺑﻪ اﭘﻠﺖ ﺷﻤﺎ ﺑﻪ ارث ﻣﻲ رﺳﻨﺪ . ﺗﻤﺮﻳﻦ ) (Projectile2.java) 5اﺧﺘﻴﺎري( اﻳﻦ ﻣﺴﺌﻠﻪ ﺷﺒﻴﻪ ﺑﻪ ﻣﺴﺌﻠﻪ ﻗﺒﻞ اﺳﺖ ،ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﭘﺮﺗﺎﺑﻪ ﭘﺲ از ﺑﺮﺧﻮرد ﺑﺎ ﻛﻨﺎره ﭘﺎﻳﻴﻦ اﭘﻠﺖ ،ﻣﺘﻮﻗﻒ ﻧﻤﻲ ﺷﻮد و ﺑﺎ ﺣﻔﻆ ﺳﺮﻋﺖ اوﻟﻴﻪ ﻋﻤﻮدي ﺑﻪ ﺳﻤﺖ ﺑﺎﻻ و ﺑﺎ اﻧﺪازه 3/4اﻧﺪازه ﺳﺮﻋﺖ ﻋﻤﻮدي در ﻟﺤﻈﻪ ﺑﺮﺧﻮرد ﻣﻲ ﺷﻮد .ﺣﺮﻛﺖ ﭘﺮﺗﺎﺑﻪ ﺗﺎ زﻣﺎﻧﻴﻜﻪ ﺟﺰء ﺻﺤﻴﺢ اﻧﺪازه ﺳﺮﻋﺖ ﻋﻤﻮدي آن ﺻﻔﺮ ﺷﻮد اداﻣﻪ ﻣﻲ ﻳﺎﺑﺪ. ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ animation 3 ﺗﻤﺮﻳﻦ ﺳﺮي دوم ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﺷﻲءﮔﺮا 9
© Copyright 2025 Paperzz