aula 4 – expressões e operadores cleverton...
TRANSCRIPT
Expressões
3
} Operador é uma função que atua sobre operandos para produzir algum resultado
} Avaliação é o cálculo da expressão para produzir um valor } O resultado de uma expressão pode ser utilizado nas
seguintes situações: } Atribuição de valores à variáveis;
¨ Neste caso, o valor armazenado na variável é atualizado, recebendo o valor resultante da avaliação da expressão.
} Utilizado em uma instrução de avaliação;
Uma expressão é composta por variáveis, constantes, ou qualquer combinação válida de variáveis, constantes ou operadores e que retorne um resultado após a sua avaliação.
Exemplo de Expressões
4
} Tendo a expressão 1+5, podemos analisar seus elementos da seguinte forma: } Um operador (+) que representa uma soma; } Duas constantes/literais (1,5) que representam números
inteiros } O resultado da expressão é a constante 6;
} Exemplo de aplicação de expressões: int m = 1 + 5 int a = m - 2 Console.WriteLine(a + 2)
Operadores
5
} Os operadores podem ser entendidos como funções que são aplicadas à valores(expressões);
} Os valores utilizados em conjunto com os operadores são conhecidos como operandos;
} Os operadores podem ter associados a uma determinada quantidade de operandos: } Operadores unários: Possuem apenas um operando;
} -5, -6 e -1.
} Operadores binários: Possuem dois operandos. } 5 + 2, 6 + 7, - 5 - 7
Classificação dos Operadores
6
} Os operadores podem ser classificados através do tipo de dados dos seus operandos: } Aritméticos: São utilizados em expressões aritméticas, logo
seus resultados são números; } Relacionais e lógicos: São utilizados em expressões lógicas,
logo seus resultados são valores lógicos; } String: São utilizadas em expressões entre strings, logo seus
resultados são valores de caracteres;
Operadores Aritméticos
7
Oper. Tipo significado exemplos + binário adição 2 + 3 - binário subtração 6 - 1, x - a - 2
* binário multiplicação 7 * 3, num * 2 / binário divisão 15 / 3, (4 + 4) / 2 % binário resto inteiro da divisão 6 % 2 é igual a 0 9 % 4 é igual a 1 - unário inversão de sinal -4, -2.5
Linearização de Expressões
9
} Nos algoritmos nos trabalhamos as expressões na forma linear;
} Não podemos escrever ao invés disso escrevemos 5/3 ;
} Os parêntesis são utilizados para priorizar a resolução das expressões;
} A função Math.Pow() representa a potenciação } Outros exemplos:
} = 5*Math.Pow(x,3) + 7* Math.Pow(x,2) + 3*x – 1
} = (5 + 2) / 3
35
1375 23 −++ xxx
€
5 + 23
Precedência dos Operadores
11
} Precedência diz respeito à ordem em que os operadores em uma expressão serão avaliados: } Ou seja, o que eu devo fazer antes??? Uma subtração ou uma divisão????
} Devemos começar avaliando uma expressão da esquerda para a direita, sempre procurando resolver primeiro: } As subexpressões com parênteses mais internos; } As subexpressões com operadores de precedência mais alta.
} Para forçar a avaliação de uma expressão que tem uma precedência menor, utilizamos os parênteses “( )”: } Parênteses indicam quais subexpressões, dentro de uma expressão, serão
avaliadas primeiro.
Precedência dos Operadores Aritméticos
12
Operador Precedência - (unário) 3 (maior) * / % 2 + - (binário) 1 (menor)
Avaliação de Expressões
13
Sistematizando o processo de avaliação de expressões, temos: 1. Avaliar os parênteses mais internos da expressão
1. Caso não existam passe para o próximo passo 2. Caso exista avalie cada subexpressão a partir do passo 1
2. Observar a precedência (prioridade) dos operadores } Em caso de empate, considera-se a avaliação da expressão da esquerda
para a direita
3. A ordem de avaliação entre os quatro grupos de operadores é: 1. Aritméticos 2. Strings 3. Relacionais 4. Lógicos
Exemplos
14
} Resolva as expressões aritméticas abaixo a) 2 * 3 + 4 b) 2 * (3 + 4) c) (2 * (3 + 4) + 1) d) (1 - 4) * 3/6 – Math.Pow(3,2) e) 5 + 9 + 7 + 8/4 f) 1 - 4 * 3/6 - Math.Pow(3,2)
Exemplos - Resolução
15
a) 2 * 3 + 4 6 + 4
10 b) 2 * (3 + 4)
2 * 7 14
c) (2 * (3 + 4) + 1) (2 * 7 + 1) 2 * 7 + 1 14 + 1 15
Exemplos - Resolução
16
d) (1 - 4) * 3/6 - Math.Pow(3,2) -3 * 3/6 - Math.Pow(3,2)
-3 * 3/6 - 9 -9/6 - 9 -1,5 - 9 -10,5
e) 5 + 9 + 7 + 8/4 5 + 9 + 7 + 2 23
Expressões String
18
} Operandos são do tipo string (“texto”); } Possuem um operador (+):
} Operador de concatenação; } Utilizado para unir (concatenar) seqüências de texto; } O tamanho da string resultante é igual a soma do tamanho de
cada string operada.
} Exemplos: } “a” + “b” resulta em: ab } “sonha” + “dor” resulta em “sonhador” } “a” + 1 resulta em “a1”
Expressões Lógicas
19
} Composta de operadores são relacionais ou lógicos;
} Operandos podem ser de qualquer tipo, desde que usem os operadores lógicos;
} Resultado é um valor lógico – true ou false.
Operadores Relacionais
20
l Utilizados para se fazer comparações entre expressões numéricas, string ou lógicas
operador tipo significado exemplo == binário igual 3 = 3, x = y > binário maior que 5 > 4, (y + z) > 8 < binário menor que 3 < 6, num < 12 >= binário maior ou igual a 5 >= 56, (a * b) >= 10 <= binário menor ou igual a 3 <= 9, a + c >= 1 != binário diferente de 8 != 9, a != b
Operadores Relacionais
21
} Exemplos: a) 2 * 4 == 24 / 3 b) 15 % 4 < 19 % 6 c) 3 * 5 - 4 <= Math.Pow(3,2) / 2 d) 2 + 8 % 7 >= 3 * 6 – 15
l Precedência: l Todos os operadores relacionais possuem a mesma
precedência entre si. l Possuem precedência maior que os operadores aritméticos,
portanto deve-se resolver os aritméticos primeiro
Operadores Lógicos
22
} Correspondem aos operadores básicos da lógica. Valor do resultado é sempre verdadeiro ou falso
operador tipo significado || binário disjunção && binário conjunção ^ binário disjunção exclusiva (XOR) ! unário negação
Tabela Verdade dos Operadores Lógicos
23
} É uma tabela que representa todas as possíveis combinações para um determinado conjunto de variáveis e que apresenta o resultado para expressões com estas variáveis.
} O número de linhas da tabela é definido em relação ao número de variáveis. } 2n Em que n representa o número de variáveis.
} Exemplo: } 22 é igual a 4.
A B V F F V V V F F
Tabela Verdade dos Operadores Lógicos
24
} Disjunção (||) – Valor verdade é falso somente se os resultado dos dois operandos for falso.
A B A || B V F V F V V V V V F F F
Exemplo – Disjunção (||)
25
1. A baleia é um mamífero ou O gato é um felino 2. A baleia é um mamífero ou O macaco é um peixe 3. (1 > 3) || ((10 > 1) || (5 != 5))
Exemplo – Disjunção (||)
26
1. A baleia é um mamífero ou O gato é um felino V ou V resultado: V
2. A baleia é um mamífero ou O macaco é um peixe V ou F resultado: V
(no ou, apenas uma das afirmações precisa ser verdadeira para o resultado ser verdadeiro)
3. (1 > 3) || ((10 > 1) || (5 != 5)) T || F F || T
resultado: T
Tabela Verdade da Conjunção (&&)
27
} Conjunção (&&) – Valor verdade é verdadeiro somente se o resultado de ambos os operandos forem verdadeiros.
A B A && B V F F F V F V V V F F F
Exemplo - Conjunção (&&)
28
1. A baleia é um mamífero e O gato é um felino 2. A baleia é um mamífero e O macaco é um peixe 3. 1 > 3 && (10 > 1 && 5 != 5)
Exemplo - Conjunção (&&)
29
1. A baleia é um mamífero e O gato é um felino V e V resultado: V
2. A baleia é um mamífero e O macaco é um peixe V e F resultado: F
(no e, toda as afirmações precisam ser verdadeiras para o resultado ser verdadeiro)
3. 1 > 3 && (10 > 1 && 5 != 5) T && F F && F
Resultado: F
Tabela Verdade da negação (!)
30
} A negação (!) inverte o valor verdade da expressão. Se for falso, passa a ser verdadeiro, se for verdadeiro, passa a ser falso.
A !A V F F V
Exemplo – Negação (!)
31
1. nao (A baleia é um peixe) 2. !(“abcd” == “abcd”) 3. !( !(1 > 3) && (10 > 1 && 5 != 5) )
Tabela Verdade dos Operadores Lógicos
32
} Disjunção Exclusiva XOR(^) – Valor verdade é verdadeiro somente se apenas um dos dois operandos for verdadeiro.
A B A ^ B V F V F V V V V F F F F
Exemplo – Disjunção Exclusiva(^)
34
1. (1 > 3) ^ ((10 > 1) ^ (5 != 5)) T ^ F F ^ T
resultado: T 2. (“a” == “a”) ^ ( 3 <= 7) T ^ T resultado: F
Precedência dos Operadores Lógicos
35
Operador Precedência ! (Negação) 4 (maior) ^ (Disjunção Exclusiva) 3 && (Conjunção) 2 || (Disjunção) 1 (menor)
Exemplos de Expressões Lógicas
36
} (2 > 3) || (3 < 2) && (2 < 3) } (2 > 3) && ((true ^ false) && !(true && false)) } (“abc” == “cba”) || (true == false) || (true && false)
} (a ^ b) && (a || !b) && (a && false)