Você está na página 1de 48

COMPUTAÇÃO I

Prof. Fernando L. B. Ribeiro


TECNOLOGIA QUE PRECEDEU OS COMPUTADORES
DIGITAIS

„ ÁBACO CHINÊS - O Ábaco Chinês, criado no século XIV e ainda


hoje utilizado, é um dispositivo manual para ADIÇÃO,
SUBTRAÇÃO, MULTIPLICAÇÃO e DIVISÃO.

http://qi-journal.com/culturearticles/abacusindex.html
„ Máquina de Diferenças - A Máquina de Diferenças foi inventada
pelo matemático britânico Charles Babbage (1823) . Trata-se de
um dispositivo operado a manivela para calcular logaritmos e
funções trigonométricas.
„ Calculadoras Mecânicas - As Calculadoras Mecânicas foram
criadas no final do século XIX, tornando-se obsoletas nos anos 70.
PRIMEIRO COMPUTADOR ELETRÔNICO DIGITAL

„ Batizado de ENIAC (electronic numerical integrator and


computer), o primeiro computador foi construído nos Estados
Unidos em 1945 (University of Pennsylvania) para cálculos
balísticos na segunda guerra mundial.
„ O ENIAC possuía 19.000 válvulas e pesava 19 toneladas. Os
principais componentes do ENIAC eram:

• Acumulador (unidade aritmética)


• Tabela de funções
• Unidade programadora (para armazenar as instruções)
• Capacidade de armazenar 20 números de 10 dígitos
• 1 ciclo por cada 10-5 s = 100 KHz = 0.0001 GHz
• Leitora de cartões
• Gravador de cartões
CRONOLOGIA
„ 1945 – ENIAC.

„ 1947/48 – Invenção do transistor.

„ 1951 - UNIVAC, primeiro computador comercial.

„ 1953 - IBM 701 EDPM, primeiro computador IBM.

„ 1954 – FORTRAN (Formula Translator), primeira linguagem de


programação de alto nível.

„ 1955 – ERMA, primeiro computador desenvolvido para sistemas


bancários (Bank of America).
„ 1958 – Invenção do “circuito integrado” (CHIP).

„ 1962 – SPACEWAR, primeiro “game” para computadores.

„ 1964 – Primeira interface gráfica com “janelas”, primeiro mouse.

„ 1969 – ARPANET, a internet original, desenvolvida para fins


militares.

„ 1970 – Primeiro chip de memória RAM (Intel).


„ 1971 – Intel 4004, primeiro microprocessador.

„ 1976/77 – Apple I, II e TRS-80, primeiros computadores


domésticos.
„ 1978 – VisiCalc, primeira planilha eletrônica (software).

„ 1979 – WORDSTAR, um dos primeiros editores de texto.

„ 1981 – Primeiro IBM-PC, começa a era dos PC’s.

„ 1981 – MS-DOS, sistema operacional da Microsoft.

„ 1984 – Apple Macintosh, com interface gráfica (GUI).

„ 1985 – Microsoft Windows.


AQUITETURA DE VON NEUMANN

„ Johann von Neumann (1907-1957), matemático húngaro,


estabeleceu em 1945 os princípios de operação de um
computador eletrônico digital. Estes princípios ficaram conhecidos
como arquitetura de Von Neumann e são ainda hoje as bases de
operação dos computadores mais modernos. A Arquitetura de Von
Neumann baseia-se em três componentes principais:

• Memória
• Unidade de Controle
• Unidade de Processamento

„ Na memória são armazenados dados e programas (conjunto de


instruções) que realizam determinados cálculos ou tarefas.

„ A Unidade de Controle é um circuito lógico responsável pelo


funcionamento da máquina, controlando o fluxo de instruções.
Este funcionamento realiza-se em ciclos.
„ A unidade de processamento realiza os cálculos de acordo com as
instruções. Esta unidade conte basicamente registradores e uma
Unidade Lógico-Aritmética (ALU), onde são executadas as
operações aritméticas. Os registradores são:

• Registrador IC (Instruction Counter) - contém o endereço na memória


com a próxima instrução a ser executada.

• Registrador IR (Instuction Register) - contém a próxima instrução a


ser executada.

• Registrador MAR (Memory Address Register) - contém o endereço da


posição da memória a ser lida ou escrita.

• Registrador MBR (Memory Buffer Register) - contém o dado a ser lido


