Vous êtes sur la page 1sur 3

Programao estruturada: Funes estruturada:

Decomposio do algoritmo em mdulos (subprogramas)


Subprograma trecho de cdigo c/ estrutura semelhante dos programas executado quando chamado por outro trecho de cdigo

Funes na linguagem C
mdulos que agrupam um conjunto de comandos que so executados quando a funo chamada executam UMA tarefa especfica sempre retornam um nico valor (ou vazio) devem ser declaradas antes do uso (chamada) aps sua execuo, o fluxo do programa retorna ao ponto imediatamente aps a chamada da funo
2 Profa. Patrcia Pitthan

Vantagens modularizao estrutura lgica mais clara facilidade de depurao e teste reaproveitamento de cdigo

Profa. Patrcia Pitthan

Funes: Funes: sintaxe


<tipo_ret> nome_funo (lista_de_parmetros) { // declaraes locais // corpo da funo }

Funes em C quanto origem


Pr-definidas em alguma biblioteca
#include <math.h> ... double raizquadrada, numero; ... raizquadrada = sqrt(numero); ...

tipo_ret: tipo de valor retornado pela funo (default: inteiro) nome_funo: identificador da funo lista_de_parmetros: tipo de cada parmetro seguido do identificador, separados por vrgulas (parmetros formais)
sem parmetros parnteses obrigatrios

Profa. Patrcia Pitthan

Definidas pelo usurio


Funes criadas pelo programador
4 Profa. Patrcia Pitthan

Funes em C quanto ao retorno


Sem retorno (ou retorno vazio) = Procedimentos
Tipo retornado sempre void (vazio) Ex.: void imprime( ) ...

Funo sem retorno e sem parmetros


#include <stdio.h> #include <stdlib.h> void desenha(void); //prototype da funo int main( ){ int i; no utiliza parmetros desenha(); printf("Numeros de 1 a 5\n"); desenha(); void desenha(void){ for (i=1;i<=5;i++) int i; printf("%d\n",i); for (i=1;i<20;i++) desenha(); printf("*"); } no retorna valor printf("\n"); }
6 Profa. Patrcia Pitthan

Com retorno
Tipo retornado diferente de void Ex.: int soma( ) ...

Profa. Patrcia Pitthan

Profa. Patrcia Pitthan

Funo com retorno


Funes: podem ou no retornar um valor
Funes sem retorno/void = procedimentos

Ex.: funo com retorno


#include <stdio.h> #include <stdlib.h> int maior(int num1, int num2); int maior(int num1, int num2){ int m; if (num1 > num2) m = num1; else m = num2; return m; }

Tipo retornado da funo diferente de void


Deve possuir um comando return

Quando uma funo encerra sua execuo ?


Encontra fim do cdigo } Encontra (e executa) o comando return

Pode haver mais de um comando return em uma mesma funo


Apenas um ser ativado Funo encerrada na ativao do primeiro return
7 Profa. Patrcia Pitthan

int main(){ int n1, n2; printf("\ndigite 2 valores: "); scanf("%d%d", &n1, &n2); printf("\n Maior entre %d e %d = %d, n1, n2, maior(n1, n2)); printf("\n"); return 0; prototype da funo maior } ... outra possibilidade: int maior(int,int);
8 Profa. Patrcia Pitthan

Parmetros
forma de comunicao da funo com quem as chama declarados no cabealho das funes (parmetros formais) so locais as funes toda funo que apresenta parmetros na declarao, deve ser chamada com parmetros (argumentos) de igual nmero, tipo e na mesma ordem

Ex.: funo com parmetro (1)


#include <stdio.h> #include <stdlib.h> void fibonacci (int x){ int i, t1 = 0, t2 = 1, prox; for (i = 1;i <= x; i++){ prox = t1 + t2; printf("\n%8d", prox); t2 = t1; t1 = prox; } } ... // continua

Parmetro formal (na declarao da funo)

x existe na funo fibonacci e n existe na funo main


Profa. Patrcia Pitthan

Profa. Patrcia Pitthan

10

Ex.: funo com parmetro (2)


...

Passagem de parmetros
possibilitam que se defina sobre quais dados a funo deve operar Passagem de parmetros por valor Passagem de parmetros por referncia

int main(){ int n; // n = nro de termos do{ printf("\nDigite numero de termos: "); scanf("%d", &n); if (n < 1) printf("\nNumero de termos deve ser >= 1\n"); } while (n < 1); printf("\nSerie de Fibonacci:\n); Argumento (na fibonacci(n); chamada da printf("\n"); funo) }
11 Profa. Patrcia Pitthan

12

Profa. Patrcia Pitthan

Profa. Patrcia Pitthan

Passagem de parmetros por valor


Passa uma cpia do valor Alteraes no valor dos parmetros no afetam o contedo da varivel no escopo da funo principal O parmetro se comporta como uma varivel local At agora todos os exemplos e exerccios usavam passagem por valor

Ex.: funo fatorial


double fatorial(int x){ Alteraes em x no double fat = 1; afetam o contedo de n int i; no escopo do main for(i=x; i>1; i--) fat=fat*i; return fat; } int main(){ int n; Valor de n na chamada double res; fatorial(n) copiado p/ x scanf("%d", &n); res=fatorial(n); printf("fatorial de %d eh %.2lf\n", n, res); }
14 Profa. Patrcia Pitthan

13

Profa. Patrcia Pitthan

Exerccios: Exerccios:
1) Faa uma funo que receba 3 valores inteiros, ordene-os crescentemente e os imprima ordenados. 2) Faa uma funo que receba um nmero inteiro, verifique e retorne se o nmero primo. 3) Faa uma funo que receba um nmero e retorne a quantidade de divisores. 4) Faa uma funo que receba uma palavra e imprima as letras que se encontram nas posies mpares de trs para frente.

Exerccios: Exerccios:
5) Fazer um programa que contenha as seguintes funes:
a) funo que apresenta os mltiplos de 5 entre 1 e N (inteiro e positivo) informado e retorna a quantidade de mltiplos b) funo que solicita as coordenadas de dois pontos no plano cartesiano (valores float) e retorna a distncia entres esses dois pontos c) funo que solicita um caractere e o apresenta 50 vezes em uma linha

15

Profa. Patrcia Pitthan

16

Profa. Patrcia Pitthan

Profa. Patrcia Pitthan

Vous aimerez peut-être aussi