Aqui você encontra infomações sobre Informática, Eletrônica, Elétrica, Mecânica e Automação

segunda-feira, 18 de abril de 2011

Como ligar a fonte ATX sem placa mãe

Esta ligação só funciona em fontes ATX.

Abaixo está o diagrama do plug de uma fonte ATX, todos os plugs são padrões.


O que você deve fazer é unir dois fios do plug.

A figura abaixo mostra quais fios devem ser unidos.



O verde (pino 14) é designado como o fio da “potência”, enquanto que o preto (pino 13) é designado como fio “terra”.

Ao unir esses dois fios, a fonte entra em funcionamento imediatamente.

domingo, 17 de abril de 2011

Linguagem C (parte 8)

Funções: protótipos de função É considerada boa prática utilizar protótipos de função para todas as funções em seu programa. Um protótipo declara o nome de função, seus parâmetros e seu tipo de retorno para o resto do programa antes da declaração real da função. Para entender a utilidade dos protótipos, digite o seguinte código e execute-o:
  #include <stdio.h>

  void main()
  {
     printf("%d\n",add(3));
  }  
  int add(int i, int j)

  {
     return i+j; 
  }  
Este código compila em diversos compiladores sem emitir um aviso, apesar de add esperar dois parâmetros e receber apenas um. Ele funciona porque muitos compiladores C não verificam se o parâmetro corresponde ao tipo ou à quantidade. Você pode perder horas na depuração de um código no qual você está declarando parâmetros a mais ou a menos por engano. O código anterior compila corretamente, mas produz a resposta errada.
Para resolver este problema, a linguagem C permite colocar protótipos de função no início (na verdade, em qualquer lugar) de um programa. Se fizer isso, a linguagem C verifica tipos e quantidades de todas as listas de parâmetros. Tente compilar o seguinte:
  #include <stdio.h>  

  int add (int,int); /* protótipo de função para add */

  void main()
  {
     printf("%d\n",add(3));
  }    
  int add(int i, int j)
  {    
     return i+j;
  } 
O protótipo faz com que o compilador sinalize um erro na instrução printf.
Coloque um protótipo para cada função no início de seu programa. Os propótipos podem economizar bastante tempo de depuração e também resolver o problema que ocorre ao compilar com funções que são utilizadas antes de serem declaradas. Por exemplo, o seguinte código não compilará:
  #include  <stdio.h> 
   
  void main()
  {
      printf("%d\n",add(3));
  }
  float add(int i, int j)
  {
      return i+j;
  }  
Você pode perguntar: "Por que ele compilará quando add retorna um int mas não quando retorna um float?" Porque os compiladores em C mais antigos padronizaram um valor de retorno para int. O uso de um protótipo resolverá este problema. Os "compiladores antigos" (sem suporte a ANSI) permitem protótipos, porém a lista de parâmetros do protótipo deve estar vazia. Os compiladores antigos não fazem a verificação de erros em listas de parâmetros.


Tente isto

  • Retorne ao exemplo de classificação bubble sort anteriormente apresentado e crie uma função.
  • Retorne aos programas anteriores e crie uma função para obter a entrada de dado do usuário, em vez de obter a entrada de dado da função principal.

sábado, 16 de abril de 2011

Linguagem C (parte 7)

Funções A maioria das linguagens permite criar funções de algum tipo. Funções permitem dividir um longo programa em seções nomeadas, de forma que as seções possam ser reutilizadas ao longo do programa. As funções aceitam parâmetros e retornam um resultado. Funções de C podem aceitar um número ilimitado de parâmetros. Em geral, a linguagem C não se preocupa em qual ordem você coloca suas funções no programa, contanto que o nome da função seja conhecido pelo compilador antes de ser invocado.
Já falamos um pouco sobre funções. A função rand previamente descrita é bastante simples. Ela não aceita parâmetros e retorna um resultado inteiro:
  int rand()
  /* de K&R
     - produz um número aleatório entre 0 e 32767.*/
  {
      rand_seed = rand_seed * 1103515245 +12345;
      return (unsigned int)(rand_seed / 65536) % 32768;
  }  
A linha int rand() declara a função rand para o resto do programa e especifica que aquele rand não aceitará nenhum parâmetro e retornará um resultado inteiro. Esta função não tem nenhuma variável local, mas se elas fossem necessárias, iriam logo abaixo da abertura {. A linguagem C permite declarar variáveis após qualquer {: elas existem até o programa atingir o } correspondente e então desaparecem. Desta forma, as variáveis locais de uma função desaparecem assim que o } correspondente é atingido na função. Enquanto existirem, as variáveis locais residem na pilha do sistema. Observe que não há nenhum ; depois de () na primeira linha. Caso tenha colocado um, acidentalmente, você receberá uma enorme cascata de mensagens de erro do compilador, que não farão sentido algum. Observe também que, mesmo sem parâmetros, você precisa usar o (). Eles indicam ao compilador que você está declarando uma função em vez de simplesmente declarar um int.
A instrução return é importante para qualquer função que retorna um resultado. Ela especifica o valor que a função retornará e a encerra imediatamente. Isto significa que você pode colocar diversas instruções de retorno na função para proporcionar vários pontos de saída. Se você não colocar uma instrução de retorno em uma função, a função retorna quando atinge } e retorna um valor aleatório (muitos compiladores o advertirão se você não retornar um valor específico). Em C, uma função pode retornar valores de qualquer tipo: int, float, char, struct, etc.
Há vários modos corretos para executar a função rand. Por exemplo: x=rand( );. A variável x recebe o valor retornado por rand nesta instrução. Observe que você deve usar ( ) na chamada da função, mesmo que nenhum parâmetro seja passado. Caso contrário, x recebe o endereço de memória da função rand, que geralmente não é desejável.
Você também pode invocar rand desta forma:
  if (rand() > 100)  