ou escrito na memória.

• Registradores de propósito geral – usados para armazenar resultados


intermediários.
Arquitetura de Von Neumann
• Registrador IC (Instruction
Counter) - contém o endereço
Memória na memória com a próxima
instrução a ser executada.

Unidade de Controle
• Registrador IR (Instuction
Register) - contém a próxima
instrução a ser executada.

• Registrador MAR (Memory


Address Register) - contém o
IC MAR MBR endereço da posição da
memória a ser lida ou escrita.
IR
• Registrador MBR (Memory
Buffer Register) - contém o
Registrador A dado a ser lido ou escrito na
ALU memória.
Registrador B
• Registradores de propósito
Registrador C
geral – usados para
armazenar resultados
intermediários.
Arquitetura de Von Neumann Em cada ciclo do funcionamento da máquina, as
seguintes operações são executadas:
Memória
1. Transferência do conteúdo do IC para o
MAR.
Unidade de Controle
2. Busca da próxima instrução e sua
transferência para MBR.

3. Transferência do conteúdo do MBR para o IR


(instruction fetch).
IC MAR MBR
4. Decodificação da instrução pelo circuito
lógico da unidade de controle.
IR
5. Execução da operação:

Registrador A • Operação aritmética – neste caso, a ALU opera


ALU sobre números armazenados em dois ou mais
registradores específicos para o tipo de
Registrador B operação.

• Leitura ou gravação de um dado na memória –


Registrador C se a instrução for de leitura, o endereço do
operando, contido no IR, é transferido para o
MAR e o valor lido é transferido para o MBR e
daí para um registrador apropriado para a
A principal característica da arquitetura operação. Se a instrução for de gravação na
de Von Neumann é que o processamento memória (por exemplo, um resultado de uma
é feito de forma seqüencial (através do operação), o dado é transferido de um
incremento do IC), sendo que fluxo de registrador para o MBR, com seu endereço na
instruções pode ter desvios condicionais memória em MAR.
ou condicionais. Esta arquitetura persiste
até hoje, mesmo nos computadores mais
modernos. 6. Fim do ciclo e retorna para (1).
ARQUITETURA GENÉRICA DE UM COMPUTADOR

„ Os computadores modernos são ainda construídos com base na arquitetura de Von


Neumann. No entanto, os componentes eletrônicos são hoje bem menores, e o ciclo
da máquina é da ordem de mil vezes mais rápido do que os computadores dos anos
70. Gordon Moore, um dos fundadores da Intel, observou em 1965 que o número de
transistores de um circuito integrado (CHIP) dobrava a cada ano, desde que o
circuito integrado tinha sido inventado nos anos 50. Anos mais tarde, no início da
década de 80, observou-se também que a densidade de dados dobrava a cada 18
meses, o que ficou conhecido como Lei de Moore.

„ Os principais componentes de um computador são:

• Memória Principal – A memória principal é do tipo RAM (Random access Memory), construída
com materiais semicondutores onde os dados são armazenados de forma binária através de
circuitos lógicos bi-estáveis, que podem representar os estados LIGADO ou DESLIGADO
(ZERO ou UM).

• CPU – A CPU é o processador da máquina, e contém uma unidade de controle, uma unidade
aritmética, registradores, e memórias auxiliares para armazenar temporariamente os dados
lidos/escritos na memória RAM (memória cache).

• BIOS (Binary I/O System) – Memória do tipo ROM (Read Only Memory) ou PROM (memória
ROM alterável) onde são armazenados um comjunto de instruções que inicializam a máquina e
que permitem que o usuário instale um sistema operacional.

• Memória auxiliar - Hard Disk (HD), meio magnético de armazenamento de dados.

• Dispositivos de entrada e saída – Os principais dispositivivos de de entrada e saída são o


teclado, o mouse, e o monitor de vídeo.
CPU Bios

Unidade de

Memória RAM
Controle

Unidade Lógico
Aritmética

Interface Interface

Periférico Periférico
SISTEMAS DE REPRESENTAÇÃO DE NÚMEROS

Representa-se um número inteiro N, na base β, pela expressão

N = anβ n + an −1β n −1 + ...... + a1β1 + a0β 0

ou equivalentemente,
N = (an , an −1 , ... , a1 , a0 ) β
Os números reais são compostos por uma parte inteira e uma parte
fracionária:
R = RI + RF (0 < RF < 1)
RF = b1β −1 + b2β −2 + ...... + bk β − k

