ﺗﻌﺮﻳﻒ ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ‬

‫در اﻳﻦ ﻗﺴﻤﺖ ﺑﻪ ﻳﻜﻲ از ﻣﮫﻤﺘﺮﻳﻦ ﻣﺒﺎﺣﺚ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﻲ ﺷﺎرپ ﻣﻲ رﺳﯿﻢ.‬
‫ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ و ﻳﺎ ھﻤﺎن ﺗﻮاﺑﻊ در زﺑﺎن ‪ ، C‬اﻋﻀﺎی ﻳﻚ ﺷﻲء ﻳﺎ ﻛﻼس ھﺴﺘﻨﺪ و ﻣﺠﻤﻮﻋﻪ ای از ﻳﻚ ﺳـﺮی‬ ‫از ﻛﺎرھﺎ را اﻧﺠﺎم ﻣﻲ دھﻨﺪ. ﻓﺮض ﻛﻨﯿﺪ در ﺑﺮﻧﺎﻣﻪ ی ﺷﻤﺎ ، ﻗﺴﻤﺘﻲ ﺑﺎﻳﺪ ﻳﻚ ﻋﻤﻠﯿﺎت رﻳﺎﺿﻲ ﺧـﺎص را اﻧﺠـﺎم دھـﺪ و‬ ‫اﻳﻦ ﻗﺴﻤﺖ از ﻛﺪ ﻛﻪ ﺷـﺎﻣﻞ ﭼﻨـﺪﻳﻦ ﺧـﻂ ﻧﯿـﺰ ﻣـﻲ ﮔـﺮدد ﺑﺎﻳـﺪ ﺑﺎرھـﺎ و ﺑﺎرھـﺎ در ﺑﺮﻧﺎﻣـﻪ ﺻـﺪا زده ﺷـﻮد. ﺑـﺮای ﻧﻈـﻢ‬ ‫ﺑﺨﺸﯿﺪن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ، آﻧﮫﺎ را ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﺑﺴﺘﻪ ﺑﻨﺪی ﻛﺮد و ﺑﺠﺎی ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺧﻂ ﺗﻜـﺮاری، ﻓﻘـﻂ ﻧـﺎم‬ ‫اﻳﻦ ﺑﺴﺘﻪ ( ﺗﺎﺑﻊ ) و ﭘﺎراﻣﺘﺮھﺎی آن را ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﻮد.‬

‫در ﺳﻲ ﺷﺎرپ ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد :‬
‫ ‫ (ﻧﻮع و اﺳﺎﻣﻲ ﭘﺎراﻣﺘﺮھﺎ) ﻧﺎم ﺗﺎﺑﻊ ﻧﻮع ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬ ‬ﺳﻄﺢ دﺳﺘﺮﺳﻲ ﺑﻪ ﺗﺎﺑﻊ‬
‫}
‫ﺑﺪﻧﻪ ی ﺗﺎﺑﻊ‬
‫{


‫ﺑﺮای ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﺪ ﻳﺎ ﺗﺎﺑﻊ اﺑﺘﺪا ﺳﻄﺢ دﺳﺘﺮﺳﻲ ﺑﻪ آن ﻣﺎﻧﻨﺪ ‪ public‬و ‪ private‬ ﺳﭙﺲ ﻧﻮع ﺧﺮوﺟـﻲ ﺗـﺎﺑﻊ ﻣﺎﻧﻨـﺪ Void
‫‪ ) ‬ھﯿﭽﻲ ) ذﻛﺮ ﻣﻲ ﮔﺮدد ﻛﻪ داﺧﻞ اﻳﻦ ﭘﺮاﻧﺘﺰھﺎ ﻣﻲ ﺗﻮان ورودی ھﺎی ﺗـﺎﺑﻊ ﻳـﺎ ﺑﻘـﻮﻟﻲ آرﮔﻮﻣـﺎن ھـﺎی ورودی را ‬ ‫ﻣﻌﺮﻓﻲ ﻛﺮد. ﺳﭙﺲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺑﺎ { ﺷﺮوع و ﺑﺎ ﻳﻚ } ﺧﺎﺗﻤﻪ ﻳﺎﺑﺪ.‬

ﺑﺮای ﻣﺜﺎل :‬

