1 / 34

Aula anterior...

Formulação do problema Salientando a forma como o computador será utilizado (e.g. ler do teclado ... calcular ... e escrever no écran ...) Especificação Identificação/caracterização dos dados de entrada Identificação/caracterização dos dados de saída

doria
Download Presentation

Aula anterior...

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Formulação do problema Salientando a forma como o computador será utilizado (e.g. ler do teclado ... calcular ... e escrever no écran ...) Especificação Identificação/caracterização dos dados de entrada Identificação/caracterização dos dados de saída Identificação do método ou solução para chegar dos dados de entrada aos de saída Aula anterior... Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  2. Definição do algoritmo (aquilo que realmente interessa) Usando vocabulário e sintaxe próximas do Pascal Decompor o método ou solução que se pretende seguir numa sequência de passos Escrita do Programa Se o algoritmo estiver bem definido e detalhado esta parte poderá resumir-se a uma simples tradução daquele para Pascal Aula anterior... (cont.) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  3. Definição do algoritmo (continuação) Método de decomposição hierárquica utilizando níveis crescentes de detalhe (abordagem top-down) Primeira noção de encapsulamento de operações Esta Aula ... Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  4. nome: asdzxc begin passo 1 passo 2 passo 3 end. Decomposição hierárquica Nível 2 Nível 1 nome: passo 1 begin passo 1.1 passo 1.2 passo 1.3 end ... nome: passo 2 begin passo 2.1 passo 2.2 end Nível 3 nome: passo 3.2 begin passo 3.2.1 passo 3.2.2 end nome: passo 3 begin passo 3.1 passo 3.2 passo 3.3 passo 3.4 end Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  5. Sua formulação para resolução no computador: Dada uma distância, expressa em milhas, que é lida do teclado, convertê-la para quilómetros e escrevê-la no écran do monitor vídeo. Variável de entrada: MILHAS (distância expressa em milhas) valor numérico positivo ou nulo Variável de saída: KILOMETROS (distância expressa em quilómetros) valor numérico representado com 3 casas decimais Solução: KILOMETROS = 1.609 * MILHAS Conversão de distâncias (milhas para quilómetros) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  6. (Decomposição ao nível 1) Algoritmo: nome: Conversão de distâncias (milhas para quilómetros) begin leitura com validação de uma distância expressa em milhas (MILHAS); conversão da distância de milhas para quilómetros (MILHAS, KILOMETROS); impressão da distância expressa em quilómetros (KILOMETROS) end Conversão de distâncias (milhas para quilómetros) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  7. (Decomposição ao nível 2) nome: Leitura com validação de uma distância expressa em milhas begin repetir escrita no écran do monitor vídeo da mensagem ‘Distância em milhas? ‘; leitura do valor introduzido pelo teclado (MILHAS) até que MILHAS >= 0.0 end Conversão de distâncias (milhas para quilómetros) nome: Conversão da distância de milhas para quilómetros begin KILOMETROS = 1.609 * MILHAS end Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  8. (Decomposição ao nível 2) nome: Escrita no écran do monitor vídeo da distância expressa em quilómetros begin escrita no écran do monitor vídeo da mensagem ‘Distância em quilómetros é ‘; escrita no écran do monitor vídeo do valor de KILOMETROS com 3 casas decimais; mudança de linha end Conversão de distâncias (milhas para quilómetros) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  9. program conv_dist; const Km_por_milha= 1.609; var Km, milhas: real; begin repeat write(‘Escreva uma distância em milhas: ‘); readln(milhas); until milhas >= 0.0; Km:= Km_por_milha * milhas; writeln(‘A distância em Kilómetros é: ‘,Km:0:3); end Conversão de distâncias (milhas para quilómetros) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  10. Sua formulação para resolução no computador: Dados os parâmetros A, B e C, que são lidos do teclado, determinar as raízes da equação de 2º grau, Ax2+Bx+C=0, e escrevê-las no écran do monitor vídeo. Variáveis de entrada: A, B, C (parâmetros da equação) A é um valor numérico não nulo, B e C são valores numéricos quaisquer Variáveis de saída: X1R, X1I, X2R, X2I (raízes da equação) valores numéricos representados em notação científica, com 4 algarismos significativos na mantissa Solução: Resolução da equação de 2º grau Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  11. Algoritmo: (Decomposição ao nível 1) nome: Resolução da equação de 2º grau Ax2+Bx+C = 0 begin leitura com validação dos coeficientes da equação (A, B, C); determinação das raízes da equação por aplicação da fórmula resolvente (A, B, C, X1R, X1I, X2R, X2I); impressão das raízes (X1R, X1I, X2R, X2I) end Resolução da equação de 2º grau Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  12. (Decomposição ao nível 2) nome: Leitura com validação dos coeficientes da equação begin escrita mais ou menos centrada no écran da mensagem ‘Resolução da equação de 2º grau Ax^2+Bx+C = 0‘; mudança de linha; repetir escrita no écran da mensagem ‘A = ‘; leitura do valor introduzido pelo teclado (A) até que A <> 0.0; escrita no écran da mensagem ‘B = ‘; leitura do valor introduzido pelo teclado (B); escrita no écran da mensagem ‘C = ‘; leitura do valor introduzido pelo teclado (C) end Resolução da equação de 2º grau Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  13. (Decomposição ao nível 2) nome: Determinação das raízes da equação por aplicação da fórmula resolvente begin DELTA := B2 - 4AC; se DELTA >= 0.0 então begin (* raízes reais *) X1R := (-B + (DELTA)) / 2A; X1I := 0.0; X2R := (-B - (DELTA)) / 2A; X2I := 0.0 end ou então begin (* raízes complexas conjugadas *) X1R := -B / 2A; X1I := (-DELTA) / 2A; X2R := X1R; X2I := -X1I end end Resolução da equação de 2º grau Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  14. nome: Impressão das raízes (Decomposição ao nível 2) begin (* os valores relativos às raízes deverão ser escritos em notação científica, com 4 algarismos significativos na mantissa *) escrita no écran da mensagem ‘X1 = ‘; (* X1 = (X1R) + i (X1I) *) seguida do valor de X1R, seguido da mensagem ‘ + i‘; seguida do valor de X1I; mudança de linha; escrita no écran da mensagem ‘X2 = ‘; seguida do valor de X2R, seguido da mensagem ‘ + i‘; seguida do valor de X2I; mudança de linha; end Resolução da equação de 2º grau Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  15. Formulação: Dados um automóvel que tem um pneu furado, uma roda suplente, uma chave de cruz e um macaco, descrever as operações necessárias à mudança da roda com o pneu furado. Mudança da roda de um automóvel que tem um pneu furado Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  16. Algoritmo: (Decomposição ao nível 1) nome: Mudança da roda de um automóvel que tem um pneu furado begin se há tampão então tirar o tampão; soltar as porcas; posicionar o macaco e levantar o carro; desapertar e retirar as porcas; trocar as rodas; colocar e apertar as porcas; baixar o carro e retirar o macaco; dar um aperto forte às porcas; se há tampão então colocar o tampão end Mudança da roda de um automóvel que tem um pneu furado Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  17. (Exemplo de decomposição ao nível 2) nome: Soltar as porcas begin para todas as porcas (1 de cada vez) fazer begin posicionar a chave de cruz sobre a porca; repetir aplicar o binário à chave no sentido do desaperto; até a chave rodar; retirar a chave da porca; end end Mudança da roda de um automóvel que tem um pneu furado Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  18. (Exemplo de decomposição ao nível 2) nome: Posicionar o macaco e levantar o carro; begin enquanto não se encontrar o encaixe do macaco fazer begin procurar encaixe; end colocar macaco no encaixe; repetir rodar uma volta no macaco; até que roda furada esteja no ar; end Mudança da roda de um automóvel que tem um pneu furado Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  19. (Exemplo de decomposição ao nível 2) nome: Desapertar e retirar as porcas begin para todas as porcas (1 de cada vez) fazer begin posicionar a chave de cruz sobre a porca; repetir aplicar o binário à chave no sentido do desaperto; até soltar porca do parafuso; retirar a chave e a porca; end end Mudança da roda de um automóvel que tem um pneu furado Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  20. Problema: Programar o robot para ir da posição de partida (P) para a posição de chegada (C) desviando-se dos obstáculos que encontrar pelo caminho. P C Programar um Micro-Rato Comandos reconhecidos pelo robot (instruções): Virar à direita/esquerda Andar em frente/parar Possui sensores (variáveis de entrada): de obstáculos (dir/fre/esq/nenhum) de chegada (dir/fre/esq/baixo) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  21. nome: micro-ratoNível 1 begin enquanto não estiver na Chegada fazer begin orientar-se para a chegada andar em frente se encontra obstáculo então desviar-se de obstáculo end parar end P C Não existem no vocabulário básico! É necessário prosseguir a decomposição... Programar um Micro-Rato Comandos reconhecidos pelo robot: Virar à direita/esquerda Andar em frente/parar Possui sensores: de obstáculos (dir/fre/esq/ne) de chegada (dir/fre/esq/cima) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  22. Nível 2 nome: orientar-se para a chegada begin repetir se Chegada à direita então virar à direita ou então se Chegada à esquerda então virar à esquerda até que Chegada em frente end P C Programar um Micro-Rato Comandos reconhecidos pelo robot: Virar à direita/esquerda Andar em frente/parar Possui sensores: de obstáculos (dir/fre/esq) de chegada (dir/fre/esq/cima) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  23. Nível 2 nome: desviar-se de obstáculo begin repetir se obstáculo à direita então virar à esquerda se obstáculo à esquerda então virar à direita se obstáculo em frente então virar à esquerda até que nenhum obstáculo andar em frente end P C Programar um Micro-Rato Comandos reconhecidos pelo robot: Virar à direita/esquerda Andar em frente/parar Possui sensores: de obstáculos (dir/fre/esq) de chegada (dir/fre/esq/cima) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  24. Apresentação: O Francisco é um robot formado por uma base móvel, que possibilita a sua deslocação linear, para a esquerda e para a direita, por uma câmara vídeo, que lhe permite a detecção rudimentar de objectos, presentes no cenário visualizado, e a determinação da cor de objectos particulares, e por um braço articulado, terminado numa pinça, que pode ser usado para pegar em objectos de pequenas dimensões. O robot Francisco Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  25. Operações que o Francisco executa: deslocar-se para a posição (X) - dada uma coordenada linear de posição, o Francisco acciona o motor da sua base móvel e desloca-se para a posição indicada; pegar num objecto - o Francisco usa a pinça do seu braço articulado para pegar num objecto que ele detectou no cenário visualizado; pousar um objecto - o Francisco move o seu braço articulado para pousar, no centro da área visualizada, o objecto que segura na pinça; detecção de objectos - com a sua câmara vídeo, o Francisco pode determinar se existem ou não objectos no cenário que visualiza (função booleana); cor do objecto - igualmente com a sua câmara vídeo, o Francisco pode ainda determinar a cor do objecto que segura na pinça (função que devolve o nome de uma cor). O robot Francisco Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  26. Sua formulação: Dados três vasos cilíndricos, A, B, C, colocados sobre uma mesa, que contêm berlindes de vidro de três cores diferentes, ensinar o Francisco a separá-los, de modo a que os berlindes verdes fiquem no vaso A, os berlindes azuis no vaso B e os berlindes rosa no vaso C. Variáveis de entrada: A, B, C (coordenadas lineares de posição dos vasos A, B, C) A B C Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  27. Solução: Para resolver o problema, é necessário o recurso a um vaso auxiliar, onde os berlindes são despejados, antes de se iniciar o processo de separação. A separação, propriamente dita, vai consistir num processo repetitivo, em que cada berlinde é retirado do vaso auxiliar e, de acordo com a cor que apresenta, é colocado no vaso de destino. AUX A B C Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  28. Algoritmo: (Decomposição ao nível 1) nome: Separação dos berlindes begin deslocar todos os berlindes do vaso de partida para o vaso de destino (A, AUX); deslocar todos os berlindes do vaso de partida para o vaso de destino (B, AUX); deslocar todos os berlindes do vaso de partida para o vaso de destino (C, AUX); while há berlindes no vaso (AUX) do retirar um berlinde do vaso e arrumá-lo no vaso de destino correspondente (A, B, C) end Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  29. (Decomposição ao nível 2) nome: Deslocar todos os berlindes do vaso de partida para o vaso de destino procedimento variáveis de entrada: X - vaso de partida Y - vaso de destino begin while há berlindes no vaso (X) do begin pegar num objecto; colocar berlinde no vaso (Y) end end Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  30. (Decomposição ao nível 2) nome: Há berlindes no vaso função booleana retorna TRUE, se existir pelo menos um berlinde no vaso FALSE, em caso contrário variável de entrada: X - vaso em análise begin deslocar-se para a posição (X); TESTE := detecção de objectos; retornar o valor de TESTE end Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  31. (Decomposição ao nível 2) nome: Retirar um berlinde do vaso e arrumá-lo no vaso de destino correspondente begin pegar num objecto; COR := cor do objecto; case COR of VERDE: colocar berlinde no vaso (A); AZUL: colocar berlinde no vaso (B); ROSA: colocar berlinde no vaso (C) end end Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  32. (Decomposição ao nível 3) nome: Colocar berlinde no vaso procedimento variável de entrada: Y - vaso de destino begin deslocar-se para a posição (Y); pousar um objecto end Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  33. Observações O problema, tal como foi formulado, não tem variáveis de saída, porque o Francisco é um computador muito especial. Embora, como a generalidade dos computadores e dos seres humanos, o Francisco processe informação, os resultados por ele obtidos traduzem-se em acções concretas. Contudo, se estivéssemos interessados numa solução que pudesse ser executada num computador convencional, as três variáveis de entrada anteriores seriam substituídas por nove variáveis de entrada / saída (variáveis de estado), do tipo N (vaso, cor), relativas ao n.º de berlindes de cor cor, existentes no vaso vaso. A intenção expressa de implementar algumas das operações anteriores, através de mecanismos de encapsulamento de informação, permitiu aumentar o vocabulário do Francisco. Agora, além das cinco operações base, ele conhece mais três: deslocar todos os berlindes de um vaso de partida para um vaso de destino, existência de berlindes num vaso e colocar um berlinde num vaso. Este mecanismo é extremamente importante, porque permite dar concisão, clareza e robustez às descrições das soluções de problemas complexos. Separação dos berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

  34. Sua formulação: Considere de novo três vasos cilíndricos, A, B, C, colocados sobre uma mesa, que contêm berlindes de vidro de duas cores diferentes, rosa e azul, e procure descobrir em que situação ficam os vasos, após a realização das operações seguintes: 1) Se o vaso C contiver berlindes, desloque-os todos para o vaso A; 2) Se o vaso A contiver, pelo menos, um berlinde rosa, desloque um berlinde rosa do vaso A para o vaso C; 3) Se o vaso B contiver, pelo menos, um berlinde azul, desloque um berlinde azul do vaso B para o vaso A; 4) Se o vaso B, ou o vaso C, contiver berlindes azuis, regresse ao passo 2. Descreva a seguir uma solução do problema que possa ser realizada pelo Francisco! Charada com berlindes Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

More Related