Buscar

Notas de aula - Expressões e comandos

Prévia do material em texto

Expressões e Comandos 
Prof. Saulo C. Campos 
Expressão 
• Expressão é uma “frase” do programa que 
necessita ser avaliada e produz um resultado. 
• As expressões são caracterizados pelo operadores, 
operandos e tipo de retorno. 
• Expressões podem ser simples (composta por 
apenas 1 operador) ou compostas. 
• Operadores possuem aridades (número de 
operandos requeridos para a realização da 
operação). 
• Operadores pode ser nativos da LP ou criados por 
programadores. 
Expressão 
• A maioria das operadores oferecidos pela LP são 
de aridade binária. Porém através do uso de 
funções o programador pode criar operadores 
enários. 
• Exemplos de operadores e operandos: 
– X++ (pós-fixado) 
– !y (pré-fixado) 
– 10 % 2 (infixado) 
• As expressões são classificadas de acordo com a 
natureza da operação que realizam. 
 
Expressão Literal 
• São os tipos mais simples de expressões. 
• São utilizadas para produzir um valor fixo, 
referente a um elemento de um tipo e não 
demanda o uso de um operador explícito. 
• Exemplos: 
– 2.72 
– 99 
– “c” 
– 0110110 
Expressão de Agregação 
• É uma expressão construída para obter um valor a 
partir de seus componentes. 
• Os valores resultantes são determinados pela 
avaliação das sub-expressões que a compõem. 
• Deve ser utilizados marcadores de início e fim. 
• Exemplos: 
– int c[] = {1,2,3}; 
– Struct data d = {1, 12, 2013}; 
– Char * x = “abc”; 
 
Expressão de Agregação 
• Expressões de agregação podem ser estáticas 
(definidas em tempo de compilação) ou dinâmicas 
(definidas em tempo de execução). 
• Exemplos dinâmicas e estáticas: 
– int c[] = {1+5,2,12/4}; 
– int d[] = {1*i,2*i,3*i}; 
Expressão Aritmética 
• Envolvem operadores matemáticos e retornam 
tipos numéricos. 
• Exemplos : 
– c = (1.0 + 5.5)/2.0; 
– int d = -2 * i; 
– k = 40 % 5; 
Expressão Relacional 
• São expressões usadas para comparar os valores 
de seus operandos, retornando um tipo booleano 
(com exceção da LP C, que retorna inteiro). 
• Os tipos dos valores envolvidos devem ser os 
mesmos. 
• Exemplos : 
– == 
– != 
– >=, <= 
– <, > 
Expressão Booleana 
• São expressões que realizam operações da álgebra 
de Boole. Os operandos e o resultando da 
operação são booleanos (exceção do C). 
• Exemplos : 
– Conjunção: && 
– Disjunção: || 
– Negação: ! 
Expressão Binária 
• São expressões destinadas a manipulação de bits 
em um dado conjunto de bits. 
• A vantagem é oferecer a LP mais poder para 
criação de programas eficientes, com menos 
tempo de processamento e memória. 
• Operadores oferecidos pelo linguagem C : 
– Conjunção: & 
– Disjunção: | 
– Disjunção exclusiva: ^ 
– Deslocamento de bits: >> e << 
– Complemento (NOT): ~ 
Expressão Condicional 
• São expressões compostas por duas ou mais sub-
expressões, que a partir de uma análise lógica da 
sub-expressão principal retorna como resultado 
uma outra sub-expressão. 
• Exemplo ML: 
val c = if a > b then a – 3 else b + 5; 
 
• Exemplo C, C++ e Java: 
int max = x > y ? X : y; 
par = z % 2 == 0 ? true : false; 
 
 
 
Exemplos (PASCAL) : 
if (a = 5) 
 then a := a-5 
 else a := a+1; 
 
Case x of 
 1: writeln(‘1’); 
 2: writeln(‘2’); 
 3: writeln(‘3’); 
End; 
Chamadas de Funções 
• Também são expressões que são ativadas pela 
através do nome da função (operador) e pela 
passagem de parâmetros (operandos). 
– Exemplo: bool NumeroPar (int N); 
• Vantagem é possibilitar a criação de um operador 
com qualquer aridade. 
• Algumas LP permitem a chamada de função de 
formas diferentes como em ML: 
 val taxa = 
 (if AtrasoPg > 0 then Multa else Desc)(AtrasoPg); 
• É possível fazer isso em C? 
 
Expressão de Referenciamento 
• As expressões de referenciamento possuem duas 
funções: 
a) Acessar o conteúdo de variáveis ou constantes. 
b) Retornar uma referência para os objetos (geralmente, 
o endereço inicial da memória alocada). 
• As mesmas expressões são usadas para ambos os 
casos, o que diferencia é o contexto onde estão 
sendo usadas. Por exemplo, atribuição: 
– Lado esquerdo: retorna a referência da variável. 
– Lada direito: retorna o conteúdo do endereço 
*q = *q+3; int r=3; int p = 2*r; 
 
 
Expressão de Referenciamento 
• Além disso as estruturas de referenciamento serve 
para acessar estruturas de dados compostas. 
• Os operadores e os operandos aceitos variam de 
LP para LP. A seguir os operadores da Linguagem C 
 
Operador Significado 
Pode ser 
usado a 
esquerda 
[] Acesso ao valor ou retorno de referência de elemento vetor Sim 
* Acesso ao valor ou retorno de referência de variável apontada 
pelo ponteiro 
Sim 
. Acesso ao valor ou retorno de referência de tipo composto Sim 
-> Acesso ao valor ou retorno de referência de tipo composto 
(estrutura) apontada por ponteiro 
Sim 
& Retorno de referência a qualquer tipo de variável ou constante Não 
Expressão Categórica 
• Essas expressões são destinadas a realização de 
operações sobre tipos de dados. Como por 
exemplo, informações sobre o tipo da variável e 
conversão de tipos. 
• Os operandos de expressões categóricas são tipos 
ou variáveis as quais deseja-se investigar. 
Expressão Categórica 
• Exemplos em C 
 float *p = (float*) malloc (10*sizeof (float)); 
 int c[] = {1,2,3,4,5}; 
 f = (float) 10/2; 
 
• Exemplos em Java 
 if (p instanceof Medico) 
 System.out.println(“Classe é um médico”); 
 
• Exemplos em DELPHI (Object PASCAL) 
 if (Sender is TEdit) then 
 (Sender as TEdit).Color := clYellow; 
 
Avaliação de Operadores 
• Exemplos em C 
 float *p = (float*) malloc (10*sizeof (float)); 
 int c[] = {1,2,3,4,5}; 
 f = (float) 10/2; 
 
• Exemplos em Java 
 if (p instanceof Medico) 
 System.out.println(“Classe é um médico”); 
 
• Exemplos em DELPHI (Object PASCAL) 
 if (Sender is TEdit) then 
 (Sender as TEdit).Color := clYellow;

Continue navegando