sábado, 19 de janeiro de 2013

Linguagem C: Parte 3 [Condições]

     Enquanto desenvolvemos nossos programas, precisamos que certas coisas aconteçam em momentos específicos. Levamos em conta o seguinte exemplo:
     Temos um personagem. Nosso personagem assim como qualquer ser humano, sente frio, calor, sede, fome e etc. Quando estiver frio, queremos que ele coloque um casaco, ou quando calor, ele deve vestir uma bermuda. Também podemos detalhar um pouco mais. Se a temperatura marcar até 30°C ele vai para a piscina, mas se estiver marcando mais que 30°C ele vai para praia.
     Esses são exemplos extremamente simples de tomadas de decisões que podemos colocar em um programa. E para fazermos isso, recorreremos aos operadores e instruções de C.


► Verdadeiro e Falso

     Como em C não existe um tipo que permita armazenar valores lógicos, utilizamos o 0 (ZERO) para representar um valor FALSO, enquanto tudo que for diferente de 0 (ZERO), sera VERDADEIRO.

Ex:
Valor Falso: 0
Valores Verdadeiros: -5 , 10 , 160.7, 0.00090

► Operadores Relacionais

     Para avaliarmos se a temperatura é menor que tal marca, ou se determinado valor é maior que o outro, utilizamos os Operadores Relacionais

Operador de Igualdade:
Representado por " == ".
Ex: 
f == z // Verifica se f é igual a z.

Operador Maior que:
Representado por " > ".
Ex:
f > z // Verifica se f é maior que z.

Operador Menor que:
Representado por " < ".
Ex:
f < z // Verifica se f é menor que z.

Operador Maior ou Igual que:
Representado por " >= ".
Ex:
f >= z // Verifica se f é maior igual a z.

Operador Menor ou Igual que:
Representado por " <= ".
Ex:
f <= z // Verifica se f é menor igual a z.

Operador Diferente de:
Representado por " != ".
Ex:
f != z // Verifica se f é diferente de z.

OBS: SO NÃO CONFUNDA " = " COM " == ". O PRIMEIRO ATRIBUI UM VALOR, O SEGUNDO COMPARA. ;)

► Instrução if-else

     Para determinar quais instruções devem executar em uma certa ocasião, utilizamos um dos controles de fluxos de C chamado if-else.

Ex:

#include <stdio.h>

main()
{
    int a;
    printf("Ins um número\n");
    scanf("%d",&a); // Insere um int
   
    if (a > 0) // verifica se o número inserido foi maior que 0
        printf("Verdadeiro"); // se for, imprime Verdadeiro
    else // 
        printf("Falso"); // caso não for imprime Falso
// utilizar getchar() aqui caso o programa fechar rapidamente.
}

     A instrução do if é obrigada a estar entre parênteses. Foi verificada a primeira instrução. Caso ela não fosse verdadeira, o else seria executado. Lembrando que o else não é obrigatório.
     Também existe casos em que temos que encadear mais de uma instrução:

#include <stdio.h>

main()
{
    float sal;
    printf("Ins o salário:\n");
    scanf("%f", &sal);
    
    if (sal<= 0)
        printf("Sem grana!");
    else if (sal > 500)
        printf("Imposto = %.2f\n", sal*0.20);
    else
        printf("imposto = %.2f\n", sal*0.90);
}

     Uma das coisas que é importante utilizar na programação, é a indentação. Mesmo não surtindo nenhum efeito na compilação ou mesmo na execução (no caso de C), ela ajuda a apresentar os limites de cada instrução para o programador ou qualquer um que ler o código. Cada um escolhe o melhor jeito de fazer a sua.

Ex:
     Esses dois exemplos são iguais. A única diferença é que o primeiro não foi utilizado indentação.

1)
if (v!=1)
printf("Certo.\n");
else
printf("Erro");

2)

if (v!=1)
    printf("Certo.\n");
else
    printf("Erro");

