Vous êtes sur la page 1sur 39

ECT2303 - Linguagem de Programação

Variáveis, Operadores e Expressões

Diego R. C. Silva
diego@ect.ufrn.br

20 de fevereiro de 2019

ECT2303 - Aula 03 1
Objetivos

Nesta aula aprenderemos a:


I Utilizar corretamente os diferentes tipos de dados de C++.
I Utilizar corretamente os diferentes operadores da
linguagem (aritméticos, relacionais, lógicos e bit a bit).
I Utilizar os objetos de entrada e saída de informações.

ECT2303 - Aula 03 2
Variáveis

Uma variável representa um espaço de memória através de


um nome para guardar uma determinada informação.
I Para evitar que o programador trabalhe diretamente com
endereços de memória, o compilador cria uma tabela com
os endereços de memória e os nomes:
Endereço de memória Nomes
0x7fff5ad50713 idade
0x7fff54679726 peso
0x7fff566c4701 altura

ECT2303 - Aula 03 3
Variáveis

I Endereço de memória: Compilador e sistema operacional


decidem qual endereço da memória será utilizado.
I Informação (tipos básicos de dados): O compilador
precisa ser informado sobre qual o tipo de informação que
será armazenado na memória.
I Nome (identificador): Regras para os nomes das variáveis.

I Podem ser usadas: letras maiúsculas ou minúsculas (a-z,


A-Z), dígitos numéricos (0-9) ou símbolo de sublinhado ( _
).
I O identificador não pode começar com um dígito numérico.
I Não pode utilizar palavras reservadas de C++ (e.g., while,
for, etc).

ECT2303 - Aula 03 4
Endereço de Memória (Curiosidade)

int main(){
int v =5;
// Imprimir endereço de memória
cout<<&v<<endl;
return 0;
}

ECT2303 - Aula 03 5
Tipos básicos de dados

I char: representa um número inteiro que está associado a


um determinado caractere
I int: representa um número inteiro
I bool: representa um valor boolenao (verdadeiro ou falso)
I float: representa um número real com precisão simples
I double: representa um número real com precisão dupla

O compilador precisa de saber os tipos de dados porque


informações diferentes necessitam de espaço de memória
diferentes, além de serem organizados de forma diferente na
memória.

ECT2303 - Aula 03 6
Declaração e atribuição

int i; // Uma variável


int j, k ; // Várias variáveis.
char c;
double pi = 3.14159265359; // inicialização

// Atribuição
c = ’a’;
i = 3;

ECT2303 - Aula 03 7
Tamanho dos Tipos de Variáveis em C++

Tipo Bytes Escala


bool 1 true e false (ou 0 e 1)
char 1 −128 a 127
int 4 -2147483648 a 2147483647 (approx ± 2 bilhões)
float 4 ±3, 4 e−38 a ±3, 4 e38
double 8 ±1, 7 e−308 a ±1, 7 e308

ECT2303 - Aula 03 8
Modificadores dos tipos básicos

I unsigned: determina que só números sem sinal podem ser


armazenados.
I long: permite armazenar números maiores.
Tipo Bytes Escala
unsigned char 1 0 até 255
long int 8 - 9,223 e15 até 9,223 e15
long double 10 ±3, 4 e−4932 a ±3, 4 e4932

ECT2303 - Aula 03 9
Constantes

const float gravidade = 9.8;

I Variáveis do tipo const não podem ser modificadas!


I É muito usado para garantir que o valor do parâmetro não
seja modificado.

ECT2303 - Aula 03 10
Operadores e Expressões

I Segundo o padrão de C++ uma expressão é uma


sequência de operadores e operandos que especifica uma
computação.
I Exemplos de expressões:
I 42
I 1+1
I 1 + (x ∗ 3)%4 == x + + + 6
I Como uma expressão vai ser avaliada?

ECT2303 - Aula 03 11
Operadores

Operadores tem como finalidade transformar uma informação


em uma nova informação
I Operadores matemáticos
I Operador de atribuição
I Operadores de incremento/decremento
I Operadores lógicos e relacionais
I Operadores bit a bit
I Operador sizeof

ECT2303 - Aula 03 12
Operadores aritméticos

I −: Subtração
I +: Adição
I ∗: Multiplicação
I /: Divisão
I %: Módulo da divisão
I ++: incremento
I −−: deceremento

