O que é um parâmetro? ( What is a parameter? )Um parâmetro é um valor enviado a um procedimento durante a chamada do procedimento.
O exemplo a seguir é usado para chamar a procedure Multiply10 e passar o valor que será tratado na procedure como parâmetro:Você pode passar 0 ou vários valores como parâmetros para um procedimento. Esses valores podem ser de qualquer tipo (como com variáveis). O parâmetro é especificado na declaração do procedimento no formato de uma variável. Por exemplo, para o procedimento Multiply10 , o código do procedimento é:PROCEDURE Multiply10(P)
P=P*10
P é o parâmetro esperado pelo procedimento.
| | |
 | Observação | Para especificar a função do parâmetro no procedimento, você tem a capacidade de typecast o parâmetro na declaração do procedimento.Por exemplo, para usar apenas valores numéricos, você pode declarar:PROCEDURE Multiply10(P is numeric) |
No exemplo a seguir, o procedimento de multiplicação espera dois parâmetros inteiros e retorna o resultado da multiplicação.O código do procedimento é o seguinte:PROCEDURE Multiplication(Nb1 is int, Nb2 is int)
MyResult is int
MyResult = Nb1 * Nb2
RESULT MyResult
O código usado para chamar o procedimento é o seguinte:res is int
res = Multiplication(10, 50)
// Res is equal to 500
Como usar os parâmetros?
Por padrão, a passagem de parâmetros em WLanguage é realizada por referência (ou por endereço). O parâmetro no procedimento representa (referências) a variável passada durante a chamada.
Portanto, quando uma instrução de procedimento modifica o valor do parâmetro, o valor da variável correspondente a este parâmetro é modificado.
Exemplo:
- O código do procedimento é o seguinte:
PROCEDURE Test_address(P1)
P1 = P1 * 2
- O código usado para chamar o procedimento é o seguinte:
T is int
T = 12 // T is equal to 12 before the call
Test_address(T)
// T is equal to 24 after the call
Para evitar a modificação do valor da variável correspondente ao parâmetro, os parâmetros devem ser passados por valor . Passar parâmetros por valor permite que você controle uma cópia do valor do parâmetro. Se o código do procedimento modifica o valor da variável, o valor da variável correspondente ao parâmetro não é modificado.
Para forçar um parâmetro a ser passado por valor para um procedimento, a palavra-chave LOCAL deve ser usada antes do nome do parâmetro na declaração do procedimento. Esta palavra-chave indica que o seguinte parâmetro não será modificado pelo procedimento.
Exemplo:
- O código do procedimento é o seguinte:
PROCEDURE Test_value(LOCAL P1)
// Local indicates that the parameter will be passed by value
P1 = P1 * 2
- O código usado para chamar o procedimento é o seguinte:
T is int
T = 12 // T is equal to 12
Test_value(T)
// T does not change
| | |
 | Observação | No mesmo procedimento, alguns parâmetros podem ser passados por referência enquanto outros parâmetros podem ser passados por valor. Basta usar a palavra-chave LOCAL antes de cada parâmetro passado por valor. |
Parâmetros obrigatórios ou opcionais? ( Mandatory or optional parameters? )
Os parâmetros recebidos no procedimento podem ser parâmetros obrigatórios ou opcionais. Um parâmetro obrigatório deve ser preenchido durante a chamada ao procedimento enquanto um parâmetro opcional pode ser omitido: neste caso, ele assumirá o valor padrão definido ao declarar os parâmetros do procedimento.
| | |
 | Observação | Ao declarar um procedimento, os parâmetros opcionais são os últimos parâmetros (eles são sempre especificados após todos os parâmetros obrigatórios). |
No exemplo a seguir, o procedimento de multiplicação usa um parâmetro opcional, Nb2. Este parâmetro opcional é indicado após os parâmetros obrigatórios, especificando seu valor padrão. Neste exemplo, o valor padrão do parâmetro opcional é definido como 10.PROCEDURE Multiplication(Nb1 is int, Nb2 is int=10)
MyResult is int
MyResult = Nb1 * Nb2
RESULT MyResult
O código usado para chamar o procedimento é o seguinte:res is int
res = Multiplication(6)
// Res is equal to 60
Neste exemplo, o segundo parâmetro não foi especificado. Portanto, seu valor padrão será usado.