► Operadores Lógicos

     Existem outros tipos de operadores chamados de Operadores Lógicos, que são utilizados para ligar duas ou mais condições. Sendo que ao final da operação, devolvem um apenas um valor (VERDADEIRO OU FALSO). A utilização desses operadores é muito simples. Partimos do exemplo de que toda a bola é redonda e, os peixes nadam.

Ex:

if (bola_redonda && peixes_nadam)
    printf("Verdadeiro"); // True

Caso algum destes elementos fosse alterado:

if (bola_redonda && vacas_voam)
    printf("Falso"); // False


Operador: " && "
Significado: AND (E lógico). Obriga as duas operações serem verdadeiras. Caso contrário, sera falso.
Ex: f >= 9 && f <= 19

Operador: " || "
Significado: OR (OU lógico). Obriga pelo menos uma das operações serem verdadeiras. Caso contrário, sera falso.
Ex: f == 10 | | f == 6

Operador: " ! "
Significado: NOT (Negação lógica). Verdadeiro se a condição for falsa. Falso se for verdadeira.
Ex: ! z

     Como as instruções nem sempre são avaliadas da esquerda para direita, existe uma tabela de precedência que indica a precedência de cada um.

► Operador Condicional - ?

     É um operador ternário (e também o único) de C, que recebe três argumentos. Ele avalia a condição retornando um resultado Verdadeiro pelo elemento1, ou Falso pelo elemento2.

Ex:

condição ? elemento1: elemento2

#include<stdio.h>

main()
{
     int idade;
     printf("Insira sua idade:\n");
     scanf("%d", &idade);
     
     idade = idade >= 18 ? 20 : 10;
     printf("Ganhou %d pontos!",idade);
}

►Instrução Switch

     Utilizado para tomada de decisões quando a quantidade de opções é muito grande. Imagina se quiséssemos escolher entre 30 opções? Fazer isso com if-else não é legal. O Switch executa os valores numéricos do tipo char, long ou int. Comparando em seguida o valor recebido, com as constantes dos cases.
     O case que for igual ao valor inserido, sera executado e o programa passara para próxima instrução com o auxilio do break. Caso contrário, mesmo achando o case certo, o programa continuara percorrendo o switch até finaliza-lo. Se o valor não bater com nenhum dos cases, a instrução que estiver em default será executada.


► Instrução Break

     É utilizada quando queremos parar a execução dentro de um switch. O programa pula para próxima instrução .


Ex:

#include <stdio.h>

main()
{
   char estCivil;
   printf("Qual seu estado Civil:\n");
   printf(" S - Solteiro \n C - Casado\n D - Divorciado \n V - Viúvo \n");
   estCivil = getchar();

   switch(estCivil)
  {
      case 'S': printf("Solteiro(a)");
      break;

      case 'C': printf("Casado(a)");
      break;

      case 'D': printf("Divorciado(a)");
      break;

      case 'V': printf("Viúvo(a)");
      break;



      default: printf("Estado Civil incorreto");
  }
}

    O programa poderia ter sido feito utilizando números nas escolhas, ou também, colocando 's' , 'c', 'd' e 'v' junto de cada um de seus correspondentes.

Ex:
case 'c':
case 'C': printf ("Casado");
break;

     Significa que tanto 'c' minúsculo quanto 'C' maiúsculo, seria entendido como casado.

Até logo! ^^

Menu da Linguagem C

segunda-feira, 14 de janeiro de 2013

Palavras Reservadas de C

     Aqui vai algumas palavras reservadas para uso gramatical, da linguagem C:

