Prévia do material em texto
ECT1203 Linguagem de Programação 2012.2 Prof. Aquiles Burlamaqui Prof. Luciano Ferreira Prof. Luiz Eduardo Cunha Leite Prof. Marconi Câmara Rodrigues Aula 04 – Operadores e expressões Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Hora de silenciar o celular • Manter o celular sempre desligado/silencioso quando estiver em sala de aula • Nunca atender o celular em sala de aula Objetivo da aula Apresentar os seguintes conceitos na Linguagem C++: ▫ Operador de atribuição ▫ Operadores aritméticos ▫ Operadores relacionais e lógicos ▫ Operador * unário sobre ponteiros ▫ Conversão de tipos O operador de atribuição nome_da_variável = expressão; x = 2 + 4; variável operador de atribuição Uma atribuição é uma expressão cujo valor resultante corresponde ao valor atribuído. Atribuições múltiplas • O mesmo valor pode ser atribuído a muitas variáveis. • A ordem de avaliação é da direita para a esquerda. 1º ) z = 0 2º) y = 0 3º ) x = 0 x = y = z = 0; Conversão de tipos em atribuições • Quando se converte de: ▫ inteiros para caracteres ▫ inteiros longos para inteiros ▫ inteiros para inteiros curtos perde-se a informação contida nos bits mais significativos. • Quando se faz conversão envolvendo números em ponto flutuante, pode se perder precisão. Regra: O valor do lado direito de uma atribuição é convertido no tipo do lado esquerdo. Operadores aritméticos Operador Ação - Subtração, menos unário + Adição * Multiplicação / Divisão % Módulo da divisão As operações são feitas na precisão dos operandos. Incremento e decremento Operador Ação ++ Soma 1 ao seu operando -- Subtrai 1 ao seu operando Há uma diferença entre x++ e ++x quando usados em uma expressão. ++x; x = x + 1; é o mesmo que x--; x = x - 1; é o mesmo que Se mais de um operador estiver presente em uma expressão, qual deve ser avaliado primeiro? Precedência dos operadores aritméticos Mais alta ++ -- - (menos unário) * / % Mais baixa + - • Operadores do mesmo nível de precedência são avaliados da esquerda para a direita. • Parânteses podem ser usados para forçar uma (ou mais) operação a ter precedência maior. Operadores aritméticos de atribuição • Pode ser aplicado a todo operador binário. variável = variável operador expressão; variável operador= expressão; é o mesmo que i = i + 10; x = x * (y + 1); a = a – 120; i += 10; x *= y + 1; a -= 120; Operadores lógicos e relacionais • São baseados na idéia de verdadeiro e falso. ▫ VERDADEIRO = qualquer valor diferente de zero ▫ FALSO = zero • As expressões que usam operdores relacionais ou lógicos devolvem zero para falso e 1 para verdadeiro. Relacional refere-se às relações entre os valores. Lógico refere-se a como essas relações podem ser conectadas. Operadores lógicos e relacionais Operador Ação > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual != Diferente Operador Ação && AND || OR ! NOT Relacionais Lógicos Operadores lógicos • Operador AND = Resultará verdadeiro quando TODOS os operandos forem verdadeiros. • Operador OR = Será verdadeiro quando pelo menos UM operando for verdadeiro. • Operador NOT = Resultará verdadeiro quando seu operando for falso e falso quando seu operando for verdadeiro Operador AND Operador NOT Operador OR 0 && 0 = 0 ! 1 = 0 0 || 0 = 0 0 && 1 = 0 ! 0 = 1 0 || 1 = 1 1 && 0 = 0 1 || 0 = 1 1 && 1 = 1 1 || 1 = 1 Precedência dos operadores lógicos e relacionais • São menores em precedência que os operadores aritméticos. 10 > 1 + 12 10 > (1 + 12) é avaliado como Mais alta ! > >= < <= == != && Mais baixa || Operadores bit a bit • São aplicados aos bits individuais dos operandos. Operação bit a bit refere-se a testar, atribuir ou deslocar os bits de tipos de dados char e int. Operador Ação & AND | OR ^ XOR (OR exclusivo) ~ Complemento de um >> Deslocamento à esquerda << Deslocamento à direita Operador sizeof • Para calcular o tamanho de um tipo, deve-se usar parênteses. É um operador que retorna o tamanho (em bytes) de uma variável ou especificados de tipo. float f; cout << sizeof f << ‘\n’; cout << sizeof(int) << ‘\n’; Operador * Unário Sobre Ponteiros O operador * unário, quando aplicado a um ponteiro, resulta no valor armazenado na variável apontada pelo ponteiro em questão. int x = 3; //Atribui o valor 3 à variável x int * pt; //Declara pt como um ponteiro para int pt = & x; //Faz pt apontar para x (pt armazena o //endereço de x) cout << * pt //A expressão *pt resulta no valor da //variável apontada por pt (valor de x) 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. double float int char prioridade de conversão Conversão de tipos em expressões Cast (operador de molde) Cast é uma conversão explícita de tipo. (tipo) expressão int x = 13; float y = (float) x/2;