# Curso de C++/Programa HelloWorld
## Considerações iniciais

Para CRIAR um programa em C++, você precisa de um compilador e de um ambiente de desenvolvimento da linguagem. Se você é novo e não possui um, nós indicamos três opções (você deverá fazer o download e instalar no seu computador):
* Dev-cpp: você pode baixá-lo se o seu sistema operacional for o Windows. Excelente programa, é leve, e é ideal para iniciantes na linguagem C++. Aprender a utilizar esse programa é intuitivo e fácil.
* Code::Blocks: para usuários de Windows e outros sistemas operacionais (Linux, MacOS e Solaris). É menos intuitivo que o primeiro, mas é uma ótima opção para ambientes Linux.
* Microsoft Visual C++ Express Edition: Se deseja criar interfaces gráficas para seus aplicativos, esta é uma excelente opção. A Microsoft o desenvolveu para estudantes e programadores de fim-de-semana. O desenvolvimento de interfaces gráficas (para Windows e outros sistemas) é tópico apenas para o final do curso. Utilizaremos o Console padrão para desenvolver os primeiros programas.

## O código do programa

Assim que você fizer o download e instalar o seu ambiente de desenvolvimento, você deve criar um novo arquivo .cpp e digitar o código acima. Salve o arquivo e vá até a opção de menu do seu ambiente de desenvolvimento que tem a opção Compilar e executar (Run and Build, em inglês). No Microsoft Visual C++, você pode fazer isso usando a tecla de atalho F5. No Dev-cpp e no Code::Blocks, a tecla correspondente é F9.
A janela de console deverá conter uma mensagem assim após a execução:

## Estrutura de um programa em C++

Um programa em C++ tem uma estrutura básica. Acima de todo o código, existem diretivas de pré-processador. Abaixo das diretivas, o código propriamente dito, que pode ou não ter a função main.

### Diretivas de pré-processador

A palavra include, precedida de uma cerquilha (#), é uma diretiva de pré-processador. Ela é utilizada para incluir classes e/ou funções de uma biblioteca (neste caso, iostream) dentro do seu programa. Quando declaramos isso no programa, estamos importando para ele algumas funções-padrão desenvolvidas para você programar. A biblioteca iostream contém funções para entrada e saída (I/O ou E/S) de fluxo (stream) no console. No momento, a intenção é apenas definir a estrutura de um programa C++. As diretivas de pré-processador existentes e as classes e funções que estão dentro das bibliotecas do C++ estão em tópicos que veremos mais adiante.
Note também que declaramos using namespace std; dentro do nosso código. Fizemos isto porque as bibliotecas podem (ou não) estar divididas em namespaces. Estamos dizendo que usaremos (using) o namespace std (de standard, padrão em português) da biblioteca iostream. Esse namespace contém a classe cout, que utilizamos para imprimir Hello World! na janela de console.

### Código do programa

Depois de definir as diretivas, você começa a escrever o código. Este código pode ou não ter a função main.
A função main é a primeira função a ser executada num programa. Ainda que o programa tenha apenas uma função, se ela não se chamar main, o programa não compilará - uma mensagem de erro indicando falha relatará que falta o ponto de início.
Um arquivo pode não conter uma função main? A resposta é sim. Um programa pode constituir-se de vários arquivos-fonte. Neste caso, um deles (e apenas um) deve ter uma função main - este será o primeiro arquivo a ser compilado. Os demais arquivos do programa devem ser inclusos neste arquivo principal através de diretivas #include. Mas não se preocupe com isso agora: veremos como criar um programa com vários arquivos de código-fonte mais adiante.
Importante: nunca se esqueça do ponto-e-vírgula ao final de uma linha de código. Se você esquecer, ocorrerá erro de compilação.

### Linhas de comentário

Não havíamos comentado o programa, mas se você quiser, pode incluir comentários no código para lembrar-se de alguma coisa que fez ou para tornar o código mais legível para outros programadores. Seguem as duas formas para fazer comentários em um programa:

## Análise do código
### Funções em C++

Abaixo das diretivas, iniciamos o seguinte código:
Fizemos isso de acordo com a sintaxe da linguagem. A declaração de uma função em C++ segue a seguinte sintaxe:
No nosso código, o tipo de retorno da função é int - a função retornará um número inteiro. O nome da função é main - a função principal. E, no nosso programa, decidimos que não precisamos de parâmetros. Tipo de retorno, nomes possíveis para funções e parâmetros de funções veremos também nos tópicos subsequentes. No momento, estamos definindo a estrutura do programa, apenas.
Toda função deve ter, antes da chave final) o retorno, que deve ser declarado com a palavra return. No caso especial da função main com tipo de retorno int, isso é dispensável. Mas se você declarar uma outra função, qualquer que seja, sem o return, o programa não compilará, indicando que falta o return - "function (nome da função) must return a value" - a não ser que o tipo de retorno seja void.

### Cout

Depois de declarar a função, incluimos a palavra cout seguida do operador <<, chamado de operador de extração de fluxo. Cout serve para gerar uma saída de fluxo na janela do console, e está dentro do namespace std da biblioteca iostream. O fluxo, nesse caso, é a string "Hello World!". Após, colocamos outro operador <<, indicando que o fluxo deve continuar, seguido de um endl, para indicar que é o fim da linha de texto (endl vem de end line).

### System("pause")

A função system funciona como se tivéssemos digitado o que está entre aspas duplas na janela de console. Nesse caso, pause. System é uma função da linguagem C. Isso vai gerar uma mensagem: "pressione uma tecla para continuar..." ou "press any key to continue..." na tela do console.Para isso é necessário utilizar o " #include <stdlib.h> " Incluímos esta função para que o programa não encerre imediatamente após se executado (se não tivéssemos a incluído, o programa apareceria na tela e em segundos encerraria, logo você não conseguiria ler a tempo o "Hello World!" gerado na janela do console).

## Revisão do tópico

Este tópico foi bastante simples. O que você precisa saber para seguir adiante no curso é: 1. a estrutura básica de um programa em C++ e 2. a sintaxe da declaração da função main.
A partir daqui, todos nossos programas seguirão essa estrutura. Na maioria dos programas subsquentes incluíremos a biblioteca iostream, usaremos o namespace std e definiremos uma função main. Usaremos o cout também para gerar as saídas na tela.
* Clique aqui para avançar para o próximo tópico: Variáveis e constantes