Operadores • Os operadores (afectação, aritméticos, relacionais e lógicos) que utilizámos até ao momento estão organizados com a prioridade e associatividade definidas na tabela abaixo Prioridade Associatividade esquerda () direita ! esquerda * / % esquerda + esquerda < <= > >= esquerda == != esquerda && esquerda || direita = += -= *= /= %= • O facto do operador = ter prioridade à direita quer dizer que se pode escrever, dadas variáveis inteiras a, b e c: a = b = c = 5; // todas as variáveis ficam com o valor 5 18-10-2015 1 Funções com valores reais • As bibliotecas de funções da linguagem C incluem um conjunto de funções matemáticas, de que a tabela abaixo é um excerto. Para as utilizar terá de colocar no início do programa a linha #include <math.h> Função double double double double sqrt(double r) sin(double ang) cos(double ang) tan(double ang) double asin(double s) double floor(double r) double double double double • Descrição retorna a raíz quadrada de r retorna o seno do ângulo, dado em radianos retorna o coseno do ângulo, dado em radianos retorna a tangente do ângulo, dado em radianos retorna o valor do ângulo em radianos (0 .. π) cujo seno é dado retorna o número sem parte decimal imediatamente inderior retorna o número sem parte decimal mais próximo round(double r) pow(double x, retorna xy y) log10(double r) retorna o logaritmo base 10 de r Para gerar o programa terá de usar a opção –lm que indica ao compilador para usar a biblioteca de funções matemáticas. Ex: gcc –o mathprog mathprog.c -lm 18-10-2015 2 Variáveis com valor fixo definido na sua declaração (const) • Por vezes pretendemos definir valores que funcionam como constantes. Por exemplo: double pi = 3.1415926; neste caso é possível alterar o valor de pi o que seria naturalmente um contrassenso, trantado-se de uma constante universal. O qualificador const resolve a questão: const double pi = 3.1415926; Neste caso qualquer tentativa de alteração de pi geraria um erro de compilação. Note-se que neste caso a afectação da variável apenas pode ocorrer na sua declaração. 18-10-2015 3 Novos tipos de dados – extensões ao tipo int • A linguagem C permite criar novos tipos inteiros através de duas formas: variando o seu alcance (a quantidade de valores suportados) e tratando os valores como absolutos (sem sinal). Para isso são usadas as keywords qualificadoras de tipo short e long– para modificar o alcance signed e unsigned – para indicar valores relativos ou absolutos (os valores são com sinal por omissão, pelo que o qualificador signed não se costuma usar. • Exemplos: short int s; long int l; unsigned int i; unsigned long int l1; • // definição de um inteiro com menor alcance // definição de um inteiro com maior alcance // inteiro absoluto – o menor valor é zero // inteiro longo absoluto – o menor valor é zero O C permite omitir a keyword int nestes casos. Podemos então ter: short s; long l; unsigned i; unsigned long l1; 18-10-2015 4