asm ► Indica uma instrução Assembly.
auto ► É o tipo de criação de variáveis padrão.
break ► Termina um laço ou switch.
case ► Faz parte do switch
char ► Tipo que armazena um único caractere.
const ► Sinaliza um valor fixo para uma variável.
continue ► O controle é passado para a próxima iteração.
default ► Utilizado no switch, é executado quando nenhum dos cases é validos.
do ► Parte do laço do while.
double ► Números reais de dupla precisão.
else ► É executado quando a condição de " if " é falsa.
enum ► Define tipos enumerados.
extern ► Chama algo de outro arquivo de código.
far ► Declara ponteiros com 32 bits.
float ► Números reais de precisão simples.
for ► É um laço.
goto ► Realiza saltos para labels.
if ► Testa uma condição.
int ► Tipo que armazena inteiros.
long ► Tipo que armazena inteiro de 4 bytes.
near ► Declara ponteiros de 16 bits.
register ► Comando que solicita armazenar uma variável diretamente no registro do processador.
return ► Retorna algo de uma função.
short ► Tipo que armazena inteiro de 2 bytes.
signed ► Sinaliza que a variável contém valor positivo e negativo.
sizeof ► Retorna o número de bytes de uma variável.
static ► Indica que uma variável mantem seu valor entre as chamadas de função.
struct ► Cria estruturas.
switch ► Seria um if-else mais simples. :)
typedef ► Define tipos.
union ► Permite o compartilhamento de um espaço na memória por diversas variáveis.
unsigned ► Indica que a variável terá apenas números positivos ou zero.
void ► Indica que a função não retorna nada.
volatile ► Indica que uma variável pode ser alterada.
while ► É um laço de repetição. Pode ser utilizado junto com o " do ".

► Menu da Linguagem C

domingo, 13 de janeiro de 2013

Linguagem C : Parte 1


     Nessa parte vou abordar o inicial de C. Não falarei sobre qual editor é melhor utilizar, pois existem muitos e cada um escolhe o que melhor se familiariza. Mas vou tentar ajudar dando uma pequena lista deles:
  • Anjuta
  • C++ Builder
  • Dev C++
  • Quincy
  • Code::Blocks


     Em C existe uma função onde são colocadas todas as instruções que queremos que sejam executadas. Essa função chama-se main(). Todo o código que o programador quiser executar, independente que seja em forma de função ou direto, ele TEM que colocar dentro de main() ou de uma função que ira ser chamada dentro dela. É importante lembrar que, tudo que for colocada NA MESMA LINHA depois de "//" é comentário,  voltando a ser código na linha abaixo.

Exemplo:
1)
void main()
{
     // seu código aqui
}

2)
void correr(); // cabeçalho

void main()
{
     correr();
}

void correr()
{
   // seu código
}

     O cabeçalho é utilizado para o compilador reconhecer quais funções serão iniciadas, quando a mesma for declarada após sua chamada. Note que o main() chamou a função correr(), mas NÃO EXISTE nenhuma função correr() antes dela. É a mesma coisa que eu mandar o sr(a) pegar um bolo na mesa, se tu nem sabe o que é bolo.   ? ( O.o ) ?
     Por esse motivo utilizo o cabeçalho. Mas caso eu tivesse declaro antes de main() ou qualquer outra função que chamasse correr(), não precisaria. Note que eu utilizo { } nas funções, ele se chama "bloco". É onde você vai colocar seu código. Uma função sem parênteses indica que a função não recebe nenhuma informação. :)
     É bom lembrar que C é CASE SENSITIVE, ou seja, É MÉDIUM... Que mané MÉDIUM. PQP!!!!
     Significa que diferencia MAIÚSCULAS dE minúsculas. Se tu escreveres correr(), coRrer(), Correr(), ou CoRrEr() não é a mesma coisa. Por padrão é recomendado colocar todas as instruções em letras minúsculas. Depende de você...

     Vou mostrar um minúsculo programa em C: 

#include <stdio.h> // biblioteca de c

void main() // Nome da função
{ // começo da função
     printf("Ola Amigo"); // Imprime uma linha :D
} // fim da função e do programa

     Esse é um simples programa de saída em C. Ele mostra uma msg de saudação. Como C possui poucas palavras reservadas, é preciso recorrer as suas bibliotecas. Uma delas é a stdio.h que serve para manipulação de entrada e saída. Dentro dela tem uma função que serve para imprimir, chamada "printf()". Por isso printf("Ola Amigo"). Printf quer dizer print + f(formatado), ou seja, tu pode pôr printf("Ola Amigo\n"), que serviria para imprimir e pular para próxima linha. Vou explicar daqui a pouco ^^ .
     Note que no final de printf() coloquei " ; ". Pois é uma instrução ja pronta que eu estou utilizando, do mesmo jeito que assinalei em correr() dentro de main() nos exemplos anteriores,. Cada instrução deve ser seguida de ponto-e-vírgula. :)

