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 Modelagem Abstrata de Programas.

Apresentações semelhantes


Apresentação em tema: "FACENS – Engenharia da Computação Lógica Computacional II Modelagem Abstrata de Programas."— 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 = x 2 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: nome_funcao (parametros: tipos e nomes) inicio [ comandos, enquanto, se, escreva, leia ] 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 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 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 programa eleicao nomes[50]: literal num_candidatos, votos[50]: numérico principal() inicio receber_candidatos() receber_votos() encontrar_maior() mostrar_vencedor() 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 1.Escreva a função encontre_nome 2.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 Modelagem Abstrata de Programas."

Apresentações semelhantes


Anúncios Google