Post on 17-Apr-2015
1
Introdução aos Computadores e Programação(ICP)
Programação para as Ciências Experimentais(PCE)
DI/FCT/UNL
1º Semestre 2004/2005
2
• Teóricas:
– Jorge Cruz (jc@di.fct.unl.pt / http://ssdi.di.fct.unl.pt/~jc)
• Práticas: – Miguel Maurício (mlm@di.fct.unl.pt)
– Joaquim Ferreira da Silva (jfs@di.fct.unl.pt / http://ssdi.di.fct.unl.pt/~jfs)
– Alexandre Pinto (amp@di.fct.unl.pt / 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
3
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/
4
Introdução aos Computadores
• Um programa é a materialização para uma dada máquina (computador e linguagem de programação) de um algoritmo.
• 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.
5
ExemploTarefa:
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;
6
ExemploTarefa:
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);
doR = mod(M,N);if (R <> 0)
M = N;N = R;
endif;until (R == 0);disp(“O maior divisor comum é:”);disp(N);
7
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.
8
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).
9
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)
Memória Principal
Memória Secundária
Disco RígidoDisquetesCDsDVDs...
Armazenamento de Dados
10
Memória Principal
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:
0:
1:
2:
3:
4:
??:
endereço
01101101
10101110
00001111
01011100
10110011
00110011
células
......
210 bytes = 1024 bytes = 1 Kilobyte = 1 KB
220 bytes = 1024 KB = 1 Megabyte = 1 MB
230 bytes = 1024 MB = 1 Gigabyte = 1 GB
Armazenamento de Dados
11
Memória Principal
Em cada célula os bits são ordenados.
0:
1:
2:
3:
4:
??:
endereço
01101101
10101110
00001111
01011100
10110011
00110011
células
......
0 0 0 0 1 1 1 1
bit mais significativo
bit menos significativo
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)
Armazenamento de Dados
12
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):
A maior desvantagem destes sistemas relativamente à memória principal é a velocidade de acesso (usa meios mecânicos muito mais lentos).
• mais espaço de armazenamento;
• possibilidade de separação física da máquina.
Armazenamento de Dados
13
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).
01000010011011110110110100100000011001000110100101100001
B o m d i a
01000010
01101111
01101101
00100000
01100100
01100001
...
01101001
...
B
o
m
d
a
i
memória principal
14
Representação da Informação como Sequência de bits
Representação de Valores Numéricos
Sistema Decimal
239
9×100 = 93×101 = 302×102 = 200 239
Sistema Binário
11101111
1×20 = 11×21 = 21×22 = 4
239
1×23 = 80×24 = 01×25 = 321×26 = 641×27 = 128
Sequência de números binários:
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
15
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.
16
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).
17
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).
18
Manipulação da Informação
A unidade central de processamento é constituida por:
Unidade Central de Processamento (CPU)
• 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.
19
Manipulação da Informação
Unidade Central de Processamento (CPU)CPU
0:
1:
2:
10100100
00000000
00000000
...
registos
00000010
0110110110101110
contador
registo de instrução
Unidade de ControleUnidade Lógica/Aritmética
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.
RAM
0:
1:
2:
3:
4:
01101101
10101110
00001111
01011100
10110011
...
BUS
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.
20
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):
Fetch
Decode
Execute
Transferir da RAM a instrução indicada pelo contador para o registo de instrução e incrementar o contador.
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.
21
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.
Nos PCs os controladores correspondem às placas que se podem inserir na placa principal (motherboard) e às quais se ligam os periféricos.
CPU
Controlador
BUSRAM
Controlador
Monitor Disco Rígido
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).
22
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):
Shell
Kernel
23
O Sistema Operativo
A Shell é a parte do sistema operativo responsável pela interface com os utilizadores.
Shell
Normalmente disponibiliza uma interface gráfica (GUI – Graphical User Interface) cujos objectos (ficheiros, programas...), são representados e manipulados graficamente no monitor como icones.
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.
Gestor de Janelas
24
O Sistema Operativo
A Kernel do sistema operativo contém o software capaz de executar as funções mais básicas.
Kernel
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).
25
O Sistema Operativo
Kernel
A função do gestor de ficheiros é a coordenação das capacidades de armazenamento da máquina.
Gestor de Ficheiros
A informação é armazenada em ficheiros que normalmente são agrupados em directorias organizadas hierarquicamente:
A:\
Ficheiro_1 Ficheiro_2 Directoria
Ficheiro_3
C:\
Program Files
Programa_1.exe
...
...
C:\Program Files\Programa_1.exe A:\Directoria\Ficheiro_3
26
O Sistema Operativo
Kernel
Os gestores de periféricos (device drivers) são as unidades de software que comunicam com os controladores dos periféricos.
Gestores de 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.
27
O Sistema Operativo
Kernel
O gestor de memória é responsável pela coordenação da utilização da memória principal (RAM).
Gestor de Memória
É 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.
Vários programas e blocos de dados podem estar simultaneamente na memoria principal.
28
O Sistema Operativo
Kernel
Um processo é um programa em execução.
Gestores dos 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.
Os computadores actuais possibilitam a execução de vários processos concurrentemente, isto é, o tempo de CPU é partilhado (time-sharing) pelos respectivos processos.
29
O Sistema Operativo
O Arranque do Sistema Operativo
Quando o computador é ligado um pequeno programa de inicialização é executado automaticamente.
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.
Este programa está armazenado permanentemente numa parte não volátil da memória principal (ROM – Read Only Memory).
Uma vez iniciada a sua execução, o sistema operativo passa a controlar todas as actividades da máquina.