Baixe o app para aproveitar ainda mais
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
Compartilhar