VisuALG #3 – Operadores

Publicado: maio 03, 2014 em Introdução à Ciência da Computação
Tags:, ,

VisuALG

Introdução

Para falarmos sobre operadores, precisamos primeiramente entender o funcionamento das expressões aritméticas no ambiente computacional.


Linearização de Expressões

Para a construção de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas em linhas, devendo também ser feito o mapeamento dos operadores da aritmética tradicional para os do Português Estruturado.

Linearização de expressões

Operadores Aritméticos

Operadores_aritmeticos

algoritmo "Operadores Aritméticos"
// Função: Operadores Aritméticos
// Autor: Andrey Smith
// Data: 03/05/2014
// Seção de Declarações

var
numero1, numero2: inteiro
resultado: real
inicio
// Seção de Comandos

numero1 <- 14
numero2 <- 4

resultado <- numero1 + numero2
escreval (numero1, " +", numero2, " =", resultado)
escreval ("")

resultado <- numero1 - numero2
escreval (numero1, " -", numero2, " =", resultado)
escreval ("")

resultado <- numero1 * numero2
escreval (numero1, " *", numero2, " =", resultado)
escreval ("")

resultado <- numero1 / numero2
escreval (numero1, " /", numero2, " =", resultado)
escreval ("")

resultado <- numero1 \ numero2
escreval (numero1, " DIV", numero2, " =", resultado)
escreval ("")

resultado <- numero1 % numero2
escreval (numero1, " MOD", numero2, " =", resultado)
escreval ("")

resultado <- numero1 ^ numero2
escreval (numero1, " EXP", numero2, " =", resultado)

fimalgoritmo

Resultado do algoritmo:
Resultado_operadores_aritmeticos

Precedência entre operadores aritméticos

+------------+--------------------------------------------+
| Prioridade |                 Operadores                 |
+------------+--------------------------------------------+
|1º	         | Parênteses internos                        |
|2º	         | ^ (Potenciação) e raiz (Quando disponível) |
|3º	         | * / div e mod                              |
|4º	         | + e -                                      |
+------------+--------------------------------------------+

Os casos abaixo exemplificam a importância da precedência entre operadores aritméticos.

1º CASO: (2+2)/2=2
Certo  Solução (Certo)
1º. Resolvemos o que está entre parênteses (2+2), e encontramos 4 como resultado;
2º. Resolvemos a divisão 4/2, e encontramos 2 como resultado.

2º CASO: 2+2/2=3
Certo  Solução 01 (Certo)
1º. Resolvemos a divisão 2/2, e encontramos 1 como resultado;
2º. Resolvemos a adição 2+1, e encontramos 3 como resultado.

Errado  Solução 02 (Errado)
. Resolvemos a adição 2+2, e encontramos 4 como resultado;
2º. Resolvemos a divisão 4/2, e encontramos 2 como resultado.

Operadores Relacionais

Os operadores relacionais realizam a comparação entre dois operandos ou duas expressões, e resultam em valores lógicos (VERDADEIRO ou FALSO).

Operadores_relacionais

algoritmo "Operadores relacionais"
// Função: Operadores relacionais
// Autor: Andrey Smith
// Data: 03/05/2014
// Seção de Declarações

var
numero1, numero2: inteiro
resultado: logico
inicio
// Seção de Comandos

numero1 <- 14
numero2 <- 4

resultado <- numero1 > numero2
escreval (numero1, " > ", numero2, " ?", resultado)
resultado <- numero1 < numero2
escreval (numero1, " < ", numero2, " ?", resultado)
resultado <- numero1 >= numero2
escreval (numero1, " >=", numero2, " ?", resultado)
resultado <- numero1 <= numero2
escreval (numero1, " <=", numero2, " ?", resultado)
resultado <- numero1 = numero2
escreval (numero1, " = ", numero2, " ?", resultado)
resultado <- numero1 <> numero2
escreval (numero1, " <>", numero2, " ?", resultado)

fimalgoritmo

Resultado do algoritmo:
Resultado_operadores_relacionais

Operadores lógicos

Os operadores lógicos atuam sobre expressões e também resultam em valores lógicos VERDADEIRO ou FALSO.

Operadores_logicos

algoritmo "Operadores lógicos - E, OU, NÃO"
// Função: Operadores lógicos - E, OU, NÃO
// Autor: Andrey Smith
// Data: 03/05/2014
// Seção de Declarações

var
numero1, numero2: inteiro
resultado: logico
inicio
// Seção de Comandos

numero1 <- 14
numero2 <- 4

escreval ("Testando o operador lógico E:")
resultado <- (numero1 > numero2) e (numero1 > numero2)
escreval (numero1, " >", numero2, " E",numero1, " >", numero2, " =", resultado)
escreval ("Duas proposições VERDADEIRAS!")
escreval("")

