Aula 14 Funcoes I

Preview:

DESCRIPTION

aula funcoes

Citation preview

Programação de Computadores para Engenharia

Prof. Diego Buchinger

Funções em C

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

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

}

4

Exemplo

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

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.

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

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

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

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

9

Considerações de Uso

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

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.

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

escrita da função:

12

Sem Parâmetros

É 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

Regras de Escopo para variáveis

14

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

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.

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

18

Exemplo

Escopo de variáveis

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

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

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

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

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

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)

}