A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Procedimentos e Funções

Apresentações semelhantes


Apresentação em tema: "Procedimentos e Funções"— Transcrição da apresentação:

1 Procedimentos e Funções

2 Motivação Procedimentos e Funções promovem o reuso de código eliminando a necessidade de replicação Facilitam a manutenção, legibilidade extensão dos programas

3 Motivação Exemplo 1 Algoritmo testeSemFunção () início inteiro base=0
ler base inteiro fat=1 inteiro cont=1 para (cont<base;cont=cont+1) faça fat = fat*cont fimpara base=fat

4 Motivação Exemplo 1 inteiro expoente =0 ler expoente fat=1 cont=1
para (cont<expoente;cont=cont+1) faça fat = fat*cont fimpara expoente=fat

5 Motivação Exemplo 1 inteiro divisor =0 ler divisor fat=1 cont=1
para (cont<divisor;cont=cont+1) faça fat = fat*cont fimpara divisor=fat

6 Motivação Exemplo 1 inteiro x =0 ler x fat=1 cont=1
para (cont<x;cont=cont+1) faça fat = fat*cont fimpara x=fat

7 Motivação Exemplo 1 imprimir "fatorial base:"+base
imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

8 Motivação Foi necessário replicar o código para calcular o fatorial quatro vezes dentro do código Será preciso replicar este código sempre que quisermos calcular o fatorial de um número? Há alguma maneira mais eficiente e elegante de se fazer isso?

9 Motivação Uso de Procedimentos/Funções
Evitam replicação desnecessária de código promovendo assim o reuso

10 Motivação Exemplo 2 Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

11 Motivação Exemplo 2 inteiro fatorial =0 ler fatorial
fatorial = móddulo (fatorial) inteiro x =0 ler x x=fatorial(x) imprimir "fatorial base:"+base imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

12 Motivação Exemplo 2 inteiro fatorial(inteiro x) início
inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

13 Motivação Redução clara no tamanho do código
Exemplo 1 = 5 slides Exemplo 2 = 3 slides Aumento da legibilidade – todas as funcionalidades do programa estão em um único slide

14 Motivação Possível Manutenção - o uso de procedimentos e funções facilitam a manutenção do código Imagine que houvesse um erro no exemplo 1 no trecho de atualização dos contadores. A correção teria que ser propagada por todo o código

15 Motivação No exemplo 2 a manutenção só teria que ser feita em um ponto, ou seja, no função fatorial

16 Motivação - Reuso No exemplo 1, sempre que necessário calcular um fatorial de um número uma nova réplica do código de cálculo deverá ser feita No exemplo 2, é necessário apenas uma chamada à função

17 Sintaxe Procedimentos
Procedimento nome(<lista parâmetros>) início corpo fim Funções tipo nome(<lista de parâmetros>) início corpo fim

18 Sintaxe – lista de parâmetros
Pode ser uma lista vazia – nesse caso, a função não recebe dados de entrada Pode um ou mais elementos seguindo a sintaxe tipo par1, tipo par2, ..., tipo parFinal

19 Sintaxe - Tipos Qualquer tipo básico da linguagem – Inteiro, Real, Texto, etc Qualquer tipo definido na linguagem, string, vector, iterator, etc Qualquer tipo definido pelo programador

20 Sintaxe - Nomes Os nomes, tanto de funções como de parâmetros devem ser identificadores válidos Eles devem começar por um caractere (a-z, A-Z) e podem ser seguidos de um ou mais caractere ou dígitos(a-z,A-Z,0-9,_)

21 Sintaxe - Nomes Não podem conter espaços em branco
Inteiro calcular fatorial(Inteiro x ) Erro de compilação Inteiro calcular_fatorial(Inteiro x ) Correto Inteiro calcularFatorial(Inteiro x )

22 Dicas O nome de uma função deve expressar claramente o que ela faz
A dificuldade em definir o nome de uma função pode indicar que ela deve ser dividida em mais de uma função

23 Sintaxe - Corpo Corpo de um procedimento é um conjunto de comandos válidos na linguagem Podemos declarar variáveis, fazer comandos de entrada e saída Funções e procedimentos podem usar outras funções e procedimentos previamente declarados Funções e procedimentos não podem declarar dentro de seu corpo outras funções e procedimentos

24 Sintaxe Procedimentos
Procedimento nome(<lista parâmetros>) início corpo fim Funções tipo nome(<lista de parâmetros>) início corpo fim

