• Nenhum resultado encontrado

Aula anterior...

N/A
N/A
Protected

Academic year: 2023

Share "Aula anterior..."

Copied!
17
0
0

Texto

(1)

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

(2)

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

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

nome:passo 3.2 begin

passo 3.2.1 passo 3.2.2 end

Nível 1 Nível 2

Nível 3

...

(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

Conversão de distâncias (milhas para quilómetros) 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

(4)

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 milhas

begin repetir

escrita no écran do monitor vídeo da mensagem ‘Distância em milhas? ‘;

leitura do valor introduzido pelo teclado (MILHAS) até queMILHAS >= 0.0

end

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

KILOMETROS = 1.609 * MILHAS end

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ó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

(5)

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º grau Resoluçã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 X2R B 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

= B2- 4AC

(6)

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

Resolução

Resolução da equação de 2º grau 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 = 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 Resolução da equação de 2º grau

(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

(7)

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

Resolução da equação de 2º grau Resoluçã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 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 ou então end

begin (* raízes complexas conjugadas *)

X1R := -B / 2A; X1I :=√(-DELTA) / 2A;

X2R := X1R; X2I := -X1I

end end

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

Resolução da equação de 2º grau Resoluçã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

(8)

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

Mudança da roda de um automóvel que tem um pneu furado Mudanç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.

Mudança da roda de um automóvel que tem um pneu furado Mudanç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 furado begin

se há tampãoentã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

(9)

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

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

(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

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

Mudança da roda de um automóvel que tem um pneu furado Mudanç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

(10)

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

Mudança da roda de um automóvel que tem um pneu furado Mudanç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 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

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)

(11)

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

Programar um Micro-Rato

nome: micro-rato Ní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

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

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)

(12)

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)

O

O robot robot Francisco 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.

(13)

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

O

O robot robot Francisco 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 berlindes Separaçã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)

A B C

(14)

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

Separação dos berlindes Separaçã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.

A B C

A U X

Separação dos berlindes Separação dos berlindes

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

(15)

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

Separação dos berlindes Separação dos berlindes

(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

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

Separação dos berlindes Separação dos berlindes

(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

(16)

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

Separação dos berlindes Separação dos berlindes

(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;

caseCORof

VERDE: colocar berlinde no vaso (A);

AZUL: colocar berlinde no vaso (B);

ROSA: colocar berlinde no vaso (C) end

end

Separação dos berlindes Separação dos berlindes

(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

(17)

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

Separação dos berlindes Separaçã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 vasoe 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 berlindes Charada 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!

Referências

Documentos relacionados

B4 Identificação dos compostos presentes nas amostras de bio-óleo obtidos via pirólise catalítica da fibra de casca de coco utilizando carvão ativado (ABC) e

Figure 1 – Percentage cost reduction in delivered prescription drugs purchased via reverse auction in comparison with private costs according to each drug group in heart failure

The aim of this study was first to evaluate the production of ethanol and volatile compounds by eight yeast strain utilizing coffee residues coffee pulp and coffee wastewater

O objetivo principal dessa dissertação é apresentar uma proposta de redesign de um Protótipo Inicial de WebGIS para facilitar sua utilização e aumentar as percepções

Regarding the design of the study, we included randomized clinical trials, clinical trials, community studies with comparison of an intervention group with a control group,

Objective: To evaluate costs and length of hospital stay between groups of patients treated for ACS undergoing angioplasty with or without stent implantation (stent+ /

Nos demais tempos, para a formulação 1, valores maiores e diferentes de SS foram en- contrados para os doces acondicionados na embalagem de polipropileno opaca, quando comparado

Por isso, este trabalho prop˜oe uma abordagem para teste de robustez no Archmeds e para isso, contou com o desenvolvimento de uma ferramenta de inje¸c˜ao de falhas chamada WSInject,