escreval ("Testando o operador lógico OU:")
resultado <- (numero1 < numero2) ou (numero1 < numero2)
escreval (numero1, " <", numero2, " OU",numero1, " <", numero2, " =", resultado)
escreval ("Duas proposições FALSAS!")
escreval("")

escreval ("Testando o operador lógico NÃO:")
resultado <- nao (numero1 > numero2)
escreval (numero1, " >", numero2, " =",  resultado)
escreval ("O que é VERDADEIRO se torna FALSO!")
escreval("")

escreval ("Testando o operador lógico NÃO:")
resultado <- nao (numero1 < numero2)
escreval (numero1, " <", numero2, " =", resultado)
escreval ("O que é FALSO se torna VERDADEIRO!")
escreval("")

fimalgoritmo

Resultado do algoritmo:
Resultado_operadores_logicos_e_ou_nao

Tabela verdade

Tabela_verdade

algoritmo "Operadores lógicos - Tabela verdade"
// Função: Operadores lógicos - Tabela verdade
// Autor: Andrey Smith
// Data: 03/05/2014
// Seção de Declarações

var
numero1, numero2: inteiro
resultado: logico
inicio
// Seção de Comandos

numero1 <- 14
numero2 <- 4

escreval ("Testando o operador lógico E:")
resultado <- (numero1 > numero2) e (numero1 > numero2)
escreval (numero1, " >", numero2, " E",numero1, " >", numero2, " =", resultado)
resultado <- (numero1 > numero2) e (numero1 < numero2)
escreval (numero1, " >", numero2, " E",numero1, " <", numero2, " =", resultado)
resultado <- (numero1 < numero2) e (numero1 > numero2)
escreval (numero1, " <", numero2, " E",numero1, " >", numero2, " =", resultado)
resultado <- (numero1 < numero2) e (numero1 < numero2)
escreval (numero1, " <", numero2, " E",numero1, " <", numero2, " =", resultado)

escreval("")
escreval("")

escreval ("Testando o operador lógico OU:")
resultado <- (numero1 > numero2) ou (numero1 > numero2)
escreval (numero1, " >", numero2, " OU",numero1, " >", numero2, " =", resultado)
resultado <- (numero1 > numero2) ou (numero1 < numero2)
escreval (numero1, " >", numero2, " OU",numero1, " <", numero2, " =", resultado)
resultado <- (numero1 < numero2) ou (numero1 > numero2)
escreval (numero1, " <", numero2, " OU",numero1, " >", numero2, " =", resultado)
resultado <- (numero1 < numero2) ou (numero1 < numero2)
escreval (numero1, " <", numero2, " OU",numero1, " <", numero2, " =", resultado)

escreval("")
escreval("")

escreval ("Testando o operador lógico NÃO para A (Primeira prosição):")
resultado <- nao (numero1 > numero2)
escreval (resultado)
resultado <- nao (numero1 > numero2)
escreval (resultado)
resultado <- nao (numero1 < numero2)
escreval (resultado)
resultado <- nao (numero1 < numero2)
escreval (resultado)

escreval("")
escreval("")

escreval ("Testando o operador lógico NÃO para B (Segunda prosição):")
resultado <- nao (numero1 > numero2)
escreval (resultado)
resultado <- nao (numero1 < numero2)
escreval (resultado)
resultado <- nao (numero1 > numero2)
escreval (resultado)
resultado <- nao (numero1 < numero2)
escreval (resultado)

fimalgoritmo

Resultado do algoritmo:
Resultado_operadores_logicos_tabela_verdade

Conclusão

Operadores são indispensáveis em nossos programas, mas para que possamos criar algoritmos eficientes, precisamos atentar às particularidades dos operadores, bem como à ordem de precedência de cada um.

Até o próximo!

:wq!
Andrey Smith

comentários
  1. Olá sou o professor Antonio, sou eu quem estou dando manutenção no visualg agora, pois o Cláudio Morgado de Souza da Apoio informática, abandonou ele, e passou pra mim continuar seu projeto. Eu já postei no SourceForge uma nova versão chamada do VISUALG 3.0, que já tem mais 1,5 milhões de downloads no sourceforge e no Baixaki e em mais de 50 países. Conforme: https://sourceforge.net/projects/visualg30/ e https://sourceforge.net/projects/portugolvisualg30/

    Curtido por 1 pessoa

  2. Andrey Smith disse:

    Olá Professor!
    Muito obrigado pela informação!

    Curtir

  3. Angelo Almeida disse:

    olá, professor. tenho dúvida em qual seria a diferença entre $i <= 8 e $i < 9. o resultado retorna a mesma informação, porém, vejo apenas o uso do primeiro exemplo. obrigado.

    Curtir

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s