Está en la página 1de 24

Estruturas de Dados

Unidade I Reviso da linguagem C


Funes em C

Professora: Aline Alves da Silva


E-mail: aline_alves_da_silva@yahoo.com.br

Sumrio

Definio

Prottipo de uma funo

Tipo de uma funo

Comando return

Definio de uma funo

Exemplo

Passagem de parmetros

Exerccios

Bibliografia

Definio

Uma funo um conjunto de instrues desenhadas para cumprir


uma tarefa particular e agrupadas numa unidade com um nome
para referenci-la;

As funes dividem grandes tarefas de computao em tarefas


menores, e permitem s pessoas trabalharem sobre o que outras
j fizeram, em vez de partir do nada;

A existncia de funes evita que o programador tenha de escrever


o mesmo cdigo repetidas vezes;

O grande princpio da linguagem estruturada dividir o programa


em funes.

Definio

Um programa em C pode conter uma ou mais funes, das q


uma deve ser a funo main( );

Os componentes necessrios para adicionar uma funo a


programa so: o prottipo da funo, a chamada funo
definio desta;

As funes so utilizadas para reaproveitar cdigo, facilitar a div


do trabalho necessrio para se construir um aplicativo etc;

Exemplos de funes da linguagem C: printf( ), scanf( ), pow(


rand( ) etc.

Prottipo de uma funo

A declarao de uma funo dita prottipo da funo, ou se


uma instruo geralmente colocada no incio do programa
estabelece o tipo da funo e os argumentos que ela recebe;

O prottipo de uma funo deve preceder a sua definio e a


chamada;

Quando chamamos a funo printf( ), devemos incluir o arq


stdio.h, pois l que est escrito o prottipo dela;
Exemplos:
float celsius( float fahr );
void imprimeDados( );

Tipo de uma funo

O tipo de uma funo definido pelo tipo de valor que ela retorna
meio do comando return;

Uma funo do tipo int quando retorna um valor do tipo int;

Se uma funo no retorna nada, ela do tipo void;

No slide anterior, o tipo da funo celsius float.

Comando return

O comando return termina a execuo da funo e retorna o con


para a instruo seguinte do cdigo de chamada;

Se, aps a palavra return, houver uma expresso, o valor des


retornado funo que chama. Esse valor convertido para o
da funo, especificado no seu prottipo;

Em C, a sintaxe de uma instruo return tem uma das trs for


seguintes:
return;
return expressao;
return (expressao);

Comando return

F u n e s d o tip o vo id po de m te r u m co m a n d o re
desacompanhado de expresso. Nesse caso, o comando re
serve para terminar a execuo da funo;

Em funes do tipo void, o comando return no obrigatrio.


funo do tipo void termina quando encontra a chave de fechame

Vrias instrues return podem fazer parte de uma funo,


somente uma ser executada;

Um valor retornado por uma funo pode ser atribudo a uma var
ou fazer parte de alguma expresso. (Ex.: c = celsius(f)).

Definio de uma funo

O cdigo C que descreve o que a funo faz denominado def


da funo;

A sintaxe para a definio de uma funo em C a seguinte:


tipo nome(declarao dos parmetros
)
{
instrues;
return valor;
}

Definio de uma funo

Sintaxe
Tipo
o tipo de valor que
return devolve;
Pode ser qualquer tipo vlido (int, float, ...);

Se nenhum tipo for especificado, o compilador assume qu

retorno inteiro;
S se pode devolver um nico valor.
Para

devolver m ais de um valor, deve-se utili


passagem de parmetro por referncia.

Definio de uma funo

Sintaxe
Parmetros
uma lista de variveis com seus respectivos tipos,

separadas por vrgula;


Uma funo pode no ter parmetro. Mesmo assim, os

parnteses so necessrios;
Os parmetros devem ser informados por quem utilizar a

funo;

Exemplo

Exemplo 1
#include <stdio.h>
float celsius( float fahr ) {
return (fahr 32) * 5.0/9.0;
}
int main() {
float fahr;
printf("Informe a temperatura em Fahrenheit:
); "
scanf("%f", &fahr);
printf("A temperatura em Celsius e' ,%f"
celsius( fahr ) );
}

Exemplo

Exemplo 2
#include <stdio.h>
int segundos ( int h, int m, int s );
int main() {
int hora, min, seg, segs;
printf("Digite a hora (hora:min:seg): ");
scanf("%d:%d:%d", &hora, &min, &seg);
segs = segundos(hora, min, seg);
printf("A hora em segundos e' %d", segs );
}
int segundos ( int h, int m, int s ) {
return (h*3600 + m*60 + s);
}

Exemplo

Exemplo 3
#include <stdio.h>
int fatorial(int n) {
int i, fat = 1;
for ( i = n; i > 1; i( -fat = fat * i;
return fat;
}
int main() {
int num;
printf("Digite um nmero: ");
scanf("%d", &num);
printf("Fatorial de %d = %d", num, fatorial(num));
}

Passagem de parmetros

Passagem de parmetros
Existem duas maneiras de se passar parmetros:
Por valor;
Por referncia.

Passagem de parmetros

Passagem de parmetros
Passagem de parmetros por valor:
Os dados so copiados para a varivel da funo;

Alteraes na varivel dentro da funo no afeta a varive

original que possua o valor.

Passagem de parmetros

Passagem de parmetros
Passagem de parmetros por valor:
Exemplo:
int quad(int a){
a = a*a;
return a;
}
int main(){
int n = 10;
printf(''a*a = %d, a = %d'', quad(n), n);
}

Passagem de parmetros

Passagem de parmetros
Passagem de parmetros por referncia:
O endereo de uma varivel copiado;

Esse endereo ser utilizado para acessar o valor da vari

Alteraes nesse endereo afetar a varivel original q

passou a informao.

Passagem de parmetros

Passagem de parmetros
Passagem de parmetros por referncia:

Exemplo:

void troca(int *a, int *b){


int aux = *a;
*a = *b;
*b = aux;
}
main(){
int x = 10, y = 20;
troca(&x, &y);
printf(x = %d, y = %d", x, y);
}

Exerccios
1. Escreva um programa que solicite dois nmeros reais e imprima o
maior deles. Use uma funo que faa a comparao dos dois nmeros
e retorne o maior deles.
2. Um nmero primo qualquer inteiro positivo que divsivel apenas
por si prprio e por 1. Escreva uma funo que receba um inteiro positivo
e, se este nmero for primo, retorna 1, caso contrrio, retorna 0. Em
seguida, implemente um programa que testa a funo criada.
3. Escreva uma funo que recebe um inteiro positivo e retorna o nsimo elemento da srie de Fibonacci. A srie de Fibonacci dada por 1,
1, 2, 3, 5, 8, 13,...Em seguida, teste a funo.

Exerccios
4. Escreva uma funo que receba o ano como argumento e retorne 1 se
for um ano bissexto e 0 se no for. Um ano bissexto se for divisvel por
4, mas no por 100. Um ano tambm bissexto se for divisvel por 400.
Escreva um programa que teste a sua funo.
5. Gregoriana para Juliana: Dados dia, ms e ano de uma data
gregoriana, escreva uma funo que converta essa data para a data
juliana correspondente. Utilize a seguinte frmula:
Data Juliana = (1461 * (ano + 4800 + (mes 14)/12))/4 +
(367 * (mes 2 12 * ( (mes 14)/12)))/12 (3 * ((ano + 4900 + (mes 14)/12)/100))/4 +
Dia - 32075

Exerccios
6. Dia da Semana: Escreva uma funo que receba dia, ms e ano e
calcule o dia da semana em que caiu essa data. Para isso, basta
transformar a data gregoriana em juliana (utilize a funo escrita no
exerccio anterior) e calcular o resto da diviso da data juliana por 7. A
funo dever retornar um nmero entre 0 e 6, indicando os seguintes
resultados:
0 Segunda-feira
1 Tera-feira
2 Quarta-feira
3 Quinta-feira
4 Sexta-feita
5 Sbado
6 Domingo

Exerccios
7 . Um nmero perfeito se ele igual soma de seus divisores
menores do que ele prprio. Assim, por exemplo, 6 perfeito, pois 6 = 1
+ 2 + 3.
a) Escreva uma funo iterativa denominada EhPerfeito(), que retorne 1
se o inteiro positivo recebido como argumento seja perfeito e 0 em caso
contrrio;
b) Escreva um programa que receba um nmero inteiro maior do que ou
igual a zero como entrada e imprima se o nmero perfeito ou no. O
programa deve terminar quando o usurio introduzir o valor 0

Bibliografia
Treinamento em linguagem C Victorine Viviane Mizrahi 2 Edio
2008 Captulo 5.

También podría gustarte