ai, bj – dígitos da base β


„ Sistema Decimal

No sistema decimal, β = 10 e ai e bj assumem os valores inteiros


correspondentes aos 10 dígitos:

ai , bj = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Exemplos:

(347)10 = 3 x 102 + 4 x 101 + 7 x 100

(0.25)10 = 2 x 10-1 + 5 x 10-2

(1.823)10 = 1 x 100 + 8 x 10-1 + 2 x 10-2 +3 x 10-3


„ Sistema Binário

No sistema binário, β = 2 e ai e bj assumem os valores 0 e 1.


O termo bit tem como origem a abreviatura de (b)inary dig(it).

Exemplos:

(11) 2 = 1× 21 + 1× 2 0 = (3)10

(111) 2 = 1 × 2 2 + 1 × 21 + 1 × 2 0 = (7)10

(101) 2 = 1× 2 2 + 0 × 21 + 1× 20 = (5)10

(10111) 2 = 1 × 2 4 + 0 × 2 3 + 1 × 2 2 + 1 × 21 + 1 × 2 0 = ( 23)10
(10) 2 = 1× 21 + 0 × 2 0 = (2)10

(100) 2 = 1 × 2 2 + 0 × 21 + 0 × 2 0 = ( 4)10

(1000) 2 = 1 × 2 3 + 0 × 2 2 + 0 × 21 + 0 × 2 0 = (8)10

(10000 ) 2 = 1 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 21 + 0 × 2 0 = (16)10

„ Observação: Assim como a multiplicação por 10 no sistema


decimal, a multiplicação por 2 no sistema binário corresponde à
“adição” de um zero à direita do número.

(0.1) 2 = 0 × 2 0 + 1 × 2 −1 = (0.5)10

(0.01) 2 = 0 × 2 0 + 0 × 2 −1 + 1 × 2 −2 = (0.25)10

(0.001) 2 = 0 × 2 0 + 0 × 2 −1 + 0 × 2 −2 + 1 × 2 −3 = (0.125)10

(1.11) 2 = 1 × 2 0 + 1 × 2 −1 + 1 × 2 −2 = (1.75)10

(11.1) 2 = 1 × 21 + 1 × 2 0 + 1 × 2 −1 = ( 2.5)10
„ Sistema Hexadecimal

No sistema hexadecimal, β = 16, ai e bj os valores inteiros


correspondentes aos 16 dígitos:

ai , bj = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)

Como no sistema hexadecimal são necessários 16 algarismos para


representar um número nessa base e a base decimal só possui dez,
torna-se necessário recorrer às letras A, B, C, D, E, F, o que não é
obrigatório, pode-se utilizar outros símbolos.

Exemplos:

(12C)16 = 1×16 2 + 2 ×161 + C ×160 = (300)10

(BF)16 = B ×161 + F ×160 = (191)10


„ Conversão de números inteiros, do sistema decimal para o
sistema binário

Como foi visto anteriormente, para converter um número do sistema


binário para o sistema decimal basta efetuar as operações de
multiplicação e adição da representação binária no sistema decimal. Para
converter um número do sistema decimal para o sistema o sistema binário
deve-se empregar o procedimento inverso. Por exemplo, o número 417 no
sistema decimal tem como representação binária:

( 417 )10 = 1× 2 n + an −1 × 2 n −1 + ...... + a1 × 21 + a0 × 2 0

Dividindo os dois lados da igualdade acima obtém-se:

417
= 1 × 2 n −1 + a n −1 × 2 n − 2 + ...... + a1 × 2 0 + a0 × 2 −1
2

417 a
= 208 + 0 ⇒ a0 = 1
2 2
Dividindo por 2 sucessivamente:

(208)10 = 1 × 2 n −1 + a n −1 × 2 n − 2 + ...... + a1 × 21

x x/2 resto

417 208 a0 = 1
208 104 a1 = 0
104 52 a2 = 0
52 26 a3 = 0
26 13 a4 = 0
13 6 a5 = 1
6 3 a6 = 0
3 1 a7 = 1
1 0 a8 = 1
0 0

( 417 )10 = (110100001 ) 2


O procedimento inverso seria:

a8 × 2 + a7 = 3

3× 2 + a6 = 6
6 × 2 + a 5 = 13

13 × 2 + a 4 = 26

