Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPedro Gil Borja Alterado mais de 8 anos atrás
1
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez
2
Funções Um ponto chave na resolução de um problema complexo é conseguir quebrá-lo em subproblemas menores. Ao criarmos um programa para resolver um problema, é crítico quebrar um código grande em partes menores, fáceis de serem entendidas e administradas.
3
Definição de uma função Uma função é definida da seguinte forma: tipo nome(tipo parâmetro1,..., tipo parâmetroN) { comandos; return valor de retorno; } Toda função deve ter um tipo (int, char, float, etc). Esse tipo determina qual será o tipo de seu valor de retorno. Os parâmetros são variáveis, que são inicializadas com valores indicados durante a invocação da função. O comando return devolve para o invocador da função o resultado da execução desta.
4
Exemplo de função Por exemplo, suponha um programa para calcular o numero de combinações de n eventos em conjuntos de p eventos, p <=n. Sem o conceito de função, teríamos que repetir três vezes as instruções para calculo do fatorial de um numero x. Com o conceito de função, precisamos apenas escrever essas instruções uma única vez e substituir x por n, p, e (n-p) para saber o resultado de cada calculo fatorial.
5
Exemplo de função #include double fatorial(int x); /* prototipo da funcao */ /* escopo da funcao */ double fatorial(int x){ double fat=1; int i; for (i=x; i > 1; i--) fat = fat * i; return(fat); }
6
Exemplo de função /* funcao principal */ int main(){ int n,p,C; scanf("%d %d",&n,&p); if ((p >= 0)&&(n >= 0)&&(p <= n)){ /* chamada da funcao */ C = (int)(fatorial(n)/(fatorial(p)*(fatorial(n-p)))); printf("%d \n",C); } return 0; }
7
Variáveis locais Variáveis locais só existem na memória enquanto a função estiver sendo executada e só podem ser usadas no escopo desta função. No exemplo, x,i e fat são variáveis locais e são alocadas e desalocadas três vezes na memória. A mesma observação é válida com relação as variáveis locais n, p, e C da função principal, porém essas permanecem na memória durante toda a execução do programa.
8
Passagem de parâmetros No exemplo, o valor de n na chamada fatorial(n) é passado para uma cópia x da variável n. Qualquer alteração em x não afeta o conteúdo de n no escopo da função principal. Dizemos então que o parâmetro e passado por valor.
9
Passagem de parâmetros Porém, pode acontecer de desejarmos alterar o conteúdo de uma ou mais variáveis no escopo da função principal. Neste caso, os parâmetros devem ser passados por referência. Ou seja, a função cria uma cópia do endereço da variável correspondente na função principal em vez de uma cópia do seu conteúdo. Qualquer alteração no conteúdo deste endereço é uma alteração direta no conteúdo da variável da função principal. Por exemplo, o programa acima requer que p <= n. Caso contrário, podemos trocar o conteúdo dessas variáveis.
10
Passagem de parâmetros void troca(int *x, int *y){ int aux; aux = *x; /* conteudo de x e atribudo ao conteudo de aux */ *x = *y; /* conteudo de y e atribudo ao conteudo de x */ *y = aux; /* conteudo de aux e atribudo ao conteudo de y */ } Observação: troca é um exemplo de função tipo void ou também chamada procedimento e será visto nos próximos slides.
11
Passagem de parâmetros int main(){ int n,p,C; scanf("%d %d",&n,&p); if (p > n) troca(&p,&n); /* passa os enderecos de p e de n */ if ((p >= 0)&&(n >= 0)){ C = (int)(fatorial(n)/(fatorial(p)*(fatorial(n-p)))); printf("%d \n",C); } return 0; }
12
Procedimentos ou funções tipo void O procedimento corresponde a uma função do tipo void (tipo de dado indefinido) que não possui o comando return devolvendo algum valor para a função chamadora. Por exemplo, a função abaixo imprime o número que for passado para ela como parâmetro: void imprime (int numero) { printf ("Número %d\n", numero); }
13
Procedimentos ou funções tipo void # include void imprime (int numero) { printf ("Numero %d\n", numero); } int main () { imprime (10); imprime (20); return 0; }
14
Exemplos Implemente os algoritmos 4 ao 15 dos slides de Modularização da disciplina Algoritmos e Estrutura de Dados I.
15
Exemplo de função 6. #include int primo(inteiro: n){ int:i; i=2; while(i<=sqrt(n)) { if ((n%i)=0) return(0); i=i+1; } return(1); } int main(){ inteiro:i,par scanf (“%d”,&par); while (par>0) { for (i=0; i<par; i++) if (primo(i)==1 && primo (par- i)==1){ printf(“o par eh: %d e %d”, i, par-i); i=par; } scanf (“%d”,&par); } return 0; }
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.