Funções são talvez a parte mais importante de uma linguagem de programação, daí a importância de saber como elas funcionam e como podem ser criadas e utilizadas. Em micro:bit, as funções são blocos que se encaixam em outros blocos. há uma grande variedade, classificada de acordo com a atividade que exercem. nesta seção veremos seu papel e como criar e usar funções.

 

Pode-se generalizar que quase todos os blocos no Makecode são funções. Para entender o papel de uma função, vamos ver um exemplo prático. Suponha que você tenha um projeto onde seja necessário exibir o "nome e idade" de uma pessoa como a mostrada no seguinte programa:

 


 

 

Olhando para os blocos podemos ver que, ao mostrar o nome e a idade, existem 3 setores de blocos “muito parecidos” como mostra a imagem a seguir:

 


 

 

 

É aqui que as funções são úteis, pois podemos organizar melhor o programa criando funções para esses blocos semelhantes. Para isso, vá até a caixa de ferramentas e clique no botão: “Avançado”, conforme a imagem a seguir:

 

 


 

 

 

Em seguida, clique no botão: "Funções", conforme a imagem a seguir:

 

 


 

 

 

Aparecerá uma janela chamada: “Funções” com um botão chamado: “criar uma função…”, conforme a imagem a seguir:

 


 

 

 

Ao clicar no botão: "criar função", aparecerá uma janela como a da imagem a seguir:

 


| Clique na imagem para ampliar |

 

Nesta janela podemos dar um nome à função que queremos criar. É importante nomear a função de acordo com a tarefa que a função deve executar. Por exemplo, para blocos:

 


 

 

 

Podemos dar um nome como: “UsuarioMaria”. Ao criarmos uma função, aparecerá um bloco no editor de blocos, conforme a imagem a seguir:

 


 

 

 

Além disso, um bloco aparecerá no menu: “funções”, representando a função criada e anexando a palavra: “chamada” ao nome dado à função. Isso é repetido para cada função criada. Observe a figura a seguir:

 


 

 

Assim, crie 3 funções conforme a imagem a seguir:

 


 

 

 

Em seguida, coloque em cada função os blocos correspondentes a cada usuário conforme a imagem a seguir:

 


 

 

 

E note que no menu: "funções", agora existem 3 blocos com os respectivos nomes dados a cada função, precedidos da palavra: "chamada", conforme a imagem a seguir:

 


 

 

 

Agora, arraste e solte no bloco: “para sempre”, essas funções conforme a imagem a seguir:

 


 

 

 

Podemos observar que este programa funciona da mesma forma que o projeto proposto inicialmente, com a diferença que agora utilizamos funções, permitindo uma melhor organização do projeto. Quando os projetos são muito grandes, as funções ajudam a organizar melhor os projetos.

 

 

PASSANDO DE PARÂMETROS PARA FUNÇÕES.

Talvez a maior vantagem das funções seja o fato de poder passar parâmetros ou dados para as funções. Os “tipos” de dados que podem ser passados ​​para uma função são os seguintes:

- Boleano.

- Número.

- Texto.

- Variedade.

- LEDSprite.

- Cenário.

Observe a janela: "Editar função", que possui a opção: "Adicionar um parâmetro", para adicionar parâmetros à função, conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Vamos ver os parâmetros na prática. Tomemos como exemplo o projeto onde mostramos o “nome e idade” dos usuários. Assim, podemos criar uma função que receba como parâmetros: "nome" e "idade". Observe que o dado: "nome" é do tipo "texto" e o dado: "idade" é do tipo "inteiro". Então vá no menu: “funções” e crie uma função que receba 2 parâmetros (dados) conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Agora, no menu: "funções", aparecerá uma função chamada: "usuário", que recebe 2 parâmetros conforme a imagem a seguir:

 


 

 

 

No editor de blocos aparecerá um bloco chamado: “função nome do usuário idade”, como pode ser visto na imagem a seguir:

 


 

 

 

Agora, preencha a função com os blocos que mostrarão o nome e a idade conforme a imagem a seguir:

 


 

 

 

Para trazer os parâmetros para os blocos que os utilizam, clique sobre o parâmetro e arraste-o até onde será utilizado, conforme a imagem a seguir:

 


 

 

 

Agora podemos usar a função: "usuário" e enviar um nome e idade como parâmetro conforme o programa a seguir:

 


| Clique na imagem para ampliar |

 

 

Como pode ser visto, a função realiza sua atividade como se estivesse no loop principal. Isso porque quando utilizamos qualquer função, o programa passa o controle do processador para a função chamadora (call) e as instruções e blocos são executados da mesma forma como se estivesse no loop principal. Daí o grande poder das funções, pois permitem que os programas de qualquer projeto sejam organizados em atividades ou funções específicas, podendo também passar parâmetros, aumentando ainda mais o seu papel.

