Operadores. Teуrico & Prбtico! -
LuxurioN™ - 15.03.2011
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
- Operadores de Atribuiзгo Compostos
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!
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.
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:
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.
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.
Re: Operadores. Teуrico & Prбtico! -
CyNiC - 15.03.2011
Excelente, sу nгo aprende quem nгo quer.
Re: Operadores. Teуrico & Prбtico! -
Kruger - 15.03.2011
Luxurion Novo Genio Da Area PT/BR
Exelente Luxurion !
Re: Operadores. Teуrico & Prбtico! -
TiagoPS - 15.03.2011
parabйns LuxurionN q pena q vc n andava por aqui antes kkk
Re: Operadores. Teуrico & Prбtico! -
Domozinho - 15.03.2011
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.
Re: Operadores. Teуrico & Prбtico! -
[BGL]jonas_OwNer - 15.03.2011
Quote:
Originally Posted by CyNiC
Excelente, sу nгo aprende quem nгo quer.
|
falo tudo.
Re: Operadores. Teуrico & Prбtico! -
LuxurioN™ - 15.03.2011
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.
Re: Operadores. Teуrico & Prбtico! -
zSuYaNw - 25.04.2011
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.
Re: Operadores. Teуrico & Prбtico! -
JonathanFeitosa - 25.04.2011
Deve ter Mais Nenhum Desse Tipo...
Re: Operadores. Teуrico & Prбtico! -
Diogo_Bras - 25.04.2011
O tutorial estб bom, gostei (: