27
1 © Luís Cruz - 2004 1 Docentes Professores Teórica : Luís Cruz Prática : Gabriel Falcão © Luís Cruz - 2004 2 Regras de Avaliação Componente Teórica + Componente Prática Componente Teórica l 11 valores l Avaliada por exame e exame de recurso l Mínimo : 5 valores Componente Prática l 9 valores resultantes da avaliação contínua das aulas laboratoriais

Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

1

© Luís Cruz - 2004 1

Docentes

Professores

Teórica : Luís Cruz

Prática : Gabriel Falcão

© Luís Cruz - 2004 2

Regras de Avaliação

Componente Teórica + Componente Prática

Componente Teórical 11 valoresl Avaliada por exame e exame de recursol Mínimo : 5 valores

Componente Prátical 9 valores resultantes da avaliação contínua das aulas

laboratoriais

Page 2: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

2

© Luís Cruz - 2004 3

Regras de Avaliação

Informação adicional

– A admissão a exame por parte de alunos em “regime normal” (i.e. não são trabalhadores estudantes) depende da frequência de um mínimo de 75% das aulas práticas,

– Alunos trabalhadores-estudantes devem combinar com o docente da prática uma forma alternativa de serem avaliados na vertente prática,

– A nota da prática (0-9 valores) é válida para o exame, exame de recurso e eventuais exames de época especial,

– A prova teórica é realizada sem consulta.

© Luís Cruz - 2004 4

Programa

Programa Abreviado

l Noções gerais sobre computadores digitaisl Noções sobre linguagens de programaçãol Linguagem de programação Pythonl Aplicações

Page 3: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

3

© Luís Cruz - 2004 5

Apresentação e Programa

Programa Detalhado

– Noções gerais sobre computadores digitaisl Modelo de von Neumannl Modelo de computador digital modernol Representação de informação em formatos binários

– Informação numérica (inteiros, reais, complexos),– Informação booleana (verdadeiro/falso),– Informação não numérica (texto, etc.)

– Noções sobre linguagens de programaçãol Linguagem máquinal Linguagens assembly

© Luís Cruz - 2004 6

Apresentação e Programa

Programa Detalhado

– Noções sobre linguagens de programação (cont.)l Linguagens de alto nível

– Interpretadas– Compiladas

– Linguagem de Programação Pythonl Tipos básicos de dadosl Estruturas de controlo de fluxol Estruturas de dados avançadasl Funções e Módulos

– Aplicações

Page 4: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

4

© Luís Cruz - 2004 7

Bibliografia

“Python - Curso Completo", Pedro Morais, José Nuno Pires, Editora FCA, ISBN 9727222706

"Practical Python", Magnus Lie Hetland, APress, ISBN 1590590066

textos disponíveis na Web em www.python.org

© Luís Cruz - 2004 8

Noções sobre Computadores Digitais♦ Dispositivos electrónicos programáveis que manipulam informação que pode assumir valores de um conjunto discreto (por exemplo 0 e 1 no caso binário).

♦ Operações básicas são em geral operações aritméticas, lógicas e de controlo.

♦ Velocidades de execução muito elevadas: centenas ou milhares de milhões de operações por segundo.

Page 5: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

5

© Luís Cruz - 2004 9

Modelo de Von Neumann

Arquitectura da generalidade dos computadores digitais correntes segue o modelo de Von Neumannconsistindo em :lUnidade de controlo : comanda todas as acçõeslUnidade aritmética e lógica : responsável pela execução de operações aritméticas e lógicas ☺lMemória : para armazenamento de resultados intermédios e finais,lDispositivos de entrada/saída : monitores, discos, teclados, etc.

© Luís Cruz - 2004 10

Modelo de Von Neumann

Page 6: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

6

© Luís Cruz - 2004 11

CPU

Computadores modernos concentram a U-AL e U-CON num só componente : o CPU (Central Processing Unit).

© Luís Cruz - 2004 12

Representação Digital de Informação