ECT2303 - Aula 03 13
Precedência de Operadores Aritméticos

Operador(es) Ordem de avaliação (precedência)


( ) Avaliados antes dos demais operadores
++ – Avaliados após os parênteses
* / % Avaliados em seguida
+ - Avaliados por último

I Os operandos de % devem ser valores inteiros.


I Exemplos:
I 2+3∗4
I 2∗3+4
I (2 + 3) ∗ 4

ECT2303 - Aula 03 14
Operadores Aritméticos

I Quando uma expressão possui várias operações com a


mesma precedência/prioridade elas são
avaliadas/realizadas da esquerda para a direita.
I Dizemos que esses operadores são associativos à
esquerda.
I 2 ∗ 9/2 ∗ 9
I 1−2−3+4
I 1 + 4%2 ∗ 3
I (2 − (3 + 4)) ∗ 5

ECT2303 - Aula 03 15
Operador de atribuição =

I Uma expressão da forma x = v atribui o valor v a x, que


deve ser uma variável
I Exemplo:
int x = 1, y = 2, z = 3;

x = y = z = 4;
I Qual o valor de x, y e z?

ECT2303 - Aula 03 16
Operadores Aritméticos de Atribuição

I C++ possui os operadores aritméticos de atribuição += -=


*= /= %=
I De modo geral, var += exp equivale a var = var + exp
I Exemplo:
int x = 1, y = 2, z = 3;

x += y += z;
x *= y += 3;
x += 5 += 7;

ECT2303 - Aula 03 17
Exercício: Últimos Dígitos

I Dado um número inteiro n, imprima os três últimos dígitos


de n separados por dois espaços.
I Exemplos:
n = 1234
2 3 4
n = 56
0 5 6

ECT2303 - Aula 03 18
Operadores de Incremento e Decremento

I A linguagem C++ possui o operador de incremento ++ e o


de decremento --
I De modo geral, a expressão var = var + 1 é equivalente
à expressão var++
I Os operadores de incremento e decremento podem ser
pré ou pós-fixados
I Exemplo:
01 int x, y, z;
02
03 x = 2;
04 y = x++;
05 z = ++x;
06 x = --y;

ECT2303 - Aula 03 19
Operadores de Incremento e Decremento

I Os operadores de incremento e decremento possuem


prioridade maior do que o operador de multiplicação:
01 x = 4;
02 y = x++*3;
03 z = ++x*3;
I Os operadores pós-fixados possuem maior prioridade do
que os pré-fixados:
01 x = 1;
02 y = 2;
03 z = x+++y;

ECT2303 - Aula 03 20
Operadores Relacionais e de Comparação

I Operadores
I > maior
I >= maior ou igual
I < menor
I <= menor ou igual
I == igual
I != diferente
I O resultado das operações envolvendo esses operadores
será 1 (verdadeiro) ou 0 (falso):
I x == y == z

ECT2303 - Aula 03 21
Operadores Relacionais e de Comparação

I Os operadores != e == possuem menor precedência do


que os outros operadores relacionais e de comparação:
I 3 > 4 == 4 < 3
I Todos os operadores relacionais e de comparação são
associativos à esquerda.
I Os operadores relacionais e de comparação possuem
prioridade maior do que o operador de atribuição e menor
do que os operadores aritméticos:
I x = 3+4 > 5∗6

ECT2303 - Aula 03 22
Operadores Lógicos

I C++ oferece três operadores lógicos:


I && E lógico
I || OU lógico
I ! NÃO lógico
I Os operadores && e || fazem avaliação de curto-circuito:
I i >= 0 && vetor [i] > 10

ECT2303 - Aula 03 23
Operadores Lógicos

I O operador lógico ! possui uma prioridade alta, igual a do


operador de incremento pré-fixado.
I O operador || possui prioridade menor do que o &&, e
ambos possuem prioridade menor do que os operadores
relacionais e de comparação:
I x > 3 && y > 4
I x > 3 && y > 4 || z > 5

ECT2303 - Aula 03 24
Associatividade e Precedência

I É importante saber como uma expressão vai ser avaliada.


I Quando em dúvida sobre a precedência ou a
associatividade de um operador, ou para facilitar a leitura
do código, utilize parênteses:
1 + ((2 * 3) % 4)

ECT2303 - Aula 03 25
Operadores lógicos e relacionais

