Até agora, você aprendeu a criar constantes e variáveis para armazenar e usar valores e a tomar decisões em código usando a expressão if
e operadores de decisão, como and
e or
.
Agora, é hora de aprender a escrever código que você possa reutilizar facilmente no seu programa.
Você se lembra de quando vimos na Aula 2 que uma expressão é a menor unidade de código que produz um resultado? E que quando uma expressão executa e gera um valor, o valor que ela gera é o resultado?
Você pode aproveitar isso para tornar seu código mais eficiente.
Expressões podem ser combinadas com outras expressões para criar funções, e funções podem ser usadas repetidamente em seu código sem você precisar reescrever todas as vezes o que elas fazem.
Como usar expressões em funções
Uma função (também chamada de rotina) é um código reutilizável que fornece instruções para executar uma ação ou para criar uma saída com base em uma entrada.
Funções são compostas por expressões combinadas.
Para definir uma função, você precisa do seguinte:
- Um nome exclusivo ou identificador.
- O tipo de informação que será o resultado.
- O que a função fará quando for chamada.
Esta é a sintaxe básica de uma função:
~~~(verse) name() : type = bloco de código ~~~

Você aprenderá mais sobre blocos de código na próxima aula, mas, por enquanto, só precisa saber que o bloco de código é onde você colocará as expressões usadas para criar sua função.
Funções e chamadas de funções
Uma função é basicamente uma sequência de expressões que você nomeou.
Um programa usa uma função chamando essa função pelo nome. A chamada invoca (ativa) essa função. Esta é uma chamada de função.
Ou seja, em vez de repetir várias vezes todas as expressões colocadas em uma função, você pode agrupá-las na função nomeada e, todas as vezes que chamar essa função no programa, o computador fará referência a ela e executará expressões nela.
Por exemplo, em vez de CoinsPerMousetrap
sempre ter o valor 100
, você pode escrever um código que alteraria o valor escolhendo um valor aleatório todas as vezes que ele fosse executado.

No exemplo abaixo, a expressão é configurada para gerar um número aleatório de um a dez usando a expressão GetRandomInt(1, 10)
.
Veja a divisão:
GetRandomInt() |
Esta é uma função integrada no Verse que significa basicamente o que parece: ela gera um número inteiro aleatório. |
1, 10 |
Mostra o intervalo numérico em que ele pode gerar. Se você usasse 20, 50 , isso geraria um número de vinte a cinquenta. Observe que o intervalo está dentro do () , que faz parte do nome dessa expressão. |
Essa é uma chamada de função porque instrui o computador a chamar a função que obtém um número inteiro aleatório no intervalo que você definiu de 1 a 10.
Quando quiser usar uma função no seu código, você pode chamá-la por nome. Cada vez que você chamar GetRandomInt()
, um novo número aleatório será gerado.
Você pode usar isso para alterar aleatoriamente o preço de uma ratoeira:
~~~(verse) using { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } using { /Verse.org/Random }
OnBegin
# Inicializar CoinsPermouseTrap com um número inteiro aleatório entre 1 e 100 CoinsPerMousetrap : int = GetRandomInt(1, 100)
# Imprimir o valor atual de Moedas (500) no log. Print("O número de moedas começa em {Coins}.")
# Diminuir o número de moedas usando CoinsPermouseTrap e imprimir o novo valor no log. set Coins = Coins - CoinsPerMousetrap Print("Depois de comprar uma ratoeira, o número de moedas é {Coins}.")
Observe como quase todas as linhas de código no exemplo acima têm um comentário que explica o que o código faz. Isso é útil tanto para você ao retornar ao seu código depois de algum tempo, quanto para qualquer outro programador que queira adicionar ou modificar o código que você escreveu.
### Métodos
Você se lembra da [Aula 2](learn-code-basics-2-basic-programming-components-in-verse#typesandvalues), quando falamos sobre como um tipo define quais operações podem ser executadas em valores armazenados em uma variável ou constante? Tipos também fazem outras coisas.
Da mesma forma que os tipos têm operações que lhes pertencem, eles também têm funções que lhes pertencem. Essas funções são conhecidas como **métodos** e devem ser chamadas de uma maneira especial.
Em vez de chamá-las apenas escrevendo seus nomes (como `Print()` ou `GetRandomInt()`), uma **chamada de método** deve começar com o nome de uma variável (ou constante) seguida por um `.` e, depois, o nome do método. Por exemplo, chamar o método `Pounce()` em uma variável `Cat` ficaria assim:
~~~(verse)
Cat.Pounce()

Aulas
Uma classe é um modelo que você pode usar para criar coisas com comportamentos e propriedades semelhantes. Uma classe é um tipo composto, o que significa que é composta de um pacote de dados de outros tipos.
Quando você define uma classe, os dados dela podem ser herdados por qualquer subclasse.
Então, um método é uma função anexada a uma classe. Por causa disso, nem todos os métodos funcionam com todos os tipos. O método deve ser declarado na definição de classe desse tipo ou em uma classe da qual o tipo herda. Se isso ainda não faz sentido, não se preocupe: esta é apenas uma introdução rápida, e você verá mais informações sobre as classes mais tarde.
Resumo
- Uma função é uma sequência nomeada de expressões que você pode reutilizar.
- Funções também são conhecidas como rotinas.
- Funções economizam tempo e reduzem os erros, porque você não precisa digitar repetidamente (ou manter) várias linhas do mesmo código.
- Ao reutilizar uma função em uma linha de código, você faz isso com uma chamada de função.
- Um método é uma função que pertence a um determinado tipo e deve ser chamada em uma variável ou constante desse tipo.
- Classes são tipos compostos que permitem combinar dados de outros tipos e compartilhar os comportamentos e propriedades com subclasses