Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004...
Transcript of Docentes - Universidade de Coimbra · l Linguagem máquina l Linguagens assembly ©LuísCruz -2004...
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
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
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
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.
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
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 !
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
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)
Slide 15
LAdSC1 Mostrar como contar as combinações.
Dar mais um exemplo para caso de 8 bits.Luis Cruz; 21-09-2004
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
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.
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
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
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
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
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.
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
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.
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”.
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
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
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.
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
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).
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.
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.
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