aula anterior
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 PresentationTRANSCRIPT
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
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
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
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
...
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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)
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...
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)
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)
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.
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).
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
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
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
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
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
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
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
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.
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!