[Tutorial] Operadores. Teуrico & Prбtico!
#1


Como tenho percebido, vбrios membros nгo conhecem todo o potкncial, quais sгo e como funcionam os Operadores. A maioria em si atй conhece os operadores comums (Multiplicaзгo, Divisгo, Subtraзгo, Adiзгo), porйm, eles vгo alйm, e muito, alйm.

Menu

  • Introduзгo
  • Operador de Atribuiзгo
  • Operadores Aritmйticos
  • Operadores de Atribuiзгo Compostos
  • Incremento & Decremento
  • Operadores Relacionais
  • Operadores Lуgicos
  • Operador Condicional
  • Operadores de Bits
  • Precedкncia


Operador de Atribuiзгo

O operador de atribuiзгo (=) ou, na matemбtica, de igualdade, tambйm faz parte dos Operadores Aritmйticos, contudo, o mesmo requer uma seзгo apenas para si, apesar de ser simples, й, acredito eu, o mais importante. Digamos que ele seja o inicio!

Seu objetivo й simples: Atribuir um valor especifico para uma variavel!
Код:
Var = 4
No caso do exemplo acima, o operador indica a atribuiзгo de um valor inteiro (4) a variбvel "Var".

Regras:
  • Tudo o que esta sobre a esquerda do operador (No nosso exemplo, "Var") chamamos em C++ de "Left Value", e tudo que estб a direita logicamente de "Right Value".
  • Nгo importa a situaзгo, a esquerda deve sempre ser uma Variбvel, e a direita, contudo, pode ser uma outra variбvel, um resultado de uma combinaзгo de valores, ou apenas um valor especifico. Lembrando que o valor dado na direita serб sempre o valor que sera atribuido a variбvel da esquerda.
  • Operaзхes utilizando "=" sempre devem ser lidas da esquerda para a direita!
Um lembrete importante й que: Se foi aplicada uma variбvel no lado direito e ocorrer uma mudanзa futura em seu valor, o mesmo nгo afeterб a variбvel da esquerda! O valor atribuido й sempre o primeiro.
Код:
Var = Var2
Como nгo especificamos um valor para "Var2", o mesmo nгo aplicarб nenhum valor prуprio em "Var", porйm, assim que definirmos um valor para "Var2", este se aplicarб a "Var" e, caso ocorra mudanзas futuras em tal valor, este nгo se aplicarб novamente.

Operadores Aritmйticos

Код:
+ Adiзгo (2+2=4)
- Subtraзгo (2-2=0)
* Multiplicaзгo (2*2=4)
/ Divisгo (2/2=1)

% Mуdulo
Sгo, basicamente, os operadores que quase todos conhecem, os velhos operadores de todos os dias que usamos na matemбtica, apenas com a exeзгo do Mуdulo que nгo й muito usado em SA-MP, entretanto, й basicamente a sobra da divisгo de dois valores. (10/3 sobraria 1, portanto, o mуdulo de 10/3 й 1).

Operadores de Atribuiзгo Compostos
Код:
+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=
Apesar de serem meio complicados de se ler, sua funзгo й simples: permitir modificar o valor de uma variбvel com um dos operadores bбsicos, exemplo:
Код:
x += 3: que й igual a:  x = x + 3 (Ex: 6 = 6+3)
x -= 3: que й igual a:  x = x - 3 (Ex: 6 = 6-3)
x /= 3: que й igual a:  x = x / 3 (Ex: 6 = 6/3)
x *= b: que й igual a:  x = x * 3 (Ex: 6 = 6*3 ou "x = 2+5" x=x*2+5)

E assim por diante...
Incremento e Decremento
Код:
(++) Incremento.
(--) Decremento.
Tais operadores sгo ainda mais simples que os outros. Sua funзгo bбsica й adicionar ou reduzir 1 ao valor guardado na variбvel. Estes operadores sгo equivalentes a "+=1" e a "-=1".

Exemplo:
Код:
new Var = 5;
Var++ (+1 Var == 6)

Ou

