Anda di halaman 1dari 24

Funes em C

Programao de Computadores para Engenharia


Prof. Diego Buchinger

Introduo

At o momento usamos algumas funes prontas que as


bibliotecas oferecem.

Os programas em C tambm aceitam funes


personalizadas do programador!
Funes = Rotinas = Sub-Programas

Funes - Introduo
Possuem a seguinte forma geral:

Tipo_de_retorno nome_da_funo ( parmetros ){


corpo_da_funo => instrues
}

Tipo_de_retorno: um tipo de dado (int, char, float, double)


Nome_da_funo: identificador para a funo. Mesmas regras de
nomenclatura de variveis
Parmetros: identifica quais valores (e seus respectivos tipos) a
funo vai receber. Se for desejado, uma funo
tambm pode no ter parmetros.
3

Exemplo

Exemplo
Tipo de dado do resultado da funo

Parmetros da funo e
seus respectivos tipos

Nome / identificador da funo

Corpo da
funo
O valor de resultado da funo

Exemplo

OBS: perceba que, diferentemente de funes


matemticas, uma funo pode escrever algo na tela
atravs do printf e ler valores atravs do scanf.

Programa Principal
O comeo de programa que sempre usvamos agora fica mais

claro: trata-se de uma funo!


o Qual o nome/identificador desta funo?
o Qual o valor de retorno?

o Quais os parmetros que ela recebe?

Precisamos escrever a funo main porque um programa

sempre tem seu marco de inicio neste ponto.

Resultado / Retorno

Uma funo 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


funo, e esses pontos sempre indicam o fim da funo

Consideraes de Uso

Para fazer executar o corpo de uma funo (chamada de


funo) dentro do programa principal, fazemos:

Posicionamento

10

As funes devem ser sempre definidas antes de sua


chamada. Assim, de acordo com essa especificao, o
exemplo abaixo resultaria em erro:

Posicionamento

As funes devem ser sempre definidas antes de sua


chamada. Assim, de acordo com essa especificao, o
exemplo abaixo resultaria em erro:

NOTA: Alguns compiladores modernos permitem a definio da


funo em qualquer ponto do programa, gerando apenas um aviso
(warning) de declarao implcita de funo.

11

Sem Parmetros

12

possvel ter funes sem parmetros, basta omiti-los na


escrita da funo:

Sem Retorno

possvel ter funes sem retorno (tipo void - vazio)


o Simplesmente omite-se o comando return no corpo da funo

13

Regras de Escopo para variveis

14

Escopo de variveis
Cada varivel possui um escopo, ou seja, a definio de
quais locais ela pode ser utilizada
O exemplo abaixo ilustra um erro, onde a varivel salario
utilizada fora de seu escopo

15

Escopo de variveis
Cada varivel possui um escopo, ou seja, a definio de
quais locais ela pode ser utilizada
O exemplo abaixo ilustra um erro, onde a varivel salario
utilizada fora de seu escopo

OBS: a varivel salario foi


declarada somente na funo main
e no pode ser usada em outra
funo.

16

Escopo de variveis

O escopo de uma varivel pode ser:


o Local (varivel local):

Quando uma varivel declarada dentro de um bloco de funo


S pode ser utilizada dentro do bloco em que foi declarada
Os valores s so armazenados enquanto o bloco onde a varivel
foi declarada estiver sendo executado

o Global (variveis globais):


Quando declarada fora de qualquer bloco de funo
Pode ser utilizada em qualquer local do programa

Seu valor mantido at o final do programa


17

Escopo de variveis
Exemplo

18

Escopo de variveis
Exemplo

Uma varivel global

Variveis locais que s


podem ser utilizadas
na funo aumento

19

Uma varivel local que s podem


ser utilizadas na funo main

Passagem de Parmetros

Quando uma varivel passada como parmetro para uma


funo seu valor original no alterado!
Isso acontece porque
estamos passando o
parmetro por valor
( realizada uma cpia do
valor original)
Sada

v => 7
x => 5
20

Passagem de Parmetro

Podemos optar por passar uma varivel como parmetro


por referncia de modo que, se o seu valor for alterado
na funo, essa alterao permanece efetivada na varivel.

Sada
v=> 7
x => 7

21

Exemplo

Faa um programa em C com uma funo para calcular o


quadrado de um nmero e outra para calcular o cubo de um
nmero passado como parmetro. O resultado deve ser
retornado pela funo.
Adicione tambm uma funo para calcular a soma dos
quadrados entre dois nmeros inteiros quaisquer.

22

Exerccios
1 Faa um programa em C que l trs nmeros. Crie uma funo para
calcular soma destes nmeros e outra para encontrar e retornar o maior
valor entre estes nmeros.
2 Faa um programa em C com uma funo para calcular a mdia de 4
valores (parmetros) e retorne o resultado ao programa principal
3 Faa um programa em C com uma funo que calcula as razes de uma
equao de segundo grau. A funo deve ter a assinatura:
int resolveEquacao( int a, int b, int c, float* x1, float* x2) {

Onde a, b e c so os coeficientes da equao de segundo grau: ax + bx + c


= 0, e x1 e x2 so as variveis que devem receber os valores das razes.
Note ainda que a funo deve retornar um inteiro: se for possvel calcular
as razes deve-se retornar um. Se no for possvel deve-se retornar zero.
23

Exerccios
4 Escreva um programa em C que contenha uma funo que recebe
um nico nmero inteiro como parmetro e retorna o valor um se o
nmero for primo, ou zero caso o nmero no seja primo
(lembrando: um nmero primo divisvel apenas por um e por ele
mesmo)

24

5 Faa um programa em C com a seguinte estrutura na funo


main. Depois implemente as funes:
(1) uma funo que pede ao usurio para int dia, mes, ano;
digitar o dia, ms e ano de uma data e l int main( ){
estes valores, (2) uma funo que verifica
leData( ); // (1)
se a data est correta e (3) uma funo
verificaData( ); // (2)
que mostra a data em um formato
mostraData( ); // (3)
adequado: dd/mm/aaaa
}

Anda mungkin juga menyukai