Post on 12-Apr-2016
description
Programação de Computadores para Engenharia
Prof. Diego Buchinger
Funções em C
Até o momento usamos algumas funções prontas que as
bibliotecas oferecem.
Os programas em C também aceitam funções
personalizadas do programador!
Funções = Rotinas = Sub-Programas
2
Introdução
Possuem a seguinte forma geral:
Tipo_de_retorno: um tipo de dado (int, char, float, double)
Nome_da_função: identificador para a função. Mesmas regras de
nomenclatura de variáveis
Parâmetros: identifica quais valores (e seus respectivos tipos) a
função vai receber. Se for desejado, uma função
também pode não ter parâmetros.
3
Funções - Introdução
Tipo_de_retorno nome_da_função ( parâmetros ){
corpo_da_função => instruções
}
4
Exemplo
5
Exemplo
Tipo de dado do resultado da função Parâmetros da função e
seus respectivos tipos Nome / identificador da função
Corpo da
função
O valor de resultado da função
6
Exemplo
OBS: perceba que, diferentemente de funções
matemáticas, uma função pode escrever algo na tela
através do printf e ler valores através do scanf.
O começo de programa que sempre usávamos agora fica mais
claro: trata-se de uma função!
o Qual o nome/identificador desta função?
o Qual o valor de retorno?
o Quais os parâmetros que ela recebe?
Precisamos escrever a função main porque um programa
sempre tem seu marco de inicio neste ponto.
7
Programa Principal
Uma função sempre retorna um único valor, mas pode
retornar antes de chegar ao fim do seu corpo/bloco
Note que podem haver mais de um ponto de retorno da
função, e esses pontos sempre indicam o fim da função
8
Resultado / Retorno
Para fazer executar o corpo de uma função (chamada de
função) dentro do programa principal, fazemos:
9
Considerações de Uso
As funções devem ser sempre definidas antes de sua
chamada. Assim, de acordo com essa especificação, o
exemplo abaixo resultaria em erro:
10
Posicionamento
As funções devem ser sempre definidas antes de sua
chamada. Assim, de acordo com essa especificação, o
exemplo abaixo resultaria em erro:
11
Posicionamento
NOTA: Alguns compiladores modernos permitem a definição da
função em qualquer ponto do programa, gerando apenas um aviso
(warning) de declaração implícita de função.
É possível ter funções sem parâmetros, basta omiti-los na
escrita da função:
12
Sem Parâmetros
É possível ter funções sem retorno (tipo void - vazio)
o Simplesmente omite-se o comando return no corpo da função
13
Sem Retorno
Regras de Escopo para variáveis
14
Cada variável possui um escopo, ou seja, a definição de
quais locais ela pode ser utilizada
O exemplo abaixo ilustra um erro, onde a variável salario é
utilizada fora de seu escopo
15
Escopo de variáveis
Cada variável possui um escopo, ou seja, a definição de
quais locais ela pode ser utilizada
O exemplo abaixo ilustra um erro, onde a variável salario é
utilizada fora de seu escopo
16
Escopo de variáveis
OBS: a variável salario foi
declarada somente na função main
e não pode ser usada em outra
função.
O escopo de uma variável pode ser:
o Local (variável local):
Quando uma variável é declarada dentro de um bloco de função
Só pode ser utilizada dentro do bloco em que foi declarada
Os valores só são armazenados enquanto o bloco onde a variável
foi declarada estiver sendo executado
o Global (variáveis globais):
Quando é declarada fora de qualquer bloco de função
Pode ser utilizada em qualquer local do programa
Seu valor é mantido até o final do programa
17
Escopo de variáveis
18
Exemplo
Escopo de variáveis
19
Exemplo
Escopo de variáveis
Uma variável global
Variáveis locais que só
podem ser utilizadas
na função aumento
Uma variável local que só podem
ser utilizadas na função main
Quando uma variável é passada como parâmetro para uma
função seu valor original não é alterado!
Isso acontece porque
estamos passando o
parâmetro por valor
(é realizada uma cópia do
valor original)
20
Passagem de Parâmetros
Saída
v => 7
x => 5
Podemos optar por passar uma variável como parâmetro
por referência de modo que, se o seu valor for alterado
na função, essa alteração permanece efetivada na variável.
21
Passagem de Parâmetro
Saída
v=> 7
x => 7
Faça um programa em C com uma função para calcular o
quadrado de um número e outra para calcular o cubo de um
número passado como parâmetro. O resultado deve ser
retornado pela função.
Adicione também uma função para calcular a soma dos
quadrados entre dois números inteiros quaisquer.
22
Exemplo
1 – Faça um programa em C que lê três números. Crie uma função para
calcular soma destes números e outra para encontrar e retornar o maior
valor entre estes números.
2 – Faça um programa em C com uma função para calcular a média de 4
valores (parâmetros) e retorne o resultado ao programa principal
3 – Faça um programa em C com uma função que calcula as raízes de uma
equação de segundo grau. A função deve ter a assinatura:
int resolveEquacao( int a, int b, int c, float* x1, float* x2) {
Onde a, b e c são os coeficientes da equação de segundo grau: ax² + bx + c
= 0, e x1 e x2 são as variáveis que devem receber os valores das raízes.
Note ainda que a função deve retornar um inteiro: se for possível calcular
as raízes deve-se retornar um. Se não for possível deve-se retornar zero. 23
Exercícios
4 – Escreva um programa em C que contenha uma função que recebe um único número inteiro como parâmetro e retorna o valor um se o número for primo, ou zero caso o número não seja primo (lembrando: um número primo é divisível apenas por um e por ele mesmo)
5 – Faça um programa em C com a seguinte estrutura na função main. Depois implemente as funções: (1) uma função que pede ao usuário para digitar o dia, mês e ano de uma data e lê estes valores, (2) uma função que verifica se a data está correta e (3) uma função que mostra a data em um formato adequado: dd/mm/aaaa
24
Exercícios
int dia, mes, ano;
int main( ){
leData( ); // (1)
verificaData( ); // (2)
mostraData( ); // (3)
}