Var += 1
Que resultarб na mesma coisa!
Ao vermos o exemplo, concluimos que os operadores de Incremento e Decremento sгo a mesma coisa dos operadores de atribuiзгo compostos. Entretanto, a uma simples diferenзa, tais operadores podem ser usados como sufixo ou [/i]prefixo[/i], mas, o que й isso? Simples, esse fato nos permite usar tais operadores em qualquer um dos lados da variбvel. A ъnica diferenзa entre qual a posiзгo colocar й que:
Код:
++Var
prefixo
O resultado da operaзгo (Incremento ou Decremento; Se aplica aos dois operadores), no caso acima, o valor incrementado serб avaliado primeiro que o valor da variбvel, o que, em algums casos, resulta em um valor diferente, pelo seu valor se aplicar antes da operaзгo, ele se aplicarб diretamente a variбvel, e nгo ao valor que estamos aplicando a ela.
Код:
Var++
sufixo
No caso do operador vir depois da variбvel, o valor й adicionado a mesma, porйm apenas depois que a variбvel estiver sido avaliada!

Um exemplo no qual podemos perceber a diferenзa:
Код:
Prefixo

Var2=5;
Var1=++Var2;

Var1 serб igual a 6
Var2 tambйm serб igual a 6
Код:
Sufixo

Var2=5;
Var=Var2++;

Var1 serб igual a 5
Var2 serб igual a 6
Acredito que assim tenha dado para assimiliar a diferenзa! Qualquer questгo, sinta-se livre para perguntar.

Operadores Relacionais

Код:
>  Maior
>= Maior ou igual
<  Menor
<= Menor ou igual
== Igual a
!= Diferente
Tais operadores requer um pouco mais de atenзгo. Sua funзгo й comparar duas expressхes, tendo seu resultado sempre um valor bool (True ou False), de acordo com o resultado.

Exemplos:
Код:
(10 < 10) Retornaria false: 10 nгo й menor que 10.
(9 < 10)  Retornaria true: 9 й menor que 10.

(10 > 10) Retornaria false: 10 nгo й maior que 10.
(10 > 9)  Retornaria true: 10 й maior que 9.

(10 == 10) Retornaria true: 10 й igual a 10.
(9 == 10)  Retornaria false: 9 nгo й igual a 10.

(10 != 10) Retornaria false: 10 nгo й diferente de 10.
(10 != 9)  Retornaria true: 10 й diferente de 9.

(10 >= 10) Retornaria true: 10 nгo й maior que dez, porйm й igual.
(10 >= 9)  Retornaria true: 10 nгo й igual a 9, porйm й maior.
Nos exemplos acima eu fiz o uso de apenas nъmeros, porйm, vale lembrar que os operadores podem ser usados com variбveis e expressхes.
Exemplo:
Код:
Suponhamos que Var1=1, Var2=2, Var3=3:
(Var1*Var2 >= Var3) = 1*2 >= 3 = False!
Uma observaзгo extremamente importante:
  • O Operador '=' nгo й igual ao operador '=='. No primeiro caso ele apenas atribui um valor ('=' Operador de Atribuiзгo), e no segundo caso ('==' Operador Relacional), й responsбvel por comparar duas funзхes e verificar se sгo iguais.
ATENЗГO: Tais regras citadas acima NГO se aplicam a C#.

Operadores Lуgicos

Estes sгo um pouquinho mais complicados de se entender, entгo, vamos por partes. Os operadores sгo:
Код:
!
&&
||
Operador "!"
Reprensenta que a funзгo a seguir e falsa (Nгo, parte de uma funзгo booleana: Not), й claro que existem casos que ele poderб retornar a true. Veremos algums exemplos:
Код:
!(10 == 10)
A expressгo acima retornarб false pois: (10 == 10) й [color=blue]true[color].

!(11 <= 10)
A expressгo acima retornarб true pois: (11 <= 10) й [color=blue]false[color].

