جلسه ششم(آشنایی با تابع)

در VB دو نوع تابع وجود دارد. یکی سابروتین که هیچ مقدار بازگشتی ندارد و دیگری فانکشن که یک مقدار بازگشتی. خود VB هم یکسری تابع داخلی دارد. مثلا تابع LoadPicture( ) برای قرار دادن تصویر در ابزارهایی است که توانایی نمایش تصویر را دارند. ما هم می توانیم برای خود، تابع تعریف کنیم.فایده تابع ها این است که می توان کد برنامه را دسته بندی کرد و هر وظیفه را به تابعی واگذار کرد.اشکال زدایی از برنامه آسان می شود. چون اگر برنامه در جایی خواسته ی ما را برآورده نکرد می دانیم  این وظیفه مربوط به کدام قسمت است. اگر برنامه به کرات نیاز به اجرای یکسری کد داشته باشد می توان آن را در یک تابع نوشت و بعد آن را در مواقع مورد نیاز فراخوانی کرد. مثلا می توانیم تابعی برای رسم مستطیل بنویسیم که ابعاد آن را به عنوان ورودی دریافت کرده وآن را رسم کند.VB فایل های خاصی را برای نوشتن توابع اختصاص داده است که به آن ماژول می گویند. با وجود این فایل ها می توانید تابع هایی را که کاربرد زیادی دارد در این فایل ها ذخیره کرده ودر برنامه های مختلف از آنها استفاده کرد و در وقت صرفه جویی کرد.برای ایجاد این فایل ها روی پنجره Project کلید راست را فشار دهید و از قسمت Add ، Module را انتخاب کنید.

پنجره Add Module باز می شود.از برگه New می توانید ماژول جدید به برنامه اضافه کنید. از برگه Existing می توانید فایل هایی را قبلا نوشته اید به برنامه اضافه کنید.در این جلسه با هم برنامه ای می نویسیم تا با شیوه ایجاد تابع آشنا شوید. این برنامه ریشه معادله درجه 2 را محاسبه می کند. ابتدا کنترل ها را بصورتی که در تصویر می بینید به فرم اضافه کنید و خواص آن را مطابق جدول زیر ست کنید.Form          Name             frmRoot          Caption          Root TextBox                Name             txtX2          Text               Empty          Name             txtX1          Text               Empty          Name             txtX0          Text               EmptyLabel          Name             lblResult          BorderStyle   2-FixedSingle          BackColor     HighLight TextCommand          Name             cmdOK          Caption         OK          Name             cmdExit          Caption         Exit  بقیه اشیائی که در صفحه فرم می بینید همه Label هستند. بعد از آماده کردن فرم یک ماژول به برنامه اضافه کنید و نام آن را mduRoot بگذارید.در آن کد زیر را بنویسید.Public Function Delta(X2 As Integer,X1 As Integer,X0 As Integer)As Integer   Delta = (X1 ^ 2) - (4 * X2 * X0)End Functionاین یک فانکشن است که به صورت عمومی(Public)  تعریف شده است ، سه مقدار ورودی می گیرد که از نوع Integer است. فانکشن باید یک مقدار را به برنامه اصلی برگرداند. این مقدار برگشتی از نوع Integer است. مقداری را که می خواهیم به برنامه اصلبی برگردانیم باید ان را به متغییری هم نام با نام فانکشن نسبت دهیم. این فانکشن دلتای معادله را محاسبه می کند.بعد از فانکشن کد زیر را اضافه کنید.Public Sub Root(Delta As Integer, X2 As Integer, X1 As Integer)   Select Case (Delta)          Case Is < 0               frmRoot.lblResult.Caption = "Dose not have Result"          Case Is = 0               frmRoot.lblResult.Caption = (X1 * (-1) + Sqr(Delta)) / (2 * X2)          Case Is > 0

               frmRoot.lblResult.Caption=Str((X1*(-1)+Sqr(Delta))/(2* X2)) + "," _  + Str((X1 * (-1) - Sqr(Delta)) / (2 * X2))

   End Select
End Sub این یک سابروتین است که مسئولیت پیدا کردن ریشه ها را بر عهده دارد.این سابروتین سه ورودی از نوع Integer می گیرد. ابتدا بررسی می کند که دلتا کوچکتر از صفر نباشد. Sqr که در این تابع استفاده شده یکی از توابع داخلی VB است که مقدار جذر عدد داخل پرانتز خود را بر می گرداند. Str هم عدد داخل پرانتز خود را به متن تبدیل می کند.در ادامه برای رویداد Click کنترل های cmdOK و cmdExit کد زیر را بنویسید.Private Sub cmdExit_Click()    EndEnd Sub Private Sub cmdOK_Click()   Dim intDelta As Integer   intDelta = mduRoot.Delta(txtX2.Text, txtX1.Text, txtX0.Text)   Call mduRoot.Root(intDelta, txtX2.Text, txtX1.Text)End Subمتغییری تعریف کردیم تامقدار دلتای معادله را از فانکشن Delta بگیرد و در خود نگه دارد. ترتیب اجرای برنامه به این صورت است که ابتدا فانکشن اجرا می شود و مقدار برگشتی در متغییر intDelta ذخیره می شود. سپس برای بدست آوردن ریشه ها سابروتین Root به وسیله دستور Call فراخوانی می شود. برای اینکه با شرایطی از تابع خارج شویم دستور زیر را می نویسیم:Exit Sub یا Functionبا اینکه این برنامه معرف خوبه برای معرفی قابلیت های تابع نیست اما برای اشنا شدن با روش ساختن تابع مناسب است.   

  
نویسنده : ali gooliof ; ساعت ۱۱:٥٩ ‎ب.ظ روز ۱۳۸٧/٢/٦
تگ ها :