Você está na página 1de 30

Apontamentos de Programao

2004/2005

Jos Manuel Torres


Universidade Fernando Pessoa i


ALGORITMOS E COMPUTAO......................................................................................... 1
Algoritmos.......................................................................................................................... 1
Noo de Algoritmo........................................................................................................ 1
Algoritmo Mudana de Lmpada.................................................................................... 2
Algoritmo Lista-Telefnica.............................................................................................. 3
Algoritmo........................................................................................................................ 4
Noo Formal de Algoritmo:........................................................................................... 4
Caractersticas Importantes de um Algoritmo ................................................................ 5
Algoritmo MDC............................................................................................................... 6
Representao de Algoritmos............................................................................................ 7
Linguagem auxiliar (pseudo-cdigo) .............................................................................. 7
Diagrama de Fluxo (fluxograma) .................................................................................... 9
Resumo das estruturas de controlo de fluxo................................................................ 10
Linguagem de Programao ........................................................................................ 13
Prova e Teste de Algoritmos............................................................................................ 16
Seguimento e Teste de Algoritmos ou Programas....................................................... 16
Programao "top-down" e "bottom-up" .......................................................................... 17
Resoluo de Problemas................................................................................................. 18
Resoluo de Problemas Simples................................................................................ 18
Resoluo de Problemas Mais Complexos.................................................................. 18
Caractersticas de um bom Programa.......................................................................... 18
INTRODUO PROGRAMAO ................................................................................... 19
Estrutura Bsica de um Sistema de Computao Digital................................................. 19
Sistema ........................................................................................................................ 19
Sistema de Computao Digital ................................................................................... 19
Comunicao dos Perifricos com o CPU.................................................................... 20
Execuo de um Programa num Sistema de Computao Digital ............................... 21
Processamento Digital ................................................................................................. 22
Tipos De Informao.................................................................................................... 22
Unidade De Processamento Central ............................................................................ 23
Conceitos de Programa e Software ................................................................................. 24
Programa: .................................................................................................................... 24
Software....................................................................................................................... 24
Tipos de Programas: .................................................................................................... 24
Universidade Fernando Pessoa ii

Linguagens Mquina, Assembly e de Alto Nvel .............................................................. 24
Linguagem Mquina..................................................................................................... 24
Linguagens de Programao........................................................................................... 25
Linguagens compiladas................................................................................................ 26
Linguagens interpretadas............................................................................................. 27
Universidade Fernando Pessoa iii


ALGORITMOS E COMPUTAO
Algoritmos
Noo de Algoritmo

Noo Informal: Sequncia finita e no ambgua de instrues elementares bem
definidas, conducente soluo de um determinado problema, cada uma das quais
pode ser executada mecanicamente, numa quantidade finita de tempo e com uma
quantidade finita de esforo.

Objectivo Sub-Objectivos Passos de Resoluo
Universidade Fernando Pessoa 1

Algoritmo Mudana de Lmpada

Exemplo 1: Substituir uma lmpada fundida de um candeeiro.

Passo Descrio
1 Seleccione uma nova lmpada
2 Remova a Lmpada fundida
3 Insira uma nova lmpada

1.1 Seleccione uma lmpada da mesma potncia da fundida
2.1 Posicione a escada em baixo do candeeiro
2.2 Suba a escada at que possa atingir a lmpada
2.3 Rode a lmpada no sentido contrrio ao dos ponteiros do relgio at que esta
se solte
3.1 Coloque a nova lmpada no orifcio correspondente
3.2 Rode a lmpada no sentido dos ponteiros do relgio at que fique presa
3.3 Desa da escada

Definio mais precisa para o passo 1.1:
Dada uma caixa com lmpadas, seleccione uma lmpada candidata substituio
Se a lmpada no da mesma potncia da antiga, ento,
repita os passos seguintes at encontrar uma lmpada da potncia desejada:
Pouse a lmpada seleccionada
Seleccione uma nova lmpada

