Introdução às funções

Teoria Completa

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Suponha que durante o desenvolvimento de um programa você percebeu que iria utilizar inúmeras vezes o cálculo do fatorial de um número que podia variar, será que existe uma forma de reutilizar o código feito uma vez para todos os pontos do programa?

A RESPOSTA É SIM!

Então, vem comigo entender de vez como as funções funcionam em programação!

Função

Cara, eu vou ser muito sincero... Você já usou funções muitas vezes antes de chegar até aqui e finalmente chegou a hora de desvendarmos o que é isso.

Uma função ou sub-rotina nada mais é do que um escopo, um lugar único (módulo) que você escreve intruções e pode reutilizá-las em outros trechos do código através de sua invocação no programa principal.

Além disso, as funções podem receber valores durante a sua invocação no programa principal, essa passagem é feita pelo que chamamos de parâmetros de uma função. Tais valores podem ser passados de forma direta ou através de variáveis do programa principal. No segundo caso, uma cópia da variável é feita no escopo da função e toda manipulação realizada a partir dali afetará apena a cópia e não a variável original no programa principal.

As funções também são capazes de retornar um valor, ou seja, se um programa principal invoca uma função para realizar algum processamento, ela pode retornar o resultado desse processamento de volta ao programa principal.

Calma lá! Falei de muito conceito e nada de exemplo...

Calma, não fica triste... Esse exemplo é para você @!

Suponha que nós tenhamos que modularizar a soma de dois números em um programa. Como nós faríamos isso?

Simples! Podemos criar uma função soma que receberá como parâmetro os números que participarão efetivamente da operação e retornará o resultado dela.

Vamos para outro exemplo! E se agora nós tivéssemos que criar uma função que realiza impressões na tela, como faríamos?

De novo basta criarmos uma função, porém dessa vez ela não terá retorno nem parâmetros apenas o processamento de impressão.

E tanto essa quanto a anterior poderiam ser invocadas a qualquer momento do programa principal com apenas uma linha de código, ou seja, uma forma de reutilizar um código previamente escrito de forma simples e rápida (tudo o que nós queremos, não é mesmo?).

Criando uma função

Beleza, a gente sabe que uma função pode ter ou não parâmetros, ter ou não retorno e deve executar algum tipo de processamento, mas como criamos uma?

A figura a seguir ilustra a função soma criada de forma teórica anteriormente:

Basicamente, toda função deve possuir um tipo de retorno, um nome, parâmetros (que podem ser nulos), intruções e um retorno.

Para entendermos onde estão cada um desses elementos na função acima, basta analisarmos a forma geral de definição de uma função:

Agora sabemos que o tipo do retorno da função soma é float, seu nome é soma, possui como parâmetros dois dados (também do tipo float) que no escopo da função serão as cópias n1 e n2, sua instrução consiste na realização de uma operação de soma e seu retorno em um valor do tipo float que é o resultado.

Vale lembrar que em casos de funções sem retorno ou parâmetros, tais respectivos elementos de código da imagem acima estariam ocultos.

Agora que já temos uma base sobre funções, está na hora de consolidarmos ela para aprendermos a manipulá-las em um código da linguagem C.

Então, vamos fazer alguns exercícios de fixação! Te espero na página aqui do lado.

NÃO VAI FUGIR, HEIN!?

Expandir

Exercício Resolvido #1

Elaboração própria.

Descreva o que é uma função e qual é a sua utilidade na linguagem C.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Uma função é um escopo, um lugar único (módulo) que você pode escrever instruções e reutilizá-las em outros trechos de código através de sua invocação no programa principal.

Passo 2

A grande utilidade de uma função é a economia de tempo de desenvolvimento, onde um algoritmo pode ser executado diversas vezes em um programa com diferentes valores sem a necessidade de reescrever tais instruções.

Resposta

Exercício Resolvido #2

Elaboração própria.

