Operadores da linguagem

Ver Todos os Exercícios

Teoria

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Nos tópicos anteriores nós fomos introduzidos aos operadores da linguagem C, nesse tópico nós iremos conversar de forma mais aprofundada sobre esse mesmo assunto.

Beleza, para começar, como são utilizados os operadores na linguagem C? Os operandos são sempre números?

Nós iremos descobrir as respostas dessas e outras perguntas ao decorrer desse tópico, então vamos nessa!

Operadores aritméticos

Que os operadores aritméticos são utilizados para realizar operações matemáticas básicas nós já sabemos, mas como eles são escritos dentro de um código?

Para responder essa pergunta, nada melhor do que um exemplo! No exemplo abaixo nós escolheremos o operador de soma, mas fique ciente que a utilização apresentada é análoga para todos os outros operadores aritméticos binários.

Exemplo: suponha que você tenha que declarar uma variável x inteira que seja inicializada com o valor 10 , além da variável inteira você deve declarar outra variável y , do tipo ponto flutuante, que será inicializada, após o processamento de x , com o valor da primeira variável mais 0,0725 .

A primeira coisa que nós iremos fazer é declarar e inicializar a variável inteira, que nesse exemplo terá a denominação x e a variável que será inicializada posteriormente, nesse exemplo denominada como y :

Agora, temos que inicializar a variável de tipo ponto flutuante, mas antes observe a seguinte análise:

Nós sabemos o valor inicial com que x foi declarado, porém nós não podemos simplesmente inicializar y com o valor igual a 10,0725 . Isso acontece, pois a variável x sofrerá alterações antes do programa efetivamente utilizar y .

Logo, o valor com que y será inicializado é igual ao valor de x naquele estágio do programa mais 0,0725 :

Você viu como o operador de soma foi útil nesse caso? Agora ficou fácil, pois podemos elaborar a forma geral de utilização dos operadores aritméticos:

