Escolar Documentos
Profissional Documentos
Cultura Documentos
PA 1 Paulo Campelo
Programação - Algoritmos
PA 2 Paulo Campelo
Programação - Algoritmos
Análise da situação/problema
Formulação de um algoritmo
(diagramas/fluxogramas/pseudocódigo)
Revisão do algoritmo
Revisão do texto
Tradução (compilação/interpretação) do programa-fonte
para código máquina e verificação dos erros de escrita
Detecçã sim
o de
erros de
não
Detecçã sim
o de
erros de
não
Programa terminado
Problema:
Sendo dado o preço de um apartamento, e sabendo ele que tem uma área de
120 metros quadrados; pretende-se saber se o preço por metro quadrado está a
cima ou abaixo da média dos preços praticados para aquele local, sendo dado
também esse preço médio.
Formulação do algoritmo:
PA 4 Paulo Campelo
Programação - Algoritmos
se
preço por m 2 > preço médio
então
preço acima da média
se
preço por m 2 < preço médio
então
preço abaixo da média
a) Definir o problema.
b) Realizar um estudo da situação actual e verificar quais a(s) forma(s) de
resolver o problema.
c) Terminada a fase de estudo, utilizar uma linguagem de programação para
escrever o programa que deverá a princípio, resolver o problema.
d) Analisar junto dos utilizadores se o problema foi resolvido. Se a solução
não foi encontrada, deverá ser retornado para a fase de estudo para
descobrir onde está a falha.
Estas são de forma bem geral, as etapas que um analista passa, desde a
apresentação do problema até a sua efectiva solução.
PA 5 Paulo Campelo
Programação - Algoritmos
PA 6 Paulo Campelo
Programação - Algoritmos
Fluxogramas
Processamento em
XX+1
geral
Leitura/Escrita de
Escreve
dados X
Inicio/Fim de
processamento Inicio
Linha de fluxo
Conector de fluxo
Decisão condicional
n>5
Escolha múltipla 1 4
Caso x
2 3
Subprograma
Rotina x
PA 7 Paulo Campelo
Programação - Algoritmos
Actualmente os fluxogramas não são muito utilizados. Eles têm mais interesse
do ponto de vista didáctico do que propriamente do ponto de vista da programação.
Os fluxogramas são úteis, pois podem ajudar a visualizar melhor algumas
estruturas da programação, mas para representar programas de média ou longa
extensão tornam-se difíceis de concretizar, pois podem exigir muito espaço, para
além do tamanho habitual de uma folha de papel, o que os torna de difícil leitura e
manuseamento.
PA 8 Paulo Campelo
Programação - Algoritmos
Inicio
Ler Valor 1
Ler Valor 2
Fim
Pseudocódigo
PA 9 Paulo Campelo
Programação - Algoritmos
Início
Escrever (“Introduza dois valores”)
Ler (valor 1)
Ler (valor 2)
Se valor 1 > valor2 então
Escrever (valor 1, “é maior”)
Senão
Escrever (valor 2, “é maior”)
Fim se
Fim
PA 10 Paulo Campelo
Programação - Algoritmos
Formulação de um
algoritmo como
solução do problema Verificação e
depuração do
Diagramas programa Programa em
Fluxogramas código máquina
Pseudocódigo
Compiladores
Linguagens de programação
Interpretadores
PA 11 Paulo Campelo
Programação - Algoritmos
2.1 Dados
PA 12 Paulo Campelo
Programação - Algoritmos
Qualquer programa opera com dados, que por sua vez podem ser utilizados
num programa sobre a forma de constantes ou variáveis:
- Constantes – são valores que se mantêm inalterados dentro de um
programa
- Variáveis – são entidades que podem assumir diferentes valores ao longo
da execução do programa.
PA 14 Paulo Campelo
Programação - Algoritmos
Instruções de atribuição
nome ’Silva’
quantia 1000
PA 15 Paulo Campelo
Programação - Algoritmos
ba
2.3 Expressões
Os operandos como vimos podem ser: ‘O valor a pagar é’, 400, quantia, etc.
a) Operadores aritméticos:
+ Adição 5+6
- Subtracção a-b
* Multiplicação 2*a
/ divisão b/2
PA 16 Paulo Campelo
Programação - Algoritmos
• numéricas
• booleanas
Sequências de instruções
Contudo, grande parte dos programas não se limita a efectuar coisas tão
simples.
É então necessário alterar a sequência normal da execução das instruções.
Surgem assim as chamadas instruções de controlo.
Instruções de “salto”
PA 18 Paulo Campelo
Programação - Algoritmos
Instrução 1: Lê (´numero1’)
Instrução 2: Se numero1>100 vai para (goto) instrução 1
Instrução 3: Lê (‘numero2’)
PA 19 Paulo Campelo
Programação - Algoritmos
Instrução 4: Lê (‘numero1’)
.......
Instrução 50: escreve numero1
Instrução 50: total numero1 * 20
.........
Instrução 60: RETURN (retorna)
PA 20 Paulo Campelo
Programação - Algoritmos
Estruturas de
controlo
Com contador
(desde um valor
inicial até um
valor final)
Estruturas de
repetição ou
ciclos Enquanto se
verifica a
condição
Com base numa
condição
Até que se
verifique a
condição
Em que:
PA 21 Paulo Campelo
Programação - Algoritmos
Condição
Não Senão
Sim
Instrução/ões Instrução/ões
Exemplo:
PA 22 Paulo Campelo
Programação - Algoritmos
Lê (nota) Lê (nota)
Não
Sim Sim
Lê (nota) Lê (nota)
Se nota >=10 então Se nota >=10 então
Escreve (‘Aprovado´) Escreve (‘Aprovado´)
Fim se Senão
Escreve (‘Reprovado´)
Fim se
1- Adição
2- Subtracção
3- Multiplicação
4- Divisão
Neste caso a estrutura “IF” poderia ser substituída pela estrutura “CASE”,
sendo assim representada.
PA 24 Paulo Campelo
Programação - Algoritmos
CASO opção
1: faz adição;
2: faz subtracção;
3: faz multiplicação;
4: faz divisão;
Fim CASO
Numa estrutura CASE há uma variável, que pode assumir os valores usados
no controlo das alternativas ou acções a escolher – a esta variável é costume
chamar-se selector.
Caso X
(...)
Instrução/ões Instrução/ões Instrução/ões Instrução/ões
CASO <variável/selector>
<valor 1> faz <instrução 1>
<valor 2> faz <instrução 2>
...
PA 25 Paulo Campelo
Programação - Algoritmos
Da mesma forma quando se indica <instrução 1>, <instrução 2>, etc., pode-
se tratar de uma só acção ou de um conjunto de acções.
Nesta estrutura também pode existir uma cláusula “ELSE”, que se destina a
indicar que caso o selector não assuma nenhum valor indicado nos explicitados,
então deve ser executada a acção ou o conjunto de acções aí indicada.
PA 26 Paulo Campelo
Programação - Algoritmos
Este ciclo é normalmente designado por ciclo “FOR” e pode ser enunciada da
seguinte forma:
Variável > x
Instrução/ões
PA 27 Paulo Campelo
Programação - Algoritmos
escreve (multiplo)
fim para
fim
ou então
Inicio
numero=1
para contador =0 até 6 passo 2 faz
multiplo numero * contador
escreve (multiplo)
fim para
fim
PA 28 Paulo Campelo
Programação - Algoritmos
PA 29 Paulo Campelo
Programação - Algoritmos
Instrução/ões
Condição
Não Não
Sim
Condição
Instrução/ões
Sim
PA 30 Paulo Campelo
Programação - Algoritmos
Início
n0
Enquanto n<10 faz
n n +1
quadrado n * n
Escreve (quadrado)
Fim enquanto
Fim
PA 31 Paulo Campelo
Programação - Algoritmos
n=0
n<10
Sim
Não
n =n +1
quadrado = n * n
Escreve
quadrado
PA 32 Paulo Campelo
Programação - Algoritmos
Repete
Lê (n)
Dobro n * 2
Escreve (‘o dobro de ‘,n,’é’,dobro)
Lê (n) Até dobro=0
dobro = n * 2
dobro = 0
Sim
2.5 Subprogramas
Vejamos um exemplo:
Subprograma introduzirdados
Início (do subprograma)
Escreve(‘Introduza o primeiro valor’)
Lê (numero1)
Escreve(‘Introduza o segundo valor’)
Lê (numero2)
Fim (do subprograma)
Subprograma cálculo
Início (do subprograma)
Soma numero1 + numero2
Escreve (‘A soma dos dois números é:’, soma)
Multiplicação numero1 * numero2
PA 34 Paulo Campelo
Programação - Algoritmos
Tracing ou traçagem
Inicio
numero=1
para contador =0 até 6 faz
multiplo numero * contador
escreve (multiplo)
fim para
fim
PA 35 Paulo Campelo
Programação - Algoritmos
Ou então,
contador numero multiplo
0 1 0
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
PA 36 Paulo Campelo
Programação - Algoritmos
3. Estruturas de dados
Inteiros
PA 37 Paulo Campelo
Programação - Algoritmos
Caracteres
PA 38 Paulo Campelo
Programação - Algoritmos
Booleanos
Tipo real
Por fim temos ainda os dados de tipo real que são números que podem ter
partes decimais.
Os números reais formam também, matematicamente falando, um conjunto
infinito de números e por isso, tal como nos inteiros estes dados também ocupam
espaço, dependendo assim a sua dimensão do número de bytes empregues.
Uma variável deste tipo é designada por um identificador que neste caso é
igual para todos os elementos do conjunto.
Apesar de um array ter um só identificador para todos os elemtos que agrupa,
cada elemento desse agrupamento tem um ou mais índices associados, sendo
esses índices que permitem identificar cada elemento individual no conjunto
representado pelo array.
A[2,1]
232
A[3,1]
895
PA 40 Paulo Campelo
Programação - Algoritmos
um único identificador (por ex.: meses) em que cada ano era representado por um
índice (meses[1], meses[2], meses[3], etc.)
PA 41 Paulo Campelo