Hoje é Ter Mai 22, 2012 10:34 am





Criar novo tópico Responder Tópico  [ 5 Mensagens ] 
Operadores nas estruturas de controle 
Autor Mensagem
Avatar de usuário

Data de registro: Dom Dez 14, 2008 12:16 pm
Mensagens: 7
Localização: Cáceres, MT
Mensagem Operadores nas estruturas de controle
Só complementando, como em outras linguagens, python aceita os operadores especiais and e or. É mais ou menos assim. O if reconhece apenas valores False e True. False é representado pelo 0, None e False (bools), enquanto o True é representado por True (bool), 1 ou qualquer outro valor (strings, int, floats, qqr coisa, exceto os representados pelo False). Quando, no if ou em outras estruturas de controle executamos, por exemplo, 10 % 2 == 0, na verdade, esse trecho de código irá retornar True ou False, e o if executará o código correspondente.
Mas, chegando ao ponto importante, o Python reconhece também o and e o or. Ou seja, usando vários testes com os operadores, eles retornarão apenas um valor, False ou True. Melhor explicar com exemplos.
O exemplo do número par e divisível por 5:
poderia ser escrito assim:
Código:
>>> # Um exemplo com o operador AND (E)
>>> n = 10
>>> if n % 2 == 0 and n % 5 == 0:
...         print 'É par E divisível por 5'
...
É par E divisível por 5
>>>
>>> # Outro exemplo com o AND
>>> n = 8
>>> if n % 2 == 0 and n % 5 == 0:        # Note aqui que a primeira operação é verdadeira, mas a segunda nao. E como AND é exclusivo, retorna False
...         print 'É par E divisível por 5'
...  else:
...         print 'Não é par E divisível por 5'
...
Não é par E divisível por 5
>>>
>>> # Um exemplo usando o OR
>>> n = 12
>>> if n % 2 == 0 or n % 5 == 0:
...         print 'É par OU divisível por 5'
...
É par OU divisível por 5
>>>

Conseguiram captar? Ao invés de aninhar ifs, você pode reduzir o tamanho dos códigos e o consumo de memória e processamento com esses operadores especiais. Naturalmente, há casos especiais em que é realmente necessário o uso de várias estruturas de controle aninhadas, mas o uso de AND e OR é extremamente produtivo.
Espero ter contribuido.
Abraços a tds


Dom Dez 14, 2008 12:46 pm
Perfil E-mail WWW
Site Admin

Data de registro: Sex Nov 21, 2008 11:45 pm
Mensagens: 22
Localização: Cubatão - SP - Brasil
Mensagem Re: Operadores nas estruturas de controle
Oi André!

Caramba! Ficou muito boa a explicação! Posso usa-la na próxima aula? Com os devidos créditos é claro =) hehehe

Abraços!


Dom Dez 14, 2008 2:04 pm
Perfil E-mail WWW
Avatar de usuário

Data de registro: Dom Dez 14, 2008 12:16 pm
Mensagens: 7
Localização: Cáceres, MT
Mensagem Re: Operadores nas estruturas de controle
Claro :D , fique à vontade.
Será um prazer poder ser útil à comunidade e aos outros alunos.


Dom Dez 14, 2008 2:06 pm
Perfil E-mail WWW

Data de registro: Seg Nov 24, 2008 8:53 am
Mensagens: 16
Localização: Rio de Janeiro
Mensagem Re: Operadores nas estruturas de controle
Existe também o operador NOT.
Esses operadores (AND, OR e NOT) são chamados de Operadores Booleanos.
O AND verifica se a primeira expressão é verdadeira. Caso seja verdadeira, ele verifica o segundo. Caso contrário, ele retorna com falsa.
O OR verifica se a primeira expressão é falsa. Caso seja falsa, ele verifica o segundo. Caso contrário, ele retorna com verdadeira.
O NOT verifica se a expressão é falsa. Se for, ele retorna como verdadeira. Senão, como falsa.
Também é possível misturar os operadores e que, nestes casos, o Python segue uma ordem de operações:
1) Operadores relacionais (< , > , == , != , <= , >=)
2) NOT
3) AND
4) OR
Segue exemplo:
Código:
>>> not 2<3
False
>>> not 3<2
True
>>> 1 and not 0    # 'not 0' retorna True, pois, como citado por André, 0 equivale a False. Então ele verifica '1 and True'.
True
>>> 1 and not 1    # Aqui, 'not 1' é retornado como False.
False
>>> 0 or 2 and 3    # '2 and 3' vem primeiro e é retornado como 3. E depois é como se fosse '0 or 3'.
3


Créditos ao Professor Claudio Esperança por ter disponibilizado um material muito bom sobre .
Abraços.


Dom Dez 14, 2008 2:47 pm
Perfil E-mail
Avatar de usuário

Data de registro: Dom Dez 14, 2008 12:16 pm
Mensagens: 7
Localização: Cáceres, MT
---------
Mensagem Re: Operadores nas estruturas de controle
Sim, sim. Bem lembrado. Havia me esquecido do not =D
Só complementando, valores Booleanos são, em python e em outras linguagens, um tipo de valor, assim como inteiros, strings, floats, etc. Porém, são bem limitados. Eles indicam apenas se algo é verdadeiro ou falso, como nas provas que fazemos, classificamos uma alternativa como verdadeira ou falsa. Eles são muito uteis em programação. Por exemplo, funções que retornam Bools (valores booleanos) podem ser implantadas direto nas estruturas de controle, como o if.
Ex.:
Código:
>>> nome = 'André Vitor Matos'
>>> def name_str(nome):
...    return type(nome) ==  str:
...
>>> if name_str(nome):
...     print 'variavel nome é uma string'
... else:
...     print 'variavel nome não é uma string'
...
>>>

Ficou meio confuso, mas dá pra entender. A função name_str retorna um booleno. Se nome é uma string, retorna verdadeiro. Se não, falso. O X da questão está na aplicação direta da função no if, sem o uso de comparadores (<, >, !=, etc).
Flwss


Dom Dez 14, 2008 3:00 pm
Perfil E-mail WWW
Mostrar mensagens anteriores:  Organizar por  
Criar novo tópico Responder Tópico  [ 5 Mensagens ] 


Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 0 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:
Ir para:  
cron

Forum Gratis · phpBB© · Internationalization Project · Reportar abuso · Termos De Uso/Política De Privacidade
© Forums-Free.com 2009