Metodologias de Programação Bloco 1 José Paulo 1
Formador José António Paulo E-mail: questoes@netcabo.pt Telemóvel: 96 347 80 25 Objectivos Iniciar o desenvolvimento de raciocínios algorítmicos Linguagem JAVASCRIPT José Paulo 2
s Teoria e Prática Conjunto de etapas finitas, ordenadamente definidas com o propósito de obter soluções para um determinado problema. José Paulo 3
É uma sequência não ambígua de instruções que é executada até que determinada condição se verifique Mais especificamente, em matemática, constitui o conjunto de processos (e símbolos que os representam) para efectuar um cálculo O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam mais complexos Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja terminada Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema José Paulo 4
Um algoritmo não representa, necessariamente, um programa de computador, mas sim os passos necessários para realizar uma tarefa A sua implementação pode ser feita por um computador, por outro tipo de autómato ou mesmo por um ser humano Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros Tal diferença pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo José Paulo 5
Por exemplo Um algoritmo para se vestir pode especificar que se calcem primeiro as meias e os sapatos antes de vestir as calças enquanto outro algoritmo especifica que se deve primeiro vestir as calças e só depois as meias e os sapatos Fica claro que o primeiro algoritmo é mais difícil de executar que o segundo apesar de ambos levarem ao mesmo resultado s Trocar uma lâmpada fundida de um candeeiro: 1. Início ( Tem sempre um início ) 2. Arranjar uma escada 3. Posicionar a escada debaixo da lâmpada 4. Arranjar uma lâmpada nova 5. Subir a escada até alcançar a lâmpada 6. Girar a lâmpada fundida no sentido contrário aos ponteiros do relógio, até que se solte 7. Fixar a lâmpada nova, girando no sentido dos ponteiros do relógio 8. Descer a escada 9. Guardar a escada 10. Fim ( Tem sempre um fim ) José Paulo 6
Elaborar um algoritmo para uma substituição de um pneu de um automóvel Elaborar um algoritmo para fazer um bolo s Fórmula para resolver um problema bem definido Entrada de dados Saída de dados José Paulo 7
Um programa de computador é essencialmente um algoritmo que diz ao computador os passos específicos e em que ordem eles devem ser executados Por exemplo, os passos a serem tomados para calcular as notas que serão impressas nos boletins dos alunos de uma escola Um programa de computador é essencialmente um algoritmo que diz ao computador os passos específicos e em que ordem eles devem ser executados Por exemplo, os passos a serem tomados para calcular as notas que serão impressas nos boletins dos alunos de uma escola Um algoritmo pode então ser considerado uma sequência de operações que podem ser simuladas por um sistema computacional José Paulo 8
Quando os procedimentos de um algoritmo envolvem o processamento de dados a informação: É lida de uma fonte de entrada Processada E retornada sob novo valor após processamento Este processamento geralmente é realizado com o auxílio de uma ou mais estruturas de dados Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido, especificando a maneira que ele se comportará em todas as circunstâncias A confiabilidade do algoritmo pode ser provada matematicamente, bem como a quantidade assintótica de tempo e espaço (complexidade) necessários para a sua execução Estes aspectos dos algoritmos são alvo da análise de algoritmos José Paulo 9
A maneira mais simples de se pensar num algoritmo é através de uma lista de procedimentos bem definida, no qual as instruções são executadas passo a passo a partir do começo da lista Pode ser facilmente visualizada através de um fluxograma Fluxograma Fluxograma é um tipo de diagrama Pode ser entendido como uma representação esquemática de um processo, muitas vezes feita através de gráficos que ilustram de forma descomplicada a transição de informações entre os elementos que o compõem Podemos entendê-lo, na prática, como a documentação dos passos necessários para a execução de um qualquer processo José Paulo 10
Fluxograma O estado em vermelho indica a entrada do algoritmo enquanto os estados em verde indicam as possíveis saídas Elaborar um algoritmo que, dada uma série de números, diz qual é o maior Elaborar um algoritmo que, dada uma série de números, ordena-os por ordem decrescente José Paulo 11
Grafo Um grafo é um conjunto de pontos, chamados vértices (ou nodos ou nós), interligados por linhas, chamadas de arestas (ou arcos) Um grafo com 6 vértices e 7 arestas Grafo Dependendo da aplicação As arestas podem ou não ter direcção Pode ser permitido ou não as arestas ligarem um vértice a ele próprio Vértices e/ou arestas podem ter um peso (numérico) associado José Paulo 12
Grafo Se as arestas tiverem uma direcção associada (indicada por uma seta na representação gráfica) temos um grafo orientado, ou dígrafo Caso não tenham uma direcção associada, temos um grafo não orientado, ou simplesmente grafo Um grafo com um único vértice e sem arestas é conhecido como o grafo trivial ou "o ponto" Problema do caminho mais curto Consiste na minimização do custo de travessia de um grafo entre dois nós (ou vértices) Este custo é dado pela soma dos pesos de cada aresta percorrida José Paulo 13
do caminho mais curto Encontrar o caminho mais curto entre: A-C D-E F-B C-D E-A D-B Árvores binárias Em ciências da computação, a árvore de busca binária ou árvore de pesquisa binária É uma árvore binária onde todos os nós são valores Todos os nós da esquerda têm uma sub-árvore com os valores menores ao nó raiz da sub-árvore Todos os nós da sub-árvore da direita têm apenas valores maiores que o nó raiz José Paulo 14
Árvores binárias Os valores são relevantes na árvore de busca binária O objectivo desta árvore é estruturar os dados de forma flexível permitindo pesquisa binária Representação de Uma Árvore de busca binária de ordenação de árvores binárias Construir uma árvore do ordenação de árvores com os seguintes valores 20, 2, 18, 80, 90, 21, 22, 7, 30, 99, 50, 23 José Paulo 15