Ou deste modo:
  rand();  
No último caso, a função é chamada, mas o valor retornado por rand é descartado. Talvez você nunca faça isso com rand, mas muitas funções retornam algum tipo de código de erro por meio da função, e se você não está muito preocupado com o código de erro (por exemplo, por saber que um erro é impossível), você poderá descartá-lo.
Funções podem usar um retorno tipo void caso se deseje que não se retorne nada. Por exemplo:
  void print_header()
  {
      printf("Programa Número 1n");
      printf("por Marshall Brainn");
      printf("Versão 1.0, lançada em 26/12/91\n");  
  }  
Esta função não retorna valor algum. Você pode invocá-la com a seguinte instrução:
  print_header();  
 

Você deve incluir ( ) na chamada. Se não o fizer, a função não é invocada, embora possa ser compilada corretamente em outros sistemas.
As funções em C podem aceitar qualquer tipo de parâmetro. Por exemplo:
  int fact(int i)
  {
      int j,k;
      j=1;
      for (k=2; k<=i; k++)
          j=j*k; 
     return j;
  }  
retorna o fatorial de i, que é passado como um parâmetro inteiro. Separe vários parâmetros com vírgulas:
  int add(int i, int j)
  {
      return i+j;
  }  
A linguagem C evoluiu ao longo dos anos. Às vezes, você verá funções como add escritas do "modo antigo", como mostrado abaixo:
  int add(i,j)
      int i;
      int j;
  {
      return i+j;
  } 
É importante saber ler o código escrito no estilo antigo. Não há nenhuma diferença na forma em que o código é executado, apenas a notação é diferente. Você deve usar o "novo estilo" (conhecido como ANSI C) com o tipo declarado, como parte da lista de parâmetros, a menos que tenha conhecimento prévio de que o código será enviado a alguém com um compilador em "estilo antigo" (sem suporte a ANSI).

sexta-feira, 15 de abril de 2011

quinta-feira, 14 de abril de 2011

Linguagem C (parte 5)

Matrizes Nesta seção, criaremos um pequeno programa em C que gera 10 números aleatórios e os ordena. Para tal, utilizaremos uma nova disposição de variável denominada matriz.
Uma matriz permite declarar e trabalhar com uma coleção de valores de mesmo tipo. Por exemplo, você pode querer criar uma coleção de 5 inteiros. Uma forma para fazer isso seria declarar 5 inteiros diretamente:
  int a, b, c, d, e; 
Isso está certo, mas e se você precisasse de milhares de números inteiros? Uma forma mais fácil é declarar uma matriz de 5 inteiros.
  int a[5];  
Os cinco inteiros individuais dentro desta matriz são acessados por um índice. Todas as matrizes iniciam em zero e vão até n-1 no C. Assim, int a[5]; contém 5 elementos. Por exemplo:
  int a[5];


  a[0] = 12;
  a[1] = 9;
  a[2] = 14;
  a[3] = 5;
  a[4] = 1;  
Uma das vantagens sobre a indexação de matriz é que você pode usar um loop para manipular o índice. Por exemplo, o código a seguir inicializa todos os valores na matriz em 0:
  int a[5];


  int i;
  for (i=0; i<5; i++)
      a[i] = 0;  
O código seguinte inicializa seqüencialmente os valores na matriz e então os imprime:
  #include <stdio.h> 

  int main()
  {
      int a[5];
      int i;
        for (i=0; i<5; i++)
          a[i] = i;
      for (i=0; i<5; i++)
          printf("a[%d] = %dn", i, a[i]);
  }  
As matrizes são usadas a toda hora em C. Para entender seu uso, inicie um editor e digite o seguinte código:
  #include <stdio.h>

  #define MAX 10

  int a[MAX];
  int rand_seed=10;

  /* from K&R
     - retorna um número aleatório entre 0 e 32767.*/
  int rand()
  {
      rand_seed = rand_seed * 1103515245 +12345;
      return (unsigned int)(rand_seed / 65536) % 32768;
  }
    int main()
  {
      int i,t,x,y;
       
      /* preenche a matriz */
      for (i=0; i < MAX; i++)
      {
          a[i]=rand();
           printf("%dn",a[i]);
      }
      /* mais coisas aparecerão aqui em breve */
      return 0;
  }  
