آموزش سی شارپ - قسمت ششم

دو مورد تكمیلی در مورد حلقه ها در سی شارپ :

1- هر جایی خواستید به هر دلیلی حلقه را پایان دهید می توانید از دستور break; استفاده كنید. در این حالت به صورت آنی حلقه خاتمه یافته و كدهای ادامه ی برنامه پس از حلقه اجرا می شوند.
2- نحوه ی استفاده از دستور continue : فرض كنید حلقه ی شما در راند 15 خودش است! حالا در این راند شما می خواهید یك سری از دستورات درون حلقه اجرا نشوند و حلقه به راند بعدی منتقل شده و كارش را ادامه دهد. اینجا است كه از دستور continue استفاده می شود. بهتر است به یك مثال ساده در این زمینه توجه كنیم.

مثال : یك برنامه ی سی شارپ جدید console را در VS.NET باز كنید و نام آنرا درابتدا ex11 انتخاب نمایید. سپس كد زیر را درون آن بنویسید :

using System; namespace ex11 { class Class1 { [STAThread] static void Main(string[] args) { Console.WriteLine( "for (int i = 1; i <= 100; i++) -> break at i==5" ); for (int i = 1; i <= 100; i++) { if (i == 5) break; Console.WriteLine(i); } Console.ReadLine(); Console.WriteLine( "for (int i = 1; i <= 10; i++) -> continue if i<9" ); for (int i = 1; i <= 10; i++) { if (i < 9) continue; Console.WriteLine(i); } Console.ReadLine(); } } }

موارد تكمیلی مربوط به رد و بدل كردن مقادیر به/از كلاس ها :

در قسمت بعدی می خواهیم خاصیتی را تعریف كنیم كه یك مقدار را از كاربر می گیرد و در برنامه می توان توسط قسمت های دیگر از آن استفاده كرد.
ابتدا یك متغیر عمومی باید در سطح كلاس تعریف كرد تا مقدار دریافت شده توسط set را در خود نگاه داری كند (در مورد scope متغیرها ( متغیرهای عمومی و محلی و امثال اینها) در هنگام معرفی توابع بیشتر بحث خواهد شد) . سپس از طریق كلمه ی كلیدی value مقدار دریافت شده به متغیر انتساب می یابد و چون در سطح كلاس عمومی است در تمام كلاس قابل درسترسی است.

مثال : یك برنامه ی سی شارپ جدید console را در VS.NET باز كنید و نام آنرا درابتدا ex12 انتخاب نمایید. سپس از منوی پروژه یك كلاس جدید به آن اضافه نمایید (به نام clsDate) و كد زیر را درون آن بنویسید :

using System; namespace ex12 { public class clsDate { private int Year; public clsDate() { } public int setYear { set { Year = value; } } public bool IsLeapYear { get { return System.DateTime.IsLeapYear(Year); } } } }

برای استفاده از آن در متد main برنامه به صورت زیر عمل می كنیم:

using System; namespace ex12 { class Class1 { [STAThread] static void Main(string[] args) { clsDate m_var = new clsDate(); m_var.setYear = 1990; if (m_var.IsLeapYear) Console.WriteLine("1990 is a leap year."); else Console.WriteLine("1990 is not a leap year."); Console.ReadLine(); } } }

توضیحاتی در مورد كد فوق:
1- نحوه ی تعریف متغیر از یك كلاس جزو اساسی ترین قسمت های كار با یك كلاس محسوب می شود كه در قسمت های پیشین نیز معرفی گردید.
2- هنگامی كه از if استفاده می كنیم لزومی ندارد حتما بنویسیم m_var.IsLeapYear==true . همین كه این خاصیت ذكر می شود در وهله ی اول true بودن آن چك خواهد شد.
3- نحوه ی مقدار دهی به یك خاصیت را هم در كد فوق ملاحظه می نمایید. در هنگام استفاده از خاصیت ها نیازی به آوردن پرانتزها () در مقابل نام آنها وجود ندارد.
4- برای مرور ، نحوه ی معرفی خاصیت ها با get نیز بیان گردید. با استفاده از set و get می توان به كلاس ها ، مقادیر متغیرها را پاس كرد و یا مقداری را دریافت نمود.

