SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 15/03/2011, 04:20 PM   #1
LuxurioN™
High-roller
 
LuxurioN™'s Avatar
 
Join Date: Oct 2007
Posts: 1,052
Reputation: 137
Default Operadores. Teórico & Prático!


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!
Code:
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.
Code:
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

Code:
+ 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
Code:
+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=
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:
Code:
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
Code:
(++) 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:
Code:
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:
Code:
++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.
Code:
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:
Code:
Prefixo

Var2=5;
Var1=++Var2;

Var1 será igual a 6
Var2 também será igual a 6
Code:
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

Code:
>  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:
Code:
(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:
Code:
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:
Code:
!
&&
||
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:
Code:
!(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;
Code:
&&

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:

Code:
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++.
Code:
&
|
^
~
<<
>>
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)
Code:
& 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.

Last edited by LuxurioN™; 15/03/2011 at 11:51 PM.
LuxurioN™ is offline   Reply With Quote
Old 15/03/2011, 04:28 PM   #2
CyNiC
High-roller
 
Join Date: Jan 2009
Location: Brazil
Posts: 1,433
Reputation: 203
Default Re: Operadores. Teórico & Prático!

Excelente, só não aprende quem não quer.
__________________
My scripts
Brazucas'Server
CyNiC is offline   Reply With Quote
Old 15/03/2011, 04:46 PM   #3
Kruger
Huge Clucker
 
Kruger's Avatar
 
Join Date: Jan 2011
Posts: 266
Reputation: 1
Default Re: Operadores. Teórico & Prático!

Luxurion Novo Genio Da Area PT/BR

Exelente Luxurion !
__________________
Code:
My Name : Kruger :)

My Favorite Games :




Club From the Heart : 

Kruger is offline   Reply With Quote
Old 15/03/2011, 04:59 PM   #4
TiagoPS
Gangsta
 
TiagoPS's Avatar
 
Join Date: Mar 2010
Location: Dilma's Country
Posts: 841
Reputation: 4
Default Re: Operadores. Teórico & Prático!

parabéns LuxurionN q pena q vc n andava por aqui antes kkk
__________________
TiagoPS is offline   Reply With Quote
Old 15/03/2011, 05:26 PM   #5
Domozinho
Big Clucker
 
Domozinho's Avatar
 
Join Date: Jan 2011
Posts: 82
Reputation: 0
Default Re: Operadores. Teórico & Prático!

pawn Code:
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 Code:
(9 < 10)  Retornaria true: 9 é menos que 10.

Não seria (9 > 10)? Pois o sinal tem que ficar virado para o maior.
Domozinho is offline   Reply With Quote
Old 15/03/2011, 05:28 PM   #6
[BGL]jonas_OwNer
Big Clucker
 
Join Date: Mar 2011
Posts: 97
Reputation: 0
Default Re: Operadores. Teórico & Prático!

Quote:
Originally Posted by CyNiC View Post
Excelente, só não aprende quem não quer.
falo tudo.
__________________
Pro Jogos:
Servidores 24 horas
Proteção Garantida,Servidores Ping báixo & Link reduntante
Suporte 24/7
UpLink(banda) 1Gbit
SA-MP Planos
Painel de Controle completo
Administração FileZilla(FTP)
Sistema OP: Linux
www.migrehost.com - www.projogos.com.br
[BGL]jonas_OwNer is offline   Reply With Quote
Old 15/03/2011, 05:42 PM   #7
Josma_cmd
High-roller
 
Josma_cmd's Avatar
 
Join Date: Feb 2010
Location: Dukes - Liberty City
Posts: 1,405
Reputation: 122
Default Re: Operadores. Teórico & Prático!

Quote:
Originally Posted by LuxurioN™ View Post
(10 == 10) Retornaria true: 10 não é igual a 10.
(9 == 10) Retornaria false: 9 não é igual a 10.
10<=20 ? 20 : 15 Retornaria a 20 pois 10 não é menor que 20.
Acho que achei um erro nesta parte.
Mas parabéns, é um ótimo tutorial, quando tiver um tempo irei ler com mais calma.
__________________
Josma_cmd is offline   Reply With Quote
Old 15/03/2011, 07:06 PM   #8
rjjj
Guest
 
Posts: n/a
Default Re: Operadores. Teórico & Prático!

Tutorial muito bem feito e completo, explicando temas que não foram falados até hoje na área portuguesa e que na minha opinião, são importantes


Parabéns


Espero ter ajudado
  Reply With Quote
Old 15/03/2011, 07:37 PM   #9
Kruger
Huge Clucker
 
Kruger's Avatar
 
Join Date: Jan 2011
Posts: 266
Reputation: 1
Default Re: Operadores. Teórico & Prático!

LoL RJJJ

Pq Voce Colocou Espero ter ajudado '='
E Apenas Uma Pergunta So Quero Saber .. Nao Si Ofenda .. '='
__________________
Code:
My Name : Kruger :)

My Favorite Games :




Club From the Heart : 

Kruger is offline   Reply With Quote
Old 15/03/2011, 08:15 PM   #10
Ricop522
High-roller
 
Ricop522's Avatar
 
Join Date: Feb 2010
Location: ES
Posts: 2,658
Reputation: 159
Default Re: Operadores. Teórico & Prático!

No WIKIPT tem quase tudo isso.
Mas bom trabalho
__________________
"Any fool can write code that a
computer can understand. Good
programmers write code that
humans can understand."

AJUDA! Programação
Github
Ricop522 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Tutorial] Manual Pawn Iniciantes {CallBacks,Diretivas,Operadores} ipsBruno Lançamentos/Releases 46 13/06/2016 08:29 PM
[Tutorial] Validando Funções !!!, Principal para prender Operadores. zSuYaNw Lançamentos/Releases 12 17/01/2011 09:31 PM


All times are GMT. The time now is 08:07 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.