Sunteți pe pagina 1din 22

Linguagem C

(Funes)

Prof.: Carlos Maurcio Nascimento


mauricio@iff.edu.br

By Mark Douglas

Agenda
Definio;
Criao de novas funes;
Parmetros e valor de retorno;
Variveis Locais
Tempo de Vida;
Escopo.

Modelo de Pilha;
Exemplo de programa com vrias funes.

By Mark Douglas

Definio de Funo
So procedimentos que implementam uma
funcionalidade bem definida e podem ser executados
(chamados) por outros cdigos (outras funes)
Permitem estender a linguagem C;
Permitem estruturar melhor o cdigo;
Fica mais fcil entender e atualizar o cdigo.

Podem ser re-usadas em outros programas.

Bons programas, em geral, so compostos por vrias


funes.
By Mark Douglas

Sintaxe de Funo em C

O nome identifica a funo e no pode ter duas funes com


mesmo nome;

Pode receber parmetros de entrada, especificados entre


parnteses

Para cada parmetro define-se: tipo nome;


Os parmetros so separados por vrgula;
Para funo sem parmetros, usa-se (void).

Pode ter um tipo de retorno (se no tiver usa-se void);

Corpo da funo consiste no bloco de comandos da funo.


By Mark Douglas

Princpio da Coeso Forte


Uma funo deve implementar uma e
apenas uma funcionalidade bem
definida
Uma funo deve ter apenas uma
responsabilidade;
Vrias funcionalidades distintas devem ser
implementadas usando-se vrias funes,
uma funo para cada funcionalidade.
By Mark Douglas

Exemplo
Celsius para Fahrenheit
No programa de converso de
temperatura em Celsius para Fahrenheit
seria melhor criar uma funo para esta
funcionalidade bem definida:

By Mark Douglas

Exemplo
Celsius para Fahrenheit
Vantagens do uso da funo:
Organizao do cdigo
A funo main fica mais limpa e fcil de entender;

Aumentar o potencial de re-uso da funo


celsius_fahrenheit por outros programas;
Facilita a manuteno
Se tiver que mudar algo na converso somente
muda a funo celsius_fahrenheit e a funo main (e
outros programas) permanece inalterada.
By Mark Douglas

Exemplo
Celsius para Fahrenheit
Programa completo:

By Mark Douglas

Parmetros
Na chamada de uma funo os valores
passados devem corresponder aos parmetros
em nmero e tipo
Ex: uma funo que espera receber dois
parmetros, o primeiro int e o segundo float,
tem que receber valores deste tipos e nesta
ordem, ao ser chamada.
Pode ser passada um expresso com parmetro
(ser passado o resultado)
Ex: volume = volume_cilindro(raio, 2*altura).
By Mark Douglas

Valor de Retorno
Uma funo que no tem valor de retorno (retorna
void) tambm chamada de procedimento
Ex: void imprimirTemperatura(float t)

Uma funo com valor de retorno uma


expresso que resulta no valor retornado
Portanto, uma chamada de funo pode aparecer
dentro de uma expresso maior
Ex: volume = volume_cilindro(raio, altura) / 2.0

By Mark Douglas

Variveis Locais
Uma varivel declarada dentro de uma
funo chamada de varivel local
Uma varivel local tem seu tempo de vida
definido pela funo que a declarou
A varivel somente existe durante a execuo da
funo, depois seu espao de memria liberado
Por isso tambm so chamadas de variveis automticas
No incio da execuo da funo, as variveis so
alocadas, sendo liberadas assim que a funo retorna.

By Mark Douglas

Variveis Locais
O escopo da varivel local a funo que a define
A varivel local s visvel (i.e. pode ser acessada)
dentro da funo que a define;
Uma funo no tem acesso a variveis declaradas por
outras funes;

Parmetros tambm so variveis automticas,


inicializadas com os valores passados
Parmetros tm o mesmo escopo e tempo de vida de
variveis locais.

By Mark Douglas

Modelo de Pilha
A alocao de variveis automticas
(parmetros e variveis locais) se d na
pilha de execuo do programa
Na chamada, quando uma declarao de uma
varivel (ou parmetro) encontrada o espao
no topo da pilha associado varivel;
Quanto o tempo de vida termina o espao
correspondente do topo da pilha liberado
A varivel (ou parmetro) desempilhada.
By Mark Douglas

Exemplo de
Pilha de Execuo

By Mark Douglas

Exemplo de Vrias Funes


Construir um programa que receba as dimenses da
pea (altura(h), base(b), espessura (e) e dimetro do
furo(d) e exiba o volume e a rea superfcie da pea.

By Mark Douglas

Exemplo de Vrias Funes

Vamos calcular por partes:


primeiro calcular objetos mais
simples e depois, por
composio, calcular o
resultado.

Podemos identificar as
seguintes funes para
objetos mais simples:

Volume da caixa;
Volume do cilindro;
rea externa da caixa;
rea externa do cilindro;
rea do retngulo;
rea do Crculo.

By Mark Douglas

Exemplo de Vrias Funes


Funes:

By Mark Douglas

Exemplo de Vrias Funes


1. O volume da pea a
soma dos volumes das
duas caixas, menos os
volumes dos dois
cilindros;
2. A rea da pea a soma
das reas das duas
caixas e as reas dos
dois cilindros, menos
duas reas retangulares
e quatro reas circulares.

By Mark Douglas

Exemplo de Vrias Funes

By Mark Douglas

Exerccios
1. No programa para clculo de volume e rea da
superfcie da pea em forma de L, crie duas
funes auxiliares adicionais para calcular o
volume e a rea, respectivamente, de uma
caixa com um furo cilndrico. As funes devem
receber como parmetros as dimenses da
caixa com furo: altura, base, espessura e
dimetro do furo. Depois reescreva a funo
main para que utilize esta funes.

By Mark Douglas

Exerccios
2. Escreva um programa, estruturado em diversas
funes, para calcular o volume de uma pea
formada por uma esfera com um furo cilndrico,
dados os valores de d e D conforme ilustrado na
Figura abaixo. Sabe-se que o volume de uma
calota esfrica de altura h, numa esfera de raio
R :

Volume da Esfera de raio r:

By Mark Douglas

Reconhecimento
Esta apresentao foi baseada nas
notas de aula dos professores
Waldemar Celes e Roberto
Ierusalimschy, do Departamento de
Informtica da PUC-Rio.

By Mark Douglas

S-ar putea să vă placă și