1 / 11

Funções: passagem de parâmetros

Funções: passagem de parâmetros. Aluno: Kaynã Vasconcelos Santos Matéria: Estrutura de dados e algoritmos I Turma: 020200 Professor: Danilo Silva dos Santos. passagem de parâmetros.

Download Presentation

Funções: passagem de parâmetros

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Funções: passagem de parâmetros Aluno:Kaynã Vasconcelos Santos Matéria: Estrutura de dados e algoritmos I Turma: 020200 Professor: Danilo Silva dos Santos

  2. passagem de parâmetros • A linguagem de programação C permite que os parâmetros sejam passados para as funções de duas maneiras, por valor e por referência.

  3. Passagem por valor •  A função recebe uma cópia da variável que é fornecida quando é chamada. Todas as alterações feitas dentro da função não afetarão os valores originais. • O valor da expressão é calculado, e o valor resultante é passado para a execução da função.

  4. Exemplo 1 • #include<stdio.h> • int soma(int x, int y){ • return(x+y);} • intmain(){ • int a, b, c; • a= 4; • b=2; • c=soma(a,b); • printf("%d",c); • printf • }

  5. Passagem por valor • É a forma mais comum utilizada para passagem de parâmetros. Considerando as funções trigonométricas, seno, cosseno e tangente. Podemos ter a função seno, recebendo o valor de um ângulo e devolvendo o seno desse ângulo. Se tivermos as funções seno e cosseno, podemos definir uma função tangente.

  6. Exemplo 2 • float seno (float angulo);float cosseno (float angulo);float tangente (float angulo) {float s, c;s = seno(angulo);c = cosseno(angulo);return s/c;}

  7. Passagem por valor • Essa função calcula o seno antes de calcular o cosseno.Se a função seno modifica-se o valor do parâmetro angulo, o valor passado para a função cosseno seria diferente do valor original usado para o seno, e o resultado da função tangente estaria incorreto. A passagem por valor evita esse tipo de erro através da criação de variáveis locais para os parâmetros. Quando uma função é chamada, essas variáveis são carregadas, como em atribuições, antes do início da execução do corpo da função.

  8. Passagem por referência • Neste caso o que é enviado para a função é uma referência às variáveis utilizadas, e não uma simples cópia, pelo que as alterações realizadas dentro da função irão certamente alterar os valores contidos nessas variáveis.

  9. Exemplo 1 • #include<stdio.h> • void troca(int *a, int *b){ • inttemp; • temp=*a; •         *a=*b; •         *b=temp; • } • intmain(){ • int a=2,b=3; • printf("Antes de chamar a função :\na=%d\nb=%d\n",a,b); •         troca(&a,&b); • printf("Depois de chamar a função:\na=%d\nb=%d\n",a,b); • return 0; • }

  10. Utilidade:Passagem por referencia • Quando precisamos criar uma função que devolva mais de um valor, temos que definir esses parâmetros com um caractere '*' no protótipo da função, e ao chamar a função, os parâmetros utilizados na chamada correspondentes à saída precisam ser precedidos pelo caractere '&' para indicar que eles podem ser modificados pela função chamada. • Um exemplo são funções que trabalham com números imaginários(precisam retornar 2 valores).

  11. Exemplo 2 • #include <stdio.h>#include <stdlib.h> • void complexo2 (float *r, float *t){float real;real = (*r * *r) - (*t * *t);*t = 2 * *r * *t;*r = real;} • void complexo2 (float *r, float *t);intmain () {float a, b;printf ("Entre com um numero complexo (2 numeros inteiros): ");scanf("%f %f", &a, &b);complexo2 ( &a, &b);printf("O quadrado do número complexo é %f + i %f\n", a, b);system("pause");return 0;}

More Related