O tipo bool:

int main(){
bool b = true;
cout<<b<<endl; // 1
b=false;
cout<<b<<endl; //0
return 0;
}

I Verdadeiro: qualquer valor diferente de zero


I Falso: zero.

ECT2303 - Aula 03 26
Teste!

O que será impresso pelo programa ?

int main(){
bool a=true,b=false,c=false,d=true;

cout<<(!a || (!b && d && !c))<<endl;


cout<<!(a || b || c)<<endl;
cout<<(a && b && c && d) <<endl;
cout<<!(a|| b )<<endl;
return 0;
}

ECT2303 - Aula 03 27
Operadores bit a bit

Operação bit a bit refere-se a testar, atribuir ou deslocar os bits


de tipos de dados char e int.

ECT2303 - Aula 03 28
Teste

O que será impresso pelo programa ?

int main(){
unsigned int x = 5;
unsigned int y = 7;

cout<<(x<<1)<<endl;
cout<<(x<<2)<<endl;
cout<<(x>>1)<<endl;
cout<<(x & y)<<endl;
cout<<(x ^ y)<<endl;
cout<<(x | y)<<endl;

return 0;
}

ECT2303 - Aula 03 29
Conversão de tipos em expressões

Quando operandos de tipos diferentes são misturados em uma


expressão, os valores são convertidos no tipo do maior
operando.

ECT2303 - Aula 03 30
Conversão de tipos em expressões

O que será impresso pelo programa ?

int main()
{
int x = 3.2 ;
cout << x << endl;
cout << 3 / 2 << endl;
cout << 2.5 + 1 / 2 << endl;
cout << 3 + 1.0 / 2 << endl;

return 0;
}

ECT2303 - Aula 03 31
Cast (operador de molde)

Cast é uma conversão explícita de tipo.


int x = 13;
float y = (float) x/2;
// Outra alternativa
float w = x/2.0;

O que será impresso pelo programa?


int main()
{
float f = 3.1416;
int x = 2;
cout << 3/2 <<endl;
cout << 3/(float) x <<endl;
cout << (int) f <<endl;
return 0;
}

ECT2303 - Aula 03 32
Operador sizeof

É um operador que retorna o tamanho (em bytes) de uma


variável (o tipo).
int main()
{
char c;
int i;
long l ;
double d;
float f;
cout<< sizeof(c)<<endl; // 1
cout<< sizeof(i)<<endl; // 4
cout<< sizeof(l)<<endl; // 8
cout<< sizeof(d)<<endl; // 8
cout<< sizeof(f)<<endl; // 4
cout<< sizeof(int)<<endl; // 4
return 0;
}

ECT2303 - Aula 03 33
Exercício

O que será impresso pelo programa ?

int main(){
int x=1, y=10;
bool b = true;
double d = 3 ;

cout<< 5 % ++ x << endl;


cout<< 45 / y + 2.0 << endl;
cout<< x++ * 5 << endl;
cout<< d / 2 << endl;
cout<< (!b && (x>3)) << endl;
cout<< (int) d / 2 << endl;
return 0;
}

ECT2303 - Aula 03 34
Entrada e saída em C++

I E/S são efetuados por objetos da biblioteca padrão.


I É necessário incluir o protótipo das funções e utilizar o
namespace std:
#include <iostream>

using namespace std;

ECT2303 - Aula 03 35
Objeto cout

I Possibilita a saída de valores (constantes, variáveis, etc.)


para o usuário.
I Usado normalmente com o operador de inserção <<:
cout << "Primeiro programa!";
cout << "O valor de X é: " << x;

ECT2303 - Aula 03 36
Objeto cin

I Permite ler valores do teclado e armazená-los em


variáveis do programa.
I Usado normalmente com o operador de extração >>:
cin >> x;
cin >> a >> b >> c;

ECT2303 - Aula 03 37
Exercício: Ano Bissexto

I Um ano é bissexto se for divisível por 4, mas não por 100.


Um ano também é bissexto se for divisível por 400.
I Escreva um programa que lê um ano e diz se ele é
bissexto ou não.

ECT2303 - Aula 03 38
Referências/Exercícios

I Capítulo 1 do livro C++ como programar, de Deitel e Deitel.

ECT2303 - Aula 03 39

Vous aimerez peut-être aussi