Baixe o app para aproveitar ainda mais
Prévia do material em texto
L i n g u a g e m C L i n g u a g e m C Linguagem C >> Operadores e Expressões Instituto Federal de Educação, Ciência e Tecnologia do Amazonas Campus Manaus - Distrito Industrial (CMDI) L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados L i n g u a g e m C >> Operadores e Expressões Prof. Isaac Benjamim Benchimol ibench@ifam.edu.br 1 L i n g u a g e m C Ementa • Introdução • Operadores e Expressões • Funções de E/S • Estruturas de Controle • Vetores e Matrizes L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 2 • Vetores e Matrizes • Strings • Ponteiros • Funções • Estruturas • Alocação Dinâmica de Memória • Arquivos L i n g u a g e m C Operadores • Operador de Atribuição • Em C o operador de atribuição é o sinal de igual “=”. • É erro comum em programadores iniciantes confundir o “=” com o operador relacional de igualdade “==”. • Exemplos: a = 1; L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 3 a = 1; delta = b * b – 4 * a * c; i = j; • O operando esquerdo deve ser um identificador de variável, isto é, não pode ser uma constante ou expressão. São atribuições inválidas: 1 = a; // constante! b + 1 = a; // expressão! L i n g u a g e m C Conversões de tipos • Se os dois operandos de uma atribuição não são do mesmo tipo, o valor da expressão ou operador da direita será convertido para o tipo do identificador da esquerda. • Exemplo 1: int i; float r; i = 5; // valor de i: 5 L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 4 i = 5; // valor de i: 5 r = i; // valor de r: 5.0 • Exemplo 2: int i; float r = 654.321; i = r; // i será truncado para 654 L i n g u a g e m C Conversões de tipos • Pode-se dizer que as conversões potencialmente perigo- sas (onde há possibilidade de perda de informação) são: char � int � float � double • Observe que o compilador C ao encontrar esta operação não gera nenhum aviso de atenção para o programador. Assim este detalhe pode gerar um erro de programação L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 5 Assim este detalhe pode gerar um erro de programação (bug) que passe desapercebido ao programador inexperiente. É possível dizer que a linguagem C possui tipos ”macios” (soft types) pois a operação com variáveis de tipos diferentes é perfeitamente possível. Esta característica do C se contrapõe a algumas linguagens em que isto não é possível. Estas linguagens possuem tipos “duros” (hard types). L i n g u a g e m C Operadores • Atribuição Múltipla É possível atribuir um valor a muitas variáveis em uma única instrução. int i, j, k; double max, min; i = j = k = 1; max = min = 0.0; L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 6 max = min = 0.0; • Operadores Aritméticos Operador Operação + adição - subtração * multiplicação / divisão % módulo (resto da divisão inteira) L i n g u a g e m C Conversão de tipo (casting) • O operador cast permite forçar uma expressão a ser de determinado tipo: int num; float valor = 13.0; num = valor % 2; // inválido num =(int) valor % 2; // válido L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 7 A conversão de tipo é usada para que o dado armazenado em valor fosse transformado no tipo int assim a operação módulo pode ser efetuada. • Regra geral de conversão de tipos: char � int � float � double L i n g u a g e m C Incremento/Decremento Utilizados para incrementar e/ou decrementar em uma unidade o valor de uma variável. Eles podem ser utilizados antes (prefixo) ou após (posfixo) a variável, dando resultados ligeiramente diferentes. Ex.: Y = X ++; “Y recebe o valor de X e depois X é incrementado” L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 8 Y = X ++; “Y recebe o valor de X e depois X é incrementado” Y = X --; “Y recebe o valor de X e depois X é decrementado” Y = ++ X; “X é incrementado e depois Y recebe o valor de X” Y = -- X; “X é decrementado e depois Y recebe o valor de X” L i n g u a g e m C Operadores Relacionais • As expressões compostas com operadores relacionais comparam dois valores e retornam 0 em caso de expressões falsas e 1 se forem verdadeiras. Operador Operação < Menor que L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 9 < Menor que > Maior que < = Menor que ou igual a > = Maior que ou igual a = = Igual a ! = Diferente de L i n g u a g e m C Operadores Lógicos • Os operadores lógicos comparam duas expressões e retornam o valor 0 (falso) ou 1 (verdadeiro). Operador Operação && AND (E) || OR (OU) L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 10 ! NOT (NÃO) • O operador unário ! tem maior precedência, seguido do operador E lógico. O operador OU lógico tem a menor precedência dentre os operadores lógicos. L i n g u a g e m C Operadores Bit a Bit • Os operadores de bit só podem ser utilizados com valores do tipo caracter ou inteiro. Operador Operação << L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 11 << Deslocamento à esquerda >> Deslocamento à direita & E bit a bit | OU bit a bit ^ XOU bit a bit ~ Não bit a bit (complemento de um) L i n g u a g e m C Operadores Bit a Bit Ex.: a = 15 0 0 0 0 1 1 1 1 a << 1 0 0 0 1 1 1 1 0 a >> 3 0 0 0 0 0 0 1 1 Ex.: a = 15 0 0 0 0 1 1 1 1 L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 12 Ex.: a = 15 0 0 0 0 1 1 1 1 b = 56 0 0 1 1 1 0 0 0 a & b 0 0 0 0 1 0 0 0 a | b 0 0 1 1 1 1 1 1 a ^ b 0 0 1 1 0 1 1 1 L i n g u a g e m C Operador Condicional (Ternário) • O operador condicional (ou ternário) consiste de um ponto de interrogação (?) e um dois pontos (:) usados juntos e requer três operandos. resultado = modo > 0 ? 1 : 0; V L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 13 resultado = modo > 0 ? 1 : 0; a variável resultado receberá valor 1 se modo for maior que 0, caso contrário receberá 0. F L i n g u a g e m C Expressões Reduzidas Expressão normal Expressão reduzida soma = soma + cont; soma += cont; d = d – 3; d-= 3; y = y * (z+1); y*= z+1; L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 14 y = y* (z+1); y*= z+1; i = i / j; i/= j; a = a & b; a &= b; a = a << 3; a <<= 3; L i n g u a g e m C Precedência dos Operadores Maior ( ) [ ] -> ! ~ ++ -- - (tipo) * & sizeof * / % + - << >> < <= > >= == != L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 15 == != & ^ | && || ?: = += -= *= /= etc. Menor , L i n g u a g e m C Problemas 1. Escreva quatro instruções diferentes em C, cada uma subtraindo 1 da variável n. 2. Escreva um bloco de código C que tem o mesmo efeito da instrução n = 100 + m++; sem utilizar o operador de pós-incremento 3. Escreva um bloco de código C que tem o mesmo efeito da instrução L i n g u a g e m C IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 16 instrução n = 100 + ++m; sem utilizar o operador de pré-incremento 4. Escreva uma instrução única em C que subtraia de z a soma de x e y e depois some y. 5. Se m=5 e n=2, quais serão os valores de m e n após cada uma das expressões: a. m *= n++; b. m += --n; M1 Slide 16 M1 Respostas: 1. n = n +1; n -= 1; --n; n--; 2. n = 100 + m; ++m; 3. ++m; n = 100 + m; 4. z -= (x + y++); 5. a. m=10 e n=3 b. m=6 e n=1 MSHOME, 28-Apr-06
Compartilhar