Funções
Instituto de Ciência e Tecnologia
Sub-rotina
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 1
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 2
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exemplo: sub-rotina
#include<stdio.h>
float calculo(float sal);
main()
{
float sal, aum, novoSal;
printf("Digite o salário atual:");
scanf("%f",&sal);
aum = calculo(sal);
novoSal = sal + aum;
printf("\nSalário antigo: R$%.2f\nSalário novo: R$%.2f\n\n",sal, novoSal);
}
float calculo(float sal)
{
float perc, valor;
do{
printf("Digite o percentual do aumento: ");
scanf("%f",&perc);
if(perc <=0)
printf("\n\tERRO:\n\tVocê digitou um valor inválido! Digite um valar correto!\n\n");
}while(perc <=0);
valor = sal*perc/100;
return valor;
}
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 3
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exemplo: sub-rotina
✔ O exemplo apresentado mostra a utilização de uma sub-rotina
que recebe um parâmetro (o valor atual do salário) e que, ao
final, retorna um valor (aumento que será dado ao salário) para
quem a chamou.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 4
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Sub-rotina: função
✔ Na linguagem C uma sub-rotina é denominada função.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 5
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Modularização de programas
✔ Para que um módulo(ou função) possa ser executado, precisa ser
ativado ou chamado por outro módulo.
✔ Isso ocorre com todos os módulos existentes em um programa,
exceto com o módulo principal, que é o módulo que todos os
programas contêm.
✔ Todo programa, portanto, tem UM MÓDULO PRINCIPAL!
✔ Em C, esse módulo é o main()
✔ Um programa qualquer inicia sua execução pelo módulo
principal.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 6
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Modularização de programas
✔ Fluxo de execução de um programa modularizado:
• Começa pelo módulo principal e é desviado para qualquer outro
módulo que seja ativado no módulo principal.
• Cada módulo que é chamado é executado do início ao fim. Após seu
término, o programa prossegue do ponto em que o módulo foi
chamado.
• Os módulos podem ser escritos após os módulos ativadores caso se
crie uma interface antes desse módulo, denominada protótipo.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 7
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 8
Algoritmos
Funções
Instituto de Ciência e Tecnologia
A função exit()
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 9
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Modularização
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 10
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Modularização
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 11
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Funções
Funções
Funções
Forma geral de uma função em C:
tipo_de_retorno nome_da_função(lista_de_parâmetros)
{
//Corpo da função
}
Lista de parâmetros: é uma lista de nomes de variáveis separados
por vírgulas e seus tipos associados que recebem os valores dos
argumentos quando a função é chamada(ativada).
Caso uma função não possua parâmetros, sua lista de parâmetros é
vazia: ( ).
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 14
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 15
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Escopo de variáveis
Onde as variáveis são declaradas?
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 16
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Escopo de variáveis
Onde as variáveis são declaradas?
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 17
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Escopo de variáveis
Onde as variáveis são declaradas?
Dentro das funções (Variáveis locais)
Não são reconhecidas fora do seu próprio bloco de código.
São criadas na entrada de seu bloco e destruídas na saída.
Na definição dos parâmetros das funções (Parâmetros formais)
Comportam-se como as variáveis locais.
Deve-se assegurar que os argumentos usados para chamar uma função
sejam compatíveis com o tipo de seus parâmetros.
Fora de todas as funções (Variáveis globais)
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 18
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Escopo de variáveis
Onde as variáveis são declaradas?
Dentro das funções (Variáveis locais)
Não são reconhecidas fora do seu próprio bloco de código.
São criadas na entrada de seu bloco e destruídas na saída.
Na definição dos parâmetros das funções (Parâmetros formais)
Comportam-se como as variáveis locais.
Deve-se assegurar que os argumentos usados para chamar uma função
sejam compatíveis com o tipo de seus parâmetros.
Fora de todas as funções (Variáveis globais)
São reconhecidas pelo programa inteiro e podem ser usadas por qualquer
pedaço de código.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 19
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Retorno de valores
✔ Uma função pode retornar (ou não) valores.
✔ Caso uma função não retorne nenhum valor, podemos dizer que se
trata de uma função com retorno neutro.
✔ A função principal, a primeira a ser executada, é sempre neutra.
✔ O retorno de valores é a saída da função. Por meio dele, a função pode
dar uma “resposta” para a função ativadora.
✔ O retorno do valor do módulo ativado precisa ser recebido e tratado
dentro do módulo ativador.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 20
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Retorno de valores
✔ O retorno é feito através do comando:
return valor_de_retorno
Exemplo:
return x+y;
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 21
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 22
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Problema 1:
solução
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 23
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 1:
● Faça um programa que receba três números e identifique se os
mesmos formam um triângulo. Essa identificação deve ser feita
por uma função chamada verifica_triangulo, que retorna 1(caso
os números formem um triângulo) e 0(caso contrário). A leitura
dos números e a escrita do resultado, além da ativação da
função triângulo devem ficar na função principal.
● Esse programa deve dizer ainda que tipo de triângulo foi
formado. Para isso faça uma função denominada verifica_tipo.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 24
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 1:
solução possível 1
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 25
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 1:
solução possível 2
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 26
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 2:
● Faça um programa que calcule a soma dos n primeiros
números pares, sendo n definido pelo usuário na função
principal. O programa ainda deverá ter as funções soma_pares
e par, sendo que a primeira será responsável pela soma dos
números que forem pares e a segunda será responsável por
verificar se o número em questão é par ou não.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 27
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 2:
solução possível
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 28
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 3:
● Faça um programa que realize a potenciação por meio de
multiplicações sucessivas, por sua vez, expressas por meio de
adições.
● A multiplicação por meio de adições deve ser uma função que
será ativada pela função exponenciação.
● O programa deve emitir a seguinte mensagem de erro caso o
usuário digite um número negativo e finalizar o programa:
Erro: o expoente deve ser um número positivo!
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 29
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 30
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 31
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 32
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 35
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 37
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 3:
solução possível 1 -parte 1
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 38
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 3:
solução possível 1
parte 2
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 39
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 3:
solução possível 2
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 40
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 43
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 44
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 45
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 5:
● Faça um programa que recebe um string de tamanho 100 e
Imprima-o em minúsculo.
● O programa deverá, dentro da função principal receber o string
e chamar a função imprime_minusculo para tornar os
caracteres minúsculos. (Para transformar um caractere
minúsculo utilize a função tolower presente na biblioteca
ctype.h)
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 46
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 5:
solução possível
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 47
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 6:
● Faça um programa que recebe um string de tamanho 100 e
Imprima-o em maiúsculo.
● O programa deverá, dentro da função principal receber o string
e chamar a função imprime-maiusculo para tornar os
caracteres maiúsculos.
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 48
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 6:
solução possível
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 49
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Retornando ponteiros
● Para retornar um ponteiro, deve-se declarar uma função como
tendo tipo de retorno ponteiro.
Exemplo: tipo *nomefuncao(lista_de_parametros)
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 50
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 7:
● Faça um programa que recebe um string de tamanho 100 e
retorne-o string em (1) maiúscula ou (2) minúscula.
● O programa deverá, dentro da função principal receber o string
e fazer a pergunta para o usuário de qual forma o string será
exibido (1 ou 2).
● Deve possuir duas funções que fazem a transformação:
Para maiúscula: strtoupper
Para minúscula: strtolower
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 51
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 52
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 8:
solução possível
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 54
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 55
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Retornando
estruturas
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 56
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Recursividade
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 57
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Recursividade
Exemplos de funções recursivas:
● Fibonnacci
● fib(n) = fib(n-1) + f(n-2) para n > 1
● fib(0) = 0 e fib(1) = 1 (base)
● Fatorial
● n! = n*(n-1)! Para n >0
● 0! = 1 (base)
● Exponenciação(expressa por multiplicações)
●
xn = x * xn-1 para n > 0
●
X0 = 1 (base)
● Multiplicação (expressa por adições)
●
x*y = x + x * (y – 1) para y > 0
● x*0 = 0 (base)
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 58
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 59
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Recursividade
Fatorial
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 60
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 9:
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 61
Algoritmos
Funções
Instituto de Ciência e Tecnologia
Exercício 10:
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 62
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 64
Algoritmos
Funções
Instituto de Ciência e Tecnologia
______________________________________________________________________________________________________________________
Profa. Amanda Rocha Chaves (amanda.chaves@ict.ufvjm.edu.br) 68