Aula prática 2
Operadores e Expressões
Comandos de Decisão
Comentários
Monitoria de Introdução à Programação
Roteiro




Expressões
Operadores
Precedência
Comandos de Decisão
– If – else if – else
– Switch

Condição Ternária
 Comentários
 Dúvidas
 Exercícios
Expressões


Combinação de Operadores e operandos, que
representa um cálculo.
É avaliada seguindo regras de Precedência.
Exemplo:
“a = b + c”
“i = i + 3”
“Anos = Dias / 365.25”
Operadores Aritméticos

Representam cálculos matemáticos, operando sobre
os tipos integrais¹ e de ponto flutuante²:
Operador
Ação Inteiros
+
Adição
-
Subtração
++
Incremento por 1
--
Decremento por 1
*
Multiplicação
/
Divisão com resto
Divisão real
%
Resto de Divisão
Erro de compilação
=
1.
2.
Ação Float
int, short, long, long long, char, etc.
float, double long double, etc.
Atribuição
Operadores Aritméticos

Adição e Subtração
– Operações binárias.
– São avaliadas como a soma/subtração dos dois
operandos.
Exemplo:
“a + b”
“1 + 1”
“5 – 4”
“50 – 8”
Operadores Aritméticos

Incremento e Decremento
– Operações unárias.
– São avaliadas como o valor do operador e modificam
esse operador.
– Deve ser tomado cuidado com a ordem em que são
usados:
 Se usado prefixado, o operador é modificado ANTES da
operação ser avaliada.
 Se usado pós-fixado, o operador é modificado DEPOIS.
“++x” será avaliado como “x + 1”, e x será igual a “x + 1”
“x++” será avaliado como “x”, e x será igual a “x + 1”
Operadores Aritméticos

Multiplicação e Divisão
– Operações binárias.
– São avaliadas como a multiplicação/divisão dos
operandos.
 Com tipos integrais, a divisão tem resto.
 Com tipos de ponto flutuante, não.
Exemplo:
“6/4” (avaliado como “1”)
“3.2/2” (avaliado como “1.6”)
Operadores Aritméticos

Módulo
– Operação binária
– É avaliado como o resto da divisão integral dos
operandos.
 Com tipos integrais, tem valor integral.
 Não existe para tipos de ponto flutuante.
Exemplo:
“6 % 2” (avaliado como “0”)
“19 % 3” (avaliado como “1”)
Operadores Aritméticos

Atribuição
– Operação binária
– O operando da esquerda é modificado para o valor do
operando da direita.
Exemplo:
“var = 2”
“i = 0”
“tentativas = 40”
“a = b + c”
Operadores Aritméticos

Atribuição
– Podem ser abreviadas as atribuições que tem à direita uma
expressão que contém o operando da esquerda.
– A abreviação fica na forma “variavel operador= expressão”
Exemplo:
“A += B” (idêntica a “A = A + B”)
“i += 1” (“i = i + 1”)
“cota /= 2” (“cota = cota / 2”)
Operadores Relacionais

Representam Relações binárias sobre números, avaliadas
como Verdadeiro ou Falso*
Operador
Relação
>
Maior-que
>=
Maior-ou-igual-a
<
Menor-que
<=
Menor-ou-igual-a
==
Igual-a
!=
Diferente de
*: Em C, Falso é representado pelo valor numérico “0”, e Verdadeiro por um outro
valor qualquer.
Existem as constantes TRUE e FALSE para esses valores.
Operadores Aritméticos

>, >=, < e <=
– Operações binárias
– Serão avaliados como Verdade, se os valores
concordarem com a expressão. Caso contrário, serão
avaliados como Falso.
Exemplo:
“3 > 4” (Falso)
“5 >= -1” (Verdade)
“i < 100” (Depende de i)
Operadores Aritméticos

== e !=
– Operações binárias
– Avaliam se os operandos são iguais ou diferentes.
Exemplo:
“A == B” (Depende das variáveis)
“i != 0” (Depende de i)
“5 != 7” (Verdade)
“200 == 3” (Falso)
Operadores Lógicos

Operam sobre valores Verdadeiro ou Falso, e são avaliados
também como Verdadeiro ou Falso.
Operador
Relação
&&
E (AND)
||
OU (OR)
!
NÃO (NOT)

E (AND) será Verdade se os dois operandos forem Verdade.
 OU (OR), se algum dos dois forem Verdade.
 NÃO (NOT), se o operando for Falso.
Exemplo:
“A && B” (Depende de A e B)
“!FALSE” (Verdade)
Precedência

Ao ser avaliadas, as Expressões seguem uma sequência
estabelecida para avaliar cada sub-expressão.
 Essa sequência serve para eliminar ambiguidades na