Este código contém vários conceitos novos. A linha #define declara uma constante denominada MAX e a define em 10. Os nomes de constantes em geral são escritos em letras maiúsculas para destacá-los no código. A linha int a[MAX]; mostra como declarar uma matriz de inteiros em C. Observe que por causa da posição da declaração da matriz, ela é global ao programa.
A linha int rand_seed=10 também declara uma variável global, desta vez denominada rand_seed, que é inicializada em 10 sempre que o programa inicia. Este valor é o inicial para o código de números aleatórios que segue. Em um gerador de números aleatórios reais, o seed deve inicializar como um valor aleatório, como a hora do sistema. Aqui, a função rand produzirá os mesmos valores sempre que executar o programa.
A linha int rand() é uma instrução de função. A função rand não aceita parâmetros e retorna um resultado inteiro: aprenderemos mais sobre as funções em breve. As quatro linhas que seguem implementam a função rand. Por hora, nós as ignoraremos.
A função principal é normal. Quatro inteiros locais são declarados e a matriz é preenchida com 10 valores aleatórios usando um loop for. Observe que a matriz a contém 10 inteiros individuais. Você aponta para um inteiro específico na matriz usando colchetes. Assim a[0] refere-se ao primeiro inteiro na matriz, a[1] refere-se ao segundo, e assim por diante. A linha que começa com /* e termina com */ é denominada de comentário. O compilador ignora completamente a linha de comentário. Você pode colocar notas para si próprio ou outros programadores nos comentários.
Agora adicione o seguinte código no lugar do comentário mais coisas...:
  /* ordenação por bolha da matriz */
  for (x=0; x < MAX-1; x++)
      for (y=0; y < MAX-x-1; y++)
          if (a[y] > a[y+1])
          {
              t=a[y];
              a[y]=a[y+1];
              a[y+1]=t;
           }
  /* imprime matriz classificada */
  printf("--------------------n");
  for (i=0; i < MAX; i++)
  printf("%dn",a[i]);  
Esta codificação classifica os valores aleatórios e os imprime ordenadamente. Sempre que o executar, você obterá os mesmos valores. Para alterar os valores classificados, altere o valor de rand_seed sempre que executar o programa.
O único modo fácil para realmente entender o que o código está fazendo é executá-lo "à mão". Isto é, assuma que MAX é 4 para facilitar, pegue uma folha de papel e finja que é o computador. Desenhe a matriz no papel e coloque 4 valores aleatórios e não-classificados na matriz. Execute cada linha da seção de classificação do código e desenhe exatamente o que acontece. Você verá que, sempre que submetidos ao loop interno, os valores maiores na matriz são empurrados para baixo e os valores menores vão para o topo da matriz.
Tente isto
  • No primeiro trecho do código, tente alterar o loop for que preenche a matriz para uma única linha de código. Certifique-se de que o resultado seja igual ao do código original.
  • Pegue o código de ordenação por bolha e coloque-o em sua própria função. O cabeçalho de função será void bubble_sort(). Depois transfira as variáveis utilizadas pela ordenação por bolha para a função e torne-as locais. Por ser uma matriz local, você não precisa passar parâmetros.
  • Inicialize a semente do número aleatório para diferentes valores.
Erros que devem ser evitados na linguagem C
  • A linguagem C não tem nenhuma verificação de dimensão, portanto, se você indexar além do fim da matriz, ele não o informará a respeito. Ele provavelmente travará ou apresentará dados incorretos.
  • A chamada de função deve incluir () mesmo se nenhum parâmetro for informado. Por exemplo, C aceitará x=rand; mas a chamada não funcionará. O endereço de memória da função rand será colocado em x. Você deve dizer x=rand();.

quarta-feira, 13 de abril de 2011

Linguagem C (parte 4)

Looping: um exemplo real Suponhamos que você queira criar um programa que imprima uma tabela de conversão Fahrenheit para Celsius. Isso pode ser facilmente obtido com um loop for ou loop while:
#include <stdio.h>
  
int main()
{
      int a;
      a = 0;
      while (a <= 100)
      {
          printf("%4d graus F = %4d graus C\n",
              a, (a - 32) * 5 / 9);
          a = a + 10;
      }
      return 0;
}  
Se executar este programa, ele produzirá uma tabela de valores iniciando em 0 graus F e terminando em 100 graus F. O resultado será este:
0   graus  F =  -17 graus C 
10  graus  F =  -12 graus C
20  graus  F =   -6 graus C
30  graus  F =   -1 graus C
40  graus  F =    4 graus C    
50  graus  F =   10 graus C    
60  graus  F =   15 graus C    
70  graus  F =   21 graus C    
80  graus  F =   26 graus C    
90  graus  F =   32 graus C   
100 graus  F =   37 graus C      
Os valores da tabela estão em incrementos de 10 graus. Observe como é fácil alterar os valores iniciais, finais ou de incremento da tabela que o programa produz.
Para valores mais precisos, você pode usar valores de ponto flutuante:
#include <stdio.h>

int main()
{      
     float a;     
     a = 0;
      while (a <= 100)
      {
          printf("%6.2f graus F = %6.2f graus C\n",
              a, (a - 32.0) * 5.0 / 9.0);
          a = a + 10;
      }
      return 0;
  }  
Você pode ver que a declaração de a foi alterada para flutuante, e o símbolo %f substitui o símbolo %d na instrução printf. Além disso, o símbolo %f possui alguma formatação: o valor será impresso com 6 dígitos inteiros e 2 decimais.
Agora vamos supor que queiramos modificar o programa para que a temperatura 98.6 seja inserida na tabela na posição adequada. Isto é, queremos que a tabela aumente a cada 10 graus e que inclua uma linha extra para 98.6 graus F, que é a temperatura corpórea normal do ser humano. O programa seguinte atende essa finalidade:
#include <stdio.h>

int main()  
{
      float a;
      a = 0;
      while (a <= 100)
      {
       if (a > 98.6)   
          {
              printf("%6.2f graus F = %6.2f graus C\n",
                  98.6, (98.6 - 32.0) * 5.0 / 9.0);
          }
          printf("%6.2f graus F = %6.2f graus C\n",
              a, (a - 32.0) * 5.0 / 9.0);
          a = a + 10;
      }
      return 0;
  }  
