Aula anterior...

34
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 – Identificação do método ou solução para chegar dos dados de entrada aos de saída

description

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 - PowerPoint PPT Presentation

Transcript of Aula anterior...

Page 1: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

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– Identificação do método ou solução para chegar dos

dados de entrada aos de saída

Page 2: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Aula anterior... (cont.)

• 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

Page 3: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Esta Aula ...

• 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

Page 4: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Decomposição hierárquica

nome: asdzxc

begin

passo 1

passo 2

passo 3

end.

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

nome: passo 3

begin

passo 3.1

passo 3.2

passo 3.3

passo 3.4

end

nome: passo 3.2

begin

passo 3.2.1

passo 3.2.2

end

Nível 1 Nível 2

Nível 3

...

Page 5: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Conversão de distâncias (milhas para quilómetros)Conversão de distâncias (milhas para quilómetros)

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

Page 6: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Conversão de distâncias (milhas para quilómetros)Conversão de distâncias (milhas para quilómetros)

(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

Page 7: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Conversão de distâncias (milhas para quilómetros)Conversão de distâncias (milhas para quilómetros)

(Decomposição ao nível 2)

nome: Leitura com validação de uma distância expressa em milhasbegin

repetirescrita no écran do monitor vídeo da mensagem ‘Distância em milhas? ‘;leitura do valor introduzido pelo teclado (MILHAS)

até que MILHAS >= 0.0end

nome: Conversão da distância de milhas para quilómetrosbegin

KILOMETROS = 1.609 * MILHASend

Page 8: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Conversão de distâncias (milhas para quilómetros)Conversão de distâncias (milhas para quilómetros)

(Decomposição ao nível 2)

nome: Escrita no écran do monitor vídeo da distância expressa em quilómetrosbegin

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

Page 9: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Conversão de distâncias (milhas para quilómetros)Conversão de distâncias (milhas para quilómetros)

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

Page 10: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Resolução da equação de 2º grauResolução da equação de 2º grau

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:

X1R X1I = 0 X2RB

X2I = 0 (raizes reais)

X1R X1I = -

X2R B

X2I = --

(raizes complexas conjugadas)

0 = - B +

2 A =

- -2 A

0 = - B

2 A 2 A=

-2 A 2 A

= B 2 - 4 A C

Page 11: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Resolução da equação de 2º grauResolução da equação de 2º grau

Algoritmo: (Decomposição ao nível 1)

nome: Resolução da equação de 2º grau Ax2+Bx+C = 0begin

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

Page 12: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Resolução da equação de 2º grauResolução da equação de 2º grau

(Decomposição ao nível 2)

nome: Leitura com validação dos coeficientes da equaçãobegin

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

Page 13: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Resolução da equação de 2º grauResolução da equação de 2º grau

(Decomposição ao nível 2)

nome: Determinação das raízes da equação por aplicação da fórmula resolventebegin

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

endou então

begin (* raízes complexas conjugadas *)X1R := -B / 2A; X1I := (-DELTA) / 2A;X2R := X1R; X2I := -X1I

endend

Page 14: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Resolução da equação de 2º grauResolução da equação de 2º grau

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

Page 15: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Mudança da roda de um automóvel que tem um pneu furadoMudança da roda de um automóvel que tem um pneu furado

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.

Page 16: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Mudança da roda de um automóvel que tem um pneu furadoMudança da roda de um automóvel que tem um pneu furado

Algoritmo: (Decomposição ao nível 1)

nome: Mudança da roda de um automóvel que tem um pneu furadobegin

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ãoend

Page 17: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Mudança da roda de um automóvel que tem um pneu furadoMudança da roda de um automóvel que tem um pneu furado

(Exemplo de decomposição ao nível 2)nome: Soltar as porcasbegin

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;

endend

Page 18: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Mudança da roda de um automóvel que tem um pneu furadoMudança da roda de um automóvel que tem um pneu furado

(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

Page 19: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Mudança da roda de um automóvel que tem um pneu furadoMudança da roda de um automóvel que tem um pneu furado

(Exemplo de decomposição ao nível 2)nome: Desapertar e retirar as porcasbegin

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;

endend

Page 20: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Programar um Micro-Rato

• 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

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)

Page 21: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Programar um Micro-Rato

nome: micro-rato Nível 1begin 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 pararend

P

C

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)

Não existem no vocabulário básico!

É necessário prosseguir a decomposição...

Page 22: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Programar um Micro-Rato

Nível 2nome: orientar-se para a chegadabegin repetir se Chegada à direita então

virar à direita ou então

se Chegada à esquerda então virar à esquerda

até que Chegada em frenteend

P

C

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)

Page 23: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Programar um Micro-Rato

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

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)

Page 24: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

O robot FranciscoO robot Francisco

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.

Page 25: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

O robot FranciscoO robot Francisco

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).

Page 26: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

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)

AB C

Page 27: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

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.

AB C

AUX

Page 28: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

Algoritmo:(Decomposição ao nível 1)

nome: Separação dos berlindesbegin

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

Page 29: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

(Decomposição ao nível 2)

nome: Deslocar todos os berlindes do vaso de partida para o vaso de destinoprocedimentovariáveis de entrada: X - vaso de partida

Y - vaso de destinobegin

while há berlindes no vaso (X) dobegin

pegar num objecto;colocar berlinde no vaso (Y)

endend

Page 30: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

(Decomposição ao nível 2)

nome: Há berlindes no vasofunção booleana

retorna TRUE, se existir pelo menos um berlinde no vasoFALSE, em caso contrário

variável de entrada: X - vaso em análisebegin

deslocar-se para a posição (X);TESTE := detecção de objectos;retornar o valor de TESTE

end

Page 31: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

(Decomposição ao nível 2)

nome: Retirar um berlinde do vaso e arrumá-lo no vaso de destino correspondentebegin

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)

endend

Page 32: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

(Decomposição ao nível 3)

nome: Colocar berlinde no vasoprocedimentovariável de entrada: Y - vaso de destino

begindeslocar-se para a posição (Y);pousar um objecto

end

Page 33: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Separação dos berlindesSeparação dos berlindes

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 corcor, existentes no vaso vasovaso.

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.

Page 34: Aula anterior...

Departamento de Electrónica e Telecomunicações - Universidade de Aveiro

Charada com berlindesCharada com berlindes

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!