Por exemplo, para os passos 2.2, 2.3, 3.2 e 3.3 poderiam tambm derivadas
descries mais precisas e detalhadas, do tipo: Repita ... at ...
Aumento do detalhe do algoritmo pode continuar quase indefinidamente.
Grau de detalhe depende das necessidades do agente que vai executar o
algoritmo.

Universidade Fernando Pessoa 2

Algoritmo Lista-Telefnica

Exemplo 2: Encontrar o nmero de telefone que corresponde a um dado nome
numa lista telefnica.

Passo Descrio
1 Encontre a pgina da lista que contm o ltimo apelido do nome
2 Encontre na pgina determinada no passo 1, o nome procurado

Aumentando o detalhe, obtemos instrues elementares no ambguas:
1.1 Coloque o marcador D (dedo) ao acaso na lista
1.2 Abra a lista
1.3 ltimo apelido est contido numa das pginas abertas (esquerda ou direita)?
Se sim, siga para o passo 2
1.4 ltimo apelido precede a pgina esquerda? Se sim, coloque o marcador atrs
da pgina esquerda; se no, coloque o marcador frente da pgina direita.
1.5 V para 1.2 (retome a sequncia de instrues no passo 1.2)

Eliminando formulaes mal definidas (ex.: coloque o marcador atrs):
1.1.1 Torne A igual ao apelido do nome a seleccionar (atribuio varivel A)
1.1.2 Escolha uma posio n ao acaso no intervalo [1,N]
(n representa o nmero de pginas til da lista)
1.1.3 Torne D igual a n (atribua varivel D o valor n)
1.2 Abra a lista no local seleccionado pelo marcador D
1.3 A est contido numa das pginas abertas (esquerda ou direita)? Se sim, siga
para o passo 2.
1.4 A precede o primeiro apelido da pgina esquerda? Se sim, faa n igual a
(n+1)/2 (actualizao do valor de n); se no, faa n igual a (N+n)/2.
1.5 V para 1.2 (retome a sequncia de instrues no passo 1.2)
Universidade Fernando Pessoa 3


Algoritmo

Inclu:
Aces (escolha ... , coloque ... , etc.)
Testes de Condies (apelido precede a pgina esquerda?, etc.)
Saltos para passos fora da sequncia normal (siga, v para ... )



Formulaes Rejeitveis:


Se n for muito grande... (especificao qualitativa)
Escreva qualquer coisa... (domnio infinito)
Para o maior inteiro n tal que x
n
+y
n
=z
n
, com x, y, z inteiros... (soluo matemtica
desconhecida)

Noo Formal de Algoritmo:
Um algoritmo um processo discreto (sequncia de aces indivisveis),
determinstico (para cada passo da sequncia e para cada conjunto vlido de dados,
corresponde uma e uma s aco), que termina quaisquer que sejam os dados iniciais
(pertencentes a conjuntos pr-definidos).
Universidade Fernando Pessoa 4

Caractersticas Importantes de um Algoritmo