Explique o motivo pelo qual variáveis passadas como parâmetro para uma função não têm os seus valores alterados mesmo que tais instruções de alteração estejam presentes na função.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Isso acontece, pois quando uma variável é passada como parâmetro para uma função, essa função cria uma cópia de seu valor em outro espaço de memória. A verdade é que dentro de uma função estamos trabalhando com as chamadas variáveis de cópia.

Resposta

Ou seja, apenas os valores são passados como parâmetro e qualquer alteração feita dentro da função modifica apenas a variável de cópia e não a original.

Mas lembre-se! Essa regra não é verdadeira quando nos referimos aos ponteiros.

Exercício Resolvido #3

Elaboração própria.

Crie uma função que recebe dois números inteiros como parâmetros e retorne a multiplicação deles.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

A primeira coisa que nós vamos é definir o escopo da função.

Como os números recebidos serão inteiros e a multiplicação de dois inteiros origina um valor também inteiro, o tipo de retorno dessa função deve ser int. Além disso, devemos dar um nome a essa função, nesse caso o nome que daremos a ela é m u l t i p l i c a c a o . Por fim, entre parênteses e separados por vírgula, devemos colocar os parâmetros esperados, que como mencionado anteriormente são dois números inteiros, por isso utilizamos n 1 e n 2 ambos do tipo int.

Passo 2

Com o escopo da função definido, podemos declarar a variável que receberá a multiplicação.

Passo 3

Por fim, basta atribuirmos o resultado da multiplicação dos valores recebido em n 1 e n 2 a m u l t i e retornarmos o resultado.

O resultado retornado será enviado ao escopo que invocou a função, que por sua vez, poderá realizar novos processamentos com ele.

Resposta

Exercício Resolvido #4

Pontifícia Universidade Católica de Goiás – PUC de Goiás, Técnicas de Programação – Funções, Max Gontijo de Oliveira, pp. 02 – Exercício 14.

Fazer uma função que receba um caractere como parâmetro e retorne 1 caso o caractere seja uma consoante, ou 0 caso contrário.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

A primeira coisa que nós temos que fazer é criar o escopo da nossa função.

Para isso, devemos primeiro falar para o programa o tipo de retorno dessa função, que por assumir apenas 0 ou 1 é int. Além disso, devemos na declaração decidir o nome dessa função, nesse caso v e r i f i c a C o n s o a n t e . Por fim e entre parênteses devemos falar os parâmetros que essa função deve receber, nesse caso um único caractere c .

Passo 2

Com o escopo da função definido, podemos elaborar o código que ela executará quando chamada.

Onde basicamente declaramos uma variável c o n s o a n t e do tipo int e a inicializamos com o valor 1 (supondo que o caractere passado por parâmetro é uma consoante). Após isso, utilizamos a estrutura switch para pegar o caractere armazenado por c e compará-lo com todas as vogais através de casos, caso um deles seja verdadeiro c o n s o a n t e receberá 0.

No término da função o valor de c o n s o a n t e será retornado da seguinte forma: se o caractere armazenado por c for uma consoante o valor de retorno (armazenado por c o n s o a n t e ) será 1, caso contrário o valor será 0.

Resposta

Exercício Resolvido #5

Pontifícia Universidade Católica Do Rio Grande do Sul – PUC do Rio Grande do Sul, Funções e Procedimentos, Sílvia Moraes e Egídio Terra, Adaptação do exercício 10.

Faça uma função que recebe um valor inteiro e verifica se o valor é par ou ímpar.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Começaremos o nosso programa com o escopo da função que iremos declarar.

A lógica dessa definição está baseada em usar o retorno do valor 1 para indicar que o número é par e o valor 0 ímpar, dessa forma podemos dizer ao programa que o tipo do retorno da função é int. Como se trata de uma função que faz a verificação da paridade de um número, nada melhor do que chamá-la de v e r i f i c a P a r . Por fim, basta dizermos ao programa quais serão os parâmetros dessa função, nesse caso um número n inteiro.

Passo 2

Com o escopo da função definido, basta escrevermos o código que ela executará.

