الدوال واﻹجراءات

مقدمة

تمكنك الوظائف من تقسيم برنامج إلى عدة أجزاء. وهذا يجنبك الحصول على حجم كبير للدالة Main().
Iفي جامباس, لديك نوعين من "الوظائف":

  • الدوال : دائما ما تعيد قيمة

  • إجراءات : لا تعيد أية قيمة.

الإجراءات

في البداية, لابد أن تكون قد رأيت إجراء. هذا الإجراء إسمه Main() :-) . هذا الإجراء خاص قليلا بسبب كونه أول إجراء يقوم مترجم جامباس بقرائته. وهذه هي طريقة الإعلان عنه :

Sub procedureName(arguments)

End

Arguments allow to pass parameters to the procedure. If you don't need to pass any arguments, then you can let empty brackets. This is an example to show how to use a procedure in a program :

Sub sayHello()

Print "Hello !"

End

Public Sub Main()

sayHello()

End

The result is :

Hello !

This is another example but with arguments this time :

Sub infoUser (firstname As String, age As Integer)

PRINT "Firstname : " & firstname PRINT "Age : " & age

End

Public Sub Main()

Dim firstname As String Dim age As Integer

Print "What is your name ? " Input firstname

Print "How old are you ?" Input age

infoUser(firstname, age)

End

الناتج هو :

What is your name ?
François
How old are you ?
21

Firstname : François
Age : 21

المتغير names can be the same that variable names of arguments. As you can see, Gambas has no problem with that :-) . But it's important to say that aren't the same variables !

الوظائف

تتصرف الوظائف كما الإجراءات إلا أنها تقوم بإعادة ناتج. إستخدامها وتعريفها يتم بنفس طريقة العمل مع الإجراءات. ولكن يجب علينا تحديد نوع القيمة المعادة منها. على سبيل المثال, سنقوم بالطلب من المستخدم إدخال رقم ما , ثم نقوم بعرض مربع ذلك الرقم :

Public Sub Main()

Dim nombre As Integer

Print "Please type a number : " Input nombre

Print "The square of " & nombre & " is " & carre(nombre)

End

Function carre (nombre As Integer) As Integer

Return nombre * nombre 'indicate the value that the function returns.

End

للحصول على القيمة المعادة من وظيفة ما يجب الإعلان عن المتغير ليتم حفظ القيمة بها.

سهولة الوصول

الإجراء Main() تسبقه الكلمة المفتاحية PUBLIC . For this procedure, That's its signature. But for procedures that you're defining youself, this keyword allows to define the accessibility of your procedure. I.e, if you have several جامباس modules, that allows you to call these procedures in others modules.

However, if you want procedures and functions are only called in the same module, you must indicate the PRIVATE keyword in front of your procedures and functions.