Buscar

ALGORITMOS E PROGRAMAÇÃO

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

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

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ê viu 3, do total de 11 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

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

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ê viu 6, do total de 11 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

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

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ê viu 9, do total de 11 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

Prévia do material em texto

04/04/2013
1
AULA 4
EXPRESSÕES
Autor: Anibal Tavares de Azevedo 
ALGORITMOS E 
PROGRAMAÇÃO DE COMPUTADORES
Definição: uma Expressão é uma combinação de
variáveis, constantes e operadores. O resultado da
avaliação daquela expressão é o valor que é atribuído
à variável indicada.
Isto significa que o valor 27 será atribuído 
à variável conta.
43421
Expressão
conta 8163 ++←Exemplo 1
EXPRESSÕES
04/04/2013
2
Definição: Uma expressão é uma combinação de variáveis, constantes e
operadores. O resultado de uma expressão é atribuído à variável indicada.
Exemplo 1
#include<stdio.h>
#include<stdlib.h>
main()
{
int conta;
conta = 3 + 16 +8;
printf(“ %d ”,conta);
system(“pause”);
}
Código C
conta←3+16+8
Em termos de memória
conta
27
conta
EXPRESSÕES
1
1
2
2
O exemplo 3 está errado, pois na expressão Resultado a variável 
Termo2 não contém valor.
Termo2/Termo1Resultado 
28,60.7 Termo2 
7.413.6Termo1 2 Exemplo
←
∗←
+←
28.60.7Termo2 
Termo2/Termo1Resultado 
7.413.6Termo1 3 Exemplo
∗←
←
+←
Termo1=21
Termo2=20.02
resultado = 1.048951
EXPRESSÕES
04/04/2013
3
#include<stdio.h>
#include<stdlib.h>
main()
{
float Termo1, Termo2, resultado;
Termo1= 13.6+7.4;
Termo2= 0.7*28.6;
resultado = Termo1/Termo2;
printf(“ Resultado = %f ”,resultado);
system(“pause”);
}
Código C Exemplo2
Variáveis
Termo1, Termo2, resultado: real
Inicio
Termo1←13.6+7.4;
Termo2←0.7*28.6;
resultado ←Termo1/Termo2;
Escreva(“Resultado=“,resultado);
Fim
Algoritmo Exemplo2
resultado
21.0 20.02
Termo1 Termo2 resultado
Em termos de memória
Termo1 Termo2
21.0
21.0 20.02
Termo1 Termo2 resultado
1.04
EXPRESSÕES
1
1
2
2
3
3
1
2
3
Problema de Lógica : os componentes de uma expressão só 
podem ser avaliados se seus valores já estiverem definidos.
Variáveis
Termo1, Termo2, resultado: real
Inicio
Termo1←13.6+7.4
Resultado ← Termo1 / Termo2
Termo2←0.7*28.6
Escreva(“Resultado=“,resultado)
Fim
Algoritmo Exemplo3
resultado
21.0
Termo1 Termo2 resultado
Em termos de memória
Termo1 Termo2
21.0
21.0
Termo1 Termo2 resultado
Não tem como calcular o valor da variável resultado pois,
a variável Termo2 ainda não recebeu nenhum valor. Isto 
causa então, um erro de lógica.
1
1
2
3
2
3
EXPRESSÕES
04/04/2013
4
Em termos de memória
Inicialmente o valor zero é 
atribuído á variável X e o valor 
3 é atribuído à variável A.
A seguir é atribuído à variável 
X o valor de A + 1, e assim o 
valor de X passa a ser 4
Modificando um valor: O valor de uma variável pode ser
modificado tantas vezes quantas for necessário e a última
modificação é a que fica armazenada.
#include<stdio.h>
#include<stdlib.h>
main()
{
int X, A;
X = 0;
A = 3;
X = A+1;
printf(“Valor de X= %d ”,X);
system(“pause”);
}
Código C Exemplo4
0
X
3
A
4
X
3
A
EXPRESSÕES
1
2
1
2
Modificando um valor: O valor de uma variável pode ser 
modificado tantas vezes quantas for necessário e a última 
modificação é a que fica armazenada.
#include<stdio.h>
#include<stdlib.h>
main()
{
int X;
X = 0;
X = X+1;
printf(“Valor de X= %d ”,X);
system(“pause”);
}
Código C Exemplo5 Em termos de memória
Inicialmente o valor zero é 
atribuído á variável X. 
A seguir o computador pega o valor 
de X que está na caixinha, soma uma 
unidade e devolve o valor resultante 
a variável X
Observe que aqui foi feito um 
incremento no valor da variável X
0
X
1
X
EXPRESSÕES
1
2
1
2
04/04/2013
5
Linguagem C: Na linguagem C existem 3 formas de se realizar o 
incremento/decremento de uma variável.
Cuidado: As operações são equivalentes quando aparecem isoladas, 
mas produzem efeitos diversos quando presentes em 
expressões.Veja os exemplos abaixo:
x = x + 1; x++; ++x;x ←←←← x + 1;
Em linguagem C
1) y = x++; → Nesta expressão primeiro é atribuído o valor de X à variável Y,
depois o valor de X é incrementado de 1. Se por exemplo o valor inicial de
X for 1, ao final da atribuição os valores Y=1 e X=2.
2) y = ++x; →Nesta expressão primeiro o valor de X é incrementado de 1,
depois o valor de X é atribuído a variável Y. Se por exemplo o valor inicial de X
for 1, ao final da atribuição os valores serão Y=2 e X=2.
EXPRESSÕES
Operadores: quando uma expressão possui mais de um tipo de 
operação é necessário determinar qual é a prioridade na avaliação 
destas.
Exemplo 6: Seja a expressão: x ←←←← 3+6 * 13. Qual será o valor resultante 
de x ←←←←? Podemos ter por, exemplo, os dois casos a seguir:
x ←(3 + 6)*13 
9
117
x ←3 + (6*13)
78
81
Caso 1 Caso 2
EXPRESSÕES
04/04/2013
6
As operações para avaliação de uma dada expressão obedecem à 
uma regra de prioridade fornecida na Tabela abaixo.
Classe Operador Significado
1 ↑ Exponenciação: é aplicada da esquerda para a direita.
2 - , + 
Menos e mais unários: são aplicados da 
esquerda para a direita.
3 * , / 
Multiplicação e divisão são aplicadas da 
esquerda para a direita.
4 + , -
Adição e subtração são aplicadas da 
esquerda para a direita.
EXPRESSÕES
Prioridade: se operadores de mesma classe aparecerem mais de 
uma vez em uma expressão realize as avaliações da esquerda para 
a direita.
x ← 8 + 7 * 3 + 4 * 5 
21 20++8
1 2
3
29 + 20
4
49
Exemplo 7: Seja a expressão x ←8+7*3+4*5. Qual será o valor de X ?
EXPRESSÕES
04/04/2013
7
Prioridade: o uso de parênteses serve para modificar as prioridades 
na avaliação dos operadores em uma expressão.
x ← (8 + 7) * (3 + 4) * 5 
7 5**15
1 2
3
105 * 5
4
525
Exemplo 8: Para esta expressão x ←(8+7)*(3+4)*5. Qual será o 
valor de X?
EXPRESSÕES
x ←(3*(6+2))*8
Exemplo 9 Programa em C 
#include <stdio.h>
#include <stdlib.h>
// Programa principal
main()
{
int X, Y;
X = (6+2); printf(“ X = %d ”,X);
X = 3*X; printf(“ X = %d ”,X);
X = X*8; printf(“ X = %d ”,X);
Y = (3*(6+2))*8; printf(“ Y = %d ”,Y);
system(“pause”);
}
8
(3 8** 8)
1
2
3
192
24 *
(3 * (6 + 2)) * 8 
EXPRESSÕES
04/04/2013
8
x ← -3 * 7 + 2 ↑ 3 / 4 -6
Exemplo 11 Programa em C 
// Incluindo biblioteca math.h
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Programa Principal que usa pow.
main()
{
float X;
X = -3*7+pow(2,3)/4-6;
printf(“ X = %f ”,X);
system(“pause”);
}
-3 * 7 + 2 ↑ 3 / 4 - 6 
/
1
8 4 6--3 * 7 + 
2
-21 + /8 4 6-
3
-21 + 6-2
-25
4 5
EXPRESSÕES
Alternativa: a linguagem C permite outra forma de representar 
as operações aritméticas entre dois números x e y.
Algoritmo C operação 1 C operação 2
x ← x + y x = x + y; x += y;
x ← x - y x = x - y; x -= y;
x ← x * y x = x * y; x *= y;
x ← x / y x = x / y; x /= y;
x ← x % y x = x % y; x %= y;
Resto da divisão inteira
(x e y tem que ser inteiros)!
EXPRESSÕES
04/04/2013
9
EXPRESSÕES
Conversão explícita ou cast: os valores atribuídos a uma 
variável são promovidos para um tipo definido explicitamente pelo 
usuário.
Exemplo 12: Seja a atribuição 
Abaixo, onde x e y são inteiros
x ← 5.0;
y ←2.0;
r ←float(x)/y;
Programa em C 
#include <stdio.h>
#include <stdlib.h>
main()
{
int X, Y; 
float R;
X = 5.0;
Y = 2.0;
R = float(X)/Y; 
printf(“ float(X)/Y = %f ”,R);
system(“pause”);
}
Observação: O resultado da 
divisão entre dois inteiros 
seria inteiro, mas o 
resultado a ser fornecido 
será real (float), devido ao 
uso do operador float(X). 
C ←A*B - I;
C = 4.0*6.0-3;
C = 21.0;
K ←I/4 * 6;
K = 0 * 6;
K = 0;
Apesar da variável I serinteira, o resultado 
desta expressão será 
um número real 
porque a variável C é 
real. 
Comentário
A expressão I/4 
fornece o valor inteiro
(zero), ao invés de 0.75 
pois I é inteiro e 4
também.
Comentário
C ←A/B+1.5;
C=6.0/4.0+1.5;
C=3.0;
Exercício 1: Sejam A, B e C variáveis reais e K, I, J variáveis 
inteiras. Dados A=4.0, B=6.0 e I=3. Quais serão os valores finais 
obtidos com os seguintes comandos?
A expressão A/B 
fornece um valor real
e igual a 1.5. Este valor 
será somado ao valor 
1.5 resultando em 3.0. 
Comentário
EXPRESSÕES
04/04/2013
10
Problema 1: Ler dois números inteiros exibi-los. Depois, trocar os 
valores entre si e exibir novamente.
Algoritmo
(1) Leia(A,B);
(2) Mostre(A,B);
(3) C ← A;
(4) A ← B;
(5) B ← A;
(6) Mostre(A,B);
(4)
A B
x
C
(5)
A B
y
C
x x
x
Em termos de memória 
(3)
A B C
x y x
y
EXPRESSÕES
Problema 1: Ler dois números inteiros exibi-los. Depois, trocar 
os valores entre si e exibir novamente.
Algoritmo
(1) Leia(A,B);
(2) Mostre(A,B);
(3) C ← A;
(4) A ← B;
(5) B ← A;
(6) Mostre(A,B);
Programa em C
// Incluir bibliotecas !
main()
{
int A, B, C;
printf(“Digite A e B: ”);
scanf(“%d %d”,&A,&B);
printf(“A = %d e B = %d \n”,A,B);
C = A;
A = B;
B = A; 
printf(“A = %d e B = %d \n”,A,B);
system(“pause”);
}
EXPRESSÕES
04/04/2013
11
Problema 2: Determinar o saldo ao final do 3º mês de uma 
aplicação financeira com investimento inicial de R$300,00 e 
juros de 1% ao mês.
Algoritmo
Leia(A);
i ← 0.01;
P ← A + A*i;
S ← P + P*i;
T ← S*(1+i);
Mostre(T);
0
A
1
P=A+A*i
2
S
3
T Programa em C
// Incluir bibliotecas !
main()
{
float A, P, S, T, i;
printf(“Digite invest. e juros: ”);
scanf(“%f %f”,&A,&i);
P = A*(1+i);
S = P*(1+i);
T = S*(1+i);
printf(“Valor final = %f \n”, T);
system(“pause”);
}
EXPRESSÕES
FIM !!!
AULA 4

Outros materiais