Quantidades físicas assumem em geral um contínuo de valores – grandezas analógicas.

Computadores digitais operam e armazenam valores discretos – representação digital.

Existe um erro inerente ao processo de representação de uma grandeza analógica por

uma quantidade digital !

Page 7: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

7

© Luís Cruz - 2004 13

Representação Digital de Informação

Necessário adoptar um código que defina uma equivalência entre valores analógicos e valores digitais.

Existem muitos códigos possíveis, dependendo da situação/aplicação.

No caso de computadores digitais binários os códigos de representação estabelecem relações entre sequências de

bits* e os valores a representar.

* - bit (Binary Digit) : dígito binário, que pode tomar apenas valores 0 e 1

© Luís Cruz - 2004 14

Representação Digital de InformaçãoBits, Bytes e Co

Bits são unidades de informação que podem ter apenas dois valores possíveis : 0 e 1.

Bytes são conjuntos de 8 bits.

Kilobyte (KB) : 210=1.024 bytes.

Megabyte (MB) : 220=1.048.576 bytes.

Gigabyte (GB) : 230=1.073.741.824 bytes

Page 8: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

8

© Luís Cruz - 2004 15

Representação Digital de Informação Bits

Justapondo n bits obtemos unidades de representação com 2n valores possíveis.Exemplo : Juntando 3 bits temos os seguintes 8 valores possíveis:

000001010011100101110111

LAdSC1

© Luís Cruz - 2004 16

Representações Binárias - Exemplos

Números Inteiros sem Sinal - Código Natural

6311111162111110......3000011200001010000010000000

InteiroBinário (6 bits)

Page 9: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

Slide 15

LAdSC1 Mostrar como contar as combinações.

Dar mais um exemplo para caso de 8 bits.Luis Cruz; 21-09-2004

Page 10: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

9

© Luís Cruz - 2004 17

Representações Binárias - Exemplos

Caracteres Alfanuméricos – Código ASCII

......

