Buscar

Algoritmos 04 - Expressoes Aritmeticas e Logicas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

N575 - Algoritmos e 
Programação de Computadores 
 
Modelo Algorítmico - Operações Aritméticas e Lógicas 
 
 
Prof. Raphael Torres Santos Carvalho 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
1 
Roteiro 
 Objetivo 
 Expressões Aritméticas 
 Operadores Aritméticos 
 Expressões Lógicas e Relacionais 
 Operadores Relacionais 
 Operadores Lógicos 
 Operadores bit-a-bit 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
2 
Objetivo 
 Identificar os conceitos básicos para a construção de 
algoritmos. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
3 
Relembrando... 
 Vimos que nada “entra ou sai” do computador sem passar 
pela memória principal 
 Vimos que algoritmos manipulam dados, sejam eles de 
entrada, parte do processamento ou dados de saída 
 Esses dados são armazenados na memória principal 
 Para acessarmos os dados na memória fazemos uso do 
conceito de variável 
 Uma VARIÁVEL é um espaço em memória 
 Possui um NOME e um TIPO 
 Seu CONTEÚDO pode variar ao longo do tempo (execução do 
programa) 
o Embora seu valor possa mudar ao longo do tempo, ela só pode 
armazenar um valor a cada instante 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
4 
Relembrando... 
 Variável: identificador, tipo e conteúdo 
 O IDENTIFICADOR uma abstração do endereço => é mais fácil 
usarmos um nome para nos referirmos a uma variável do que 
seu endereço (numérico) 
 O TIPO informa ao tradutor da linguagem quanto de espaço deve 
ser reservado para a variável. Em Linguagem C temos os tipos int, 
char, float e double. 
 O CONTEÚDO é o valor de dado armazenado => pode ser 
alterado (lido ou escrito) durante o processamento 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
5 
Operador atribuição 
 Atribuição 
 É a operação mais simples do C, e consiste em atribuir um valor 
constante ou valor de uma expressão a uma variável. 
 Sintaxe: 
variável = expressão; 
 Observações: 
 Não confundir este operador com o sinal aritmético de igualdade. 
 Reparar qual o tipo de variável que vai receber a atribuição. O 
que está do lado direito do operador de atribuição deve ser do 
mesmo tipo do que está do lado esquerdo. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
6 
Expressões 
 Expressões combinam variáveis, operadores e constantes para 
produzir um resultado 
 Variáveis representam posições de memória onde estão dados 
que serão processados. 
 Constantes são símbolos usados para representar dados. 
 Operadores são usados para combinar as variáveis e 
constantes fornecendo um valor como resposta. 
Expressões 
 Será muito comum o uso de expressões (fórmulas) aritméticas 
e lógicas, uma vez que na sua maioria todo trabalho 
computacional está relacionado e envolve a utilização de 
cálculos. 
 Estas expressões são definidas pelo relacionamento existente 
entre variáveis e constantes numéricas através de operadores 
específicos. 
 Exemplos: 
 Média = (1* Media_NP1 + 2* Media_NP2) / 2 
 4%3 + 5 
 A > B 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
8 
Expressões Aritméticas 
 Uma expressão aritmética é aquela cujos operadores são 
aritméticos (+, - , *, /, ... ) e cujos operandos são constantes e 
variáveis do tipo numérico (inteiro e/ou real). 
 Exemplo: 
 ¼ - resultado 0.25 
 (2+4)/(3+7) – resultado 0.6 
 10%3 – resultado 1 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
9 
Operadores Aritméticos 
 Operadores aritméticos são o conjunto de símbolos que 
representam as operações básicas da matemática. 
 Estas operações guardam entre si uma hierarquia, que 
determina em que ordem devem ser resolvidas em uma 
expressão aritméticas. 
 As expressões que têm prioridade maior devem ser resolvidas 