25 Sintaxe - Retorno Procedimentos não possuem em sua assinatura nenhum tipo, que significa que esta função não retorna nenhum valor Funções necessariamente possuem um tipo de retorno, que pode ser qualquer um dos mencionados anteriormente

26 Sintaxe - Retorno Inteiro calcularAreaRetangulo (Inteiro base, Inteiro alt) Esta assinatura indica que a função calcularAreaRetangulo recebe dois parâmetros Inteiros e retorna um valor inteiro.

27 Sintaxe - Retorno A presença de um tipo de retorno indica que ao terminar sua execução uma função deve retornar um valor do tipo de retorno especificado Assim, uma função que possui um tipo de retorno Inteiro deve retornar um valor Inteiro, Lógico um valor lógico e assim sucessivamente

28 Sintaxe - Retorno Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) início Inteiro area=base * alt retorne area fim

29 Sintaxe - Assinatura Em algumas linguagens de programação, entre elas c++, não é possível fazer uma chamada para uma função antes da declaração dela No entanto, por questões organizacionais, pode não ser Interessante definir uma função em um determinado ponto do código

30 Sintaxe - Assinatura Suponha que você quer manter suas funções em ordem alfabética Suponha que, por clareza, você quer que duas funções fiquem próximas, por exemplo funções de entrada e saída

31 Sintaxe - Assinatura Como resolver situações como as expostas anteriormente? A resposta é a declaração da assinatura da função A assinatura permite que se utilize uma função antes de sua declaração

32 Sintaxe - Assinatura Inteiro fatorial(inteiro x);
Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base)

33 Sintaxe - Assinatura Inteiro fatorial(inteiro x);
Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base) Assinatura

34 Uso Como usar uma função? Basta apenas fazer uma chamada para função

35 Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);
Procedimento main() início Inteiro base =2 Inteiro alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

36 Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);
Procedimento main() início Inteiro b =2 Inteiro t = 3 Inteiro result = calcularAreaRetangulo(b, t) imprimir “o resultado é ” + result fim

37 Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);
Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

38 Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);
Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro intAlt=(Inteiro)alt Inteiro result = calcularAreaRetangulo(base, intAlt) imprimir “o resultado é ” + result fim

39 Como Funciona? Ao iniciar o programa, o SO tem o endereço de todas as funções definidas Ao encontrar uma chamada de função/procedimento, o fluxo do programa é desviado para o a função Ao terminar a execução da função, o fluxo retorna para o ponto imediatamente após o ponto onde a função foi chamada

40 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

41 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

42 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

43 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

44 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

45 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

46 Como Funciona? Algoritmo testeComFunção () início inteiro base=0
ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

47 Variáveis Locais Funções permitem a definição de variáveis

48 Variáveis Locais Funções permitem a definição de variáveis
Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) Início Inteiro area=base * alt; return area; Fim

49 Variáveis Locais Funções permitem a definição de variáveis
As variáveis declaradas dentro das funções só tem validade dentro destas funções

50 Variáveis Locais Funções permitem a definição de variáveis
As variáveis declaradas dentro das funções só tem validade dentro destas funções Variáveis declaradas dentro de funções são chamadas variáveis automáticas pois são criadas e destruídas sempre que a função para executada

51 Como Funciona? Mecanismo é chamado pilha de execução
A pilha de execução está vazia Ao iniciar a execução de um bloco (início... fim), as variáveis são empilhadas à medida em que são criadas; Ao final de um bloco, essas variáveis são desempilhadas, liberando espaço na memória.

52 Exemplo Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt)
Início Inteiro area=base * alt; return area; Fim area Início da função Durante a Função Depois da Função

53 Variáveis Locais x Globais
É possível declarar variáveis locais com o mesmo nome de variáveis globais Nestes caso, a variável local “esconde” a variável global Inteiro nota procedimento funcao() Início Inteiro nota; /* Neste ponto, nota é variável local*/ Fim

54 Revisão Porquê usar funções Sintaxe Como usar funções
Como funciona a chamada de funções Definição de variáveis locais Execução da pilha de execução

55 Próximos Passos Variações nas passagens de parâmetro (valor, referência, limitações) Recursão

56 Exercícios Criar uma função que receba as coordenadas x,y e z de dois vetores e calcule o produto escalar destes 2 vetores Criar uma função que calcule a área de um circulo que receba o raio como parâmetro Criar funções que calculem a área de um triangulo( parâmetros a serem definidos)


Carregar ppt "Procedimentos e Funções"

Apresentações semelhantes


Anúncios Google