‘{‘1111011......´f´1100110......‘B’1000010‘A’1000001

CaracterBinário (7 bits)

© Luís Cruz - 2004 18

Representações Numéricas - Inteiros

Notação Posicional – Base b

O “número” dn-1dn-2dn-3...d2d1d0

em que os di podem assumir valores de 0 a b-1

representa o valor numérico

dn-1•bn-1+ dn-2•bn-2+ dn-3•bn-3+...+ d2•b2+ d1•b1+ d0

Page 11: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

10

© Luís Cruz - 2004 19

Representações Numéricas - Inteiros

Exemplo em binário (base 2)

O número binário 100101

representa o valor numérico (decimal)

D = 1•25+ 0•24+ 0•23+ 1•22+0•21+ 1•20=37

Nota : O maior número representável com n bits é 2n-1. No caso geral de base b o maior inteiro representável é bn-1.

© Luís Cruz - 2004 20

Representações Numéricas - Inteiros Como obter a representação binária de um inteiro ?

Reparando que

dn-1•2n-1+ dn-2•2n-2+ dn-3•2n-3+...+ d2•22+ d1•21+ d0

é igual a

(dn-1•2n-2+ dn-2•2n-3+ dn-3•2n-4+...+ d2•21+ d1)•21+ d0

vemos que d0 é o resto da divisão do número por 2.

Dividindo repetidamente por dois, os restos são os bits pretendidos.

Page 12: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

11

© Luís Cruz - 2004 21

Representações Numéricas - Inteiros

Exemplo de conversão de decimal para binário natural

37decimal = ???binário

1 (bit 5)resto0=2:10 (bit 4)resto1=2:2

0 (bit 3)resto2=2:41 (bit 2)resto4=2:90 (bit 1)resto9=2:181 (bit 0)resto18=2:37

37decimal = 100101binário

© Luís Cruz - 2004 22

Exemplo: Subtrair 00011 a 11001Exemplo: Somar 10011 e 00110

Aritmética Binária

Adição e Subtracção de Inteiros em Formato Binário

Mesmo algoritmo que no caso decimal : Somam-se/subtraem-se os dígitos um a um, transportando o excesso/defeito para a soma/diferença dos dígitos da posição seguinte.

10011

00110+

11001

Houve transporte

11001

00011-

10110

Houve transporte

Page 13: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

12

© Luís Cruz - 2004 23

Aritmética Binária

E a multiplicação ?

Também neste caso o algoritmo é o mesmo que no caso decimal !

Exemplo : Multiplicar 1011 por 0101. (em decimal 11 vezes 5)

1011

0101x

10111011+

110111

© Luís Cruz - 2004 24

Aritmética BináriaA divisão binária segue os mesmos passos que a divisão

decimal.

Ou seja, é uma sequência de multiplicações e subtracções.

Exemplo : Dividir 110111 por 101. (em decimal 55 : 5)

110111 101

1011101

00111101

-

-0101101-000

Page 14: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

13

© Luís Cruz - 2004 25

Representação com base 8 - Octal

Grupos de 3 bits representam 1 de 8 valores diferentes de acordo com a tabela

71113011611020105101100141000000

OctBinOctBin

© Luís Cruz - 2004 26

Conversão Octal – BinárioConversão de binário para Octal é imediata : começando pelo bit menos significativo, dividem-se os bits em grupos de 3, convertendo cada grupo para Octal, de acordo com a tabela.

Exemplo :10101100bin = 010 101 100 = 254Octal

A conversão de Octal para binário é igualmente simples : basta substituir cada dígito Octal pelo grupo de 3 bits adequado (ver tabela).

Exemplo : 765Octal = 111 110 101 = 111110101bin

Page 15: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

14

© Luís Cruz - 2004 27

Representação com base 16 -Hexadecimal

Grupos de 4 bits representam 1 de 16 valores diferentes de acordo com a tabela

F111170111E111060110D110150101C110040100B101130011A10102001091001100018100000000

HexBinHexBin

© Luís Cruz - 2004 28

Conversão Hexadecimal-Binário

Conversão Binário <-> Hexadecimal ésemelhante à conversão Octal <-> Binário, sendo agora os bits agrupados em conjuntos de 4.

Exemplo Bin->Hex :

11011111bin = DFHex

Exemplo Hex->Bin :

CAFEHex =1100101011111110bin

Page 16: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

15

© Luís Cruz - 2004 29

Representações Numéricas – Inteiros com Sinal

Como representar o número (negativo) -21 num formato binário ?

Várias possibilidades...

1. Utilizar um bit adicional para representar o sinal, Sinal+Magnitude

2. Usar um método de representação diferente, por exemplo complemento de 2,

© Luís Cruz - 2004 30

Representações Numéricas – Inteiros com Sinal – Sinal + Magnitude

Usando um bit adicional para o sinal, a representação Sinal+Magnitude com n bits tem a forma

bsbn-2bn-3......b1b0

em que bs é o bit de sinal.

Um valor positivo é indicado por um bit de sinal bs igual a 0 e um valor negativo é representado por um bit de sinal bs igual a 1.

Page 17: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

16

© Luís Cruz - 2004 31

Representações Numéricas – Inteiros com Sinal – Sinal + Magnitude

Exemplos para representações com 8 bits

(positivo)00001010bin=10dec

(negativo)10001010bin=-10dec

(negativo !)10000000bin=-0dec

(positivo !)00000000bin=0dec

(positivo)01000000bin=64dec

(negativo)11000000bin=-64dec

© Luís Cruz - 2004 32

Representações Numéricas – Inteiros com Sinal – Sinal + Magnitude

Page 18: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

17

© Luís Cruz - 2004 33

Representações Numéricas – Inteiros com Sinal – Sinal + Magnitude

A representação sinal mais magnitude apresenta alguns problemas:

1. Existem duas representações para o zero, +0 e -0,2. Permite representar apenas (caso binário com n bits)

2n-1 valores distintos,3. É difícil executar adições de números representados

dessa forma.

© Luís Cruz - 2004 34

Representações Numéricas – Inteiros com Sinal – Complemento de 10

Para representação com n dígitos decimais, os números negativos são representados pelo complemento de 10 do número positivo correspondente. Esse complemento de 10é obtido subtraindo a 10n o número positivo correspondente.

Exemplo : A representação de “-2067” num sistema de complemento de 10 para 4 dígitos decimais é obtida subtraindo a 104 o número 2067, ou seja 10.000-2.067=7.933.

Page 19: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

18

© Luís Cruz - 2004 35

Representações Numéricas – Inteiros com Sinal – Complemento de 10

Não é necessário calcular explicitamente 10n-d pois:– 10n-d=((10n-1)-d)+1 ,– 10n-1 é um número com n noves,– (10n-1)-d obtém-se complementando cada um dos dígitos

de d (o complemento de 0 é 9, o de 1 é 8, o de 2 é 7, etc.),– somando 1 ao resultado anterior, ignorando qualquer

transporte para o dígito n+1, obtém-se 10n-d

Exemplo : Para “-2067” correspondendo a d=2067, o número (10n-1)-d é 7932 e somando 1 obtém-se 7933, tal como indicado anteriormente.

Exemplo : O negativo de “0000” obtém-se somando 1 a 9999, obtendo-se10000 e desprezando o dígito mais significativo, ou seja 1, obtemos 0000.

© Luís Cruz - 2004 36

Representações Numéricas – Inteiros com Sinal – Complemento de 2

Semelhante ao sistema Complemento de 10...

Representação de “-d” (com n bits) obtém-se:1.subtraindo d a 2n ou,2.complementando todos os bits de d (i.e. onde está 0

fica 1 e onde está 1 fica 0) e somando 1 ao resultado.

Exemplo : Para 4 bits, obter a representação em complemento de 2 de “-3”. A representação de 3 é 0011, de onde obtemos 1100 complementando os bits e após soma de 1 resulta 1101 que é a representação em complementos de 2 de “-3”.

Page 20: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

19

© Luís Cruz - 2004 37

Representações Numéricas – Inteiros com Sinal – Complemento de 2

Regra simplificada para obtenção da representação em complemento de 2:“Começando pelo bit menos significativo do número cujo negativo pretendemos determinar, copiar todos os bits até ao primeiro 1, copiando os restantes invertidos (onde estava 0 passa a 1 e vice-versa)”

Exemplo : Para determinar a representação com 8 bits de -44 partimos de 44dec=00101100bin. Copiando todos os bits desde o mais à direita até ao primeiro igual a 1 (incluído) vem XXXXX100, invertendo e copiando os restantes resulta 11010100. Ou seja -44dec= 11010100bin

© Luís Cruz - 2004 38

Representações Numéricas – Inteiros com Sinal – Complemento de 2

Page 21: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

20

© Luís Cruz - 2004 39

Representações Numéricas – Reais

Números reais podem ser representados em vários formatos:

1. Vírgula fixa : número de casa decimais é fixo

Exemplo : .1001001bin = (2-1+2-4+2-7)dec=0,5703125dec

2. Vírgula flutuante : representação do tipo mantissa x baseexpoente . Cada número é representado por um conjunto de bits para a mantissa, um bit para o sinal e um conjunto de bits para o expoente.

© Luís Cruz - 2004 40

Representações Numéricas – Vírgula Flutuante

Norma IEEE 754

Número = +/- mantissa x 2expoente-offset

s expoente mantissa

Dependendo do valor de s

Page 22: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

21

© Luís Cruz - 2004 41

Representações Numéricas – Vírgula Flutuante – IEEE 74

Normalização

O mesmo número real pode ter várias representações do tipo mantissa x baseexpoente. Para evitar este tipo de ambiguidade, usa-se uma representação normalizada.

No caso da norma IEEE 754, a normalização consiste em representar o número com uma mantissa tal que o primeiro bit a seguir (à direita) da vírgula é sempre 1 e que por isso não é necessário armazenar, poupando-se um bit.

© Luís Cruz - 2004 42

Representações Numéricas – Vírgula Flutuante – IEEE 754

Expoente

Os bits do campo expoente não representam exactamente o expoente mas um valor polarizado do expoente. Para obter o valor “verdadeiro” do expoente é necessário subtrair-lhe uma quantidade fixa, o offset que para a norma IEEE 754 e formato de precisão simples vale 127.

Page 23: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

22

© Luís Cruz - 2004 43

Representações Numéricas – Vírgula Flutuante – IEEE 754

Formatos suportados

1131516Quádrupla

53118Dupla

2484Simples

Bits Mantissa + SinalBits Expoente

BytesPrecisão

© Luís Cruz - 2004 44

Representações Numéricas – Vírgula Flutuante – IEEE 754

Gamas de Valores

33-361.2e49323.4e-4932Quádrupla

15-171.8e3082.2e-308Dupla

6-93.4e381.2e-38Simples

Dígitos Decimais Significativos

MáximoMinímoPrecisão

Page 24: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

23

© Luís Cruz - 2004 45

Representações Numéricas – Vírgula Flutuante – IEEE 754

Valores Especiais

100...000111...111?NaN

000...000111...111+/-Infinito000...000000...000+/-ZeroMantissaExpoenteSinalValor

© Luís Cruz - 2004 46

Representações Alfanuméricas –Código ASCII

Também os caracteres alfanuméricos (A,B,a,d,1,4) são representados internamente por conjuntos de bits.

O código ASCII (American Standard Code for InformationInterchange) estabelece a correspondência entre cadeias de 7 bits e um conjunto de caracteres que inclui todas as letras maíusculas e minusculas de a a z , o espaço em branco, todos os dígitos decimais, além de outros caracteres com significado especial (caracteres de controlo).

Page 25: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

24

© Luís Cruz - 2004 47

Representações Alfanuméricas –Código ASCII

Tabela ASCII

DELo_O?/USSI1111

~n^N>.RSSO1110....................................

qaQA1!DC1SOH0001

p`P@0SPDLENUL0000b3b2b1b0

111110101100011010001000

b6b5b4

NUL-Null, SOH-Start of Heading, SO-Shift Out, SI-Shift In, SP-Space, DEL-Delete

© Luís Cruz - 2004 48

Representações Alfanuméricas –Código ASCII

Código ASCII só permite representar 128 caracteres distintos.

Algumas extensões do código ASCII a 8 bits, permitiram extender a gama de representação a 256 caracteres.

Esta solução também não é satisfatória, pois não resolve, por exemplo, o problema da representação de textos escritos em línguas cujas escritas contem mais de 256 caracteres/pictogramas distintos.

Page 26: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

25

© Luís Cruz - 2004 49

Representações Alfanuméricas –Código Unicode

Solução

Código UNICODE que suporta até 32 bits.

32 bits permitem representar 4.294.967.296 caracteres diferentes !

Deve ser suficiente mesmo para a língua chinesa ☺

© Luís Cruz - 2004 50

Hardware e Software

O que é o “Hardware” ???

Componentes físicos que constituem um computadores; teclado, monitor, rato, CPU, circuitos de memória, etc.

E o “Software” ?

Todos os programas que se podem correr no hardware apropriado.

Page 27: Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004 6 Apresentação e Programa Programa Detalhado – Noções sobre linguagens de

26

© Luís Cruz - 2004 51

Tipos de Software

l Software de Gestão do Computador (Sistema de Operação) : Gere o funcionamento do computador, permitindo a utilização regrada dos seus recursos físicos. São exemplos o Linux e o Microsoft Windows.

l Software de aplicação : Todo e qualquer programa com uma função específica. Podem ser editores de texto, intérpretes Python, ou ainda programas desenvolvidos pelo utilizador.

© Luís Cruz - 2004 52

Interacção Hardware-Software