Entradas: Quantidades inicialmente especificadas (por exemplo atravs de
instrues de leitura.
Sadas: Uma ou mais sadas (habitualmente por instrues de escrita)
Finitude: A execuo deve terminar sempre num nmero finito de passos.
Preciso: Todos os passos do algoritmo devem ter um significado preciso no
ambguo, especificando exactamente o que deve ser feito. Para evitar a
ambiguidade das linguagens humanas (linguagens naturais), linguagens especiais
(denominadas linguagens de programao) foram criadas para exprimir algoritmos.
Eficcia: Os passos devem conduzir resoluo do problema proposto. Devem
ainda ser executveis numa quantidade finita de tempo e com uma quantidade
finita de esforo.
Eficincia: Em muitos casos colocam-se questes de eficincia a um algoritmo.

Universidade Fernando Pessoa 5

Algoritmo MDC

Exemplo 3: Dados dois nmeros inteiros m e n, calcular o seu mximo divisor
comum mdc(m, n)

1. Leia m, n (conjunto de valores vlidos: inteiros, 0)
2. Se m<n Ento torne min = m Seno torne min = n
3. Torne mdc = min
4. Torne r1 = mod(m, mdc)
5. Torne r2 = mod(n, mdc)
6. Se r1 = 0 e r2 = 0 Ento Escreva o valor de mdc; Stop
Seno Torne mdc = mdc - 1 e V Para 4

No algoritmo MDC usaram-se as seguintes instrues:

Leitura e escrita de dados: Entradas e sadas de valores
Utiliza-se em notao formal leia(...) e escreva(...)
Atribuio de valor: Corresponde a aces do tipo torne, tome, calcule, seja
Utiliza-se em notao formal : por exemplo m m+1, mdc min
Teste de condio: Se ... ento ... seno .... Podem-se utilizar condies lgicas do
tipo Se x>0 E y>0 OU z<x ento ...seno ...
Utiliza-se em notao formal a sintaxe Se ... ento ... seno ...
Salto: Redirecciona a sequncia de execuo v para
Utiliza-se em notao formal a sintaxe V para
Paragem: Instruo Stop
Utiliza-se em notao formal Stop
Funes predefinidas: A funo matemtica mod(x, y) que permite calcular o resto
da diviso inteira entre o nmero inteiro x e o nmero y

Conjunto mnimo de instrues de um computador corresponde s apresentadas
anteriormente mais instrues de gesto do espao de variveis.
Universidade Fernando Pessoa 6

Representao de Algoritmos
Na fase de Desenvolvimento podemos utilizar:
Linguagem auxiliar (pseudo-cdigo).
Diagrama de Fluxo (fluxograma).

Meio mais rigoroso e eficaz:
Linguagens de Programao.

Linguagem auxiliar (pseudo-cdigo)
Notao Utilizada: Descrio
Leia(...) ou LeiaLinha(...) Leitura de dados, atribuindo o valor
lido a uma varivel
Escreva(...) ou EscrevaLinha(...) Escrita ou sada de dados

Stop Fim de programa
<bloco>: Inicio .... Fim Delimita uma sequncia de
instrues que funciona em bloco

<operador de atribuio>: Atribui o valor que est do lado
direito varivel que est do lado
esquerdo

Se <condio> Ento <bloco1> Seno <bloco2> Estrutura condicional booleana: se a
condio for verdadeira executa o
bloco1 seno executa o bloco2
Caso <expresso> Seja
<valor_1> : <bloco_1>
....
<valor_n> : <bloco_n>
Seno <bloco_seno>
FimCaso
Estrutura condicional mltipla: avalia
o valor da expresso e em funo
disso selecciona e executa apenas
um dos blocos

Para <i expresso_inicial> At
<expresso_final>
Faa <bloco>
Estrutura repetitiva (ciclo): existe
uma varivel de ciclo i que vai tomar
todos os valores entre
expresso_inicial e expresso_final.
Para cada valor de i, o bloco ser
executado.
Enquanto <condio> Faa <bloco> Estrutura repetitiva (ciclo): enquanto
a condio for verdadeira executa o
bloco
Repita <bloco> AtQue <condio> Estrutura repetitiva (ciclo): executa o
bloco at que a condio seja
verdadeira

V para Instruo de salto: o programa (o fio
de execuo) salta para a instruo
referida

Universidade Fernando Pessoa 7


Exemplo 1: Algoritmo de clculo do MDC
1. Leia(m, n) (Z
+
)
2. Se m < n Ento min m Seno min n
3. mdc min
4. r1 mod(m, mdc)
5. r2 mod(n, mdc)
6. Se r1 = 0 E r2 = 0
7. Ento Escreva(mdc), Stop
8. Seno mdc mdc-1, V Para 4


Pode/deve usar avanos de pargrafo para salientar blocos de instrues
dentro de outras instrues
Pode/deve usar numerao no inicio de cada linha para mais facilmente testar e
corrigir o algoritmo

Universidade Fernando Pessoa 8


Diagrama de Fluxo (fluxograma)
Smbolos Utilizados:


Condio Processo
Terminal
Entrada/Sada


Exemplo 1: Algoritmo de clculo do MDC
Leia m,n
Start
m < n
min <- n min <- m
F V
mdc <- min
Stop Escreva mdc r1=0 E r2=0
r2 <- mod(n.mdc)
r1 <- mod(m,mdc)
mdc <- mdc - 1
V F



Universidade Fernando Pessoa 9

Resumo das estruturas de controlo de fluxo

Se <condio> Ento <bloco_1> Seno <bloco_2>

Condio
Verdadeira Falsa
Bloco de
instrues 1
Bloco de
instrues 2




Caso <expresso_ordinal> Seja
<valor_1> : <bloco_1>
....
<valor_n> : <bloco_n>
Seno <bloco_seno>
FimCaso

Valor 1
Expresso
Ordinal
Bloco de
instrues 1
Bloco de
instrues seno
....... Bloco de
instrues 1
Bloco de
instrues 1
Valor 2 Valor n seno

Universidade Fernando Pessoa 10


Enquanto <condio> Faa <bloco>

Condio
Verdadeira
Falsa
Bloco de
instrues




Repita <bloco> AtQue <condio>

Condio
Verdadeira
Falsa
Bloco de
instrues

Universidade Fernando Pessoa 11


Para <i expresso_inicial> At <expresso_final>
Faa <bloco>

i <= fim
Verdadeira
Falsa
Bloco de
instrues
i i + 1
i inicio

Universidade Fernando Pessoa 12


Linguagem de Programao
O algoritmo desenvolvido para o clculo do MDC pode facilmente ser implementado
em qualquer linguagem: Pascal, C, Basic, Fortran, etc.


Linguagem Pascal
Program MaxDivComum;

Var n1, n2, mdc, r1, r2: integer;

Begin
Write('Introduza o primeiro numero: ');
Readln(n1);
Write('Introduza o segundo numero: ');
Readln(n2);
If n1<n2 then mdc := n1 else mdc := n2;
r1 := n1 mod mdc;
r2 := n2 mod mdc;
While (r1<>0) or (r2<>0) do
Begin
mdc := mdc - 1;
r1 := n1 mod mdc;
r2 := n2 mod mdc;
End;
Writeln('Maximo Divisor Comum: ', mdc);
End.End.

Linguagem muito simples e didctica mas ao mesmo tempo - nas mais recentes
implementaes - muito poderosa. O cdigo extremamente semelhante ao pseudo-
cdigo apresentado.
Utiliza-se actualmente o Pascal por Objectos em ambiente de desenvolvimento Delphi.
Universidade Fernando Pessoa 13


Linguagem C
void main()
{
int m, n, min, mdc, r1, r2;
scanf(%d %d,&m,&n);
if (m < n) min = m; else min = n;
mdc = min;
r1= m % mdc;
r2= n % mdc;
while (r1!=0 || r2!=0)
{
mdc--;
r1 = m % mdc;
r2 = n % mdc;
}
printf(%d\n,mdc);
}

Linguagem muito poderosa mas cujo cdigo (muito condensado) j no se assemelha
muito ao pseudo-cdigo apresentado.
Utilizam-se actualmente compiladores como o OpenWatcom (software gratuito e
opensource), Borland C++ ou o Microsoft Visual C++
Universidade Fernando Pessoa 14


Linguagem Basic com saltos
10 Input m, n
20 If m < n then min = m else min = n
30 mdc = min
40 r1 = m Mod mdc
50 r2 = n Mod mdc
60 if r1<>0 or r2<>0 then mdc = mdc - 1: Goto 40
70 Print mdc
80 Stop

Linguagem MS-Visual Basic (VBA para MS-Excel)
Sub mdc()
' declarao das variveis
Dim n1 As Integer, n2 As Integer, mdc_val As Integer
Dim menor As Integer, maior As Integer
' selecciona "A1"
Range("A1").Select
' le valor de n1 na celula b1
n1 = CInt(Selection.Offset(0, 1).Value)
' le valor de n2 na celula b2
n2 = CInt(Selection.Offset(1, 1).Value)
If n1 < n2 Then
mdc_val = n1
Else
mdc_val = n2
End If
r1 = n1 Mod mdc_val
r2 = n2 Mod mdc_val
While (r1 <> 0) Or (r2 <> 0)
mdc_val = mdc_val - 1
r1 = n1 Mod mdc_val
r2 = n2 Mod mdc_val
Wend
' coloca resultado na celula b3
Selection.Offset(2, 1).Value = mdc_val
End Sub


Para programas muito simples uma boa linguagem pois nas suas implementaes
mais simples dispensa a declarao de variveis.
Utilizam-se essencialmente o Microsoft Visual Basic.

Nota: Em MS-Visual Basic, as linhas do programa que comeam pelo smbolo so
comentrios do programador e so ignoradas pelo computador.
Universidade Fernando Pessoa 15


Prova e Teste de Algoritmos
Seguimento e Teste de Algoritmos ou Programas
Forma muito simples de o efectuar: Seguir a execuo do programa passo a passo e
verificar a evoluo de todas as variveis.

Exemplo 1: Seguimento do Algoritmo MDC (exemplo 1 expresso em pseudo-cdigo)
para m=8 e n=20

Variveis Testes
Passo
m n min mdc r1 r2 r1=0 e r2=0 m < n
Entradas/
Sadas
1 8 20 Leia(8,20)
2 8 V
3 8
4 0
5 4
6 F
8 7
4 1
5 6
6 F
8 6
4 2
5 2
6 F
8 5
4 3
5 0
6 F
8 4
4 0
5 0
6 V
7 Escreva(4)

O seguimento (rastreio) de algoritmos pode detectar a presena de erros mas no
pode comprovar a sua ausncia (exceptuando em casos triviais).
Universidade Fernando Pessoa 16

Programao "top-down" e "bottom-up"
O desenvolvimento de grandes programas informticos exige que em determinada
altura haja um processo de decomposio de problemas ou tarefas complexas e muito
abrangentes em tarefas mais pequenas e especificas, isto , mais fceis de lidar.
Esta tcnica pode-se aplicar vrias vezes de modo a se obter uma espcie de
hierarquia ou rvore de tarefas em que na raiz reside o problema ou tarefa inicial e nas
folhas as tarefas mais simples e implementveis em sub-rotinas.

Tarefas mais
complexas e
genricas
Tarefas mais
simples e
especficas
.....
Problema
Inicial
.....
.
.
.
.
.


Esta metodologia de decomposio de um problema em partes mais pequenas
claramente definidas e com mecanismos de interaco claros e bem limitados designa-
se por programao top-down. A construo ou desenvolvimento do programa feita
implementando cada uma dessas partes.
Top-Down:
Tarefas genricas/complexas Tarefas especficas/simples
A programao bottom-up usa a lgica contrria, isto , identifica num programa
complexo, tarefas bem definidas e que foram reconhecidas como necessrias ao seu
desenvolvimento. Depois da implementao dessas partes o programador ir reuni-las
de modo a obter a soluo para o problema mais complexo.
Bottom-Up:
Tarefas especficas/simples Tarefas genricas/complexas
De um modo geral o desenvolvimento de um programa poder adoptar uma
abordagem mista top-down e bottom-up.
Universidade Fernando Pessoa 17

Resoluo de Problemas
Resoluo de Problemas Simples
Confrontado com um problema, a sua soluo computacional pode ser determinada
seguindo os seguintes passos:
Percepo do Problema (til explicitar as sadas desejadas para diversas entradas)
Formulao de um algoritmo geral para a resoluo (dando pouca ateno a
detalhes) e seu seguimento utilizando algumas das entradas anteriormente
definidas de forma a confirmar que obtm os resultados esperados).
Identificao e listagem de todas as variveis necessrias (e dos seus tipos e
descries).
Preenchimento dos detalhes nos passos do algoritmo geral definido (subdividindo
passos e garantindo que efectuam a mesma funo que os passos antes da
subdiviso).
Seguimento do algoritmo utilizando algumas das entradas definidas anteriormente.
Implementao do algoritmo numa linguagem de programao especfica (Pascal,
C, Basic, etc).
Resoluo de Problemas Mais Complexos
A resoluo de problemas mais complexos, nomeadamente a implementao de
sistemas informticos de mdia ou grande dimenso exige os seguintes passos:
Anlise do Problema (perceber bem o problema)
Especificao do Programa (definir estruturas de dados e algoritmos adequados)
Codificao do Programa
Teste e Refinamento do Programa
Gerao de Documentao
Manuteno do Programa
Caractersticas de um bom Programa
Um bom programa deve ter as seguintes caractersticas:
Satisfaz as especificaes do problema
No contm erros e robusto
legvel e inteligvel
porttil e de fcil manuteno
Universidade Fernando Pessoa 18