26 × 2 + a 3 = 52
52 × 2 + a 2 = 104

104 × 2 + a 1 = 208

208 × 2 + a 0 = 417
„ Conversão de números fracionários, do sistema decimal para o
sistema binário

Seja o problema de converter o número fracionário .762 do sistema decimal para o


sistema binário:

(.762)10 = a1 × 2 −1 + a2 × 2 −2 + .......

Multiplicando por 2:

1.524 = a1 × 20 + a2 × 2 −1 + ....... ⇒ a1 = 1
Multiplicando sucessivamente por 2 a parte fracionária:

x 2x

0.762 1.524 a1 = 1
0.524 1.048 a2 = 1
0.048 0.096 a3 = 0
0.096 0.192 a4 = 0
0.192 0.384 a5 = 0
0.384 0.768 a6 = 0
0.768 1.536 a7 = 1
0.536

(0.762)10 = (0.110 000 1......) 2

Como pode-se observar neste exemplo, um número fracionário com


representação finita de dígitos no sistema decimal pode ter uma representação
infinita no sistema binário.
Exemplos:

(.5)10 = a 1 × 2 −1 + a 2 × 2 −2 + .......

x 2x

0.5 1.0 a1 = 1

0.0 0.0 a2 = 0

(.5) 10 = (0.1) 2
(.125)10 = a 1 × 2 −1 + a 2 × 2 −2 + .......

x 2x

0.125 0.25 a1 = 0

0.25 0.50 a2 = 0

0.5 1.0 a3 = 1

0.0 0.0 a4 = 0

(. 125 )10 = ( 0 .001) 2


(.1)10 = a1 × 2 −1 + a2 × 2 −2 + .......

x 2x

0.1 0.2 a1 = 0

0.2 0.4 a2 = 0

0.4 0.8 a3 = 0

0.8 1.6 a4 = 1

0.6 1.2 a5 = 1

0.2 0.4 a6 = 0

0.4 0.8 a7 = 0

0.8 1.6 a8 = 1

0.6 1.2 a9 = 1

0.2 0.4

(.1)10 = (0.000110011 ...) 2


ƒ Aritmética no sistema binário

ƒ Adição :

A adição em binário é efetuada exatamente como a adição em decimal. A


tabela completa para a adição em binário é a seguinte:

0+0=0
0+1=1
1+0=1
1 + 1 = 0 mais “vai um”

Exemplos :

Decimal Binário Decimal Binário

5 101 15 1111
+6 + 110 + 20 + 10100
11 1011 35 100011

Com o “vai Um” (1 + 1)


ƒ Subtração:

A subtração, por sua vez, é a operação inversa da adição:

0 - 0 = 0
1 - 0 = 1
1 - 1 = 0
0 - 1 = 1 com o empréstimo de um

Exemplos :

Decimal Binário Decimal Binário

9 1001 16 10000
- 5 - 101 - 3 - 11
4 100 13 1101
ƒ Multiplicação :

A tabela para multiplicação em binário é muito pequena, com apenas 4 regras:

0X0=0
1X0=0
0x1=0
1x1=1

Exemplos:

Decimal Binário

12 1100
×10 ×1010
0000
120
1100
0000
1100
1111000
ƒ Divisão :

A divisão em binário é muito simples. Como no sistema decimal (ou em qualquer


outro), a divisão por zero não tem significado.

0/1=0
1/1=1

Exemplos:

Decimal Binário

100
4 110 11000
6 24 110
00
„ Aritmética de Ponto Flutuante

Em aritmética de ponto flutuante, um número real é representado na


forma:

x = ± (.d 1d 2 ...... d t ) × β e

onde (.d1 d2 ... dt) é a mantissa de t dígitos na base β, e ∈ (m, M) é o


expoente da base. Em geral, m = -M.
Exemplos, com t = 3, β = 10, m = -4 e M = 4:

x Representação por truncamento Representação por arredondamento

1.25 .125x101 .125x101

10.053 .100x102 .101x102

-238.15 -.238x103 -.238x103

2.7128 .271x101 .271x101

0.000007 .700x10-5 (underflow) =

718235.82 .718x106 (overflow) =

0.0001 .100x10-3 .100x10-3


LÓGICA DE PROGRAMAÇÃO

„ Algoritmos

Um algoritmo é a descrição sistemática de um método de solução de um


problema qualquer.

