Aprenda C em 20 minutos

Aprenda C em 20 minutos

Nesse post você vai entender como pode aprender C rapidamente, porém, vale a pena fazer o disclaimer:

Você não vai dominar o C apenas vendo esse post. Aqui você vai encontrar exemplos simples práticos e rápidos de como esse linguagem funciona e qual a sintaxe básica para cada uma das funcionalidades da linguagem.

Antes de mais nada, vamos entender um pouco mais dessa linguagem maravilhosa que permitiu criar a maioria dos sistemas operacionais que você usa hoje em dia 🙂

Quer aprender mais linguagens em 20 minutos? Acesse nossa página de cursos.

Entenda um pouco da história do C

A linguagem C nasceu no AT&T Bell Labs entre 1969 e 1973 nas mãos do cientista da computação Dennis Ritchie. A linguagem C foi batizada com esse nome, pois existiram outras linguagens batizadas com o nome de “B” (uma versão reduzida da linguagem de programação BCPL).

A linguagem C não teve um sucesso imediato após a sua criação e o seu uso ficou restrito a alguns laboratórios. Porém, em 1978 os americanos Brian Kernighan e Dennis Ritchie lançaram o livro The C Programming Language, isso mudou a história da programação em C.

Nos anos seguintes a linguagem C se popularizou no cenário da ciência da computação e até hoje é usada em vários cursos para ensinar vários conceitos importantes que outras linguagens não permitem mais que o usuário controle (por exemplo, ponteiros).

As pessoas ainda usam C?

Claro que usam, e digo mais, você deve estar usando frequentemente.

A linguagem C foi muito utilizada nos primórdios da programação, porém, vários softwares muito famosos foram construídos usando o C. Veja alguns exemplos:

  • Sistemas operacionais como Windows, MAC e linux
  • Microsoft Office
  • Git
  • Adobe suite
  • Google Chromium
  • Mozilla firefox
  • MySQL

É claro que quando falamos no Windows estamos falando em um software gigantesco e com muitas ramificações. Existem partes do Windows que foram feitas em C++ e outras partes usando outras linguagens. Assim como vários outros softwares comerciais atuais.

Como eu faço para aprender C em 20 minutos?

Primeiramente, você precisa ter um pouco de calma com essa linguagem. Lembre-se que ela é uma das primeiras linguagens criadas, sendo assim, ela não possui muitos recursos que conhecemos hoje em dia. Como eu já disse anteriormente, vai demorar muito mais do que 20 minutos para você dominar a linguagem, no entanto, nesse post vou ser seu guia para entender melhor como ela funciona.

Entrada e saída

Em primeiro lugar você precisa compreender como funciona as entradas e saídas da linguagem C. Para entrar com dados você pode usar a função scanf (que faz a entrada pelo teclado) ou então você pode optar por usar arquivos para fazer a entrada.

//Exemplo de scanf:
int i = 0;
scanf("%d",&i);

A saída também pode ocorrer usando o próprio terminal ou então arquivos. Quando você quiser usar o terminal simplesmente digite:

printf("Saída padrão")

Se você quer saber mais como fazer isso usando arquivos veja um bom tutorial aqui.

Variáveis e operadores

As variáveis e operadores são a forma mais simples de armazenar informações. Esses “espaços” na memória são alocados na sua memória RAM e ficam disponíveis até que você encerre o programa.

Para declarar uma variável, você deve indicar qual é o tipo da variável que você está declarando e é recomendado que você atribua um valor inicial para ela:

int a = 0;

A linguagem C aceita apenas alguns tipos primitivos: int (inteiro), char (caractere), float (ponto flutuante – números decimais), double (ponto flutuante com alta precisão). Você pode perceber que não existem strings, não existem objetos complexos, nem funções assim como outras linguagens. Na linguagem C pouquíssimas coisas são consideradas “nativas”, assim, se você quer algum desses recursos você precisa construí-los ou importar uma biblioteca que faça isso pra você.

Condicionais

As condições são essenciais em qualquer linguagem de programação, isso não é diferente no C. Essa linguagem tem suporte a dois tipos principais de operadores para decisão: o if/else e o switch. O if/else pode ser declarado simplesmente usando:

if ( condição ){
     // se verdadeiro
}else{
     // se falso
} 

Já o switch case possui uma estrutura diferente do if/else, mas também permite avaliar uma condição e desviar o fluxo do codigo:

switch (variável) {    
     case constante1:      
          //Instruções;    
      break;    
      case constante2:      
          //Instruções;    
      break;    
      default:
          //Instruções; 
}

Loops

Os laços de repetição são formas de repetir uma ação até que um evento aconteça. Por exemplo, mande uma mensagem na tela até que o usuário fale a palavra-passe.

Na linguagem C existem 2 principais tipos de laços que são nativos: o while e o for. Nesse minicurso não vamos abordar variações como o do/while.

O while tem uma sintaxe bastante fácil de memorizar:

while (condição){
   // faça alguma coisa
}

