درس هشتم - بخش اول
در اﻳﻦ ﻗﺴﻤﺖ ﺑﻪ ﻳﻜﻲ از ﻣﮫﻤﺘﺮﻳﻦ ﻣﺒﺎﺣﺚ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﻲ ﺷﺎرپ ﻣﻲ رﺳﯿﻢ.
ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ و ﻳﺎ ھﻤﺎن ﺗﻮاﺑﻊ در زﺑﺎن ، Cاﻋﻀﺎی ﻳﻚ ﺷﻲء ﻳﺎ ﻛﻼس ھﺴﺘﻨﺪ و ﻣﺠﻤﻮﻋﻪ ای از ﻳﻚ ﺳـﺮی از ﻛﺎرھﺎ را اﻧﺠﺎم ﻣﻲ دھﻨﺪ. ﻓﺮض ﻛﻨﯿﺪ در ﺑﺮﻧﺎﻣﻪ ی ﺷﻤﺎ ، ﻗﺴﻤﺘﻲ ﺑﺎﻳﺪ ﻳﻚ ﻋﻤﻠﯿﺎت رﻳﺎﺿﻲ ﺧـﺎص را اﻧﺠـﺎم دھـﺪ و اﻳﻦ ﻗﺴﻤﺖ از ﻛﺪ ﻛﻪ ﺷـﺎﻣﻞ ﭼﻨـﺪﻳﻦ ﺧـﻂ ﻧﯿـﺰ ﻣـﻲ ﮔـﺮدد ﺑﺎﻳـﺪ ﺑﺎرھـﺎ و ﺑﺎرھـﺎ در ﺑﺮﻧﺎﻣـﻪ ﺻـﺪا زده ﺷـﻮد. ﺑـﺮای ﻧﻈـﻢ ﺑﺨﺸﯿﺪن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ، آﻧﮫﺎ را ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﺑﺴﺘﻪ ﺑﻨﺪی ﻛﺮد و ﺑﺠﺎی ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺧﻂ ﺗﻜـﺮاری، ﻓﻘـﻂ ﻧـﺎم اﻳﻦ ﺑﺴﺘﻪ ( ﺗﺎﺑﻊ ) و ﭘﺎراﻣﺘﺮھﺎی آن را ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﻮد.
در ﺳﻲ ﺷﺎرپ ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد :
}
ﺑﺪﻧﻪ ی ﺗﺎﺑﻊ
{
ﺑﺮای ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﺪ ﻳﺎ ﺗﺎﺑﻊ اﺑﺘﺪا ﺳﻄﺢ دﺳﺘﺮﺳﻲ ﺑﻪ آن ﻣﺎﻧﻨﺪ publicو private ﺳﭙﺲ ﻧﻮع ﺧﺮوﺟـﻲ ﺗـﺎﺑﻊ ﻣﺎﻧﻨـﺪ Void
) ھﯿﭽﻲ ) ذﻛﺮ ﻣﻲ ﮔﺮدد ﻛﻪ داﺧﻞ اﻳﻦ ﭘﺮاﻧﺘﺰھﺎ ﻣﻲ ﺗﻮان ورودی ھﺎی ﺗـﺎﺑﻊ ﻳـﺎ ﺑﻘـﻮﻟﻲ آرﮔﻮﻣـﺎن ھـﺎی ورودی را ﻣﻌﺮﻓﻲ ﻛﺮد. ﺳﭙﺲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺑﺎ { ﺷﺮوع و ﺑﺎ ﻳﻚ } ﺧﺎﺗﻤﻪ ﻳﺎﺑﺪ.
ﺑﺮای ﻣﺜﺎل :
}
.…...
{
ھﺮ ﺗﺎﺑﻌﻲ ﻣﻲ ﺗﻮاﻧﺪ ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری آرﮔﻮﻣـﺎن ورودی و ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری ﺧﺮوﺟـﻲ داﺷـﺘﻪ ﺑﺎﺷـﺪ. ﺑﻮﺳﯿﻠﻪ ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﺗﻮان ﭘﯿﭽﯿﺪﮔﻲ ﻛﺎر را ﻣﺨﻔﻲ ﻛﺮد و ﺻﺮﻓﺎ ﺑﺎ ﺻﺪا زدن ﻧﺎم آن ، ﻳﻚ ﺳﺮی از ﻋﻤﻠﯿﺎت را اﻧﺠـﺎم داد. ﮔﺎھﻲ از اوﻗﺎت ﻻزم ﻣﻲ ﺷﻮد دو ﻳﺎ ﭼﻨﺪ ﺗﺎﺑﻊ ﺑﺎ ﻳﻚ ﻧﺎم داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺑﻄﻮرﻳﻜﻪ ﭘﺎراﻣﺘﺮھﺎی ورودی ﻳﺎ ﻣﻘﺎدﻳﺮ ﺧﺮوﺟـﻲ و ﻳﺎ ﻧﻮع آرﮔﻮﻣﺎن ھﺎی ورودی آﻧﮫﺎ ﺑﺎ ھﻢ ﻣﺘﻔﺎوت ﺑﺎﺷﺪ ﺑﻪ اﻳﻦ ﻛﺎر overloading ﻣﻲ ﮔﻮﻳﻨﺪ.
ﺑﺴﯿﺎری از ﻛﻼس ھﺎی دات ﻧـﺖ ﻓـﺮﻳﻢ ورک ﻣﺘـﺪھﺎ و ﻳـﺎ ﺗﻮاﺑـﻊ ﻣﻔﯿـﺪ ﺣﺎﺿـﺮ و آﻣـﺎده ای را دارﻧـﺪ. ﺑـﺮای ﻣﺜـﺎل ﻛـﻼس
، DateTimeﻣﺘﺪی ﺑﻪ ﻧﺎم ToLongDatastring دارد ﻛﻪ ﺗﺎرﻳﺦ را ﺑﻪ ﺻﻮرت ﻳﻚ رﺷﺘﻪ ﻃﻮﻻﻧﻲ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.
ﺗﻮاﺑﻊ : void
ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﺎ ﻧﻮع void ﻣﻌﺮﻓﻲ ﻣﻲ ﺷﻮﻧﺪ ھﯿﭻ ﺧﺮوﺟﻲ ﻧﺪارﻧﺪ و در زﺑﺎن وﻳﮋوال ﺑﯿﺴﯿﻚ ﺑـﻪ آْﻧﮫـﺎ subو در دﻟﻔـﻲ ﺑـﻪ آﻧﮫﺎ procedure ﻣﻲ ﮔﻮﻳﻨﺪ.
ﺑﺎزﮔﺮداﻧﺪن ﻳﻚ ﻣﻘﺪار از ﻳﻚ ﺗﺎﺑﻊ :
ﭘﺲ از اﻳﻨﻜـﻪ ﻋﻤﻠﯿـﺎت ﻳـﻚ ﻣﺠﻤﻮﻋـﻪ از ﻛـﺪھﺎ درون ﺗـﺎﺑﻊ ﺑـﻪ ﭘﺎﻳـﺎن رﺳـﯿﺪ ﺑـﺎ اﺳـﺘﻔﺎده از ﻛﻠﻤـﻪ ی return ﻣـﻲ ﺗـﻮان
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ را ﻣﻌﺮﻓﻲ ﻛﺮد. ﻻزم ﺑﻪ ذﻛﺮ اﺳﺖ ، ھﺮﺟﺎﻳﻲ اﻳﻦ ﻛﻠﻤﻪ ی returnذﻛﺮ ﺷﻮد ﻛﺎر ﺗﺎﺑﻊ ﺧﺎﺗﻤﻪ ﻣﻲ ﻳﺎﺑﺪ.
ﮫﺘﺮ اﺳﺖ ﻣﻮارد ﻓﻮق را ﺑﺎ ﭼﻨﺪ ﻣﺜﺎل ﻣﺮور ﻛﻨﯿﻢ :
ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ consoleرا در VS.NETﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ۳۱ exاﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. در اﻳﻨﺠﺎ ﻣﻲ ﺧﻮاھﯿﻢ ﺗﺎﺑﻌﻲ را ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ ﻛﻪ ﺳﻪ ﺑﺮاﺑﺮ ﺟﺬر ﻳﻚ ﻋﺪد را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.
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ﻧ ﻤﻲ ﺗﻮان ﺗﻮاﺑـﻊ ﻏﯿﺮ اﺳﺘﺎﺗﯿﻚ را ﻓﺮاﺧﻮاﻧﻲ ﻛﺮد. ﻓﻌﻼ اﻳﻦ ﻧﻜﺘﻪ را ﺑﺨﺎﻃﺮ را داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺗﺎ در ﻣﻘﺎﻻت ﺑﻌﺪی ﺑﯿﺸﺘﺮ راﺟـﻊ ﺑـﻪ آن ﺻﺤﺒﺖ ﺷﻮد.