[color=green]Sempre lembrando que o "!" resultarб sempre no resultado inverso![/color

!true serб false.
!falseserб true.
Operadores "&& e ||"

Tais operadores (Reprentaзгo Booleana: AND e OR) sгo bem simples. '&&' repesenta "AND" ou "e", e '||' representa "OR" ou "ou". Seus resultados dependeram sempre da ordem em que os valores estгo operando. Vejamos algums exemplos a seguir;
Код:
&&

x = 10;
if(x < 20) && (x == 10); (Retornaria true, pois 10(x) й menor que 20 e й igual a 10)
Caso "x for maior que 20" E "x for igual a 10" a funзгo a seguir se executaria.

||

x = 10;
if(x < 20) && (x != 10); (Retornaria false/true, pois 10(x) й menor que 20, porйm nгo й diferente de 10)
Caso "x for maior que 20" OU "x for difente a 10" a funзгo a seguir se executaria.
Operador Condicional

Й como um "resumo". O operador de condicional й capaz de, com simplicidade, verificar se a expressгo retornou em true ou false e aplicar uma funзгo. Vejamos algums exemplos:

Код:
Condiзгo ? Resultado1 : Resultado2

Condiзгo: true, Resultado1.
Condiзгo: false, Resultado2.

10==5 ? 20 : 15  Retornaria a 15 pois 10 nгo й igual a 5.
10==10 ? 20 : 15  Retornaria a 20 pois 10 nгo й igual a 10.
10>=20 ? 20 : 15  Retornaria a 15 pois 10 nгo й maior ou igual a 20.
10<=20 ? 20 : 15  Retornaria a 20 pois 10 nгo й menor que 20.
Sempre lembrando que podem ser utilizadas "variбveis" e expressхes no lugar de nъmeros. Apenas os usei para facilitar o entendimento.

Operadores de Bits

A classe dos operadores de Bits (Vocк ja viu alguns deles acima) nгo sгo muito utilizados em SA-MP, e por isso nгo vou dar tamanha importвncia a eles como nos outros. Caso vocк se intresse, sгo perfeitamente e muito usados em C++.
Код:
&
|
^
~
<<
>>
O ojetivo dos operadores de bits й modificar as variбveis considerando os bits que as mesmas representam (Os valores que elas guardam) (Suas representaзхes Binбrias)
Код:
& AND "E lуgico"
| OR "Ou Lуgico"
^ XOR "Exclusivo ou Lуgico"
~ NOT "Complemento de Um"
<< SHL "Deslizar/passar a esquerda"
>> SHR "Deslizar/passar a direita"
Nгo й viбvel que eu cite exemplos pois os operadores de Bits se aplicam a "n" estilos e tipos de funзхes e expressхes. Portanto, apeanas um conhecimento sobre o significado de cada um й o essencial para um futuro uso em SA-MP. Valendo lembrar que os Operadores de Bits NГO devem ser confundidos com os Operadores Lуgicos.

Entretanto, caso alguйm se interesse por como eles funcionam. Jб existe um tutorial (Em Inglкs) com uma уtima explicaзгo:
Binary operators.

Precedкncia

Precedкncia ou "Prioridade de Operadores" й a ordem, das quais os operadores devem ser avaliados. Em grandes expressхes poderiamos nos confundir em qual operador usar primeiro, e qual operador serб avaliado primeiro. E, й para isso que existe a procedкncia, й como uma ordem. Й a prioridade que o compilador executarб o operador. Caso os operadores tenham o mesmo nнvel de precedкncia eles sгo analisados da esquerda para direita.

Segue-se abaixo uma tabela com a prioridade dos operadores. (Vale lembrar que a tabela abaixo de aplica diretamente a linguagem c, e nгo a SA-MP):


Finalizaзгo

Tais sгo as explicaзхes que abordam todos os operadores de maior uso, e atй os de pouco, em SA-MP. Desdк uma explicaзгo teуrica atй um exemplo prбtico. Nгo basta apenas ler e decorar. Treine, tente, faзa, isso faz aprender. Caso tenha alguma dъvida, como eu disse anteriormente, sinta-se livre para dizer, contando que seja relacionada ao assunto.
Reply
#2

Excelente, sу nгo aprende quem nгo quer.
Reply
#3

Luxurion Novo Genio Da Area PT/BR

Exelente Luxurion !
Reply
#4

parabйns LuxurionN q pena q vc n andava por aqui antes kkk
Reply
#5

pawn Код:
Suponhamos que Var1=1, Var2=2, Var3=3:
(Var1*Var2 >= Var3) = 1*3 >= 3 = True!
Nгo entendi esta parte.

Se var1 = 1 e var2 = 2, em calculo, 1 * 2 = 2, vocк pega o resultado e indica se й igual ou mais. Nгo seria false? Por favor explique.

pawn Код:
(9 < 10)  Retornaria true: 9 й menos que 10.
Nгo seria (9 > 10)? Pois o sinal tem que ficar virado para o maior.
Reply
#6

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
Excelente, sу nгo aprende quem nгo quer.
falo tudo.
Reply
#7

Quote:
Originally Posted by Domozinho
Посмотреть сообщение
pawn Код:
Suponhamos que Var1=1, Var2=2, Var3=3:
(Var1*Var2 >= Var3) = 1*3 >= 3 = True!
Nгo entendi esta parte.

Se var1 = 1 e var2 = 2, em calculo, 1 * 2 = 2, vocк pega o resultado e indica se й igual ou mais. Nгo seria false? Por favor explique.

pawn Код:
(9 < 10)  Retornaria true: 9 й menos que 10.
Nгo seria (9 > 10)? Pois o sinal tem que ficar virado para o maior.
Realmente. Escrevi o tutorial bem rбpido, minutos antes de ir a universidade. Na questгo das variбveis do primeiro exemplo vocк estб certo, eu me confundi (Corrigido). Quanto a questгo do sinal "> <" vocк estб errado. 9 й menor que 10 = 9 < 10. E nгo 9 >(Maior) 10.


Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Muito bom o tutorial.

Mas condicional й 'if' aquilo alн й um 'operador ternбrio',apesar de ser a mesma coisa

E explica o modulo,muita gente nгo sabe.

Retorna o resto de uma divisгo.

Abraзos bons de DraKiNs
"If" assim como "else" sгo considerados "Estruturas Condicionais" ou "Fator de Decisгo" e nгo "Operadores Condicionais", tal nome й perfeitamente aplicado aos Operadores Ternбrios em C++. Quanto ao Mуdulo, acredito que nгo hб necessidade de sua explicaзгo, jб que o mуdulo nгo й tгo usado em SA-MP como os outros operadores. Para os que nгo sabem, mуdulo й apenas o que sobra da divisгo de dois nъmeros, exemplo: 10/3 sobraria 1, entгo concluimos que o mуdulo de 10/3 й 1.


Quote:
Originally Posted by Ricop522
Посмотреть сообщение
No WIKIPT tem quase tudo isso.
Mas bom trabalho
Na SA-MP Wiki, na Wikipйdia, na Internet, tem praticamente TUDO aquilo que vocк quer, muitas vezes uns melhores que outros. Se formos fazer comparaзхes com tais situaзхes, tudo pode ser comparado. O que realmente eu nгo entendo, й que, mesmo existindo tantas maneiras de adquirir o conhecimento sobre tal assunto, ainda assim vбrios membros (a maioria) nгo conhece boa parte do operadores, e nгo sabe ao menos programar. Sendo que, com 1-2 "clickes" vocк encontra o que quer.

Quote:
Originally Posted by StreetGT
Посмотреть сообщение
2/2 = 2 ? :O
Sinal de que prestou atenзгo. Fiz a leitura 1-2 vezes depois de concluнdo e acabei deixando por passar.
Reply
#8

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
Excelente, sу nгo aprende quem nгo quer.
й, apesar de ter uns 3 tutoriais desse na Board Pt Br...

bom tutorial.
Reply
#9

Deve ter Mais Nenhum Desse Tipo...
Reply
#10

O tutorial estб bom, gostei (:
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)