Este programa funciona se o valor final for 100, mas se você alterar o valor final para 200, verá que o programa tem um bug. Ele imprime a linha de 98.6° várias vezes. Este problema pode ser corrigido de várias formas. Eis uma:
#include <stdio.h>

int main()
{
      float a, b;
      a = 0;
      b = -1;
      while (a <= 100)
      {
       if ((a > 98.6) && (b < 98.6)) 
         {
              printf("%6.2f graus F = %6.2f graus C\n",
                  98.6, (98.6 - 32.0) * 5.0 / 9.0);
          }
          printf("%6.2f graus F = %6.2f graus C\n",
              a, (a - 32.0) * 5.0 / 9.0);
          b = a;
          a = a + 10;
      }
      return 0;
} 
  

Tente isto

  • Tente alterar o programa conversor Fahrenheit-Celsius de modo que ele utilize scanf para aceitar o valor inicial, final e de incremento daquele usuário.
  • Adicione uma linha de cabeçalho à tabela que é gerada.
  • Tente encontrar uma solução diferente para o bug corrigido pelo exemplo anterior.
  • Crie uma tabela que converta libras em quilogramas ou milhas em quilômetros.


Erros a serem evitados na linguagem C

  • Colocar = quando se deseja == em uma instrução if ou while.
  • Esquecer de aumentar o contador dentro do loop while. Isso causa um loop infinito (o loop nunca acaba).
  • Acidentalmente colocar um ; no final de um loop for ou instrução if, pois isto anula a instrução. Por exemplo:
    for (x=1; x<10; x++);
        printf("%d\n",x);  
    imprime apenas um valor, pois o ponto-e-vírgula após a instrução for atua como uma linha para a execução do loop for.

terça-feira, 12 de abril de 2011

Linguagem C (parte 3)

Printf: lendo os valores de usuário O programa anterior é bom, mas seria melhor se ele lesse os valores 5 e 7 inseridos pelo usuário, em vez de usar constantes. Em vez disso, tente este programa:
#include <stdio.h>    

int main()
{
      int a, b, c;
      printf("Entre o primeiro valor:");
      scanf("%d", &a);
      printf("Entre o segundo valor:");
      scanf("%d", &b);
      c = a + b;
      printf("%d + %d = %d\n", a, b, c);  
      return 0;
  } 
Eis como este programa funciona ao ser executado:
Faça as alterações, depois compile e rode o programa para certificar-se de que funciona. Observe que scanf usa as mesmas strings de formato que printf (digite man scanf para mais informação). Observe também o & na frente de a e b. Este é o operador de endereço em C: ele retorna o endereço da variável (isto não fará sentido até aprendermos sobre os ponteiros). Você tem de usar o operador & em scanf em qualquer variável do tipo char, int ou float, bem como tipos de estrutura (que discutiremos em breve). Se excluir o operador &, você receberá um erro ao executar o programa. Tente executá-lo para ver que tipo de erro ocorre.
Vamos ver algumas variações para entender printf completamente. Eis uma instrução simples de printf:
      printf("Hello");  
Esta chamada para printf tem uma string de formatos que diz ao printf para enviar a palavra "Hello" para a saída padrão. Compare-a com:
      printf("Hello\n");
A diferença entre as duas é que a segunda versão exibe a palavra "Hello" seguida de uma quebra de linha.
As linha seguintes mostram como exibir o valor de uma variável usando printf.
      printf("%d", b);  
O %d é uma expressão de controle que será substituída pelo valor da variável b quando a instrução printf for executada. Freqüentemente, você vai desejar incluir o valor entre outras palavras. Uma forma de fazer isso é:
    printf("A temperatura é ");
    printf("%d", b);
    printf(" degrees");
Um modo mais fácil de dizer isso é:
      printf("A temperatura é %d graus\n", b);
Você também pode usar múltiplas expressões de controle %d em uma instrução printf:
      printf("%d + %d = %d\n", a, b, c);
Na instrução printf, é extremamente importante que o número de operadores na string de formato corresponda exatamente ao número e tipo de variáveis que a seguem. Por exemplo, se a string de formatos contém três operadores %d, então ela deve ser seguida por exatamente três parâmetros do mesmo tipo e ordem que aqueles especificados pelos operadores.
Você pode imprimir todos os símbolos normais na linguagem C com printf usando expressões de controle diferentes:
  • int (valores inteiros) usam %d
  • float (valores de ponto flutuante) usam %f
  • char (valores de caractere simples) usam %c
  • strings de caracteres (matrizes de caracteres, discutiremos mais tarde) usam %s
Você pode aprender mais sobre as nuances do printf em uma máquina UNIX digitando man 3 printf. Qualquer outro compilador de C que você utilize provavelmente virá acompanhado de um manual ou arquivo de ajuda que contém uma descrição do printf.

Scanf A função scanf permite aceitar entradas do dispositivo padrão, que, para nós, é geralmente o teclado. A função scanf pode fazer muitas coisas diferentes, mas pode ter resultados incertos quando não usada de forma simples. É falível pois não lida muito bem com erros humanos. Mas para programas simples, ela é boa o suficiente e fácil de usar.
A aplicação mais simples de scanf se parece com:
      scanf("%d", &b); 
O programa lerá um valor inteiro digitado pelo usuário usando o teclado (%d é para inteiros, como em printf, assim b deve ser declarado como um int) e o colocará em b.
A função scanf usa as mesmas expressões de controle da printf:
  • int usa %d
  • float usa %f
  • char usa %c
  • strings de caracteres (abordados mais tarde) usam %s