INTRODUO PROGRAMAO
Estrutura Bsica de um Sistema de Computao Digital
Sistema
Conjunto organizado de elementos que conjuntamente realizam determinados
objectivos.
Sistema de Computao Digital
Sistema constitudo por peas de equipamento electrnico destinado a processar
informao sob a forma digital.
Informao fornecida ao sistema atravs de terminais (ou perifricos) de entrada
de dados (teclados, ratos, scanners, modems, accionadores de discos magnticos
ou de fita magntica, conversores A/D, etc).
Informao processada atravs da Unidade de Processamento Central (CPU) do
sistema, estando localizada a informao a processar e as instrues de
processamento, na Memria do computador.
Depois de processada a informao, os resultados so transmitidos para o exterior
atravs de terminais (ou perifricos) de sada de dados (monitores de vdeo,
modems, impressoras, plotters, accionadores de discos magnticos ou de fita
magntica, conversores D/A, etc).
CPU
Term3 Term2 Term1
Barramento de I/O
Terminais
Computador
Interfaces com

Memria: Armazena informao e instrues de processamento a executar pelo
CPU.
CPU: Executa e coordena o processamento da informao.
Barramento (Bus): Via de comunicao de informao.
Perifrico: Realiza operaes de entrada/sada de informao.
Interfaces: Gerem as transferncias CPU/Terminais, compatibilizando as
diferentes velocidades de processamento. Dispe de buffers de memria para
armazenamento temporrio.

