Aula anterior... 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 passo 1 passo 2 passo 3. Nível 1 Nível 2 nome: passo 1 passo 1.1 passo 1.2 passo 1.3 nome: passo 3 passo 3.1 passo 3.2 passo 3.3 passo 3.4 nome: passo 2 passo 2.1 passo 2.2 nome: passo 3.2 passo 3.2.1 passo 3.2.2... Nível 3
Esta aula... Definição do algoritmo (continuação mais exemplos) Encapsulamento de operações Noção geral de procedimento e de função
O 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.
O 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; (procedimento) 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; (procedimento) 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; (procedimento) 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).
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. A B C Variáveis de entrada: X A, X B, X C (coordenadas lineares da posição dos vasos A, B, C)
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
Algoritmo: (Decomposição ao nível 1) nome: Separação dos berlindes Procedimento (Sequência de operações) 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) Função (Operação específica que resulta num dado valor)
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 while há berlindes no vaso (X) do pegar num objecto; colocar berlinde no vaso (Y) (Decomposição ao nível 2)
(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 deslocar-se para a posição (X); TESTE := detecção de objectos; retornar o valor de TESTE
(Decomposição ao nível 2) nome: Retirar um berlinde do vaso e arrumá-lo no vaso de destino correspondente 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)
nome: Colocar berlinde no vaso procedimento variável de entrada: Y - vaso de destino deslocar-se para a posição (Y); pousar um objecto (Decomposição ao nível 3)
Separação dos berlindes Procedimento Deslocar todos os berlindes do vaso de partida para o vaso de destino Função Há berlindes no vaso Procedimento Retirar um berlinde de um vaso e arrumá-lo no vaso de destino correspondente Procedimento Colocar berlinde no vaso Nível 1 Nível 2 Nível 3
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.
Desenhar um triângulo isósceles e recto Apresentação: Utilizando asteriscos e espaços desenhe no écran um triângulo isósceles e recto (ver figura) que tenha de lado um dado número (n) de asteriscos fornecido como parâmetro de entrada. 15 espaços * * * * * * * * * * * * * * *
Desenhar um triângulo isósceles e recto Formulação: Variáveis de entrada: Variáveis de saída: Solução/Método:
Desenhar um triângulo isósceles e recto Algorítmo: