Você está na página 1de 39

Estrutura de dados

Função
Função é um conceito matemático...
Definição:
Sejam 𝑨 e 𝑩 conjuntos não vazios. Uma função de 𝑨 para 𝑩 é uma determinação de exatamente um
elemento de 𝑩 para cada elemento de 𝑨. Escrevemos 𝒇(𝒂) = 𝒃 se b for o único elemento de
𝑩 determinado para o elemento a de 𝑨. Se f é uma função de 𝑨 para 𝑩, escrevemos 𝒇: 𝑨 → 𝑩.

As funções são também chamadas de mapeamentos ou transformações.


Q01 Exemplo de uma função que relaciona os conjuntos {1, 2, 3, 4, 5} e {A, B, C, D, E}

1 A

2 B

3 C

4 D

5 E

Esta função pode ser representada por


f(1) = C; f(2) = D; f(3) = E; f(4) = B e f(5) = E.
Q02 Função que relaciona os lados {2, 3, 4, 5} com as áreas {4, 9, 16, 25} de um quadrado.

2 4

3 9

4 16

5 25

Esta função pode ser representada por f(2) = 4; f(3) = 9; f(4) = 16 e f(5) = 25. Porém, a fórmula
f(x) = x² pode ser usada para vincular {2, 3, 4, 5} com {4, 9, 16, 25}.
Função
Exemplo:
f(x) = x² pode ser implementada em muitas linguagens de programação. Em C teríamos:

double f(double lado) {

double area = lado * lado;


return area;

}
E o que é função?
Definição

Função é um subprograma que auxilia o programa principal através da realização de uma determinada
tarefa. São informações relacionadas a funções:

(1) são evocadas de dentro do programa principal como se fossem comandos.

(2) após seu término, a execução continua a partir de onde foi chamada.

(3) gera um desvio provisório do fluxo de execução.


Declarando funções
Para declarar uma função, vamos usar a seguinte sintaxe:

tipo_da_funcao NomeDaFuncao (Lista_de_Parametros)


{
// corpo da função
}

Observações:

1) O tipo da função diz respeito ao que será retornado da função;


2) NomeDaFunção é o identificador usado para evocar a função;
3) ListaDeParâmetros dizem respeito a dados passados para a função manipular; e
4) O corpo da função diz respeito às instruções executadas pela função
Tipos básicos de dados em C...
Em C, existem 5 (cinco) tipos básicos de dados: caractere, inteiro, ponto flutuante, double e void. Todos os
outros tipos de dados são baseados em um desses tipos.

void char int float double

Não retorna Retorna um Retorna um Retorna um Retorna valor


valor caractere inteiro float mais preciso
Um exemplo...
#include <stdio.h>

double calcularAreaQuadrado(double L) {

double A = L * L;
return A;

int main() {
double lado, area;
printf("Digite o valor do lado do quadrado: ");
scanf("%lf", &lado);

area = calcularAreaQuadrado(lado);

printf("A área do quadrado com lado %.2lf é %.2lf\n", lado, area);


return 0;
}
Nome da função
É o identificador único usado para chamar e referenciar a função.

Identificador usado para


referenciar a função.

double calcularAreaQuadrado (double L) {

double A = L * L;
return A;

}
Parâmetros
São valores (ou variáveis) passados para a função quando ela é chamada.

Foi passado para a função o


parâmetro L.

double calcularAreaQuadrado (double L) {

double A = L * L;
return A;

}
Variáveis locais
São variáveis declaradas dentro da função (normalmente, não são acessíveis de fora da função).

A função implementada tem uma


variável local declarada (A).

double calcularAreaQuadrado (double L) {

double A = L * L;
return A;

}
Q03 Implemente uma função para calcular a média de 3 valores passados como parâmetros.

13
O comando return
O comando return (valor) causa o retorno imediato do fluxo do programa ao ponto de chamada da
função causando atribuição de valor a uma expressão.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char minusculo () {
char ch = getche();
if ((ch >= 'A') && (ch <= 'Z')) return (ch + 32);
else return (ch);
}

int main() {
char letra = minusculo();
printf("\n%c", letra);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char minusculo () {
char ch = getche();
if ((ch >= 'A') && (ch <= 'Z')) return (ch + 32);
else return (ch);
}

int main() {

char letra = minusculo();


printf("\n%c", letra);
return 0;

}
Q04 Implemente uma função para calcular o fatorial de um número inteiro passado por parâmetro.

16
Função recursiva
Uma função recursiva é uma função que se chama a si mesma durante sua execução, ou seja, a função
usa sua própria definição para resolver o problema em questão.

main()

f()
3, 𝑠𝑒 𝑥 = 0
Q05 Seja 𝑓: ℕ → ℕ a função definida por 𝑓 𝑥 = ቊ . Calcule f(4).
2𝑓 𝑥 − 1 + 5, 𝑠𝑒 𝑥 > 0

18
Implementando f(x) em C...
3, 𝑠𝑒 𝑥 = 0
Seja 𝑓: ℕ → ℕ a função definida por 𝑓 𝑥 = ቊ .
2𝑓 𝑥 − 1 + 5, 𝑠𝑒 𝑥 > 0

E como calcular f(4)?


−1, 𝑠𝑒 𝑥 = 0
Q06 Seja 𝑔: ℕ → ℕ a função definida por 𝑔 𝑥 = ቊ . Calcule g(3).
4𝑔 𝑥 − 1 + 6, 𝑠𝑒 𝑥 > 0

20
Implementando f(x) em C...
−1, 𝑠𝑒 𝑥 = 0
Seja 𝑔: ℕ → ℕ a função definida por 𝑔 𝑥 = ቊ .
4𝑔 𝑥 − 1 + 6, 𝑠𝑒 𝑥 > 0

E como calcular g(3)?


Versão recursiva para fatorial de um número natural...
A série de Fibonacci
Estrutura de dados
Série de Fibonacci
A sequência de Fibonacci é uma sequência numérica em que cada termo a partir do terceiro é a soma
dos dois antecessores.

1, 𝑠𝑒 𝑥 = 1 𝑜𝑢 𝑥 = 2
𝐹𝑖𝑏 𝑥 = ቊ
𝐹𝑖𝑏 𝑥 − 1 + 𝐹𝑖𝑏(𝑥 − 2), 𝑠𝑒 𝑥 > 2

1) Os primeiros termos da série de Fibonacci são 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
2) Implementação da versão recursiva da função “Fib”.
3) Use a função implementada para calcular Fib(25).
Série de Fibonacci
Versão recursiva da função Fib(N):
Questões propostas
Estrutura de dados
−1, 𝑠𝑒 𝑥 = 0
Q07 Seja 𝑔: ℕ → ℕ a função definida por 𝑔 𝑥 = ቊ . Calcule g(12).
𝑔 𝑥 − 1 + 6, 𝑠𝑒 𝑥 > 0

