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 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Decomposição hierárquica Nível 1 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 3 begin passo 3.1 passo 3.2 passo 3.3 passo 3.4 end Nível 2 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 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Esta aula... • Definição do algoritmo (continuação – mais exemplos) – Encapsulamento de operações • Noção geral de procedimento e de função Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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. Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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). Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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. A B C Variáveis de entrada: XA, XB, XC (coordenadas lineares da posição dos vasos A, B, C) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Separação dos berlindes Algoritmo: (Decomposição ao nível 1) Procedimento nome: Separação dos berlindes (Sequência de operações) 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 Função (Operação específica que resulta num dado valor) Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 (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 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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; case COR of VERDE: colocar berlinde no vaso (A); AZUL: colocar berlinde no vaso (B); ROSA: colocar berlinde no vaso (C) end end Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Separação dos berlindes Procedimento Deslocar todos os berlindes do vaso de partida para o vaso de destino Separação dos berlindes Nível 1 Função Há berlindes no vaso Procedimento Retirar um berlinde de um vaso e arrumá-lo no vaso de destino correspondente Nível 2 Procedimento Colocar berlinde no vaso Nível 3 Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 cor, cor existentes no vaso 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. Departamento de Electrónica e Telecomunicações - Universidade de Aveiro 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 * * * * * * * * * * * * * * * Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Desenhar um triângulo isósceles e recto Formulação: Variáveis de entrada: Variáveis de saída: Solução/Método: Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Desenhar um triângulo isósceles e recto Algorítmo: Departamento de Electrónica e Telecomunicações - Universidade de Aveiro