Universidade Fernando Pessoa 19

Comunicao dos Perifricos com o CPU
Os perifricos comunicam com o CPU e processam a informao a baixa
velocidade.
Exemplo: Comunicao CPU-Impressora. A informao enviada a grande
velocidade para a impressora e escrita no papel a muito reduzida velocidade
Impressora CPU
Barramento de Dados
Barramento de Controle
Interfaces com

Sequncia de aces de processamento para realizar a comunicao entre a
impressora e o CPU:
CPU: Impressora livre?
Impressora: Sim.
CPU: Envia Dado Impressora.
Impressora: Comunica que recebeu o dado
CPU: Envia novo dado at que:
Impressora: Impressora cheia
CPU Envio concludo
Enquanto a Impressora despeja lentamente o Buffer, imprimindo os dados nele
contidos, o CPU realiza a alta velocidade, outras operaes. Mais tarde, quando o
buffer tiver espao disponvel, o ciclo anterior retomado.
Universidade Fernando Pessoa 20


Execuo de um Programa num Sistema de Computao Digital
Programa: Conjunto organizado de instrues e dados, que implementa um
determinado algoritmo.
Instruo: Dado interpretado como uma aco de processamento de informao

Exemplo: Soma de um nmero lido do teclado com um contido na memria.
Aces de processamento executadas ou coordenadas pelo CPU:
1. Leitura do nmero A do teclado e seu armazenamento num registo R1.
2. Transmisso do nmero B da memria para o registo R2.
3. Soma de R1 com R2 (executada na ALU), obtendo o nmero C
4. Transmisso do resultado C para a memria.