avaliação de expressões.
Exemplo:
“A + B * C” (“B * C” Será avaliado primeiro)
“rodas = carros * 4 + bicicletas * 4”
(as multiplicações serão avaliadas, depois a soma, e por ultimo
a atribuição)
Precedência

Sequência
Avaliados Antes
Desempate
var++ var-- () [] . ->
Esquerda para Direita
++var --var + - ! ~ (cast) * &
Direita para Esquerda
*/%
Esquerda para Direita
+-
Esquerda para Direita
< <= > >=
Esquerda para Direita
== !=
Esquerda para Direita
&&
Esquerda para Direita
||
Esquerda para Direita
Condição Ternária ( c?t:f)
Direita para Esquerda
Atribuições ( =, +=, etc.)
Direita para Esquerda
Avaliados Depois
Comandos de Decisão

Usados para definir o que deve ser feito, levando em conta
condições definidas pelo programador.
 Existem 3 tipos:
– If – Else if – Else.
– Switches.
– Condição ternária.

Cada um é melhor para um tipo de tarefa.
If – Else if - Else

Funciona
na forma:
Em C:
Se
if (isto)
(isto) é verdade
faça
aquilo;
aquilo;
Se
elsenão
if é, e (isso) é verdade,
faça aquela outra coisa;
Se
elsenão
if é, e (isso aqui) é verdade,
faça essa coisa aqui;
Se
elsenenhum,
faça essa última coisa;
If – Else if - Else

Se for necessário executar mais de um comando,
podem ser usadas chaves “{ }”:
if(a > b)
{
isso();
aquilo();
}
else
{
outra_coisa();
a++;
}
If – Else if - Else


As condições “else if” e “else” são opcionais.
Apenas um dos blocos de comandos será executado.
Se uma das condições for verdade, as seguintes
serão ignoradas.
Exemplo:
if(TRUE)
isso();
else
aquilo();
“isso()” sempre será executada,
pois “TRUE” sempre é avaliado
como verdade, fazendo com que
“aquilo()” nunca seja executado.
Switch

Em C: quando a decisão depende que uma única
Usado
variável tenha valores arbitrários:
Caso
switch (isto)
{
seja
case isso:
faça aquilo;
pare;
break;
seja
case isso aqui:
faça aquilo alí;
pare;
break;
se
nenhum desses:
default:
faça essa última coisa;
pare;
break
}
Switch


O comando “default” é opcional.
O comando “break” é usado para sair do bloco de
código. Se não for usado, o programa continua a
executar a sequência, “invadindo” outro “case” do
switch*.
Exemplo:
switch (colocação)
{
case 1:
comemorar();
case 15:
chorar();
break;
Se “colocação” for “1”,
“comemorar()” será executado,
e o programa continuará e
executará “chorar()”.
Se “colocação” não for nenhum
dos dois, como não há
condição “default”, nada é
feito.
}
*: Isso pode ser usado a seu favor, mas atinge a legibilidade do código.
Comando Ternário

Serve para decisões pequenas, do tipo:
isto é verdade? Faça isso. Se não, faça aquilo.

Em C:
isto ? Isso() : aquilo();


Pode ser usado para escolher o lado direito de uma
atribuição.
Usar somente com decisões pequenas, pois pode
dificultar a leitura do código.
Exemplo:
“A = b > a ? b : a;”
“i > j ? i /= j : j /= i;”
Comentários



Servem para anotar coisas relevantes ao código, de
forma a explicar certos trechos de código ou deixar
informação relevante.
São ignorados pelo compilador, não afetando de
forma alguma no programa compilado.
São extremamente importantes em projetos maiores,
onde colegas, supervisores ou até você mesmo
podem esquecer os detalhes daquela implementação
específica.
Comentários

Em C existem dois tipos:
– Em linha:
– Em bloco:
Assinalado por “//”.
Tudo na linha após “//” é ignorado.
Assinalado por “/*” e “*/”
Tudo entre “/*” e “*/” é ignorado.
Exemplo:
If (a > b) //se isso for verdade,
isso(); // faz isso,
Else // se não, algo deu errado,
avisa(); //um aviso será dado
/* essa função faz isso e aquilo,
E deve ser tomado cuidado para
não fazer aquela outra coisa.
*/
Int faz_isso(int a, int b);
Dúvidas?
Exercício 1

Escreva um programa que recebe um inteiro
positivo e imprime "sim" se o inteiro for um
múltiplo de 3 e "não" caso contrário.
Exercício 2

Faça um programa que receba 3 números do
usuário e imprima qual é o maior e qual é o menor
número.
Exercício 2

Fazer um programa que mostre num menu as
opções:
1.SOMA
2.SUBTRAÇÃO
3.MULTIPLICAÇÃO
4.DIVISÃO
e em seguida, receba 2 números e realize a
operação de acordo com a opção do usuário.
Imprima o resultado na tela.
Download

Exemplo