No seguimento do que temos vindo a falar nos últimos tutoriais, iremos agora dar a conhecer as já referidas funções, estas
são estruturas mais ou menos complexas que permitem realizar determinadas ações
e são reutilizáveis ao longo dos programas.
Uma função é em linhas gerais,
uma sequência de comandos que pode ser reutilizada várias vezes ao longo de um
programa ou seja são pedaços do código que podem ser chamados sempre que forem necessários. Para criar uma função temos em primeiro lugar que a declarar e definir as suas ações. Em seguida podemos ver o exemplo da
função setup do programa Blinck.
void setup( )
{
pinMode(led, OUTPUT);
}
No exemplo estamos a declarar uma função com o nome setup() que tem como função executar outra função pinMode(), função esta interna do sistema Arduino. A ação de executar os comandos da função previamente declarada é denominada chamada da função. Não teremos de declarar a função pinMode() pois tal como referido esta é uma função interna e já está declarada internamente no caso do Arduino.
Chamada da Função
Chamar uma função significa
executar os comandos que foram definidos na sua declaração. Uma vez declarada,
uma função pode ser chamada várias vezes no mesmo programa para que os seus
comandos sejam executados sempre que necessários. Para chamarmos a função
setup(), do exemplo, teremos de utilizar o seguinte comando:
setup();
No entanto, no caso do Arduino, a
função setup() não tem de ser chamada, pois
esta faz parte da estrutura base do nosso programa e é chamada automaticamente.
Quando compilamos um programa na IDE do Arduino, a função setup() é chamada uma
vez e depois é chama a função loop() repetidamente até que o Arduino seja
desligado ou reiniciado.
Valor de Retorno
A palavra-chave que vem antes do
nome da função na declaração define o tipo do valor de retorno da função. Sempre
que uma função é chamada, esta é executada e devolve ou retorna um determinado
valor, resultado, esse é o valor de retorno. Tendo de ser definido o tipo de dados que a função vai retornar, este pode ser qualquer um dos tipos de dados citados anteriormente. No
caso da nossa função setup(), o tipo de retorno é void, o que significa que a
função não retorna nada.
Para exemplificar, vamos criar uma função que retorna o resultado de uma operação matemática, por exemplo um número inteiro. Para retornar um valor, nós utilizamos o
comando return:
int soma( )
{
x=1+2;
return x;
}
Quando chamada, a função soma() acima definida esta retorna sempre o valor
de x e este pode ser atribuído a uma
variável. Por exemplo:
y = soma( );
Após ser declarada a função soma() e executada "chamar", o comando de atribuição acima, vai atribuir à variável y o resultado da soma logo y irá ficar como o valor 3.
Parâmetros
Um outro recurso importante de
uma função são os parâmetros. Eles servem para enviar algum dado para a função
quando esta é chamada. Vamos criar um exemplo de uma função que recebe dois parâmetros
e que tem como função somar esses mesmos parâmetros e retornar o resultado da sua soma.
int soma(int a, int b)
{
return a + b;
}
Acabamos de definir uma função
chamada soma(), que aceita dois números inteiros como parâmetros. Sendo que
cada um deste é uma variável, e neste caso escolhemos a e b como nome para
estas variáveis. Como se pode facilmente entender estes parâmetros funcionam como
variável que podemos utilizar dentro da função. Sempre que chamarmos a função
soma(), teremos de fornecer estes dois parâmetros, variáveis. O comando return vai simplesmnet devolver a soma "a + b". Vamos então somar 1 + 2 e atribuir
o resultado a uma variável x.
x = soma(1, 2);
Após realizarmos a chamada da função soma() acima referida com os parâmetros 1 e 2, a variável x irá conter o resultado da sua soma o valor 3.
Comentários
Um comentário é um pedaço de
texto dentro do programa que serve apenas para explicar (documentar) o
código, este não é executado nem tem qualquer peso sobre o programa. Sendo muito
frequente verem-se pedaços de código, comandos comentados para que estes não
sejam executados por algum motivo, sendo que nestes casos, dizemos que o código
foi comentado.
Na linguagem C/C++, um comentário pode ser escrito de duas
formas:
- Comentário de linha: inicia-se com os caracteres //, tornando todo o resto da linha atual num comentário.
- Comentário de bloco: inicia-se com os carateres /* e termina com os carateres */. Todo o texto entre o início e o término se torna um comentário, podendo ser composto de várias linhas.
Para facilitar a visualização, os
ambientes de desenvolvimento geralmente mostram as linhas comentadas a cores diferente
das não comentadas. No caso do Arduino IDE, por exemplo, os comentários são
exibidos na cor cinza. No exemplo seguinte vamos ver o código Blink com inúmeros
comentários que explicam cada um dos comandos.
/*
Programação para Arduino - #3 (Funções)
Programação para Arduino - #3 (Funções)
Programa de exemplo: Blink
*/
*/
//Aqui as duas linhas anteriores de texto estão comentadas logo, não são executadas.
/*
Declaração da variável "led"
Indica que o LED está conectado no pino digital 13 do Arduino (D13).
*/
int led = 13;
/* Já aqui temos as duas primeiras linhas de texto comentadas o que faz com que não sejam executadas e uma terceira linha não comentada que é a definição da variável led do tipo int com o valor 13.*/
/*
Declaração da função setup()
Esta função é chamada apenas uma vez, quando o Arduino é ligado ou reiniciado.
*/
void setup()
{
{
// Chama a função pinMode() que configura um pino como entrada ou saída
pinMode(led, OUTPUT); // Configura do LED como saída
}
/*
Declaração da função loop()
Após a função setup() ser chamada, a função loop() é chamada repetidamente até
o Arduino ser desligado.
*/
void loop()
{
{
// Todas as linhas a seguir são chamadas de função com passagem de parâmetros
// As funções são executadas em sequência para fazer o LED acender e apagar
digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do LED, acendendo-o
delay(1000); // Espera 1000 milissegundos (um segundo)
digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do LED, apagando-o.
delay(1000); // Espera 1000 milissegundos (um segundo)
// Após terminar a função loop(), ela é executada novamente repetidas vezes,
// e assim o LED continua piscando.
}
Considerações Finais
Esperamos que este artigo tenha sido útil e se gostaram comentem e partilhem. Alguma dúvida ou questão deixem em comentário ou utilizem o formulário de contatos.
Um bom dia em nome da TecnoDomos.
Conteúdo redigido ao abrigo do novo Acordo Ortográfico
Sem comentários:
Enviar um comentário