Skip to content

Introdução

Primeiro encontro com o básico de alguns conceitos de programação.

Programa de computador

Um programa de computador é uma sequência de instruções que descreve tarefas a serem executadas por um computador. Uma receita de bolo está para um confeiteiro como um programa está para um computador.

Linguagem de programação

Para escrever programas, utiliza-se linguagens especializadas em escrever instruções para computadores: as linguagens de programação. Nos concentraremos na linguagem C++.

Às instruções escritas em uma linguagem de programação damos o nome de código.

Editor de texto

Um programa pode ser escrito em qualquer editor de texto, como Word, bloco de notas, Google Docs e WordPad, por exemplo. Porém, existem editores de texto especializados no desenvolvimento de programas, trazendo consigo ferramentas indispensáveis.

Desses, um editor muito comum entre programadores e simples de utilizar é o Visual Studio Code. Segue um tutorial de como baixar e instalar o Visual Studio Code no Windows.

Compiladores

Apesar de utilizarmos uma linguagem de programação, o computador ainda não consegue executar instruções. Um computador entende apenas instruções em linguagem de máquina, codificadas apenas com sequências de caracteres 0 e 1. Este é o único formato em que um computador é capaz de executar uma instrução.

A compilação é o processo de transformar instruções em uma linguagem de programação em um arquivo executável com instruções em linguagem de máquina.

Um compilador é um programa capaz de compilar um programa. O compilador de C++ que usaremos é o G++. Segue um tutorial de como baixar e instalar o G++ no Windows.

Hello World

Começaremos analisando um programa simples que apenas exibe a frase "Hello World!" na tela:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;
}
````

Ele estará no arquivo `hello-world.cpp`. Arquivos em C++ têm a extensão `.cpp`.

### Função `main`

Primeiramente, analisemos:

```cpp
int main() {

}

Esta seção do programa é a função main. Todo programa em C++ tem uma main; ela é o ponto de partida de sua execução. Em outras palavras: ao executar um programa, os comandos entre as chaves da main passam a ser executados sequencialmente, de cima para baixo.

Comando cout

Agora, vejamos o comando

cout << "Hello World!" << endl;

O comando cout, acrônimo para "character output" (saída de caracteres), exibe caracteres na tela. Os caracteres a serem exibidos são passados para o comando através do operador <<. Pode-se pensar que a informação segue o fluxo das setas.

O texto "Hello World!" é passado para o comando e, logo após, é passado o endl. O endl pula uma linha no texto sendo exibido. Caso mais caracteres fossem exibidos após ele, apareceriam na linha abaixo. Para "Hello" e "World" estarem em linhas diferentes, por exemplo, uma opção é:

cout << "Hello" << endl << "World!" << endl;

Que pode ser separado em dois comandos com o mesmo efeito:

cout << "Hello" << endl;
cout << "World!" << endl;

Em C++, a grande maioria dos comandos termina em ;, assim como acima. Esquecer um ; ao fim de um comando é um erro comum.

Diretivas

Os comandos

#include <iostream>

using namespace std;

são diretivas. Uma diretiva é um comando que é executado em tempo de compilação, alterando o comportamento da compilação.

Diretiva #include

A diretiva #include faz com que o compilador inclua, no lugar do comando, um código em outro lugar do computador, especificado logo após a diretiva. Este código pode ser um código seu ou uma biblioteca: uma coleção de código contendo funcionalidades que podem ser utilizadas no programa atual.

No programa Hello World incluímos a biblioteca <iostream>, que contém o comando cout. Essa biblioteca faz parte da biblioteca padrão do C++.

Pode-se até incluir a biblioteca padrão inteira com o comando

#include <bits/stdc++.h>

Porém, por tornar os arquivos muito grandes ao incluir código demais, isso não é uma boa prática de programação.

Diretiva using namespace

A diretiva using namespace nos permite não especificar o espaço de nomes dos comandos abaixo da diretiva.

Um espaço de nomes é análogo ao sobrenome do comando, criado para não haver ambiguidade entre comandos de duas bibliotecas diferentes com mesmo nome. std é o espaço de nomes da biblioteca padrão do C++. Caso a diretiva não fosse utilizada, o espaço de nomes do cout deveria ser especificado com :::

#include <iostream>

int main() {
    std::cout << "Hello World!" << std::endl;
}

O compilador não reconhece um comando da std sem seu espaço de nomes ser identificado, seja pela diretiva using namespace ou pelo prefixo std::. A compilação falhará caso um comando não seja reconhecido.

Indentação

Indentação são espaços em branco antes de comandos. Geralmente, são usados para facilitar a visualização de que um comando está dentro de um par de chaves, como na main.

Em algumas linguagens, a indentação é obrigatória, fazendo parte das regras de sintaxe da linguagem. Não é o caso do C++, onde espaços em branco adicionais não alteram o comportamento do programa. Os programas abaixo são todos equivalentes:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;
}
#include <iostream>

using namespace std;

int main() { cout << "Hello World!" << endl; }
#include <iostream>

using namespace std; int main() { cout << "Hello World!" << endl; }

Note que a diretiva #include precisa de uma linha exclusiva—ela é uma exceção.

g++

O g++ é um dos compiladores de C++ mais utilizados. Seu uso básico no terminal será observado para o arquivo hello-world.cpp.

Um programa pode ser compilado através do seguinte comando:

g++ hello-world.cpp

Um executável de nome a.exe (Windows) ou a.out (Linux e macOS) em linguagem de máquina será criado na mesma pasta. Ele pode ser executado com os comandos:

Windows:

a.exe

Linux e macOS:

./a.out

Também é possível especificar um nome personalizado para o executável, basta utilizar a opção -o do compilador:

g++ hello-world.cpp -o nome-personalizado.exe

Um executável com o nome nome-personalizado.exe será criado.

Erros de compilação

Caso haja algum erro na sintaxe do código, isto é, se o código escrito pelo programador não está de acordo com as regras da linguagem, a compilação falhará e será exibido um erro de compilação. Segue um exemplo:

#include <iostream>

using namespace std;  

int main() {
    cout << "Hello World!" << endl
}

Saída de erro:

mhjmbs@mhjmbs-ubuntu:~/Codes/examples$ g++ hello-world.cpp 
hello-world.cpp: In function ‘int main()’:
hello-world.cpp:6:35: error: expected ‘;’ before ‘}’ token
    6 |     cout << "Hello World!" << endl
      |                                   ^
      |                                   ;
    7 | }
      | ~

O erro demonstra que na linha 6, na posição 35, da esquerda para a direita, está faltando um ;.

Comentários

Comentários são ignorados pelo compilador e podem servir para diferentes propósitos dentro de um código. Dentre eles, estão:

  • Auxiliar na compreensão do código por um leitor terceiro.
  • Rapidamente remover parte do código para fins de debugging.
// Isso é um comentário de uma linha

/*
Isso é
um comentário
de múltiplas linhas
*/

```