primeiramente. Para as operações de mesma prioridade, 
primeiro resolvemos as operações mais à esquerda e depois 
as mais à direita da expressão. 
 Para alterar a prioridade das operações, utilizamos 
parênteses. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
10 
Operadores Aritméticos 
 Em nossos algoritmos os operadores aritméticos são representados 
pelos símbolos a seguir. 
 
 
 
 
 
 
 
 
 
 
 
 
 O operador / (divisão) quando aplicado a variáveis inteiras, nos fornece o 
resultado da divisão inteira; quando aplicado a variáveis em ponto flutuante 
nos fornece o resultado da divisão "real". 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
11 
Operador Ação 
+ Soma (inteira e ponto flutuante) 
- 
Subtração ou Troca de sinal (inteira e 
ponto flutuante) 
* Multiplicação (inteira e ponto flutuante) 
/ Divisão (inteira e ponto flutuante) 
% Resto de divisão (de inteiros) 
++ Incremento (inteiro e ponto flutuante) 
-- Decremento (inteiro e ponto flutuante) 
P
reced
ên
cia 
Operadores Aritméticos 
 Operadores Incrementais/Descrementais em expressões 
 Quando um operador de decremento (ou incremento) precede 
seu operando, o C executa a operação de decremento (ou 
incremento) antes de usar o valor do operando. 
 Se o operador estiver após seu operando, o C usará o valor do 
operando, antes de decrementá-lo (ou incrementá-lo). 
 Exemplos: 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
12 
char x, y; 
 
x = 10; 
y = ++x; 
printf("x = %d, y = %d\n",x, y); 
x = 10; 
y = x++; 
printf("x = %d, y = %d\n",x, y); 
char a, b, c, i = 3; 
 
a = i++; 
b = ++i; 
c = --i; 
printf("a = %d, ", a); 
printf("b = %d, ", b); 
printf("c = %d\n", c); 
Operadores Aritméticos 
 Exemplo: 
 
int a = 17, b = 3; 
int x, y; 
float z = 17. , z1, z2; 
a++; 
x = a / b; 
y = a % b; 
z1 = z / b; 
z2 = a/b; 
 
 Quais os valores das variáveis x, y, z1 e z2 após a execução 
deste trecho de programa? 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
13 
Expressão Lógicas e Relacionais 
 Uma expressão lógica é aquela cujo resultado é VERDADEIRO 
ou FALSO, 1 ou 0, ligado ou desligado. 
 Nestas expressões estão envolvidas comparações, que são 
feitas com o uso de operadores relacionais, e a formação de 
novas proposições usando operadores lógicos. 
 A idéia de verdadeiro e falso é a base dos conceitos dos 
operadores rela-cionais e lógicos. 
 Em C, qualquer valor inteiro pode assumir um valor lógico. 
 Em C, VERDADEIRO é qualquer valor diferente de zero. Zero é 
FALSO 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
14 
Operadores Relacionais 
 São operadores binários (demesma prioridade) que somente retornam 
os valores lógicos V ou F. 
 
 
 
 
 
 
 
 
 
 Observações: 
 Os símbolos '≥' , '≤' , '≠' não são operadores e sim caracteres ASCII. 
 Não confundir o operador de atribuição = com o operador relacional ==. 
 São operadores binários e sempre enxergarão os operandos como sendo 
variáveis numéricas. 
 O resultado de uma operação relacional sempre será um valor lógico. 
 
Operador Comparação 
> Maior que 
< Menor que 
>= Maior ou igual 
<= Menor ou igual 
== Igual 
!= Diferente 
Operações Relacionais 
 Operando == operando 
 Retorna verdadeiro quando os operandos forem iguais. 
 Exemplo: 
 
 
 
 Operando != operando 
 Retorna verdadeiro quando os operandos forem diferentes. 
 Exemplo: 
 
Operações Relacionais 
 Operando >= operando 
 Retorna verdadeiro quando o operando da esquerda tiver valor 