Universidade Fernando Pessoa 21

Processamento Digital
Processamento de dados representados por sequncias de bits. Os dados so
mltiplos ou submltiplos da palavra (Word), unidade fundamental de processamento
de um sistema. O comprimento da palavra igual ao seu nmero de bits (nmero de
fios do barramento de dados). Normalmente so mltiplos de um conjunto de 8 bits
(byte):
Memria Armazena palavras
CPU Processa palavras
Barramentos Transferem palavras
Os comprimentos mais usuais de palavras so os 8, 16, 32 e 64 bits. Exemplo de uma
palavra de 8 bits: 0101 1001.

Tipos De Informao
Os sistemas de computao digital utilizam vulgarmente trs tipos de informao:
Informao Simblica
Informao Numrica
Informao Contextual

Informao Simblica
Smbolos Letras (a a z, A a Z)
Dgitos Decimais (0 a 9)
Sinais de Operao + - * /
Sinais de Pontuao , . ; : ? !
Smbolos Especiais # & % $ |
Os smbolos so codificados em binrio com um cdigo de comprimento n. Os
cdigos usuais tm 8 bits (n=8, 256 smbolos representveis), por exemplo o ASCII ou
EBCDIC.

Informao Numrica
Os dados representam quantidades numricas no sistema de numerao binrio (ou
num outro sistema codificado em binrio).
0101 1011 = 0*2
7
+ 1*2
6
+ 0*2
5
+ 1*2
4
+ 1*2
3
+ 0*2
2
+ 1*2
1
+ 1*2
0
= 64+16+8+2+1 = 91

