Curso De C# para Iniciantes - Fundamentos CSharp Atribuição, incremento ...
Curso De C# para Iniciantes - Fundamentos CSharp Atribuição, incremento ...
No 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:
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:
Introdução
Neste terceiro artigo da série aprenda
C# aprenderemos sobre os operadores da linguagem, são eles:
C# aprenderemos sobre os operadores da linguagem, são eles:
·
Operadores
aritméticos
Operadores
aritméticos
·
Operadores de atribuição
Operadores de atribuição
·
Operadores relacionais
Operadores relacionais
·
Operadores
lógicos
Operadores
lógicos
E ainda vamos ver o que é precedência
de operador, prefixo e sufixo.
de operador, prefixo e sufixo.
Operadores aritméticos
Em C# temos os seguintes operadores
aritméticos:
aritméticos:
Operador Descrição
+
(Adição)
(Adição)
-
(Subtração)
(Subtração)
*
(Multiplicação)
(Multiplicação)
/
(Divisão)
(Divisão)
%
(Resto/Módulo)
(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.
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:
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:
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);
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’.
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:
operadores de atribuição:
Operador
Descrição
=
(Atribuição simples)
(Atribuição simples)
+=
(Atribuição aditiva)
(Atribuição aditiva)
-=
(Atribuição Subtrativa)
(Atribuição Subtrativa)
*=
(Atribuição Multiplicativa)
(Atribuição Multiplicativa)
/=
(Atribuição de divisão)
(Atribuição de divisão)
%=
(Atribuição de módulo)
(Atribuição de módulo)
Um operador de atribuição serve
justamente para atribuirmos um valor a uma variável, veja:
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 ‘=’.
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?
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:
igual a 12, pois seria o mesmo que:
int num1=10, num2=2;
num1 = num1 + num2;
O mesmo é valido para
os outros operadores, exemplo:
os outros operadores, exemplo:
int num1=10, num2=2;
num1 -= num2;
O que seria o mesmo
que:
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.
operador ‘-=’ e o resultado de num1 seria 8,
e assim por diante.
Operadores relacionais
Em C# temos os seguintes
operadores relacionais:
operadores relacionais:
Operador
Descrição
==
(Igualdade)
(Igualdade)
>
(Maior)
(Maior)
<
(Menor)
(Menor)
<=
(Menor igual)
(Menor igual)
>=
(Maior igual)
(Maior igual)
!=
(Diferente)
(Diferente)
Uma expressão relacional
sempre retorna um valor Booleano, ou seja, verdadeiro ou falso, por exemplo:
sempre retorna um valor Booleano, ou seja, verdadeiro ou falso, por exemplo:
Definindo duas variáveis
int num1 = 2, num2
= 5;
= 5;
Então,
num1 == num2
// falso
num1 != num2
// verdadeiro
num1 > num2 // falso
num1 < num2 // verdadeiro
num1 <= num2
// verdadeiro
num1 >= num2
// falso
// 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 ‘=’.
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:
operadores lógicos:
Operador
Descrição
&& (E)
||
(OU)
(OU)
Os operadores lógicos
são usados para combinar comparações, exemplo:
são usados para combinar comparações, exemplo:
Definindo duas variáveis
int num1 = 1, num2
= 3;
= 3;
bool PrimeiroTeste
= num1 > 3 && num2 < 10
= 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.
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;
= 3;
bool SegundoTeste =
num1 > 3 || num2 < 10
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.
é 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:
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.
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.
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?
que a subtração fosse feita primeiro?
Simples, para resolver
esse ‘problema’ usamos os parênteses, assim:
esse ‘problema’ usamos os parênteses, assim:
int X = (25 – 7) *
2;
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.
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.
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)
(Incremento)
--
(Decremento)
(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 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:
o Decremento, veja:
X--;
Se antes X valia 2
agora vale 1, pois usamos o operador de decremento assim tirando 1 da variável.
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.
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
à O operador é digitado antes do nome da variável
Ex:
int X = ++Y;
Sufixo
à O operador é digitado depois do nome da variável
à 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.
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.
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.
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.
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.