Funções
Estrutura de Dados
Marco Antonio Montebello Júnior
[email protected]
Funções
Definições

É um bloco de código do programa que pode
ser usado diversas vezes em uma execução.

Seção de código independente e autônoma,
escrita para desempenhar uma tarefa
específica.
Linguagem C - Estrutura de Dados
Funções
Características






Permite que o programa fique mais legível e
melhor estruturado;
Reutilização de código;
Normalmente contém protótipo e definição
da função;
Cada função tem um nome único;
Uma das características mais importantes da
Linguagem C;
Pode ter qualquer nome exceto main.
Linguagem C - Estrutura de Dados
Variáveis Locais e Globais



Uma função pode chamar outras funções;
O bloco que compreende o corpo da função
(bloco entre { }) está escondido do resto do
programa;
Esse bloco não pode afetar nem ser afetado
por outras partes do programa, a não ser que
o código utilize variáveis globais.
Linguagem C - Estrutura de Dados
Variáveis Locais



São declaradas dentro do main ou de uma
função criada pelo usuário;
Toda variável declarada dentro de um bloco { }
podem ser referenciadas apenas dentro deste
bloco;
Existem apenas durante a execução do bloco
de código no qual estão declaradas.
Linguagem C - Estrutura de Dados
Variáveis Globais




São conhecidas por todo o programa;
Podem ser utilizadas em qualquer parte do
código;
Permanecem com o seu valor durante toda a
execução do programa;
Deve ser declarada fora de qualquer função
(até mesmo da função main).
Linguagem C - Estrutura de Dados
Variáveis Locais e Globais
void Linha(int iTam); //Protótipo da função
int iColuna; //Declaração de Variável GLOBAL
main() //Função principal MAIN
{
int iValorLinha; //Declaração de Variável LOCAL
...
iColuna = 10;
Linha(iValorLinha);
...
}
void Linha(int iTam) //Definição da função
{
int iCont; //Declaração de Variável LOCAL
...
for(iCont = 0; iCont < iTam; iCont++)
...
for(iCont = 0; iCont < iColuna; iCont++)
...
}
Linguagem C - Estrutura de Dados
Protótipo da Função

Descrição da função que será definida
posteriormente no programa.
tipo_retorno <nome_da_função>(tipo_p <param1>, tipo <param2>, ...);
tipo_retorno: tipo de dado que será retornado pela função;
nome_da_função: nome que será dado a função, deve descrever
resumidamente a funcionalidade da função;
tipo_p e paramX: tipo e nome do(s) parâmetro(s) da função. Os
parâmetros são separados por , (vírgula);

Sempre termina com ; (ponto e vírgula).
Linguagem C - Estrutura de Dados
Protótipo da Função
int iSoma (int iValorA, int iValorB);
float fMedia (float fNota1, float fNota2);
void Mensagem();
void Calculo(float fValorF, int iValorI, char cResp);
Linguagem C - Estrutura de Dados
Definição / Declaração da
Função





É a função propriamente dita;
Composta de cabeçalho e corpo da função;
O cabeçalho da função é idêntico ao protótipo
com exceção do ; (ponto e vírgula);
O corpo da função deve estar entre { ... };
Aparecem no mesmo código-fonte e após a
função main() ou em arquivo independente.
Linguagem C - Estrutura de Dados
Definição da Função
tipo_retorno <nome_da_função>(tipo_p <param1>, tipo <param2>, ...)
{
... //Comando(s)
}
tipo_retorno: tipo de dado que será retornado pela função;
nome_da_função: nome que será dado a função, deve descrever
resumidamente a funcionalidade da função;
tipo_p e paramX: tipo e nome do(s) parâmetro(s) da função. Os
parâmetros são separados por , (virgula);
Linguagem C - Estrutura de Dados
Definição da Função
int iSoma (int iValorA, int iValorB)
{
int iResultado;
iResultado = iValorA + iValorB;
return(iResultado);
}
void Mensagem()
{
printf(“Minha 1a. Função em Linguagem C!!!”);
}
Linguagem C - Estrutura de Dados
Funções – Exemplo Geral
Protótipo:
float fMedia(float fNota1, float fNota2);
Chamada:
fMediaAluno = fMedia(10, 8);
ou
printf(“Resultado: %f!”, fMedia(5, 9));
Definição:
float fMedia(float fNota1, float fNota2)
{
float fMed;
fMed = (fNota1 + fNota2)/2;
return(fMed);
//return((fVal1 + fVal2)/2);
}
Linguagem C - Estrutura de Dados
Parâmetros e Argumentos

Parâmetros





Entradas que a função recebe;
Guardadores de lugar para um argumento;
Fixos;
Contém tipo e o nome do(s) dado(s);
Argumentos

Valores reais
Linguagem C - Estrutura de Dados
Passagem de parâmetros por
Valor


Valor de um argumento é copiado para o parâmetro
formal da função;
As alterações no processamento não alteram as
variáveis.
Protótipo:
int iQuadrado(int iValor);
Chamada:
iResult = iQuadrado(10);
Definição:
int iQuadrado(int iValor)
{
int iTemp;
iTemp = iValor * iValor;
return(iTemp);
}
Linguagem C - Estrutura de Dados
Passagem de parâmetros
Referência


Permite a alteração do valor de uma variável;
É necessária a utilização de ponteiros;
Protótipo:
void iTroca(int *iValA, int *iValB);
Chamada:
iTroca(&iNumA, &iNumB);
Definição:
void iTroca(int *iValA, int *iValB)
{
int iTemp;
iTemp = *iValA;
*iValA = *iValB;
*iValB = iTemp;
}
Linguagem C - Estrutura de Dados
Funções que NÃO retornam
valores


São declaradas como void;
O corpo da função contém apenas instruções e
comandos.
Protótipo:
void Mensagem(int iVezes);
Chamada:
Mensagem(5);
Definição:
void Mensagem (int iVezes)
{
int i;
for(i = 0; i < iVezes; i++)
printf(“Ola mundo %i”, i);
}
Linguagem C - Estrutura de Dados
Funções que RETORNAM
valores



São declaradas como char, int, float ou double;
O valor do retorno deve ser armazenado em
uma variável;
O corpo da função além das instruções e
comandos contém sempre o comando return.
Linguagem C - Estrutura de Dados
Funções que RETORNAM
valores
Protótipo:
float fSoma(float fVal1, float fVal2);
Chamada:
fResultado = fSoma(10, 20);
ou
printf(“Resultado: %f!”, fSoma(15, 35));
Definição:
float fSoma(float fVal1, float fVal2)
{
float fRes;
fRes = fVal1 + fVal2;
return(fRes); //return(fVal1 + fVal2);
}
Linguagem C - Estrutura de Dados
Exercícios

Criar uma função para exibir uma mensagem
qualquer na tela.

Escrever uma função que calcule a média 2
números do tipo float e retorne o valor
calculado da média;

Criar uma função que calcula uma equação
do 2o. Grau
Linguagem C - Estrutura de Dados
Exercícios

Criar uma função que converte a temperatura
de graus Celsius para Fahrenheit ou vice-versa


c= 5.0 / 9.0 * (f-32).
f = 9.0 / 5.0 * c + 32

Criar um programa calculadora, utilizando
funções para somar, subtrair, multiplicar e dividir

Criar uma função que calcule o fatorial de um
número fornecido pelo usuário.
Linguagem C - Estrutura de Dados
Download

int - Objetivo Sorocaba