28
Q08 Escreva uma função recursiva para determinar o 34° termo de uma Progressão Geométrica de
primeiro termo 4 e razão 1.25. Utilize essa função para calcular a soma dos 34 termos dessa PG.

29
Q09 Art. 14°. A avaliação do desempenho do estudante em uma atividade acadêmica curricular
compreenderá uma nota, expressa como um número inteiro em uma escala de 0 (zero) a 100
(cem), na qual a indicação de aprovação, nos casos em que se verificar nota maior ou igual a 60 e
assiduidade suficiente, ou de reprovação, em caso contrário.

§3º. A cada avaliação se associa um conceito, de acordo com a seguinte tabela de


correspondência:

Conceito Faixa de pontos Indicação


A 90 a 100 pontos Excelente
B 80 a 89 pontos Ótimo
C 70 a 79 pontos Bom
D 60 a 69 pontos Regular
E 40 a 59 pontos Fraco
F Abaixo de 40 pontos ou assiduidade insuficiente Insuficiente
30
Implemente uma função para determinar o conceito a ser atribuído para um estudante em
função da nota que obteve no desenvolvimento de uma atividade acadêmica.

Conceito Faixa de pontos Indicação


A 90 a 100 pontos Excelente
B 80 a 89 pontos Ótimo
C 70 a 79 pontos Bom
D 60 a 69 pontos Regular
E 40 a 59 pontos Fraco
F Abaixo de 40 pontos ou assiduidade insuficiente Insuficiente

Observação:

Desconsidere a frequência do aluno no decorrer da atividade.


Q10 Escreva uma função que recebe por parâmetro um valor inteiro e positivo N para determinar o
valor da soma dos N primeiros termos da série harmônica, definida por:

1 1 1 1
𝑆 = 1 + + + + ⋯+ +
2 3 4 𝑁

Curiosidade:

A série harmônica diverge, o que significa que a soma dos termos tende ao infinito à medida que
mais termos são adicionados.

32
Q11 Implemente uma função para calcular o MDC (maior divisor comum) de dois números inteiros
passados como parâmetros.

int calcularMDC(int a, int b) {


int resto;

do {
resto = a % b;
a = b;
b = resto;
} while (b != 0);

return a;
}

Agora, implemente uma versão recursiva para calcular MDC (a, b).

33
Q12 Implemente uma função para calcular a quantidade de dígitos que um número inteiro possui.

34
Q13 Implemente uma função int isPrimo (int n) para verificar se o número inteiro n, passado como
parâmetro, é primo ou não. Caso n seja primo, o valor de retorno deve ser 1 e caso não seja, o
valor de retorno deve ser 0. Matematicamente, essa função pode ser representada por

1, 𝑠𝑒 𝑛 é 𝑝𝑟𝑖𝑚𝑜
𝑖𝑛𝑃𝑟𝑖𝑚𝑜 𝑛 = ቊ
0, 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜

35
Q14 Implemente uma função que recebe, por parâmetro, a altura (h) e o sexo de uma pessoa e
retorna o seu peso ideal. Para homens, o peso ideal é calculado a partir da fórmula 72.7 x h - 58
enquanto, para mulheres, peso ideal é dado por 62.1 x h - 44.7.

36
Q15 Implemente uma função que recebe dois valores e indica qual deles é o menor.

37
Q16 Implemente uma função que recebe três valores e indica qual deles é o menor.

38
Q17 Implemente uma função que receba um número e retorne o número em ordem inversa. Por
exemplo, caso seja passado o número 234 como parâmetro, a função deverá retornar 432.

39

Você também pode gostar