Introdução aos Computadores e Programação
Pedro Barahona
DI/FCT/UNL
Fevereiro 2006
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
1
Apresentação da Disciplina
• Objectivos / Programa
– Introdução aos Sistemas de Computadores
– Introdução à Algoritmia
– Familiarização com uma linguagem imperativa
(Octave/MATLAB)
– Aplicação a problemas de engenharia
– Introdução à programação reactiva (folha de cálculo)
• Responsável:
– Pedro Barahona ( [email protected] / ssdi.di.fct.unl.pt/~pb)
• Assistentes:
– Nuno Marques (P5), Joquim Ferreira da Silva (P6), Marco Correia (P3,
P10), Alexandre Pinto (P4, P8), Jorge Custódio (P1, P2)
– P7 e P9 não abriram ainda (?)
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
2
Avaliação
• Componente Prática (em grupos de 2):
 Mini-teste de Octave (Data a Fixar)
 1º Trabalho de Octave (Data a Fixar)
 2º Trabalho de Octave (Data a Fixar)
 Mini-teste de Excel (Data a Fixar)
• Frequência
 Nota Prática >= 9.5
 Presenças > 66% das Aulas Práticas (24+ previstas)
• Exame:
 Individual, nas datas oficiais da FCT
• Nota Final:
 25 % Nota Prática + 75% Nota Exame
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
3
Representação da Informação
• Os computadores são máquinas que permitem manipulação de
símbolos (números, texto, imagem, som, ...).
• No entanto, todos estes símbolos podem ser obtidos a partir de
símbolos binários 0/1 ou bits (binary digit), mais fáceis de
armazenar e manipular electronicamente (on-off).
• Assim toda a informação pode ser considerada como um
conjunto ordenado (sequência) de bits cujo valor simbólico
depende do contexto.
• O contexto (por exemplo, o tipo do ficheiro) deverá determinar
– Qual o tipo de informação representada
– Qual o código utilizado
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
4
Representação de Valores Numéricos
Por existirem apenas dois dígitos binários, os números são
representados em código binário. Neste código a sequência de
números inteiros é escrita naturalmente como
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
O valor de um número pode ser
obtido através dos pesos dos seus
dígitos (potências de 2)
Sistema Binário
11101111
Sistema Decimal
239
9×100 =
9
3×101 = 30
2×102 = 200
239
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
1×20
1×21
1×22
1×23
0×24
1×25
1×26
1×27
=
1
=
2
=
4
=
8
=
0
= 32
= 64
= 128
239
5
Representação de Texto
Cada símbolo é normalmente representado por 1 byte de acordo
com o código ASCII (American Standard Code for Information
Interchange),
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000
0001
0010
0011
0100
0101
0110
0111
0
@
P
`
p
€
•
!
1
A
Q
a
q
•
‘
"
2
B
R
b
r
‚
’
#
3
C
S
c
s
ƒ
“
$
4
D
T
d
t
„
”
%
5
E
U
e
u
…
•
&
6
F
V
f
v
†
–
'
7
G
W
g
w
‡
—
(
8
H
X
h
x
ˆ
˜
)
9
I
Y
i
y
‰
™
*
:
J
Z
j
z
Š
š
+
;
K
[
k
{
‹
›
,
<
L
\
l
|
Œ
œ
=
M
]
m
}
•
•
.
>
N
^
n
~
Ž
ž
/
?
O
_
o
•
?
Ÿ
ou de outros mais sofisticados, com dois ou mais bytes, para
permitir alfabetos não latinos
ã
23 de Fevereiro de 2006
š
α
И
‫א‬
Introdução aos Computadores e Programação
‫ف‬
ι
6
Representação de Imagens
• Na representação por mapa de bits (bit map) uma imagem é uma
(muito) longa sequência de bits representando de pontos (pixel –
picture element) :
– preto e branco (pixel→1 bit): 1→preto ; 0→branco
– cores (pixel→3 bytes): vermelho+verde+azul (RGB)
• Os mapas de bits ocupam muito espaço pelo que se usam
frequentemente técnicas de compressão (ex: GIF e JPEG).
• Uma desvantagem adicional é a dificuldade de aumentar ou
diminuir as imagens.
• Em técnicas de vectores, a imagem é representada como um
conjunto de linhas e curvas deixando os detalhes do seu desenho
para a componente que produz a imagem (monitor, impressora),
permitindo obter mais facilmente ampliações e reduções.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
7
Armazenamento de Informação
• Num computador a informação (programas e dados) é guardada
em memória, principal ou secundária (Discos Rígidos, Diskettes,
CD/DVD, Flash disks, ...).
• A memória principal é organizada numa sequência de células
(palavras), cada uma com um tamanho de 1 ou mais bytes (8 bits)
e que pode ser acedida individualmente especificando o seu
endereço (RAM → random access memory).
• O número de células da memória principal é geralmente muito
grande (≈ 500 MB), e expressa-se em potências de 2:
210 bytes
220 bytes
230 bytes
240 bytes
23 de Fevereiro de 2006
= 1024 bytes = 1 Kilobyte
= 1024 Mbytes = 1 Megabyte
= 1024 Mbytes = 1 Gigabyte
= 1024 Mbytes = 1 Terabyte
= 1 KB
= 1 MB
= 1 GB
= 1 TB
Introdução aos Computadores e Programação
8
Armazenamento de Informação
• As células de memória têm um endereço que é
especificado por um número de bits igual ao
expoente da potência de 2 utilizada.
• Por exemplo, para endereçar 1024 = 210
células são necessários 10 bits: desde a posição
010 = 0000 00002 à posição 1023 = 1111 11112.
endereço
células
0:
01101101
1:
10101110
2:
00001111
3:
01011100
4:
10110011
...
...
• A memória principal pode ser considerada uma longa sequência
de bits, permitindo representações com um tamanho arbitrário
de bits.
• Por exemplo, uma sequência de 32 bits pode ser representada
por 4 células consecutivas.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
9
Memória Secundária
Memória Principal
Memória Secundária
Disco Rígido
Disquetes
CDs
DVDs
...
• A memória secundária complementa a memória principal, de
forma não volátil (não se apaga quando se desliga o computador):
– mais espaço de armazenamento (p.ex: DVD ≈ 4 GB);
– possibilidade de separação física da máquina..
• A maior desvantagem destes sistemas relativamente à memória
principal é a velocidade de acesso (usa meios mecânicos muito
mais lentos – excepto “pen disks”, cartões SD de memória).
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
10
Arquitectura Básica de um Computador
• CPU (Central Processing Unit)
– Lê instruções
– Executa insruções
• Memória
– Guarda Dados
– Guarda Instruções
• Dispositivos de Entrada/Saída
– Teclado, rato, placa gráfica, placa de som, discos rígido,
diskettes, flash disks, impressoras, placa de rede, ...)
– Permite a comunicação com o “exterior” (utilizador,
periféricos, outros computadores...)
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
11
Arquitectura Básica de um Computador
• Vias de Comunicação (Buses)
• Ligam os vários componentes
– Address Bus
• Comunica o endereço da memória ou I/O a ser
lida/escrita
– Data Bus
• Transmite os dados entre o CPU, a memória e o I/O
– Control Bus
• Escolhe memória ou I/O
• Escolhe leitura ou escrita
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
12
CPU (Central Processing Unit)
• A unidade central de processamento é constituida por:
– Uma unidade lógica/aritmética que contém os circuitos que
executam a manipulação de dados;
– Uma unidade de controle que contém os circuitos para a
coordenação da actividade da máquina;
– Um conjunto de registos gerais que servem para armazenar
temporariamente os dados que são manipulados na CPU;
– Dois registos especiais:
• Um contador (program counter) que contém o endereço
da próxima instrução a ser executada;
• Um registo de instrução (instruction register) que contém
a instrução que está a ser correntemente executada.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
13
Esquema da Arquitectura de um Computador
Address Bus
2001:
2002:
2003:
2004:
2005:
2006:
2007:
5001:
5002:
5003:
1002:
LDA
5001
LDB
5002
ADD
STO
5003
0013
1036
1049
Address
Register
(AR)
CPU
Reg. A
Program
Counter
(PC)
Reg. B
Arithmetic &
Logic Unit
Instruction
Register
(IR)
Reg. O
Data Bus
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
14
Exemplo de Funcionamento
• Executar a (instrução de) atribuição: Z  X +Y
• Assume-se
– O dado X na posição de memória 5001
– O dado Y na posição de memória 5002
– O dado Z a ser colocado na posição de memória 5003
• Programa em Assembly (≈Linguagem Máquina):




2001: LDA 5001
2003: LDB 5002
2004: ADD
2005: STO 5003
23 de Fevereiro de 2006
(5001)  (Registo A)
(5002)  (Registo B)
(Reg. A) + (Reg. B)  (Reg. O)
(Registo O)  (1003)
Introdução aos Computadores e Programação
15
Exemplo
• Ciclo Fetch-Execute das Instruções
– Fetch
2001:
2002:
• Avançar o PC para 2001
2003:
2004:
• Passar o conteúdo do PC para o AR
2005:
2006:
• Ler a posição apontada por AR para IR
2007:
– Execute
• Avançar o PC para 2002
5001:
5002:
• Passar o conteúdo do PC para o AR
5003:
• Ler a posição apontada por AR para o Reg A.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
LDA
5001
LDB
5002
ADD
STO
5003
0013
1036
1049
16
Linguagens de Programação
• Os computadores (mais especificamente os processadores)
executam programas.
• Estes programas podem ser escritos em linguagens com vários
graus de abstração:
– desde a linguagem ASSEMBLY
(linguagem máquina com algumas
mnemónicas) directamente relacionada
com
o
funcionamento
de
um
determinado processador
– até às linguagens de alto nível (Pascal, C,
Java, ...), independentes do processador
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
2001:
2002:
2003:
2004:
2005:
2006:
2007:
LDA
5001
LDB
5002
ADD
STO
5003
Z  X+Y
17
Linguagens de Programação
• Uma característica importante da abstração é poder “abstrair” um
conjunto de instruções numa só instrução.
• Esta é naturalmente uma propriedade já conhecida da
“matemática”, através da utilização de funções.
• Por exemplo, é conhecido que a soma da série “truncada”:
x - x3/3! + x5/5! - x7/7! + x9/9! + ...
converge para o valor do seno de x. Assim, para denotar o valor
do dobro do seno de x, em vez de escrevermos
2* (x - x3/3! + x5/5! - x7/7! + x9/9! + ... )
escrevemos naturalmente
2*sen(x)
abstraindo todo o cálculo do valor do seno de x na notação “sen(x)”
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
18
Programas e Funções
• De uma forma geral, podemos considerar que uma função tem
um valor determinado pelo valor dos seus argumentos.
Função F: x  f(x)
• De uma forma “operacional”, pode considerar-se uma “função”
como um mecanismo que calcula o valor da função a partir do
valor dos seu(s) parâmetro(s) “de entrada”.
• Esta noção “matemática” de função pode ser adaptada para o
domínio da computação
Programa P: input  output
• Assim, a execução de um programa pode considerar-se como o
mecanismo que determina um qualquer “output” a partir de um
dado “input”.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
19
Compiladores
• A consideração de diferentes níveis de abstração é naturalmente
extremamente útil para se entender os programas executados
pelos computadores.
• Por exemplo, se “inicialmente” (anos 50) os programas eram
escritos em linguagem máquina, essa situação alterou-se
rapidamente por razões óbvias de eficiência de programação e
manutenção de programas.
• Em particular, são muito importantes os programas que
– recebem como input um texto correspondente a um programa
escrito numa linguagem de alto nível (por exemplo C); e
– produzem como output um programa escrito em linguagem
máquina.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
20
Compiladores
• Estes programas são os chamados “compiladores”, naturalmente
dependentes da linguagem de alto nível e da linguagem máquina
pretendidas
Programa
Programa
Compilador
Pascal
Máquina
(de Pascal)
e que são comparáveis conceptualmente a funções
sqrt
5
25
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
21
Sistemas de Operação
• A consideração de vários níveis de abstração é útil não só para
se entenderem os programas executados pelos computadores,
mas também para se entender a organização e encadeamento dos
vários programas utilizados.
• Um Sistema de Operação (Windows, UNIX, Linux, Mac OS, ...)
é um conjunto de programas que permitem operar um
computador em “alto nível”.
• Por exemplo, em vez de se especificarem todas as instruções
necessárias para ler um ficheiro chamado (texto.txt) do disco
para a memória, bastará utilizar uma “instrução” do tipo,
read(“texto.txt”)
disponibilizada pelo sistema de operação às aplicações
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
22
Aplicações
• Uma vez estabelecidas as primitivas disponibilizadas por um
sistema de operação, vários programas de aplicação podem ser
escritos de uma forma independente do computador / processador.
Editor de
Texto
Compilador
C
Compilador
Pascal Read(file)
23 de Fevereiro de 2006
Folha de
Cálculo
Browser
de
Processador
Bases
de
Dados
Jogos
Introdução aos Computadores e Programação
23
Sistemas de Operação - Shell
• As principais componentes de um sistema de operação são
– Interface com o utilizador (shell – user interface), que
interpreta as instruções dadas pelo utilizador.
– O Núcleo (kernel) composto por programas de mais baixo
nível, que permitem executar essas instruções.
• Normalmente, a shell disponibiliza uma interface gráfica (GUI –
Graphical User Interface) cujos objectos (ficheiros, programas...),
são representados e manipulados graficamente no monitor como
ícones.
• Uma componente importante das interfaces gráficas é o gestor de
janelas, responsável pela divisão do ecrã em espaços denominados
janelas e pela sua associação com as respectivas aplicações.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
24
Sistemas de Operação - Kernel
• O Núcleo é composto por um conjunto de programas que
executam várias funções:
– Gestão de Ficheiros: Organizam os ficheiros em hierarquias, e
provê instruções para a sua criação, alteração e apagamento.
– Gestão de Periféricos: Disponibilizam instruções de alto nível
para aceder aos dispositivos periféricos (discos, placa gráfica,
placa de som, etc...)
– Gestão de Memória: Organizam a memória para que as zonas
de memória (programa e dados) dos vários programas
concurrentes (processos) não se confundam.
– Gestão de Processos: Divide o tempo entre os vários processos,
interrompendo-os e retomando-os quando apropriado.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
25
Sistemas de Operação – Gestão de Ficheiros
• A função do Gestor de Ficheiros é a coordenação das capacidades
de armazenamento da máquina.
• A informação é armazenada em ficheiros que normalmente são
agrupados em directorias organizadas hierarquicamente:
C:\
A:\
Program Files
Programa_1.exe
...
Ficheiro_1 Ficheiro_2 Directoria
...
C:\Program Files\Programa_1.exe
23 de Fevereiro de 2006
Ficheiro_3
A:\Directoria\Ficheiro_3
Introdução aos Computadores e Programação
26
Sistemas de Operação – Gestão de Periféricos
• Os gestores de periféricos (device drivers) são as unidades de
software que comunicam com os controladores dos periféricos.
• Cada device driver é especializado num determinado periférico
(uma impressora, um disco rígido, um monitor, ...).
• Assim, através um qualquer computador (genérico) pode ser
configurado para um conjunto particular de periféricos com a
instalação dos respectivos device drivers.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
27
Sistemas de Operação – Gestão de Memória
• O gestor de memória é responsável pela coordenação da utilização
da memória principal (RAM).
• Vários programas e blocos de dados podem estar simultaneamente
na memoria principal.
• Por exemplo:
– Um processador de texto com vários ficheiros abertos
– Uma folha de cálculo
– O browser para aceder à Internet
– Um gestor de correio electrónico
• É necessário coordenar a utilização do espaço disponível, e
eventualmente, criar a ilusão de um espaço de memória maior
(memória virtual) usando por exemplo espaço do disco rígido.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
28
Sistemas de Operação – Gestão de Processos
• Um processo é um programa em execução.
• Os computadores actuais possibilitam a execução de vários
processos concurrentemente, isto é, o tempo de CPU é partilhado
(time-sharing) pelos respectivos processos.
• Os gestores dos processos são componentes do sistema operativo
responsáveis, pela manutenção
– De uma lista dos processos em execução
– Dos respectivos estados (em execução, suspenso, ...)
– Da prioridade dos processos.
– Dos tempos de CPU atribuidos a cada processo.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
29
Sistemas Multi-Utilizadores
• Até aos anos 70/80 a tecnologia não permitia a construção de
computadores pessoais de forma económica. Nessa altura, a
arquitectura habitual de um sistema computacional era de um
computador “mainframe”, que incluia vários periféricos comuns
(discos, impressora, ..) ao qual estavam ligados vários utilizadores
através de terminais.
Mainframe
Impressora
Discos
Discos
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
30
Sistemas Multi-Utilizadores
• Nesses sistemas multi-utilizador o sistema operativo geria os
vários utilizadores, dando-lhes, à vez, tempo de CPU, zonas
separadas de memória, acesso concorrente aos periféricos, ...
• Com o aparecimento nos anos 80
de computadores pessoais, houve
a possibilidade de substituir os
terminais individuais por esses
computadores pessoais (terminais
inteligentes),
que
permitiam
executar de uma forma autónoma
várias tarefas.
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
Mainframe
Impressora
Discos
Discos
31
Redes Locais de Computadores
• Esta mudança deu origem ao aparecimento de redes locais de
computadores em que vários computadores pessoais
comunicavam entre si (ficheiros, mensagens, ...).
• Salvo em organizações
“grandes”, os mainframes
foram substituídos por
computadores menos
potentes.
• Estes “servidores”, mantêm PC
serviços e periféricos
comuns (bases de dados,
impressoras, etc...).
23 de Fevereiro de 2006
PC
PC
“Servidor”
Impressora
Introdução aos Computadores e Programação
PC
Base de Dados
32
Redes de Computadores
• Por outro lado, a tecnologia de comunicações permitiu ligar os
servidores em redes de computadores não locais, em que uma
infraestrutura de nós intermédios garantia o encaminhamento das
mensagens entre servidores e utilizadores finais.
PC
Servidor
PC
PC
PC
PC
Servidor
PC
PC
PC
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
33
Redes Locais de Computadores
• As redes de computadores foram evoluindo ao longo do tempo
desde a ARPANET (rede militar, com acesso a universidades) até à
actual INTERNET.
• os utilizadores ligam-se a servidores internet (ISPs) tornando-se
seus “clientes” e aceddendo a vários tipos de serviços através de
programas aprpriados, tais como
• Browsers, dando acesso a páginas e outros serviços Web
(suportados no protocolo HTTP)
• Transferência de ficheiros (protocolo FTP)
• Correio Electronico (por ex. Eudora, Netscape, Outlook)
• Voz (VoIP) por exemplo disponível no MSN Messenger e Skipe
23 de Fevereiro de 2006
Introdução aos Computadores e Programação
34
Redes de Computadores
• Servidores – Internet (Browsers e Servidores)
– Correio Electrónico, Bases de Dados,
• Redes Globais: Nós e “Routers”
PC
PC
“Servidor”
PC
PC
Impressora
23 de Fevereiro de 2006
Base de Dados
Introdução aos Computadores e Programação
35
Download

Diapositivos