Apresentação TIC - Unidade 1 Introdução aos Computadores
Introdução a Algoritmos e Estruturas de Dados
1. 3/31/11
Aula
1:
Introdução
Algoritmos
e
Estruturas
de
Dados
I
• Modelo
de
computador
simplificado
(AEDS
I)
• Instruções
• Dados
Prof.
Olga
N.
Goussevskaia
• Memória
olga@dcc.ufmg.br
• Linguagens
de
programação
Obs: Alguns slides por Profa Mirella M. Moro
Por
que
computação?
Por
que
computação?
Por
que
computação?
Por
que
computação?
1
2. 3/31/11
Por
que
computação?
Computador
• Máquina
que
processa
dados
em
menos
tempo
e
com
mais
segurança
– “Processamento
eletrônico
de
dados.”
• Funções
básicas
do
computador:
– Entrada
de
dados
– Processamento
de
dados
– Saída
de
informações
– Armazenamento
de
informações
• Informá(ca
(Informação
Automá(ca)
– Ciência
que
abrange
todas
as
aWvidades
relacionadas
com
o
processamento
automáWco
de
informações
8
Terminologia
Terminologia
• Dado
• Programa
– Informação
que
será
trabalhada
durante
o
processamento
– roteiro
que
orienta
o
computador,
mostrando-‐lhe
a
seqüência
de
• Exemplos
operações
necessárias
para
executar
uma
determinada
tarefa
– 10
(idade),
12
x
8
(pressão
arterial),
1.99
(altura
em
metros)
– seqüência
de
instruções
que
dirigem
a
CPU
(Central
Processing
Unit)
na
• Instrução
execução
de
alguma
tarefa
– Operação
elementar
que
o
computador
tem
a
capacidade
– composto
por
uma
série
de
comandos
ou
instruções
de
processar
• Hardware
– Conjunto
básico,
comum
à
maioria
das
linguagens:
– conjunto
de
componentes
mecânicos,
elétricos
e
eletrônicos
com
os
• Entrada
e
saída
(E/S)
de
dados
quais
são
construídos
os
computadores
e
equipamentos
periféricos
• Movimentação
de
dados
(transferência)
• Soiware
• AritméWca:
adição,
mulWplicação,
etc.
– conjunto
de
programas
e
procedimentos
que
permitem
usufruir
da
• Testes:
verificação
de
certas
condições
(comparação)
capacidade
de
processamento
fornecida
pelo
hardware
• RepeWção
de
ações,
em
geral,
com
algumas
variações
9
10
Organização
funcional
Organização
funcional
• Sistema
Central
– Unidade
Central
de
Processamento
(UCP/CPU/
microprocessador)
• Unidade
de
Controle
• Unidade
AritméWca
e
Lógica
– Clock
– Memória
Principal
– Interfaces
• Unidades
de
Entrada
e
Saída
(E/S)
11
12
2
3. 3/31/11
Sistema
central
Sistema
central
• CPU/microprocessador
– Unidade
de
Controle
• Memória
principal
• Controla
o
fluxo
de
informações
entre
todas
as
unidades
do
computador
e
executa
as
instruções
na
seqüência
correta
– Armazena
temporariamente
as
informações
– Unidade
Aritmé(ca
e
Lógica
(UAL)
(instruções
e
dados)
• Realiza
operações
aritmé(cas
(cálculos)
e
lógicas
(decisões),
comandada
por
instruções
armazenadas
na
memória
– Dados
ficam
disponíveis
ao
processamento
(pela
– Fica
em
uma
placa
de
circuitos
chamada
placa-‐mãe
(“motherboard”)
ULA)
e
para
transferência
para
os
equipamentos
de
saída
• Clock
(relógio)
– Os
microprocessadores
trabalham
regidos
por
um
padrão
de
tempo
– Organizada
em
porções
de
armazenamento,
cada
• determinado
por
um
clock
– Gera
pulsos
a
intervalos
regulares
qual
com
um
endereço
– A
cada
pulso
uma
ou
mais
instruções
internas
são
realizadas
– Dois
Wpos
de
circuito:
ROM
e
RAM
13
14
Sistema
central
Sistema
central
Memória
principal
Memória
principal
• ROM
(Read
Only
Memory)
– Tipicamente
menor
que
a
RAM
• RAM
(Random
Access
Memory)
– Não
depende
de
energia
para
manter
o
seu
conteúdo
– Memória
temporária
– Memória
permanente
– UWlizada
pelo
usuário
para
desenvolver
seus
programas
– Informações
não
podem
ser
apagadas
(casos
especiais)
– Uso
restringe-‐se
ao
período
em
que
o
equipamento
está
– Geralmente
vem
gravada
do
fabricante
– Apenas
de
leitura
em
funcionamento
– Programas
em
memória
ROM
– Memória
é
voláWl
(seu
conteúdo
pode
ser
apagado)
• RoWna
de
inicialização
do
computador,
reconhecimento
do
hardware,
idenWficação
• Armazenar
programas
e
dados
do
sistema
operacional,
contagem
de
memória
• Guardar
resultados
intermediários
do
processamento
• Orientar
o
computador
nas
primeiras
operações
– Podem
ser
lidas
ou
gravadas
informações
15
16
Sistema
central
Sistemas
de
E/S
(I/O)
Barramentos
Periféricos
(ou
Unidades
de
Entrada
e
Saída,
(Input/Output))
• Transportam
sinais
de
dados,
endereço
e
controle
• DisposiWvos
conectados
a
um
computador
que
possibilitam
a
comunicação
do
computador
com
o
mundo
externo
• Unidades
de
entrada
– Permitem
que
informações
sejam
introduzidas
na
memória
do
computador
– Exemplo:
mouse
– Forma
armazenável
internamente
(bits)
• Unidades
de
saída
– Transformam
a
codificação
interna
dos
dados
em
uma
forma
legível
pelo
usuário
– Exemplo:
Impressora
17
18
3
4. 3/31/11
Instruções
Instruções
• Programa
• Uma
instrução
é
consWtuída
basicamente
de:
– código
de
operação
– seqüência
de
instruções
– endereço
dos
operandos
• Computador
analisa
e
executa
uma
a
uma
0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1
• Execução
ocorre
na
ULA,
sob
coordenação
da
Cód. de operação End. do 1º operando End. do 2º operando
UC
– Da
seção
de
controle,
seguem
para
a
memória
os
endereços
dos
• Na
execução:
operandos
– Operandos
são
localizados
e
transferidos
para
a
ULA
– instruções
e
dados
estão
na
memória
– A
úlWma
etapa
consiste
em
transferir
o
conteúdo
do
registrador
que
– são
trazidos
da
memória
para
a
CPU
contém
o
resultado
para
a
memória
– UC
analisa
a
instrução
19
20
Instruções
Representação
dos
dados
• Bit
Categorias
de
Instruções
– BInary
digiT
• Instruções
de
E/S
– Componente
básico
da
memória
– É
a
menor
unidade
de
informação
– leituras
de
fita,
disco
magnéWco,
gravação
etc
– Pode
assumir
dois
valores
ou
senWdos
• Instruções
de
transferência
• 1
=
ligado
• 0
=
desligado
– da
memória
pra
CPU,
de
um
registrador
para
outro
• Byte
• Instruções
AritméWcas
– Agrupamento
de
8
bits
– adição,
subtração,
mulWplicação,
divisão
– Normalmente
corresponde
a
um
caractere:
letra,
dígito
numérico,
caractere
de
pontuação,...
• Instruções
Lógicas
– Com
um
byte
é
possível
representar-‐se
até
256
símbolos
diferentes
– E
(AND),
OU
(OR),
NÃO
(NOT)
• Palavra
de
memória
– número
de
bits
que
o
computador
lê
ou
grava
em
uma
única
operação
(tanto
dados
como
instruções)
– tamanho
da
palavra
de
memória
pode
variar
de
computador
para
computador:
32
ou
64
bits
21
22
Representação
dos
dados
Representação
de
Dados
• Códigos
de
representação
de
dados
• Kilobyte
(Kb):
1024
(210)
bytes.
– Caractere
é
a
unidade
básica
de
armazenamento
na
maioria
dos
sistemas
– Armazenamento
de
caracteres
(letras,
números
e
outros
símbolos)
é
feito
através
de
um
– Capacidade
de
memória
dos
computadores
pessoais
esquema
de
codificação
• certos
conjuntos
de
bits
representam
certos
caracteres
mais
anWgos.
– Bastante
uWlizados:
ASCII,
EBCDIC,
UNICODE
• Megabyte
(Mb):
aproximadamente,
um
milhão
(220)
de
bytes.
• ASCII
(American
Standard
Code
for
Informa6on
Interchange)
– Código
uWlizado
pela
maioria
dos
microcomputadores
– Memória
de
computadores
pessoais.
– DisposiWvos
de
armazenamento
portáteis
(disquetes,
CD-‐
ROMs).
• Gigabyte
(Gb):
aproximadamente,
um
bilhão
(230)
de
bytes.
• Unidades
de
Medida
– DisposiWvos
de
armazenamento
(discos
rígidos).
– QuanWficar
a
memória
principal
do
equipamento
– Indicar
a
capacidade
de
armazenamento
(disco,
CD-‐ROM,
fita,
etc.)
– Memória
de
mainframes
e
servidores
de
rede.
• Terabyte
(Tb):
aproximadamente,
um
trilhão
(240)
de
bytes.
– DisposiWvos
de
armazenamento
para
sistemas
muito
grandes.
23
24
4
5. 3/31/11
Representação
de
Dados
Níveis
de
memória
• 1
página
txt
ASCII
:
2
Kbytes
• Diferentes
velocidades
de
acesso
• 1
página
Word
:
28
Kbytes
• 100
páginas
Word
:
300
Kbytes
• 1
disquete
:
1,44
Mbytes
• Dicionário
completo
:
24
Mbytes
• 1
CD
:
700
Mbytes
• 1
DVD
:
4
Gbytes
• 1
HD
:
80
Gbytes
25
26
Níveis
de
memória
Soiware
• Memória
Cache
• Soiware
básico
– Alyssima
velocidade
de
acesso
– Conjunto
de
soiwares
que
permite
ao
usuário
– Acelerar
o
processo
de
busca
de
informações
na
memória
criar,
depurar
e
modificar
as
aplicações
criadas
– Localizada
logicamente
entre
o
processador
e
a
memória
principal
– Pode
tanto
integrar
o
microprocessador
(cache
interna),
como
consisWr
de
chips
por
ele
adicionais
instalados
na
placa-‐mãe
do
micro
(cache
externa)
• Sistema
operacional,
linguagens
de
programação,
compiladores,
– Tamanho
Wpicamente
pequeno:
cache
interna:
até
512K;
cache
externa:
até
uWlitários
2Mb
• Memórias
Auxiliar
e
Auxiliar-‐Backup
• Soiware
aplicaWvo
– Discos,
CDs
e
fitas
– Aplicações
criadas
para
solucionar
problemas
específicos
• Exemplos:
web
browser,
mp3
player,
video
player,
contabilidade,
folha
de
pagamento,
correção
de
provas
27
28
Soiware
Básico
–
Sistema
Operacional
Soiware
Básico
–
Sistema
Operacional
SISTEMA
OPERACIONAL
• Conjunto
de
programas
supervisores
que
gerenciam
os
recursos
(hw
e
sw)
de
um
sistema
de
computação
• Funções:
– Gerência
de
memória
– Gerência
de
processador
– Gerência
de
arquivos
– Gerência
de
disposiWvos
de
E/S
(periféricos)
• Tarefas
específicas:
S.O.
– Ler
a
tecla
pressionada
no
teclado
– Transferir
um
arquivo
do
disquete
para
a
memória
principal,
etc
• Ex.:
MS-‐DOS,
Windows,
Linux,
MacOS,
Unix,
...
29
30
5
6. 3/31/11
Soiware
Básico
–
Ling.
de
Programação
Soiware
Básico
–
Ling.
de
Programação
LINGUAGENS
DE
PROGRAMAÇÃO
VISÃO
GLOBAL
1a
geração
-‐
Linguagens
de
máquina
• Conjunto
de
convenções
e
regras
que
– 0010
0001
0110
1100
especificam
como
instruir
o
computador
a
2a
geração
-‐
Linguagens
de
montagem
(assembly)
– ADD
R1,
TOTAL
BAIXO NÍVEL
executar
determinadas
tarefas
3a
geração
-‐
Linguagens
orientadas
ao
usuário
ALTO NÍVEL
• Serve
como
meio
de
comunicação
entre
o
– LET
SOMA
=
VAR1
+
TOTAL
– IF
SOMA
>
3
THEN
EXIT
indivíduo
que
deseja
resolver
um
determinado
4a
geração
-‐
Linguagens
orientadas
à
aplicação
problema
e
o
computador
– LIST
ALL
NOME,
ENDERECO,
TELEFONE
– FOR
CIDADE
=
“PORTO
ALEGRE”
5a
geração
-‐
Linguagens
de
conhecimento
(IA)
31
32
1a
geração
-‐
Linguagens
de
Máquina
2a
geração
-‐
Linguagens
de
Montagem
• Linguagem
de
máquina
escrita
em
notação
binária
• Linguagem
de
baixo
nível
– Exemplo:
• Minimizar
as
dificuldades
da
programação
em
notação
binária
0010
0001
0110
1100
– Assemblers
(montadores)
• Usam
códigos
mnemônicos
com
letras
e
números
para
Endereço da posição de memória
representar
os
comandos,
por
exemplo:
que contém o dado
– LOAD
B:
carrega
no
registrador
o
dado
que
está
no
endereço
B
Endereço do registrador – ADD
A:
adiciona
ao
registrador
o
dado
que
está
no
endereço
A
– ADD
R1,
TOTAL:
R1
representa
o
registrador
1
e
TOTAL
é
o
nome
Código da operação: Adição atribuído
ao
endereço
de
memória
108
– soma
do
dados
armazenado
no
registrador
0001
com
o
dado
• Processamento
requer
tradução
para
linguagem
de
máquina
armazenado
na
posição
de
memória
0110
1100
• Programa
=
seqüência
de
zeros
e
uns
– Programação
trabalhosa,
cansaWva
e
fortemente
sujeita
a
erros
33
34
3a
geração
–
Lings.
Orientadas
ao
Usuário
4a
geração
–
Lings.
Orientadas
à
Aplicação
• Linguagem
genérica
de
alto
nível
• Usam
comandos
com
nomes
geralmente
• Linguagem
orientada
à
aplicação
auto-‐explanaWvos
• Gera
código
a
parWr
de
expressões
de
alto
nível
– Exemplo:
read,
write,
if,
open…
Exemplo em Pascal • Facilita
o
uso
da
linguagem
program Exemplo;
• Principais
linguagens
var a,b: integer; • Exemplo:
DBASE,
SQL
– Fortran
(1954)
begin
– Cobol
(1959)
write ('Digite um número para A'); Exemplo em DBASE
– Basic
(1965)
readln (a); List All Nome, Endereco, Telefone
write ('Digite o número para B');
– Pascal
(1975)
readln (b);
For Cidade = “Porto Alegre”
– C
(1980)
if (a > b) then
writeln ('A é maior que B') Lê todos os registros que compõem um
else arquivo e, para cada lido, seleciona
writeln ('B é maior que A'); aqueles cuja cidade = “Porto Alegre”.
end.
35
36
6
7. 3/31/11
5a
geração
–
Linguagens
de
Conhecimento
Linguagens
de
programação
• Mecanismos
da
área
de
Inteligência
ArWficial
C:
uma
linguagem
de
programação
de
alto
– São
criadas
bases
de
conhecimentos,
obWdas
a
parWr
de
especialistas,
nível
e
as
linguagens
fazem
deduções,
inferências
e
Wram
conclusões
baseadas
nas
bases
de
conhecimento.
Outros
exemplos:
Java,
Pascal,
C++
• Exemplos:
Prolog,
Lisp,
Art
Vantagens:
simplifica
muuito
o
trabalho
do
programador;
código
mais
curto,
mais
simples
de
ler;
independente
de
plataforma
(HW,
SO)
PS: no site
http://www2.latech.edu/~acm/HelloWorld.shtml
você pode encontrar o programa ‘Hello World’
implementado em dezenas de linguagens Linguagens
de
baixo
nível:
Linguagem
de
máquina,
de
montagem
(assemply)
37
Linguagens
de
programação
Tradutores
de
linguagens
de
programação
A
grande
maioria
de
programas
são
escritos
em
linguagens
de
alto
nível
Mas
computadores
só
podem
executar
programas
escritos
em
linguagem
de
baixo
nível!
Programas
escritos
em
linguagem
de
alto
nível
UCP
deve
ser
traduzido
por
um:
Interpretador
ou
Compilador
40
Tradutores
de
linguagens
de
Tradutores
de
linguagens
de
programação
programação
• Compilador
• Tradutor
– Traduz
um
programa
escrito
em
linguagem
de
alto
nível
– Produz
um
programa
em
linguagem
objeto
(linguagem
executável,
ou
seja,
– Recebe
como
entrada
um
programa
escrito
em
uma
linguagem
de
linguagem
de
máquina)
programação
(dita
linguagem
fonte)
• Pode
ser
executado
uma
ou
mais
vezes
no
futuro
– Produz
como
resultado
as
instruções
deste
programa
traduzidas
para
• Enquanto
o
código
fonte
do
programa
não
for
alterado,
ele
poderá
ser
linguagem
de
máquina
(i.e.
linguagem
objeto)
executado
sucessivas
vezes,
sem
necessidade
de
nova
compilação
• Se
a
linguagem
do
programa
fonte
é
uma
linguagem
de
• Interpretador
– Traduz
um
programa
escrito
em
linguagem
fonte,
instrução
a
instrução,
montagem
(Assembly)
enquanto
ele
vai
sendo
executado
– Tradutor
é
chamado
de
Montador
(Assembler)
– Cada
vez
que
um
programa
interpretado
Wver
que
ser
re-‐executado,
todo
o
processo
de
interpretação
deverá
ser
refeito,
independentemente
de
ter
• Tradutores
que
traduzem
os
programas
escritos
em
linguagem
havido
ou
não
modificações
no
código
fonte
do
programa
desde
sua
úlWma
de
alto
nível
execução
– Compiladores
e
os
interpretadores
• Programas
compilados
tendem
a
ser
executados
mais
rapidamente
que
seus
correspondentes
interpretados
41
42
7
8. 3/31/11
Tradutores
de
linguagens
de
Linguagens
de
programação
programação
Exemplos
de
linguagens
interpretadas:
MATLAB,
Javascript,
Python,
Perl,
PHP
(scripts)
Exemplos
de
linguagens
compiladas:
Pascal,
C,
C++,
C#,
Java
(JVM
bytecode)
43
Próxima
aula:
Lógica
de
Programação
8