Aula 01 - Primeiro Programa
Conceitos-Chave:
- main(), como função principal
- cout, como comando de escrita na consola
- endl, como comando de mudança de linha
- cin.get(), como comando de espera pelo ENTER
- Bloco, o que está entre chavetas
- Instrução, que necessita sempre de um ';' no final
- Comentário, como ferramenta para ajudar a documentar o código
C++ - breve introdução
C++ é uma linguagem de programação, criada em 1983 por Bjarne Stroustrup.
É, até agora, a linguagem mais usada nos videojogos: C++ foi utilizado em "bombas"
como Far Cry, Half-Life 2, Unreal Tournament 2004, e muitos outros. Acho que poderia arriscar que
99% dos melhores jogos dos últimos 10 anos terão usado ou C (C++ é uma
evolução da linguagem C) ou C++.
Esta linguagem que vão aprender fornecerá as bases para os jogos que poderão
fazer, sejam eles uma aventura em modo de texto, ou um jogo em 3D que vai revolucionar o Mundo.
No entanto não direi que seja fácil de aprender. A impaciência poderá
levar muitos a desistir, pois no príncipio verão que os programas que farão
não serão muito atraentes. Mas acreditem, vale a pena!
4 razões para aprender C++
- é ultra-rápida - é em parte por culpa dos jogos que os computadores (e principalmente as placas gráficas) têm evoluído de uma forma estonteante. Os jogos são os programas que exigem mais do computador e é por isso que a escolha dos profissionais recai em C++.
- permite vários estilos de programação - enquanto linguagens mais modernas, como Java e C#, só permitem programar utilizando o paradigma de Programação Orientada a Objectos, o C++ permite construir programas usando 4 estilos de programação diferentes. Aliás, os primeiros programas irão ser feitos utilizando o paradigma procedimental, mais à frente será utilizado o paradigma de Programação Orientada a Objectos.
- está bastante difundida - há muita informação sobre a linguagem, difundida em livros e na Internet. Além disso, há bastantes bibliotecas conhecidas que funcionam (e encontram-se bem documentadas) com C++, como o OpenGL, DirectX, SDL, Lua, Havoc.
- é o standard na indústria - se quiserem entrar na indústria de programação de jogos têm que saber esta linguagem. Além disso, depois de aprenderem bem esta linguagem, são capazes de utilizar em pouco tempo outras linguagens similares, como C# e Java.
Exemplo 1.1 - O primeiro programa
#include <iostream>
using namespace std;
int main()
{
cout << "Este e o primeiro programa de um futuro programador de jogos" << endl;
cin.get(); // Pára o programa até o utilizador premir uma tecla
return 0;
}
O meu primeiro programa foi assim, só que em vez de estar escrito "Este é o primeiro programa de um futuro programador de jogos" era o mítico "Hello World"
Vou explicar linha por linha o que acontece.
#include <iostream>
O #include faz com que o conteúdo do ficheiro que está a sua frente, entre <> (neste caso o ficheiro iostream) seja inserido no programa. Sem ele não
poderíamos utilizar o comando cout, nem o endl. Estes comandos não existem em C++ puro, mas graças à biblioteca iostream, eles passam a existir. Esta biblioteca disponibiliza
ferramentas para o programador tratar do input e do output, tornando a vida do programador muito mais fácil.
Não se preocupem se ainda não perceberam, vamos aprender em lições mais avançadas.
using namespace std;
Esta instrução também é necessária para se poder utilizar os comandos cout e endl. Resumidamente, todos os comandos que fazem parte da biblioteca std (standard) do C++ estão dentro de uma namespace.
Deste modo é necessário mostrar ao compilador que pretendemos usar (using) a namespace std para termos acesso aos comandos cout e endl.
Esta instrução também vai ser explicada em lições futuras.
int main()
Qualquer programa de C++ tem de ter uma função main, que é a primeira função a ser chamada pelo programa. Uma função em C++ declara-se da seguinte forma:
tipo_de_retorno nome_da_funcao (argumentos)
{ instruções }
O nome_da_funcao é o identificador (nome com que chamamos a função) e, como esta é a função principal, é main.
Os argumentos são facultativos (neste exemplo não são usados, logo os '()' apresentam-se vazios) e serão explicados mais à frente
Não se preocupem se não perceberam os termos. A matéria de funções será explicada na lição 6.
cout
O cout representa o console output, que neste caso é a janela que é aberta pelo programa. Como se trata do output, nós queremos "mandar" para lá texto, e fizemos isso utilizando o operador de output (<<). Pensem nestes símbolos como se fossem um sinal a indicar a direcção: nós queremos mandar a expressão "Este e o primeiro programa de um futuro programador de jogos" e o comando endl para o console output. Tem bastante lógica :P .
"Este e o primeiro programa de um futuro programador de jogos"
Isto é uma string em C++. As strings são um conjunto de caracteres e são definidos entre aspas "".
endl
O endl (end line) faz com que se mude de linha (é o mesmo que usar o ENTER num editor de texto)
cin.get()
O cin.get é uma função que fica à espera que o utilizador carregue numa tecla, impedindo que o programa abrisse e desligasse logo.
return 0;
O return faz com que a função termine e devolve (ou "retorna") um valor à função. Neste caso (na função main) serve para dizer à função main para parar e devolve-lhe o valor 0, significando que tudo ocorreu como previsto. Mais sobre isto na lição 6.
Conceito de bloco
Também convém falar no conceito de bloco. Um bloco é o que está dentro de chavetas em C++. Neste caso serve para dizer que o código que está dentro das chavetas '{' '}' pertence à função main.
Conceito de instrução
A maior parte dos erros cometidos pelos aspirantes a programadores em C++ (e é um erro comum em programadores mais experientes :) é o esquecimento de colocar os ';' no final de cada instrução. A maior parte das vezes (no programador menos experiente) isto deve-se à dúvida de quando se deve colocar os ';'.
Cada ';' deve ser colocado no fim de cada instrução em C++. Uma instrução pode ser definida como um passo. Cada vez que definimos algo para o programa fazer, temos que colocar um ';' no final.
Há algumas excepções, como as instruções do preprocessador (as que são precedidas por um '#', como o #include) e a definição de funções (não colocam ';' no final das chavetas das funções). Felizmente o erro não é muito grave, uma vez que o compilador acusa-o logo e só com prática é que irão superá-lo.
..............Neste ponto só precisam de saber que a estrutura mais básica de um programa em C++ é esta. Podem alterar à vontade o que está depois de "int main() {" e antes de "cin.get();" (adicionando outros cout, com outros textos). Podem também retirar o cin.get() a ver o efeito (o programa abre e fecha logo).
Comentários
Os comentários servem para explicar a outras pessoas o que uma parte/instrução do código faz. Pode-se prescindir deles, mas é aconselhável a sua frequente utilização de modo a perceber-se melhor o código.
Há 2 tipos de comentários:
// Comentário de uma linha - Faz com que tudo o que esteja nessa linha seja um comentário.
/* Comentário que pode ser de várias linhas */ - Faz com que tudo a seguir ao /* seja um comentário, até encontrar o */.
Dica:
Normalmente no início de cada programa há uma breve descrição do programa. Por exemplo:
/**********************************
Programa de C++
Autor: João Portela aka Agnor
Data: 23 de Dezembro de 2004
Desc: Programa de introdução a C++
**********************************/
Exemplo 1.2 - Protótipo de um Menu de um jogo
Este é apenas um protótipo de um menu. Nenhum dos comandos funciona (obviamente), serve apenas como um exemplo final.
/**********************************
Exemplo 1.2 - Protótipo de um menu
Autor: João Portela aka Agnor
Data: 16 de Agosto de 2006
Desc: Protótipo de um menu de um jogo,
só de leitura.
http://agnor.gamedev-pt.net/
**********************************/
#include <iostream>
using namespace std;
int main()
{
cout << "Menu de Jogo" << endl;
cout << endl; //cria uma linha vazia
cout << "1 - Novo Jogo" << endl;
cout << "2 - Continuar Jogo" << endl;
cout << "3 - Opcoes" << endl;
cout << "4 - Ajuda" << endl;
cout << "5 - Creditos" << endl;
cin.get(); // Pára o programa até o utilizador premir uma tecla
return 0;
}
Próxima aula -> C++ 02 - Variáveis
Fazer o download do código fonte dos exemplos da aula
Fazer o download da aula em PDF (versão experimental)
Ir para o topo da página