1
Projeto de sistemas microprocessados
Máquina de estados
finitos
Análise
Entender o problema Codificação
Programar
Algoritmo
Desenhar a solução 2
Algoritmos
3.1 – Introdução
3.2 – Fluxogramas
3.3 - Algoritmos Numéricos
3
Introdução
Algoritmo
• Embora a palavra esteja intimamente vinculada ao universo da
computação estamos a todo o momento fazendo o uso constante dos
algoritmos em nosso cotidiano.
Tomar banho;
Fazer café;
4
Introdução
Algoritmo
• Na verdade podemos descrever qualquer atividade por meio de um
conjunto de passos e a isto denominamos algoritmo.
5
Introdução
Algoritmo
• Condições básicas para caracterização de um algoritmo:
6
Introdução
Algoritmo
• Porque estamos falando de algoritmos?
7
Introdução
• O primeiro caso trata-se da troca de um pneu furado.
3.1 – Introdução
3.2 – Fluxogramas
3.3 - Algoritmos Numéricos
9
Fluxograma
• O fluxograma conta com diversos símbolos para representar os passos
ou etapas do processo.
• Existem diversas formas geométricas utilizadas na construção de
fluxograma e entre elas são encontradas pequenas variações simbólicas
para representação de alguns passos.
• Principais símbolos:
12
Fluxograma Troca Pneu
Fim 13
Fluxograma
• Imprevistos podem surgir durante a troca do pneu ficando o
fluxograma sem solução.
• Antes mesmo da troca do pneu deve-se avaliar a possibilidade da
execução da tarefa. Utilize o losango para representar uma tomada de
decisão (binário Falso/Verdadeiro).
14
Fluxograma Troca Pneu
Fim 15
Fluxograma
• O grau de detalhamento do fluxograma
tem como objetivo elucidar possíveis Detalhamento da ação:
dúvidas durante a execução da tarefa. Levantar o carro com o macaco (1).
16
Fluxograma
• Vamos detalhar mais uma das ações presentes no fluxograma:
Retirar parafusos (2).
Retirar parafuso
Retirar parafuso
• Para carros de passeio com quatro
parafusos por roda.
Retirar parafuso
Retirar parafuso
17
Fluxograma
• Poderíamos agora adotar a seguinte solução.
18
Fluxograma
• Esta estrutura de repetição de tarefas será obrigatória quando
desejamos que uma determinada ação ou um conjunto de ações sejam
executados um número grande de vezes.
Retirar parafuso
Retirar parafuso
19
Fluxograma
A
Fluxograma final
Retirar a roda.
Colocar parafuso
F
Colocou todos
Fim
20
Fluxograma
Mais um pra fechar.
Cola 2
V Colar
Sei a matéria
Fazer a prova
1
3
Dançar sem música
2 21
Fluxograma
• Uma central de alarme possui um conjunto de sensores. Caso um dos
sensores seja acionado a central deverá sinalizar com um aviso sonoro e
fazer uma discagem para informar o arrombamento a uma central de
segurança. Caso o alarme seja atendido local (AT) ou remotamente
(chamada telefônica - CT) o aviso sonoro deve ser desligado e retornar a
monitoração.
• Principal X Sub-rotina
23
Fluxograma
• Para os dois casos poderemos fazer uso do Discar
Discar número
• Se desejado, a subrotina de discagem poderá
informar o status da operação de discagem ao
processo que a chamou.
V
Deu ocupado
• Importante destacar que neste caso o
fechamento do fluxograma da discagem não
mais será identificado com a palavra fim, mas
sim com o rótulo Retorna. Pois nesta Resp OK Resp Ocupado
Discar número
• Este é um caso típico de uma falha de
projeto que levará o sistema a uma condição
de anormalidade durante o processo de
V
discagem. Deu ocupado
25
Fluxograma
• Solucionando possíveis falhas.
• Colocar uma temporização máxima em que o sistema permaneceria
esperando um tom de discagem. Caso o tom não ocorra dentro deste
intervalo de tempo o processo de discagem sinaliza a ocorrência de falha.
Inicia tempo
de discagem
• Considerando as possíveis fontes de
falhas: sem tom de discagem e linha
ocupado, bastaria criar um código de F
Fim tempo
F
Tem tom
identificação. discagem
• 00 – OK Discar número
• 01 – Ocupado
• 02 – Timeout
V
Deu ocupado
27
Fluxograma
• Solucionando possíveis falhas.
• Desta forma o processo principal teria
que ser remodelado. Nesta nova situação
um teste deve ser feito após a discagem.
28
Fluxograma
• Solucionando possíveis falhas. Comunicação
Telefônica
Conectar linha
Tentativas 3 F
• Podemos utilizar uma técnica parecida
com timeout, só que neste caso, F
colocaremos um contador de tentativas Discar Tentativas
de discagem, como apresentado no =0
fluxograma
Discagem F Tentativas
OK Tentativas -1
30
Fluxograma
• Máquina de refrigerante – Refinamento do estado Somando.
Fluxograma
do estado
Somando
31
Somando
Fluxograma
• Fluxograma do estado Somando.
Peso válido
Tamanho
válido
V V
Estado Libera
Sem moeda
V TempoColeta
>0
Estado Falha
32
Retorna
Fluxograma
• Diversas são a situações que poderemos modelar através de fluxograma,
mas porque utilizar este modelo?
34
Algoritmos
4.1 – Introdução
4.2 – Fluxogramas
4.3 - Algoritmos Numéricos
35
Fluxograma
Algoritmos Numéricos
• Como nosso objetivo final é a construção de algoritmos que possam
ser codificados e posteriormente executados em computadores.
Partiremos agora para o estudo dos algoritmos numéricos.
Algoritmos Numéricos
• Antes de escrever o fluxograma vamos analisar o problema
calculando manualmente.
• Desta forma, serão utilizadas três variáveis sendo que cada uma irá
conter a informação dos itens sublinhados.
37
Fluxograma
Algoritmos Numéricos
• Montando a seqüência de Fibonacci.
• Montando o fluxograma.
38
Fluxograma
Algoritmos Numéricos
• Montando o Fluxograma.
Descritivo Formal
39
Fluxograma
Algoritmos Numéricos
• Linguagem Formal
• O fluxograma em linguagem
formal é o que mais se
aproxima de um problema
matemático ou de um
programa de computador.
Algoritmos Numéricos
• Após a criação do fluxograma passaremos para fase de teste ou
validação onde descobriremos se o seu funcionamento encontra-se
correto.
41
Fluxograma
Passo (Comando) Penúltimo Último Novo
Algoritmos Numéricos 1 0e 1 0 1
2 2 1
• Montando o Chinês. 3 3 < 25
4 4e 5 1 1
5 2 2
6 3 < 25
7 4e 5 1 2
8 2 3
9 3 < 25
10 4e 5 2 3
11 2 5
12 3 < 25
13 4e 5 3 5
14 2 8
15 3 < 25
16 4e 5 5 8
17 2 13
18 3 < 25
19 4e 5 8 13
20 2 21
21 3 < 25
22 4e 5 13 21
23 2 44
24 3 > 25
• Estendendo o ensaio para enquanto novo termo for menor que 1000,
também funcionará. 42
Fluxograma
Algoritmos Numéricos
43
Fluxograma
• Embora o modelo de John von Newmann não seja o único, ele será de
grande utilidade para o entendimento deste problema.
44
Fluxograma
46
Fluxograma
Arquitetura de um Sistema Microprocessado
• Para cada elemento de memória e I/O será associado um Endereço,
sendo este, o elemento identificador.
• É possível observar que em cada endereço de memória ou I/O existirá
uma lacuna denominada Conteúdo que será responsável pelo
armazenamento de uma informação.
47
Fluxograma
Algoritmos Numéricos
• Retornando ao fluxograma da seqüência de Fibonacci apresentaremos
duas possibilidades distintas de representação de um mesmo
fluxograma, sendo as representações distintas definidas pela forma de
armazenamento das variáveis.
48
Fluxograma
Algoritmos Numéricos
• Neste caso cada variável do nosso
problema está associada a um
endereço de memória.
Algoritmos Numéricos
• Carregando uma informação na
memória tendo o endereço como
referência .
(AptPenult)0.
50
Fluxograma
Algoritmos Numéricos
• Vamos analisar o mesmo problema
considerando que uma equipe fosse
contratada para resolver este problema.
Algoritmos Numéricos
• Sobre a mesa do mestre existe o
fluxograma da seqüência de Fibanacci
indicando o que deve ser feito pelo
computador.
Algoritmos Numéricos
• O mestre pega o próximo comando (2)
do fluxograma onde está indicado que
seja executada a soma dos dois últimos
termos.
53
Fluxograma
Algoritmos Numéricos
• Com os valores na mão o
mestre faz a soma obtendo o
valor 21. O mestre passa ao
atribuidor o novo valor que
deve ser colocado na caixa
Novo.
Algoritmos Numéricos
• Duas soluções variável em registro X memória.
55
Fluxograma
Algoritmos Numéricos
• Para fixar a utilização de memórias nos fluxogramas vamos trabalhar
um novo exemplo. Faça o cálculo da média de idade de um grupo de 100
pessoas.
56
Fluxograma
Algoritmos Numéricos
• Vamos aproveitar o momento da construção deste novo fluxograma e
fazer algumas recomendações gerais e depois apresentar alguns passos
básicos para a construção de um fluxograma.
• Recomendações gerais:
• Lembre-se que você não está escrevendo um fluxograma só
para o seu entendimento. Caso você esteja em sala de aula,
tenha pena de seu professor e contribua com o resultado de sua
nota. Caso você esteja numa empresa, provavelmente este
fluxograma poderá ter sua codificação realizada por outra pessoa
de sua equipe.
• Escolha sempre nomes representativos para suas variáveis.
Algoritmos Numéricos
• Passos básicos:
• Passo 1 – Leia cuidadosamente a especificação do problema.
Não comece a escrita do fluxograma sem ter a certeza do
entendimento do que foi solicitado. Caso contrário você poderá
escrever um fluxograma, até correto sobre o aspecto lógico, mas
que não faz o que foi solicitado.
Algoritmos Numéricos
• Passos básicos:
• Passo 3 – Primeiro apresente uma solução para depois
pensar na otimização.
59
Fluxograma
Algoritmos Numéricos
• Passos básicos:
• Passo 5 – Ao definir uma determinada ação você deverá lembrar
que uma CPU resolve problemas por etapa e que esta ação talvez
tenha que ser subdividida em um conjunto de ações menores.
60
Fluxograma
Algoritmos Numéricos
• Passos básicos:
• Passo 7 – Quer nota boa? Faça o chinês.
Não dê mole para que o professor descubra o seu erro.
Ache você mesmo e garanta um bom resultado.
Algoritmos Numéricos
• Aplicando as dicas para construir o novo fluxograma.
• Passo 1 – Descrição do problema: Construir um fluxograma
cujo papel é calcular a média de idade de 100 pessoas. As
idades encontram-se armazenadas na memória a partir da
posição de memória END_INICIAL. Lembre-se novamente que
END_INICIAL é apenas um apelido de um endereço de
memória.
• Identificando o problema
62
Fluxograma
Algoritmos Numéricos
• Aplicando as dicas para construir o novo fluxograma.
• Passo 2 – Variáveis:
AptIdades – Irá indicar em que posição da memória está
carregada a lista das idades das pessoas.
Total – Responsável por acumular a soma parcial das idades.
Cont – Contador que indicará se já foi somado todas as idades.
63
Fluxograma
Algoritmos Numéricos
• Aplicando as dicas para construir o novo fluxograma.
• Passo 3 – Primeira solução:
64
Fluxograma
Algoritmos Numéricos
• Aplicando as dicas para construir o novo fluxograma.
• Passo 4: A variável Média só surgiu no final do fluxograma e foi
devidamente inserida.
65
Fluxograma
Algoritmos Numéricos
• Montando a subrotina de Divisão.
Retorna
66
Fluxograma
Algoritmos Numéricos
• Chamada da subrotina de Divisão.
Principal Subrotina
67
Fluxograma
Algoritmos Numéricos
• Passo 7: Vamos fazer o chinês considerando um número limitado
de dados.
Algoritmos Numéricos
• Passo 7: Vamos fazer o chinês da Divisão.
• Dividendo = Total = 19
• Divisor = NUM_PESSOAS = 4.
• Baseado na condição de teste
teremos a média=4 com resto 3.
Algoritmos Numéricos
• Passo 8: É possível melhorar? A melhoria irá trazer algum ganho
significativo? Se as duas respostas forem verdadeiras é partir para
implementação.
Média
• No fluxograma ao lado
suprimida a variável contador AptIdades END_INICIAL
e o teste de finalização é feito Total 0
(1)
através do AptIdades.
Total Total + (AptIdades)
• É uma outra possibilidade (2)
Exercício
que não deve ser encarada
como uma boa otimização
AptIdades =
visto que o ganho obtido é END_INICIAL + V
Divisão
NUM_PESSOAS
muito pequeno. (3)
AptIdades AptIdades + 1
Fim
(4)
70
Fluxograma
Algoritmos Numéricos
71
Fluxograma
Algoritmos Numéricos
72