24
Programação de Computadores para Engenharia Prof. Diego Buchinger Funções em C

Aula 14 Funcoes I

Embed Size (px)

DESCRIPTION

aula funcoes

Citation preview

Page 1: Aula 14 Funcoes I

Programação de Computadores para Engenharia

Prof. Diego Buchinger

Funções em C

Page 2: Aula 14 Funcoes I

Até o momento usamos algumas funções prontas que as

bibliotecas oferecem.

Os programas em C também aceitam funções

personalizadas do programador!

Funções = Rotinas = Sub-Programas

2

Introdução

Page 3: Aula 14 Funcoes I

Possuem a seguinte forma geral:

Tipo_de_retorno: um tipo de dado (int, char, float, double)

Nome_da_função: identificador para a função. Mesmas regras de

nomenclatura de variáveis

Parâmetros: identifica quais valores (e seus respectivos tipos) a

função vai receber. Se for desejado, uma função

também pode não ter parâmetros.

3

Funções - Introdução

Tipo_de_retorno nome_da_função ( parâmetros ){

corpo_da_função => instruções

}

Page 4: Aula 14 Funcoes I

4

Exemplo

Page 5: Aula 14 Funcoes I

5

Exemplo

Tipo de dado do resultado da função Parâmetros da função e

seus respectivos tipos Nome / identificador da função

Corpo da

função

O valor de resultado da função

Page 6: Aula 14 Funcoes I

6

Exemplo

OBS: perceba que, diferentemente de funções

matemáticas, uma função pode escrever algo na tela

através do printf e ler valores através do scanf.

Page 7: Aula 14 Funcoes I

O começo de programa que sempre usávamos agora fica mais

claro: trata-se de uma função!

o Qual o nome/identificador desta função?

o Qual o valor de retorno?

o Quais os parâmetros que ela recebe?

Precisamos escrever a função main porque um programa

sempre tem seu marco de inicio neste ponto.

7

Programa Principal

Page 8: Aula 14 Funcoes I

Uma função sempre retorna um único valor, mas pode

retornar antes de chegar ao fim do seu corpo/bloco

Note que podem haver mais de um ponto de retorno da

função, e esses pontos sempre indicam o fim da função

8

Resultado / Retorno

Page 9: Aula 14 Funcoes I

Para fazer executar o corpo de uma função (chamada de

função) dentro do programa principal, fazemos:

9

Considerações de Uso

Page 10: Aula 14 Funcoes I

As funções devem ser sempre definidas antes de sua

chamada. Assim, de acordo com essa especificação, o

exemplo abaixo resultaria em erro:

10

Posicionamento

Page 11: Aula 14 Funcoes I

As funções devem ser sempre definidas antes de sua

chamada. Assim, de acordo com essa especificação, o

exemplo abaixo resultaria em erro:

11

Posicionamento

NOTA: Alguns compiladores modernos permitem a definição da

função em qualquer ponto do programa, gerando apenas um aviso

(warning) de declaração implícita de função.

Page 12: Aula 14 Funcoes I

É possível ter funções sem parâmetros, basta omiti-los na

escrita da função:

12

Sem Parâmetros

Page 13: Aula 14 Funcoes I

É possível ter funções sem retorno (tipo void - vazio)

o Simplesmente omite-se o comando return no corpo da função

13

Sem Retorno

Page 14: Aula 14 Funcoes I

Regras de Escopo para variáveis

14

Page 15: Aula 14 Funcoes I

Cada variável possui um escopo, ou seja, a definição de

quais locais ela pode ser utilizada

O exemplo abaixo ilustra um erro, onde a variável salario é

utilizada fora de seu escopo

15

Escopo de variáveis

Page 16: Aula 14 Funcoes I

Cada variável possui um escopo, ou seja, a definição de

quais locais ela pode ser utilizada

O exemplo abaixo ilustra um erro, onde a variável salario é

utilizada fora de seu escopo

16

Escopo de variáveis

OBS: a variável salario foi

declarada somente na função main

e não pode ser usada em outra

função.

Page 17: Aula 14 Funcoes I

O escopo de uma variável pode ser:

o Local (variável local):

Quando uma variável é declarada dentro de um bloco de função

Só pode ser utilizada dentro do bloco em que foi declarada

Os valores só são armazenados enquanto o bloco onde a variável

foi declarada estiver sendo executado

o Global (variáveis globais):

Quando é declarada fora de qualquer bloco de função

Pode ser utilizada em qualquer local do programa

Seu valor é mantido até o final do programa

17

Escopo de variáveis

Page 18: Aula 14 Funcoes I

18

Exemplo

Escopo de variáveis

Page 19: Aula 14 Funcoes I

19

Exemplo

Escopo de variáveis

Uma variável global

Variáveis locais que só

podem ser utilizadas

na função aumento

Uma variável local que só podem

ser utilizadas na função main

Page 20: Aula 14 Funcoes I

Quando uma variável é passada como parâmetro para uma

função seu valor original não é alterado!

Isso acontece porque

estamos passando o

parâmetro por valor

(é realizada uma cópia do

valor original)

20

Passagem de Parâmetros

Saída

v => 7

x => 5

Page 21: Aula 14 Funcoes I

Podemos optar por passar uma variável como parâmetro

por referência de modo que, se o seu valor for alterado

na função, essa alteração permanece efetivada na variável.

21

Passagem de Parâmetro

Saída

v=> 7

x => 7

Page 22: Aula 14 Funcoes I

Faça um programa em C com uma função para calcular o

quadrado de um número e outra para calcular o cubo de um

número passado como parâmetro. O resultado deve ser

retornado pela função.

Adicione também uma função para calcular a soma dos

quadrados entre dois números inteiros quaisquer.

22

Exemplo

Page 23: Aula 14 Funcoes I

1 – Faça um programa em C que lê três números. Crie uma função para

calcular soma destes números e outra para encontrar e retornar o maior

valor entre estes números.

2 – Faça um programa em C com uma função para calcular a média de 4

valores (parâmetros) e retorne o resultado ao programa principal

3 – Faça um programa em C com uma função que calcula as raízes de uma

equação de segundo grau. A função deve ter a assinatura:

int resolveEquacao( int a, int b, int c, float* x1, float* x2) {

Onde a, b e c são os coeficientes da equação de segundo grau: ax² + bx + c

= 0, e x1 e x2 são as variáveis que devem receber os valores das raízes.

Note ainda que a função deve retornar um inteiro: se for possível calcular

as raízes deve-se retornar um. Se não for possível deve-se retornar zero. 23

Exercícios

Page 24: Aula 14 Funcoes I

4 – Escreva um programa em C que contenha uma função que recebe um único número inteiro como parâmetro e retorna o valor um se o número for primo, ou zero caso o número não seja primo (lembrando: um número primo é divisível apenas por um e por ele mesmo)

5 – Faça um programa em C com a seguinte estrutura na função main. Depois implemente as funções: (1) uma função que pede ao usuário para digitar o dia, mês e ano de uma data e lê estes valores, (2) uma função que verifica se a data está correta e (3) uma função que mostra a data em um formato adequado: dd/mm/aaaa

24

Exercícios

int dia, mes, ano;

int main( ){

leData( ); // (1)

verificaData( ); // (2)

mostraData( ); // (3)

}