Você DEVE colocar & na frente da variável usada em scanf. A razão para isso ficará clara assim que você aprender sobre os ponteiros. É fácil esquecer o sinal &, e se você esquecer, seu programa quase sempre apresentará problemas ao ser executado.
Em geral, é melhor usar scanf como mostrado aqui, lendo apenas um valor do teclado. Use múltiplas chamadas do scanf para ler valores múltiplos. Em qualquer programa real, você usará as funções gets ou fgets em vez de ler o texto em uma linha por vez. Então você fará a "análise" da linha para ler seus valores. Isso serve para detectar erros na entrada e controlá-los da maneira que achar adequada.
As funções printf e scanf exigirão um pouco de prática para serem inteiramente compreendidas, mas uma vez dominadas serão extremamente úteis.
Tente isto!
  • Modifique este programa para que ele aceite 3 valores em vez de 2 e some todos eles juntos:
    #include <stdio.h>
    
    int main()
    {
          int a, b, c;
          printf("Entre o primeiro valor:");
          scanf("%d", &a);
          printf("Entre o segundo valor:");
          scanf("%d", &b);
          c = a + b;
          printf("%d + %d = %d\n", a, b, c);
          return 0;
     }    
  • Tente apagar ou adicionar caracteres ou palavras aleatórias em um dos programas anteriores e veja como o compilador reage a tais erros de compilação. Por exemplo, apague a variável b na primeira linha do programa anterior e veja o que o compilador faz quando você se esquece de declarar uma variável. Apague um ponto-e-vírgula e veja o que acontece. Omita uma das chaves. Remova um dos parênteses próximos à função principal. Faça uma alteração por vez e compile o programa para ver o que acontece. Simulando erros como esses você pode aprender sobre diferentes erros de compilação, o que facilitará futuras detecções quando você os cometer.
Erros a serem evitados na linguagem C
  • Usar letras maiúsculas e minúsculas aleatoriamente. Letras maiúsculas e minúsculas são importantes na linguagem C, portanto você não pode digitar Printf ou PRINTF. É obrigatório que seja printf.
  • Esquecer de usar o & em scanf.
  • Parâmetros em excesso ou a falta deles após a instrução de formato em printf ou scanf.
  • Esquecer de declarar o nome de uma variável antes de utilizá-la.

Desvio e looping Em C, as instruções if e loops while regem-se pelos princípios das expressões Booleanas. Eis um programa simples em C que demonstra uma instrução if:
#include <stdio.h>

int main()
{
int b;
printf("Digite um valor:");
scanf("%d", &b);
if (b < 0)
printf("O valor é negativo ");
return 0;
}
Este programa aceita um número do usuário. Ele então testa esse número utilizando uma instrução if para ver se ele é menor que 0. Se for, o programa imprime uma mensagem. Caso contrário, o programa não faz nada. A parte (b < 0) do programa é a expressão booleana. A linguagem C avalia esta expressão para decidir se imprime ou não a mensagem. Se a expressão booleana se mostra Verdadeira, então a linguagem C executa a linha imediatamente posterior à instrução if (ou um bloco de linhas entre chaves logo após a instrução if). Se a expressão booleana se mostrar Falsa, então a linguagem C pula a linha ou bloco de linhas logo após a instrução if.
Eis um exemplo um pouco mais complexo:
#include <stdio.h>

int main()
{
int b;
printf("Digite um valor:");
scanf("%d", &b);
if (b < 0)
printf("O valor é negativo ");
else if (b == 0)
printf("O valor é zero ");
else
printf("O valor é positivo ");
return 0;
}
Neste exemplo, as seções else if e else avaliam tanto para valores positivos como zero.
Eis uma expressão booleana mais complicada:
if ((x==y) && (j>k))
z=1;
else
q=10;
Esta instrução diz: "Se o valor da variável x for igual ao valor da variável y, e se o valor da variável j for maior que o valor da variável k, então defina a variável z como 1; de outro modo, defina a variável q como 10". Você usará instruções if como esta em todos os seus programas C para tomar decisões. De um modo geral, a maioria das decisões será simples como o primeiro exemplo, mas, eventualmente, as coisas podem ser um pouco mais complicadas.
Observe que a linguagem C utiliza == para testar a igualdade, enquanto utiliza = para atribuir um valor a uma variável. O símbolo && em C representa uma operação booleana AND.
Aqui estão todos os operadores booleanos em C:
  igualdade         ==
  menor que         < 
  maior que         >    
  menor ou igual    <= 
  maior ou igual    >=  
  desigualdade      != 
  e                 &&  
  ou                || 
  não               !
Você descobrirá que as instruções while são tão fáceis de utilizar como as instruções if. Por exemplo:
while (a < b)
{      
   print("%d\n", a);  
   a = a + 1;
}
Isso faz com que duas linhas entre chaves sejam executadas repetidamente até que a seja maior ou igual a b. Em geral, a instrução while funciona assim:
A linguagem C também oferece uma estrutura do-while:
  do
  {
      printf("%d\n", a);
      a = a + 1;
  }
  while (a < b);   
O loop for na linguagem C é apenas um atalho para expressar uma instrução while. Por exemplo, suponha que você tenha o seguinte código em C:
  x=1;
  while (x<10)
  {
      blá blá blá
      x++; /* x++ é o mesmo que dizer x=x+1 */
  } 
