atenção! as aulas não cobrem toda a matéria! há que ler as folhas teóricas!
TRANSCRIPT
![Page 1: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/1.jpg)
Atenção!
As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!
![Page 2: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/2.jpg)
Aula 2
Conceitos básicos de programação
![Page 3: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/3.jpg)
2003/2004Introdução à Programação3
Variáveis
bool encontrado = false;
int número_de_alunos = 39;float taxa_de_conversão = 200.482f;char caractere = ‘A’;
Nomes de pedaços de memória
Interpretação dada pelo tipo
Tipo: booleano, ou seja, só pode tomar os valores falso e verdadeiro
Nome Valor inicial
![Page 4: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/4.jpg)
2003/2004Introdução à Programação4
Memória do computador (I)
encontrado: bool
falso
…
…
número_de_alunos: int
39Taxa_de_conversão: float
200,482caractere: char
A
![Page 5: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/5.jpg)
2003/2004Introdução à Programação5
Memória do computador (II)
Uma sequência de bits
768 Mbyte =805 306 368 byte =6 442 450 944 bit
Aproximadamente 1 bit por habitante da Terra
![Page 6: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/6.jpg)
2003/2004Introdução à Programação6
Caracteres
Tipo: char Número de bits: 8 Número de padrões: 28 = 256 Código: e.g. ISO-Latin-9 (ISO-8859-15)
‘A’ ..... 0100 0001 ‘a’ ..... 0110 0001 ‘0’ ..... 0011 0000
![Page 7: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/7.jpg)
2003/2004Introdução à Programação7
Interpretação dos caracteres
‘A’ ..... (0100 0001)2 = (65)10
‘a’ ..... (0110 0001)2 = (97)10
‘0’ ..... (0011 0000)2 = (48)10
char caractere = ‘A’
char caractere = char(65);
![Page 8: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/8.jpg)
2003/2004Introdução à Programação8
Inteiros
Tipo: int Número de bits: 32 (normalmente)
Para simplificar, vamos assumir que têm apenas 4 bits
Número de valores diferentes: 24 = 16 Se não representarem valores negativos:
0 a 24-1
![Page 9: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/9.jpg)
2003/2004Introdução à Programação9
Manipulando inteiros não negativos
1 + 15 = ?
0001 1111 + 10000
2 + 14 = ?
0010 1110 + 10000
0
0
O bit mais significativo não cabe num inteiro de 4 bits
![Page 10: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/10.jpg)
2003/2004Introdução à Programação10
Representação de inteiros não negativos
![Page 11: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/11.jpg)
2003/2004Introdução à Programação11
Inteiros com sinal
Qual o padrão de bits
mais adequado a
representar (-1)10?
(1111)2
E o (-2)10?
(1110)2
![Page 12: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/12.jpg)
2003/2004Introdução à Programação12
Inteiros com sinal: quando parar?
Em (-8)10:
Aproximadamente
mesmo número de
positivos e negativos
Negativos identificados
pelo bit mais
significativo
![Page 13: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/13.jpg)
2003/2004Introdução à Programação13
Representação de inteiros em complemento para dois
Gama de valores representáveis com 4 bits:-8 a 7
Representação binária de -5:
10000 0101 - 1011
Gama de valores representáveis com n bits:-2n-1 a 2n-1-1
Gama de valores representáveis com 32 bits:-2 147 483 648 a 2 147 483 647
![Page 14: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/14.jpg)
2003/2004Introdução à Programação14
Caracteres como inteiros
‘A’ ..... (0100 0001)2 = (65)10
char caractere = 'A';int código = int(caractere);cout << código << endl;
char caractere = 'A'; int código = int(caractere) + 1; cout << código << endl;
char caractere = 'A'; cout << caractere << endl; ++caractere; cout << caractere << endl;
65
66
AB
![Page 15: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/15.jpg)
2003/2004Introdução à Programação15
Valores em vírgula flutuante
Tipo: float Número de bits: 32
Valores: s m 2e
s0 m-1 ... m-23 e7 ... e01,
SinalMantissa Expoente
![Page 16: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/16.jpg)
2003/2004Introdução à Programação16
Tipos básicos
Tipo Tamanho/Formato típico Valores literais
(números inteiros)
short 16 bits/complemento para dois
int 32 bits/complemento para dois 176, ...
long 64 bits/complemento para dois 8374L, ...
(números decimais)
float 32-bit IEEE 754 3.14f, 200.482F, ...
double 64-bit IEEE 754 18.0, 1.8e1, 18.0, ...
long double
96-bit IEEE 754 18.0L, 1.8e1L, 18.0L, ...
(outros tipos)
char 8 bits ‘A’, ‘.’, ‘€’, ...
bool 1 byte = 8 bits false e true
Têm versão unsignedTêm versão unsignedTêm versão unsignedTêm versão unsigned
![Page 17: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/17.jpg)
2003/2004Introdução à Programação17
Estrutura deum programa em C++
// Inclusão de ficheiros de interface de bibliotecas e módulos (a // explicar mais tarde): #include <iostream>
// Directiva de utilização do espaço nominativo std (a explicar mais // tarde): using namespace std;
int main() { ... // Aqui é onde se escreve o programa. }
Todas as frases precedidas de // ou entre /* e */ são comentários, sendo ignoradas pelo compilador
![Page 18: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/18.jpg)
2003/2004Introdução à Programação18
Instruções
Uma instrução em C++ pode ser da forma
expressão;
Ocorrendo nesta Operadores Variáveis Valores literais ...
![Page 19: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/19.jpg)
2003/2004Introdução à Programação19
Operação de atribuição
Afecta o estado do programa: altera o valor de uma variável
variável = expressão;
O estado do programa é definido pelo valor das suas variáveis
![Page 20: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/20.jpg)
2003/2004Introdução à Programação20
Operadores aritméticos (I)
+, -, *, / e %
A divisão (/) é a divisão inteira se os seus operandos forem inteiros
int x = 1 / 2;cout << x << endl;
0
![Page 21: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/21.jpg)
2003/2004Introdução à Programação21
Operadores aritméticos (II)
% significa resto da divisão ou módulo:
int x = 15 % 6;cout << x << endl;
3
![Page 22: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/22.jpg)
2003/2004Introdução à Programação22
Operadores aritméticos (III)
Se os operandos forem de tipos diferentes, o operando de um tipo menos potente é convertido para o tipo mais potente antes do cálculo:
cout << 1.5 + 1 << endl;
2.5
![Page 23: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/23.jpg)
2003/2004Introdução à Programação23
Operadores relacionais e deigualdade e diferença
Operadores relacionais: >, >=, <, <=
Operador de igualdade: ==
Operador de diferença: !=
O resultado é um bool
![Page 24: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/24.jpg)
2003/2004Introdução à Programação24
Precedência e associatividade (I)
Regras comuns respeitadas:
cout << 1 + 5 * 3 << endl;
cout << 16 / 2 / 2 << endl;
16
4
![Page 25: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/25.jpg)
2003/2004Introdução à Programação25
Precedência e associatividade (II)
Excepção: atribuição
int i = 1, j = 2;i = j = 0;cout << i << ‘ ‘ << j << endl;
Valor da atribuição é o valor da variável atribuída
int x = 0; double f = 0.0; f = x = 1.3;cout << f << ‘ ‘ << x << endl;
0 0
1.0 1
![Page 26: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/26.jpg)
2003/2004Introdução à Programação26
Operadoresespeciais de atribuição
+=, -=, *=, /=, %=
Expressões do tipo
x = x + 10;
São abreviadas para
x += 10;
![Page 27: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/27.jpg)
2003/2004Introdução à Programação27
Operadores deincrementação e decrementação (I)
++ e -- prefixos e sufixos
Expressões do tipo
x = x + 1;
São abreviadas para
++x; // operador prefixo
ou
x++; // operador sufixo
Preferível!
![Page 28: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/28.jpg)
2003/2004Introdução à Programação28
Operadores deincrementação e decrementação (II)
Operador prefixo:
int i = 0;int j = ++i;cout << i << ’ ’ << j << endl;
Operador sufixo
int i = 0;int j = i++;cout << i << ’ ’ << j << endl;
1 1
1 0
![Page 29: Atenção! As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc11a497959413d8c96a4/html5/thumbnails/29.jpg)
2003/2004Introdução à Programação29
Aula 2: Sumário
Conceito de memória Variáveis como forma estruturada de usar a memória Tipos básicos em C++ Noções sobre a representação física dos tipos Noções de representação de inteiros em complemento para dois Noções de representação de valores em vírgula flutuante Noções sobre códigos de caracteres Interpretação de valores do tipo char como inteiros Valores literais Computadores como máquinas finitas Expressões e operações Precedência e associatividade Operação de atribuição: alteração do estado da memória