Onde:

  • resultado é a variável que irá armazenar o resultado da operação;
  • operando1 e operando2 podem ser variáveis, constantes que estão definidas (#define), constantes que não estão definidas (números utilizados diretamente como é o caso do 0,0725 ) e até mesmo expressões aritméticas (veremos em tópicos posteriores).

Mas onde se encaixam os operadores aritméticos unários?

Eles são utilizados para incrementar ou decrementar o valor do dado armazenado por uma variável em uma unidade.

Vale lembrar que tudo aquilo que pode ser feito com um operador unário, também pode ser realizado através de um operador binário:

Operadores relacionais

Os operadores relacionais são utilizados para realizar comparações entre variáveis, constantes que estão definidas e constantes que não estão definidas. Basicamente, um operador relacional se trata de um comparador capaz de verificar se a relação por ele estabelecida é verdadeira ou falsa.

Como o retorno de uma comparação relacional é booleano, ou seja, só pode assumir 2 valores, nos casos em que a relação é verdadeira o retorno é o valor 1 , já nos casos em que a relação é falsa, o retorno é o valor 0 .

Exemplo:

Observe o programa a seguir:

Qual será o resultado da impressão realizada na linha 08 do programa?

O valor impresso será 1 , pois x é igual a 10 e 10 é menor que 15 . Logo, o valor atribuído a r e s u l t a d o na linha 07 do programa é 1 uma vez que a relação é verdadeira, sendo esse o valor que será impresso na linha de código posterior.

Vale lembrar que a utilização é análoga para os outros operadores relacionais e que se caso a relação fosse falsa, como é o caso da comparação maior que entre os operandos x e 15 ( 10 > 15 ), o valor de atribuição e posteriormente impressão seria 0 .

Lembrete: como feito no exemplo acima, não é comum utilizar o valor do retorno de uma comparação relacional. Isso acontece, pois na grande maioria dos casos, as comparações utilizando operadores relacionais são parâmetros de estruturas condicionais ou de estruturas que necessitam de condições de parada, essas que veremos futuramente.

Com isso, podemos elaborar a forma geral de utilização dos operadores relacionais em sua forma mais comum:

Onde:

  • operando1 e operando2 podem ser variáveis, constantes que estão definidas, constantes que não estão definidas e até mesmo expressões relacionais (veremos em tópicos posteriores).

Operadores lógicos

Os operadores lógicos são responsáveis por unir duas ou mais comparações relacionais e, de acordo com uma tabela verdade, gerar um resultado booleano.

Isso ainda está meio complicado, né? Então, dá uma olhada no exemplo a seguir.

Exemplo: suponha que em uma de suas disciplinas existam dois elementos avaliativos, um trabalho que aborda o conteúdo de todo o semestre e uma prova final. Caso a sua nota no trabalho seja maior ou igual a 8 e a nota da sua prova final seja maior ou igual a 6 , você será aprovado na disciplina. Querendo antecipar a sua aprovação, você decidiu desenvolver um programa que verifica se você passou ou não na disciplina.

Para que o programa possa verificar se você passou, ele deve utilizar um operador lógico && em que os operandos serão duas comparações relacionais ( n o t a P r o v a ≥ 6 e n o t a T r a b a l h o ≥ 8 ):

Por que isso dá certo? Pois a tabela verdade do operador lógico E (&&) é:

Onde:

  • P é o resultado do primeiro operando (comparação relacional);
  • Q é o resultado do segundo operando (comparação relacional);
  • P   & &   Q é o resultado da comparação lógica como um todo.

Sendo assim, você só passará na matéria quando P e Q forem verdadeiros, em outras palavras, quando a nota da prova final for maior ou igual a 6 e a nota do trabalho for maior ou igual a 8 .

Lembrete: verdadeiro é análogo a 1 , já falso é análogo a 0 . O computador só trabalha com números, porém visualizar como verdadeiro e falso é mais fácil para nós humanos (tipo booleano).

Ficou bem mais simples, não acha? Agora, nós só precisaremos lembrar das tabelas verdade dos operadores lógicos e fazer as assimilações com os resultados das comparações relacionais presentes como operandos!

Abaixo estão as tabelas verdade dos outros dois principais operadores lógicos.

Tabela verdade do operador lógico OU (||):

Mas até aqui todos os operadores lógicos eram binários, existe algum operador lógico unário?

A resposta é SIM!

Tabela verdade do operador lógico NÃO (!):

Por se tratar de um operador lógico unário, a sua tabela verdade acaba ficando reduzida uma vez que só existe um operando.

Agora que você já sabe quem são os operadores da linguagem C e como utilizá-los, está na hora de resolvermos alguns exercícios de fixação, você não acha?

Sem preguiça, Jedi! Te encontro ali na outra página.

Operadores relacionais

Operadores lógicos

Exercícios Resolvidos

Exercício Resolvido #1

Dado o seguinte trecho de código:

O que será impresso na tela quando o programa finalizar a execução do comando presente na linha 08?

Passo 1

Para sabermos o que será impresso na tela, devemos saber o que a variável x está armazenando naquele momento de execução do programa.

Começaremos essa análise identificando o tipo do dado.

Sabemos que o valor que está sendo atribuído a x na linha 07 se trata do resultado gerado a partir de uma operação NÃO. Por se tratar de uma operação lógica, também sabemos que o resultado será booleano.

Passo 2

Para encontrarmos esse valor booleano, devemos analisar a tabela verdade do operador lógico NÃO especificamente na condição em que P = V , pois o único operando presente nessa operação é o número 54 e para a linguagem C qualquer valor maior que 0 é considerado verdadeiro.

Analisando a tabela verdade destacada exatamente na condição em que P = V , conseguimos observar com facilidade que o valor de retorno da operação é falso.

Resposta

Com base nas análises o valor impresso na tela é 0, pois a linguagem C representa retornos booleanos a partir de números inteiros, onde 0 representa falso e 1 verdadeiro.