sin-retorno

Executem a ordem 66…

Hoje vamos aprender tudo sobre os blocos Funções. O que são? Para que servem? Porque têm tantas palavras difíceis? As respostas a estas perguntas, já a seguir:

Imaginemos que o nosso programa tem que fazer uma coisa muitas vezes, por exemplo, fazer piscar dois LEDs em muitos casos, ou fazer com que soe uma melodia com mais de 25 blocos que criámos. Se cada vez que quiséssemos que soasse a nossa melodia, fosse preciso escreve-la novamente, acabaríamos com os olhos quadrados de tanto bloco!

E se pudéssemos de alguma forma criar a melodia apenas uma só vez, dar um nome a essa acção (como fazer soar a melodia) e com apenas um único bloco, fazer com que soe? É nisso que consistem as funções! Servem para pouparmos tempo … e blocos. Quando temos uma tarefa que se repete muitas vezes, ou quando queremos organizar melhor o nosso projecto, podemos criar uma função que realize um conjunto de acções cada vez que a chamemos. Mas se quiseres que as funções te evitem dores de cabeça, fica atento, pois vamos começar. Para realizar os exemplos de hoje, necessitarás de:

  • 1 x ZumBloq LED
  • 1 x ZumBloq Buzzer
  • 1 x ZumBloq Botão
  • 1 x ZumBloq Servo rotação contínua
  • Uma placa controladora ZUM BT 328 ou compatível com Arduino UNO
  • Um cabo USB

Voltarei…

A primeira coisa que é preciso explicar é que as funções no bitbloq podem ser de dois tipos:

funções sem retorno e funções com retorno.

Calma! As funções sem retorno não vão fugir e nunca mais voltar quando as executes pela primeira vez!

Sem retorno significa que não devolvem nenhum valor no final da sua execução.

Quando quisermos criar uma função que realize muitas operações matemáticas (somar, subtrair logo a seguir, voltar a somar, multiplicar, subtrair e multiplicar, por exemplo) no final interessa-nos que a função nos devolva qual o valor final desse conjunto de operações. Por isso, neste caso usaremos uma função com retorno, que nos devolverá o valor final das operações.

Mas quando quisermos que a nossa função realize uma série de acções que nada tem a ver com obter um valor final, como fazer soar essa graaande melodia, usaremos uma função sem retorno.

O bloco função sem retorno e o bloco chamar a função sem retorno

Como explicámos agora mesmo, o bloco função sem retorno (em cima à esquerda) serve para agrupar uma série de blocos e executa-los quando os chamamos a função.

Poderia dizer-se então que quando criamos uma função, estamos a criar um mini programa e a dar-lhe um nome, para que quando o chamemos, o programa principal entre na função, corra através dele inteiramente e saia da função para continuar com o programa principal (neste caso, sem devolver nenhum valor).

 

– Mas o que é isto? Duas colunas de blocos não unidos!? Mas disseram que eles tinham que estar todos unidos senão não funcionavam correctamente…!

Isso é verdade: os blocos devem estar todos unidos no nosso programa principal. Quando colocamos um bloco para criar uma função, estamos a criar ao seu lado outro pequeno programa que estará inserido dentro do programa principal.

Vamos entender isto muito melhor quando analisarmos o seguinte exemplo.

Exemplo com os blocos de funções sem retorno.

Programa que faz mover um servo se pressionarmos o botão, avisando com um pisca-pisca e com som.

Como por estas alturas já deves ser um mestre com o bloco de controlo Se…executar e já deves ter realizado o exemplo de fazer uma coisa se pressionarmos o botão e outra se não o pressionarmos mais do que uma vez, tenho a certeza de que entenderás mais facilmente o programa, se retirarmos os blocos rosa  “piscapisca_com_som” e os blocos da direita.

Comecemos por olhar para a parte direita do programa. A primeira coisa que vemos é o bloco função sem retorno. Este bloco está encarregado de começar a criar uma função sem retorno. Quando o colocamos na nossa zona de trabalho, a primeira coisa que devemos fazer é dar-lhe um nome (como fazemos com as variáveis). É assim que se vai chamar a nossa função e será por esse nome que a chamaremos com o bloco chamar a função sem retorno (como vemos na parte esquerda do programa). Dentro do bloco função sem retorno, podemos criar um programa que sabemos que vamos repetir várias vezes. O bloco vai ficando cada vez maior para que possas introduzir todos os blocos que desejes na tua função. E quando quisermos que o nosso programa principal faça o que programámos na função, por maior que ele seja, só necessitaremos de colocar um bloco chamar a função sem retorno e mudá-la de nome como fazemos com as variáveis. Como vemos no exemplo, cada ciclo do programa verifica se o botão esta pressionado para fazer mover o servo ou pará-lo. Para além disso, antes do bloco do servo estamos a chamar a função, de forma a que cada vez que passamos pelo bloco rosa piscapisca_com_som, estamos a executar todos os blocos da função, de cima a abaixo.

Dois é melhor que um

Também podemos criar programas com mais do que uma função. Não vos parece um programa principal muito mais bonito?

Após pressionar o botão, executa-se a função piscar, seguida da função melodia e logo a seguir, novamente a função piscar.

Mas a seguir…

Ainda nos falta ver um tipo de função que ao terminar de executar os seus blocos, nos devolverá uma variável que em breve veremos para que servem e como as usamos: as funções com retorno.

Para acabar de dominar as funções, continuemos o curso na seguinte lição