Você deve ter ao menos alguma noção básica de conceitos essenciais de programação antes de ler isto, como o que é uma linguagem de programação, source-code e linha de comando. Se você já conhece um pouco outra linguagem, isto deve ser bem fácil de entender. Este tutorial se concentra em ensinar C puro, principalmente programas somente de texto de linha de comando. Há um pequeno bônus que mostra alguns princípios básicos de programação gráfica no final, mas tenha em mente que é inevitável aprender passo a passo, por mais que você queira começar a programar jogos gráficos, primeiro você tem que aprender bem a linguagem em si. Não tenha pressa. Confie neste conselho, ele é sincero. Se fizer dois capítulos por dia, deve levar cerca de meia hora, em uma semana você saberá C básico.
Artigos complementares para este tutorial são
C é:
A programação em C funciona assim:
Então, para escrever o source-code, você precisará de um editor de texto, mas você deve usar algum que possa destacar a sintaxe C, isso ajuda muito na programação e é praticamente uma necessidade. O editor ideal é o vim, mas é um pouco difícil de aprender, então você pode usar algo tão simples quanto o Gedit ou o Geany. Não use IDEs enormes. Você definitivamente não pode usar um editor de documentos avançado que funcione com rich text, como aquela porcaria da Micro$oft. Em seguida, você precisará de um compilador C. Usaremos o mais comumente usado, chamado gcc, você pode tentar outros, como o tcc se quiser. Se estiver em um sistema semelhante ao UNIX, como GNU/Linux, o que provavelmente deveria, o gcc provavelmente já está instalado. Abra um terminal e escreva gcc para ver se ele está instalado, se não, então instale-o, como com sudo apt install build-essential se você estiver em uma distribuição baseada em Debian. Se você for extremamente preguiçoso como eu, existem compiladores C online que funcionam em um navegador da web. Você pode usá-los para experimentos rápidos, mas observe que há algumas limitações, como não ser capaz de trabalhar com arquivos, e você definitivamente deve saber como compilar programas você mesmo. Existem vários padrões de C. Aqui, abordaremos o C99, mas não se incomode com isso no momento.
Vamos tentar compilar rapidamente um pequeno programa para testar tudo e ver como tudo funciona na prática. Abra seu editor de texto e cole este código:
/* programa de C simples */ #include <stdio.h> int main(void) { puts("Funciona."); return 0; }
Salve este arquivo e nomeie-o program.c. Abra um emulador de terminal, ou uma interface de linha de comando equivalente, localize-se no diretório onde você salvou o arquivo e compile o programa com o seguinte comando:
gcc -o program program.c
O programa deve compilar e o programa executável deve aparecer no diretório. Você pode executá-lo com:
./program
E você deve ver "Funciona." escrito na linha de comando.
Agora vamos ver o que o source-code significa:
/* programa C simples! */
é o chamado comentário em bloco, ele não faz nada, está aqui apenas para os humanos que lerão o source-code. Tais comentários podem estar em quase qualquer lugar do código. O comentário começa em /* e termina com */.#include <stdio.h>
diz ao compilador que queremos incluir uma biblioteca chamada stdio, a sintaxe estranha será explicada no futuro. Esta é uma biblioteca padrão com funções de entrada e saída, precisamos dela para poder usar a função puts mais tarde. Podemos incluir mais bibliotecas se quisermos. Essas inclusões estão quase sempre no topo do source-code.int main(void)
é o início do programa principal. O que exatamente isso significa será explicado mais tarde, lembre-se de que deve haver essa função chamada main em basicamente todos os programasz dentro dela, há comandos que serão executados quando o programa for executado.puts("Funciona.");
é um "comando" para imprimir strings de texto na linha de comando, é um comando da biblioteca stdio incluída acima. Por que exatamente isso é escrito assim será explicado mais tarde, mas por enquanto observe o seguinte. O comando começa com seu nome, então há colchetes esquerdo e direito entre os quais há argumentos para o comando. As sequências de texto devem ser colocadas entre aspas, caso contrário, o compilador pensaria que as palavras são outros comandos, as aspas não fazem parte da sequência em si, elas não serão impressas. O comando é encerrado por ';' todos os comandos normais em C devem terminar com ponto e vírgula.return 0;
basicamente informa ao sistema operacional que tudo foi encerrado com sucesso, 0 é um código para sucesso. Este comando é uma exceção, pois não precisa ter colchetes. Isso não precisa nos incomodar muito agora, vamos apenas lembrar que este será sempre o último comando em nosso programa.Observe também como o source-code é formatado, por exemplo, o recuo do código dentro dos colchetes. Caracteres em branco, espaços, novas linhas, tabulações, são ignorados pelo compilador, então podemos teoricamente escrever nosso programa em uma única linha, mas isso seria ilegível. Usamos recuo, espaços e linhas vazias para formatar o código para que fique bem legível. Para resumir, vamos ver uma estrutura geral de um programa C típico. Você pode simplesmente copiar e colar isso para qualquer programa novo e então começar a escrever comandos na função principal.
#include <stdio.h> /* inclua a biblioteca de I/O */ /* mais bibliotecas podem ser incluídas */ int main(void) { /* escreva comandos aqui */ return 0; /* sempre o último comando */ }
A programação é similar à matemática, calculamos equações e transformamos valores numéricos em outros valores. Você provavelmente sabe que em matemática usamos variáveis como x ou y para denotar valores numéricos que podem mudar, portanto, variáveis. Na programação, também usamos variáveis , aqui variável é um lugar na memória que tem um nome, e neste lugar será armazenado um valor que pode mudar ao longo do tempo. Podemos criar variáveis chamadas x, y, myVariable ou score e então armazenar valores específicos, por enquanto, vamos considerar apenas números, nelas. Podemos ler e escrever nessas variáveis a qualquer momento. Essas variáveis residem fisicamente na RAM, mas não nos importamos realmente onde em qual endereço elas estão localizadas. Nomes de variáveis não podem começar com um dígito, e não podem ser nenhuma das keywords reservadas. Elas também não devem ser todas maiúsculas ou começar com maiúsculas, elas são normalmente usadas para outras coisas. Nomeamos variáveis como myVariable ou my_variable, escolha um estilo, não os misture. Em C, assim como em outras linguagens, cada variável tem um certo tipo de dado; ou seja, cada variável tem associada uma informação de que tipo de dado está armazenado nela. Isso pode ser, por exemplo, um número inteiro, fração, um caractere de texto, string de texto etc. Os tipos de dados são um tópico mais complexo que será discutido mais tarde, por enquanto começaremos com o mais básico, o tipo inteiro, em C chamado int. Uma variável int pode armazenar números inteiros no intervalo de pelo menos -32768 a 32767.
#include <stdio.h> int main(void) { int myVariable; myVariable = 5; printf("%d\n",myVariable); myVariable = 8; printf("%d\n",myVariable); }
int myVariable;
é a chamada declaração de variável, ela diz ao compilador que estamos criando uma nova variável com o nome myVariable e tipo de dados int. Variáveis podem ser criadas em quase qualquer lugar no código, mesmo fora da função principal, mas esse é um tópico para mais tarde.myVariable = 5;
é a chamada atribuição de variável, ela armazena um valor 5 em uma variável chamada myVariable. O = não significa igualdade matemática, mas uma atribuição, igualdade em C é escrita como ==, quando o compilador encontra =, ele simplesmente pega o valor à direita dele e o escreve na variável à esquerda dele. As pessoas confundem atribuição com uma equação que o compilador resolve , este não é o caso, atribuição é muito mais simples, ela simplesmente escreve um valor na variável. Então x = x + 1 é um comando válido, embora matematicamente seria uma equação sem solução.printf("%d\n",myVariable);
imprime o valor atualmente armazenado em myVariable. Não se assuste com este comando complicado, ele será explicado mais tarde, assim que aprendermos sobre ponteiros.myVariable = 8;
atribui um novo valor a myVariable, sobrescrevendo o antigo.printf("%d\n",myVariable);
novamente imprime o valor em myVariable.Após compilar e executar o programa, você deve ver:
5 8
A última coisa a aprender são os operadores aritméticos. Eles são apenas operadores matemáticos normais, como +, - e /. Você pode usá-los junto com colchetes para criar expressões. As expressões podem conter variáveis e podem ser usadas em muitos lugares onde as variáveis podem ser usadas, mas não em todos os lugares, por exemplo, no lado esquerdo da atribuição de variáveis, isso não faria sentido:
/* Programa simples que calcula e imprime seu IMC. */ #include <stdio.h> int main(void) { int heightCm = 175; int weightKg = 75; int bmi = (weightKg * 10000) / (heightCm * heightCm); printf("%d\n",bmi); }
Vamos mencionar rapidamente como você pode ler e escrever valores em C para que possa começar a experimentar seus próprios pequenos programas. Você não precisa entender a sintaxe a seguir ainda, ela será explicada mais tarde, agora basta copiar e colar os comandos:
puts("hello");
Imprime uma sequência de texto com quebra de linha.
printf("hello");
O mesmo que acima, mas sem quebra de linha.
printf("%d\n",x);
Imprime o valor da variável x com quebra de linha.
printf("%d ");
O mesmo que acima, mas sem quebra de linha.
scanf("%d",&x);
Lê um número da entrada para a variável x. Observe que deve haver & na frente de x.Ao criar algoritmos, não basta apenas escrever sequências lineares de comandos. Duas coisas, chamadas estruturas de controle, são muito importantes de se ter além disso:
TODO