maior ou igual que o operando da direita. 
 Exemplo: 
 
 
 Operando <= operando 
 Retorna verdadeiro quando o operando da esquerda tiver valor 
menor ou igual que o operando da direita. 
 Exemplo: 
 
Operações Relacionais 
 Operando > operando 
 Retorna verdadeiro quando o operando da esquerda tiver valor 
maior que o operando da direita. 
 Exemplo: 
 
 
 Operando < operando 
 Retorna verdadeiro quando o operando da esquerda tiver valor 
menor que o operando da direita. 
 Exemplo: 
 
Operações Relacionais 
 Expressão >= expressão 
 Retorna verdadeiro quando a expressão da esquerda tiver valor 
maior ou igual que a expressão da direita. 
 Exemplo: 
 
 Expressão <= expressão 
 Retorna verdadeiro quando a expressão da esquerda tiver valor 
menor ou igual que a expressão da direita. 
 Exemplo: 
 
Operadores Lógicos 
 São usados para combinar expressões relacionais e lógicas. 
 Também retornam como resultado valores lógicos V ou F. 
 
 
 
 
 
 
 Observações: 
 Os operadores lógicos sempre enxergarão o(s) operando(s) como 
sendo variáveis lógicas. 
 O resultado de uma operação lógica sempre será um valor lógico. 
 
Operador Tipo Operação 
! Unário Operador unário de negação 
|| Binário 
Operador que resulta VERDADEIRO quando um dos 
seus operandos lógicos for verdadeiro 
&& Binário 
Operador que resulta VERDADEIRO somente se seus 
dois operandos lógicos forem verdadeiros. 
Operações Lógicas 
 Sejam a, b e c três variáveis lógicas (podem assumir verdadeiro ou 
falso). 
 
 int a, b, c; 
 
 Sejam também as seguintes diretivas de compilação definidas: 
 
 #define TRUE 1 
 #define FALSE 0 
 
 Operação NOT (negação) 
 Sintaxe: 
o variável = !operando; 
 Exemplo: 
o a = FALSE; 
o b = !a; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
21 
a !a 
FALSE TRUE 
TRUE FALSE 
Operações Lógicas 
 Operação AND 
 Sintaxe: 
o variável = operando1 && operando2; 
 Exemplo: 
o a = FALSE; b= TRUE; 
o c = a && b; 
 
 Operação OR 
 Sintaxe: 
o variável = operando1 || operando2; 
 Exemplo: 
o a = FALSE; b= TRUE; 
o c = a || b; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
22 
a b a && b 
FALSE FALSE FALSE 
FALSE TRUE FALSE 
TRUE FALSE FALSE 
TRUE TRUE TRUE 
a b a || b 
FALSE FALSE FALSE 
FALSE TRUE TRUE 
TRUE FALSE TRUE 
TRUE TRUE TRUE 
Operadores bit-a-bit 
 
 
 
 
 
 
 Sejam p e q dois bits de dois inteiros distintos, então os 
operações bit-a-bit podem ser resumidas segundo a tabela a 
baixo: 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
23 
Operação Operador Precedência 
~ Complemento (inversão dos bits) maior 
& Condição E (AND) 
^ Condição OU EXCLUSIVO (XOR) 
| Condição OU (OR) 
<< Deslocamento Lógico a Esquerda 
>> Deslocamento Lógico a Direita menor 
p q p & q p | q ~p p ^ q 
0 0 0 0 1 0 
0 1 0 1 1 1 
1 0 0 1 0 1 
1 1 1 1 0 0 
Operadores bit-a-bit 
 Deslocamentos Lógicos à Esquerda ( << ) e à Direita ( >> ) 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