OBS: CASO O PROGRAMA AO ABRIR, FECHAR RAPIDAMENTE, UTILIZE getchar(); DEPOIS DE printf();

     O caractere especial  " \ " é utilizado para retirar o significado especial de um caractere:
Tipo, se eu colocasse printf("n"), imprimiria apenas "n". Agora, se eu quiser pular uma linha, colocaria printf("\n").  n é diferente de \n.
     Segue uma lista deles:
  • \7 e \a - Sinal sonoro do computador
  • \b - Backspace
  • \n - Nova linha
  • \r - Retorno de carro
  • \t - Tabulação Horizontal
  • \v - Tabulação Vertical
  • \\ - Representa o caractere \
  • \' - Caractere Aspas Simples
  • \" - Caractere Aspas
  • \? - Caractere ?
  • \000 - Caractere cod ASCII em Octal é ooo
  • \Xnn - Caractere cod ASCII em Hex. é nn
  • %% - Caractere %
Exemplos:

#include <stdio.h>
void main()
{
   printf("Ô o barulho"\a\n");
   printf("\tÔ o barulho de novo"\a");
}

#include <stdio.h>
void main()
{
     printf("1 - \tEscolas\n");
     printf("2 - \tEmpresas\n");
     printf("3 - \tBibliotecas\n");
}

     Experimente mudar as frases. Raciocine novos métodos de criação. ;)


     Agora os Comentários:
     Os comentários nada mais são que notas que o programador coloca em seus programas, sem interferir no código, podendo serem colocados em qualquer lugar desde que de forma correta.  Assim como quem tem uma vida muito agitada e milhões de coisas para fazer, criam suas próprias agendas para se organizarem, você tem que fazer o mesmo. Em programas pequenos isso não faz muita diferença, mas em softwares complexos com 19000 linhas para mais, isso é fundamental. Mesmo assim é bom comentar. ;)
     Existem diversas maneiras de comentários:
1)
// Oi Amigo

2) 
/* Começo do comentário
* Oi Amigo
*/ Fim do comentário

3)
/* Oi vaca! scpt724765411xv¢ */

4)
/*********************
* JP Soft **************
**********************/