Você pode converter isso em um loop for da seguinte forma:
  for(x=1; x<10; x++)
  {
      blá blá blá
  }   
Observe que o loop while contém uma etapa de inicialização (x=1), uma etapa de teste (x<10) e uma de incremento (x++). O loop for permite colocar as três partes em uma única linha, mas você pode colocar qualquer coisa nelas. Por exemplo, suponha que você tenha o seguinte loop:
  a=1;
  b=6;
  while (a < b)
  {
      a++;
      printf("%d\n",a);
  }   
Você também pode colocá-lo para indicação:
  for (a=1,b=6; a < b; a++,printf("%dn",a));  
É um pouco confuso, mas é possível. O operador vírgula permite separar diversas instruções diferentes nas seções de inicialização e incremento do loop for (porém não na seção de teste). Muitos programadores de linguagem C gostam de concentrar muitas informações em uma única linha de código. Outros acham que isto torna o código mais difícil de entender, e portanto desmembram essas instruções.
= versus == em expressões booleanas
O sinal == é um problema na linguagem C pois freqüentemente você se esquece e digita apenas = em uma expressão booleana. Este é um erro comum de ocorrer, mas para o compilador há uma diferença significativa. A linguagem C aceitará = e == em uma expressão booleana, mas o comportamento do programa mudará consideravelmente quando usamos um ou outro.
As expressões booleanas em C avaliam os inteiros e os inteiros podem ser usados dentro de expressões booleanas. O valor inteiro 0 em C é Falso, enquanto qualquer outro valor inteiro é Verdadeiro. É código seguinte é permitido em C:
  #include <stdio.h>  

  int main()
  {
      int a;
      printf("Digite um número:");
      scanf("%d", &a);
      if (a)
      {
          printf("O valor é verdadeiro\n");
      }
      return 0;
  }  
Se a for qualquer número diferente de 0, a instrução printf é executada.
Em C, uma instrução como if (a=b) significa: “Atribuir b para a, e então testar a para seu valor Booleano". Assim, se a retornar o valor 0, a instrução if é Falsa. Caso contrário, é Verdadeira. O valor de a muda durante o processo. Este não é o comportamento desejado se você pretendeu digitar == (embora esta característica seja útil quando usada corretamente), assim, tenha cuidado com o uso de = e ==.

segunda-feira, 11 de abril de 2011

Linguagem C (parte 2)

O mais simples programa em C : o que está acontecendo? Vamos analisar este programa e aprender o que as diferentes linhas de comando fazem:
  • Este programa em C começa com #include <stdio.h>. Esta linha inclui uma "biblioteca padrão de I/O" (entrada/saída) em seu programa, que permite ler a entrada a partir do teclado (denominada "entrada padrão"), exibir o resultado em uma tela (denominada "saída padrão"), processar arquivos de texto armazenados em disco e assim por diante. É uma biblioteca extremamente útil. A linguagem C possui um grande número de bibliotecas padrão como stdio, incluindo bibliotecas de strings de caracteres, de horário e de funções matemáticas. Uma biblioteca é simplesmente um pacote de códigos que alguém escreveu anteriormente para simplificar a sua vida (discutiremos bibliotecas daqui a pouco).
  • A linha int main( ) declara a função principal. Todo programa em C deve ter uma função denominada main em algum lugar no código. Aprenderemos mais sobre as funções em breve. O programa começa a ser executado a partir da primeira linha da função main.
  • Em C, os símbolos { e } marcam o começo e término de um bloco de código. Neste caso, o bloco de código que compõe a função principal contém duas linhas.
  • A instrução printf em C permite enviar o resultado para a saída padrão (para nós, a tela). A parte entre aspas é denominada string de formato e descreve como os dados serão formatados quando impressos. A string de formato pode conter strings de caracteres como "Este é o resultado do meu primeiro programa!", símbolos de quebra de linha (\n), e operadores como expressão de controle para variáveis (vide abaixo). Se você está usando UNIX, pode digitar man 3 printf para obter uma documentação completa sobre a função printf. Caso contrário, consulte a documentação incluída em seu compilador para mais detalhes sobre a função printf.
  • A linha return 0; faz com que a função retorne um código de erro de 0 (sem erros) à shell que iniciou a execução. Esta capacidade será discutida em detalhes mais tarde.
  •   

Variáveis Como programador, você com freqüência desejará que seu programa se "lembre" de um valor. Por exemplo, se seu programa solicita um valor do usuário, ou se ele calcula um valor, você vai querer armazená-lo em algum lugar para usá-lo mais tarde. O modo como seu programa se lembra das coisas é por meio do uso de variáveis. Por exemplo:
      int b;  
Esta linha diz: "Quero criar um espaço chamado b que possa conter um valor inteiro". Uma variável tem um nome (neste caso, b) e um tipo (neste caso, int, um inteiro). Você pode armazenar um valor em b escrevendo algo assim:
      b = 5;  
Você pode usar o valor em b escrevendo algo assim:
      printf("%d", b);  
Na linguagem C, há vários tipos padrões de variáveis:
  • int - valores inteiros (número inteiro)
  • float - valores de ponto flutuante
  • char - valores de caractere único (como "m" ou "Z")
Veremos exemplos destes outros tipos à medida que avançarmos.

Printf A instrução printf permite enviar o resultado para a saída padrão. Para nós, o termo "saída padrão" se refere à tela (embora você possa redirecionar a saída padrão para um arquivo de texto ou outro comando).
Eis outro programa que o ajudará a aprender mais sobre printf:
#include <stdio.h>  