Aqui nós não temos segredo, simplesmente utilizamos o comando condicional for para verificar se o resto da divisão de n por 2 é igual a 0. Caso a condição seja verdadeira, temos que retornar o número 1 para indicar que n se trata de um número par, caso contrário o retorno deve ser 0.

Resposta

Exercício Resolvido #6

Pontifícia Universidade Católica Do Rio Grande do Sul – PUC do Rio Grande do Sul, Funções e Procedimentos, Sílvia Moraes e Egídio Terra, Adaptação do exercício 06.

Faça uma função que recebe a idade de uma pessoa em dias, meses e anos e retorna essa idade expressa apenas em dias.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Vamos iniciar a declaração dessa função com a definição do seu escopo.

Como o resultado desse procedimento consiste em retornar a vida total de algo em dias, o tipo do seu retorno deve ser int. Além disso, o nome que podemos dar a essa função é v i d a E m D i a s . Por fim, basta fornecermos as informações dos parâmetros ao programa, nesse caso serão 3 números inteiros: d para dias, m para meses e a para anos.

Passo 2

Com o escopo da função definido, nós podemos desenvolver o código que ela executará.

A lógica é bastante simples, basicamente declaramos uma variável v i d a que é inicializada com a soma entre os dias recebidos como parâmetros, os meses multiplicados por 30 e os anos multiplicados por 365.

Ao final, basta retornamos o dado armazenado em v i d a , já que o mesmo se trata da soma de todas as representações (meses e anos) já convertidas em dias.

Resposta

Exercício Resolvido #7

Pontifícia Universidade Católica Do Rio Grande do Sul – PUC do Rio Grande do Sul, Funções e Procedimentos, Sílvia Moraes e Egídio Terra, Exercício 18.

Faça uma função que receba um valor inteiro e positivo e calcula o seu fatorial.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Como de costume, para criarmos essa função devemos começar pelo seu escopo.

Por ser uma função que calcula o fatorial de um número, o tipo de seu retorno é int. Além disso, nada melhor do que chamarmos ela de f a t o r i a l , pois é o cálculo que ela realiza. Por fim, basta dizermos para o programa os parâmetros que ela espera para funcionar, nesse caso é um único número n inteiro.

Passo 2

Com o escopo definido, podemos codificar normalmente os comandos utilizados para o cálculo do fatorial de um número.

A lógica desse código consiste em utilizar uma estrutura de repetição, nesse caso for, para a realização de multiplicações sucessivas com f a t até que o mesmo seja o fatorial de n e seja retornado ao término da execução do laço.

Resposta

Exercício Resolvido #8

Elaboração própria.

Faça uma função que receba uma caractere minúsculo e retorne esse mesmo caractere maiúsculo (não é necessário verificar a entrada).

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Vamos começar a declaração da nossa função pelo seu escopo.

Como essa função irá retornar um caractere, o seu tipo ideal de retorno é char. Além disso, por se tratar de uma função de conversão, podemos chamá-la de c o n v e r t e M a i u s c u l o . Por fim, basta informarmos ao programa os parâmetros que essa função espera, nesse caso um caractere c .

Passo 2

Como o enunciado nos diz que não é necessário verificar a entrada, podemos ter certeza de que só serão passados como parâmetro dessa função caracteres minúsculos.

Sendo assim, tudo o que devemos fazer é utilizarmos os nossos conhecimentos da tabela ASCII para realizar essa conversão. Isso pois, todos os caracteres na linguagem C podem ser tratados como números inteiros e como a letras maiúsculas são localizadas antes das minúsculas, basta realizarmos a subtração dessa diferença de localização (que é 32).

Resposta

Esse conteúdo é exclusivo para cadastrados.

Cadastre-se grátis no maior portal de exatas do Brasil!

Relaxa, não vamos publicar nada no seu nome.

  • Resumões direto ao ponto
    Resumões
    direto ao ponto
  • Exercícios resolvidos passo a passo
    Exercícios resolvidos
    passo a passo
  • Videoaulas incríveis
    Videoaulas
    incríveis
  • Aulões Salva-Vidas
    Aulões
    Salva-Vidas