E mais outros modos por aí. O que você não pode é esquecer de fecha-los.
Ex: 
/* Ta chovendo
void correr() // uma função
{
}
************ ERRO *************


     Bom, era isso. Esse foi um dos pequenos exemplos da linguagem C que vou postar. Não se esqueça que existem DIVERSAS maneiras de se criar algo em C. Espero ter ajudado e até o próximo exemplo ^^.

Menu da Linguagem C

sábado, 12 de janeiro de 2013

Linguagem C: Parte 2 [Variáveis]

► Variáveis

     Na parte anterior foram apresentados jeitos básicos para exibição de mensagens, explicando o porque de cada instrução. Mas agora, e se nós precisarmos guardar algum valor como nome, idade, telefone? Como eu faço?
     É para isso que servem as variáveis. Utilizamos uma variável para referenciar uma região da memória, onde colocaremos um valor com algum tipo. Como o nome já diz, o valor dela pode mudar durante a execução do programa. A primeira coisa que precisamos fazer antes de usar uma variável é declara-la.



Ex:

#include<stdio.h>
main()
{
  // tipo var;

  int var1;
  int var2;
  int var3;

  var3 = var1 + var2;

  printf("A soma e %d",var3);
}

     Existe alguns requisitos para colocar nomes em variáveis:

► Declarar variáveis com mesmo nome mas, uma maiúscula e outra minúscula, fazem elas serem variáveis distintas.
Ex: int bola, int Bola

► Pode ter seu nome constituído por letras(maiúsculas e minúsculas), dígitos (0 .. 9) e  underline( _ ). Este último é mais utilizado para separar palavras de uma variável.
Ex: polo_Norte.

Nunca começar com dígitos.
Ex: int 7at;

Não utilizar nomes de palavras reservadas como, for, while, if e etc. 

Não são recomendados acentos(ã, â,é, etc.) no nome das variáveis  por causa de alguns compiladores podem não aceitar  como caracteres admissíveis.

     As variáveis com mais de um nome, podem ser declaras de variadas formas. Aqui vai algumas:
     Ex: polonorte, polo_norte, PoloNorte, Polo_Norte.

     A atribuições são feitas pelo sinal de " = ",  colocando a var que vai alterar SEMPRE a esquerda, e o que vai atribuir, a direita.

int a;
a = 10; // atribuindo o número 10 a variável " a ".

     Se quiser atribuir o mesmo valor de uma var a diversas variáveis. pois as atribuições em C são feitas da direita para esquerda.
a = b = c = 10;

Operações:
Para soma, subtração, multiplicação e divisão:
" + " ► soma ► 10 + 10
" - "  ► subtração ► 10 - 10
" * " ► multiplicação ► 10 * 10
" / "  ► divisão ► 10 / 10

Inteiros ► int

     Utilizamos int quando precisamos armazenar números naturais (sem fração) tanto positivos quanto negativos, sendo que qualquer operação entre inteiros retorna um inteiro.
Ex:
int numeroZ = -60;
int numeroX = 300:

#include<stdio.h>
void main()
{
  int a = 10;
  int b = 3;
  int c;
  
  c = a / b;

  printf("A divisao e ... %d",c);
}

a / b = 3 ao invés de 3,33... :)

     Os valores de um inteiro podem variar dependendo da arquitetura do processador, podendo variar de 2 bytes ou 4 bytes. A importância disso se obtém na hora de armazenar valores maiores que a variável consegue suportar. Para saber a o tamanho de um inteiro, é utilizado um operador chamado sizeof.
Ex :

#include<stdio.h>
void main()
{
   printf("Tamanho de bytes do inteiro = %d\n", sizeof(int));
// Dependendo da máquina, o resultado pode ser 2 ou 4
}

     Para resolver esse problema utilizamos quatro prefixos diferentes:
short - Inteiro pequeno(2 bytes)
long - Inteiro grande (4 bytes)
signed - Inteiro com sinal.
unsigned - Inteiro sem sinal (apenas números positivos)

short int x; - Garante que " x " utiliza apenas 2 bytes de memória, independente da arquitetura da máquina.
Menor valor "-32.768 "
Maior valor "32.767"

#include<stdio.h>
void main()
{
   short int a = 10;
   short int f = 10;
   short int b;
   b = a + f;

   printf("A soma é %hd",b); 
/*Note que eu utilizei " h " antes de " d ". É como se referencia um short. Para referenciar um long, utilize " l " no lugar de " h ". :)
}

long int x; - Garante que " x " utiliza apenas 4 bytes de memória, independente da arquitetura da máquina.
Menor valor "-2.147.483.648 "
Maior valor "2.147.483.647"

     Se quiser saber o tamanho dos outros tipos:

#include<stdio.h>
void main()
{
     printf("Tamanho de bytes de um char = %d\n", sizeof(char));
     printf("Tamanho de bytes de um float = %d\n", sizeof(float));
     printf("Tamanho de bytes de um double = %d\n", sizeof(double));
}

Reais ► Double e Float

     São utilizadas para referenciar variáveis fracionárias. A diferença entre elas é que float armazena 4 bytes, e double 8 bytes. O formato de escrita e leitura para estes números é %f.
Ex: float numero = 10.500, float km = 1.5

#include<stdio.h>
void main()
{
   float numero = 10.500;
   printf("O numero = %f",numero);
}

     Inteiros relacionados com reais:

21 / 4 = 5;  // Divisão é inteira
21.0 / 4 = 5.25 // Divisão real, pois 21.0 é real, o valor de 4 é alterado para 4.0
21.0 / 4.0 = 5.25 // Divisão real

Char ► char

     Serve para armazenar um único caractere. NÃO coloque strings em char, pois ele é armazenado em apenas um byte. ;D
     Um caractere é representado por aspas simples (' F '), podendo ser utilizados 256 formas de  representação. Sua leitura pode ser feita pela função scanf. Porem, existe um método melhor chamado getchar(). A utilização de getchar evita %c, pois o scanf é uma função genérica de leitura, ja o getchar é dedicado a leitura de apenas um caractere. A var não é passada como parâmetro, evitando o "&".

#include<stdio.h>
main()
{
   char letra;
   printf("Insira uma letra: ");
   scanf("%c", &letra);
   printf("A letra = %c \n",letra);
}

#include<stdio.h>
main()
{
   char letra;
   printf("Insira uma letra: ");
   letra = getchar();
   printf("A letra = %c \n",letra);
}

     Lembrando que inteiros podem ser convertidos em char,  tanto char para inteiros. Sugiro que você leia um livro de C, pois nele se obtém várias formulações nesse tipo de operação. Conversões erradas levam a variados erros, por isso não recomendo.


► Menu da Linguagem C

quinta-feira, 3 de janeiro de 2013

Dica Livro PHP

     Sou estudante da área de informática e sei quanto é difícil quando se esta começando, achar boas referências. Pois de agora em diante, vou começar a postar dicas de livros e artigos, principalmente na parte de programação. Ah, os experientes e nerds podem deixar seus comentários e dicas a vontade.
   Uma dica de livro para desenvolvimento de sites é o " Desenvolvendo Websites com PHP " do Juliano Niederauer. No livro ele apresenta o básico do PHP até o intermediário, com uma pequena introdução de HTML, e criação de bd's MySQL, PostgreSQl e SQLite.


Fica a dica ;D

quarta-feira, 2 de janeiro de 2013

Esvazie a mente

     Quando se fala em desenhar muita gente busca na memória exemplos como,Homem AranhaO JusticeiroHulk e la vai uma cambada de personagens pelo universo dos HQ’s. Quando eu era bem novo, meu pai (desenhista) me ensinou a dar alguns tracejados na folha A4.

     Não, um desenhista não precisa ter letra bonita, basta se dedicar que aí você começa a criar seus próprios traços. Muita gente tem em mente que não sabe desenhar ou, ” Ah, não levo jeito para isso...”. Uma bobagem. A maioria das pessoas não sabem que a arte está dentro de suas próprias cabeças. No tempo de colégio, eu conseguia R$ 1,50 até R$ 3,00 por releitura que eu fazia de pintores famosos como Van Gogh, tudo porque ninguém tinha saco de desenhar. Enfim, não culpo eles, mas sei que por aí há muitos que tem talento.
Até


Grande época



Me lembro como se fosse hoje. Eu piá, indo nas casas dos meu camaradas  jogar NintendoMega DriveSega Saturno e etc. Claro que muita coisa mudou de la pra ca, mas a diversão que proporcionava esses consoles era demais. Minha vibração maior foi quando recebi meu primeiro videogame, o SUPER NINTENDO, montei ele muito rápido. Parecia um palerma jogando Super Mario World.

Mas o que falar desse magnífico jogo? Super Mario é e sempre sera demais. Proporcionou a alegria de muitos gamers naquela época, e ainda cativa os novatos da geração 1080p. Não que eu tenha algo contra PS3XBOX 360,Nintendo Wii e mais o resto que aparece por aí. É impressionante o jeito que modernizou os games e a forma de jogar, e também a atração que eles possuem sobre a população de gamers que vem aumentado anualmente. Mas parece que falta algo neles que não consigo dizer o que é, que os “velhinhos” possuíam. Pode parecer loucura mas o Super Nintendo possuía algo que me trazia muita felicidade. A simplicidade dos enredos era cativante e também proporcionava horas de diversão.


Feliz dos que aproveitaram…