Recomendo que imprimam isso e mantenham à mão para os laboratórios e para as provas. Não é do meu interesse que vocês tenham que decorar isso, embora eventualmente saber algumas dessas operações de cabeça pode ajudar vocês.
As operações aritméticas básicas da linguagem C de programação são:
+ | soma dois números |
- | subtrai dois números |
* | multiplica dois números |
divide dois números (se ambos são inteiros, retorna o piso da divisão) | |
% | calcula o resto da divisão de dois números |
As operações de comparação principais da linguagem C são:
< | é verdadeira se o número da esquerda é menor que o da direita |
> | ao contrário |
<= | menor ou igual |
>= | maior ou igual |
é verdadeira se os dois números são iguais | |
é verdadeira se os dois números são diferentes | |
Cada operação dessas retorna 1 se é verdadeira e 0 se é falsa. Por exemplo,
1 + (2 == 2) - (2 >= 3)é equivalente a
2
As principais operações lógicas da linguagem C são:
negação | |||
&& | conjunção | ||
disjunção | |||
Podemos definir, em C, constantes numéricas, que podem ser usadas a qualquer ponto no programa, e terão sempre o mesmo valor. A sintaxe para isso é
#define CONSTANTE valorpor exemplo, é normalmente definido como
#define M_PI 3.14159265358979323846
Essas constantes podem ser usadas livremente em operações matemáticas como se fossem números.
Ao criar uma variável, o seu valor é indefinido. Não faz sentido, por exemplo, fazer
int i;e depois fazer
10*i + 1 <= 2já que, como o valor de i é indefinido, essa expressão pode ter qualquer valor. Para atribuir um valor a uma variável, usamos o operador = e suas variantes, que são
a = b | a variável a recebe o valor de b |
a += b | a variável a recebe o valor de a + b |
a -= b | a variável a recebe o valor de a - b |
a *= b | a variável a recebe o valor de a * b |
a /= b | a variável a recebe o valor de a / b |
a++ | a variável a recebe o valor de a+1, retorna o valor antigo de a |
++a | a variável a recebe o valor de a+1, retorna o novo valor de a |
a– | a variável a recebe o valor de a-1, retorna o valor antigo de a |
–a | a variável a recebe o valor de a-1, retorna o novo valor de a |
Qual é o valor então do seguinte trecho de programa?
int a,b; a = 10; b = 5; a++ - b * 10
Nem sempre você já tem acesso, ao escrever seu programa, a todos os valores de todas as variáveis que você quererá utilizar. Por exemplo, um programa que calcula as raízes de uma equação do segundo grau ( ) só é realmente útil se você pode utilizar vários valores para , e . Para lermos uma variável inteira, usamos
scanf("%d", &variavel);e para ler uma variável real usamos
scanf("%f", &variavel);onde variavel é o nome da variável.
Para escrever essas variáveis na tela usamos, conversamente,
printf("%d", variavel);para uma variavel real e
printf("%f", variavel);para uma variável inteira. Para escrever uma linha vazia usamos
printf("\n");Esses comandos serão melhor explicados em aulas futuras, quando chegarmos nas aulas de entrada e saída e processamento de valores. Por enquanto, todas as tarefas poderão ser feitas utilizando apenas esses comandos.
Algumas pessoas gostam de utilizar o arquivo de cabeçalho conio.h e a função getch() para impedir que a janela do DOS feche quando se executa um programa C no windows. Nessa aula não aceitamos isso. Se você usa windows e quer ver o resultado do seu programa, você tem duas opções: ou você executa ele dentro de cmd ou você coloca vários comandos scanf no fim dele.
A tabela de precedência de operadores em C é:
++ – | ||
+ - (unário) | ||
\! | ||
* / % | ||
+ - | ||
< <= | ||
> >= | ||
\=\= !\= | ||
&& | ||
\= | ||
+= -= | ||
*= /= %= |
Para interpretar essa tabela é simples. Olhe para uma expressão exemplo:
a++ - 2 * 3 + 4 / --x += 1 -= 5 + 2 % 6
De cima pra baixo da tabela, vá colocando parênteses em todas expressões que usam os operadores:
(a++) - 2 * 3 + 4 / (--x) += 1 -= 5 + 2 % 6
(a++) - (2 * 3) + (4 / (--x)) += 1 -= 5 + (2 % 6)
(((a++) - (2 * 3)) + (4 / (--x))) += 1 -= (5 + (2 % 6))
((((a++) - (2 * 3)) + (4 / (--x))) += 1) -= (5 + (2 % 6))
E agora você já sabe em que ordem calcular as expressões. Existe mais um problema, que é associação da esquerda para direita ou da direita para esquerda, mas isso não deve incomodá-los com frequência. Se sentirem necessidade, olhem para a wikipedia sobre operadores em C para mais informações.
A linguagem C contém diretamente apenas alguns comandos muito básicos. Qualquer coisa mais complexa, se estiver acessível, será através da biblioteca padrão ou de outras bibliotecas. Já vimos algumas funções da biblioteca padrão: printf, scanf, e sqrt. Para usar uma parte da biblioteca padrão, normalmente você pode precisar fazer duas coisas. A primeira é incluir o cabeçalho necessário. Para printf e scanf, esse cabeçalho é
#include <stdio.h>
e para as funções matemáticas, como sqrt, esse cabeçalho é
#include <math.h>
Para usar math.h, além disso, é necessário que, na hora de compilar o seu programa, você passe o comando "-lm" para o gcc. Em outros compiladores isso pode ser diferente. Math.h, além de constantes importantes (MPI, ME, MAXFLOAT, INFINITY, NAN), as seguintes funções:
acos(x) | arco coseno de x |
acosh(x) | arco coseno hiperbólico de x |
asin(x) | arco seno de x |
asinh(x) | arco seno hiperbólico de x |
atan(x) | arco tangente de x |
atan2(x,y) | arco tangente de x/y |
atanh(x) | arco tangente hiperbólico de x |
cbrt(x) | raiz cúbica de x |
ceil(x) | teto de x |
cos(x) | coseno de x |
cosh(x) | coseno hiperbólico de x |
erf(y) | integral de e(-x2) de -infinito a y |
erc(y) | a mesma integral, só que de y a +infinito |
exp(x) | ex |
exp2(x) | 2x |
expm1(x) | ex-1 |
fabs(x) | módulo de x |
fdim(x,y) | módulo de x-y |
floor(x) | piso de x |
fma(x,y,z) | x*y+z |
fmax(x,y) | máximo entre x e y |
fmin(x,y) | mínimo entre x e y |
fmod(x,y) | resto da divisão de x por y (sim, isso pode ser definido) |
hypot(x,y) | raiz(x2 + y2) |
lgamma(x) | log(gamma(x)) |
log(x) | ln(x) |
log10(x) | log de x na base 10 |
log1p(x) | ln(x+1) |
log2(x) | log de x na base 2 |
pow(x,y) | xy |
round | arredonda para um inteiro |
sin(x) | seno de x |
sinh(x) | seno hiperbólico de x |
sqrt(x) | raiz quadrada de x |
tan(x) | tangente de x |
tanh(x) | tangente hiperbólica de x |
tgamma(x) | gamma(x) |
Date: 2010-08-09 21:36:44 BRT
HTML generated by org-mode 6.21b in emacs 23