1 Introdução aos Computadores e Programação (ICP) Programação para as Ciências Experimentais...

Post on 17-Apr-2015

105 views 0 download

Transcript of 1 Introdução aos Computadores e Programação (ICP) Programação para as Ciências Experimentais...

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.