تعریف متدها در سی شارپ
در این قسمت به یكی از مهمترین مباحث برنامه نویسی سی شارپ می رسیم.
متدها در سی شارپ و یا همان توابع در زبان C ، اعضای یك شیء یا كلاس هستند و مجموعه ای از یك سری از كارها را انجام می دهند. فرض كنید در برنامه ی شما ، قسمتی باید یك عملیات ریاضی خاص را انجام دهد و این قسمت از كد كه شامل چندین خط نیز می گردد باید بارها و بارها در برنامه صدا زده شود. برای نظم بخشیدن به برنامه ، آنها را می توان به صورت توابع بسته بندی كرد و بجای نوشتن چندین خط تكراری، فقط نام این بسته ( تابع ) و پارامترهای آن را فراخوانی نمود.
در سی شارپ یك تابع به صورت زیر تعریف می شود :

(نوع و اسامی پارامترها) نام تابع / نوع خروجی تابع / سطح دسترسی به تابع
}
بدنه ی تابع
{

برای تعریف یك متد یا تابع ابتدا سطح دسترسی به آن مانند public و private سپس نوع خروجی تابع مانند void ( هیچی ) ذكر می گردد كه داخل این پرانتزها می توان ورودی های تابع یا بقولی آرگومان های ورودی را معرفی كرد. سپس تابع باید با { شروع و با یك } خاتمه یابد.

برای مثال :

public int myFunc( int x ) { ...…. }

هر تابعی می تواند صفر تا تعداد بیشماری آرگومان ورودی و صفر تا تعداد بیشماری خروجی داشته باشد. بوسیله یك تابع می توان پیچیدگی كار را مخفی كرد و صرفا با صدا زدن نام آن ، یك سری از عملیات را انجام داد. گاهی از اوقات لازم می شود دو یا چند تابع با یك نام داشته باشیم بطوریكه پارامترهای ورودی یا مقادیر خروجی و یا نوع آرگومان های ورودی آنها با هم متفاوت باشد به این كار overloading می گویند.
بسیاری از كلاس های دات نت فریم ورك متدها و یا توابع مفید حاضر و آماده ای را دارند. برای مثال كلاس DateTime ، متدی به نام ToLongDatastring دارد كه تاریخ را به صورت یك رشته طولانی بر می گرداند.

توابع void :
توابعی كه با نوع void معرفی می شوند هیچ خروجی ندارند و در زبان ویژوال بیسیك به آْنها sub و در دلفی به آنها procedure می گویند.

بازگرداندن یك مقدار از یك تابع :
پس از اینكه عملیات یك مجموعه از كدها درون تابع به پایان رسید با استفاده از كلمه ی return می توان خروجی تابع را معرفی كرد. لازم به ذكر است ، هرجایی این كلمه ی return ذكر شود كار تابع خاتمه می یابد.
بهتر است موارد فوق را با چند مثال مرور كنیم :

مثال : یك برنامه ی سی شارپ جدید console را در VS.NET باز كنید و نام آنرا درابتدا ex13 انتخاب نمایید. در اینجا می خواهیم تابعی را تعریف كنیم كه سه برابر جذر یك عدد را بر می گرداند.

using System; namespace ex13 { class Class1 { [STAThread] static void Main(string[] args) { Console.WriteLine( int3SQL(3) ); Console.ReadLine(); } public static double int3SQL( double intInput ) { double i=0; i = Math.Sqrt( intInput ); return i; } } }

توضیحاتی در مورد كد فوق :
1- از شیء Math در سی شارپ می توان برای انجام یك سری عملیات ریاضی ابتدایی استفاده كرد. در اینجا از متد جذر گرفتن آن استفاده شده است.
2- در تعریف تابع خودمان از كلمه ی كلیدی static استفاده شده است. درون تابع Main نمی توان توابع غیر استاتیك را فراخوانی كرد. فعلا این نكته را بخاطر را داشته باشید تا در مقالات بعدی بیشتر راجع به آن صحبت شود.
3- بد نیست تابع تعریف شده را كمی بیشتر آنالیز كنیم :

public static double int3SQL( double intInput ) { double i=0; i = Math.Sqrt( intInput ); return i; }

ابتدا سطح دسترسی به تابع ذكر شده است. پابلیك ، یعنی این تابع خارج از كلاس یك برنامه نیز قابل دسترسی است. سپس از كلمه ی static استفاده گردیده كه توضیح مختصری را در مورد آن ملاحظه كردید. در ادامه نوع خروجی تابع كه در اینجا double می باشد معرفی گردیده است. دقت كنید كه حتما باید نوع تعریف شده با مقداری كه یك تابع بر می گرداند یكسان باشد و گرنه با یك خطا برنامه متوقف می شود. سپس نام تابع تعریف شده است. داخل پرانتز ها نوع و نام آرگومانی ارائه شده است كه در بدنه ی تابع استفاده می گردد. اگر به تعداد بیشتری پارامتر و یا آرگومان نیاز بود می توان آنها را با , از هم جدا كرد.
پس از اینكه عملیات تابع خاتمه می یابد با استفاده از return این خروجی را معرفی می نماییم.
برای استفاده از این تابع به سادگی نام تابع و سپس پرانتزها به همراه یك عدد دلخواه را می نویسم كه آنرا در متد Main برنامه می توان مشاهده كرد.

تعریف توابع در كلاس های دیگر برنامه و نحوه ی استفاده از آنها :

یكی از زیبایی های برنامه نویسی شیء گرا نظم و ترتیب و بسته بندی كارها می باشد كه اصطلاحا در اینجا به آن encapsulation می گویند. یعنی ما یك سری از توابع و خواص را درون كپسولی به نام كلاس قرار می دهیم تا به سادگی بارها و بارها از آن استفاده نماییم.
برای اینكار به سادگی یك توابع را به صورت معمول درون كلاس تعریف می نماییم و سپس همانند خواص كه در مورد آنها صحبت شد ، از توابع می توان استفاده كرد با این تفاوت كه هنگام كار با توابع حتی اگر آنها هیچ آرگومان و یا پارامتر ورودی هم نداشته باشند ذكر پرانتزها الزامی است.

مثالی دیگر در این زمینه :

مثال : یك برنامه ی سی شارپ جدید console را در VS.NET باز كنید و نام آنرا درابتدا ex14 انتخاب نمایید. سپس از منوی پروژه یك كلاس جدید را به برنامه اضافه نمایید (نام آنرا clsTools بگذارید) .

using System; namespace ex14 { public class clsTools { public clsTools() { } public uint intCalc ( uint a , uint b ) { uint c = Math.Min (a,b); double x = Math.Sqrt(c) ; uint w = Convert.ToUInt32 ( x); return w; } } }

سپس در متد Main برنامه می توان به صورت زیر از آن استفاده كرد :

using System; namespace ex14 { class Class1 { [STAThread] static void Main(string[] args) { clsTools m_var = new clsTools(); Console.WriteLine( m_var.intCalc(4,9)); Console.ReadLine(); } } }

توضیحاتی در مورد كد فوق :
1- تابع intCalc ما دو عدد صحیح مثبت را می گیرد و سپس جذر كوچكترین دو عدد ورودی را محاسبه می كند.
2- برای تبدیل نوع های عددی مختلف به هم می توان از شیء Convert استفاده كرد.
3- بدون استفاده از شیء Convert یكبار برنامه را اجرا كنید و دلیل خطای بوجود آمده را بیان نمایید.


مطالب مشابه :


عضویت در بخش:آموزش برنامه نویسی سی شارپ c# windows Application

شهر سی شارپ - عضویت در بخش:آموزش برنامه نویسی سی شارپ c# windows Application - آموزش گرافیک در سی شارپ




آموزش سی شارپ - قسمت ششم

توضیحاتی در مورد كد فوق : 1- از شیء Math در سی شارپ می توان برای انجام یك سری عملیات ریاضی




آموزش تصویری سی شارپ

وبلاگ آموزشی - آموزش تصویری سی شارپ - آموزش مطالب درسی و اطلاعیه های مهم دانشجویی و نمرات دروس




آموزش سی‌شارپ C#

مجله کامپیوتر - آموزش سی‌شارپ c# - مجله ای برای همه




برچسب :