Atenção!
As aulas não cobrem toda a matéria! Há
que ler as folhas teóricas!
Aula 2
Conceitos básicos de programação
Variáveis
bool encontrado = false;
int número_de_alunos = 39;
float taxa_de_conversão
= 200.482f;
Tipo: booleano, ou seja,
só pode tomar
os valores
char caractere
= ‘A’;
falso e verdadeiro
Nome

Nomes de pedaços de memória

Interpretação dada pelo tipo
3
Introdução à Programação
Valor inicial
2003/2004
Memória do computador (I)
…
encontrado: bool
número_de_alunos: int
falso
Taxa_de_conversão:
float
39
caractere:
char
200,482
A
…
4
Introdução à Programação
2003/2004
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
5
Introdução à Programação
2003/2004
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
6
Introdução à Programação
2003/2004
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);
7
Introdução à Programação
2003/2004
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

8
Introdução à Programação
2003/2004
Manipulando inteiros não
negativos
1 + 15 = ?
0
0001
1111 +
10000
2 + 14 = ?
0
0010
1110 +
10000
9
Introdução à Programação
O bit mais
significativo não
cabe num inteiro
de 4 bits
2003/2004
Representação de inteiros não
negativos
10
Introdução à Programação
2003/2004
Inteiros com sinal
11

Qual o padrão de bits
mais adequado a
representar (-1)10?

(1111)2

E o (-2)10?

(1110)2
Introdução à Programação
2003/2004
Inteiros com sinal: quando parar?

12
Em (-8)10:

Aproximadamente
mesmo número de
positivos e negativos

Negativos identificados
pelo bit mais
significativo
Introdução à Programação
2003/2004
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


13
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
Introdução à Programação
2003/2004
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;
14
Introdução à Programação
65
66
A
B
2003/2004
Valores em vírgula flutuante

Tipo: float

Número de bits: 32
s0
1,
m-1
...
m-23
Sinal
Mantissa

15
e7
...
e0
Expoente
Valores: s  m  2e
Introdução à Programação
2003/2004
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)
Têm
versão
3.14f, 200.482F, ...
unsigned
float
32-bit IEEE 754
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
bool
1 byte = 8 bits
16
‘A’, ‘.’, ‘€’, ...
false e true
Introdução à Programação
2003/2004
Estrutura de
um 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

17
Introdução à Programação
2003/2004
Instruções

Uma instrução em C++ pode ser da forma
expressão;

Ocorrendo nesta




18
Operadores
Variáveis
Valores literais
...
Introdução à Programação
2003/2004
Operação de atribuição

Afecta o estado do programa: altera o valor de
uma variável
variável = expressão;

19
O estado do programa é definido pelo valor
das suas variáveis
Introdução à Programação
2003/2004
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;
20
Introdução à Programação
0
2003/2004
Operadores aritméticos (II)

% significa resto da divisão ou módulo:
int x = 15 % 6;
cout << x << endl;
21
Introdução à Programação
3
2003/2004
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
22
Introdução à Programação
2003/2004
Operadores relacionais e de
igualdade e diferença

Operadores relacionais:


Operador de igualdade:


23
==
Operador de diferença:


>, >=, <, <=
!=
O resultado é um bool
Introdução à Programação
2003/2004
Precedência e associatividade (I)

Regras comuns respeitadas:
cout << 1 + 5 * 3 << endl;
16
cout << 16 / 2 / 2 << endl;
4
24
Introdução à Programação
2003/2004
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;
25
00
Introdução à Programação
1.0 1
2003/2004
Operadores
especiais de atribuição

+=, -=, *=, /=, %=

Expressões do tipo
x = x + 10;

São abreviadas para
x += 10;
26
Introdução à Programação
2003/2004
Operadores de
incrementação e decrementação (I)

++ e -- prefixos e sufixos

Expressões do tipo
Preferível!
x = x + 1;

São abreviadas para
++x; // operador prefixo
ou
x++; // operador sufixo
27
Introdução à Programação
2003/2004
Operadores de
incrementação e decrementação (II)

Operador prefixo:
int i =
int j =
cout <<
<<

11
Operador sufixo
int i =
int j =
cout <<
<<
28
0;
++i;
i << ’ ’
j << endl;
0;
i++;
i << ’ ’
j << endl;
Introdução à Programação
10
2003/2004
Aula 2: Sumário













29
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
Introdução à Programação
2003/2004
Download

Aula 2 - iscte-iul