Informao Contextual
Contedo informativo (significado) de um dado, depende do contexto. Por exemplo, o
dado 0100 0001, pode representar:
65 Numa operao utilizando binrio
41 Numa operao utilizando BCD (Binary Coded Decimal)
A Smbolo (letra) ASCII
MOV A,B Instruo do microprocessador INTEL 8080
O contexto pode depender do uso no problema particular, da posio numa sequncia
de dados ou da posio fsica no sistema de computao.
Universidade Fernando Pessoa 22

Unidade De Processamento Central

Funes:
Armazenamento temporrio de informao
Processamento de informao
Controlo do fluxo de informao

Componentes Principais
1 - Registos: Conferem um significado especial a sequncias de bits armazenadas
temporariamente:
Registo de Instruo IR : Determina (atravs da control unit) o fluxo de
informao no CPU
Contador de Programa PC : Aponta para a instruo (na memria) a
executar
Registos de Dados Ri : Registos com valores, podendo ter um nmero
varivel. Por vezes um destes registos designado de Acumulador A,
sendo nele colocados os resultados das operaes aritmticas.
2 - Unidade Lgica e Aritmtica ALU : Efectua operaes com os valores dos
registos (somas, subtraces, operaes lgicas, etc).
ALU OP
A OP B
A B

3 - Unidade de Controle CU : Gere o fluxo de informao no CPU
Normalmente todos os registos tm o comprimento de uma palavra.
Uma palavra lida da memria, pode ser transferida para IR ou para os registos de
dados Ri
A ALU tem duas entradas de operandos. Em geral uma das entradas est tambm
ligada ao barramento de dados.
Os registos do CPU podem ser lidos ou escritos na memria.
Em geral, os dados e resultados das operaes da ALU podem tambm ser lidos e
escritos na memria directamente.
O registo PC fornece a indicao da instruo a executar pelo CPU. IR selecciona
na unidade de controle (CU), a sequncia de aces que permite a execuo da
instruo.
Os perifricos normalmente comunicam com o CPU atravs do barramento de
dados.
A unidade de controle envia todos os sinais (ordens) que permitem os acessos s
vias de comunicao e determinam as operaes a realizar.
Universidade Fernando Pessoa 23

Conceitos de Programa e Software
Programa:
Conjunto organizado de instrues e dados que determinam a realizao de dado
objectivo num sistema de computao digital.
Software
Conjunto de todos os programas de um sistema de computao.
Tipos de Programas:
Sistema: Necessrios operao eficiente e agradvel do sistema de
computao (ou seja, os sistemas operativos).
Aplicao: Destinados a realizar tarefas especficas necessrias ao utilizador
(processadores de texto, folhas de clculo, jogos, etc).