Voltando ao projeto inicial de exibição de nomes e idades, você pode construir um programa como o seguinte, mas usando funções e parâmetros:

 


| Clique na imagem para ampliar |

 

 

Comparando os 2 modelos de programação, podemos tirar algumas conclusões interessantes:

- Usando funções o programa fica mais organizado.

- O uso de funções reutiliza partes de blocos de um programa.

- Usando funções menos blocos de programa são necessários.

- Usando funções podemos criar um programa semelhante ao diagrama de atividades.

- Usando funções há menos risco de cometer erros de programação.

- Além disso, as funções podem ser recolhidas para ter um melhor visual no editor de blocos.

A figura a seguir mostra o mesmo programa sem funções e com funções:

 


| Clique na imagem para ampliar |

 

 

Para recolher as funções, clique no círculo mostrado à direita do nome da função. O programa a seguir é igual ao mostrado acima, mas com a função recolhida:

 


| Clique na imagem para ampliar |

 

 

Para reexibir a função, clique no círculo à direita do nome da função.

Ao usar funções, um programa se adapta melhor ao diagrama de atividades. Por exemplo, o diagrama de atividades para o projeto visto seria semelhante ao seguinte:

 


 

 

 

Olhando para o diagrama de atividades, vemos que estas são executadas sequencialmente e são sempre repetidas. Podemos fazer um programa que mostre as informações do usuário (nome e idade) dependendo de algo que aconteça na placa microbit. O seguinte programa exibe o usuário, dependendo se um botão foi pressionado ou a placa foi acenado:

 


| Clique na imagem para ampliar |

 

 

O diagrama de atividades para este programa seria semelhante ao seguinte:

 


| Clique na imagem para ampliar |

 

 

 

CLASSIFICAÇÃO DAS FUNÇÕES.

O editor de blocos “Makecode” possui diversas funções prontas para uso, organizadas por menus de acordo com o tipo de atividade que realiza. Observe na figura a seguir como as funções são classificadas:

 


 

 

 

Estas funções visam obter o melhor do hardware da placa micro:bit 

 


 

 

 

Além das funções encontradas no menu, você pode acessar o menu: “Extensões” e encontrar funções específicas para diversas finalidades:

 


 

 

Alguns textos chamam essas extensões de: livrarias ou bibliotecas. A figura a seguir mostra essas extensões de função categorizadas de acordo com algum propósito:

 


| Clique na imagem para ampliar |

 

Para usar qualquer uma dessas extensões ou bibliotecas, basta selecioná-la e ela aparecerá automaticamente no menu.

 

 

RETORNANDO DADOS DE UMA FUNÇÃO

É possível retornar dados de uma função. Qualquer tipo de dado pode ser retornado: texto, número, booleano, imagem, etc. Vejamos um exemplo prático. Suponha que queremos criar uma função para calcular a porcentagem de um número. Assim, precisamos de uma função que receba 2 parâmetros, um para o número a calcular e outro para a percentagem. O seguinte programa mostra como calcular a porcentagem:

 


| Clique na imagem para ampliar |

 

Para fazer isso, crie uma variável chamada: "resultado" e uma função chamada: "porcentagem". Preencha a função conforme mostrado no programa. Observe que primeiro multiplicamos o número pela porcentagem e armazenamos o resultado na variável: “resultado”. Em seguida, dividimos o resultado por 100 e salvamos o resultado novamente na variável: “resultado”. Então usamos o bloco: "retorna" e como dados a serem retornados usamos a variável: "resultado". Agora, podemos usar a função: "porcentagem" no loop principal e ver como funciona. Criei uma variável chamada: "resultado", para fins didáticos, para acumular o valor da operação de multiplicação, mas também podemos programar a função: "porcentagem", conforme o programa a seguir:

 


| Clique na imagem para ampliar |

 

 

Podemos presidir, ou seja, não usar a variável: "resultado", para obter o mesmo resultado dos programas anteriores conforme mostra a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Uma função pode retornar qualquer tipo de dado. O bloco: "retorna" nos permite fazer isso e o encontramos no menu: "funções" como mostra a imagem a seguir:

 


 

 

 

Todos os blocos com uma forma arredondada,

 


 

 

 

retornar ou retornar algum tipo de dado, conforme mostrado nos blocos da imagem a seguir:

 


 

 

 

Os blocos em forma de diamante também retornam dados booleanos (verdadeiro ou falso).

 


 

 

 

Como conclusão, podemos observar que todos os blocos utilizados na programação da placa micro:bit são funções. Alguns não recebem parâmetros, outros recebem, outros retornam alguns dados, outros não. Podemos criar ou inventar nossas próprias funções e dar aos projetos uma melhor organização e legibilidade.