lectures(1_2)-C++_2 - ‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ‬ ‫درس ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﭘﯿﺸﺮﻓﺘﻪ‬ ‫ﻣﺒﺎﺣﺚ ﭘﯿﺸﺮﻓﺘﻪ در ++‪C‬‬ ‫ﻣﺮاﺟﻊ‬ ‫ )ﻣﺮﺟﻊ ﮐﺎﻣﻞ(، ﻋﯿﻦ اﻟﻪ ﺟﻌﻔﺮﻧﮋاد ﻗﻤﯽ، اﻧﺘﺸﺎرات ﻋﻠﻮم‬C++‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ زﺑﺎن‬ .‫راﯾﺎﻧﻪ‬ • .‫ﻣﺒﺎﻧﯽ ﮐﺎﻣﭙﯿﻮﺗﺮ و اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ، ﻋﯿﻦ اﻟﻪ ﺟﻌﻔﺮﻧﮋاد ﻗﻤﯽ، اﻧﺘﺸﺎرات ﻋﻠﻮم راﯾﺎﻧﻪ‬ • .C++ ‫اﻧﻮاع ﮐﺘﺐ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ زﺑﺎن‬ • • The C++ Programming Language, Third Edition, Bjarne Stroustrup, Murray Hill, New Jersey, 1997. • ‫ﻣﺸﺨﺼﺎت درس‬ Object-Oriented Programming in C++ (4th Edition) ,Robert Lafore Mastering C++ By K. R. Venugopal, Rajkumar Buyya, T. Ravishankar C++ How to Program- Fourth Edition, by H. M. Deitel, P. J. Deitel, Prentice Hall, New Jersey, 2003. 2 ‫ﻧﺤﻮة ارﺗﺒﺎط‬ :‫درﯾﺎﻓﺖ آﺧﺮﯾﻦ اﻃﻼﻋﺎت درس‬ • https://sites.google.com/site/yousefiazar/courses/ocp – – yousefiazar@qiau.ac.ir yousefiazar@gmail.com subject ‫« در ﻗﺴﻤﺖ‬OCP ‫آوردن ﻋﺒﺎرت »ﮐﺪ ﺷﻨﺎﺳﺎﯾﯽ‬ • ‫ﻣﺸﺨﺼﺎت درس‬ :‫ﭘﺴﺖ اﻟﮑﺘﺮوﻧﯿﮑﯽ‬ – 3 ‫ﻧﺤﻮة ارزﯾﺎﺑﯽ‬ ‫• ﺗﻤﺮﯾﻨﺎت 3 ﻧﻤﺮه‬ ‫ﻣﺸﺨﺼﺎت درس‬ ‫• ﭘﺮوژه ﭘﺎﯾﺎﻧﯽ 2 ﻧﻤﺮه‬ ‫4‬ ‫• ﻣﯿﺎن ﺗﺮم )زﻣﺎن ﺑﺮﮔﺰاري ﺟﻠﺴﻪ ﻫﺸﺘﻢ( 5 ﻧﻤﺮه‬ ‫• ﭘﺎﯾﺎن ﺗﺮم 01 ﻧﻤﺮه‬ ‫ﻣﺒﺤﺚ اول:‬ ‫اﻟﮕﻮرﯾﺘﻢ ﻧﻮﯾﺴﯽ‬ ‫ﻣﻔﻬﻮم اﻟﮕﻮرﯾﺘﻢ‬ ‫•‬ ‫ﺗﺸﺮﯾﺢ دﻗﯿﻖ ﻣﺮاﺣﻞ ﻣﺨﺘﻠﻒ و ﻧﺤﻮة اﻧﺠﺎم دادن ﯾﮏ ﮐﺎر ﺧﺎص‬ ‫ﻣﻔﺎﻫﯿﻢ ﻣﻘﺪﻣﺎﺗﯽ‬ ‫– روش ﻣﺼﺮف دارو‬ ‫•‬ ‫– ﯾﺎﻓﺘﻦ ﺑﺰرﮔﺘﺮﯾﻦ ﻋﺪد در ﯾﮏ ﻣﺠﻤﻮﻋﻪ از اﻋﺪاد‬ ‫•‬ ‫6‬ ‫ﺗﺎ از ﺑﯿﻦ رﻓﺘﻦ ﮐﺎﻣﻞ ﻋﻼﺋﻢ ﺑﯿﻤﺎري، روزي ﺳﻪ دﻓﻌﻪ ﻫﺮ ﺑﺎر ﯾﮏ ﻗﺎﺷﻖ‬ ‫ﭼﺎﯾﺨﻮري از دارو در ﯾﮏ ﻟﯿﻮان آب ﺳﺮد ﺣﻞ ﻧﻤﻮده ﻗﺒﻞ از ﻏﺬا ﻣﯿﻞ ﮐﻨﯿﺪ.‬ ‫ﺑﺮرﺳﯽ اﻋﺪاد از اﺑﺘﺪا ﺗﺎ اﻧﺘﻬﺎ و ﺑﻪ ﺧﺎﻃﺮ ﺳﭙﺮدن ﺑﺰرﮔﺘﺮﯾﻦ ﻋﺪدي ﮐﻪ ﺗﺎﮐﻨﻮن‬ ‫ﺑﺎ آن ﺑﺮﺧﻮرد ﻧﻤﻮده اﯾﻢ.‬ ‫ﺗﻌﺮﯾﻒ اﻟﮕﻮرﯾﺘﻢ‬ ‫• اﻟﮕﻮرﯾﺘﻢ دﺳﺘﻮراﻟﻌﻤﻠﯽ ﺑﺮاي ﺣﻞ ﻣﺴﺄﻟﻪ اﺳﺖ ﮐﻪ‬ ‫ﻣﻔﺎﻫﯿﻢ ﻣﻘﺪﻣﺎﺗﯽ‬ ‫– ﺑﻪ زﺑﺎن دﻗﯿﻖ ﮔﻔﺘﻪ ﺷﻮد.‬ ‫• از واژه ﻫﺎﯾﯽ اﺳﺘﻔﺎده ﺷﻮد ﮐﻪ ﺑﺮاي ﻫﻤﻪ ﻣﺸﺨﺺ ﺑﺎﺷﺪ.‬ ‫– ﺑﺮداﺷﺘﻬﺎي ﻣﺨﺘﻠﻒ از ﻗﺎﺷﻖ ﭼﺎﯾﺨﻮري‬ ‫– ﺟﺰﺋﯿﺎت ﮐﺎﻣﻞ ﺣﻞ ﻣﺴﺄﻟﻪ را داﺷﺘﻪ ﺑﺎﺷﺪ.‬ ‫• ﺗﻤﺎم ﺷﺮاﯾﻄﯽ ﮐﻪ ﻣﻤﮑﻦ اﺳﺖ اﺗﻔﺎق ﺑﯿﻔﺘﺪ در ﻧﻈﺮ ﺑﮕﯿﺮﯾﻢ.‬ ‫– ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺿﺮاﯾﺐ ﯾﮏ ﻣﻌﺎدﻟﻪ درﺟﻪ رﯾﺸﻪ ﻫﺎي آن ﻣﯽ ﺗﻮاﻧﻨﺪ ﮔﻮﻧﺎﮔﻮن ﺑﺎﺷﻨﺪ.‬ ‫– ﺗﺮﺗﯿﺐ ﻣﺮاﺣﻞ آن ﻣﺸﺨﺺ ﺑﺎﺷﺪ.‬ ‫– ﺷﺮط ﺧﺎﺗﻤﻪ ﻋﻤﻠﯿﺎت ﻣﺸﺨﺺ ﺑﺎﺷﺪ.‬ ‫7‬ ‫• ﭘﺮﻫﯿﺰ از ﮐﺎرﻫﺎي ﺗﮑﺮاري ﻧﺎﺗﻤﺎم‬ ‫ﻃﺮاﺣﯽ اﻟﮕﻮرﯾﺘﻢ ﺑﺮاي ﻣﺴﺄﻟﻪ‬ ‫ﻣﻔﺎﻫﯿﻢ ﻣﻘﺪﻣﺎﯽ‬ ‫• ﻣﺮاﺣﻞ ﮐﻠﯽ ﻫﺮ ﻣﺴﺄﻟﻪ:‬ ‫8‬ ‫– ﺧﻮاﻧﺪن داده ﻫﺎ‬ ‫– اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت و ﭘﺮدازﺷﻬﺎ‬ ‫– ﭼﺎپ ﻧﺘﺎﯾﺞ‬ ‫• روش ﻃﺮاﺣﯽ اﻟﮕﻮرﯾﺘﻢ:‬ ‫– ﺗﻌﺮﯾﻒ دﻗﯿﻖ ﻣﺴﺄﻟﻪ ﺟﻬﺖ ﻣﺸﺨﺺ ﮐﺮدن ﻧﯿﺎزﻣﻨﺪﯾﻬﺎي آن‬ ‫– ﺗﻌﯿﯿﻦ ورودي و ﺧﺮوﺟﯽ ﻣﺴﺄﻟﻪ‬ ‫– ﺑﺮرﺳﯽ راه ﺣﻞ ﻫﺎي ﻣﺨﺘﻠﻒ ﻣﺴﺄﻟﻪ‬ ‫– اﻧﺘﺨﺎب ﯾﮏ راه ﺣﻞ ﻣﻨﺎﺳﺐ و ﺗﻬﯿﻪ اﻟﮕﻮرﯾﺘﻢ ﺑﺮاي آن‬ ‫– اﺷﮑﺎل زداﯾﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ ﺑﺎ ﺟﻤﻼت ﻓﺎرﺳﯽ‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫• ﻋﺪم اﺳﺘﻔﺎده از ﻧﻤﺎد ﺧﺎص‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻣﺠﻤﻮع دو ﻋﺪد را ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ.‬ ‫– اوﻟﯿﻦ ﻋﺪد را اﻧﺘﺨﺎب ﮐﺮده ﺑﺮ روي ﮐﺎﻏﺬ ﺑﻨﻮﯾﺴﯿﺪ.‬ ‫– دوﻣﯿﻦ ﻋﺪد را ﮔﺮﻓﺘﻪ آن را زﯾﺮ ﻋﺪدي ﮐﻪ ﺑﺮ روي ﮐﺎﻏﺬ ﻧﻮﺷﺘﯿﺪ، ﺑﻨﻮﯾﺴﯿﺪ.‬ ‫دو ﻋﺪد روي ﮐﺎﻏﺬ را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﮐﻨﯿﺪ، زﯾﺮ آن دو ﻋﺪد ﺑﻨﻮﯾﺴﯿﺪ.‬ ‫– ﺳﻮﻣﯿﻦ ﻋﺪدي ﮐﻪ ﺑﺮ روي ﮐﺎﻏﺬ ﻧﻮﺷﺘﻪ ﺷﺪ، ﻣﺠﻤﻮع دو ﻋﺪد اﺳﺖ.‬ ‫• اﺷﮑﺎﻻت:‬ ‫– اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ﻃﻮﻻﻧﯽ ﻣﯽ ﺷﻮﻧﺪ.‬ ‫– از دﺳﺘﻮرات ﺗﻔﺴﯿﺮﻫﺎي ﮔﻮﻧﺎﮔﻮﻧﯽ ﻣﯽ ﺷﻮد.‬ ‫9‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺑﯿﺎن رﯾﺎﺿﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫• اﺳﺘﻔﺎده از ﻧﻤﺎدﻫﺎ ﺑﻪ ﻋﻨﻮان ﻣﺤﻞ ذﺧﯿﺮه ورودي ﻫﺎ و ﺧﺮوﺟﯽ ﻫﺎ‬ ‫)ﻣﺘﻐﯿﺮﻫﺎ(‬ ‫– ﻣﺘﻐﯿﺮ ﻧﺎﻣﯽ اﺳﺖ ﺑﺮاي ﯾﮏ ﮐﻤﯿﺖ ﮐﻪ ﻣﻘﺪار آن ﻣﻤﮑﻦ اﺳﺖ ﺗﻐﯿﯿﺮ ﮐﻨﺪ.‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻣﯿﺎﻧﮕﯿﻦ ﺳﻪ ﻋﺪد ورودي را ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ.‬ ‫– ‪ A‬و ‪ B‬و ‪ C‬را از ورودي ﺑﺨﻮان‬ ‫– ‪A+B+C‬‬ ‫‪SUM‬‬ ‫– 3/‪SUM‬‬ ‫‪AVE‬‬ ‫– ‪ AVE‬را ﭼﺎپ ﮐﻦ.‬ ‫– ﭘﺎﯾﺎن‬ ‫01‬ ‫ﺑﯿﺎن رﯾﺎﺿﯽ اﻟﮕﻮرﯾﺘﻢ - 2‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫• ﻣﺠﺮي اﻟﮕﻮرﯾﺘﻢ ﻣﻔﻬﻮم ﺧﻮاﻧﺪن را ﻣﯽ داﻧﺪ.‬ ‫11‬ ‫• ﻋﻼﻣﺖ + ﺑﻪ ﻣﻌﻨﯽ ﺟﻤﻊ اﺳﺖ و ﻣﺠﺮي ﻣﻔﻬﻮم آن را ﻣﯽ داﻧﺪ.‬ ‫• ﻋﻼﻣﺖ‬ ‫ﻣﯽ دﻫﺪ.‬ ‫ﺑﻪ ﻣﻌﻨﯽ اﻧﺘﺴﺎب اﺳﺖ و ﻣﻘﺪار را در ﻣﺘﻐﯿﺮ ﺳﻤﺖ ﭼﭗ ﻗﺮار‬ ‫• ﻋﻼﻣﺖ / ﺑﻪ ﻣﻌﻨﯽ ﺗﻘﺴﯿﻢ اﺳﺖ.‬ ‫• ﻣﻔﻬﻮم ﭼﺎپ ﮐﺮدن ﺑﺮاي ﻣﺠﺮي ﻣﺸﺨﺺ اﺳﺖ.‬ ‫• ﻣﻔﻬﻮم ﭘﺎﯾﺎن ﺑﺮاي ﻣﺠﺮي ﻣﺸﺨﺺ اﺳﺖ.‬ ‫• ﻣﺠﺮي اﻟﮕﻮرﯾﺘﻢ ﻣﻔﻬﻮم ﻣﯿﺎﻧﮕﯿﻦ را ﻧﻤﯽ داﻧﺪ، ﺑﻠﮑﻪ راه ﺣﻞ آن از ﻃﺮﯾﻖ‬ ‫اﻟﮕﻮرﯾﺘﻢ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ.‬ ‫ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ ﺗﻮﺳﻂ ﺷﮑﻞ ﻫﺎ‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫• ﻣﻌﺮوﻓﺘﺮﯾﻦ ‪flowchart‬‬ ‫• ﮐﻤﮏ ﺑﻪ دﻧﺒﺎل ﮐﺮدن اﻟﮕﻮرﯾﺘﻢ در ﺣﺎﻟﺘﯽ ﮐﻪ ﻃﻮﻻﻧﯽ ﯾﺎ ﭘﯿﭽﯿﺪه ﺑﺎﺷﺪ.‬ ‫1- ﻋﻼﺋﻢ ﺷﺮوع و ﭘﺎﯾﺎن‬ ‫ﺷﺮوع‬ ‫ﭘﺎﯾﺎن‬ ‫2- ﻋﻼﻣﺖ اﺗﺼﺎل‬ ‫ﺷﺮوع‬ ‫ﭘﺎﯾﺎن‬ ‫3- ﻋﻼﻣﺖ اﻧﺘﺴﺎب و ﻣﺤﺎﺳﺒﺎت‬ ‫21‬ ‫1‬ ‫‪M‬‬ ‫2*‪P‬‬ ‫‪N‬‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ ﺗﻮﺳﻂ ﺷﮑﻞ ﻫﺎ - 2‬ ‫4- ﻋﻼﺋﻢ ورودي و ﺧﺮوﺟﯽ‬ ‫ﭼﺎپ ﺑﺮ روي ﮐﺎﻏﺬ‬ ‫‪ C‬و ‪ D‬را ﺑﺨﻮان‬ ‫5- ﻋﻼﻣﺖ اداﻣﻪ‬ ‫31‬ ‫‪ SUM‬را ﭼﺎپ ﮐﻦ‬ ‫‪A‬‬ ‫‪A‬‬ ‫ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ ﺗﻮﺳﻂ ﺷﮑﻞ ﻫﺎ- 3‬ ‫روش ﻫﺎي ﺑﯿﺎن اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺷﺮوع‬ ‫• ﻣﺜﺎل:‬ ‫‪ A‬و ‪ B‬و ‪ C‬را ﺑﺨﻮان‬ ‫‪A+B+C‬‬ ‫‪SUM‬‬ ‫3/‪SUM‬‬ ‫‪AVE‬‬ ‫‪ AVE‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫41‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﺷﻌﺎع ﯾﮏ داﯾﺮه را‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫از ورودي ﺧﻮاﻧﺪه، ﻣﺤﯿﻂ و ﻣﺴﺎﺣﺖ آن‬ ‫را ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ و ﺑﻪ ﺧﺮوﺟﯽ ﻣﯽ ﺑﺮد.‬ ‫2- 41.3*‪R*R‬‬ ‫‪S‬‬ ‫3- 41.3*‪2*R‬‬ ‫‪P‬‬ ‫5- ﭘﺎﯾﺎن‬ ‫‪S‬‬ ‫41.3*‪2*R‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :R‬ﺷﻌﺎع داﯾﺮه‬ ‫‪ :S‬ﻣﺴﺎﺣﺖ داﯾﺮه‬ ‫‪ :P‬ﻣﺤﯿﻂ داﯾﺮه‬ ‫51‬ ‫‪ R‬را ﺑﺨﻮان‬ ‫41.3*‪R*R‬‬ ‫1- ‪ R‬را ﺑﺨﻮان.‬ ‫4- ‪ P‬و ‪ S‬را ﭼﺎپ ﮐﻦ.‬ ‫ﺷﺮوع‬ ‫‪ P‬و ‪ S‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫‪P‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ درﺟﻪ ﺣﺮارت را‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺑﺮ ﺣﺴﺐ ﺳﺎﻧﺘﯿﮕﺮاد ﻣﯽ ﺧﻮاﻧﺪ و ﺑﻪ‬ ‫ﻓﺎرﻧﻬﺎﯾﺖ ﺗﺒﺪﯾﻞ ﻣﯽ ﮐﻨﺪ.‬ ‫3- ‪ F‬را ﭼﺎپ ﮐﻦ.‬ ‫4- ﭘﺎﯾﺎن‬ ‫‪F‬‬ ‫‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :C‬درﺟﮥ ﺳﺎﻧﺘﯿﮕﺮاد‬ ‫‪ :F‬درﺟﮥ ﻓﺎرﻧﻬﺎﯾﺖ‬ ‫61‬ ‫‪ C‬را ﺑﺨﻮان‬ ‫23+‪9/5*C‬‬ ‫1- ‪ C‬را ﺑﺨﻮان.‬ ‫2- 23+‪9/5*C‬‬ ‫ﺷﺮوع‬ ‫ﭘﺎﯾﺎن‬ ‫‪F‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻃﻮل و ﻋﺮض ﯾﮏ‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﻣﺴﺘﻄﯿﻞ از ورودي ﺧﻮاﻧﺪه، ﻣﺤﯿﻂ و‬ ‫ﻣﺴﺎﺣﺖ آن را ﻣﺤﺎﺳﺒﻪ ﮐﺮده ﺑﻪ ﺧﺮوﺟﯽ‬ ‫ﻣﯽ ﺑﺮد.‬ ‫3- 2*)‪(W+L‬‬ ‫71‬ ‫‪S‬‬ ‫2*)‪(W+L‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪S‬‬ ‫‪P‬‬ ‫4- ‪ P‬و ‪ S‬را ﭼﺎپ ﮐﻦ.‬ ‫5- ﭘﺎﯾﺎن‬ ‫‪ L‬و ‪ W‬را ﺑﺨﻮان‬ ‫‪W*L‬‬ ‫1- ‪ L‬و ‪ W‬را ﺑﺨﻮان.‬ ‫2- ‪W*L‬‬ ‫ﺷﺮوع‬ ‫‪ :L‬ﻃﻮل ﻣﺴﺘﻄﯿﻞ‬ ‫‪ P‬و ‪ S‬را ﭼﺎپ ﮐﻦ‬ ‫‪ :W‬ﻋﺮض ﻣﺴﺘﻄﯿﻞ‬ ‫‪ :S‬ﻣﺴﺎﺣﺖ‬ ‫‪ :P‬ﻣﺤﯿﻂ‬ ‫ﭘﺎﯾﺎن‬ ‫‪P‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ارﺗﻔﺎع و ﻗﺎﻋﺪه‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﻣﺜﻠﺜﯽ را ﺧﻮاﻧﺪه ﻣﺴﺎﺣﺖ را ﻣﺤﺎﺳﺒﻪ‬ ‫ﻧﻤﻮده ﺑﻪ ﺧﺮوﺟﯽ ﺑﺒﺮد.‬ ‫3- ‪ S‬را ﭼﺎپ ﮐﻦ.‬ ‫4- ﭘﺎﯾﺎن‬ ‫‪S‬‬ ‫‪ S‬را ﭼﺎپ ﮐﻦ‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :H‬ارﺗﻔﺎع ﻣﺜﻠﺚ‬ ‫‪ :B‬ﻗﺎﻋﺪه ﻣﺜﻠﺚ‬ ‫‪ :S‬ﻣﺴﺎﺣﺖ‬ ‫81‬ ‫‪ H‬و ‪ B‬را ﺑﺨﻮان‬ ‫2/‪H*B‬‬ ‫1- ‪ H‬و ‪ B‬را ﺑﺨﻮان.‬ ‫2- 2/‪H*B‬‬ ‫ﺷﺮوع‬ ‫ﭘﺎﯾﺎن‬ ‫‪S‬‬ ‫ﺷﺮوع‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ دو ﻣﻘﺪار را از ورودي‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺧﻮاﻧﺪه در دو ﻣﺘﻐﯿﺮ ‪ X‬و ‪ Y‬ﻗﺮارﻣﯽ دﻫﺪ و‬ ‫ﺳﭙﺲ ﻣﺤﺘﻮﯾﺎت آن دو را ﺑﺎ ﻫﻢ ﻋﻮض ﮐﺮده‬ ‫در ﺧﺮوﺟﯽ ﭼﺎپ ﮐﻨﺪ.‬ ‫‪TEMP‬‬ ‫‪X‬‬ ‫‪Y‬‬ ‫1- ‪ X‬و ‪ Y‬را ﺑﺨﻮان.‬ ‫2- ‪X‬‬ ‫3- ‪Y‬‬ ‫‪X‬‬ ‫‪Y‬‬ ‫‪Y‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :X‬ﻣﺘﻐﯿﺮ اول‬ ‫5- ‪ X‬و ‪ Y‬را ﭼﺎپ ﮐﻦ.‬ ‫6- ﭘﺎﯾﺎن‬ ‫‪X‬‬ ‫‪TEMP‬‬ ‫‪TEMP‬‬ ‫4- ‪TEMP‬‬ ‫91‬ ‫‪ X‬و ‪ Y‬را ﺑﺨﻮان‬ ‫‪ X‬و ‪ Y‬را ﭼﺎپ ﮐﻦ‬ ‫‪ :Y‬ﻣﺘﻐﯿﺮ دوم‬ ‫‪ :TEMP‬ﻣﺘﻐﯿﺮ ﮐﻤﮑﯽ‬ ‫ﭘﺎﯾﺎن‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ دو ﻣﻘﺪار را از ورودي‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺧﻮاﻧﺪه در دو ﻣﺘﻐﯿﺮ ‪ X‬و ‪ Y‬ﻗﺮارﻣﯽ دﻫﺪ و‬ ‫ﺳﭙﺲ ﻣﺤﺘﻮﯾﺎت آن دو را ﺑﺎ ﻫﻢ ﺑﺪون ﻣﺘﻐﯿﺮ‬ ‫‪ X‬و ‪ Y‬را ﺑﺨﻮان‬ ‫1- ‪ X‬و ‪ Y‬را ﺑﺨﻮان.‬ ‫2- ‪X+Y‬‬ ‫3- ‪X-Y‬‬ ‫‪Y‬‬ ‫‪X-Y‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪Y‬‬ ‫‪X‬‬ ‫5- ‪ X‬و ‪ Y‬را ﭼﺎپ ﮐﻦ.‬ ‫6- ﭘﺎﯾﺎن‬ ‫‪X+Y‬‬ ‫‪X‬‬ ‫‪X-Y‬‬ ‫ﮐﻤﮑﯽ ﻋﻮض ﮐﺮده در ﺧﺮوﺟﯽ ﭼﺎپ ﮐﻨﺪ.‬ ‫4- ‪X-Y‬‬ ‫02‬ ‫ﺷﺮوع‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ X‬و ‪ Y‬را ﭼﺎپ ﮐﻦ‬ ‫‪ :X‬ﻣﺘﻐﯿﺮ اول‬ ‫‪ :Y‬ﻣﺘﻐﯿﺮ دوم‬ ‫ﭘﺎﯾﺎن‬ ‫ﺗﻌﺮﯾﻒ دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ‬ ‫دﺳﺘﻮرات ﺷﺮﻃﯽ‬ ‫• ﺗﺎﮐﻨﻮن دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ﺑﻪ ﺗﺮﺗﯿﺐ از اوﻟﯿﻦ دﺳﺘﻮر ﺗﺎ آﺧﺮﯾﻦ‬ ‫دﺳﺘﻮر اﺟﺮا ﺷﺪﻧﺪ.‬ ‫• ﮔﺎﻫﯽ ﻣﯽ ﺧﻮاﻫﯿﻢ ﺑﺮ اﺳﺎس ﺷﺮاﯾﻄﯽ ﮐﻪ اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ؛‬ ‫– ﺑﺮﺧﯽ از دﺳﺘﻮرات اﺟﺮا ﺷﻮﻧﺪ.‬ ‫– و ﯾﺎ از اﺟﺮاي ﺑﺮﺧﯽ از آﻧﻬﺎ ﺻﺮﻓﻨﻈﺮ ﺷﻮد.‬ ‫• در اﯾﻦ ﮔﻮﻧﻪ ﺷﺮاﯾﻂ از دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد.‬ ‫• دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ ﺑﺎ ﮐﻠﻤﮥ اﮔﺮ ﺷﺮوع ﻣﯽ ﺷﻮﻧﺪ:‬ ‫اﮔﺮ‬ ‫12‬ ‫اﮔﺮ ﺷﺮط‬ ‫آﻧﮕﺎه‬ ‫ﺷﺮط‬ ‫آﻧﮕﺎه‬ ‫دﺳﺘﻮرات 1‬ ‫دﺳﺘﻮرات‬ ‫در ﻏﯿﺮ اﯾﻨﺼﻮرت‬ ‫دﺳﺘﻮرات 2‬ ‫ﻧﻤﺎﯾﺶ دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ‬ ‫دﺳﺘﻮرات ﺷﺮﻃﯽ‬ ‫• ﻟﻮزي ﻣﯽ ﺗﻮاﻧﺪ دو ﯾﺎ ﺳﻪ ﺧﺮوﺟﯽ داﺷﺘﻪ ﺑﺎﺷﺪ.‬ ‫درﺳﺖ‬ ‫ﺷﺮط‬ ‫درﺳﺖ‬ ‫دﺳﺘﻮرات 1‬ ‫22‬ ‫ﺷﺮط‬ ‫ﻧﺎدرﺳﺖ‬ ‫دﺳﺘﻮرات 2‬ ‫دﺳﺘﻮرات‬ ‫ﻧﺎدرﺳﺖ‬ ‫ﻧﻤﺎﯾﺶ دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ - 2‬ ‫دﺳﺘﻮرات ﺷﺮﻃﯽ‬ ‫• ﻟﻮزي ﻣﯽ ﺗﻮاﻧﺪ دو ﯾﺎ ﺳﻪ ﺧﺮوﺟﯽ داﺷﺘﻪ ﺑﺎﺷﺪ.‬ ‫0<‪X‬‬ ‫0>‪X‬‬ ‫‪X‬‬ ‫دﺳﺘﻮرات 1‬ ‫0=‪X‬‬ ‫دﺳﺘﻮرات 3‬ ‫32‬ ‫دﺳﺘﻮرات 2‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻋﺪدي را از ورودي‬ ‫ﺧﻮاﻧﺪه، ﻗﺪر ﻣﻄﻠﻖ آن را در ﺧﺮوﺟﯽ‬ ‫ﭼﺎپ ﮐﻨﺪ.‬ ‫ﺷﺮوع‬ ‫‪ X‬را ﺑﺨﻮان‬ ‫ﺧﯿﺮ‬ ‫0<‪X‬‬ ‫1- ‪ X‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ 0<‪ X‬آﻧﮕﺎه ‪-X‬‬ ‫3- ‪ X‬را ﭼﺎپ ﮐﻦ.‬ ‫4- ﭘﺎﯾﺎن‬ ‫‪-X‬‬ ‫‪X‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :X‬ﻋﺪد ورودي‬ ‫‪ X‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫42‬ ‫ﺑﻠﯽ‬ ‫‪X‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻋﺪدي ﻣﺜﻞ ‪ X‬را از‬ ‫ﺷﺮوع‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫ورودي ﺧﻮاﻧﺪه و ﻣﻘﺪار ‪ Y‬را ﺑﻪ ﺻﻮرت‬ ‫زﯾﺮ ﻣﺤﺎﺳﺒﻪ ﮐﻨﺪ:‬ ‫5-‪Y=3X‬‬ ‫2=‪Y‬‬ ‫1+‪Y=2X‬‬ ‫2<‪X‬‬ ‫2=‪X‬‬ ‫2>‪X‬‬ ‫2>‬ ‫1- ‪ X‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ 2<‪ X‬آﻧﮕﺎه 5-‪3*X‬‬ ‫وﮔﺮﻧﻪ اﮔﺮ 2=‪ X‬آﻧﮕﺎه 2‬ ‫‪Y‬‬ ‫2<‬ ‫‪X‬‬ ‫‪Y‬‬ ‫و ﮔﺮﻧﻪ 1+‪2*x‬‬ ‫1+‪2*X‬‬ ‫‪Y‬‬ ‫3- ‪ Y‬را ﭼﺎپ ﮐﻦ.‬ ‫4- ﭘﺎﯾﺎن‬ ‫‪Y‬‬ ‫2=‬ ‫2‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :X‬ﻣﻘﺪار ورودي‬ ‫52‬ ‫‪ X‬را ﺑﺨﻮان‬ ‫‪ :Y‬ﻣﻘﺪار ﺗﺎﺑﻊ‬ ‫‪Y‬‬ ‫‪ Y‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫5-‪3*X‬‬ ‫‪Y‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ دو ﻣﻘﺪار را از ورودي‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫ﺧﻮاﻧﺪه، ﻣﻘﺪار ﺑﺰرﮔﺘﺮ را در ﺧﺮوﺟﯽ ﭼﺎپ‬ ‫ﮐﻨﺪ.‬ ‫‪ X‬و ‪ Y‬را ﺑﺨﻮان‬ ‫1- ‪ X‬و ‪ Y‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ ‪ X>Y‬آﻧﮕﺎه ‪X‬‬ ‫ﺧﯿﺮ‬ ‫‪MAX‬‬ ‫وﮔﺮﻧﻪ اﮔﺮ ‪ Y>X‬آﻧﮕﺎه ‪Y‬‬ ‫و ﮔﺮﻧﻪ ﭼﺎپ ﮐﻦ »اﻋﺪاد ﺑﺮاﺑﺮﻧﺪ« و ﺑﺮو ﺑﻪ 4‬ ‫3- ‪ MAX‬را ﭼﺎپ ﮐﻦ.‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :X‬ﻣﻘﺪار اول‬ ‫‪ :MAX‬ﻣﻘﺪار ﺑﺰرﮔﺘﺮ‬ ‫‪X>Y‬‬ ‫ﺑﻠﯽ‬ ‫ﺑﻠﯽ‬ ‫‪Y‬‬ ‫4- ﭘﺎﯾﺎن‬ ‫ﺧﯿﺮ‬ ‫‪Y>X‬‬ ‫‪MAX‬‬ ‫‪ :Y‬ﻣﻘﺪار دوم‬ ‫62‬ ‫ﺷﺮوع‬ ‫‪X‬‬ ‫‪MAX‬‬ ‫‪ MAX‬را ﭼﺎپ ﮐﻦ‬ ‫ﭼﺎپ ﮐﻦ‬ ‫»اﻋﺪاد ﺑﺮاﺑﺮﻧﺪ«‬ ‫ﭘﺎﯾﺎن‬ ‫‪MAX‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻋﺪدي ﺻﺤﯿﺢ ﻣﺜﻞ‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫‪ X‬را از ورودي ﺧﻮاﻧﺪه اﮔﺮ زوج ﺑﺎﺷﺪ، ‪2X‬‬ ‫و اﮔﺮ ﻓﺮد ﺑﺎﺷﺪ ‪ 3X‬را ﺑﻪ ﺧﺮوﺟﯽ ﺑﺒﺮد:‬ ‫‪ X‬را ﺑﺨﻮان‬ ‫2/‪X‬‬ ‫2- ]2/‪[X‬‬ ‫‪D‬‬ ‫3- 2*‪X-D‬‬ ‫‪R‬‬ ‫4- اﮔﺮ 0=‪ R‬آﻧﮕﺎه ‪2*X‬‬ ‫وﮔﺮﻧﻪ ‪3*X‬‬ ‫5- ‪ Y‬را ﭼﺎپ ﮐﻦ.‬ ‫6- ﭘﺎﯾﺎن‬ ‫‪Y‬‬ ‫ﺧﯿﺮ‬ ‫‪Y‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :X‬ﻣﻘﺪار ورودي‬ ‫‪3*X‬‬ ‫‪ :D‬ﺧﺎرج ﻗﺴﻤﺖ ﺗﻘﺴﯿﻢ ﺻﺤﯿﺢ‬ ‫‪ :Y‬ﻣﻘﺪار ﺧﺮوﺟﯽ‬ ‫‪D‬‬ ‫2*‪X-D‬‬ ‫1- ‪ X‬را ﺑﺨﻮان.‬ ‫‪ :R‬ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ ﺑﺮ 2‬ ‫72‬ ‫ﺷﺮوع‬ ‫‪R‬‬ ‫0=‪R‬‬ ‫‪Y‬‬ ‫ﺑﻠﯽ‬ ‫‪2*X‬‬ ‫‪ Y‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫‪Y‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﺟﻮاب ﻫﺎي ﺣﻘﯿﻘﯽ‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫ﻣﻌﺎدﻟﮥ درﺟﮥ دوم 0=‪AX2+BX+C‬‬ ‫را ﯾﺎﻓﺘﻪ و در ﺧﺮوﺟﯽ ﭼﺎپ ﮐﻨﺪ.‬ ‫1- ‪ A‬و ‪ B‬و ‪ C‬را ﺑﺨﻮان.‬ ‫2- ‪B*B-4*A*C‬‬ ‫‪D‬‬ ‫3- اﮔﺮ 0=‪ A‬آﻧﮕﺎه ‪-C/B‬‬ ‫4- اﮔﺮ 0<‪ D‬آﻧﮕﺎه ﭼﺎپ ﮐﻦ »ﺟﻮاب ﺣﻘﯿﻘﯽ ﻧﺪارد« و ﺑﺮو ﺑﻪ 8‬ ‫5-‬ ‫6-‬ ‫‪B D‬‬ ‫‪2* A‬‬ ‫‪X1 ‬‬ ‫‪B D‬‬ ‫‪2* A‬‬ ‫‪X2‬‬ ‫7- 1‪ X‬و 2‪ X‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫82‬ ‫1‪ X‬را ﭼﺎپ ﮐﻦ و ﺑﺮو ﺑﻪ 8‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ A‬و ‪ B‬و ‪ :C‬ﺿﺮاﯾﺐ ورودي‬ ‫‪ :D‬دﻟﺘﺎ‬ ‫1‪ X‬و 2‪ :X‬رﯾﺸﻪ ﻫﺎي ﻣﻌﺎدﻟﻪ‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺷﺮﻃﯽ‬ ‫ﺷﺮوع‬ ‫‪ A‬و ‪ B‬و ‪ C‬را ﺑﺨﻮان‬ ‫‪B*B-4*A*C‬‬ ‫ﺧﯿﺮ‬ ‫‪B D‬‬ ‫‪2* A‬‬ ‫‪X1 ‬‬ ‫‪B D‬‬ ‫‪2* A‬‬ ‫‪X2‬‬ ‫1‪ X‬و 2‪X‬‬ ‫را ﭼﺎپ ﮐﻦ‬ ‫92‬ ‫ﺧﯿﺮ‬ ‫0<‪D‬‬ ‫ﺑﻠﯽ‬ ‫‪D‬‬ ‫ﺑﻠﯽ‬ ‫0=‪A‬‬ ‫‪-C/B‬‬ ‫ﭼﺎپ ﮐﻦ “ﺟﻮاب‬ ‫ﺣﻘﯿﻘﯽ ﻧﺪارد”‬ ‫ﭘﺎﯾﺎن‬ ‫ﺟﻮاب ﻣﻀﺎﻋﻒ‬ ‫1‪ X‬را ﭼﺎپ ﮐﻦ‬ ‫1‪X‬‬ ‫ﺳﻪ ﭘﺎراﻣﺘﺮ ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار‬ ‫• ﺷﺮط ﺣﻠﻘﻪ:‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار‬ ‫ﻣﺸﺨﺺ ﮐﻨﻨﺪة زﻣﺎن ﺧﺎﺗﻤﮥ ﺣﻠﻘﻪ‬ ‫– ﺑﺮاي ﮐﻨﺘﺮل ﺗﻌﺪاد دﻓﻌﺎت اﺟﺮاي ﺣﻠﻘﻪ‬ ‫• ﺷﻤﺎرﻧﺪه ﺣﻠﻘﻪ ﺗﮑﺮار:‬ ‫ﻣﺸﺨﺺ ﮐﻨﻨﺪة دﻓﻌﺎت اﺟﺮاي ﺣﻠﻘﻪ‬ ‫– ﺑﺎﯾﺪ داراي ﯾﮏ ﻣﻘﺪار اوﻟﯿﻪ ﺑﺎﺷﺪ.‬ ‫• ﮔﺎم ﺣﻠﻘﻪ:‬ ‫ﻣﻘﺪاري ﮐﻪ ﺑﺎزاي ﻫﺮ ﺑﺎر اﺟﺮا ﺑﻪ ﺷﻤﺎرﻧﺪه اﺿﺎﻓﻪ ﻣﯽ ﺷﻮد.‬ ‫03‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار‬ ‫ﻧﻤﺎﯾﺶ ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار در ﻓﻠﻮﭼﺎرت‬ ‫درﺳﺖ‬ ‫دﺳﺘﻮرات ﺣﻠﻘﻪ‬ ‫ﺷﺮط ﺣﻠﻘﻪ‬ ‫ﻧﺎدرﺳﺖ‬ ‫ﺧﺮوج از ﺣﻠﻘﻪ‬ ‫دﺳﺘﻮرات ﺣﻠﻘﻪ‬ ‫درﺳﺖ‬ ‫ﺷﺮط ﺣﻠﻘﻪ‬ ‫ﻧﺎدرﺳﺖ‬ ‫ﺧﺮوج از ﺣﻠﻘﻪ‬ ‫13‬ ‫1- 1‬ ‫ﺷﺮوع‬ ‫‪I‬‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫2- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 5=<‪ I‬دﺳﺘﻮرات 3 ﺗﺎ 7 را ﺗﮑﺮار ﮐﻦ.‬ ‫1‬ ‫3- ‪ X‬را ﺑﺨﻮان‬ ‫4- ]2/‪[X‬‬ ‫‪D‬‬ ‫5- 2*‪X-D‬‬ ‫ﺑﻠﯽ‬ ‫‪R‬‬ ‫‪ X‬را ﺑﺨﻮان‬ ‫‪I‬‬ ‫8- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫9- ﭘﺎﯾﺎن‬ ‫2/‪X‬‬ ‫1+‪I‬‬ ‫ﺧﯿﺮ‬ ‫5=<‪I‬‬ ‫6- اﮔﺮ 0=‪ R‬آﻧﮕﺎه ‪ X‬را ﭼﺎپ ﮐﻦ.‬ ‫7- 1+‪I‬‬ ‫‪I‬‬ ‫2*‪X-D‬‬ ‫‪I‬‬ ‫ﺧﯿﺮ‬ ‫0=‪R‬‬ ‫ﭘﺎﯾﺎن‬ ‫‪D‬‬ ‫‪R‬‬ ‫ﺑﻠﯽ‬ ‫‪ X‬را ﭼﺎپ ﮐﻦ‬ ‫23‬ ‫روﻧﺪ ﺑﺮرﺳﯽ‬ ‫ﺷﺮوع‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺗﻬﯿﮥ داده ﻫﺎي آزﻣﺎﯾﺸﯽ‬ ‫ورود داده ﻫﺎ ﺑﻪ اﻟﮕﻮرﯾﺘﻢ‬ ‫ﺗﻬﯿﮥ ﺧﺮوﺟﯽ‬ ‫ﺧﯿﺮ‬ ‫ﻋﯿﺐ ﯾﺎﺑﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫33‬ ‫ﺑﻠﯽ‬ ‫آﯾﺎ ﺧﺮوﺟﯽ ﺑﺎ ﻧﺘﺎﯾﺞ‬ ‫ﻣﻮرد ﻧﻈﺮ ﯾﮑﺴﺎن‬ ‫اﺳﺖ؟‬ ‫ﭘﺎﯾﺎن ﺗﺴﺖ اﻟﮕﻮرﯾﺘﻢ‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ 5 ﻋﺪد ﺻﺤﯿﺢ را از ورودي‬ ‫ﺧﻮاﻧﺪه، اﻋﺪاد زوج را ﭼﺎپ ﮐﻨﺪ.‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫1- 1‬ ‫1‬ ‫‪I‬‬ ‫1‬ ‫2‬ ‫2- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 5=<‪ I‬دﺳﺘﻮرات 3 ﺗﺎ 7 را ﺗﮑﺮار ﮐﻦ.‬ ‫3- ‪ X‬را ﺑﺨﻮان‬ ‫4- ]2/‪[X‬‬ ‫3‬ ‫2‬ ‫5‬ ‫1‬ ‫6‬ ‫‪R‬‬ ‫6- اﮔﺮ 0=‪ R‬آﻧﮕﺎه ‪ X‬را ﭼﺎپ ﮐﻦ.‬ ‫‪I‬‬ ‫5‬ ‫4‬ ‫‪D‬‬ ‫5- 2*‪X-D‬‬ ‫7- 1+‪I‬‬ ‫‪I‬‬ ‫‪X‬‬ ‫7‬ ‫2‬ ‫8‬ ‫2‬ ‫3‬ ‫8- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫9- ﭘﺎﯾﺎن‬ ‫21‬ ‫4‬ ‫5‬ ‫6‬ ‫0‬ ‫6‬ ‫7‬ ‫21‬ ‫3‬ ‫8‬ ‫2‬ ‫3‬ ‫43‬ ‫‪D‬‬ ‫‪R‬‬ ‫ﺧﺮوﺟﯽ‬ ‫21‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﺗﻌﺪاد ‪ N‬ﻋﺪد را از‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫ورودي ﺧﻮاﻧﺪه، ﻣﺠﻤﻮع آﻧﻬﺎ را ﭼﺎپ ﮐﻨﺪ.‬ ‫1- ‪ N‬را ﺑﺨﻮان‬ ‫2- 1‬ ‫‪I‬و0‬ ‫‪SUM‬‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ I<=N‬دﺳﺘﻮرات 4 ﺗﺎ 6 را ﺗﮑﺮار ﮐﻦ.‬ ‫4- ‪ X‬را ﺑﺨﻮان‬ ‫5- ‪X+SUM‬‬ ‫6- 1+‪I‬‬ ‫‪SUM‬‬ ‫‪I‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫8- ‪ SUM‬را ﭼﺎپ ﮐﻦ.‬ ‫9- ﭘﺎﯾﺎن‬ ‫53‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :N‬ﺗﻌﺪاد اﻋﺪاد‬ ‫‪ :I‬ﺷﻤﺎرﻧﺪه ﺣﻠﻘﻪ ﺗﮑﺮار‬ ‫‪ :SUM‬ﻣﺠﻤﻮع اﻋﺪاد‬ ‫‪ :X‬ﻋﺪد ورودي‬ ‫1- ‪ N‬را ﺑﺨﻮان‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫2- 1‬ ‫63‬ ‫‪I‬و0‬ ‫‪SUM‬‬ ‫ﺷﺮوع‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ I<=N‬دﺳﺘﻮرات 4 ﺗﺎ 6 را‬ ‫ﺗﮑﺮار ﮐﻦ.‬ ‫‪ N‬را ﺑﺨﻮان‬ ‫4- ‪ X‬را ﺑﺨﻮان‬ ‫5- ‪X+SUM‬‬ ‫6- 1+‪I‬‬ ‫1‬ ‫‪SUM‬‬ ‫ﺑﻠﯽ‬ ‫‪I‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫8- ‪ SUM‬را ﭼﺎپ ﮐﻦ.‬ ‫9- ﭘﺎﯾﺎن‬ ‫‪ I‬و 0‬ ‫‪SUM‬‬ ‫ﺧﯿﺮ‬ ‫‪I<=N‬‬ ‫‪ X‬را ﺑﺨﻮان‬ ‫‪X+SUM‬‬ ‫1+‪I‬‬ ‫‪SUM‬‬ ‫‪I‬‬ ‫‪ SUM‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻋﺪد ﺻﺤﯿﺢ و ﻣﺜﺒﺖ‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫‪ N‬را از ورودي ﺧﻮاﻧﺪه، ﻓﺎﮐﺘﻮرﯾﻞ آن را‬ ‫ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻧﻤﺎﯾﺪ.‬ ‫1- ‪ N‬را ﺑﺨﻮان‬ ‫2- 1‬ ‫‪J‬و1‬ ‫‪FACT‬‬ ‫‪ :N‬ﻋﺪد ﻣﻮرد ﻧﻈﺮ‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ J<=N‬دﺳﺘﻮرات 4 ﺗﺎ 5 را ﺗﮑﺮار ﮐﻦ.‬ ‫‪ :J‬ﺷﻤﺎرﻧﺪه‬ ‫‪FACT‬‬ ‫‪ :FACT‬ﻓﺎﮐﺘﻮرﯾﻞ‬ ‫4- ‪FACT*J‬‬ ‫5- 1+‪J‬‬ ‫‪J‬‬ ‫6- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫7- ‪ FACT‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫73‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫1- ‪ N‬را ﺑﺨﻮان‬ ‫2- 1‬ ‫‪J‬و1‬ ‫‪FACT‬‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ J<=N‬دﺳﺘﻮرات 4 ﺗﺎ 5 را ﺗﮑﺮار ﮐﻦ.‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫4- ‪FACT*J‬‬ ‫5- 1+‪J‬‬ ‫ﺷﺮوع‬ ‫‪FACT‬‬ ‫‪J‬‬ ‫‪ N‬را ﺑﺨﻮان‬ ‫6- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫1‬ ‫7- ‪ FACT‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫ﺑﻠﯽ‬ ‫ﺧﯿﺮ‬ ‫‪J<=N‬‬ ‫‪FACT*J‬‬ ‫1+‪J‬‬ ‫83‬ ‫‪ J‬و 1‬ ‫‪FACT‬‬ ‫‪FACT‬‬ ‫‪J‬‬ ‫‪ FACT‬را ﭼﺎپ ﮐﻦ‬ ‫ﭘﺎﯾﺎن‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﻋﺪد ﺻﺤﯿﺢ و ﻣﺜﺒﺖ‬ ‫‪ N‬را از ورودي ﺧﻮاﻧﺪه، ﻓﺎﮐﺘﻮرﯾﻞ آن را‬ ‫ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻧﻤﺎﯾﺪ.‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫‪N‬‬ ‫1‬ ‫3‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫2‬ ‫2- 1‬ ‫4‬ ‫‪FACT‬‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ J<=N‬دﺳﺘﻮرات 4 ﺗﺎ 5 را ﺗﮑﺮار ﮐﻦ.‬ ‫4- ‪FACT*J‬‬ ‫5- 1+‪J‬‬ ‫‪FACT‬‬ ‫‪J‬‬ ‫6- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫7- ‪ FACT‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫5‬ ‫1‬ ‫2‬ ‫6‬ ‫3‬ ‫4‬ ‫5‬ ‫2‬ ‫3‬ ‫6‬ ‫3‬ ‫4‬ ‫5‬ ‫6‬ ‫4‬ ‫6‬ ‫3‬ ‫7‬ ‫8‬ ‫93‬ ‫1‬ ‫1‬ ‫3‬ ‫1- ‪ N‬را ﺑﺨﻮان‬ ‫‪J‬و1‬ ‫‪J‬‬ ‫‪FACT‬‬ ‫ﺧﺮوﺟﯽ‬ ‫6‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ 02 ﺟﻤﻠﮥ اول دﻧﺒﺎﻟﮥ ﻓﯿﺒﻮﻧﺎﭼﯽ را ﺗﻮﻟﯿﺪ و ﭼﺎپ ﻣﯽ ﮐﻨﺪ:‬ ‫)1+‪F(n+2)=F(n)+F(n‬‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫1- 1‬ ‫1‪ F‬و 1‬ ‫2‪F‬‬ ‫2- 1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ.‬ ‫3- 3‬ ‫‪K‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 02=<‪ K‬اﺳﺖ، دﺳﺘﻮرات 5 ﺗﺎ 9 را اﺟﺮا ﮐﻦ.‬ ‫5- 2‪F1+F‬‬ ‫3‪F‬‬ ‫6- 3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫7- 2‪F‬‬ ‫1‪F‬‬ ‫8- 3‪F‬‬ ‫2‪F‬‬ ‫9- 1+‪K‬‬ ‫‪K‬‬ ‫01- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫11- ﭘﺎﯾﺎن‬ ‫04‬ ‫… ,31 ,8 ,5 ,3 ,2 ,1 ,1‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫1‪ F‬و 2‪ F‬و 3‪ :F‬ﺟﻤﻼت دﻧﺒﺎﻟﻪ‬ ‫‪ :K‬ﺷﻤﺎرﻧﺪه‬ ‫1- 1‬ ‫1‪ F‬و 1‬ ‫2‪F‬‬ ‫2- 1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ.‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫3- 3‬ ‫ﺷﺮوع‬ ‫‪K‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 02=<‪ K‬اﺳﺖ، دﺳﺘﻮرات 5 ﺗﺎ 9 را اﺟﺮا‬ ‫ﮐﻦ.‬ ‫5- 2‪F1+F‬‬ ‫1‪ F‬و 1‬ ‫1‬ ‫1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫3‪F‬‬ ‫6- 3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫7- 2‪F‬‬ ‫3‬ ‫1‪F‬‬ ‫8- 3‪F‬‬ ‫2‪F‬‬ ‫9- 1+‪K‬‬ ‫‪K‬‬ ‫ﺧﯿﺮ‬ ‫ﺑﻠﯽ‬ ‫02=<‪K‬‬ ‫‪K‬‬ ‫01- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫2‪F1+F‬‬ ‫11- ﭘﺎﯾﺎن‬ ‫3‪F‬‬ ‫3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫1+‪K‬‬ ‫‪K‬‬ ‫2‪F‬‬ ‫1‪F‬‬ ‫3‪F‬‬ ‫14‬ ‫2‪F‬‬ ‫2‪F‬‬ ‫ﭘﺎﯾﺎن‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار (ﺷﺮط ﺣﻠﻘﻪ در ﭘﺎﯾﺎن(‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ دﻧﺒﺎﻟﮥ ﻓﯿﺒﻮﻧﺎﭼﯽ را ﺗﺎ زﻣﺎن درﺧﻮاﺳﺖ ﮐﺎرﺑﺮ ﺗﻮﻟﯿﺪ و ﭼﺎپ ﻧﻤﺎﯾﺪ:‬ ‫24‬ ‫)1+‪F(n+2)=F(n)+F(n‬‬ ‫1- 1‬ ‫1‪ F‬و 1‬ ‫… ,31 ,8 ,5 ,3 ,2 ,1 ,1‬ ‫2‪F‬‬ ‫2- 1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ.‬ ‫3-2‪F1+F‬‬ ‫3‪F‬‬ ‫4- 3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫5- 2‪F‬‬ ‫1‪F‬‬ ‫6- 3‪F‬‬ ‫2‪F‬‬ ‫7- ﭼﺎپ ﮐﻦ »آﯾﺎ اداﻣﻪ ﯾﺎﺑﺪ؟«‬ ‫8- ‪ ANS‬را ﺑﺨﻮان‬ ‫9- اﮔﺮ ‪ ANS=YES‬اﺳﺖ، ﺑﺮو ﺑﻪ 3.‬ ‫01- ﭘﺎﯾﺎن‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫1‪ F‬و 2‪ F‬و 3‪ :F‬ﺟﻤﻼت دﻧﺒﺎﻟﻪ‬ ‫‪ :ANS‬درﺧﻮاﺳﺖ اداﻣﻪ‬ ‫ﺷﺮوع‬ ‫1‪ F‬و 1‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار )ﺷﺮط ﺣﻠﻘﻪ در ﭘﺎﯾﺎن(‬ ‫1‬ ‫1- 1‬ ‫1‪ F‬و 1‬ ‫2‪F‬‬ ‫1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫2- 1‪ F‬و 2‪ F‬را ﭼﺎپ ﮐﻦ.‬ ‫3-2‪F1+F‬‬ ‫3‪F‬‬ ‫2‪F1+F‬‬ ‫4- 3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫5- 2‪F‬‬ ‫2‪F‬‬ ‫2‪F‬‬ ‫8- ‪ ANS‬را ﺑﺨﻮان‬ ‫9- اﮔﺮ ‪ ANS=YES‬اﺳﺖ، ﺑﺮو ﺑﻪ 3.‬ ‫1‪F‬‬ ‫3‪F‬‬ ‫7- ﭼﺎپ ﮐﻦ »آﯾﺎ اداﻣﻪ ﯾﺎﺑﺪ؟«‬ ‫2‪F‬‬ ‫ﭼﺎپ ﮐﻦ »آﯾﺎ اداﻣﻪ ﯾﺎﺑﺪ؟«‬ ‫01- ﭘﺎﯾﺎن‬ ‫‪ ANS‬را ﺑﺨﻮان‬ ‫ﭘﺎﯾﺎن‬ ‫34‬ ‫3‪F‬‬ ‫3‪ F‬را ﭼﺎپ ﮐﻦ‬ ‫1‪F‬‬ ‫6- 3‪F‬‬ ‫2‪F‬‬ ‫ﺑﻠﯽ‬ ‫ﺧﯿﺮ‬ ‫‪ANS=YES‬‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ دو ﻋﺪد ‪ A‬و ‪ B‬را درﯾﺎﻓﺖ ﻧﻤﻮده، اﻋﺪاد زوج ﺑﯿﻦ آﻧﻬﺎ را ﭼﺎپ‬ ‫ﮐﻨﺪ.‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫1- ‪ A‬و ‪ B‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ ‪ A>B‬آﻧﮕﺎه‬ ‫‪B‬‬ ‫‪TEMP‬‬ ‫‪B‬‬ ‫‪A‬‬ ‫‪TEMP‬‬ ‫‪ A‬و ‪ :B‬اﻋﺪاد ورودي‬ ‫‪A‬‬ ‫3- اﮔﺮ ‪ A/2*2A‬آﻧﮕﺎه 1+‪A‬‬ ‫وﮔﺮﻧﻪ 2+‪A‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ A<B‬دﺳﺘﻮرات 5 ﺗﺎ 6 را اﺟﺮا ﮐﻦ.‬ ‫5- ‪ A‬را ﭼﺎپ ﮐﻦ.‬ ‫6- 2+‪A‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫8- ﭘﺎﯾﺎن‬ ‫44‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪A‬‬ ‫‪ :TEMP‬ﻣﺘﻐﯿﺮ ﮐﻤﮑﯽ‬ ‫ﺷﺮوع‬ ‫‪G‬‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫ﺧﯿﺮ‬ ‫‪ A‬و ‪ B‬را ﺑﺨﻮان‬ ‫‪A<B‬‬ ‫ﺑﻠﯽ‬ ‫ﺑﻠﯽ‬ ‫ﭘﺎﯾﺎن‬ ‫‪ A‬را ﭼﺎپ ﮐﻦ‬ ‫‪B‬‬ ‫2+‪A‬‬ ‫‪A>B‬‬ ‫‪TEMP‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫ﺧﯿﺮ‬ ‫‪TEMP‬‬ ‫‪B‬‬ ‫‪A‬‬ ‫ﺑﻠﯽ‬ ‫1+‪A‬‬ ‫ﺧﯿﺮ‬ ‫‪A/2*2A‬‬ ‫2+‪A‬‬ ‫‪A‬‬ ‫‪G‬‬ ‫54‬ ‫‪A‬‬ ‫1- ‪ A‬و ‪ B‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ ‪ A>B‬آﻧﮕﺎه‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫‪B‬‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫1‬ ‫‪TEMP‬‬ ‫3‬ ‫‪A‬‬ ‫وﮔﺮﻧﻪ 2+‪A‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ A<B‬دﺳﺘﻮرات 5 ﺗﺎ 6 را اﺟﺮا ﮐﻦ.‬ ‫5- ‪ A‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫‪A‬‬ ‫5‬ ‫6‬ ‫8-‬ ‫6-‬ ‫7‬ ‫4‬ ‫5‬ ‫6‬ ‫6-‬ ‫4-‬ ‫7‬ ‫4‬ ‫5‬ ‫6‬ ‫7‬ ‫4‬ ‫8‬ ‫64‬ ‫8-‬ ‫4‬ ‫3- اﮔﺮ ‪ A/2*2A‬آﻧﮕﺎه 1+‪A‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫01-‬ ‫3-‬ ‫2‬ ‫‪B‬‬ ‫‪A‬‬ ‫‪TEMP‬‬ ‫6- 2+‪A‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫ﺧﺮوﺟﯽ‬ ‫4-‬ ‫2-‬ ‫1- ‪ A‬و ‪ B‬را ﺑﺨﻮان.‬ ‫2- اﮔﺮ ‪ A>B‬آﻧﮕﺎه‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫‪B‬‬ ‫74‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫1‬ ‫‪A‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ A<B‬دﺳﺘﻮرات 5 ﺗﺎ 6 را اﺟﺮا ﮐﻦ.‬ ‫5- ‪ A‬را ﭼﺎپ ﮐﻦ.‬ ‫6- 2+‪A‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫8- ﭘﺎﯾﺎن‬ ‫‪A‬‬ ‫0‬ ‫4‬ ‫3- اﮔﺮ ‪ A/2*2A‬آﻧﮕﺎه 1+‪A‬‬ ‫وﮔﺮﻧﻪ 2+‪A‬‬ ‫2-‬ ‫3‬ ‫3‬ ‫‪B‬‬ ‫‪A‬‬ ‫‪TEMP‬‬ ‫3‬ ‫2-‬ ‫2‬ ‫‪TEMP‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫ﺧﺮوﺟﯽ‬ ‫5‬ ‫6‬ ‫0‬ ‫2‬ ‫7‬ ‫4 ‫5‬ ‫6‬ ‫7‬ ‫4‬ ‫8‬ ‫2‬ ‫4‬ ‫1- ‪ A‬و ‪ B‬را ﺑﺨﻮان.‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫1‬ ‫2- اﮔﺮ ‪ A>B‬آﻧﮕﺎه‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫‪B‬‬ ‫4‬ ‫‪A‬‬ ‫8‬ ‫3- اﮔﺮ ‪ A/2*2A‬آﻧﮕﺎه 1+‪A‬‬ ‫وﮔﺮﻧﻪ 2+‪A‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫4- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ A<B‬دﺳﺘﻮرات 5 ﺗﺎ 6 را اﺟﺮا ﮐﻦ.‬ ‫5- ‪ A‬را ﭼﺎپ ﮐﻦ.‬ ‫8- ﭘﺎﯾﺎن‬ ‫84‬ ‫3‬ ‫‪B‬‬ ‫‪A‬‬ ‫‪TEMP‬‬ ‫7- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫3‬ ‫4‬ ‫2‬ ‫‪TEMP‬‬ ‫6- 2+‪A‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫‪A‬‬ ‫4‬ ‫ﺧﺮوﺟﯽ‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ ﯾﮏ ﻋﺪد در ﻣﺒﻨﺎي 01 ﺧﻮاﻧﺪه، آن را ﺑﻪ ﻣﺒﻨﺎي 2 ﺑﺒﺮد.‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫1- 0‬ ‫‪ S‬و0‬ ‫2- ‪ N‬را ﺑﺨﻮان.‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 0‪ N‬اﺳﺖ، دﺳﺘﻮرات 4 ﺗﺎ 8 را ﺗﮑﺮار ﮐﻦ.‬ ‫4- 2/‪N‬‬ ‫5- 2*‪N-M‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :S‬ﻋﺪد در ﻣﺒﻨﺎي 2‬ ‫‪M‬‬ ‫‪ :I‬ﺷﻤﺎرﻧﺪه‬ ‫‪R‬‬ ‫6- اﮔﺮ 0 ‪ I ‬اﺳﺖ آﻧﮕﺎه 01*‪P‬‬ ‫7- ‪S+R*P‬‬ ‫‪S‬‬ ‫8- 1+‪I‬‬ ‫9- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫‪I‬و‪M‬‬ ‫01- ‪ S‬را ﭼﺎپ ﮐﻦ.‬ ‫11- ﭘﺎﯾﺎن‬ ‫94‬ ‫‪I‬و1‬ ‫‪P‬‬ ‫‪N‬‬ ‫‪P‬‬ ‫‪ :P‬ﺗﻮان 01‬ ‫‪ :N‬ﻋﺪد در ﻣﺒﻨﺎي 01‬ ‫‪ :M‬ﺧﺎرج ﻗﺴﻤﺖ ﺗﻘﺴﯿﻢ ﺑﺮ 2‬ ‫‪ :R‬ﺑﺎﻗﯿﻤﺎﻧﺪه‬ ‫ﺷﺮوع‬ ‫ﺑﺮرﺳﯽ ﭼﻨﺪ اﻟﮕﻮرﯾﺘﻢ ﺗﮑﺮار‬ ‫0‬ ‫‪S‬و 0‬ ‫‪I‬و 1‬ ‫‪ N‬را ﺑﺨﻮان‬ ‫ﺧﯿﺮ‬ ‫0‪N‬‬ ‫‪M‬‬ ‫1+‪I‬‬ ‫ﺑﻠﯽ‬ ‫‪N‬‬ ‫2/‪N‬‬ ‫‪I‬‬ ‫2*‪N-M‬‬ ‫‪S+R*P‬‬ ‫‪S‬‬ ‫‪R‬‬ ‫ﺑﻠﯽ‬ ‫01*‪P‬‬ ‫‪P‬‬ ‫‪ S‬را ﭼﺎپ ﮐﻦ‬ ‫‪M‬‬ ‫0‪I‬‬ ‫05‬ ‫‪P‬‬ ‫ﺧﯿﺮ‬ ‫ﭘﺎﯾﺎن‬ ‫‪ S‬و0‬ ‫• 1- 0‬ ‫‪I‬و1‬ ‫‪P‬‬ ‫1‬ ‫2- ‪ N‬را ﺑﺨﻮان.‬ ‫ﺑﺮرﺳﯽ درﺳﺘﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 0‪ N‬اﺳﺖ، دﺳﺘﻮرات 4 ﺗﺎ 8 را ﺗﮑﺮار ﮐﻦ.‬ ‫4- 2/‪N‬‬ ‫5- 2*‪N-M‬‬ ‫‪M‬‬ ‫0‬ ‫0‬ ‫2‬ ‫3‬ ‫3‬ ‫‪R‬‬ ‫7- ‪S+R*P‬‬ ‫‪S‬‬ ‫8- 1+‪I‬‬ ‫9- ﭘﺎﯾﺎن ﺣﻠﻘﻪ‬ ‫‪I‬و‪M‬‬ ‫01- ‪ S‬را ﭼﺎپ ﮐﻦ.‬ ‫1‬ ‫5‬ ‫‪P‬‬ ‫1‬ ‫6‬ ‫7‬ ‫1‬ ‫8‬ ‫‪N‬‬ ‫1‬ ‫1‬ ‫9‬ ‫3‬ ‫4‬ ‫0‬ ‫5‬ ‫1‬ ‫6‬ ‫7‬ ‫8‬ ‫9‬ ‫3‬ ‫01‬ ‫15‬ ‫1‬ ‫4‬ ‫6- اﮔﺮ 0 ‪ I ‬اﺳﺖ آﻧﮕﺎه 01*‪P‬‬ ‫11- ﭘﺎﯾﺎن‬ ‫ﺷﻤﺎره دﺳﺘﻮر‬ ‫‪S‬‬ ‫‪I‬‬ ‫‪N‬‬ ‫‪M‬‬ ‫‪R‬‬ ‫‪P‬‬ ‫01‬ ‫11‬ ‫2‬ ‫0‬ ‫• ﺑﺎزاي ﻫﺮ ﺣﻠﻘﮥ ﺗﮑﺮار ﺷﻤﺎرﻧﺪة ﺟﺪاﮔﺎﻧﻪ اي اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد.‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار ﺗﻮ در ﺗﻮ‬ ‫• در اﺟﺮاي ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار ﺗﻮ در ﺗﻮ ﺑﺎزاي ﻫﺮ ﺑﺎر اﺟﺮاي ﺣﻠﻘﻪ ﺑﯿﺮوﻧﯽ، ﺣﻠﻘﻪ ﺗﮑﺮار‬ ‫دروﻧﯽ ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ اﺟﺮا ﻣﯽ ﺷﻮد.‬ ‫• ﻣﺜﺎل:‬ ‫5- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 01<‪ M‬اﺳﺖ، دﺳﺘﻮرات 6 ﺗﺎ 21 را اﺟﺮا ﮐﻦ.‬ ‫6- ...‬ ‫7- 1‬ ‫‪N‬‬ ‫8- ﺗﺎ زﻣﺎﻧﯿﮑﻪ 5<‪ N‬اﺳﺖ، دﺳﺘﻮرات 9 ﺗﺎ 01 را اﺟﺮا ﮐﻦ.‬ ‫9- ...‬ ‫01- 1+‪N‬‬ ‫‪N‬‬ ‫11- ﭘﺎﯾﺎن ﺣﻠﻘﻪ 5<‪N‬‬ ‫21- 1+‪M‬‬ ‫‪M‬‬ ‫31- ﭘﺎﯾﺎن ﺣﻠﻘﻪ 01<‪M‬‬ ‫25‬ ‫• ﻣﺜﺎل: اﻟﮕﻮرﯾﺘﻤﯽ ﮐﻪ اﻋﺪاد اول ﮐﻮﭼﮑﺘﺮ از ﯾﮏ ﻋﺪد ورودي )‪ (N‬را ﺑﺮ اﺳﺎس ﺗﻌﺪاد‬ ‫ﻣﻘﺴﻮم ﻋﻠﯿﻪ ﻫﺎ ﺗﺸﺨﯿﺺ ﻣﯽ دﻫﺪ و ﭼﺎپ ﻣﯽ ﮐﻨﺪ.‬ ‫1- 1‬ ‫‪I‬‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار ﺗﻮ در ﺗﻮ‬ ‫2- ‪ N‬را ﺑﺨﻮان.‬ ‫3- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ I<=N‬اﺳﺖ، دﺳﺘﻮرات 4 ﺗﺎ 11 را ﺗﮑﺮار ﮐﻦ.‬ ‫4- 1‬ ‫‪ J‬و0‬ ‫‪K‬‬ ‫5- ﺗﺎ زﻣﺎﻧﯿﮑﻪ ‪ J<=I‬اﺳﺖ، دﺳﺘﻮرات 6 ﺗﺎ 8 را ﺗﮑﺮار ﮐﻦ.‬ ‫6- ‪I-(I/J)*J‬‬ ‫‪R‬‬ ‫7- اﮔﺮ 0=‪ R‬آﻧﮕﺎه 1+‪K‬‬ ‫8- 1+‪J‬‬ ‫‪J‬‬ ‫9- ﭘﺎﯾﺎن ﺣﻠﻘﻪ ‪J<=I‬‬ ‫01- اﮔﺮ 2=‪ K‬آﻧﮕﺎه ﭼﺎپ ﮐﻦ ‪ I‬اول اﺳﺖ.‬ ‫11- 1+‪I‬‬ ‫‪I‬‬ ‫21- ﭘﺎﯾﺎن ﺣﻠﻘﮥ ‪I<=N‬‬ ‫31- ﭘﺎﯾﺎن‬ ‫35‬ ‫‪K‬‬ ‫ﻣﺘﻐﯿﺮﻫﺎ‬ ‫‪ :I‬ﺷﻤﺎرﻧﺪه اﻋﺪاد‬ ‫‪ :N‬ﻋﺪد ﻣﻮرد ﻧﻈﺮ‬ ‫‪ :K‬ﺗﻌﺪاد ﻣﻘﺴﻮم ﻋﻠﯿﻪ ﻫﺎي ﻋﺪد‬ ‫‪ :J‬ﺷﻤﺎرﻧﺪة ﻋﻤﻞ ﺗﻘﺴﯿﻢ‬ ‫‪ :R‬ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ‬ ‫ﺷﺮوع‬ ‫1‬ ‫‪I‬‬ ‫‪ N‬را ﺑﺨﻮان‬ ‫ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار ﺗﻮ در ﺗﻮ‬ ‫‪A‬‬ ‫ﺧﯿﺮ‬ ‫‪I<=N‬‬ ‫ﺑﻠﯽ‬ ‫1‬ ‫‪B‬‬ ‫ﺑﻠﯽ‬ ‫‪J<=I‬‬ ‫‪I-(I/J)*J‬‬ ‫ﺑﻠﯽ‬ ‫1+‪K‬‬ ‫‪R‬‬ ‫ﺧﯿﺮ‬ ‫ﺑﻠﯽ‬ ‫ﺧﯿﺮ‬ ‫2=‪K‬‬ ‫‪ I‬را ﭼﺎپ ﮐﻦ‬ ‫‪K‬‬ ‫‪B‬‬ ‫‪K‬‬ ‫ﺧﯿﺮ‬ ‫0=‪R‬‬ ‫1+‪J‬‬ ‫45‬ ‫‪J‬و0‬ ‫ﭘﺎﯾﺎن‬ ‫‪J‬‬ ‫‪I‬‬ ‫1+‪I‬‬ ‫‪A‬‬ ‫دﺳﺘﻪ ﺑﻨﺪي زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫ﺳﻄﺢ زﺑﺎن:‬ ‫– ﺳﻄﺢ ﭘﺎﯾﯿﻦ: )‪(Macro-Assembler, Assembler‬‬ ‫• دﺳﺘﺮﺳﯽ ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﺣﺎﻓﻈﻪ )زﺑﺎن ﻣﺎﺷﯿﻦ(‬ ‫• ﮐﺎر ﮐﺮدن ﺑﺎ ﻣﻔﺎﻫﯿﻢ ﺑﯿﺖ، ﺑﺎﯾﺖ و آدرس )ﺑﺎ اﺳﺘﻔﺎده از ﻣﻔﻬﻮم ﺑﺎﯾﻨﺮي(‬ ‫– 0010 0000 0000 0100‬ ‫– 1010 0000 0000 0001‬ ‫– ﺳﻄﺢ ﻣﯿﺎﻧﯽ: )++‪(Java, Forth, C, C‬‬ ‫– ﺳﻄﺢ ﺑﺎﻻ: )‪(Pascal, Ada, Cobol, Basic‬‬ ‫• ﻗﺎﺑﻠﯿﺖ ﺧﻮاﻧﺎﯾﯽ ﺑﺎﻻ )دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎ ﺑﻪ زﺑﺎن ﻣﺤﺎوره اي ﻧﺰدﯾﮏ اﺳﺖ(‬ ‫55‬ ‫دﺳﺘﻪ ﺑﻨﺪي زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ - 2‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫• ﺳﺎﺧﺘﺎر زﺑﺎن:‬ ‫– زﺑﺎن ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫• ‪Pascal, Ada, C, Madula_2, Java‬‬ ‫• ﻗﺎﺑﻠﯿﺖ ﺧﻮاﻧﺎﯾﯽ و درك ﺑﺎﻻ‬ ‫• ﺗﻮاﻧﺎﯾﯽ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻫﺎي ﺗﮑﺮار‬ ‫• زﺑﺎﻧﻬﺎي ﺷﯽء ﮔﺮا )‪(Object Oriented‬‬ ‫– ++‪C‬‬ ‫– زﺑﺎن ﻏﯿﺮ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫• )‪(Fortran, Basic, Cobol‬‬ ‫65‬ ‫دﻻﯾﻞ ﭘﯿﺪاﯾﺶ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫• ﺗﺄﺧﯿﺮ در زﻣﺎن ﺑﻨﺪي ﺗﻮﻟﯿﺪ ﻧﺮم اﻓﺰار‬ ‫• ﻫﺰﯾﻨﻪ ﻫﺎي ﺑﺎﻻي ﺗﻮﻟﯿﺪ‬ ‫• ﻋﺪم وﺟﻮد ﻗﺎﺑﻠﯿﺖ اﻃﻤﯿﻨﺎن ﺑﺎﻻ‬ ‫• وﯾﮋﮔﯽ ﻫﺎي ﺑﺮﻧﺎﻣﮥ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫– روش ﻣﻨﻈﻢ ﺑﺮاي ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ‬ ‫• ﺗﺼﻮر ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از ﻓﻌﺎﻟﯿﺖ ﻫﺎ ﺑﺮ روي داده ﻫﺎ‬ ‫• ﻫﺮ ﻣﺴﺄﻟﻪ ﺑﻪ ﻣﺠﻤﻮﻋﻪ اي از ﻣﺴﺎﺋﻞ ﮐﻮﭼﮑﺘﺮ ﺗﺠﺰﯾﻪ ﻣﯽ ﺷﻮد.‬ ‫• ﺗﺠﺰﯾﻪ ﺗﺎ رﺳﯿﺪن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺳﺎده ﻗﺎﺑﻞ درك اداﻣﻪ ﻣﯽ ﯾﺎﺑﺪ.‬ ‫– ﺧﻮاﻧﺎﯾﯽ ﺑﺎﻻي ﺑﺮﻧﺎﻣﻪ‬ ‫– ﺗﺴﺖ و اﺻﻼح ﺳﺎده‬ ‫75‬ ‫دﻻﯾﻞ ﭘﯿﺪاﯾﺶ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽء ﮔﺮا‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫• اﻣﮑﺎن اﺳﺘﻔﺎده از ﻗﻄﻌﺎت ﻧﺮم اﻓﺰاري در ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻣﺨﺘﻠﻒ‬ ‫85‬ ‫– اﻓﺰاﯾﺶ ﺳﺮﻋﺖ ﺗﻮﻟﯿﺪ ﻧﺮم اﻓﺰار‬ ‫– اﻓﺰاﯾﺶ ﻗﺎﺑﻠﯿﺖ ﺧﻮاﻧﺎﯾﯽ ﺑﺮﻧﺎﻣﻪ‬ ‫– ﺳﺎدﮔﯽ ﺗﺴﺖ و اﺻﻼح ﺑﺮﻧﺎﻣﻪ ﻫﺎ‬ ‫ﻫﺪف ﻣﺪﻟﺴﺎزي اﺷﯿﺎي دﻧﯿﺎي واﻗﻌﯽ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽء ﮔﺮا‬ ‫• اﺷﯿﺎء‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫– ﺟﺎﻧﺪار‬ ‫95‬ ‫)ﻣﻔﻬﻮم زﻧﺪﮔﯽ )ﺣﺮﮐﺖ، ﺣﻔﻆ ﺑﻘﺎء، ﻧﯿﺎز ﺑﻪ اﻧﺮژي و ...((‬ ‫– ﺑﯽ ﺟﺎن‬ ‫• وﺟﻮه ﺗﺸﺎﺑﻪ اﺷﯿﺎء:‬ ‫– داراي ﺻﻔﺎت ﺧﺎﺻﯽ ﻫﺴﺘﻨﺪ ﮐﻪ آﻧﻬﺎ را ﻣﺘﻤﺎﯾﺰ ﻣﯽ ﺳﺎزد.‬ ‫– رﻓﺘﺎرﻫﺎﯾﯽ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺧﺎﺻﯿﺖ ذاﺗﯽ ﺧﻮد ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ.‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽء ﮔﺮا - 2‬ ‫06‬ ‫• ﺗﻤﺎم اﺷﯿﺎء از ﻃﺮﯾﻖ ﻣﺸﺎﻫﺪه و ﺑﺮرﺳﯽ ﺻﻔﺎت و رﻓﺘﺎرﻫﺎي آﻧﻬﺎ ﻗﺎﺑﻞ‬ ‫ﺷﻨﺎﺳﺎﯾﯽ ﻫﺴﺘﻨﺪ.‬ ‫• ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻫﺪف ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽءﮔﺮا ﮐﻪ ﻣﺪﻟﺴﺎزي دﻧﯿﺎي واﻗﻌﯽ اﺳﺖ‬ ‫ﻧﯿﺎز ﺑﻪ اﯾﺠﺎد ﮐﻼﺳﯽ از اﺷﯿﺎء ﻣﻮرد ﻧﻈﺮ دارﯾﻢ و ﺳﭙﺲ ﯾﮏ ﺷﯽء‬ ‫ﻣﺨﺼﻮص از ﮐﻼس را در ﻧﻈﺮ ﻣﯽ ﮔﯿﺮﯾﻢ ﮐﻪ ﺑﻪ آن ﻧﻤﻮﻧﻪ ﺳﺎزي ﮔﻮﯾﻨﺪ.‬ ‫• دﻗﺖ ﻧﻤﺎﯾﯿﺪ اﺷﯿﺎﺋﯽ ﮐﻪ در ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﻧﺪ ﺑﻪ ﻋﻨﻮان ﺑﺨﺸﯽ از‬ ‫ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ اﻧﺪ ﭘﺲ‬ ‫اﺑﺘﺪا ﺑﺎﯾﺪ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ ﺑﻪ ﺧﻮﺑﯽ آﺷﻨﺎ ﺷﺪ‬ ‫ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺑﺘﻮاﻧﺪ اﺷﯿﺎي ﺗﻮﻟﯿﺪي ﻣﻮرد ﻧﯿﺎز را‬ ‫ﺑﻪ ﺧﻮﺑﯽ ﺑﮑﺎر ﺑﺒﺮد.‬ ‫زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽءﮔﺮا - 3‬ ‫اﺷﯿﺎء ﺳﺎﺧﺘﻪ ﺷﺪه در ﺑﺮﻧﺎﻣﻪ‬ ‫ﺑﻪ ﻋﻨﻮان ﺑﺨﺸﯽ از ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ اﻧﺪ‬ ‫ﺑﺎﯾﺪ ﺑﺎ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫ﺑﻪ ﺧﻮﺑﯽ آﺷﻨﺎ ﺷﺪ‬ ‫16‬ ‫روش اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫ﻣﻮارد ﻣﻬﻢ در ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫26‬ ‫• ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻧﻮﻋﯽ ﺣﻞ ﻣﺴﺄﻟﻪ اﺳﺖ‬ ‫– ﺗﻌﯿﯿﻦ ﺧﻮاﺳﺘﻪ ﻫﺎي ﻣﺴﺄﻟﻪ‬ ‫– ﺗﺤﻠﯿﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﻃﺮاﺣﯽ اﻟﮕﻮرﯾﺘﻢ ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﭘﯿﺎده ﺳﺎزي اﻟﮕﻮرﯾﺘﻢ‬ ‫– ﺗﺴﺖ و ﮐﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ‬ ‫– ﻧﮕﻬﺪاري و ﻧﻮﺳﺎزي ﺑﺮﻧﺎﻣﻪ‬ ‫روش اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫اﺟﺰاي ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫36‬ ‫• ﺗﻌﯿﯿﻦ ﺧﻮاﺳﺘﻪ ﻫﺎي ﻣﺴﺄﻟﻪ‬ ‫– ﺷﻨﺎﺧﺖ ﻣﺴﺄﻟﻪ ﺑﻪ وﺿﻮح و ﺑﺪون اﺑﻬﺎم‬ ‫– درك ﻣﻮارد ﻻزم ﺑﺮاي ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﻧﺎدﯾﺪه ﮔﺮﻓﺘﻦ ﺟﻨﺒﻪ ﻫﺎي ﺑﯽ اﻫﻤﯿﺖ و ﭘﺮداﺧﺘﻦ ﺑﻪ ﻣﺴﺎﺋﻞ اﺻﻠﯽ‬ ‫– در ﺻﻮرت ﻟﺰوم ﻣﺬاﮐﺮه ﺑﺎ ﻃﺮاح ﻣﺴﺄﻟﻪ‬ ‫روش اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫اﺟﺰاي ﺣﻞ ﻣﺴﺄﻟﻪ - 2‬ ‫46‬ ‫• ﺗﺤﻠﯿﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﺗﻌﯿﯿﻦ ورودي ﻫﺎ و ﺧﺮوﺟﯽ ﻫﺎ‬ ‫• ورودي: داده ﻫﺎﯾﯽ ﮐﻪ ﻣﺴﺄﻟﻪ ﺑﺮ روي آﻧﻬﺎ ﮐﺎر ﻣﯽ ﮐﻨﺪ.‬ ‫• ﺧﺮوﺟﯽ: ﻧﺘﺎﯾﺞ ﻣﻮرد اﻧﺘﻈﺎر‬ ‫– ﺗﻌﯿﯿﻦ ﻧﯿﺎزﻫﺎ و ﻣﺤﺪودﯾﺖ ﻫﺎي ﻣﺴﺄﻟﻪ‬ ‫– ﺗﻌﯿﯿﻦ ﻓﺮﻣﺖ اﻃﻼﻋﺎت ﺧﺮوﺟﯽ و ﺗﻌﯿﯿﻦ ارﺗﺒﺎط ورودي و ﺧﺮوﺟﯽ‬ ‫روش اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫اﺟﺰاي ﺣﻞ ﻣﺴﺄﻟﻪ - 3‬ ‫56‬ ‫• ﻃﺮاﺣﯽ اﻟﮕﻮرﯾﺘﻢ‬ ‫– ﻣﺸﮑﻞ ﺗﺮﯾﻦ ﺑﺨﺶ ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﻧﻮﺷﺘﻦ ﺑﺨﺸﻬﺎ ﺑﻪ ﺻﻮرت ﻗﺪم ﺑﻪ ﻗﺪم ﺑﺮاي ﺣﻞ ﻣﺴﺄﻟﻪ )اﻟﮕﻮرﯾﺘﻢ(‬ ‫– ﺑﺮرﺳﯽ ﺗﻮاﻧﺎﯾﯽ و ﺻﺤﺖ اﻟﮕﻮرﯾﺘﻢ در ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﺳﻌﯽ در ﻃﺮاﺣﯽ »ﺑﺎﻻ ﺑﻪ ﭘﺎﯾﯿﻦ« در ﺣﻞ ﻣﺴﺄﻟﻪ‬ ‫– ﻣﺮاﺣﻞ ﮐﻠﯽ ﻋﻤﻮﻣﯽ اﻟﮕﻮرﯾﺘﻢ ﻫﺎ:‬ ‫• ﺧﻮاﻧﺪن داده ﻫﺎ‬ ‫• اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت‬ ‫• ﭼﺎپ ﻧﺘﺎﯾﺞ‬ ‫– ﺣﻞ ﻫﺮ ﻣﺮﺣﻠﻪ ﺑﻪ ﺻﻮرت ﺟﺪاﮔﺎﻧﻪ )ﺑﻬﯿﻨﻪ ﺳﺎزي اﻟﮕﻮرﯾﺘﻢ(‬ ‫روش اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫اﺟﺰاي ﺣﻞ ﻣﺴﺄﻟﻪ – 4‬ ‫• ﭘﯿﺎده ﺳﺎزي اﻟﮕﻮرﯾﺘﻢ‬ ‫– ﺗﺒﺪﯾﻞ اﻟﮕﻮرﯾﺘﻢ ﺑﻪ ﺑﺮﻧﺎﻣﻪ‬ ‫– ﺗﺒﺪﯾﻞ ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﯾﮏ ﯾﺎ ﭼﻨﺪ دﺳﺘﻮر زﺑﺎن‬ ‫• ﺗﺴﺖ و ﮐﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ‬ ‫– ﺗﻌﯿﯿﻦ ﺗﻮاﻧﺎﯾﯽ ﺑﺮﻧﺎﻣﻪ در اﺟﺮاي ﺧﻮاﺳﺘﮥ ﻣﻮرد ﻧﻈﺮ‬ ‫– اﻋﻤﺎل ورودي ﻫﺎي ﻣﺨﺘﻠﻒ و ﺑﺮرﺳﯽ ﺣﺎﻻت ﻣﻤﮑﻦ در ﻣﺴﺄﻟﻪ‬ ‫• ﻧﮕﻬﺪاري و ﻧﻮﺳﺎزي ﺑﺮﻧﺎﻣﻪ‬ ‫– اﺻﻼح ﺑﺮﻧﺎﻣﻪ ﺟﻬﺖ ﺣﺬف ﺧﻄﺎﻫﺎي ﻗﺒﻠﯽ‬ ‫– ﻧﻮﺳﺎزي آن ﺟﻬﺖ ﭘﺎﺳﺨﮕﻮﯾﯽ ﺑﻪ ﻧﯿﺎزﻫﺎي ﻓﻌﻠﯽ‬ ‫66‬ ‫ﻣﺒﺤﺚ دوم:‬ ‫76‬ ‫ﻣﺒﺎﻧﯽ زﺑﺎن ++‪C‬‬ ‫‪Structure of a C++ Program‬‬ ‫‪ ‬ﯾﮏ ﺑﺮﻧﺎﻣﻪ ++‪ C‬ﻣﺠﻤﻮﻋﻪ اي از اﻋﻼﻧﻬﺎ و ﺗﻌﺎرﯾﻒ اﺳﺖ:‬ ‫‪ ‬ﺗﻌﺎرﯾﻒ اﻧﻮاع داده ﻫﺎ‬ ‫‪ ‬اﻋﻼن داده ﻫﺎي ﻋﻤﻮﻣﯽ‬ ‫‪ ‬ﺗﻌﺮﯾﻒ ﺗﻮاﺑﻊ‬ ‫‪ ‬ﺗﻌﺮﯾﻒ ﮐﻼﺳﻬﺎ‬ ‫‪ ‬ﯾﮏ ﺗﺎﺑﻊ ﻣﺨﺼﻮص وﺟﻮد دارد ﮐﻪ )(‪ main‬ﻧﺎم دارد و ﻋﻤﻠﯿﺎت‬ ‫روي داده ﻫﺎ از آﻧﺠﺎ ﺷﺮوع ﻣﯿﺸﻮد.‬ ‫86‬ ‫‪Procedural vs. Object Oriented‬‬ ‫‪ ‬زﺑﺎﻧﻬﺎي ﺑﺮ اﺳﺎس روال ) ﯾﺎ ﻣﺎژوﻻر(: اﯾﻦ زﺑﺎﻧﻬﺎ ﺑﺮﻧﺎﻣﻪ را ﺑﻪ‬ ‫ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از رواﻟﻬﺎ ﯾﺎ ﺗﻮاﺑﻊ ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﻨﺪ.‬ ‫‪ ‬زﺑﺎﻧﻬﺎي ﺷﯽ ﮔﺮاء ، ﺑﺮﻧﺎﻣﻪ ﻫﺎ را ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از اﺷﯿﺎء‬ ‫)ﮐﻼﺳﻬﺎ( ﺑﯿﺎن ﻣﯽ ﮐﻨﻨﺪ.‬ ‫‪C++ ‬ﻫﺮ دو ﺣﺎﻟﺖ ﻓﻮق را ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ.‬ ‫‪ ‬در اﯾﻦ درس، ﻣﺎ از رواﻟﻬﺎ ﺷﺮوع ﻣﯽ ﮐﻨﯿﻢ و ﺑﻪ ﺗﺪرﯾﺞ ﻣﻔﺎﻫﯿﻢ‬ ‫ﺷﯽ ﮔﺮاﯾﯽ را ﻣﻌﺮﻓﯽ ﻣﯽ ﮐﻨﯿﻢ.‬ ‫96‬ ‫ﻣﺒﺎﻧﯽ اوﻟﯿﻪ زﺑﺎن ++‪C‬‬ ‫وﯾﮋﮔﯽ ﻫﺎي زﺑﺎن ++‪C‬‬ ‫•‬ ‫•‬ ‫•‬ ‫++‪ C‬ﯾﮏ زﺑﺎن ﻣﯿﺎﻧﯽ و ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ‬ ‫ﻗﺎﺑﻠﯿﺖ اﻧﻌﻄﺎف و ﻗﺪرت ﺑﺎﻻي آن ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬ ‫ﻗﺎﺑﻠﯿﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﯿﺴﺘﻢ‬ ‫–‬ ‫•‬ ‫ارﺗﺒﺎط ﺑﯿﻦ ++‪ C‬و زﺑﺎن اﺳﻤﺒﻠﯽ‬ ‫–‬ ‫•‬ ‫ﺗﻌﺪاد ﮐﻠﻤﺎت ﮐﻠﯿﺪي آن 26 ﮐﻠﻤﻪ اﺳﺖ. )ﻣﺎﻧﻨﺪ ﻧﻮع ﻣﺘﻐﯿﺮﻫﺎ ﯾﺎ دﺳﺘﻮرات‬ ‫ﺧﺎص(‬ ‫ﺣﺴﺎﺳﯿﺖ ﺑﻪ ﺣﺮوف )‪(Case Sensitive‬‬ ‫–‬ ‫–‬ ‫07‬ ‫اﻣﮑﺎن ﺑﻬﺮه ﺑﺮداري از ﻗﺎﺑﻠﯿﺖ ﻫﺎي اﺳﻤﺒﻠﯽ در ++‪C‬‬ ‫زﺑﺎن ﮐﻮﭼﮏ‬ ‫–‬ ‫•‬ ‫اﻣﮑﺎن ﺑﻬﺮه ﺑﺮداري از ﺳﺨﺖ اﻓﺰار و ﻧﺮم اﻓﺰارﻫﺎ‬ ‫ﺗﻤﺎم ﮐﻠﻤﺎت ﮐﻠﯿﺪي در اﯾﻦ زﺑﺎن ﺑﺎ ﺣﺮوف ﮐﻮﭼﮏ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد.‬ ‫ﺗﻮﺻﯿﻪ: ﺗﻤﺎم ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﺎ ﺣﺮوف ﮐﻮﭼﮏ ﻧﻮﺷﺘﻪ ﺷﻮد.‬ ‫وﯾﮋﮔﯽ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي زﺑﺎن ++‪C‬‬ ‫ﻣﺒﺎﻧﯽ اوﻟﯿﻪ زﺑﺎن ++‪C‬‬ ‫• ﻫﺮ دﺳﺘﻮر ﺑﻪ );( ﺧﺘﻢ ﻣﯽ ﺷﻮد.‬ ‫• ﺣﺪاﮐﺜﺮ ﻃﻮل ﯾﮏ دﺳﺘﻮر: 552 ﮐﺎراﮐﺘﺮ‬ ‫• دﺳﺘﻮر ﻣﯽ ﺗﻮاﻧﺪ در ﭼﻨﺪ ﺳﻄﺮ اداﻣﻪ ﯾﺎﺑﺪ.‬ ‫• در ﻫﺮ ﺳﻄﺮ ﻣﯽ ﺗﻮان ﭼﻨﺪ دﺳﺘﻮر ﺗﺎﯾﭗ ﮐﺮد.‬ ‫– اﯾﻦ ﮐﺎر ﺗﻮﺻﯿﻪ ﻧﻤﯽ ﺷﻮد.‬ ‫• ﻧﻮﺷﺘﻦ ﺗﻮﺿﯿﺤﺎت:‬ ‫/* ‪– /* This is a sample comment‬‬ ‫‪– // This is another sample comment‬‬ ‫17‬ ‫اﻧﻮاع داده ﻫﺎ‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫• ‪ : char‬ﮐﺎراﮐﺘﺮ )'‪('a', 'b', 'x‬‬ ‫• ‪ : int‬اﻋﺪاد ﺻﺤﯿﺢ )521 ,2(‬ ‫• ‪ : float‬اﻋﺪاد اﻋﺸﺎري )72.421 ,5.51(‬ ‫– )7 رﻗﻢ دﻗﺖ(‬ ‫• ‪ : double‬اﻋﺪاد اﻋﺸﺎري ﺑﺰرﮔﺘﺮ از ‪float‬‬ ‫– )51 رﻗﻢ دﻗﺖ(‬ ‫• ‪ : bool‬ﺑﺮاي ذﺧﯿﺮه ﻣﻘﺎدﯾﺮ ﻣﻨﻄﻘﯽ )دو ارزش ‪ true‬و ‪(false‬‬ ‫• ‪) void‬ﺗﻬﯽ(‬ ‫27‬ ‫ﻃﻮل داده‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫• در ﭘﺮدازﻧﺪه ﻫﺎي ﻣﺨﺘﻠﻒ ﻣﺘﻔﺎوت اﺳﺖ:‬ ‫37‬ ‫– ‪ DOS‬و 1.3‪ 16 : Win‬ﺑﯿﺘﯽ‬ ‫– ‪ 32 : Other Windows‬ﺑﯿﺘﯽ‬ ‫• اﯾﺠﺎد اﻧاع ﺟﺪﯾﺪ‬ ‫– ‪ Signed‬و ‪Unsigned‬‬ ‫– ‪ Long‬و ‪Short‬‬ ‫ﻧﻮع داده‬ ‫اﻧﺪازه ﺑﻪ ﺑﯿﺖ‬ char unsigned Char 2 - ‫ﻃﻮل داده‬ ‫ﺑﺎزة ﻣﻮرد ﻗﺒﻮل‬ -128 _ 127 8 0 _ 255 -128 _ 127 int -32768 _ 32767 unsigned int 16 or 32 0 _ 65535 signed int -32768 _ 32767 short int -32768 _ 32767 unsigned short int 16 0 _ 65535 signed short int -32768 _ 32767 long int -2147483648 _ 2147483647 unsigned long int 32 -2147483648 _ 2147483647 float 32 0 _ 4294967295 ‫دﻗﺖ اﻋﺸﺎر: 7 رﻗﻢ دﻗﺖ‬ double 64 ‫دﻗﺖ اﻋﺸﺎر: 51 رﻗﻢ دﻗﺖ‬ long double 80 ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ signed Char signed long int ‫دﻗﺖ اﻋﺸﺎر: 91 رﻗﻢ دﻗﺖ‬ 74 ‫ﺗﻌﺮﯾﻒ ﻣﺘﻐﯿﺮﻫﺎ‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫• ﻣﺤﻞ ذﺧﯿﺮه داده ﻫﺎ در ﺣﺎﻓﻈﻪ )ﻧﺎم ﻣﺤﻞ ﺣﺎﻓﻈﻪ(‬ ‫57‬ ‫• ﻣﻘﺪار آﻧﻬﺎ در ﻃﻮل ﺑﺮﻧﺎﻣﻪ ﻣﻤﮑﻦ اﺳﺖ ﺗﻐﯿﯿﺮ ﮐﻨﺪ.‬ ‫• داده ﻫﺎ داراي ﻧﻮع ﻫﺴﺘﻨﺪ ﭘﺲ ﻣﺘﻐﯿﺮﻫﺎ ﻧﯿﺰ ﺑﺎﯾﺪ داراي ﻧﻮع‬ ‫ﺑﺎﺷﻨﺪ.‬ ‫• ﺗﻌﯿﯿﻦ ﺑﺎزة اﻋﺪاد ﻣﻮرد ﻗﺒﻮل و ﻫﻤﭽﻨﯿﻦ ﻣﯿﺰان ﺣﺎﻓﻈﻪ ﻣﻮرد ﻧﯿﺎز‬ ‫ﺗﻮﺳﻂ ﻧﻮع ﻣﺘﻐﯿﺮ‬ ‫ﻧﺎﻣﮕﺬاري ﻣﺘﻐﯿﺮﻫﺎ‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫•‬ ‫ﺗﺮﮐﯿﺐ ﺣﺮوف ‪ a‬ﺗﺎ ‪ z‬و ‪ A‬ﺗﺎ ‪ Z‬و ارﻗﺎم و ﺧﻂ رﺑﻂ )_(‬ ‫•‬ ‫اوﻟﯿﻦ ﮐﺎراﮐﺘﺮ رﻗﻢ ﻧﺒﺎﺷﺪ.‬ ‫•‬ ‫ﻃﻮل آن ﻫﺮ ﻣﻘﺪاري ﻣﯽ ﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ وﻟﯽ ﻓﻘﻂ 13‬ ‫ﮐﺎراﮐﺘﺮ اول ﻧﺎم ﻣﺘﻐﯿﺮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد.‬ ‫•‬ ‫از ﮐﻠﻤﺎت ﮐﻠﯿﺪي ﻧﺒﺎﺷﺪ.‬ ‫‪count‬‬ ‫‪for‬‬ ‫42‪test‬‬ ‫‪24test‬‬ ‫‪sum‬‬ ‫1!‪grade‬‬ ‫1_‪S‬‬ ‫67‬ ‫اﺳﺎﻣﯽ ﻣﺠﺎز‬ ‫اﺳﺎﻣﯽ ﻏﯿﺮﻣﺠﺎز‬ ‫‪.pcx‬‬ ‫ﮐﻠﻤﺎت ﮐﻠﯿﺪي‬ C++ ‫ و‬C ‫• ﮐﻠﻤﺎت ﮐﻠﯿﺪي ﻣﺸﺘﺮك در‬ char case extern enum return register union typedef break else long switch auto double int struct C++ ‫• ﮐﻠﻤﺎت ﮐﻠﯿﺪي ﻣﺨﺘﺺ‬ delete inline operator static_cast typename const_cast friend new reinterpret_cast typeid try class catch bool asm false explicit dynamic_cast namespace mutable public protected private true throw this template wchar_t virtual using ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ do default continue const if goto for float static sizeof signed short while volatile void unsigned 77 ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫اﻋﻼن ﻣﺘﻐﯿﺮﻫﺎ‬ ‫• ﺗﻌﯿﯿﻦ ﻧﻮع ﻣﺘﻐﯿﺮ‬ ‫– ﻗﺒﻞ از ﺑﮑﺎرﮔﯿﺮي ﻫﺮ ﻣﺘﻐﯿﺮ آن را ﺑﺎﯾﺪ اﻋﻼن ﮐﺮد.‬ ‫– اﻋﻼن ﻣﺘﻐﯿﺮﻫﺎ در ﻫﺮ ﺟﺎي ﺑﺮﻧﺎﻣﻪ اﻣﮑﺎن ﭘﺬﯾﺮ اﺳﺖ.‬ ‫• ﺗﻮﺻﯿﻪ ﻣﯽ ﺷﻮد اﯾﻦ ﮐﺎر در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺻﻮرت ﮔﯿﺮد.‬ ‫– ﺑﺮاي اﻋﻼن ﺑﯿﺶ از ﯾﮏ ﻣﺘﻐﯿﺮ آﻧﻬﺎ را ﺑﺎ ﮐﺎﻣﺎ ),( از ﻫﻢ ﺟﺪا ﻣﯽ‬ ‫ﮐﻨﯿﻢ.‬ ‫– ﻧﻮع ﻣﺘﻐﯿﺮ را واﺑﺴﺘﻪ ﺑﻪ ﻧﯿﺎز ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﯿﻢ.‬ ‫87‬ ‫اﻋﻼن ﻣﺘﻐﯿﺮﻫﺎ- 2‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫• ﻓﺮﻣﺖ اﻋﻼن ﻣﺘﻐﯿﺮﻫﺎ:‬ ‫;ﻧﺎم ﻣﺘﻐﯿﺮ‬ ‫ﻧﻮع داده •‬ ‫:‪Example‬‬ ‫;‪int x,y‬‬ ‫;‪float m, n‬‬ ‫;2‪char ch1,ch‬‬ ‫;1‪double d‬‬ ‫;1‪long int p‬‬ ‫;‪bool b‬‬ ‫97‬ Example: int x, y=5; bool b1=false, b2=true; :‫• ﺳﻪ روش‬ ‫– ﻫﻨﮕﺎم اﻋﻼن ﻣﺘﻐﯿﺮ‬ Example: float f1, f2; char ch1, ch2; (=) ‫– ﺑﺎ دﺳﺘﻮر اﻧﺘﺴﺎب‬ f1=15.5; f2=20.25; ch1=ch2=‘a’; Example: ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ char ch1=‘a’, ch2=‘m’; ‫ﻣﻘﺪاردﻫﯽ ﺑﻪ ﻣﺘﻐﯿﺮﻫﺎ‬ ‫– دﺳﺘﻮرات ورودي‬ int x, y; cin >>x >>y; 80 ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫ﺛﻮاﺑﺖ‬ ‫18‬ ‫• ﻣﻘﺎدﯾﺮي ﮐﻪ در ﺑﺮﻧﺎﻣﻪ وﺟﻮد دارﻧﺪ وﻟﯽ ﻗﺎﺑﻞ ﺗﻐﯿﯿﺮ ﻧﯿﺴﺘﻨﺪ.‬ ‫• ﻗﻮاﻧﯿﻦ ﻧﺎﻣﮕﺬاري آن ﻣﺸﺎﺑﻪ ﻣﺘﻐﯿﺮﻫﺎ‬ ‫• ﭘﺲ از اﻋﻼن ﺛﻮاﺑﺖ در ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ ﺗﻐﯿﯿﺮ ﻧﯿﺴﺘﻨﺪ.‬ ‫• ﮐﺎرﺑﺮد آن: ﻗﺎﺑﻠﯿﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ ﺻﻮرت ﭘﺎراﻣﺘﺮي‬ ‫اﻋﻼن ﺛﻮاﺑﺖ‬ ‫ﮐﺎر ﺑﺎ داده ﻫﺎ و اﻃﻼﻋﺎت‬ ‫• اﺳﺘﻔﺎده از دﺳﺘﻮر ‪#define‬‬ ‫–‬ ‫–‬ ‫–‬ ‫–‬ ‫>ﻣﻘﺪار< >ﻧﺎم ﺛﺎﺑﺖ< ‪• #define‬‬ ‫ﻣﻘﺪار ﺛﺎﺑﺖ ﻧﻮع آن را ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ.‬ ‫در اﻧﺘﻬﺎي آن ﻋﻼﻣﺖ );( ﻗﺮار ﻧﻤﯽ ﮔﯿﺮد.‬ ‫از دﺳﺘﻮرات ﭘﯿﺶ ﭘﺮدازﻧﺪه اﺳﺖ )ﻗﺒﻞ از ﺗﺮﺟﻤﻪ ﺑﺠﺎي ﻧﺎم ﻗﺮار ﻣﯽ ﮔﯿﺮد و در‬ ‫زﻣﺎن اﺟﺮا وﺟﻮد ﻧﺪارد.(‬ ‫ﺑﺮاي ﺗﻔﮑﯿﮏ از ﻣﺘﻐﯿﺮﻫﺎ ﺑﻬﺘﺮ اﺳﺖ ﻧﺎم آﻧﻬﺎ ﺑﺎ ﺣﺮوف ﺑﺰرگ ﻣﺸﺨﺺ ﺷﻮد.‬ ‫• اﺳﺘﻔﺎده از دﺳﺘﻮر ‪const‬‬ ‫;>ﻣﻘﺪار< = >ﻧﺎم ﺛﺎﺑﺖ< >ﻧﻮع داده< ‪• const‬‬ ‫:‪Example‬‬ ‫:‪Example‬‬ ‫;04=‪const int M=100, count‬‬ ‫28‬ ‫001‬ ‫‪#define M‬‬ ‫;’‪const signed char x=‘a‬‬ ‫41.3‬ ‫‪#define PI‬‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﺗﻌﺮﯾﻒ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫38‬ ‫• ﻧﻤﺎدﻫﺎﯾﯽ ﮐﻪ اﻋﻤﺎل ﺧﺎﺻﯽ اﻧﺠﺎم ﻣﯽ دﻫﻨﺪ.‬ ‫• اﺳﺘﻔﺎده در ﻫﻨﮕﺎم ﻧﯿﺎز ﺑﻪ اﻧﺠﺎم ﻋﻤﻠﯿﺎت ﺑﺮ روي داده ﻫﺎ‬ ‫• ﻋﻤﻠﻮﻧﺪ: ﻣﻘﺎدﯾﺮي ﮐﻪ ﻋﻤﻠﮕﺮﻫﺎ ﺑﺮ روي آﻧﻬﺎ ﻋﻤﻞ ﻣﯽ ﮐﻨﻨﺪ.‬ ‫• اﻧﻮاع ﻋﻤﻠﮕﺮﻫﺎ‬ ‫–‬ ‫–‬ ‫–‬ ‫–‬ ‫–‬ ‫–‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪ اي‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﯽ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﺗﺮﮐﯿﺒﯽ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﺑﯿﺘﯽ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺘﻔﺮﻗﻪ‬ ‫‪Mathematical Operators‬‬ ‫%‬ ‫/‬ ‫*‬ ‫‬‫+‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎ از ﻗﻮاﻧﯿﻦ اوﻟﻮﯾﺖ ﭘﯿﺮوي ﻣﯽ ﮐﻨﻨﺪ ﮐﻪ ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ‬ ‫ﻋﺒﺎرات رﯾﺎﺿﯽ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﻨﺪ.‬ ‫‪ ‬ﻧﺘﯿﺠﻪ ﻣﺤﺎﺳﺒﻪ ﻋﺒﺎرت ++‪ C‬زﯾﺮ ﭼﯿﺴﺖ؟‬ ‫5 + 4 / 3 / 2‬ ‫‪ ‬ﺟﻮاب: ﺗﺎ وﻗﺘﯽ ﮐﻪ ﻗﻮاﻧﯿﻦ اوﻟﻮﯾﺖ را ﻧﺪاﻧﯿﺪ ﻧﻤﯽ ﺗﻮاﻧﯿﺪ ﺑﻪ اﯾﻦ‬ ‫ﺳﻮال ﭘﺎﺳﺦ دﻫﯿﺪ.‬ ‫48‬ ‫‪Associativity‬‬ ‫‪‬‬ ‫‪ associativity‬ﯾﮏ ﻋﻤﻠﮕﺮ ﺗﺮﺗﯿﺐ ﻣﺤﺎﺳﺒﻪ ﻋﺒﺎراﺗﯽ ﮐﻪ ﺷﺎﻣﻞ‬ ‫ﯾﮏ ﻋﻤﻠﮕﺮ ﻫﺴﺘﻨﺪ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ ﻣﺜﻞ:‬ ‫5 / 4 / 3‬ ‫‪ ‬دو ﺣﺎﻟﺖ ﻣﺨﺘﻠﻒ اﻣﮑﺎن ﭘﺬﯾﺮ اﺳﺖ:‬ ‫‪ ‬ﭼﭗ ﺑﻪ راﺳﺖ: ﺳﻤﺖ ﭼﭗ ﺗﺮﯾﻦ ﻋﻤﻠﮕﺮ اول اﻋﻤﺎل ﻣﯽ ﺷﻮد.‬ ‫‪ ‬راﺳﺖ ﺑﻪ ﭼﭗ : ﺳﻤﺖ راﺳﺖ ﺗﺮﯾﻦ ﻋﻤﻠﮕﺮ اول اﻋﻤﺎل ﻣﯽ ﺷﻮد.‬ ‫58‬ ‫‪Precedence‬‬ ‫‪‬‬ ‫اوﻟﻮﯾﺖ ﺗﺮﺗﯿﺐ اﺟﺮاي ﻋﻤﻠﮕﺮﻫﺎي ﻏﯿﺮ ﯾﮑﺴﺎن را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ.‬ ‫‪ ‬ﻫﻤﯿﺸﻪ ﻋﻤﻠﮕﺮ ﺑﺎ اوﻟﻮﯾﺖ ﺑﺎﻻﺗﺮ زودﺗﺮ از ﻋﻤﻠﮕﺮ ﺑﺎ اوﻟﻮﯾﺖ ﭘﺎﯾﯿﻨﺘﺮ‬ ‫اﻋﻤﺎل ﻣﯽ ﺷﻮد‬ ‫‪ ‬اﮔﺮ اوﻟﻮﯾﺖ دو ﻋﻤﻠﮕﺮ ﻣﺘﻔﺎوت ﯾﮑﺴﺎن ﺑﺎﺷﺪ اﺑﺘﺪا ﺳﻤﺖ ﭼﭙﯽ‬ ‫اﻋﻤﺎل ﻣﯽ ﮔﺮدد.‬ ‫68‬ C++ Math Operator Rules ‫ﻋﻤﻠﮕﺮ‬ Associativity ‫اوﻟﻮﯾﺖ‬ () * / % ‫ﭼﭗ ﺑﻪ راﺳﺖ‬ ‫ﭼﭗ ﺑﻪ راﺳﺖ‬ ‫زﯾﺎد‬ ‫ﻣﺘﻮﺳﻂ‬ + ‫ﭼﭗ ﺑﻪ راﺳﺖ‬ ‫ﮐﻢ‬ Now - what is the value of this?: 2 / 3 / 4 + 5 How about this: (7*3/4-2)*5 )*5 87 ‫‪Relational and Equality Operators‬‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﯾﺴﻪ اي و ﺗﺴﺎوي ﺑﺮاي ﻣﻘﺎﯾﺴﻪ اﺳﺘﻔﺎده ﻣﯽ‬ ‫ﮔﺮدﻧﺪ:‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﯾﺴﻪ اي :‬ ‫>‬ ‫=>‬ ‫<‬ ‫=<‬ ‫ﺑﺰرﮔﺘﺮ‬ ‫ﺑﺰرﮔﺘﺮ ﻣﺴﺎوي‬ ‫ﮐﻮﭼﮑﺘﺮ‬ ‫ﮐﻮﭼﮑﺘﺮ ﻣﺴﺎوي‬ ‫==‬ ‫=!‬ ‫ﻣﺴﺎوي‬ ‫ﻣﺨﺎﻟﻒ‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎي ﺗﺴﺎوي:‬ ‫88‬ ‫‪Relational and Equality‬‬ ‫).‪Operators (cont‬‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﯾﺴﻪ اي داراي اوﻟﻮﯾﺖ ﺧﯿﻠﯽ ﮐﻢ ﻫﺴﺘﻨﺪ و از‬ ‫ﭼﭗ ﺑﻪ راﺳﺖ اﻋﻤﺎل ﻣﯽ ﮔﺮدﻧﺪ.‬ ‫‪ ‬ﻋﻤﻠﮕﺮﻫﺎي ﺗﺴﺎوي داراي اوﻟﻮﯾﺖ ﺧﯿﻠﯽ ﺧﯿﻠﯽ ﮐﻢ ﻫﺴﺘﻨﺪ و از‬ ‫ﭼﭗ ﺑﻪ راﺳﺖ اﻋﻤﺎل ﻣﯽ ﮔﺮدﻧﺪ.‬ ‫‪ ‬ﻣﺜﺎل:‬ ‫‪17 < x‬‬ ‫12 =! ‪age‬‬ ‫98‬ ‫41.3 == ‪foo‬‬ ‫‪x+1 >= 4*y-z‬‬ ‫1+‪x‬‬ ‫-‪*y‬‬ ‫‪Another Operator‬‬ ‫ﻋﻤﻠﮕﺮ اﻧﺘﺴﺎب = ﺑﺮاي اﻧﺘﺴﺎب ﻣﻘﺪار ﺑﻪ ﯾﮏ ﻣﺘﻐﯿﯿﺮ اﺳﺘﻔﺎده ﻣﯽ‬ ‫ﮔﺮدد:‬ ‫‪‬‬ ‫;‪x = 13 - y‬‬ ‫‪‬‬ ‫ﻋﻤﻠﮕﺮ اﻧﺘﺴﺎب داراي اوﻟﻮﯾﺖ ﺑﺴﯿﺎر ﮐﻢ )ﮐﻤﺘﺮﯾﻦ اوﻟﻮﯾﺖ(‬ ‫ﻫﺴﺖ و از راﺳﺖ ﺑﻪ ﭼﭗ اﻋﻤﺎل ﻣﯽ ﺷﻮد.‬ ‫:‪You can do this‬‬ ‫;51 + ‪x = y = z‬‬ ‫;51‬ ‫09‬ ‫‪‬‬ Precedence ‫ﻋﻤﻠﮕﺮ‬ () * / % + < <= > >= == != = ‫اوﻟﻮﯾﺖ‬ ‫( ﺑﯿﺸﺘﺮﯾﻦ‬applied first) ‫( ﮐﻤﺘﺮﯾﻦ‬applied last) 91 Another Program #include <iostream.h> int main() { double fahr,celcius; cout << "Enter Temperature in Fahrenheit\n"; Fahrenheit\ cin >> fahr; celcius = (fahr - 32.0)*5/9; 32. )*5 cout << fahr << " fahrenheit is " << celcius << " Celcius" << endl; return 0; } 92 ! example bool done = false; int i=1; i=1 while (! done) { cout << "i is " << i << endl; i++; if (i==100) done=true; (i==100) } 93 ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﻋﻤﻠﮕﺮ‬ ‫49‬ ‫ﻧﺎم‬ ‫ﻣﺜﺎل‬ ‫‬‫+‬ ‫ﺗﻔﺮﯾﻖ و ﻣﻨﻬﺎي ﯾﮑﺎﻧﯽ‬ ‫‪ x-y‬ﯾﺎ ‪-x‬‬ ‫ﺟﻤﻊ‬ ‫‪x+y‬‬ ‫ﺿﺮب‬ ‫‪X*y‬‬ ‫ﺗﻘﺴﯿﻢ‬ ‫‪x/y‬‬ ‫ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ ﺻﺤﺢ‬ ‫‪x%y‬‬ ‫ﮐﺎﻫﺶ )‪(decrement‬‬ ‫--‪x‬ﯾﺎ ‪--x‬‬ ‫اﻓﺰاﯾﺶ )‪(increment‬‬ ‫++‪ x‬ﯾﺎ ‪++x‬‬ ‫*‬ ‫/‬ ‫%‬ ‫-‬‫++‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫• ﺗﻔﺎوت ‪ : x--, --x‬اﮔﺮ اﯾﻦ ﻋﻤﻠﮕﺮ در ﻋﺒﺎرت ﻗﺒﻞ از ﻋﻤﻠﻮﻧﺪ ﺑﯿﺎﯾﺪ، اﺑﺘﺪا‬ ‫اﯾﻦ ﻋﻤﻠﮕﺮﻫﺎ ﻋﻤﻞ ﮐﺮده و ﺳﭙﺲ ﻧﺘﯿﺠﻪ در ﻣﺤﺎﺳﺒﺎت ﺷﺮﮐﺖ داده ﻣﯽ‬ ‫ﺷﻮد، در ﻏﯿﺮ اﯾﻨﺼﻮرت ﻣﻘﺪار ﻓﻌﻠﯽ ﻋﻤﻠﻮﻧﺪ در ﻋﺒﺎرت اﺳﺘﻔﺎده ﺷﺪه و‬ ‫ﺳﭙﺲ ﻋﻤﻠﮕﺮ ﺑﺮ روي آن ﺗﺄﺛﯿﺮ ﻣﯽ ﮔﺬارد:‬ ‫:‪Example‬‬ ‫;‪int x=10, y‬‬ ‫01=‪x=11, y‬‬ ‫21=‪x=12, y‬‬ ‫;‪y=++x‬‬ ‫62=‪x=14, y‬‬ ‫59‬ ‫;++‪y=x‬‬ ‫;)‪y=(x++ + ++x‬‬ ‫ﺗﻘﺪم ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫:‪Example‬‬ ‫;01=‪int m, x=6, y‬‬ ‫;3 * 2 / ‪m=x + y‬‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• ﺣﺎﺻﻞ ﻋﺒﺎرت روﺑﺮو ﭼﻘﺪر اﺳﺖ؟‬ ‫2=)6/61(=))3*2(/)‪((x+y‬‬ ‫42=3*)2/61(=)3*)2/)‪(((x+y‬‬ ‫12=‪(((y/2)*3)+x)=((10/2)*3)+x‬‬ ‫33=3*)6+)2/01((=)3*)‪(((y/2)+x‬‬ ‫-- ++‬ ‫ )ﻣﻨﻬﺎي ﯾﮑﺎﻧﯽ(‬‫%/*‬ ‫-+‬ ‫69‬ ‫ﻋﻤﻠﮕﺮﻫﺎي داراي ﺗﻘﺪم ﯾﮑﺴﺎن، ﺗﻘﺪم ﻣﮑﺎﻧﯽ دارﻧﺪ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪ اي‬ ‫• اﺳﺘﻔﺎده در دﺳﺘﻮرات ﺷﺮﻃﯽ ﺑﺮاي ﻣﻘﺎﯾﺴﮥ دو ﻣﻘﺪار‬ ‫=>‬ ‫ﺑﺰرﮔﺘﺮ ﯾﺎ ﻣﺴﺎوي‬ ‫‪x>=y‬‬ ‫<‬ ‫ﮐﻮﭼﮑﺘﺮ‬ ‫‪x<y‬‬ ‫ﮐﻮﭼﮑﺘﺮ ﯾﺎ ﻣﺴﺎوي‬ ‫‪x<=y‬‬ ‫==‬ ‫ﺗﺴﺎوي‬ ‫‪x==y‬‬ ‫=!‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫>‬ ‫ﺑﺰرﮔﺘﺮ‬ ‫‪x>y‬‬ ‫=<‬ ‫79‬ ‫ﻋﻤﻠﮕﺮ‬ ‫ﻧﺎم‬ ‫ﻣﺜﺎل‬ ‫ﻧﺎﻣﺴﺎوي‬ ‫‪x!=y‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﯽ‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• ﻋﺒﺎرات ﻣﻨﻄﻘﯽ داراي دو ارزش درﺳﺘﯽ و ﻧﺎدرﺳﺘﯽ ﻫﺴﺘﻨﺪ‬ ‫• در زﺑﺎن ++‪:C‬‬ ‫– ارزش ﻧﺎدرﺳﺘﯽ: ﺻﻔﺮ )ﺛﺎﺑﺖ ‪(false‬‬ ‫– ارزش درﺳﺘﯽ: ﻣﻘﺎدﯾﺮ ﻏﯿﺮ ﺻﻔﺮ )ﺛﺎﺑﺖ ‪ true‬ﻣﻌﺎدل 1(‬ ‫:‪Example‬‬ ‫!‬ ‫ﻧﻘﯿﺾ )‪(not‬‬ ‫‪!x‬‬ ‫;‪x=false‬‬ ‫&&‬ ‫و )‪(and‬‬ ‫‪x>y && m<p‬‬ ‫||‬ ‫89‬ ‫ﻋﻤﻠﮕﺮ‬ ‫ﻧﺎم‬ ‫ﻣﺜﺎل‬ ‫;‪bool x, y, m, p, q‬‬ ‫ﯾﺎ )‪(or‬‬ ‫‪x>y || m<p‬‬ ‫;‪y=true‬‬ ‫;‪m=x && y‬‬ ‫;‪p=x || y‬‬ ‫;‪q= !x‬‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﺗﻘﺪم ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪ و ﻣﻨﻄﻘﯽ‬ ‫99‬ ‫!‬ ‫=< < => >‬ ‫=! ==‬ ‫&&‬ ‫||‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﺗﺮﮐﯿﺒﯽ‬ ‫• ﻋﻤﻞ ﻣﺤﺎﺳﺒﺎت و اﻧﺘﺴﺎب ﺑﺎ ﻫﻢ‬ ‫=-‬ ‫اﻧﺘﺴﺎب ﺗﻔﺮﯾﻖ‬ ‫‪x-=y‬‬ ‫‪x=x-y‬‬ ‫=*‬ ‫اﻧﺘﺴﺎب ﺿﺮب‬ ‫‪X*=y‬‬ ‫‪x=x*y‬‬ ‫اﻧﺘﺴﺎب ﺗﻘﺴﯿﻢ‬ ‫‪x/=y‬‬ ‫‪x=x/y‬‬ ‫=%‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫=+‬ ‫اﻧﺘﺴﺎب ﺟﻤﻊ‬ ‫‪x+=y‬‬ ‫‪x=x+y‬‬ ‫=/‬ ‫001‬ ‫ﻋﻤﻠﮕﺮ‬ ‫ﻧﺎم‬ ‫ﻣﺜﺎل‬ ‫ﻣﻌﺎدل‬ ‫اﻧﺘﺴﺎب ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ‬ ‫‪x%=y‬‬ ‫‪x=x%y‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﺑﯿﺘﯽ‬ ‫• اﯾﺠﺎد اﻣﮑﺎن اﺳﺘﻔﺎده از ++‪ C‬در ﮐﺎرﺑﺮدﻫﺎي اﺳﻤﺒﻠﯽ‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• ﻋﻤﻞ ﺑﺮ روي ﻣﻘﺎدﯾﺮ ﺑﯿﺖ، ﺑﺎﯾﺖ و ﮐﻠﻤﻪ‬ ‫• ﻓﻘﻂ ﺑﺮ روي ﻣﻘﺎدﯾﺮ ‪ int‬و ‪ char‬ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ‬ ‫– ﺑﺎ ‪ void ،double ،float‬و ‪ bool‬و ﺳﺎﯾﺮ اﻧﻮاع ﭘﯿﭽﯿﺪه ﺑﮑﺎر ﻧﻤﯽ رود.‬ ‫• ﮐﺎرﺑﺮد: ﺧﻮاﻧﺪن ﺑﺎﯾﺘﻬﺎي وﺿﻌﯿﺖ دﺳﺘﮕﺎﻫﻬﺎﯾﯽ ﻣﺎﻧﻨﺪ ﭼﺎﭘﮕﺮ، ﻣﻮدم و ﺗﺴﺖ وﺿﻌﯿﺖ‬ ‫آﻧﻬﺎ‬ ‫ﻋﻤﻠﮕﺮ‬ ‫ﻧﺎم‬ ‫&‬ ‫|‬ ‫و )‪(AND‬‬ ‫ﯾﺎ )‪(OR‬‬ ‫^‬ ‫ﯾﺎي اﻧﺤﺼﺎري )‪(XOR‬‬ ‫~‬ ‫ﻧﻘﯿﺾ )‪(NOT‬‬ ‫>>‬ ‫<<‬ ‫101‬ ‫ﺷﯿﻔﺖ ﺑﻪ راﺳﺖ‬ ‫ﺷﯿﻔﺖ ﺑﻪ ﭼﭗ‬ ‫ﻋﻤﻠﮑﺮد ﻋﻤﻠﮕﺮﻫﺎي ﺑﯿﺘﯽ‬ ‫0‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫‪x‬‬ ‫201‬ ‫‪y‬‬ ‫‪x&y‬‬ ‫‪x|y‬‬ ‫‪x^y‬‬ ‫‪~x‬‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫ﻣﻘﺪار دﻫﺪﻫﯽ ‪x‬‬ ‫ﻣﻘﺪار دودوﯾﯽ ‪x‬‬ ‫‪Unsigned char x‬‬ ‫7‬ ‫82‬ ‫291‬ ‫69‬ ‫21‬ ‫11100000‬ ‫00111000‬ ‫00000011‬ ‫00000110‬ ‫00110000‬ ‫;7=‪x‬‬ ‫2 << ‪x= x‬‬ ‫4 << ‪x= x‬‬ ‫1 >> ‪x= x‬‬ ‫3 >> ‪x= x‬‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﻋﻤﻠﮑﺮد ﻋﻤﻠﮕﺮﻫﺎي ﺑﯿﺘﯽ - 2‬ ‫301‬ ‫‪x‬‬ ‫00100001‬ ‫00100001‬ ‫00100001‬ ‫00100001‬ ‫‪y‬‬ ‫01101100‬ ‫01101100‬ ‫01101100‬ ‫-‬ ‫ﻋﻤﻠﮕﺮ‬ ‫ﻧﺘﯿﺠﻪ‬ ‫&‬ ‫|‬ ‫^‬ ‫~‬ ‫00100000‬ ‫01101101‬ ‫01001101‬ ‫11011110‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺘﻔﺮﻗﻪ‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• ﻣﺘﻐﯿﺮﻫﺎ )ﻧﺎم ﻣﮑﺎﻧﻬﺎي ﺣﺎﻓﻈﻪ( داراي آدرس ﺧﺎص ﻣﯽ ﺑﺎﺷﻨﺪ.‬ ‫• ﻋﻤﻠﮕﺮﻫﺎي & و *‬ ‫– & : دﺳﺘﺮﺳﯽ ﺑﻪ آدرس ﻣﺘﻐﯿﺮ‬ ‫– * : دﺳﺘﺮﺳﯽ ﻏﯿﺮ ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﺣﺎﻓﻈﻪ‬ ‫:‪Example‬‬ ‫آدرس ‪ x‬در ‪ p‬ﻗﺮار ﻣﯽ ﮔﯿﺮد.‬ ‫ﺟﺎﯾﯽ ﮐﻪ آدرس آن در ‪ p‬اﺳﺖ )ﻫﻤﺎن ‪ ،(x‬ﺑﺮاﺑﺮ ﺑﺎ 5 ﻣﯽ ﺷﻮد.‬ ‫401‬ ‫;‪p = &x‬‬ ‫;5= ‪*p‬‬ ‫ﻣﺤﺘﻮﯾﺎت ﺟﺎﯾﯽ ﮐﻪ آدرﺳﺶ در ‪ p‬اﺳﺖ )5( در ‪ m‬ﻗﺮار ﻣﯽ ﮔﯿﺮد.‬ ‫;‪m= *p‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺘﻔﺮﻗﻪ- 2‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• ﻋﻤﻠﮕﺮ ؟‬ ‫501‬ ‫• اﯾﻦ ﻋﻤﻠﮕﺮ ﻋﺒﺎرﺗﯽ را ارزﯾﺎﺑﯽ ﻣﯽ ﮐﻨﺪ و ﺑﺮ اﺳﺎس ارزش آن، ﻧﺘﯿﺠﮥ‬ ‫ﻋﺒﺎرت دﯾﮕﺮي را در ﻣﺘﻐﯿﺮي ﻗﺮار ﻣﯽ دﻫﺪ‬ ‫;>ﻋﺒﺎرت 3< : >ﻋﺒﺎرت 2< ? >ﻋﺒﺎرت 1< = ﻣﺘﻐﯿﺮ •‬ ‫• اﮔﺮ 1 درﺳﺖ ﺑﺎﺷﺪ ﻣﻘﺪار 2 در ﻣﺘﻐﯿﺮ ﻗﺮار ﻣﯽ ﮔﯿﺮد و ﮔﺮﻧﻪ ﻣﻘﺪار 3‬ ‫:‪Example‬‬ ‫;‪int x,y‬‬ ‫;5=‪x‬‬ ‫;5*‪y= x>5 ? x*2 : x‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺘﻔﺮﻗﻪ-3‬ ‫• ﻋﻤﻠﮕﺮ ﮐﺎﻣﺎ ),(‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫• اﻧﺠﺎم ﭼﻨﺪ ﻋﻤﻞ در ﯾﮏ دﺳﺘﻮر ﺑﮑﺎر ﻣﯽ رود:‬ ‫;)>ﻋﺒﺎرت 2< , >ﻋﺒﺎرت 1<( = ﻣﺘﻐﯿﺮ •‬ ‫• ﻋﺒﺎرت 1 ﺑﺎ 2 در ارﺗﺒﺎط اﺳﺖ: اول 1 ارزﯾﺎﺑﯽ ﺷﺪه ﻧﺘﯿﺠﮥ آن در 2‬ ‫اﺳﺘﻔﺎده ﺷﺪه، ﺣﺎﺻﻞ در ﻣﺘﻐﯿﺮ ﻗﺮار ﻣﯽ ﮔﯿﺮد.‬ ‫:‪Example‬‬ ‫;‪int x,y‬‬ ‫;)2/4*‪y = (x=2 , x‬‬ ‫601‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺘﻔﺮﻗﻪ - 4‬ ‫• ﻋﻤﻠﮕﺮ ‪sizeof‬‬ ‫– ﻋﻤﻠﮕﺮ زﻣﺎن ﺗﺮﺟﻤﻪ اﺳﺖ و ﺑﺮاي ﺗﻌﯿﯿﻦ ﻃﻮل ﻣﺘﻐﯿﺮ ﯾﺎ داده ﺑﺮ ﺣﺴﺐ ﺑﺎﯾﺖ‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫; ﻣﺘﻐﯿﺮ ‪• sizeof‬‬ ‫;)ﻧﻮع داده( ‪• sizeof‬‬ ‫• ﻋﻤﻠﮕﺮ )(‬ ‫– ﺑﺎﻻ ﺑﺮدن ﺗﻘﺪم ﻋﻤﻠﮕﺮ داﺧﻞ ﺧﻮد‬ ‫– ارزﯾﺎﺑﯽ از داﺧﻠﯽ ﺗﺮﯾﻦ ﭘﺮاﻧﺘﺰ‬ ‫701‬ ‫:‪Example‬‬ ‫;‪int x,y, m‬‬ ‫;‪x = sizeof y‬‬ ‫;)‪m = sizeof (float‬‬ ‫;))2-7(+6(+)1+3(/2*4 = ‪y‬‬ ‫ﺗﻘﺪم ﻋﻤﻠﮕﺮﻫﺎ در ﺣﺎﻟﺖ ﮐﻠﯽ‬ ‫)(‬ ‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎ‬ ‫‪! ~ ++ -- sizeof‬‬ ‫%/*‬ ‫+‬‫>> <<‬ ‫=> > =< <‬ ‫=! ==‬ ‫&‬ ‫^‬ ‫|‬ ‫&&‬ ‫||‬ ‫?‬ ‫=% =/ =* =- =+ =‬ ‫801‬ ‫ﺗﻌﺮﯾﻒ‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع‬ ‫• اﻧﻮاع ﻣﺨﺘﻠﻒ داده ﻫﺎ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﯾﮑﺪﯾﮕﺮ ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ‬ ‫• اﻧﻮاع آن:‬ ‫– ﺗﺒﺪﯾﻞ در ﻋﺒﺎرات ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫– ﺗﺒﺪﯾﻞ در اﺣﮑﺎم اﻧﺘﺴﺎب‬ ‫• ﺗﺒﺪﯾﻞ اﻧﻮاع در ﻋﺒﺎرات ﻣﺤﺎﺳﺒﺎﺗﯽ:‬ ‫– ﻗﺎﻧﻮن ﻣﻮﺟﻮد ﺗﺒﺪﯾﻞ اﻧﻮاع ﮐﻮﭼﮑﺘﺮ ﺑﻪ اﻧﻮاع ﺑﺰرﮔﺘﺮ‬ ‫901‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع در ﻋﺒﺎرت ﻣﺤﺎﺳﺒﺎﺗﯽ‬ ‫• اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ long double‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ ﻣﯽ ﺷﻮد.‬ ‫• وﮔﺮﻧﻪ، اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ double‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ ﻣﯽ ﺷﻮد.‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع‬ ‫• وﮔﺮﻧﻪ، اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ float‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ ﻣﯽ ﺷﻮد.‬ ‫• وﮔﺮﻧﻪ، اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ unsigned long‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ‬ ‫ﻣﯽ ﺷﻮد.‬ ‫• وﮔﺮﻧﻪ، اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ long‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ ﻣﯽ ﺷﻮد.‬ ‫• وﮔﺮﻧﻪ، اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ ‪ unsigned int‬ﺑﺎﺷﺪ، ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ ﺑﻪ آن ﺗﺒﺪﯾﻞ ﻣﯽ‬ ‫ﺷﻮد.‬ ‫– اﮔﺮ ﯾﮑﯽ از ﻋﻤﻠﻮﻧﺪﻫﺎ از ﻧﻮع ‪ Long‬و ﻋﻤﻠﻮﻧﺪ دﯾﮕﺮ از ﻧﻮع ‪ unsigned int‬ﺑﺎﺷﺪ وﻟﯽ ﻣﻘﺪار‬ ‫‪ unsigned int‬را ﻧﺘﻮان ﺑﺎ ‪ long‬ﻧﻤﺎﯾﺶ داد، ﻫﺮ دو ﺑﻪ ‪ unsigned long‬ﺗﺒﺪﯾﻞ ﻣﯽ‬ ‫ﺷﻮﻧﺪ.‬ ‫011‬ ‫ﻣﺜﺎل ﺗﺒﺪﯾﻞ اﻧﻮاع‬ result = ( ch / i ) + ( f * d ) – ( f + i ); double int int double float ‫ﺗﺒﺪﯾﻞ اﻧﻮاع‬ Example: char ch; int i; float f; double d; result = (ch/i) + (f*d) – (f+i); float double double double 111 ‫ﺗﺒﺪﯾﻞ اﻧﻮاع در اﺣﮑﺎم اﻧﺘﺴﺎب‬ ‫• وﻗﺘﯽ دو ﻣﺘﻐﯿﺮ از اﻧﻮاع ﻣﺨﺘﻠﻒ ﺑﻪ ﯾﮑﺪﯾﮕﺮ ﻧﺴﺒﺖ داده ﺷﻮﻧﺪ؛‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع‬ ‫• ﺑﻪ ﻋﻨﻮا ﻣﺜﺎل اﮔﺮ ﻣﺘﻐﯿﺮ ﻧﻮع ‪ char‬ﺑﻪ ﻣﺘﻐﯿﺮ ﻧﻮع ‪ int‬ﻧﺴﺒﺖ داده ﺷﻮﻧﺪ.‬ ‫:‪Example‬‬ ‫;‪char ch‬‬ ‫;‪int x‬‬ ‫;‪float f‬‬ ‫…‬ ‫;‪f=x‬‬ ‫;‪f=ch‬‬ ‫;‪x=f‬‬ ‫;‪ch=x‬‬ ‫– اﻧﻮاع ﮐﺎراﮐﺘﺮي، اﻋﺸﺎري و دﻗﺖ ﻣﻀﺎﻋﻒ ﺑﻪ ﯾﮑﺪﯾﮕﺮ ﻧﺴﺒﺖ داده ﻣﯽ ﺷﻮﻧﺪ؛‬ ‫211‬ ‫– ﻫﺮ ﮐﺪام از اﯾﻦ اﻧﻮاع ﺑﻪ دﯾﮕﺮي ﻗﺎﺑﻞ ﺗﺒﺪﯾﻞ اﺳﺖ وﻟﯽ ﺑﺎﯾﺪ دﻗﺖ داﺷﺖ ﮐﻪ در‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع ﺑﺨﺸﯽ از اﻃﻼﻋﺎت ﻣﻤﮑﻦ اﺳﺖ از ﺑﯿﻦ ﺑﺮود.‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع در اﺣﮑﺎم اﻧﺘﺴﺎب‬ ‫• در اﻧﺘﺴﺎب ﯾﮏ ﻣﻘﺪار اﻋﺸﺎري ﺑﻪ ﯾﮏ ﻣﻘﺪار ﺻﺤﯿﺢ، ﺣﺪاﻗﻞ ﻣﻘﺪاري ﮐﻪ از ﺑﯿﻦ‬ ‫ﻣﯽ رود، ﺑﺨﺶ اﻋﺸﺎري ﻋﺪد اﺳﺖ.‬ ‫‪short int‬‬ ‫‪char‬‬ ‫8 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫)‪int (16 bit‬‬ ‫‪char‬‬ ‫8 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫)‪int (32 bit‬‬ ‫‪char‬‬ ‫42 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫‪long int‬‬ ‫‪char‬‬ ‫42 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫‪short int‬‬ ‫اﻃﻼﻋﺎت از ﺑﯿﻦ ﻧﻤﯽ رود‬ ‫)‪int (32 bit‬‬ ‫‪short int‬‬ ‫61 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫‪long int‬‬ ‫)‪int (16 bit‬‬ ‫61 ﺑﯿﺖ ﺑﺎ ارزش‬ ‫‪long int‬‬ ‫)‪int (32 bit‬‬ ‫اﻃﻼﻋﺎت از ﺑﯿﻦ ﻧﻤﯽ رود‬ ‫‪float‬‬ ‫‪int‬‬ ‫ﺑﺨﺶ ﮐﺴﺮي و ﯾﺎ ﺑﯿﺸﺘﺮ‬ ‫‪double‬‬ ‫‪float‬‬ ‫دﻗﺖ ﻋﻼﺋﻢ ﮐﻢ ﻣﯽ ﺷﻮد و ﻧﺘﯿﺠﻪ ﮔﺮد ﻣﯽ ﺷﻮد‬ ‫‪long double‬‬ ‫311‬ ‫‪char‬‬ ‫‪signed char‬‬ ‫اﮔﺮ ﻣﻘﺪار از 721 ﺑﯿﺸﺘﺮ ﺑﺎﺷﺪ ﻣﻘﺼﺪ ﻣﻨﻔﯽ ﻣﯽ ﺷﻮد‬ ‫)‪int (16 bit‬‬ ‫ﺗﺒﺪﯾﻞ اﻧﻮاع‬ ‫ﻣﻨﺒﻊ‬ ‫ﻣﻘﺼﺪ‬ ‫اﻃﻼﻋﺎﺗﯽ ﮐﻪ ﻣﻤﮑﻦ اﺳﺖ از ﺑﯿﻦ ﺑﺮود‬ ‫‪double‬‬ ‫دﻗﺖ ﻋﻼﺋﻢ ﮐﻢ ﻣﯽ ﺷﻮد و ﻧﺘﯿﺠﻪ ﮔﺮد ﻣﯽ ﺷﻮد‬ Program is created in the editor and stored on disk. Disk Preprocessor program processes the code. Compiler Disk Compiler creates object code and stores it on disk. Linker Disk Phases of C++ Programs: Preprocessor 1. Edit 2. Preprocess 3. Compile 4. Link 5. 6. Load Execute Primary Memory Linker links the object code with the libraries, creates an executable file and stores it on disk Loader Disk Loader puts program in memory. . . . . . . Primary Memory CPU . . . . . . CPU takes each instruction and executes it, possibly storing new data values as the program executes. ‫ﻓﺮآﯾﻨﺪ آﻣﺎده ﺳﺎزي و اﺟﺮاي ﺑﺮﻧﺎﻣﻪ‬ Disk Editor 114 ‫ﻓﺮآﯾﻨﺪ آﻣﺎده ﺳﺎزي و اﺟﺮاي ﺑﺮﻧﺎﻣﻪ‬ ‫• وارد ﮐﺮدن ﺑﺮﻧﺎﻣﻪ در ﯾﮏ ﻣﺤﯿﻂ وﯾﺮاﺳﺘﺎري‬ ‫511‬ ‫– در ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎي ++‪ C‬ﺑﺎ ﭘﺴﻮﻧﺪ ‪ cpp‬ذﺧﯿﺮه ﻣﯽ ﺷﻮد.‬ ‫• ﺗﺮﺟﻤﮥ ﺑﺮﻧﺎﻣﻪ‬ ‫– ﺑﻪ ﻣﻨﻈﻮر ﺣﺬف اﺷﮑﺎﻻت ﻧﺤﻮي )‪(Syntax error‬‬ ‫– اﯾﺠﺎد ﻓﺎﯾﻠﯽ ﺑﺎ ﭘﺴﻮﻧﺪ ‪) obj‬ﺑﻪ زﺑﺎن ﻣﺎﺷﯿﻦ و ﻏﯿﺮﻗﺎﺑﻞ اﺟﺮا(‬ ‫• ﭘﯿﻮﻧﺪ زدن )‪(link‬‬ ‫– اﺗﺼﺎل ﺑﺨﺶ ﻫﺎي ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻫﻤﺮاه ﺑﺎ آدرس دﻫﯽ ﮐﺎﻣﻞ‬ ‫– اﯾﺠﺎد ﻓﺎﯾﻠﯽ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ exe‬ﮐﻪ ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ.‬ ‫ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در ++‪C‬‬ ‫ﺳﺎﺧﺘﺎر ﮐﻠﯽ زﺑﺎن ++‪C‬‬ ‫• ﺑﺮﻧﺎﻣﻪ ﻫﺎ از ﺗﻌﺪادي ﮐﻼس و ﺗﺎﺑﻊ ﺗﺸﮑﯿﻞ ﻣﯽ ﺷﻮد.‬ ‫• ﻫﺮ ﺗﺎﺑﻊ ﺑﺮاي ﺣﻞ ﺑﺨﺸﯽ از ﻣﺴﺄﻟﻪ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد.‬ ‫• ﻧﺎﻣﮕﺬاري ﺗﻮاﺑﻊ از ﻗﺎﻧﻮن ﻧﺎﻣﮕﺬاري ﻣﺘﻐﯿﺮﻫﺎ ﭘﯿﺮوي ﻣﯽ ﮐﻨﺪ.‬ ‫• اﻧﻮاع ﺗﻮاﺑﻊ:‬ ‫– ﺗﻮاﺑﻊ ﺗﻌﺮﯾﻔﯽ ﺗﻮﺳﻂ ﮐﺎرﺑﺮ‬ ‫– ﺗﻮاﺑﻊ از ﭘﯿﺶ ﻧﻮﺷﺘﻪ ﺷﺪه‬ ‫611‬ ‫ﺗﺎﺑﻊ اﺻﻠﯽ )(‪main‬‬ ‫ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در ++‪C‬‬ ‫• ﺑﺪﻧﮥ اﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ، ﺗﺎﺑﻌﯽ ﺑﻪ ﻧﺎم ) (‪ main‬اﺳﺖ.‬ ‫– ﺗﻤﺎم ﺑﺮﻧﺎﻣﻪ ﻫﺎي ++‪ C‬ﺑﺎﯾﺪ داراي اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﺷﻨﺪ. )از اﺟﺰاي ﻣﻬﻢ زﺑﺎن(‬ ‫– ﺑﺮاي اﻃﻤﯿﻨﺎن از ﺻﺤﺖ ﻋﻤﻠﮑﺮد ﺗﺎﺑﻊ ‪ main‬ﺑﺎﯾﺪ ﻣﻘﺪاري ﺑﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ‬ ‫اﺟﺮاﮐﻨﻨﺪة ﺑﺎزﮔﺮداﻧﺪه ﺷﻮد. )در ﺑﺮﺧﯽ از ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎ ﺿﺮوري ﻧﯿﺴﺖ(‬ ‫– ﻣﻘﺪار ﺑﺎزﮔﺸﺘﯽ ﺑﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺎﯾﺪ از ﻧﻮع ‪ int‬ﺑﺎﺷﺪ ﻟﺬا ﺧﻮد ﺗﺎﺑﻊ ‪ main‬ﻧﯿﺰ‬ ‫ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت ‪ int‬ﺗﻌﺮﯾﻒ ﺷﻮد:‬ ‫) ( ‪– int main‬‬ ‫– ﻣﻘﺪار ﺑﺎزﮔﺸﺘﯽ در اﻧﺘﻬﺎي ﺑﺮﻧﺎﻣﻪ ﺑﺎ دﺳﺘﻮر ;0 ‪ return‬داده ﻣﯽ ﺷﻮد.‬ ‫– اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﺳﯿﺴﺘﻢ ﻣﻘﺪاري را ﺑﺎزﻧﮕﺮداﻧﺪ:‬ ‫) (‪– void main‬‬ ‫711‬ ‫– دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺑﺮﻧﺎﻣﻪ ﺑﺎ { آﻏﺎز و ﺑﺎ } ﭘﺎﯾﺎن ﻣﯽ ﯾﺎﺑﺪ.‬ ‫ﺗﻮاﺑﻊ از ﭘﯿﺶ ﻧﻮﺷﺘﻪ‬ ‫ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در ++‪C‬‬ ‫• ﻧﻮﺷﺘﻪ ﺷﺪه ﻫﻤﺮاه ﺑﺎ ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎ اراﺋﻪ ﻣﯽ ﺷﻮد‬ ‫811‬ ‫• ﺑﺴﯿﺎري از اﻋﻤﺎل در ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺗﻮﺳﻂ اﯾﻦ ﺗﻮاﺑﻊ اﻧﺠﺎم ﻣﯽ ﺷﻮد.‬ ‫• }ﻣﺜﻼً ﺗﻮاﺑﻌﯽ ﮐﻪ ﺑﻪ ورود داده ﻫﺎ از ﺻﻔﺤﻪ ﮐﻠﯿﺪ و ﻧﻮﺷﺘﻦ آﻧﻬﺎ در‬ ‫ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﻣﺮﺑﻮط اﺳﺖ{‬ ‫• ﺗﻮاﺑﻊ از ﻗﺒﻞ ﻧﻮﺷﺘﻪ ﺷﺪه در ﻓﺎﯾﻠﻬﺎي ‪ header‬ﻗﺮار دارﻧﺪ.‬ ‫• }ﭘﺴﻮﻧﺪ ﻓﺎﯾﻠﻬﺎ ‪ .h‬و در ﺷﺎﺧﮥ ‪ include‬ﻗﺮار دارﻧﺪ{‬ ‫• ﻫﺮ ﺗﺎﺑﻊ ﻣﻮرد اﺳﺘﻔﺎده در ﻓﺎﯾﻞ ‪ header‬ﺧﺎﺻﯽ ﻗﺮار دارد ﮐﻪ ﺑﺎﯾﺪ‬ ‫آن را در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ اﺿﺎﻓﻪ ﮐﻨﯿﻢ.‬ ‫• اﺗﺼﺎل ﻓﺎﯾﻠﻬﺎي ‪ header‬ﺑﻪ ﺑﺮﻧﺎﻣﻪ از ﻃﺮﯾﻖ دﺳﺘﻮر ‪#include‬‬ ‫ﺻﻮرت ﻣﯽ ﮔﯿﺮد. }از دﺳﺘﻮرات ﭘﯿﺶ ﭘﺮدازﻧﺪه{‬ ‫ﻧﮑﺎت ﻣﻬﻢ در ﻣﻮرد ﻓﺎﯾﻞ ﻫﺎي ﺳﺮآﯾﻨﺪ‬ ‫ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در ++‪C‬‬ ‫• ﻣﻌﻤﻮﻻً ﻗﺒﻞ از ﺗﺎﺑﻊ ) (‪ main‬ﻣﯽ آﯾﺪ.‬ ‫• اﯾﻦ دﺳﺘﻮر ﺑﻪ ; ﺧﺘﻢ ﻧﻤﯽ ﺷﻮد.‬ ‫• ﻃﺮﯾﻘﮥ ﻧﻮﺷﺘﻦ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:‬ ‫>ﻧﺎم ﻓﺎﯾﻞ ‪• #include <header‬‬ ‫:‪Example‬‬ ‫>‪#include <iostream.h‬‬ ‫– ﺑﯿﻦ # و ‪ include‬ﻧﺒﺎﯾﺪ ﻓﺎﺻﻠﻪ اي ﺑﺎﺷﺪ.‬ ‫– ذﮐﺮ ﻋﻼﺋﻢ > و < ﺿﺮوري اﺳﺖ.‬ ‫– ﺑﯿﻦ ﻧﺎم ﻓﺎﯾﻞ و ﻋﻼﺋﻢ ﻧﺒﺎﯾﺪ ﻓﺎﺻﻠﻪ اي ﺑﺎﺷﺪ.‬ ‫– ﺮاي اﺿﺎﻓﻪ ﮐﺮدن ﭼﻨﺪ ﻓﺎﯾﻞ ‪ ،header‬ﻫﺮﮐﺪام ﺑﺎ ﯾﮏ دﺳﺘﻮر ‪#include‬‬ ‫911‬ ‫ﻣﺜﺎﻟﯽ از ﺳﺎﺧﺘﺎر ﯾﮏ ﺑﺮﻧﺎﻣﻪ‬ 1 // First_Example.cpp // A first program in C++ 3 #include <iostream> 4 5 // function 6 int main() 7 { 8 Preprocessor directive to include input/output stream Function main returns an header file <iostream>. integer mainLeft brace programmain appears beginsvalue. { begins function Function execution body. exactly once in every C++ Statements end with a program.. semicolon ;. cout << "Welcome to C++!\n"; 9 10 Stream insertion operator. return 0; // indicate that programbrace } successfully Corresponding right ended ends function body. 11 12 C++ ‫ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در‬ 2 Single-line comments. } // end function main Keyword return is one of Welcome to C++! several means to exit function; value 0 indicates program terminated successfully. 120 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫دﺳﺘﻮرات ﭼﺎﭘﯽ ﺧﺮوﺟﯽ‬ ‫• ‪: cout‬ﺑﺮاي ﭼﺎپ اﻃﻼﻋﺎت در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ‬ ‫• ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪iostream.h‬‬ ‫• ﻓﺮﻣﺖ:‬ ‫; ...<< ﻋﺒﺎرت 2 << ﻋﺒﺎرت 1 << ‪• cout‬‬ ‫• ﺑﺮاي ﭼﺎپ ﻣﺘﻦ ﻫﺎ ﺑﺎﯾﺪ آﻧﻬﺎ را در ﮐﻮﺗﯿﺸﻦ )“ ”( ﻗﺮار داد.‬ ‫• ﻣﺘﻦ ﻣﯽ ﺗﻮاﻧﺪ ﺣﺎوي ﮐﺎراﮐﺘﺮ ﮐﻨﺘﺮﻟﯽ ﺑﺎﺷﺪ.‬ ‫– ﺷﮑﻞ ﺧﺮوﺟﯽ اﻃﻼﻋﺎت را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﻨﺪ.‬ ‫– ﮐﺎراﮐﺘﺮﻫﺎي ﮐﻨﺘﺮﻟﯽ ﺑﺎ ﻋﻼﻣﺖ \ ﺷﺮوع ﻣﯽ ﺷﻮﻧﺪ.‬ ‫121‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﮐﺎراﮐﺘﺮﻫﺎي ﮐﻨﺘﺮﻟﯽ‬ ‫ﮐﺎراﮐﺘﺮ‬ ‫ﻋﻤﻞ ﻣﺘﻨﺎﻇﺮ‬ ‫‪\n‬‬ ‫اﻧﺘﻘﺎل ﮐﻨﺘﺮل ﺑﻪ ﺧﻂ ﺟﺪﯾﺪ )‪(new line‬‬ ‫‪\t‬‬ ‫اﻧﺘﻘﺎل ﺑﻪ 8 ﮐﺎراﮐﺘﺮ ﺑﻌﺪي در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ )‪(tab‬‬ ‫"\‬ ‫ﭼﺎپ ﮐﻮﺗﯿﺸﻦ )"(‬ ‫\\‬ ‫‪\v‬‬ ‫‪Back slash‬‬ ‫اﻧﺘﻘﺎل ﮐﻨﺘﺮل ﺑﻪ اﺑﺘﺪاي 8 ﺳﻄﺮ ﺑﻌﺪ‬ ‫‪\b‬‬ ‫ﮐﺎراﮐﺘﺮ ﻗﺒﻞ از ﺧﻮدش را ﭘﺎك ﻣﯽ ﮐﻨﺪ‬ ‫‪\r‬‬ ‫221‬ ‫‪\a‬‬ ‫ﺑﻮق ﺳﯿﺴﺘﻢ را ﺑﻪ ﺻﺪا در ﻣﯽ آورد‬ ‫ﮐﻠﯿﺪ ‪ Enter‬را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﻣﺸﺎﻫﺪه ﻧﺘﺎﯾﺞ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ‬ ‫• ﻧﻤﺎﯾﺶ ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﻪ در ﺻﻔﺤﮥ ﺧﺮوﺟﯽ‬ ‫• اﺳﺘﻔﺎده از ) (‪ getch‬ﺑﺮاي ﻣﺎﻧﺪن در ﺻﻔﺤﮥ ﻧﻤﺎﯾﺶ )ﺑﺮﺧﯽ ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎ(‬ ‫• ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪conio.h‬‬ ‫• ﻣﺜﺎل 3-1: ﻣﺸﺎﻫﺪة ﻋﻤﻠﮑﺮد ﺗﺎﺑﻊ )(‪ getch‬در ﺑﺮﻧﺎﻣﻪ اي ﮐﻪ ﻣﯽ ﺧﻮاﻫﺪ‬ ‫ﻋﺒﺎرت ”‪ “C++ is a good language‬را ﭼﺎپ ﮐﻨﺪ.‬ ‫ﻣﺜﺎل 3-1:‬ ‫1- ﻋﺒﺎرت ‪C++ is a good‬‬ ‫‪ language‬را ﭼﺎپ ﮐﻦ.‬ ‫2- ﯾﮏ ﮐﺎراﮐﺘﺮ از ورودي درﯾﺎﻓﺖ ﮐﻦ.‬ ‫3- ﭘﺎﯾﺎن‬ ‫:1_3 ‪Example‬‬ ‫>‪#include <iostream.h‬‬ ‫>‪#include <conio.h‬‬ ‫{ )(‪int main‬‬ ‫;”.‪cout << “ C++ is a good language‬‬ ‫;)(‪getch‬‬ ‫;0 ‪return‬‬ ‫}‬ ‫.‪C++ is a good language‬‬ ‫321‬ cout ‫ﭼﺎپ اﻃﻼﻋﺎت ﺑﺎ‬ :2-3 ‫ﻣﺜﺎل‬ Example 3_2: #include <iostream.h> #include <conio.h> int main() { int x=10; float y=15.5; cout << “ x = ” << x; cout << “ y = ” << y; getch(); return 0; } y 15.5 ‫ و‬x 10 -1 .‫ را ﭼﺎپ ﮐﻦ‬y ‫ و‬x -2 ‫3- ﭘﺎﯾﺎن‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-2: ﭼﺎپ اﻋﺪاد 01 و 51/5 در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ‬ x = 10 y = 15.5 124 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﭼﺎپ اﻃﻼﻋﺎت ﺑﺎ ‪2 - cout‬‬ ‫• ﻣﺜﺎل 3-3: ﭼﺎپ اﻋﺪاد 01 و 02 در دو ﺳﻄﺮ ﻣﺘﻮاﻟﯽ‬ ‫ﻣﺜﺎل 3-3:‬ ‫‪y‬‬ ‫‪ x‬و 02‬ ‫1- 01‬ ‫2- ‪ x‬و ‪ y‬را ﭼﺎپ ﮐﻦ. )در دو ﺳﻄﺮ ﻣﺘﻮاﻟﯽ(‬ ‫3- ﭘﺎﯾﺎن‬ ‫:3_3 ‪Example‬‬ ‫>‪#include <iostream.h‬‬ ‫>‪#include <conio.h‬‬ ‫)(‪int main‬‬ ‫{‬ ‫;02=‪int x=10, y‬‬ ‫;”‪cout << “ x = ” << x << “\n‬‬ ‫;‪cout << “ y = ” << y‬‬ ‫;)(‪getch‬‬ ‫;0 ‪return‬‬ ‫}‬ ‫01 = ‪x‬‬ ‫02 = ‪y‬‬ ‫521‬ 3 - cout ‫ﭼﺎپ اﻃﻼﻋﺎت ﺑﺎ‬ :4-3 ‫ﻣﺜﺎل‬ Example 3_4: #include <iostream.h> #include <conio.h> int main() { int x=10, y=20; cout << “ x = ” << x << “, y = ” << y << endl; cout << “ sum of squares is : ” << x*x + y*y; getch(); return 0; } y 20 ‫ و‬x 10 -1 .‫ را ﭼﺎپ ﮐﻦ‬y ‫ و‬x -2 .‫ را ﭼﺎپ ﮐﻦ‬x*x+y*y -3 ‫4- ﭘﺎﯾﺎن‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-4: ﭼﺎپ دو ﻋﺪد ﺻﺤﯿﺢ 01و 02 و ﻣﺠﻤﻮع ﻣﺮﺑﻌﺎت آﻧﻬﺎ‬ x = 10 , y = 20 sum of squares is : 500 126 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ﺑﺎ ‪cin‬‬ ‫• ‪: cin‬ﺑﺮاي ﺧﻮاﻧﺪن اﻃﻼﻋﺎت از ﺻﻔﺤﻪ ﮐﻠﯿﺪ‬ ‫• ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪iostream.h‬‬ ‫• ﻓﺮﻣﺖ:‬ ‫; ...>> ﻣﺘﻐﯿﺮ 2 >> ﻣﺘﻐﯿﺮ 1 >> ‪• cin‬‬ ‫– ﺑﺮاي وارد ﮐﺮدن اﻃﻼﻋﺎت ﺑﺎﯾﺪ ﮐﻠﯿﺪ ‪ Enter‬زده ﺷﻮد.‬ ‫– اﮔﺮ ﭼﻨﺪ داده ﺑﺎﯾﺪ ﺑﺎ ﻫﻢ ﺧﻮاﻧﺪه ﺷﻮد، ﺑﺎﯾﺪ ﺑﯿﻦ ﻫﺮ دو داده ﺣﺪاﻗﻞ‬ ‫ﯾﮏ ﻓﺎﺻﻠﻪ ﺑﺎﺷﺪ و در اﻧﺘﻬﺎي آﺧﺮﯾﻦ اﻃﻼﻋﺎت ‪ Enter‬زده ﺷﻮد.‬ ‫721‬ 2 - cin ‫ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ﺑﺎ‬ :5-3 ‫ﻣﺜﺎل‬ Example 3_5: #define PI 3.14 #include <iostream.h> .‫ را ﺑﺨﻮان‬r -1 #include <conio.h> area 3.14*r*r -2 int main() p 2*3.14*r -3 { .‫ را ﭼﺎپ ﮐﻦ‬p ‫ و‬area -4 int r; ‫5- ﭘﺎﯾﺎن‬ float area, p; cout << “Enter the radius : ”; cin >> r; area = PI * r *r; p = 2 * PI * r; cout << “area= “ << area << “perime= “ << p; getch(); return 0; Enter the radius : 5 } area = 78.5 perime = 31.4 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-5: درﯾﺎﻓﺖ ﺷﻌﺎع داﯾﺮه )ﻋﺪد ﺻﺤﯿﺢ( از ورودي و ﻣﺤﺎﺳﺒﻪ و‬ ‫ﻧﻤﺎﯾﺶ ﻣﺴﺎﺣﺖ و ﻣﺤﯿﻂ آن‬ 128 3 - cin ‫ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ﺑﺎ‬ :6-3 ‫ﻣﺜﺎل‬ Example 3_6: #include <iostream.h> #include <conio.h> int main() { int x, y, m; float ave; cout << “Enter three numbers : ”; cin >> x >> y >> m; ave = (float) (x+y+m) / 3; cout << “ave= “ << ave; getch(); return 0; } .‫ را ﺑﺨﻮان‬m ‫ و‬y ‫ و‬x -1 ave (x+y+m)/3 -2 .‫ را ﭼﺎپ ﮐﻦ‬ave -3 ‫5- ﭘﺎﯾﺎن‬ type casting ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-6: ﻣﺤﺎﺳﺒﻪ ﻣﯿﺎﻧﮕﯿﻦ ﺳﻪ ﻋﺪد ﺻﺤﯿﺢ ﮐﻪ از ورودي ﺧﻮاﻧﺪه ﺷﺪه‬ Enter the numbers : 5 20 18 ave = 14.33 129 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﮐﺎر ﺑﺎ ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﺧﺮوﺟﯽ‬ ‫•‬ ‫ﭘﺎك ﮐﺮدن ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ:‬ ‫– ﭘﺎك ﮐﺮدن ﺻﻔﺤﮥ ﻧﻤﺎﯾﺶ ﺑﺮاي ﻣﺸﺎﻫﺪه ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﻪ‬ ‫– اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪clrscr‬‬ ‫– ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪conio.h‬‬ ‫•‬ ‫اﻧﺘﻘﺎل ﻣﮑﺎن ﻧﻤﺎ در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ‬ ‫– ﺑﺮاي درﯾﺎﻓﺖ و ﯾﺎ ﭼﺎپ اﻃﻼﻋﺎت در ﻧﻘﻄﻪ ﺧﺎﺻﯽ از ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ‬ ‫– اﺳﺘﻔﺎده از ﺗﺎﺑﻊ‬ ‫)‪gotoxy(int x, int y‬‬ ‫– ‪ x‬ﺷﻤﺎرة ﺳﺘﻮن و ‪ y‬ﺷﻤﺎرة ﺳﻄﺮ‬ ‫031‬ ‫– ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪conio.h‬‬ 2 - ‫ﮐﺎر ﺑﺎ ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﺧﺮوﺟﯽ‬ Example 3_7: #include <iostream.h> #include <conio.h> int main() { int len, wid, p, s; clrscr(); cout << “Enter length, width: ”; cin >> len >> wid; p = (len+wid) *2; s = len * wid; clrscr(); gotoxy(35,13); cout << “s = “ << s << “ p = “ << p; getch(); return 0; } :7-3 ‫ﻣﺜﺎل‬ .‫ را ﺑﺨﻮان‬wid ‫ و‬len -1 p (len+wid)/2 -2 s len*wid -3 .‫ را ﭼﺎپ ﮐﻦ‬p ‫ و‬s -4 ‫5- ﭘﺎﯾﺎن‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-7: ﻣﺤﺎﺳﺒﻪ ﻣﺤﯿﻂ و ﻣﺴﺎﺣﺖ ﻣﺴﺘﻄﯿﻞ ﺑﺎ درﯾﺎﻓﺖ اﻃﻼﻋﺎت از ورودي و‬ ‫ﺑﺎ ﭘﺎك ﮐﺮدن ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ و ﭼﺎپ اﻃﻼﻋﺎت ﺧﺮوﺟﯽ در ﻣﮑﺎن ﺧﺎص‬ Enter length, width: 20 10 s = 200 p = 60 131 ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫ﺧﻮاﻧﺪن ﮐﺎراﮐﺘﺮﻫﺎ از ورودي‬ ‫231‬ ‫• اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ get‬ﮐﻪ ﻋﻀﻮ ‪cin‬‬ ‫– ﻋﻼوه ﺑﺮ ‪cin‬‬ ‫• ﻓﺎﯾﻞ ﺳﺮآﯾﻨﺪ ﻣﺮﺑﻮﻃﻪ: ‪iostream.h‬‬ ‫• ﻓﺮﻣﺖ:‬ ‫;)(‪• ch = cin.get‬‬ 3 - ‫ﮐﺎر ﺑﺎ ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﺧﺮوﺟﯽ‬ Example 3_8: #include <iostream.h> #include <conio.h> int main() { char ch; clrscr(); cout << “Enter a character: ”; ch = cin.get(); clrscr(); cout << “You typed character: “ << ch; getch(); return 0; } :8-3 ‫ﻣﺜﺎل‬ .‫ را ﺑﺨﻮان‬ch -1 .‫ را ﭼﺎپ ﮐﻦ‬ch -2 ‫3- ﭘﺎﯾﺎن‬ ‫دﺳﺘﻮرات درﯾﺎﻓﺖ و ﭼﺎپ داده ﻫﺎ‬ ‫• ﻣﺜﺎل 3-8: ﻧﻤﺎﯾﺶ ﯾﮏ ﮐﺎراﮐﺘﺮ ﮐﻪ از ورودي ﺧﻮاﻧﺪه ﺷﺪه اﺳﺖ‬ You typed character: Enter a character: b b 133 Some common includes Basic I/O: iostream.h I/O manipulation: iomanip.h Standard Library: stdlib.h Time and Date support: time.h 134 ...
View Full Document

Ask a homework question - tutors are online