int main( )
  {
      int a, b, c;
      a = 5;
      b = 7;
      c = a + b;
      printf("%d + %d = %d\n", a, b, c);  
      return 0;
  }  
Digite este programa em um arquivo e salve-o como add.c. Compile-o com a linha gcc add.c -o add e depois execute-o digitando add (ou ./add). Você verá a linha "5 + 7 = 12" como resultado.
Eis uma explicação das diferentes linhas neste programa:
  • a linha int a, b, c; declara três variáveis de número inteiro denominadas a, b e c.
  • a próxima linha inicializa a variável nomeada a para o valor 5.
  • a próxima linha define 7 para b .
  • a próxima linha soma a e b e "atribui" o resultado a c.
    O computador adiciona o valor em a (5) ao valor em b (7) para formar o resultado 12 e então coloca o novo valor (12) na variável c. Por este motivo, o sinal = nesta linha é denominado "operador de atribuição".
  • A instrução printf depois imprime a linha "5 + 7 = 12". As expressões de controle %d na instrução printf atuam como expressão de controle de valores. Há 3 expressões de controle %d, e no final da linha printf há três nomes de variável: a, b e c. A linguagem C liga o primeiro %d ao a e o substitui por 5. Ele liga o segundo %d com b e o substitui por 7, faz a correspondência do terceiro %d com c e o substitui por 12. Depois, imprime a linha completa na tela: 5 + 7 = 12. O +, o = e o espaçamento são parte da linha de formato e são automaticamente integrados entre os operadores %d conforme especificado pelo programador.

domingo, 10 de abril de 2011

Linguagem C

O que é C? C é uma linguagem de programação de computadores. Isso significa que você pode usá-la para criar listas de instruções para um computador seguir. A linguagem C é uma das milhares de linguagens de programação atualmente em uso. Existe há várias décadas e ganhou ampla aceitação por oferecer aos programadores o máximo em controle e eficiência. A linguagem C é fácil de aprender: pode ter um estilo um tanto criptográfico comparada às outras linguagens, mas isso é logo superado.

A linguagem C é o que se chama de linguagem compilada. Isso significa que, uma vez escrito o programa em C, ele deve ser passado por um compilador para transformar seu programa em executável para o computador rodar (executar). Um programa em C possui um formato legível ao homem, enquanto o executável gerado no compilador possui a forma legível para a máquina e é executada por ela. Isto significa que para escrever e executar um programa em C, você precisa ter acesso a um compilador de C. Se estiver usando uma máquina UNIX (por exemplo, escrevendo scripts CGI em C no seu computador UNIX, ou se você é um estudante que trabalha em uma máquina UNIX de um laboratório), o compilador de C está disponível gratuitamente. Ele é chamado "cc" ou "gcc" e está disponível na linha de comando. Se você é um aluno, estão a escola lhe fornecerá um compilador (descubra qual a escola usa e aprenda mais sobre ele). Se estiver trabalhando em casa em uma máquina Windows, você precisará fazer o download de um compilador de C gratuito ou comprar um compilador comercial. Um compilador comercial amplamente utilizado é o ambiente Visual C++ da Microsoft (ele compila programas em C e C++). Mas, infelizmente, este programa custa caro. Caso não disponha de algumas centenas de dólares para gastar em um compilador comercial, você pode usar um dos compiladores gratuitos disponíveis na internet.
Vamos começar com um programa em C bastante simples e progredir a partir dele. Vamos supor que você usará a linha de comando UNIX e o gcc como seu ambiente para estes exemplos, mas caso contrário, todos os códigos também funcionarão (basta compreender e usar o compilador que tiver disponível).

 O mais simples programa em C Vamos começar com o programa em C mais simples possível e usá-lo tanto para entender os fundamentos da linguagem C como o processo de compilação em C. Digite o programa seguinte em um editor de textos padrão (vi ou emacs no UNIX, Bloco de notas no Windows ou TeachText no Macintosh). Depois salve o programa em um arquivo denominado samp.c. Se deixar de incluir .c, você provavelmente receberá informação de algum tipo de erro ao compilá-lo (portanto, não se esqueça de inserir o .c). Certifique-se também de que o editor não anexe automaticamente caracteres extras (como .txt) ao nome do arquivo. Eis o primeiro programa:
#include <stdio.h>      

int main()  
{      
   printf("Este é o resultado do meu primeiro program!\n");     
   return 0;
}  
Quando executado, este programa instrui o computador a imprimir a linha: "Este é o resultado do meu primeiro programa!", e depois encerra o programa.

Posição
Ao escrever este programa, posicione #include de forma que o sinal # esteja na coluna 1 (mais à esquerda). Isso facilita o seu entendimento, mas na verdade o espaçamento e recuo podem ser do jeito que você preferir. Em alguns sistemas UNIX, você encontrará um programa chamado cb, o C Beautifier (algo como "embelezador de C"), que formata códigos. O espaçamento e recuo mostrados acima são um bom exemplo a seguir.
Para compilar este código, siga estas etapas:
  • Em uma máquina UNIX, digite gcc samp.c -o samp (se gcc não funcionar, tente cc). Esta linha executa o compilador em C chamado gcc, pede que compile samp.c e que nomeie o arquivo executável criado como samp. Para executar o programa, digite samp (ou em algumas máquinas UNIX, ./samp).
  • Em uma máquina rodando DOS ou Windows e usando DJGPP (em inglês), digite o seguinte no prompt do MS-DOS: gcc samp.c -o samp.exe. Esta linha executa o compilador em C chamado gcc, Pede que compile samp.c e que nomeie o arquivo executável criado como samp.exe. Para executar o programa, digite samp.
  • Se estiver trabalhando com algum outro compilador ou sistema de desenvolvimento, leia e siga as instruções dele para compilar e executar o programa.
