Desenvolvimento - C#
Série aprenda C# - Operadores em C#
Neste terceiro artigo da série aprenda C# aprenderemos sobre os operadores da linguagem.
por Cleber DantasNo ultimo artigo da série aprenda C# vimos como é a cara de um programa escrito em C#, como configurar nossas variáveis de ambiente, como compilar um programa usando o compilador de linha de comando (‘csc.exe’), os tipos de dados básicos da linguagem, o que são funções e rotinas, o que são variáveis e constantes e ainda aprendemos sobre conversões. Para maiores informações veja:
http://www.linhadecodigo.com.br/artigos.asp?id_ac=995
Introdução
Neste terceiro artigo da série aprenda C# aprenderemos sobre os operadores da linguagem, são eles:
· Operadores aritméticos
· Operadores de atribuição
· Operadores relacionais
· Operadores lógicos
E ainda vamos ver o que é precedência de operador, prefixo e sufixo.
Operadores aritméticos
Em C# temos os seguintes operadores aritméticos:
Operador Descrição
+ (Adição)
- (Subtração)
* (Multiplicação)
/ (Divisão)
% (Resto/Módulo)
Dos cinco operadores citados acima os três primeiros trabalham da maneira que nós já conhecemos (Adição, Subtração e Multiplicação), já o operador de Divisão ‘/’ trabalha de maneira diferente na divisão de um inteiro, por exemplo, quando dividimos 11 por 2 usando esse operador (sendo 11 um inteiro) o resto da divisão é descartado, pois os inteiros não aceitam numeros fracionários, ou seja, o resultado seria 5. Já o operador ‘%’ tem como sua única função pegar o resto de uma divisão usando o mesmo exemplo dividindo 11 por 2 usando o operador ‘%’ modulo o resultado seria 1, já que é o resto da divisão.
Agora vamos fazer um pequeno exercício para praticar os conceitos aprendidos, veja:
using System;
class OperadoresAritmeticos
{
public static void Main ()
{
int soma = 0, diferenca=0, produto=0, resto=0;
double divisao=0; // resultado da divisão
int num1 = 10, num2 = 2;
soma = num1 + num2;
diferenca = num1 - num2;
produto = num1 * num2;
divisao = num1 / num2;
// resto de 3/2
resto = 3 % num2;
Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2);
Console.WriteLine();
Console.WriteLine("Soma de {0} e {1} é {2}", num1, num2, soma);
Console.WriteLine("Diferença de {0} e {1} é {2}", num1, num2, diferenca);
Console.WriteLine("Produto de {0} e {1} é {2}", num1, num2, produto);
Console.WriteLine("Quociente de {0} e {1} é {2}", num1, num2, divisao);
Console.WriteLine();
Console.WriteLine("resto de 3 quando é dividido por {0} é {1}", num2, resto);
}
}
O exemplo acima embora simples faz uso de todos os operadores aritméticos, como você já viu no artigo passado o método ‘WriteLine’ da classe ‘Console’ apenas mostra uma mensagem na tela, veja a seguinte linha de código:
Console.WriteLine("Soma de {0} e {1} é {2}", num1, num2, soma);
Você deve estar se perguntando o que significa esses ‘{0}, {1} e {2}’, isso serve para nós dizermos ao programa onde se encontra o valor da variavel nessa string, ou seja, ‘{0}’ será substituído por ‘num1’, ‘{1}’ será substituído por ‘num2’ e ‘{2}’ será substituído por ‘soma’.
Operadores de atribuição
Em C# temos os seguintes operadores de atribuição:
Operador Descrição
= (Atribuição simples)
+= (Atribuição aditiva)
-= (Atribuição Subtrativa)
*= (Atribuição Multiplicativa)
/= (Atribuição de divisão)
%= (Atribuição de módulo)
Um operador de atribuição serve justamente para atribuirmos um valor a uma variável, veja:
x = 5;
Ou seja, simplesmente atribuímos o valor 5 a variável x usando o operador de atribuição simples ‘=’.
Outro exemplo:
int num1=10, num2=2;
num1 += num2;
Primeiro atribuímos o valor 10 a variável num1 e o valor 2 a variável num2, na segunda linha atribuímos o valor de num2 a variável num1 com o operador de atribuição ‘+=’, que valor terá num1 agora?
Neste caso ‘num1’ terá o valor atribuído igual a 12, pois seria o mesmo que:
int num1=10, num2=2;
num1 = num1 + num2;
O mesmo é valido para os outros operadores, exemplo:
int num1=10, num2=2;
num1 -= num2;
O que seria o mesmo que:
int num1=10, num2=2;
num1 = num1 - num2;
Neste caso usamos o operador ‘-=’ e o resultado de num1 seria 8, e assim por diante.
Operadores relacionais
Em C# temos os seguintes operadores relacionais:
Operador Descrição
== (Igualdade)
> (Maior)
< (Menor)
<= (Menor igual)
>= (Maior igual)
!= (Diferente)
Uma expressão relacional sempre retorna um valor Booleano, ou seja, verdadeiro ou falso, por exemplo:
Definindo duas variáveis
int num1 = 2, num2 = 5;
Então,
num1 == num2
// falso
num1 != num2
// verdadeiro
num1 > num2 // falso
num1 < num2 // verdadeiro
num1 <= num2
// verdadeiro
num1 >= num2 // falso
Importante: Isso mesmo, quando fazemos comparações (relação) para sabermos se dois números são iguais usamos dois (2) sinais de igualdade ‘==’ o que é diferente do operador de atribuição simples ‘=’.
Operadores lógicos
Em C# temos os seguintes operadores lógicos:
Operador Descrição
&& (E)
|| (OU)
Os operadores lógicos são usados para combinar comparações, exemplo:
Definindo duas variáveis
int num1 = 1, num2 = 3;
bool PrimeiroTeste = num1 > 3 && num2 < 10
Neste caso a variável ‘PrimeiroTeste’ será falsa, pois numa expressão onde usamos o operador lógico && (E) as duas expressões relacionais tem que ser verdadeiras, neste caso a primeira é falsa(num1 não é maior que 3) e a segunda é verdadeira (num2 é menor que 10), mas para que a variável PrimeiroTeste seja verdadeira as duas condições tem que ser verdadeira o que não ocorre.
int num1 = 1, num2 = 3;
bool SegundoTeste = num1 > 3 || num2 < 10
Neste caso a variável ‘SegundoTeste’ é verdadeira, pois quando usamos o operador lógico || (OU) basta que uma das comparações seja verdadeira.
Precedência de Operador
Quando falamos de operadores aritméticos, alguns operadores têm precedência sobre outros, veja:
int X = 25 – 7 * 2;
A expressão acima tem duas respostas dependendo do modo que se faça à conta, por exemplo, 25 - 7 = 18, 18 * 2 = 36, x = 36. Ou, 7*2 = 14, 25-14 = 11, x = 11.
Qual resposta é correta??
Neste caso a segunda, ou seja, x = 11, pois o operador de multiplicação ‘*’ tem precedência sobre o operador de subtração ‘-’, assim o calculo de multiplicação é feito primeiro.
Mas e se eu quisesse que a subtração fosse feita primeiro?
Simples, para resolver esse ‘problema’ usamos os parênteses, assim:
int X = (25 – 7) * 2;
Agora sim o resultado seria 36, pois o que esta dentro dos parênteses é calculado primeiro e depois com o resultado desse calculo é calculado o resto da expressão.
Incremento e Decremento
Incrementar um número ou variável significa adicionar 1 ao valor atual, da mesma forma que subtrair 1 de um número ou variável se da o nome de Decremento.
Em C# temos o seguinte:
Operador Descrição
++ (Incremento)
-- (Decremento)
Exemplo:
int X = 1;
X++;
Aqui estamos atribuindo o valor 1 a variável X e depois na linha seguinte incrementando 1 a mesma variável, ou seja, nesse momento X vale 2.
O mesmo é válido para o Decremento, veja:
X--;
Se antes X valia 2 agora vale 1, pois usamos o operador de decremento assim tirando 1 da variável.
Prefixo e Sufixo
Tanto o operador de incremento quanto o operador de decremento tem duas formas de serem aplicados: prefixo e sufixo.
Prefixo à O operador é digitado antes do nome da variável
Ex:
int X = ++Y;
Sufixo à O operador é digitado depois do nome da variável
Ex:
int X = Y++;
O que ocorre é que quando estamos atribuindo um valor a uma variável usando prefixo, ou seja, algo do tipo <variavel1> = ++<variavel2> você esta dizendo para que a variável2 seja incrementada e logo depois seja atribuído o seu valor a variável1.
Exemplo:
int x = ++y;
Vamos imaginar que a variável y vale 2 e que a variável x vale 0 (zero), como estamos usando o prefixo neste caso a variável y será incrementa em 1, ou seja, agora y vale 3 e logo em seguida o valor de y é atribuído a variável x que agora também vale 3.
No caso de usarmos o sufixo primeiro o valor de y seria passado para a variável x, ou seja, x valeria 2 e em seguida y seria incrementado assim y agora vale 3.
Conclusão
Vimos neste artigo os operadores da linguagem, aprendemos sobre os operadores aritméticos, operadores de atribuição, operadores relacionais e operadores lógicos, além de termos aprendido também sobre incremento e decremento e ainda sobre prefixo e sufixo.
Qualquer dúvida, crítica ou sugestão fale comigo: cleberwd@hotmail.com