14
Programação em linguagem C: funções TE207 – Técnicas de Programação em Engenharia Elétrica I Prof. Vitor Yano – DELT/UFPR – [email protected]

te207-aula12

Embed Size (px)

DESCRIPTION

...........

Citation preview

Page 1: te207-aula12

Programação em linguagem C:funçõesTE207 – Técnicas de Programação em Engenharia Elétrica IProf. Vitor Yano – DELT/UFPR – [email protected]

Page 2: te207-aula12

Funções

Uma função é um conjunto de comandos agrupados em um bloco que recebe um nome e pode ser chamado através deste;

Vantagens:

Permite o reaproveitamento de código;

Evita a repetição de trechos de código usados muitas vezes;

Permite a alteração de um trecho de forma mais simples (escopo de variáveis independente);

Simplificação dos blocos do programa, facilitando o entendimento.

Page 3: te207-aula12

Declaração

Sintaxe:tipo nome(lista_de_parametros) {

//corpo da função

...

return valor;

}

Page 4: te207-aula12

Função matemática

f(x,y,z) = x2 + 3y + yz

fParâmetros Retorno

Page 5: te207-aula12

Sintaxe

Tipo da função: toda função pode retornar um valor. O tipo da função define o tipo do valor que será retornado. Quando não há retorno, utiliza-se o tipo void.

Nome da função: é o rótulo pelo qual a função será chamada. As regras para nome de função são as mesmas para os nomes de variáveis;

Parâmetros: são os valores de entrada da função, declarados como variáveis e separados por vírgula;

Corpo da função: são os comandos executados pela função;

Valor de retorno: é a saída da função, que é retornada para o comando que a chamou. O comando return encerra imediatamente a função, retomando à linha do programa que a chamou.

Page 6: te207-aula12

Declaração

Exemplo:float soma(float n1, float n2) {

float s;

s=n1+n2;

return s;

}

Page 7: te207-aula12

Declaração

Exemplo:float f(float x, float y, float z) {

return x^2+3*y+y*z;

}

Page 8: te207-aula12

Chamada da função

#include <stdio.h>

float f(float x, float y, float z) {float r=x*x+3*y+y*z;return r;

}

int main() {float x,y,z;scanf("%f %f %f",&x,&y,&z);printf("O resultado é: %f\n", f(x,y,z));return 0;

}

Page 9: te207-aula12

Escopo das variáveis

Parâmetros ou variáveis declaradas dentro do corpo da função pertencem à função, independentemente do resto do programa. Por isso, são chamadas variáveis locais;

Variáveis declaradas fora de qualquer função (inclusive da main) são válidas dentro de qualquer função do programa e, por isso, são variáveis globais.

Page 10: te207-aula12

Chamada da função

#include <stdio.h>

float f(float x, float y, float z) {float r=x*x+3*y+y*z;return r;

}

int main() {float a,b,c,r;scanf("%f %f %f",&a,&b,&c);r=3;printf("r = %f\n",r);printf("O resultado é: %f\n", f(a,b,c));printf("r = %f\n",r);return 0;

}

x, y, z: parâmetros formais da função f

a, b, c: parâmetros reais na chamada f(a,b,c)

Page 11: te207-aula12

Protótipo da função

A princípio toda função deve ser declarada antes de ser usada;

Na definição da função está implícita a declaração;

A linguagem C permite que se declare uma função, antes de defini-la. Esta declaração é feita através do protótipo da função;

O protótipo da função o trecho de código que especifica apenas o nome, o tipo e os parâmetros da função.

Page 12: te207-aula12

Exemplo de protótipo

#include <stdio.h>

float f(float, float, float);

int main() {float a,b,c,r;scanf("%f %f %f",&a,&b,&c);r=3;printf("r = %f\n",r);printf("O resultado é: %f\n", f(a,b,c));printf("r = %f\n",r);return 0;

}

float f(float x, float y, float z) {float r=x*x+3*y+y*z;return r;

}

Page 13: te207-aula12

Exemplo

Escreva um programa que leia n e p e calcule a quantidade de possíveis combinações e arranjos simples usando uma função para cada caso.

𝐶𝑛,𝑝 =𝑛!

𝑝! 𝑛 − 𝑝 !

𝐴𝑛,𝑝 =𝑛!

𝑛 − 𝑝 !

Page 14: te207-aula12

Exemplo

#include <stdio.h>

int fatorial(int);int arranjo(int, int);int combinacao(int, int);

int main() {int n,p;printf("Total de elementos: ");scanf("%d",&n);printf("Tamanho dos grupos: ");scanf("%d",&p);printf("Combinações possíveis:

%d\n",combinacao(n,p));printf("Arranjos possíveis:

%d\n",arranjo(n,p));return 0;

}

int fatorial(int x) {int i,r=1;for(i=2;i<=x;i++) {

r*=i;}return r;

}

int arranjo(int n, int p) {return fatorial(n)/fatorial(n-p);

}

int combinacao(int n, int p) {return fatorial(n)/(fatorial(p)*fatorial(n-

p));}