Você está na página 1de 12

Técnico Especialista em Gestão de Redes e Sistemas Informáticos

Programação - Algoritmos Algoritmos e


Fluxogramas
UFCD(s): 5117 - 5091
Algoritmo
❖ Definição formal: Lista finita de instruções para descrever uma computação que, quando
aplicada a um conjunto de parâmetros de entrada, passa por um conjunto bem definido de
estados e termina produzindo um resultado.
❖ Ou seja, é um processo com princípio, meio e fim.
❖ Os seguintes processos (resumidos) não são algoritmos:

“Para que o tacho fique bem lavado, devemos colocar detergente, esfregar
bastante e repetir estes passos”. Até quando? Para sempre?

“Para procurar pelo número de telefone de uma pessoa na lista telefónica,
começamos pela primeira pessoa e verificamos o seu nome. Se for igual, está
encontrado o número, senão passamos para a pessoa seguinte na lista”.
Problema: este processo não nos diz quando parar caso a pessoa em questão
não esteja listada.

!2
Algoritmo
❖ Um algoritmo inclui:
★ Alguns testes para indicar quando é que o processo está
concluído
★ Indicação da ordem pela qual as instruções devem ser
executadas
★ Esta ordem nem sempre é sequencial: por vezes, a próxima
instrução a ser executada depende do resultado de um ou
mais testes
❖ Um algoritmo é semelhante a uma receita
Exemplo
❖ À direita indicamos um processo para
cálculo de uma raiz quadrada: Algoritmo: Cálculo da Raiz Quadrada

Entrada(s): N -> número

❖ Temos: Saída(s): r -> número tal que r * r ~= N


★ Uma sequência de passos (ie, de


operações) 1. Escolher um número arbitrário r entre
1 e N.
★ Quando é que são executados e
2. Se N - e <= r * r <= N + e , com e
mediante que condições muito pequeno (eg, 0,000001), então o
resultado é r.
★ Quando é que o processo termina
3. Senão, fazer r = (r + N/r) / 2
★ Ou seja, acabámos de descrever um
algoritmo para calcular a raiz 4. Voltar ao passo 2.
quadrada de um número

!4
Auxiliares Desenvolvimento Algoritmos e Programas

❖ Implementação de programas e de algoritmos envolvem aspectos (ie, detalhes)


que numa primeira fase podem não ser essenciais:
★ Interacção com o utilizador
★ Entradas e saídas
★ Interligação das diversas partes
★ Compilação, etc.
❖ Numa fase de concepção (programa ou algoritmo) por vezes é melhor ignorar
estes detalhes
❖ Queremos comunicar o nosso raciocínio, a nossa análise, o desenho de uma
solução, etc, a colegas, clientes, pessoas que podem não “ser técnicas”
★ Por vezes código não é a melhor forma de comunicação
Auxiliares Desenvolvimento Algoritmos e Programas

❖ Estruturam o raciocínio ao focarem-se em determinados


aspectos:
★ Modelos de dados: identificação das entidades e
relação entre eles
★ Fluxogramas: processos, sequência e encadeamento
das operações
★ Diagramas de estados: estados de uma entidade
Auxiliares Desenvolvimento Algoritmos e Programas

Ferramenta Propósito
(Pseudocódigo) Descrição de algoritmos semi-formal
Formal mas menos formal que uma linguagem de programação, menos
detalhes
Descrição visual de algoritmos e processos
Fluxogramas
Foco na sequência de operações e no fluxo de execução
Expressão declarativa de padrões de texto
(Expressões regulares)
Facilita pesquisas
Linguagem declarativa para indicar regras sintáticas.
Gramáticas Bom para desenvolver linguagens, interpretadores de comandos, etc.
Ideal para documentar programas e ferramentas.
Descrição visual dos estados pelos quais passa um processo
Diagramas de Estado
Foco nos eventos e condições que motivam uma transição de estados
Pseudocódigo
❖ Descrição informal de um programa ou algoritmo
❖ Utiliza estruturação e convenções de linguagens de
programação
❖ Acrescenta informalidade da linguagens naturais e/ou notação
matemática
❖ Omite detalhes que podem ser necessários para uma máquina
correr o programa ou algoritmo
❖ Mais rigoroso e formal do que linguagem natural, mas não tão
rígido e detalhado como uma linguagem de programação
Algoritmo: Cálculo da Raiz Quadrada

Entrada(s): N -> número

Saída(s): r -> número tal que r * r ~= N


1. Escolher um número arbitrário r entre 1 e N.

2. Se N - e <= r * r <= N + e , com e muito


pequeno (eg, 0,000001), então o resultado é r.

3. Senão, fazer r = (r + N/r) / 2

4. Voltar ao passo 2.

!9
Fluxogramas
❖ Diagrama que indica os passos de um algoritmo ou
processo
❖ Símbolos e elementos gráficos padronizados
★ Facilita a comunicação
★ Reduz a ambiguidade: o significado de cada símbolo
está definido e é conhecido por todos
❖ “Pseudocódigo” visual
❖ Consultar apontamentos extra sobre fluxogramas

!10
Fluxograma: Algoritmo para somar números pares introduzidos pelo utilizador

!11
Referências
[1] Carlos Rafael, Apontamentos sobre Algoritmos

[2] Guttag, John. " Introduction to Computation and


Programming Using Python - Revised and Expanded
Edition“, MIT Press, 2013, Cap. 1

Você também pode gostar