Você verá "Este é o resultado do meu primeiro programa!" ao executá-lo. Veja o que aconteceu ao compilar o programa:

Caso tenha cometido um erro de digitação no programa, ele não compilará ou não poderá ser executado. Se o programa não foi compilado ou não executa corretamente, edite-o e localize os erros de digitação. Corrija o erro e tente novamente.

domingo, 3 de abril de 2011

Como atualizar a versão do Windows Seven

Atualize a versão do seu windows usando o “Windows Anytime Upgrade“, com ele você pode alterar a versão do seu Windows Starter, Home, Business ou Premium para a versão Professional ou Ultimate sem ter que fazer uma nova instalação ou modificar seus softwares já instalados.

Aqui será mostrado como alterar a versão Windows 7 Home Premium para a Ultimate.É fácil, rápido, e você preserva seus programas, arquivos e configurações, tudo isso em menos de 10 minutos.


O que é o Windows Anytime Upgrade?

Nada mais é que um utilitário da Microsoft que permite a atualização da versão do Windows para uma versão superior com mais recursos.

Perguntas Frequentes


Estas são respostas a algumas dúvidas comuns sobre o Windows 7 Anytime Upgrade.
Posso usar o Windows Anytime Upgrade para fazer a atualização de uma versão anterior do Windows para o Windows 7?


Não. O Windows Anytime Upgrade não pode atualizar versões anteriores do Windows para o Windows 7. O Windows Anytime Upgrade foi projetado apenas para atualizar o computador de uma edição do Windows 7 para outra edição do Windows 7.


Posso atualizar as versões de 32 e 64 bits do Windows 7 com o Windows Anytime Upgrade?


Sim, você pode usar o Windows Anytime Upgrade para atualizar uma versão de 32 bits para outra de 32 bits ou uma versão de 64 bits para outra de 64 bits do Windows 7. No entanto, o Windows Anytime Upgrade não pode atualizar uma versão de 32 bits para outra de 64 bits do Windows 7 ou uma versão de 64 bits para outra de 32 bits do Windows 7.


Posso voltar à edição do Windows 7 que o meu computador estava executando antes da atualização?


Sim, mas será necessário fazer uma instalação limpa da edição anterior do Windows 7, o que significa que os seus arquivos e as suas configurações de programas não serão preservados.


Alterando a versão do Windows 7

Primeiro, vamos checar a versão atual do windows, como podem ver,
é a versão Home Premium.



No seu PC, abra o Windows Anytime Upgrade, clicando no botão Iniciar, Todos os Programas e clicando em Windows Anytime Upgrade.






Clique em Digitar uma chave de atualização.


Digite a chave de atualização da versão Ultimate e clique em Avançar.

D4F6K - QK3RD - TMVMJ - BBMRX - 3MBMV

Após a verficação da chave, clique em Avançar.



Clique em Aceito para aceitar os termos da licença.



Antes de atualizar, salve seu trabalho e feche todos os programas abertos, após isso clique em Atualizar.



Após acabar a atualização clique em Avançar.



Seu windows será atualizado, não desligue o computador, ele reiniciará sozinho, note no rodapé da imagem que a versão ainda é a Home Premium.


Após reiniciar o computador, o windows vai continuar as atualizações, mas note no rodapé da imagem que a versão agora já é a Ultimate.



Terminando os updates, uma tela irá aparecer informando que as atualizações tiveram exito, e que seu computador está pronto para uso com a versão Ultimate.


Confirme a versão do Windows clicando nas propriedades do seu computador.


Ativar nova versão

Baixe o Windows 7 Loader
Baixar

1. Descompacte o arquivo, execute o “Windows 7 Loader.exe” e clique em “Install”

2. Agora escolha uma marca, e click no botão logo abaixo das marcas
Obs. A marca escolhida não precisa ser a mesma do seu PC, clic em uma qualquer e tenter atualizar, caso não atualize, execute o 7loader novamente e escolha outra marca até obter sucesso.

3. Depois click em Install 7Loader, e de OK.
Logo o computador irá reiniciar e o windows estará validado.
Verificando se o windows está atualizado:
Click em propriedade do Meu Computador e verifique


Quem tiver a versão Starter e quiser passar para Ultimate, primeiro você tem que passar para Home Premium, e depois passar para Ultimate. Os procedimentos são os seguintes:

1. Execute o Windows Anytime Upgrade

2. Digite a chave do Home Premium ->

H4JWX-WHKWT-VGV87-C7XPK-CGKHQ

3. Execute o Windows Anytime Upgrade novamente

4. Digite a chave do Ultimate que está no tutorial acima.
Alterando também a linguagem do Sistema

O Windows 7 é todo modular, até na linguagem do Sistema Operacional. Se você pegar um computador com a versão Home Premium em inglês, basta fazer esse procedimento e depois de virar Ultimate, baixe o pacote de linguagem do brasil através do Windows Update, evitando a formatação do windows apenas para trocar a versão do idioma.


Fonte: http://infohelp.org