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 l11 valores
lAvaliada por exame e exame de recurso lMínimo : 5 valores
Componente Prática
l9 valores resultantes da avaliação contínua das aulas
© 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.
Programa
Programa Abreviado
l Noções gerais sobre computadores digitais
l Noções sobre linguagens de programação
l Linguagem de programação Python
3
© Luís Cruz - 2004 5
Apresentação e Programa
Programa Detalhado
– Noções gerais sobre computadores digitais
l Modelo de von Neumann
l Modelo de computador digital moderno
l 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ção
l Linguagem máquina l 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 Python
l Tipos básicos de dados l Estruturas de controlo de fluxo l Estruturas de dados avançadas l Funções e Módulos
© 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
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 Neumann
consistindo em :
l
Unidade de controlo : comanda todas as acções
lUnidade aritmética e lógica : responsável pela
execução de operações aritméticas e lógicas J
l
Memória : para armazenamento de resultados
intermédios e finais,
l
Dispositivos de entrada/saída : monitores, discos,
teclados, etc.
© Luís Cruz - 2004 10
© Luís Cruz - 2004 11
CPU
Computadores modernos concentram a AL e
U-CON num só componente : o CPU (Central
Processing Unit).
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
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áriosos 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ção
Bits, Bytes e Co
Bits são unidades de informação que podem ter apenas dois
valores possíveis : 0e1.
Bytes são conjuntos de 8 bits. Kilobyte (KB) : 210=1.024 bytes.
Megabyte (MB) : 220=1.048.576 bytes.
© Luís Cruz - 2004 15
Representação Digital de Informação
Bits
Justapondo n bits obtemos unidades de representação com
2nvalores possíveis.
Exemplo : Juntando 3 bits temos os seguintes 8 valores
possíveis: 000 001 010 011 100 101 110 111 LAdSC1
Representações Binárias - Exemplos
Números Inteiros sem Sinal - Código Natural
63 111111 62 111110 ... ... 3 000011 2 000010 1 000001 0 000000 Inteiro Biná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
© Luís Cruz - 2004 17
Representações Binárias - Exemplos
Caracteres Alfanuméricos – Código ASCII
... ... ‘{‘ 1111011 ... ... ´f´ 1100110 ... ... ‘B’ 1000010 ‘A’ 1000001 Caracter Binário (7 bits)
Representações Numéricas - Inteiros
Notação Posicional – Base b O “número” dn-1dn-2dn-3...d2d1d0
em que os dipodem assumir valores de 0 a b-1
representa o valor numérico
dn-1•bn-1+ d
10
© Luís Cruz - 2004 19
Representações Numéricas - Inteiros
Exemplo em binário (base 2)
O número binário100101
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+ d n-2•2n-2+ dn-3•2n-3+...+ d2•22+ d1•21+ d0 é igual a (dn-1•2n-2+ d n-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.
© Luís Cruz - 2004 21
Representações Numéricas - Inteiros
Exemplo de conversão de decimal para binário natural
37
decimal= ???
binário 1 (bit 5) resto 0 = 2 : 1 0 (bit 4) resto 1 = 2 : 2 0 (bit 3) resto 2 = 2 : 4 1 (bit 2) resto 4 = 2 : 9 0 (bit 1) resto 9 = 2 : 18 1 (bit 0) resto 18 = 2 : 37 37decimal= 100101binário Exemplo: Subtrair 00011 a 11001 Exemplo: Somar 10011 e 00110Aritmé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 11001 00011 -10110
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 0101 x 1011 1011 + 110111 © Luís Cruz - 2004 24
Aritmética Binária
A 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 1011 101 00111 101 -0101 101 -000
© 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
7 111 3 011 6 110 2 010 5 101 1 001 4 100 0 000 Oct Bin Oct Bin
Conversão Octal – Binário
Conversã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).
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
F 1111 7 0111 E 1110 6 0110 D 1101 5 0101 C 1100 4 0100 B 1011 3 0011 A 1010 2 0010 9 1001 1 0001 8 1000 0 0000 Hex Bin Hex Bin © 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 :
11011111
bin= DF
HexExemplo Hex->Bin :
© 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,
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
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
© 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.
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 10no 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
18
© Luís Cruz - 2004 35
Representações Numéricas – Inteiros com
Sinal – Complemento de 10
Não é necessário calcular explicitamente 10
n-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 emcomplemento 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”.
© 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
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 2
expoente-offsets expoente mantissa
© 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.
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
113 15 16 Quádrupla 53 11 8 Dupla 24 8 4 SimplesBits Mantissa + Sinal Bits
Expoente Bytes
Precisão
© Luís Cruz - 2004 44
Representações Numéricas – Vírgula
Flutuante – IEEE 754
Gamas de Valores
33-36 1.2e4932 3.4e-4932 Quádrupla 15-17 1.8e308 2.2e-308 Dupla 6-9 3.4e38 1.2e-38 Simples Dígitos Decimais Significativos Máximo Minímo Precisão© Luís Cruz - 2004 45
Representações Numéricas – Vírgula
Flutuante – IEEE 754
Valores Especiais
100...000 111...111 ? NaN 000...000 111...111 +/-Infinito 000...000 000...000 +/-Zero Mantissa Expoente Sinal ValorRepresentaçõ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 Information Interchange) 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
DEL o _ O ? / US SI 1111 ~ n ^ N > . RS SO 1110 .... .... .... .... .... .... .... .... .... q a Q A 1 ! DC1 SOH 0001 p ` P @ 0 SP DLE NUL 0000 b3b2b1b0 111 110 101 100 011 010 001 000 b6b5b4NUL-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.
© 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 J
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