‫( ‪public int myFunc( int x‬‬
‫}‬
‫.…...‬
‫{

‫ھﺮ ﺗﺎﺑﻌﻲ ﻣﻲ ﺗﻮاﻧﺪ ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری آرﮔﻮﻣـﺎن ورودی و ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری ﺧﺮوﺟـﻲ داﺷـﺘﻪ ﺑﺎﺷـﺪ.‬ ‫ﺑﻮﺳﯿﻠﻪ ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﺗﻮان ﭘﯿﭽﯿﺪﮔﻲ ﻛﺎر را ﻣﺨﻔﻲ ﻛﺮد و ﺻﺮﻓﺎ ﺑﺎ ﺻﺪا زدن ﻧﺎم آن ، ﻳﻚ ﺳﺮی از ﻋﻤﻠﯿﺎت را اﻧﺠـﺎم داد. ‫ﮔﺎھﻲ از اوﻗﺎت ﻻزم ﻣﻲ ﺷﻮد دو ﻳﺎ ﭼﻨﺪ ﺗﺎﺑﻊ ﺑﺎ ﻳﻚ ﻧﺎم داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺑﻄﻮرﻳﻜﻪ ﭘﺎراﻣﺘﺮھﺎی ورودی ﻳﺎ ﻣﻘﺎدﻳﺮ ﺧﺮوﺟـﻲ ‬ ‫و ﻳﺎ ﻧﻮع آرﮔﻮﻣﺎن ھﺎی ورودی آﻧﮫﺎ ﺑﺎ ھﻢ ﻣﺘﻔﺎوت ﺑﺎﺷﺪ ﺑﻪ اﻳﻦ ﻛﺎر ‪ overloading‬ ﻣﻲ ﮔﻮﻳﻨﺪ.‬
‫ﺑﺴﯿﺎری از ﻛﻼس ھﺎی دات ﻧـﺖ ﻓـﺮﻳﻢ ورک ﻣﺘـﺪھﺎ و ﻳـﺎ ﺗﻮاﺑـﻊ ﻣﻔﯿـﺪ ﺣﺎﺿـﺮ و آﻣـﺎده ای را دارﻧـﺪ. ﺑـﺮای ﻣﺜـﺎل ﻛـﻼس‬
‫‪ ، DateTime‬ﻣﺘﺪی ﺑﻪ ﻧﺎم ‪ ToLongDatastring‬ دارد ﻛﻪ ﺗﺎرﻳﺦ را ﺑﻪ ﺻﻮرت ﻳﻚ رﺷﺘﻪ ﻃﻮﻻﻧﻲ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.‬


‫ﺗﻮاﺑﻊ ‪: void‬‬

‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﺎ ﻧﻮع ‪ void‬ ﻣﻌﺮﻓﻲ ﻣﻲ ﺷﻮﻧﺪ ھﯿﭻ ﺧﺮوﺟﻲ ﻧﺪارﻧﺪ و در زﺑﺎن وﻳﮋوال ﺑﯿﺴﯿﻚ ﺑـﻪ آْﻧﮫـﺎ ‪ sub‬و در دﻟﻔـﻲ ﺑـﻪ ‫آﻧﮫﺎ ‪ procedure‬ ﻣﻲ ﮔﻮﻳﻨﺪ.‬


ﺑﺎزﮔﺮداﻧﺪن ﻳﻚ ﻣﻘﺪار از ﻳﻚ ﺗﺎﺑﻊ :‬

‫ﭘﺲ از اﻳﻨﻜـﻪ ﻋﻤﻠﯿـﺎت ﻳـﻚ ﻣﺠﻤﻮﻋـﻪ از ﻛـﺪھﺎ درون ﺗـﺎﺑﻊ ﺑـﻪ ﭘﺎﻳـﺎن رﺳـﯿﺪ ﺑـﺎ اﺳـﺘﻔﺎده از ﻛﻠﻤـﻪ ی ‪ return‬ ﻣـﻲ ﺗـﻮان‬
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ را ﻣﻌﺮﻓﻲ ﻛﺮد. ﻻزم ﺑﻪ ذﻛﺮ اﺳﺖ ، ھﺮﺟﺎﻳﻲ اﻳﻦ ﻛﻠﻤﻪ ی ‪ return‬ذﻛﺮ ﺷﻮد ﻛﺎر ﺗﺎﺑﻊ ﺧﺎﺗﻤﻪ ﻣﻲ ﻳﺎﺑﺪ.‬


ﮫﺘﺮ اﺳﺖ ﻣﻮارد ﻓﻮق را ﺑﺎ ﭼﻨﺪ ﻣﺜﺎل ﻣﺮور ﻛﻨﯿﻢ :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ۳۱‪ ex‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. در‬ ‫اﻳﻨﺠﺎ ﻣﻲ ﺧﻮاھﯿﻢ ﺗﺎﺑﻌﻲ را ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ ﻛﻪ ﺳﻪ ﺑﺮاﺑﺮ ﺟﺬر ﻳﻚ ﻋﺪد را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.‬

‫;‪using System‬‬

‫‪namespace ex۱۳‬‬
‫}‬
‪class Class۱‬‬
}‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫;( (۳)‪Console.WriteLine( int۳SQL‬‬
‫;()‪Console.ReadLine‬‬
‫{‬

( ‪public static double int۳SQL( double intInput‬‬
‫}
‫;۰=‪double i‬‬
‫;( ‪i = Math.Sqrt( intInput‬‬
‫;‪return i‬‬
{

‫{‬
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫١- از ﺷﻲء ‪ Math‬ در ﺳﻲ ﺷﺎرپ ﻣﻲ ﺗﻮان ﺑﺮای اﻧﺠﺎم ﻳﻚ ﺳﺮی ﻋﻤﻠﯿـﺎت رﻳﺎﺿـﻲ اﺑﺘـﺪاﻳﻲ اﺳـﺘﻔﺎده ﻛـﺮد. در‬ ‫اﻳﻨﺠﺎ از ﻣﺘﺪ ﺟﺬر ﮔﺮﻓﺘﻦ آن اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ.‬
‫٢- در ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ ﺧﻮدﻣﺎن از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ static‬اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ. درون ﺗﺎﺑﻊ ‪ Main‬ﻧ ﻤﻲ ﺗﻮان ﺗﻮاﺑـﻊ‬ ‫ﻏﯿﺮ اﺳﺘﺎﺗﯿﻚ را ﻓﺮاﺧﻮاﻧﻲ ﻛﺮد. ﻓﻌﻼ اﻳﻦ ﻧﻜﺘﻪ را ﺑﺨﺎﻃﺮ را داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺗﺎ در ﻣﻘﺎﻻت ﺑﻌﺪی ﺑﯿﺸﺘﺮ راﺟـﻊ ﺑـﻪ ‫آن ﺻﺤﺒﺖ ﺷﻮد.‬