Essa condição precisa ser uma comparação que retorna um booleano (verdadeiro ou falso). Por exemplo, a < 10 ou idade > 18. Tenha muito cuidado ao definir esses laços com o ponto de parada, eles precisam ser bem definidos ou então seu programa entrará em loop infinito e não conseguirá executar mais nenhuma ação.

Geralmente nós definimos uma espécie de contador para encerrar o laço:

int i = 0;
while (i < 10){
   // faça alguma coisa
   i = i + 1;
}

Perceba que nesse caso o laço irá rodar 10 vezes e na décima irá parar, devido a condição imposta dentro do while. Se você quer algo mais “robusto”, você pode usar o for:

int i = 0;
for( i = 0 ; i < 10 ; i++ ){
   // faça alguma coisa
}

Nosso amigo for é mais “seguro” devido a sua estrutura já possuir uma forma de contador. Esse contador faz com que a condição de parada seja mais explícita evitando muitos transtornos.

Vetores e matrizes

Em alguns casos, variáveis simples não são suficientes para criar nossos programas. Imagine por exemplo que você quer cadastrar vários salários de várias pessoas para realizar um cálculo, nessa situação, podemos usar variáveis, no entanto, fica muito difícil manipular os dados usando laços de repetição se não tivermos uma estrutura que nos ajude.

A linguagem C permite que façamos um agrupamento de valores usando uma estrutura de vetores. Um vetor é simplesmente uma “variável” que suporta colocarmos vários valores dentro. Para isso devemos informar o tipo e também seu tamanho:

int vetor[10];

Podemos inicializar um vetor da seguinte forma:

int vetor = {1,2,3,4,5,6,7};

Nesse caso o vetor já assume automaticamente que possui 7 posições e você pode usá-las como quiser. Para acessar uma posição você pode:

// acessa a primeira posição
vetor[0]

Os vetores são versáteis e podem ser usados em diversos contextos. Além dos vetores podemos também usar as matrizes, que são simplesmente – vetores de vetores. Parece complicado mas não é, veja um exemplo.

// isso é um vetor:
int vetor [10];

// isso é uma matriz:
int matriz[10][10];

Em uma matriz, existem 2 dimensões. Assim, você pode armazenar valores como se estivesse tratando uma tabela do Excel. Os valores ficam armazenados mais ou menos assim:

[1][2][3]
[4][5][6]
[7][8][9]

Funções

Uma parte importante ao aprender um linguagem de programação é entender como podemos definir funções. Uma função é simplesmente um trecho de código que é capaz de receber parâmetros (valores), fazer um processamento e devolver um resultado (retorno).

Vamos a um exemplo bobo:

Imagine que você tem dois numero: 1 e 2. Você deseja soma-los. Então você simplesmente recebe esses números, soma e devolve o resultado.

Na linguagem C isso seria feito assim:

int somar (int a, int b){
   int resultado = a + b;
   return resultado;
}

Perceba que “somar” é o nome dado a função (você pode usar qualquer nome que você quiser), A e B são os parâmetros e “resultado” é o retorno. Além disso, você encontra um int no começo da função, aquilo é denominado tipo de retorno, é ali que você diz que tipo de dados será retornado.

Structs

Na linguagem C não existem objetos, no máximo, você poderá definir registros. Esses registros são simplesmente agrupamentos de variáveis em um tipo mais complexo. Por exemplo, uma pessoa possui idade e salário, então podemos agrupar esses dois campos em um tipo “pessoa”.

struct pessoa{
    int idade;
    float salario;
}

Para usar esse novo tipo de dados você pode chama-lo no código assim:

struct pessoa p1;
// a seguir você pode atribuir valores:
p1.idade = 18;
p1.salario = 1200;

As structs são boas soluções quando você precisa criar um tipo mais complexo de dados para não precisar lidar com vetores separados que representam a mesma coisa.

Ponteiros

A cereja do bolo da linguagem C são os chamados ponteiros. Eu não vou entrar em detalhes aqui, visto que o objetivo desse post não ser tão profundo. Mas devo dizer que o tipo ponteiro é um tipo especial que encontramos no C para manipular endereços de memória.

Por exemplo, imagine que temos uma variável A que está sendo armazenado no endereço 1B (hexadecimal). O tipo ponteiro é capaz de armazenar o valor do endereço hexadecimal da variável A.

Em C isso ficaria mais ou menos assim:

int a = 0;
int* ponteiroA = &a;

Nesse código, encontramos a variável A sendo instanciada e a variável “ponteiroA” recebendo o endereço de (&) a.

Eu sei, eu sei, isso é uma viagem que é difícil de entender. Mas acredite, graças a esse conceito, muitas coisas que você usa hoje foram possíveis. Mas isso é um assunto pra uma outra aula.

Repositório

Clique na imagem abaixo nosso repositório do Github com exemplos fáceis e práticos de como funcionam as principais ferramentas dessa linguagem.

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e forma com que ela pode transformar vidas!

Deixe uma resposta