Introdução aos Computadores e Programação
(ICP)
Programação para as Ciências Experimentais
(PCE)
DI/FCT/UNL
1º Semestre 2004/2005
1
• Teóricas:
– Jorge Cruz ([email protected] / http://ssdi.di.fct.unl.pt/~jc)
• Práticas:
– Miguel Maurício ([email protected])
– Joaquim Ferreira da Silva ([email protected] / http://ssdi.di.fct.unl.pt/~jfs)
– Alexandre Pinto ([email protected] / http://centria.di.fct.unl.pt/~amp/)
• Objectivos
– Introdução aos Computadores
– Introdução à Algoritmia
– Familiarização com uma linguagem imperativa
(Octave/MATLAB)
– Aplicação a problemas de engenharia
2
Avaliação
• Avaliação das Práticas:
– Mini-teste de Octave
– Trabalho de Octave (1)
– Trabalho de Octave (2)
– Mini-teste de Excel
• Nota Final:
– 25% - Nota Prática
– 75% - Exame
http://ssdi.di.fct.unl.pt/cursos/icp/
http://ssdi.di.fct.unl.pt/cursos/pce/
3
Introdução aos Computadores
• Um computador é uma máquina capaz de executar
determinadas tarefas.
• Para uma máquina poder executar uma determinada tarefa é
necessário:
– Um algoritmo adequado para executar essa tarefa
– Uma representação do algoritmo compreensível pela máquina
• Um algoritmo é um conjunto ordenado de passos que
definem como uma tarefa deve ser executada.
• Um programa é a materialização para uma dada máquina
(computador e linguagem de programação) de um algoritmo.
4
Exemplo
Tarefa:
Calcular o maior divisor comum de dois inteiros positivos x e y
Algoritmo:
1º Passo: atribuir a M o maior valor entre x e y;
2º Passo: atribuir a N o menor valor entre x e y;
3º Passo: chamar R ao resto da divisão inteira de M por N;
4º Passo: se R=0 então o maior divisor comum é N;
senão atribuir a M o valor de N;
atribuir a N o valor de R;
voltar ao 3º Passo;
5
Exemplo
Tarefa:
Calcular o maior divisor comum de dois inteiros positivos x e y
Programa (Octave):
x=input(“Qual o valor de x?”);
y=input(“Qual o valor de y?”);
M = max(x,y);
N = min(x,y);
do
R = mod(M,N);
if (R <> 0)
M = N;
N = R;
endif;
until (R == 0);
disp(“O maior divisor comum é:”);
disp(N);
6
Introdução aos Computadores
• Os programas e os algoritmos que eles representam são
genéricamente denominados por software.
• A máquina e os seus componentes físicos são genéricamente
denominados por hardware.
7
Representação da Informação
• Toda a informação necessária ao funcionamento de um
computador é representada por conjuntos de bits.
• Um bit (binary digit) é um valor simbólico (0/1) que fisicamente
é armazenado em componentes (circuitos) que podem estar num
de dois estados (ex: ligado → 1; desligado → 0).
8
Armazenamento de Dados
Memória Principal
Memória Secundária
Disco Rígido
Disquetes
CDs
DVDs
...
Memória Principal
A memória principal é organizada numa sequência de células
(palavras), cada uma com um tamanho típico de 8 bits (byte) e que
pode ser acedida individualmente especificando o seu endereço
(RAM → random access memory)
9
Armazenamento de Dados
Memória Principal
endereço
células
0:
01101101
1:
10101110
2:
00001111
3:
01011100
4:
10110011
...
...
??:
00110011
O número de células da memória principal é geralmente grande,
variando de computador para computador, e expressa-se
normalmente em potências de 2:
210 bytes = 1024 bytes = 1 Kilobyte = 1 KB
220 bytes = 1024 KB = 1 Megabyte = 1 MB
230 bytes = 1024 MB = 1 Gigabyte = 1 GB
10
Armazenamento de Dados
Memória Principal
endereço
células
0:
01101101
1:
10101110
2:
00001111
3:
01011100
4:
10110011
...
...
??:
00110011
00001111
bit mais significativo
bit menos significativo
Em cada célula os bits são ordenados.
A memória principal pode ser considerada uma longa sequência de
bits, permitindo representações com um tamanho arbitrário de bits.
(ex: uma sequência de 16 bits pode ser representada por 2 células consecutivas)
11
Armazenamento de Dados
Memória Secundária
A memória secundária (discos rígidos, disquetes, CDs, DVDs, ...)
complementa a memória principal, proporcionando num meio
menos volátil (não se apaga quando se desliga o computador):
• mais espaço de armazenamento;
• 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).
12
Representação da Informação como Sequência de bits
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).
memória principal
...
01000010011011110110110100100000011001000110100101100001
B
o
m
d
i
a
01000010
B
01101111
o
01101101
m
00100000
01100100
d
01101001
i
01100001
a
...
13
Representação da Informação como Sequência de bits
Representação de Valores Numéricos
Sistema Decimal
239
Sistema Binário
11101111
9×100 =
9
3×101 = 30
2×102 = 200
239
Sequência de números binários:
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
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
14
Representação da Informação como Sequência de bits
Representação de Imagens
Mapas de bits
Uma imagem é um conjunto de pontos (pixel – picture element)
representado por uma longa sequência de bits:
• imagens a preto e branco (pixel→1 bit): 1→preto ; 0→branco
• imagens a 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.
15
Representação da Informação como Sequência de bits
Representação de Imagens
Técnicas de Vectores
As técnicas de vectores representam uma imagem como um
conjunto de linhas e curvas deixando os detalhes do seu desenho
para a componente que produz a imagem (monitor, impressora).
Uma característica destas técnicas é a facilidade de aumentar ou
diminuir as imagens.
As técnicas de vectores são usadas frequentemente para
representar tipos de letra (escaláveis) e em aplicações de desenho
(ex: CAD – Computer-Aided Design).
16
Manipulação da Informação
O computador, além de ser capaz de armazenar os dados, tem
também que os saber manipular para poder executar os algoritmos.
A manipulação dos dados requer um mecanismo para executar
operações sobre os dados e coordenar a sequência dessas operações.
Num computador típico este mecanismo é denominado unidade
central de processamento (CPU – Central Processing Unit).
17
Manipulação da Informação
Unidade Central de Processamento (CPU)
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
temporariamente os dados que são manipulados na CPU;
armazenar
• 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.
18
Manipulação da Informação
Unidade Central de Processamento (CPU)
CPU
Unidade
Lógica/Aritmética
RAM
Unidade de Controle
0:
01101101
1:
10101110
2:
00001111
registo de instrução
3:
01011100
0110110110101110
4:
10110011
registos
contador
0:
10100100
00000010
1:
00000000
2:
00000000
...
BUS
...
A CPU está ligada com a memória principal (RAM) por um circuito (BUS)
através do qual é capaz de transferir dados entre a RAM e os seus registos.
Actualmente quase todos os CPUs contêm uma memória de alta velocidade
(semelhante à dos registos) denominada Memória Cache.
Nestes casos, a máquina tenta manter na Memória Cache uma cópia da parte da
RAM que esteja correntemente a ser utilizada.
19
Manipulação da Informação
Execução de Programas
Um programa para poder ser executado tem que ser codificado e armazenado na
memória principal.
A unidade de controle é responsável pela extração do programa da memória
principal, descodificação das suas instruções e sua execução.
A unidade de controle repete continuamente o seguinte ciclo (machine cycle):
Transferir da RAM a instrução
indicada pelo contador para o
Fetch
registo de instrução e
incrementar o contador.
Decode
Execute
Descodificar o conteúdo do registo de
instrução, identificando a operação
requerida e os respectivos operandos.
Executar a operação requerida
pela instrução activando os
circuitos apropriados.
20
Manipulação da Informação
Comunicação com os Periféricos
A memória principal (RAM) conjuntamente com a unidade de processamento
central (CPU) constituem o núcleo do computador que comunica com os
periféricos através de dispositivos intermediários denominados controladores.
BUS
CPU
RAM
Controlador
Controlador
Monitor
Disco Rígido
Nos PCs os controladores correspondem às placas
que se podem inserir na placa principal
(motherboard) e às quais se ligam os periféricos.
Cada controlador trata da comunicação com determinado tipo de periférico.
O controlador está electronicamente ligado ao BUS que liga a CPU à RAM.
A comunicação entre a CPU e um controlador é feita de um modo idêntico à
comunicação da CPU com a RAM (o endereço identifica o controlador).
21
O Sistema Operativo
A coordenação entre as diferentes actividades que podem ser executadas num
computador é realizada por um conjunto de software globalmente denominado
Sistema Operativo (ex: Microsoft Windows XP, UNIX, Linux, ...).
Um sistema operativo é constituido por duas camadas: o interpretador de
comandos (Shell) e o núcleo (Kernel):
Kernel
Shell
22
O Sistema Operativo
Shell
A Shell é a parte do sistema operativo responsável pela interface
com os utilizadores.
Normalmente disponibiliza uma interface gráfica (GUI – Graphical
User Interface) cujos objectos (ficheiros, programas...), são
representados e manipulados graficamente no monitor como icones.
Gestor de Janelas
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
O Sistema Operativo
Kernel
A Kernel do sistema operativo contém o software capaz de
executar as funções mais básicas.
As suas componentes principais são:
• o gestor de ficheiros (file manager);
• os gestores dos periféricos (device drivers);
• o gestor de memória (memory manager);
• os gestores dos processos (scheduler e dispatcher).
24
O Sistema Operativo
Kernel
Gestor 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:\
Program Files
Programa_1.exe
A:\
...
...
C:\Program Files\Programa_1.exe
Ficheiro_1
Ficheiro_2
Directoria
Ficheiro_3
A:\Directoria\Ficheiro_3
25
O Sistema Operativo
Kernel
Gestores 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, temos um sistema operativo genérico que pode ser
configurado para um conjunto particular de periféricos com a
instalação dos respectivos device drivers.
26
O Sistema Operativo
Kernel
Gestor 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.
É 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.
27
O Sistema Operativo
Kernel
Gestores dos 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 e dos respectivos estados, e pela atribuição de tempo de
CPU a cada processo.
28
O Sistema Operativo
O Arranque do Sistema Operativo
Quando o computador é ligado um pequeno programa de
inicialização é executado automaticamente.
Este programa está armazenado permanentemente numa parte não
volátil da memória principal (ROM – Read Only Memory).
O objectivo do programa de inicialização é fazer a transferência
para a memória principal do sistema operativo que se encontra
armazenado numa zona prédeterminada do disco rígido (ou outro
periférico) e iniciar a sua execução.
Uma vez iniciada a sua execução, o sistema operativo passa a
controlar todas as actividades da máquina.
29
Download

Introdução aos Computadores