Linguagens Mquina, Assembly e de Alto Nvel
Linguagem Mquina
O programa (instrues e dados) reside na memria a partir de determinada
posio de memria (origem do programa).
O programa utiliza os cdigos binrios correspondentes a instrues e o formato de
dados reconhecidos pelo CPU (diz-se que est escrito em linguagem mquina).

Exemplo 1: Programa simples para ler o contedo da porta 11, adicionar-lhe o valor
21 e coloc-lo novamente na porta 11 (instrues mquina para o microprocessador
Z80).

1101 1011 Leia para o registo A o contedo da porta
0000 1011 nmero 11 (00001011
2
)
1100 0110 adicione ao contedo do registo A o valor
0001 0101 21 decimal (00010101
2
)
1101 0011 coloque o contedo do registo A na porta
0000 1011 nmero 11 (00001011
2
)
0111 0110 Termine a execuo do programa (Halt)

mais habitual a escrita dos cdigos das instrues em sistema de numerao
hexadecimal (mais compacto e confortvel). Para o exemplo anterior ficaria:
DB 0B
C6 15
D3 0B
76

Universidade Fernando Pessoa 24

Linguagens de Programao

Cdigo Fonte:
Quanto se implementa ou escreve um programa informtico geralmente est-se a
adoptar uma (ou vrias) linguagem de programao. O processo de escrita do
programa nessa linguagem de programao d origem ao cdigo fonte ou
simplesmente fonte do programa. O cdigo fonte consiste em todos os ficheiros que
contm as diversas partes do programa escritas numa determinada linguagem
previamente seleccionada.
Visto que vulgarmente um programa composto por vrios ficheiros fonte, normal ao
conjunto de todos os ficheiros design-los por projecto.

Ambiente Integrado de Desenvolvimento (IDE):
O processo de escrita do programa tipicamente faz-se recorrendo a um ambiente
grfico de desenvolvimento (como por exemplo o ambiente grfico oferecido pelo
Delphi para Pascal, ou pelo MS Visual Studio para C++ ou para Visual Basic) que
acelera esse processo de desenvolvimento.
Geralmente esse ambiente IDE inclui ferramentas/procedimentos de teste e depurao
do programa a desenvolver.
Depois do cdigo fonte escrito a preparao e execuo do programa vai depender do
tipo de linguagem adoptada, isto , se compilada ou interpretada.
Universidade Fernando Pessoa 25


Linguagens compiladas
O cdigo fonte de uma linguagem compilada constitudo por texto que no
directamente executvel pelo computador.
Um programa pode estar distribudo por diversos ficheiros fonte.
A criao de um Programa Executvel a partir de cdigo fonte compilvel geralmente
faz-se a duas fases: 1 compilao (efectuada pelo programa compilador) e 2 ligao
(efectuada pelo programa ligador).


Cdigo Executvel
Bibliotecas de
funes
reutilizveis
Ficheiro
de cdigo
fonte
Cdigo
Objecto
Ficheiro
de cdigo
fonte
Cdigo
Objecto
Ficheiro
de cdigo
fonte
Cdigo
Objecto
Compilao
Ligao


O ficheiro de cdigo executvel pode ser executado ou corrido independentemente
sem necessitar de nenhum programa externo. O ficheiro executvel apenas pode ser
executado na arquitectura computacional para a qual o compilador foi preparado.
Universidade Fernando Pessoa 26


Linguagens interpretadas
Numa linguagem interpretada o cdigo fonte executado directamente. No entanto
precisa de um programa externo que vai transformar cada instruo da linguagem de
alto nvel em instrues que sejam entendidas pelo CPU. Esse programa designado
por interpretador.



Ficheiro
de cdigo
fonte
Programa Interpretador
Ficheiro
de cdigo
fonte
Ficheiro
de cdigo
fonte
Interpretao
(efectuada
durante a
execuo do
programa)


Universidade Fernando Pessoa 27