Operadoresebrito.com.br/profa-elaine/C2.pdfOperadores Aritméticos •Os operadores aritméticos...
Transcript of Operadoresebrito.com.br/profa-elaine/C2.pdfOperadores Aritméticos •Os operadores aritméticos...
Operadores
• A linguagem C é muito rica em operadores internos.
• Ela define quatro classes de operadores: – Aritmético: -, +, *, /, %, --, ++
– Relacionais: >, <, >=, <=, ==, !=
– Lógicos: &&, ||, !
• Além disso, C tem alguns operadores especiais para tarefas particulares.
Operadores Aritméticos
Operadores Aritméticos • Os operadores aritméticos são usados para calcular
expressões matemáticas.
• São classificados em duas categorias: os binários ou unários.
• Operadores binários (descrição):
= Atribuição
+ Adição
- Subtração
/ Divisão
* Multiplicação
• Operadores unários (ação):
+ Sinal positivo
- Sinal negativo
• Os operadores unários atuam na inversão de valores.
Operadores de incremento e decremento
• O operador de incremento (++) soma 1 ao seu operando enquanto que o de decremento (--) subtrai um.
• Eles podem ser pré-fixados ou pós-fixados Operador Instrução Pós-fixado Pré-fixado
++ var=var+1; var=var++; var=++var;
ou var++; ou ++var; -- var=var-1; var=var--; var=--var; ou var--; ou --var;
Operadores de incremento e decremento
• Exemplos: a++; (equivale a a = a + 1;)
• Considerando a = 2: –Pós-fixado:
b = a++;
resulta em b = 2 e a = 3 (primeiro atribui, depois incrementa)
–Pré-fixado:
b = ++a;
teremos b = 3 e a = 3 (primeiro incrementa, depois atribui)
Operadores - precedência
• A precedência dos operadores aritméticos é a seguinte:
• Operadores do mesmo nível de precedência são
avaliados pelo compilador da esquerda para a direita;
• Parênteses podem ser usados para alterar a ordem de avaliação.
Operadores - precedência
• Observe o exemplo a seguir
Exercícios
int n1, n2, n3; n1 n2 n3
n2=n3=0; - 0 0
n1=2; 2 0 0
n1 += n1 * 10;
n2 = n1 / 5;
n3 = n2 % 5 * 7 ;
n2 *= n3-- % 4;
Exercícios
int n1, n2, n3; n1 n2 n3
n2=n3=0; - 0 0
n1=2; 2 0 0
n1 += n1 * 10; 22 0 0
n2 = n1 / 5;
n3 = n2 % 5 * 7 ;
n2 *= n3-- % 4;
Exercícios
int n1, n2, n3; n1 n2 n3
n2=n3=0; - 0 0
n1=2; 2 0 0
n1 += n1 * 10; 22 0 0
n2 = n1 / 5; 22 4 0
n3 = n2 % 5 * 7 ;
n2 *= n3-- % 4;
Exercícios
int n1, n2, n3; n1 n2 n3
n2=n3=0; - 0 0
n1=2; 2 0 0
n1 += n1 * 10; 22 0 0
n2 = n1 / 5; 22 4 0
n3 = n2 % 5 * 7 ; 22 4 28
n2 *= n3-- % 4;
Exercícios
int n1, n2, n3; n1 n2 n3
n2=n3=0; - 0 0
n1=2; 2 0 0
n1 += n1 * 10; 22 0 0
n2 = n1 / 5; 22 4 0
n3 = n2 % 5 * 7 ; 22 4 28
n2 *= n3-- % 4; 22 0 27
Operadores Relacionais e Lógicos
Operadores relacionais
• Os operadores relacionais do C realizam comparações entre variáveis. São eles:
• Os operadores relacionais retornam verdadeiro (1) ou falso (0).
• Em C, verdadeiro é qualquer valor diferente de zero.
• Os operadores relacionais tem precedência menor do que os operadores aritméticos, veja:
int a = 10, b = 1, c = 12;
a > b + c; • O resultado da expressão acima é: Falso
Operadores relacionais
Operadores Lógicos
• Os operadores lógicos definidos por C são os seguintes:
• A tabela da verdade dos operadores lógicos são mostrados a seguir, usando 1s e 0s:
• Uma expressão lógica é uma comparação que sempre retorna valor verdadeiro ou falso.
• Podemos atribuir o resultado de uma expressão lógica à uma variável
resposta ← a = b se a possui valor 1 e b possui valor 1, então
resposta deve receber true(verdadeiro)
se a possui valor 1 e b possui valor 2, então
resposta deve receber false(falso)
• O tipo da variável resposta que armazena os resultados das expressões lógicas é o booleano.
• Em Pascal temos o tipo boolean que pode receber como valores true (verdadeiro) ou false (falso) enquanto que em C não existe o tipo booleano. O resultado de uma expressão lógica em C pode ser 0 (falso) ou qualquer outro valor inteiro (verdadeiro). Para armazenar um valor booleano em C podemos usar uma variável inteira ou char.
Operadores Lógicos
Estrutura condicional
Em Pascal
if (condição) then
begin
comandos
end
else
begin
comandos
end
Em C
if (condição)
{
comandos
}
else
{
comandos
}
Exemplo - IF
• Um esporte só pode ser praticado por maiores de 18 anos e a divisão é feita por peso:
– até 80kg é considerado peso-leve,
– acima de 80kg até 130kg, peso-pesado,
– acima disso não é permitido praticar este esporte.
Pascal C OBS: quando temos vários scanf seguidos, para limpar o buffer e descartar os enters, usamos o formatador %*c
Pascal C OBS: quando temos vários scanf seguidos, para limpar o buffer e descartar os enters, usamos o formatador %*c
Exemplo
#include <stdio.h>
int main (void)
{
int a;
printf("Insira um numero inteiro:");
scanf("%d",&a);
if (a%2 == 0)
printf("Voce inseriu um numero par!\n");
return 0;
}
Exemplo
#include <stdio.h>
int main (void)
{
int a;
printf("Insira um numero inteiro:");
scanf("%d",&a);
if (a%2 == 0)
{
printf("Voce digitou o numero %d\n",a);
printf("Voce inseriu um numero par!\n");
}
return 0;
}
Exemplo #include <stdio.h>
int main (void)
{
int a;
printf("Insira um numero inteiro:");
scanf("%d",&a);
if (a%2 == 0)
printf("Voce inseriu um numero par!\n");
else
printf("Voce inseriu um numero impar!\n");
return 0;
}
if aninhado
#include <stdio.h>
int main (void)
{
int a, b;
printf("Insira dois numeros inteiros:");
scanf("%d%d",&a,&b);
if (a%2 == 0)
if (b%2 == 0)
printf("Voce inseriu dois numeros pares!\n");
return 0;
}
if com operador lógico
int main (void) { int a, b; printf("Digite dois numeros inteiros:"); scanf("%d%d",&a,&b); if ((a%2 == 0) && (b%2 == 0)) printf ( "Voce digitou dois numeros pares!\n"); return 0; }
Operador condicional C possui também um
chamado operador condicional.
Trata-se de um operador que substitui construções do tipo:
...
if ( a > b )
maximo = a;
else
maximo = b;
...
• Sua forma geral é:
condição ? expressão1 : expressão2;
se a condição for verdadeira, a expressão1 é considerada;
caso contrário, considera-se a expressão2.
• O comando:
maximo = a > b ? a : b ;
substitui a construção com if-else mostrada acima.
Exercício Dados três números naturais, verificar se eles
formam os lados de um triângulo e ainda dizer se é um triângulo retângulo.
Testar com lados 3, 4 e 5.
Lembre-se que para ser triângulo:
a<(b+c)
b<(a+c)
c<(a+b)
Para ser triângulo retângulo:
hipotenusa2=cateto2+cateto2
Lembre-se que a hipotenusa é o maior lado!
Correção #include <stdio.h> int main() { int a, b, c; printf("Digite tres numeros naturais: "); scanf("%d%d%d", &a,&b,&c); /*verifica se forma triangulo*/ if ((a<(b+c))&&(b<(a+c))&&(c<(a+b))) { if ((a*a == b * b + c * c)||(b*b == a * a + c * c)||(c*c == a * a + b * b)) printf("O triangulo é retangulo\n"); else printf("O triangulo não é retangulo\n"); } else printf("Os valores digitados não formam um triangulo \n"); return 0; }
Exemplo – SWITCH/CASE
• A mãe pergunta ao filho sobre o que ele gostaria de comer entre bolo, salgado, pipoca ou sorvete. Dependendo da resposta, ela compra os ingredientes corretos para o preparo da opção escolhida. Se ele disser outra coisa qualquer, ela nega.
Pascal C
Notem que no Pascal temos else e em C temos default
Exemplo #include <stdio.h>
int main (void)
{
int n;
printf("Digite um numero\n");
scanf ("%d", &n);
switch (n)
{
case 1:
printf(" domingo\n");
break;
case 2:
printf(" segunda-feira\n");
break;
case 3:
printf(" terça-feira\n");
break;
case 4:
printf(" quarta-feira\n");
break;
case 5:
printf(" quinta-feira\n");
break;
case 6:
printf(" sexta-feira\n");
break;
case 7:
printf(" sábado\n");
break;
default:
printf(" inválido\n");
break;
}
return 0;
}
Exercício
Faça uma calculadora de quatro operações usando a estrutura switch
printf("Digite: numero op numero\n");
scanf ("%f %c %f", &num1, &op, &num2);
Exercício /* calculadora de quatro operações */
#include <stdio.h>
int main (void)
{
float num1, num2;
char op;
printf("Digite: numero op numero\n");
scanf ("%f %c %f", &num1, &op, &num2);
switch (op)
{
case '+':
printf(" = %f\n", num1+num2);
break;
case '-':
printf(" = %f\n", num1-num2);
break;
case '*':
printf(" = %f\n", num1*num2);
break;
case '/':
{
if(num2!=0)
printf(" = %f\n", num1/num2);
else
printf(" não existe divisão por 0\n");
}
default:
printf("Operador invalido!\n");
break;
}
return 0;
}