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