Uma função nada mais é do que um “pedaço de código” construído fora do seu programa principal, onde você pode chamar esse “pedaço de código” e executá-lo dentro do seu programa principal.
Veja como seu programa principal ( função inicio() ), do Portugol Studido, pode chamar outras funções no exemplo abaixo:

Abra o Portugol Studio, se não tiver a ferramenta de programação instalada no seu computador, você pode acessar de forma online CLICANDO AQUI.
Quando você abrir um novo programa no Portugol, note que ele já abre com a função principal –“funcao inicio()” dessa forma:

Sempre que você executar seu programa, o sistema só executará as linhas de código que estiverem dentro da funcao inicio() entre as { }. Portanto, você deverá criar suas funções abaixo da funcao inicio() conforme exemplo abaixo:

Note que cada função possui abre { e fecha }, seu código de cada sub-programa ficará entre as chaves { }.
Escreva o código conforme exemplo e execute seu programa principal para ver o que acontece:

Executou seu código?
Legal né!
Note que o output do seu programa saiu exatamente o que você escreveu na função 2 e função 4.
Você sabia que podemos enviar parâmetros, ou seja valores definidos em variáveis, de uma função para outra, faça o exemplo abaixo e execute seu código novamente:

Perceba que o valor BANANA enviado como parâmetro na função 2 foi exibida em tela no final da função e o valor GOIABA enviado para a função 3, foi repassado para a função 4 e exibido também em tela.
Você já ouviu falar de variáveis globais? Então vocês conhecer também esse conceito:
Quais são as variáveis globais?
Variáveis Globais são aquelas declaradas no início do seu programa. São visíveis, ou seja, podem ser utilizadas no programa principal e por todos os outras subrotinas (funções).
Note no exemplo abaixo que a variável global “var_global” foi declarada no inicio do programa, desta forma todas as funções conseguirão visualizar seu conteúdo.

Construa esse exemplo e execute para ver como funciona. Se você declarar sua variável dentro da funcao inicio() , não será possível a função 4 reconhecer o a variável global, seu programa irá dar um erro. Neste caso a variável criada dentro da funcao inicio() é considerada como variável local, apenas a função inicio irá reconhece-la.
Variáveis Locais são aquelas declaradas dentro da sua função e outra função não consegue reconhece-la.
No exemplo abaixo foi utilizado apenas variáveis locais, note que é possível enviar o parâmetro ano na função quantos_anos, onde o valor é processado e o valor calculado é retornado para a função funcao inicio()

Você sabia que pode utilizar diversas funções construida por outros programadores dentro do seu programa? Pois é, legal né?
Veja o exemplo abaixo, a biblioteca Util (um conjunto de funções) foi incorporado para dentro do seu programa, agora você conseguirá utilizar a função sorteia dentro do seu programa.
Vamos praticar? Monte seu código!

Agora que você está CRAQUE nos conceitos de FUNÇÃO, vamos testar seu conhecimento!
Copie o código do programa de votação e faça duas alterações:
Altere o menu principal incluindo uma nova opção para zerar o resultado da votação.

O menu ficaria algo do tipo:

Também inclua uma nova opção no menu de votação, inclua a opção 3 e não esqueça de colocar essa opção no Resultado da votação.

Boa sorte!
Abaixo o código do programa de votação.
programa {
inteiro votos_bonito = 0
inteiro votos_feio = 0
cadeia nome
funcao inicio() {
escreva("Nome do participante: ")
leia(nome)
chama_menu()
}
funcao chama_menu()
{
inteiro opcao
escreva("\n Escolha Uma Opção:")
escreva("\n 1 - Vote")
escreva("\n 2 - Resultado da votação")
escreva("\n Opção: ")
leia(opcao)
limpa()
escolha(opcao)
{
caso 1:
vote()
pare
caso 2:
resultado_votacao()
pare
caso contrario:
escreva("Opção Inválida!")
chama_menu()
}
}
funcao vote()
{
inteiro opcao
escreva("\n Você acha o ", nome, " bonito? Vote:")
escreva("\n 1 - Bonito(a)")
escreva("\n 2 - Feio(a)")
escreva("\n 3 - Retorne ao menu principal")
escreva("\n Opção: ")
leia(opcao)
limpa()
escolha(opcao)
{
caso 1:
votos_bonito = votos_bonito + 1
vote()
pare
caso 2:
votos_feio = votos_feio + 1
vote()
pare
caso 3:
chama_menu()
pare
caso contrario:
escreva("Opção Inválida!")
chama_menu()
}
}
funcao resultado_votacao()
{
escreva("\n", votos_bonito, " pessoas votaram Bonito para o ", nome)
escreva("\n", votos_feio, " pessoas votaram Feio para o ",nome)
}
}
Se continuar praticando, você se tornará um grande programador, persista!
Até.

Conheça os operadores matemáticos usados na programação

Desvios condicionais, fazendo seu programa tomar decisões!

Noções básicas e primeiros passos de Programação