24 
0x17 << 1 → 0x2E 0x17 >> 1 → 0x0B 
Operadores bit-a-bit 
Exemplos: 
 Sejam a = 0x08 e b = 0x48 dois números inteiros: 
 
 ~a  ~(0000 1000)  1111 0111  0xF7 
 a & 0xF0  (0000 1000) & (1111 0000)  0000 0000  0x00 
 a ^ b  (0000 1000) ^ (0100 1000)  0100 0000  0x40 
 0x0F | b  (0000 1111) | (0100 1000)  0100 1111  0x4F 
 a >> 0x02  (00  0000 10) 00  0000 0010  0x02 
 b << 0x01  0 (100 1000  0)  1001 0000  0x90 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
25 
Operadores bit-a-bit 
 Uma das principais aplicações dos operadores bit-a-bit é 
realizar certas operações aritméticas. 
 O que acontece quando você toma um número binário e 
multiplica por dois? 
 Vamos fazer pelo caminho mais longo para ver exatamente o 
que se passa. Primeiro, escolha um número binário aleatório, 
digamos 0010 1101. Em seguida, escreva-o como uma soma 
de potências de dois, como vimos no início deste curso: 
 
0010 1101 = (1 * 25) + (1 * 23) + (1 * 22) + (1 * 20) 
 
 Eliminar os casos em que o bit é 0, porque as multiplicações 
por 0 não afetam a soma. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
26 
Operadores bit-a-bit 
 Agora, suponha que nós tomamos essa soma de produtos e 
multipliquemos por dois. O que temos, mais uma vez na 
notação expandida: 
 
0010 1101 * 2 = 2(1 * 25) + 2(1 * 23) + 2(1 * 22) + 2(1 * 20) 
0010 1101 * 2 = (1 * 26) + (1 * 24) + (1 * 23) + (1 * 21) 
 
 Observe o que o nosso resultado é: uma vez que o número 
original foi escrito como uma soma de potências de dois vezes 
os bits do número - tudo o que acontece é que os expoentes 
nos 2s aumentam em um cada. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
27 
Operadores bit-a-bit 
 Veja onde eu quero chegar! O resultado da multiplicação é ainda 
uma soma de potências de dois, e como tal, pode ser diretamente 
reduzido a um número binário. 
 
0010 1101 * 2 = (1 * 26) + (1 * 24) + (1 * 23) + (1 * 21) = 0101 1010 
 
 Observe qualquer coisa estranha sobre o resultado? É isso mesmo - 
é o número original, deslocado para a esquerda em uma posição. 
Isto é porque um deslocamento para a esquerda aumenta o peso 
em cada bit em um, o qual é o mesmo que aumentar os expoentes 
sobre os 2s de forma expandida, que é o mesmo que multiplicar por 
dois. 
 Assim, você pode multiplicar por qualquer potência de dois, 
deslocando para a esquerda o mesmo número de posições. Por 
exemplo, se você quisesse multiplicar um número por 16, que é 24, 
você poderia simplesmente deslocá-lo para esquerda quatro 
posições. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
28 
Operadores bit-a-bit 
 Os seguintes pares de afirmações são todos equivalentes uns aos 
outros: 
 
x = y * 8; /* = 23 */ 
x = y << 3; 
 
x = y * 64; /* = 26 */ 
x = y << 6; 
 
x = y * 32768; /* = 215 */ 
x = y << 15; 
 
 Você deve estarse perguntando, se deslocamento para a esquerda é 
equivalente à multiplicação por dois, o deslocamento a direita é 
equivalente à divisão por 2? A resposta é SIM! O deslocamento 
simplesmente diminui o peso de cada bit, o que significa que os 
expoentes nos 2s diminuem todos em um. 
 Note que esta é apenas uma divisão inteira, você não pode obter um 
valor fracionário ou um resto utilizando este artifício 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
29 
Operadores bit-a-bit 
 Os seguintes pares de afirmações são todos equivalentes uns aos 
outros: 
 
x = y / 4; /* = 22 */ 
x = y >> 2; 
 
x = y / 32; /* = 25 */ 
x = y >> 5; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
30 
Dúvidas? 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
31

Outros materiais