hw2.pdf

‫ﺑﻪ ﻧﺎم دوﺳﺖ‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﭘﻴﺸﺮﻓﺘﻪ‬
‫ﻧﻴﻢ ﺳﺎل دوم ‪84-83‬‬
‫ﺕﻤﺮﻳﻦ دوم‬
‫ﺕﺬﮐﺮ ﻣﻬﻢ‪ :‬ﮐﺴﺎﻧﯽ ﮐﻪ ﺗﺎ ﮐﻨﻮن ﻋﻀﻮ ‪ mailing list‬ﻧﺸﺪﻩ اﻧﺪ‪ .‬هﺮ ﭼﻪ ﺱﺮﻳﻌﺘﺮ ﺑﺮای ﻋﻀﻮ ﺵﺪن‬
‫در ‪ mailing list‬اﻗﺪام ﮐﻨﻨﺪ‪ .‬اﻳﻦ ‪ mailing list‬ﺑﺮای اﻃﻼع ﻳﺎﻓﺘﻦ از وﺟﻮد ﺗﻤﺮﻳﻦ ﺟﺪﻳﺪ و ﻳﺎ‬
‫اﻡﺘﺤﺎﻧﺎت ﮐﻼس ﺣﻞ ﺗﻤﺮﻳﻦ و ﻳﺎ ﺑﺮای ﭘﺮﺱﺶ هﺎی اﺣﺘﻤﺎﻟﯽ ﺗﻤﺮﻳﻦ هﺎ‪ ،‬درﺱﺖ ﺵﺪﻩ اﺱﺖ‪ ،‬ﮐﻪ ﺣﺘﻤﺎ‬
‫ﺑﺎﻳﺪ در ﺁن ﻋﻀﻮ ﺵﻮﻳﺪ‪.‬‬
‫ﺑﺮای ﻋﻀﻮ ﺵﺪن در ‪ mailing list‬ﻓﻮق ﮐﺎﻓﯽ اﺳﺖ ﮐﻪ ﺑﻪ ‪http://lists.ce.sharif.edu‬‬
‫ﻣﺮاﺟﻪ ﮐﻨﻴﺪ و ﻋﻀﻮ ‪ mailing list‬درس ‪ ce244‬ﺵﻮﻳﺪ‪.‬‬
‫در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻋﺬر ﺵﻤﺎ ﻣﺒﻨﯽ ﺑﺮ ﻣﻄﻠﻊ ﻧﺒﻮدن از ﻣﺴﺎﺋﻞ و ﻣﻄﺎﻝﺐ ﻣﻄﺮح ﺵﺪﻩ در‬
‫‪ mailing list‬ﭘﺬﻳﺮﻓﺘﻪ ﻧﺨﻮاهﺪ ﺑﻮد‪.‬‬
‫ﺑﺮای هﺮ ﻳﮏ از ﻡﺴﺎﺋﻞ زﻳﺮ ﻳﮏ ﮐﻼس ﺟﺎوا ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬ﮐﻪ ﻡﺴﺌﻠﻪ را ﻃﺒﻖ ﻡﺸﺨﺼﺎت ﮔﻔﺘﻪ ﺵﺪﻩ ﺣﻞ ﮐﻨﺪ‪ .‬دﻗﺖ ﮐﻨﻴﺪ ﮐﻪ‬
‫ﻧﺎم ﮐﻼس ﺵﻤﺎ ﺑﺎﻳﺪ دﻗﻴﻘﺎ ﻧﺎم دادﻩ ﺵﺪﻩ ﺑﺎﺵﺪ‪) .‬ﺑﻪ ﺑﺰرﮔﯽ و ﮐﻮﭼﮑﯽ ﺣﺮوف ﺗﻮﺟﻪ ﮐﻨﻴﺪ(‪.‬‬
‫ﺑﺮای ﺗﺤﻮﻳﻞ ﺗﻤﺮﻳﻦ ﺥﻮد ﻓﻘﻂ ﻓﺎﻳﻞ هﺎی ‪ *.java‬ﺕﻤﺮﻳﻦ ﺥﻮد را )ﺑﺪون ﻓﺎﻳﻠﻬﺎی ‪ *.class‬و ‪ file‬ﻳﺎ داﻳﺮﮐﺘﻮری‬
‫اﺽﺎﻓﯽ( ‪ zip‬ﮐﺮدﻩ ]از ﻓﺮﻣﺖ ‪ rar‬اﺳﺘﻔﺎدﻩ ﻧﮑﻨﻴﺪ[‪ ،‬ﮐﻪ ﻧﺎم ﺁن ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻴﺒﺎﺵﺪ‪:‬‬
‫ﺑﻌﺪ از ”‪ “HW2-‬ﺵﻤﺎرﻩ داﻧﺸﺠﻮﻳﯽ ﺥﻮد را وارد ﮐﺮدﻩ )ﺑﺪون اﻳﻨﮑﻪ از ﮐﺎراﮐﺘﺮ ﻓﺎﺻﻠﻪ ﺥﺎﻝﯽ اﺳﺘﻔﺎدﻩ ﮐﻨﻴﺪ(‪ .‬ﺑﻪ‬
‫ﻋﻨﻮان ﻡﺜﺎل ‪ ] HW2-83182239.zip :‬از ﻓﺮﻡﺖ ‪ *.rar‬ﻡﺎﻧﻨﺪ ‪ HW2-83182239.rar‬اﺱﺘﻔﺎدﻩ ﻧﮑﻨﻴﺪ[ و ﺱﭙﺲ‬
‫ﺁن را ﺗﻮﺱﻂ ﻳﮏ ‪ email‬ﺑﺎ ﻡﺸﺨﺼﺎت زﻳﺮ ﺑﻪ ﺁدرس ﻡﺬﮐﻮر ارﺱﺎل ﮐﻨﻴﺪ‪.‬‬
‫‪[email protected]‬‬
‫‪HW2-83182239‬‬
‫‪HW2-83182239.zip‬‬
‫‪Recipient:‬‬
‫‪Subject:‬‬
‫‪Body:‬‬
‫‪Attachments:‬‬
‫ﻓﻴﻠﺪ ‪ Subject‬ﻧﺎﻡﻪ‪ ،‬درﺱﺖ ﻡﺎﻧﻨﺪ اﺱﻢ ‪ zip‬ﻓﺎﻳﻞ ‪ attach‬ﺵﺪﻩ ﻡﻴﺒﺎﺵﺪ‪ .‬ﺑﺪﻳﻦ ﺹﻮرت ﮐﻪ ﺑﻌﺪ از ”‪ “HW2-‬ﺵﻤﺎرﻩ‬
‫داﻧﺸﭽﻮﻳﯽ ﺥﻮد را وارد ﮐﺮدﻩ )ﺑﺪون اﻳﻨﮑﻪ از ﮐﺎراﮐﺘﺮ ﻓﺎﺹﻠﻪ ﺥﺎﻟﯽ اﺱﺘﻔﺎدﻩ ﮐﻨﻴﺪ(‪.‬‬
‫ﻧﮑﺎﺕﯽ ﮐﻪ در ارﺳﺎل ﺕﻤﺮﻳﻦ ﺑﺎﻳﺪ ﺣﺘﻤﺎ رﻋﺎﻳﺖ ﺵﻮﻧﺪ‪:‬‬
‫‪ .1‬ﺗﻤﺮﻳﻦ هﺎ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﻪ ﺹﻮرت ﮔﻔﺘﻪ ﺵﺪﻩ ارﺱﺎل ﮔﺮدﻧﺪ‪ .‬در ﻏﻴﺮ اﻳﻦ ﺹﻮرت ﺗﺼﺤﻴﺢ ﻧﺨﻮاهﻨﺪ ﮔﺸﺖ‪ ،‬و‬
‫ﻧﻤﺮﻩ ﺁن را از دﺱﺖ ﻡﻴﺪهﻨﺪ‪.‬‬
‫‪ .2‬ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺑﺪﻧﻪ ‪ mail‬ﺵﻤﺎ ﺥﻮاﻧﺪﻩ ﻧﻤﻴﺸﻮد‪ ،‬ﻟﺬا اﮔﺮ ﻗﺼﺪ ﺑﻴﺎن ﻡﻄﻠﺒﯽ را دارﻳﺪ‪ ،‬ﻧﺎﻡﻪ ای ﺟﺪاﮔﺎﻧﻪ ای‬
‫ارﺱﺎل ﮐﻨﻴﺪ ﮐﻪ ‪ subject‬ﺁن ﻡﺘﻔﺎوت ﺑﺎﺵﺪ‪.‬‬
‫‪ .3‬ﺕﻮﺟﻪ ﻣﻬﻢ‪ :‬در ﺻﻮرﺕﯽ ﮐﻪ ﮐﺴﯽ ﺕﻤﺮﻳﻦ ﺥﻮد را ﺑﻪ ﺟﺎی ﺁدرس‪ mail‬درس ﺑﻪ ﺁدرس ‪mailing list‬‬
‫درس ارﺳﺎل ﮐﻨﺪ‪ .‬ﻧﻤﺮﻩ ﺁن ﺕﻤﺮﻳﻦ را از دﺳﺖ ﻣﯽ دهﺪ‪ .‬و در ﺻﻮرت ﺕﮑﺮار ﻧﻤﺮﻩ ﻣﻨﻔﯽ ﺥﻮاهﺪ ﮔﺮﻓﺖ‪.‬‬
‫ﻣﻬﻠﺖ ارﺳﺎل ﺕﻤﺮﻳﻦ ﺳﺮی دوم‪ ،‬ﺕﺎ ﺳﺎﻋﺖ ‪ 13:30‬ﻇﻬﺮ روز دوﺵﻨﺒﻪ ‪ 83/12/24‬ﻣﯽ ﺑﺎﺵﺪ‪.‬‬
‫ﺗﻤﺮﻳﻦ هﺎﻳﯽ ﮐﻪ ﺑﻌﺪ از اﻳﻦ ﺗﺎرﻳﺦ و ﺱﺎﻋﺖ ﻓﺮﺱﺘﺎدﻩ ﺵﻮﻧﺪ‪ ،‬ﺗﺼﺤﻴﺢ ﻧﺨﻮاهﻨﺪ ﺵﺪ‪.‬‬
‫ﻣﺴﺌﻠﻪ ﻳﮏ ‪ :‬ﺳﺎﻋﺖ دﻳﻮاری‬
‫ﻧﺎم ﮐﻼس ﺑﺮﻧﺎﻣﻪ ‪Clock.java :‬‬
‫در اﻳﻦ ﻡﺴﺌﻠﻪ ﺑﺎﻳﺪ ﻳﮏ ‪ applet‬ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﺱﺎﻋﺖ ﺱﻴﺴﺘﻢ را ﺑﻪ ﺹﻮرت ﻳﮏ ﺱﺎﻋﺖ دﻳﻮاری ﻧﺸﺎن دهﺪ‪ .‬ﺱﺎﻋﺖ‬
‫دﻳﻮاری ﺵﻤﺎ ﺑﺎﻳﺪ هﺮ ‪ 3‬ﻋﻘﺮﺑﻪ ﺙﺎﻧﻴﻪ ﺵﻤﺎر‪ ،‬دﻗﻴﻘﻪ ﺵﻤﺎر و ﺱﺎﻋﺖ ﺵﻤﺎر را داﺵﺘﻪ ﺑﺎﺵﺪ و ﻡﺎداﻡﯽ ﮐﻪ ﺹﻔﺤﻪ ‪applet‬‬
‫ﺵﻤﺎ ﺑﺎز اﺱﺖ ﺑﺮﻧﺎﻡﻪ ﺵﻤﺎ ﺑﺎﻳﺪ ﺱﺎﻋﺖ ﺥﻮد را ﺑﻪ روز ﮐﻨﺪ و ﺱﺎﻋﺖ ﺱﻴﺴﺘﻢ را ﺑﻪ درﺱﺘﯽ ﻧﻤﺎﻳﺶ دهﺪ‪ .‬ﻋﻼوﻩ ﺑﺮ اﻳﻦ‬
‫ﺱﺎﻋﺖ ﺵﻤﺎ ﺑﺎﻳﺪ دارای اﻡﮑﺎﻧﯽ ﺑﺎﺵﺪ ﮐﻪ ﺑﻪ ﮐﺎرﺑﺮ اﻳﻦ اﻡﮑﺎن را ﺑﺪهﺪ ﮐﻪ اﺑﺘﺪا ﻳﺎ از ﺱﺎﻋﺖ ﺱﻴﺴﺘﻢ اﺱﺘﻔﺎدﻩ ﮐﻨﺪ ﻳﺎ اﻳﻨﮑﻪ‬
‫ﺑﺘﻮاﻧﺪ ﻡﻘﺪار ﺱﺎﻋﺖ‪ ،‬دﻗﻴﻘﻪ و ﺙﺎﻧﻴﻪ ﺱﺎﻋﺖ را ﺑﻪ ﺹﻮرت دﺱﺘﯽ ﺗﻨﻈﻴﻢ ﮐﻨﺪ‪ .‬و ﺱﺎﻋﺖ ﺵﻤﺎ از ﺁن زﻡﺎن ﮐﻪ ﮐﺎرﺑﺮ وارد‬
‫ﮐﺮدﻩ ﺵﺮوع ﺑﻪ ﮐﺎر ﮐﻨﺪ‪ .‬ﺑﺮﻧﺎﻡﻪ ﺵﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ‪ click‬ﺑﺮ روی ﻳﮏ دﮐﻤﻪ ﺥﺎﺗﻤﻪ ﻳﺎﺑﺪ‪.‬‬
‫) ﺑﺮای ﮔﺮﻓﺘﻦ ﺱﺎﻋﺖ ﺱﻴﺴﺘﻢ ﻡﯽ ﺗﻮاﻧﻴﺪ از ﮐﻼس ‪ java.util.Date‬اﺱﺘﻔﺎدﻩ ﮐﻨﻴﺪ‪ .‬و ﺑﺮای اﻳﻨﮑﻪ ﺑﻴﻦ ﺙﺎﻧﻴﻪ هﺎ ﺑﻪ ﻡﺪت‬
‫ﻳﮏ ﺙﺎﻧﻴﻪ ‪ wait‬ﮐﻨﻴﺪ‪ ،‬ﮐﺎﻓﻴﺴﺖ از ﻡﺘﺪ ;)‪ Thread.sleep(1000‬اﺱﺘﻔﺎدﻩ ﮐﻨﻴﺪ‪(.‬‬
‫ﻣﺴﺌﻠﻪ دوم ‪Binary Search :‬‬
‫ﻧﺎم ﮐﻼس ﺑﺮﻧﺎﻣﻪ ‪BinarySearch.java:‬‬
‫در اﻳﻦ ﻡﺴﺌﻠﻪ ﺵﻤﺎ ﺑﺎﻳﺪ ﻳﮏ ‪ applet‬ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ روی ﻳﮏ ﻟﻴﺴﺖ ‪ 32‬ﺗﺎﻳﯽ ﻡﺮﺗﺐ ﺵﺪﻩ ﺹﻌﻮدی ) ﺑﺮای ﻡﺜﺎل از اﻋﺪاد‬
‫ﻡﻀﺮب ‪ (2‬ﺑﺎ اﺱﺘﻔﺎدﻩ از اﻟﮕﻮرﻳﺘﻢ ‪ binary search‬ﺑﻪ دﻧﺒﺎل ﻳﮏ ﻋﺪد ﺑﮕﺮدد ﮐﻪ از ﮐﺎرﺑﺮ درﻳﺎﻓﺖ ﻡﻴﮑﻨﺪ‪.‬‬
‫ﺑﺮﻧﺎﻡﻪ ﺵﻤﺎ ﺑﺎﻳﺪ روﻧﺪ ﺟﺴﺘﺠﻮی دودوﻳﯽ ﺥﻮد را ﺑﺮای ﻳﺎﻓﺘﻦ ﻋﺪد ﻡﻮرد ﻧﻈﺮ ﺑﻪ ﮐﺎرﺑﺮ ﻧﻤﺎﻳﺶ دهﺪ )ﻡﺎﻧﻨﺪ ﻧﻤﻮﻧﻪ هﺎی‬
‫زﻳﺮ(‪ .‬ﺑﺪﻳﻦ ﻡﻌﻨﯽ ﮐﻪ هﻤﻮارﻩ ﻧﺎﺣﻴﻪ ﻡﻮرد ﺟﺴﺘﺠﻮی ﺥﻮد را ﺑﻪ ﮐﺎرﺑﺮ ﻧﻤﺎﻳﺶ دهﺪ‪.‬‬
‫ﻡﺎداﻡﯽ ﮐﻪ ﮐﺎرﺑﺮ از ﺑﺮﻧﺎﻡﻪ ﺥﺎرج ﻧﺸﺪﻩ‪ ،‬ﻡﯽ ﺗﻮاﻧﺪ ﻋﺪد ﻡﻮرد ﻧﻈﺮ ﺥﻮد را ﺗﻐﻴﻴﺮ دادﻩ و ﻧﺘﻴﺠﻪ را ﺑﺒﻴﻨﺪ‪ .‬هﻤﭽﻨﻴﻦ‬
‫ﺑﺮﻧﺎﻡﻪ ﺵﻤﺎ ﺑﺎﻳﺪ ﻧﺘﻴﺠﻪ )اﻳﻨﮑﻪ ﻋﺪد ﻡﻮرد ﻧﻈﺮ ﭘﻴﺪا ﻧﺸﺪﻩ و ﻳﺎ اﻳﻨﮑﻪ ﻋﺪد ﻡﻮرد ﻧﻈﺮ در ﺥﺎﻧﻪ ‪ i‬ام ﭘﻴﺪا ﺵﺪﻩ( را هﺮ ﺑﺎر‬
‫ﺑﻪ ﮐﺎرﺑﺮ اﻋﻼم ﮐﻨﺪ‪.‬‬
‫ﻳﮏ ﻡﺜﺎل ﺑﺮای ﺟﺴﺘﺠﻮ دودوﻳﯽ روی ﻳﮏ ﻟﻴﺴﺖ از اﻋﺪاد ﻡﺮﺗﺐ ﺵﺪﻩ ‪ 16‬ﺗﺎﻳﯽ‪:‬‬
‫‪Result: value not found‬‬
‫‪Enter key: 25‬‬
‫‪Portion of array searched:‬‬
‫‪00 02 04 06 08 10 12 14* 16 18 20 22 24 26 28‬‬
‫‪16 18 20 22* 24 26 28‬‬
‫‪24 26* 28‬‬
‫*‪24‬‬
‫‪Exit‬‬
‫‪Result: found value in element 5‬‬
‫‪Enter key: 8‬‬
‫‪Portion of array searched:‬‬
‫‪00 02 04 06 08 10 12 14* 16 18 20 22 24 26 28‬‬
‫‪00 02 04 06* 08 10 12‬‬
‫‪08 10* 12‬‬
‫*‪08‬‬
‫‪Exit‬‬
‫ﺥﺪاﻳﺎ! ﺁﺱﺎن ﺑﻮدن دﺵﻮار اﺱﺖ‬
‫ﺁﺱﺎﻧﻢ ﮐﻦ‪.‬‬
‫ﺁﻧﯽ ﻧﻴﺴﺘﻢ ﮐﻪ ﺑﺎﻳﺪ‬
‫ﺁﻧﻢ ﮐﻦ‪.‬‬