„ Fluxograma

Fluxograma é a descrição simbólica de um algoritmo, indicando a


sequência (ou fluxo) com que as operações são executadas. Os três
principais componentes de um fluxograma são:

Indicador de fluxo sequencial:


Indicador de fluxo condicional:

Entrada

F V
condição

Passo A Passo B

Saída
Indicador de fluxo repetitivo:

Entrada

F V
condição

Procedimento

Saída
Exemplo:
Escrever um fluxograma que leia dois números a e b e faça a divisão
entre eles:

Ler a
Ler b

F V
Se b ≠ 0

Imprima r = a /b
“Divisão
Imprima r
por 0”

Fim
Pode-se representar um algoritmo através de uma pseudo linguagem
que deve obedecer a uma sintaxe coerente. O fluxo condicional em
uma pseudo linguagem pode ser escrito como:

Se ( condição) então faça

...

Se não então faça

...
Fim de se
A estrutura de repetição, por sua vez, pode ser representada através
de:

Enquanto ( condição) faça

...

Fim de Enquanto

Quando o número exato de repetições é conhecido, utiliza-se a


estrutura de repetição Para:

Para (contador de 1 até número de “loops”) faça

...

Fim de Para
O exemplo da divisão de dois números pode ser escrito em pseudo
linguagem tal como se segue:

Programa divisão;
a, b, r : reais;

Imprima “Entre com dois números” ;


Ler a, b ;
Se b <> 0 então faça
r = a/b ;
Se não então faça
Imprima “ Divisão por zero !” ;
Fim de Se
Fim
Exemplo 1:
Escrever um algoritmo que gere os primeiros 25 termos da sequência de
Fibonacci (1, 1, 2, 3, 5, 8, 13,...).

Programa Fibonacci;
Inteiro n, a, b, s;
a = 1;
b = 1;
n = 2;
Imprima a, b;
Enquanto (n <= 25) faça
s = a + b;
a = b;
b = s;
Imprima s;
n = n +1;
Fim de Enquanto
Fim.
O mesmo algoritmo pode ser escrito também utilizando a estrutura de repetição
Para:

Programa Fibonacci;
Inteiro n, a, b, s;
a = 1;
b = 1;
Imprima a, b;
Para (n = 3 até 25) faça
s = a + b;
a = b;
b = s;
Imprima s;
Fim de Para
Fim.
Exemplo 2:
Escrever um algoritmo que calcule o mmc de dois números, sabendo que :

a×b
m.m.c.(a, b) =
m.d .c(a, b)

E para o cálculo do m.d.c, utilizar o algoritmo de Euclides:

⎧ a se b = 0
m.d .c.(a, b) = ⎨
⎩mdc(b, a mod b) se b ≠ 0

Onde a função mod retorna o resto da divisão entre dois números inteiros, por
exemplo:
( 5 mod 3) = 2
Programa mmc;
Inteiro a, b, resto, mdc, mmc;
Imprima “Entre com dois números !”;
Ler a, b;
Enquanto (b <> 0) faça
resto = (a mod b);
a = b;
b = resto;
Fim de Enquanto
mdc = a;
mmc = ( a * b)/ (mdc) ;
Imprima “O MMC de”,a,”e “, b, “é :”, mmc;
Fim.
Exemplo 3:
Escrever um algoritmo que calcule o fatorial de um número. Lembrando que por
definição 0! = 1.

Programa Fatorial;
Inteiro n, fat;
Imprima “Informe um número :”;
Ler n;
fat = 1;
Enquanto (n > 1) faça
fat = fat * n ;
n=n–1;
Fim de Enquanto
Imprima “O fatorial de “,n, “é :”, fat;
Fim
Exemplo 4:
Dado um número inteiro n, diferente de zero, calcular a soma dos números pares
e a soma dos números ímpares ≤ n.

Programa contador;
Inteiro n, i, somap, somai;
n = 0;
Enquanto (n = 0) então faça
Imprima “Entre com um número, diferente de zero !” ;
Ler n;
Fim de Enquanto
Somap = 0 ;
Somai = 0;
Para i = 1 até n faça
Se ( i mod 2) = 0 então faça
somap = somap + i;
se não então faça
somai = somai + i;
Fim de se
Fim de para
Imprima “ A soma dos números pares é :” , somap;
Imprima “A soma dos números ímpares é :”, somai;
Fim.