Sistemas Lógicos II
2 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Datas de testes
• 1º teste
– 30 de Abril – 17h00
• 2º teste
– 11 de Junho – 14h00
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Arquitectura e controlo
Voltando ao início...
• Registos definidos com base
em CI (menos funcionalidades)
• Necessário definir sequência
de controlo consoante a operação/instrução • Micro-processador – Várias instruções • 1 instrução - microprograma Registo CI n bits Somador n bits Acumulador n bits Registo n bits Registo n bits
4 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
– E.g. Receita de culinária para fazer bolo:
Algoritmo
«Sequência finita e não ambígua de passos
que permite resolver um problema.»
• Dados:
1. Separar as gemas das claras dos ovos
2. Derreter a manteiga
3. Juntar o açúcar à manteiga derretida
4. Juntar a farinha
5. Juntar as gemas
6. Bater as claras em castelo
7. Juntar ao resto da mistura
8. Colocar numa forma
9. Levar ao forno, durante 1 hora
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Formas de exprimir algoritmos
• Textuais
– Em linguagem
natural
(e.g. Receita)– Pseudo-código
– Linguagem de
programação
• Gráficas
– Fluxogramas
– Program Graph
– Diagramas
Nassi-Schneiderman
Algoritmo estruturado
• Abordagem «top-down»
• «Dividir para conquistar»
6 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Algoritmo estruturado
• Técnica de organização e codificação de
algoritmos
– Reduz complexidade – Clarifica processo
– Facilita detecção de erros e alteração
• Desvantagens
– Algumas estruturas só existem em linguagens de alto
nível
– Pode necessitar mais memória e ser mais lento do que o
seu equivalente não estruturado
• Objectivo:
– Decompor em blocos,
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Construção de algoritmo
• Compreender o problema
• Identificar dados de entrada
• Identificar dados de saída
– Como proceder para produzir dados de saída a partir
dos dados de entrada
• Dividir para conquistar (método cartesiano) • Identificar regras e limitações
• Identificar acções a realizar • Eliminar ambiguidades
• Construir o algoritmo
• Testar o algoritmo (atenção aos casos extremos)
• Executar o algoritmo
8 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Exemplo: determinar
zeros de ax+b=0
• Em pseudo-código – Início do programa – Ler a – Ler b – Se a ≠≠≠≠0 então • X=b/a • Imprimir x – Senão• Imprimir “Não há zeros”
– Fim se
– Fim do programa
• Em linguagem natural:
– Iniciar por ler os valores de a e de b. Se o valor de a for
diferente de 0, então calcular x=b/a e devolver o valor de x; senão a equação não tem zeros. Fim do algoritmo.
• Em fluxograma Ler a Início a<>0 x=b/a T Ler b Imprimir x Imprimir "Não há seros" F Fim
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Fluxogramas
– Elementos Básicos –
• Terminador de
programa
• Seta de fluxo de
programa
• Caixa de
processo
• Bloco de decisão
• Bloco de
entrada/saída
• Caixa de
processo
pré-definido
• Sequência de
acções
<Acção 1> <Acção 2> <Acção 3>10 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Estruturas básicas de controlo
• Pseudo-código
– Decisão
• Se <condição>
– Então <acções A> – Senão <acções B> • Fim_se
– Repetição condicional: Enquanto ... fazer
• Enquanto <condição> • Fazer
– Acções C • Feito
– Repetição condicional: Fazer ... até
• Fazer – Acções D • Até <condição>
• Fluxograma
<condição> <Acções A> <Acções B> T F <condição> <Acções C> T F <condição> <Acções D> T FJ o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Estruturas básicas de controlo
(cont.)• Pseudo-código
– Decisão múltipla
• Caso
– <cond1> então <acções A> – <cond2> então <acções B> – Omissão <acções C> • Fim_caso
• Fluxograma
<cond1> F T <Acções A> <cond2> <Acções B> T <Acções C> F12 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
Arquitectura e controlo
Estrutura de uma instrução
• Algoritmo para
somar
αααα
+
ββββ
– Entradas inexistentes
– Saídas
• Ligação
permanente
– Ligado às saídas Q
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
1ª aproximação
αααα
=
αααα
+
β
• Sinais de controlo
– CI
• R, W, C, I, Z
– ACC
• R
A,W
A, Z
A– Registo
αααα
• R
αααα
,W
αααα
– Registo
β
• R
β
,W
β
1. ZA – Limpar ACC2. R
αααα
– Lerαααα
3. W
– Escrever α em CI4. R
– Ler CI -> α entrada ACC5. W
A – Escrever α em ACC,αααα
na entrada do somador6. R
β
– Lerβ
7. W
– Escreverβ
em CI8. R
– Ler CI -> α+β
na entrada do ACC9. W
A – α+β
no ACC10. R
A – α+β
no Bus11. W
αααα
αβ
α14 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
2ª aproximação
αααα
=
αααα
+
β
Paralelismo
1. ZA – Limpar ACC2. R
αααα
– Lerαααα
3. W
– Escrever α em CI4. R
– Ler CI -> α entrada ACC5. W
A – Escrever α em ACC,αααα
na entrada do somador6. R
β
– Lerβ
7. W
– Escreverβ
em CI8. R
– Ler CI -> α+β
na entrada do ACC9. W
A – α+β
no ACC10. R
A – α+β
no Bus11. W
αααα
– α+β
no reg. α• Enquanto não se escrever no acumulador, pode-se limpar o acumulador... i.e. 1. Pode ser feito em
paralelo com 2, 3, ou 4
• 2 e 3 não devem ser feitos em paralelo, a não ser
que se garanta que num ciclo de relógio a escrita só é feita na transição de 1 para 0
• Escrita no Acumulador pode ser feita em paralelo com a leitura de β
• Complicado de decidir, não é?
J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
2ª aproximação
αααα
=
αααα
+
β
-paralelismo - fluxograma
1. ZA – Limpar ACC2. R
αααα
– Lerαααα
3. W
– Escrever α em CI4. R
– Ler CI -> α entrada ACC5. W
A – Escrever α em ACC,αααα
na entrada do somador6. R
β
– Lerβ
7. W
– Escreverβ
em CI8. R
– Ler CI -> α+β
na entrada do ACC9. W
A – α+β
no ACC10. R
A – α+β
no Bus ZA Ralpha W R WA Rbeta W R WA RA Start16 J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)
2ª aproximação
αααα
=
αααα
+
β
-paralelismo - fluxograma
ZA Ralpha W R WA Rbeta W R WA RA Walpha Start End ZA Ralpha W R WA Rbeta W R WA RA Walpha Start End Estado 0 Estado 1 Estado 2 Estado 3 Estado 4 Estado 5 Estado 6 Estado 7J o ã o P a u lo P im e n tã o ( p im @ fc t. u n l. p t)