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

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

FACENS – Engenharia da Computação Lógica Computacional II

Apresentações semelhantes


Apresentação em tema: "FACENS – Engenharia da Computação Lógica Computacional II"— Transcrição da apresentação:

1 FACENS – Engenharia da Computação Lógica Computacional II
Modelagem Abstrata de Programas

2 Desenvolvimento de Software
Níveis de abstração (mais alto para mais baixo) Linguagem Natural Diagramas Módulos Classes Funções (ou Métodos) Pseudocódigo Linguagem de Programação Assembly Linguagem de Máquina Circuitos Lógicos …

3 Desenvolvimento de Software
Softwares complexos devem ser particionados (dividir para conquistar) É necessário um dispositivo para separar de fato o código em módulos, por vários motivos: Facilidade de manutenção Eliminição de repetições Trabalho em equipes Reutilização futura Em linguagens estruturadas, utilizam-se funções, em orientação a objetos, classes

4 Funções Trecho de código destinado a realizar algum processamento, que pode receber parâmetros e prover algum retorno y = f(x) , y = x2 São chamadas, realizam o processamento e retornam para o trecho que as chamou programa ... ... y  funcao(x) escreva y fim. funcao (x: numérico) retorno  x*x fim.

5 Estrutura das Funções A estrutura geral de uma função é: Exemplo:
<tipo do retorno> nome_funcao (parametros: tipos e nomes) <variaveis> inicio [ comandos, enquanto, se, escreva, leia ] < retorno  valor > fim. numérico quadrado (x: numérico) y: numérico inicio y  x * x retorno  y fim

6 Funções e Escopo Cada função tem suas próprias variáveis, chamadas de locais, que só existem dentro da função Caso as funções necessitem compartilhar variáveis, devem ser declaradas variáveis do programa (globais) A melhor alternativa é fazer isto através de passagem de parâmetros, pois as funções ficam mais independentes do contexto (melhor modularização do programa)

7 Exemplo Programa-exemplo:
Faça um programa de eleição, onde o usuário informa o número de candidatos, e depois informa os nomes destes candidatos. A seguir, a votação é iniciada, até que o usuário deseje parar. O usuário vota digitando o nome do candidato. Finalmente, o nome do vencedor deve ser exibido na tela. Desconsidere situações de empate.

8 Exemplo Primeira etapa: função principal programa eleicao principal()
inicio receber_candidatos() receber_votos() encontrar_maior() mostrar_vencedor() fim.

9 Exemplo Segunda etapa: resolvendo função receber_candidatos
nomes[50]: literal i, num_candidatos, votos[50]: numérico inicio leia (num_candidatos) para i0 até num_candidatos-1 passo 1 faça leia(nomes[i]) votos[i]  0 fim para fim

10 Exemplo Problema: nomes, votos e num_candidatos não podem pertencer a função, pois serão utilizados em outros pontos do programa Solução: transformá-los em variáveis globais programa eleicao nomes[50]: literal num_candidatos, votos[50]: numérico principal() inicio receber_candidatos() receber_votos() encontrar_maior() mostrar_vencedor() fim. receber_candidatos () i: numérico inicio leia (num_candidatos) para i0 até num_candidatos-1 passo 1 faça leia(nomes[i]) votos[i]  0 fim para fim

11 Exemplo Solução melhor: utilizar retorno e parâmetros, como exemplificado com num_candidatos programa eleicao nomes[50]: literal votos[50]: numérico principal() num_cand: numérico inicio num_cand = receber_candidatos() receber_votos() encontrar_maior() mostrar_vencedor() fim. numérico receber_candidatos () n: numérico inicio leia (n) para i0 até n-1 passo 1 faça leia(nomes[i]) votos[i]  0 fim para retorno  n fim

12 Exemplo Terceira etapa: resolvendo receber_votos. Surge a necessidade de outra função. receber_votos () nome, continuar: literal indice: numérico inicio faça leia (nome) indice  encontre_nome(nome); se (indice >= 0) votos[indice]  votos[indice] + 1 fim se leia (continuar) enquanto (continuar = “s”) fim

13 Exemplo Quarta etapa: a função encontrar_maior
(Vamos considerar todas as variáveis globais para simplificar) numérico encontrar_maior () indice_maximo, i: numérico inicio indice_maximo  0; para i1 até num_candidatos-1 passo 1 faça se (votos[i] > votos[indice_maximo]) indice_maximo  i fim se fim para retorno  indice_maximo fim

14 Exemplo Quinta etapa: a função mostrar_vencedor. A função principal precisará passar o indice do vencedor Funções muito simples levantam a dúvida quanto a necessidade da sua existência. mostrar_vencedor (indice: numérico) inicio escreva(“O vencedor é: ”, nomes[indice], “ com ”, votos[indice], “ votos.”). fim

15 Exemplo Final: a função principal precisa de pequenos ajustes para trabalhar com as novas funções programa eleicao nomes[50]: literal num_candidatos, votos[50]: numérico principal() indice_vencedor: numérico inicio receber_candidatos() receber_votos() indice_vencedor  encontrar_maior() mostrar_vencedor(indice_vencedor) fim.

16 Exercício Escreva a função encontre_nome
Utilize as técnicas apresentadas no problema: Crie um programa de loja de carros, que mostra para o usuário um menu, para que ele escolha 0-sair, 1-incluir, 2-excluir ou 3-listar os carros. As informações do carro são: placa, ano e nome. A opção 0 sai do programa, 1 inclui um carro na lista, 2 apaga o último carro da lista e 3 mostra a lista de carros. Considere que no máximo 1000 carros podem ser cadastrados.


Carregar ppt "FACENS – Engenharia da Computação Lógica Computacional II"

Apresentações semelhantes


Anúncios Google