segunda-feira, 27 de junho de 2011

Programando em 5 minutos:6# Aula - Operadores Lógicos - C

Bom,nessa aula começaremos a falar sobre o while.A formula dele é:

De graças ao ComoTudoFunciona por esse gif! :D
while(condição) comando; 

Sendo  a condição qualquer coisa que retorne verdadeiro(não-zero) ou falso(0).Comando é qualquer coisa,até mesmo um bloco {} ou somente um x = 1.A tradução de while é quando.
Antes,queria dar mais algumas informações sobre as \n que passei em outra aula sobre printf

\b - Retrocesso
\f - Alimentação de Formulário
\n - Nova Linha
\r - Retorno de Carro
\t - Tabulação Horizontal
\" - Aspas duplas
\' - Aspas Simples
\0 - Nulo
\\ - Barra invertida
\v - Tabulação Vertical
\a - Alerta(beep)

Bem,agora vamos falar sobre os operadores.Há quatro tipos: os aritméticos,relacionais,lógico e os bit a bit.
Começando pelo o nosso antigo =,nos temos uma nova função para ele,veja se consegue descobrir apartir de sua aplicação:

x = y = z = a = b = 123;

Descobriu? Isso mesmo!Ele pode fazer varias atribuições ao mesmo tempo!Próximos são os aritméticos.Ai vai uma tabela(lembrando que em int o resto da divisão é descartado, então 5/2=2 e 5%2=1)

-   Subtração,também multiplica seu operando por -1(ou seja 1-1 é igual 1 + ( - 1 ) = 0)
+ Adição
* Multiplicação
/ Divisão
% Resto da Divisão
-- Decremento(retira 1,pode vir antes ou depois de seu operando)
++ Incremento(soma 1,pode vir antes ou depois de seu "aplicado")

Vale lembrar que se

x = 10;

Então os seguintes códigos são diferentes:

y = x++;
y = ++x;

O primeiro transforma y = x e depois x+1, então y = 10.No segundo ser y = 1+x,então x é somado e y = 11.E a uma diferença na velocidade,pois o compilador processa mais rápido x++ ou ++x do que x+1,por incrível que pareça.Aqui vai uma lista do que acontece primeiro e o que acontece depois:

++ -- Acontece Primeiro
- (menos unário)
* / %
+ -  Acontece depois

Itens de mesmo nível são avaliados da esquerda para a direita,mas se você colocar parênteses força a acontecer primeiro qualquer tipo de operação.
Agora os operadores relacionais:

> Maior que
>= Maior ou igual
< Menor
<= Menor ou igual
== Igual
!= Diferente

Os Operadores lógicos:

&& E (AND, em inglês)

|| Ou (or em inglês,o caractere de barra invertida e shift produz ele,o pipe)

! Não(NOT em inglês(exclamação))

Agora,para esclarecer, o que aconteceria se usassemos && e || e ! em p=0011 e q=0110

p     q     p&&q        p||q      !p         !q
0     0         0              0        1           1
0     1         0              1        1           0
1     1         1              1        0           0
1     0         0              1        0           1

Ou seja && deixa somente o que os dois tiverem,|| soma os dois,o que um tiver o outro tem,então está bom,o ! inverte,se tem então não terá,se não tem então terá.Isso é otimo quando se precisa de um resultado 0 (falso) ou verdadeiro(não-zero).A não esquecer dos parênteses pois:

!0 && 0 | | 0  ---FALSO
!(0 && 0) | |  ---Verdadeiro!

Agora sobre os operadores de ponteiros(vamos aprender mais para frente pois é complicado) & e * .Bom,ao invés de falar o técnico vou dar um exemplo e mostrar o que você precisa saber para usa-lo.Exemplo:

m = &count;

Bom, o m tem um endereço na memoria que não tem nada a ver com seu valor(ex: endereço: 4260 valor:50), e leitura disso seria "m recebe o endereço de count" então como no exemplo,count teria 4260.Agora se:

q = *m;

Seria lida "q recebe o valor do endereço de m" logo se m é 4260,então o q recebe o valor que está no endereço 4260, que é o valor 50,então q=50.Mas deve se tomar cuidado pois você nunca sabe o endereço de uma variável,então digamos que g está no endereço 100 e tem valor 10,se você fizer isso:

x = *g;

Você colocaria x o valor que está no endereço 10(valor de g) e você não sabe o que há no endereço 10(geralmente dados do sistema) e caso você usasse isso para uma contagem,apareceria um numero absurdo.

Bem vou começar a falar sobre ponteiros aqui.Não,não são os ponteiros do relógio,mas tem a mesma função.Imagine um biblioteca.O ponteiro ira falar para você onde esta o livro que ele sabe.Mas ele só sabe o endereço de um livro,não de todos
A biblioteca é uma matriz(vamos estudar mais para frente)então ela guarda vários números e o ponteiro fala qual numero esta numa posição dessa matriz.Matrizes são assim:

maz[10];

Essa é uma matriz de 10 números,do 0 ao 9(como armários)mas ainda estão indefinidos.
Olhe o que acontece para ver como é a relação de ponteiros e matrizes:

*m = &maz[0];

Pronto!Agora m está apontando para o primeiro "armário" da matriz maz.Ficou curioso?Não entendeu?Então até a próxima aula,por que não se pode falar de um se falar do outro!

Nenhum comentário:

Postar um comentário