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

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Advertisements

Programação em Java Prof. Maurício Braga
Aula 13 - FORMATAÇÃO E INSTALAÇÃO DO WINDOWS 98SE
Engenharia de Software
Modelagem de Software Orientado a Objetos
Construção de Algoritmos AULA 07
Projeto 1.
Paradigmas de Programação
Algoritmos.
Engenharia de Software
Programação Aplicada Luiz Silveira Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Aula 02: Conceitos e tipos de linguagens.
Conteúdo: - Modularização.
PROGRAMAÇÃO MODULAR (com uso de subprogramas) prof
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Algoritmos Escher.
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
OBS: Este ppt não é o definitivo (Versão Beta)
Linguagens de Programação
Vetores, Matrizes e Funções
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Introdução a Programação Orientada a Objetos
Algoritmos e Programação
O Portal do Estudante de Computação
TÉCNICAS DE PROGRAMAÇÃO II
Lógica e Técnicas de Programação
Programação Avançada Prof. Natalia Castro Fernandes
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
DEMONSTRAÇÃO BANCA LIGHT
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Concorrência e Java RMI
Projeto de Banco de Dados
Técnicas de Desenvolvimento de Programas
Orientação a Objetos Parte I
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Prof: Leandro Maranim Dei Santi Prof. Eduardo Rossit Paiossin
Profa. Reane Franco Goulart
Análise e Projeto de Sistemas
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Banco de Dados Aplicado ao Desenvolvimento de Software
Programação de PIC em C Exposição das funções básicas para
Aula Prática 3 Funções Monitoria Introdução à Programação.
INSTALAÇÃO E APLICAÇÃO
METODOLOGIA, MÉTODOS E FERRAMENTAS
Aula01 – Técnicas de Programação II
Algoritmos e Estrutura de Dados I
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Fundamentos de linguagens de programação
Tutorial Portal / Hotel de Hilbert Coordenadores de Iniciação Científica.
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Introdução a Programação Orientada a Objetos
Introdução à Programação
Curso Técnico em Informática Professor Igor Vale.
Algoritmos e Programação I
Linguagem de Programação I Parte IV
Shell Script Parte 2.
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
Iniciar o sistema de votação Mesário e Urna
PROJETO 2: ALUNOS UFRPE Parte 1. Dividindo para conquistar 1. Interação com o usuário 2. Leitura e escrita em arquivos 3. Regra de negócio para executar.
Projeto de Arquitetura de Software
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
PET - Cadastro de Profissional. Objetivo Cadastrar no sistema os profissionais da empresa. No caso os veterinários e profissionais que realizarão atendimentos.
Aula Prática 5 Recursão Monitoria  Na linguagem C, como em muitas outras linguagens, uma função pode chamar a si própria.  Uma função assim.
Telemarketing - Completo. Objetivo Cadastrar os clientes que os operadores de telemarketing atender. Cadastrar as prospecções ocorridas (processo organizado.
Lógica de Programação – Forbellone / Eberspacher Lógica de Programação Capítulo 6 Modularizando Algoritmos.
Lógica de programação Introdução à lógica de programação
Supervisão e Redes Industriais Tutorial E3 Elipse Capítulo 2 ELIPSE KNOWLEDGEBASE Felipe Domeni, Gabriel Martin, Leandro Gomes Rafael Benoliel, Tiago Bugan.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

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

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 …

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

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.

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

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)

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.

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

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

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

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

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

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

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

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.

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.