Departamento de Ciência da Computação - IME - USP

Aula Dirigida de Introdução ao Code::Blocks

Introdução

O que vem a ser um programa em C? Você talvez já tenha ouvido falar que um compilador é um programa ou ferramenta que transforma um programa fonte escrito em uma linguagem de programação de alto nível, como C, para uma linguagem que o computador é capaz de "entender", o chamado programa executável. Assim, um compilador é essencialmente um tradutor e este processo de tradução é chamado de compilação.

Para facilitar o desenvolvimento e compilação de um programa em C, o Code::Blocks oferece um ambiente que integra um editor de textos a um compilador para linguagem C. O compilador usado pelo Code::Blocks é o famoso (Uau!) gcc (Gnu C Compiler).

No Windows há basicamente dois tipos de programas de usuário:

Todos os programas em C que faremos serão aplicações para o console.

O Code::Blocks é ``Free Software'' (sob GNU General Public License). Isto significa, entre outras coisas, que ele pode ser distribuído e copiado à vontade.

Você pode instalar o Code::Blocks segundo as instruções que estão aqui.


Objetivo

O objetivo desta aula dirigida é ajudá-lo no seu primeiro contato com Code::Blocks. Esta aula abrange uma parte muito pequena dos recursos disponíveis nos computadores. Cabe a você consultar os manuais com informações mais detalhadas para ampliar seus conhecimentos. Ao final dessa aula, você deverá ser capaz de:

A aula consta de duas partes. A primeira lhe ensina como criar um arquivo contendo um programa, compilá-lo e executá-lo, usando um programa bem simples do tipo ``Hello World'' (como se diz na gíria). Na segunda parte você criará um programa um pouco mais complexo, para conhecer outros recursos do Code::Blocks.


Requisitos

Se você instalou o Code::Blocks em seu computador pessoal, você pode fazer essa aula prática em casa. Neste caso, somente os nomes das pastas poderão ser diferentes.

Para utilizar os computadores da sala Pró-Aluno você precisa de um cadastro que consiste em um nome de usuário (user name) e uma senha (password). A responsabilidade de fornecer esse nome de usuário e senha é de sua unidade (IAG, IF, IME, IO, POLI). Essa aula dirigida supõe que você possui uma conta e uma senha.

Caso você não esteja ainda cadastrado para usar os computadores, peça ao monitor responsável pela sala para abrir uma sessão para você.

Não é permitido que sejam deixados (ou, como se diz por ai, salvos) arquivos nos computadores da sala Pró-Aluno. Todos os arquivos que você usa durante uma sessão são apagados quando outro aluno abre uma outra sessão no mesmo computador. Desta forma, quando você for utilizar a sala Pró-Aluno, traga um chaveiro (pen drive) para salvar os seus programas.


Janela inicial do Code::Blocks

No Windows inicie o Code::Blocks clicando no ícone do mesmo que aparece na área de trabalho, ou em
Iniciar ———> Todos os Programas ———> CodeBlocks ———> CodeBlocks
Isto é, usando o mouse, posicione o cursor do Windows sobre o botão Iniciar, localizado no canto inferior esquerdo da janela, e aperte a tecla esquerda do mouse. Aparecerá, logo acima do botão, um menu de opções. Selecione a opção Programas. Novamente aparecerá um outro menu de opções. Selecione a opção CodeBlocks e, novamente, a opção CodeBlocks, a qual você deve clicar com o botão esquerdo do mouse.

Chamada do Code::Blocks .
chamada

Com isso, o ambiente de programação do Code::Blocks é iniciado. Isso fará com que apareça no monitor uma janela semelhante à mostrada a seguir.

Janela inicial do ambiente de programação do Code::Blocks.
Image janela_inicial


Hello World

Depois de iniciar o Code::Blocks, na janela inicial do Code::Blocks clique em
File ———> New ———> File....
conforme ilustrado abaixo.

Abertura de arquivo.
Open file

Na próxima janela, escolha C/C++ source e clique em Go.

Abertura de arquivo.
C source

Na próxima janela, faça um tique em "Skip this page next time" e clique em Next.

Wizard.
wizard

Na janela a seguir, certifique-se que linguagem selecionada é a C e depois Clique em Next.

Escolha C.
Escolha C

Na janela a seguir, digite um nome para o arquivo de programa a ser digitado. Para tanto, clique no quadrado com ... que aparece ao lado da caixa com título Filename with full path: e digite um nome de arquivo, por exemplo fantastico.c.

Digite nome de arquivo.
nome de arquivo

Clique agora em Salve e depois em Finish. Na janela que foi criada você vai digitar, compilar e executar seu primeiro programa em C.

Digite o programa mostrado abaixo. Dependendo da configuração do computador que você estiver utilizando, pode ser necessário pressionar a barra de espaço após digitar o caractere " a fim de que ele apareça na janela. Você vai precisar utilizar este caractere para digitar os seus programas.

Programa fantastico.c.
Image fantastico

Certifique-se de que o programa que você acabou de digitar é igual ao mostrado na figura.

Para compilar o seu programa você deve clicar em

Build ———> Compile current file
Compilar fantastico.c.
Compilar fantastico

Se tudo der certo, na janela de log abaixo do programa, haverá a indicação de que o programa foi compilado com sucesso: "0 errors, 0 warnings"

fantastico compilado.
Compilado fantastico

Bem, com o programa fantastico.c compilado sem erros, a pasta onde foi salvo o arquivo fantastico.c contém agora o programa executável fantastico.exe. Para executar o programa clique no botão

Build ———> Run
da janela principal do Code::Blocks.

Saída do programa fantastico.exe.
Image fantastico execucao

Deverá surgir uma nova janela, de DOS, mostrando a execução de seu programa, como pode ser visto na figura abaixo.

Saída do programa fantastico.exe.
Image fantastico execucao

Note que na janela do DOS aparece a mensagem

Press any key to continue . . .
Traduzindo, "Pressione qualquer tecla para continuar . . .".

Depois de conferir o resultado, pressione qualquer tecla para que a janela do DOS desapareça. Se a janela do DOS não desaparecer, para fechá-la clique no X, no canto superior direito da mesma.

Agora que você sabe criar um programa, compilá-lo, salvá-lo e executá-lo, vamos tentar novamente com um programa um pouco mais complexo.


Um Programa de Verdade

Nesse exemplo, vamos observar alguns outros recursos do Code::Blocks. Para isso, crie um novo arquivo por exemplo, chamado primprog.c, no diretório que você achar mais apropriado (vamos deixar isso ao seu encargo). Clique em
File ———> New ———> File...
e prossiga como no programa anterior, o fantastico.c, criando agora um arquivo de nome primprog.c.

Então, digite o seguinte programa, exatamente como mostrado a seguir.

#include <stdio.h>

int main()
{
  int n, par, impar, num;
  
  printf("Digite o tamanho da sequencia: "); /* mostra mensagem na tela  */
  scanf("%d", n);                           /* le informacao do teclado */  

  par   = 0;
  impar = 0;
  cont  = 0;
  while (cont < n) 
    {
      print("Digite o %do. numero: ",cont+1);
      scanf("%d", &num);
      if (num%2 = 0) par = par + 1;
      else impar = impar + 1;
      cont = cont + 1;
    }
  
  printf("A sequencia e' formada por %d numeros pares e %d impares.\n\n",
         par,impar)

  return 0;
}
Procure salvar o programa com frequência, assim você se protege contra possíveis acidentes. Se você digitou o programa como ele aparece acima, depois de salvá-lo e compilá-lo, a situação será, essencialmente, como a mostrada na figura abaixo.

Resultado da compilação do programa primprog.c.
Image primprog coompila

O compilador que é usado pelo Code::Blocks, ou seja, o gcc, é capaz de identificar muitos erros de sintaxe nos programas. Preste atenção nas mensagens que aparecem na base da janela do Code::Blocks. As linhas do seu programa onde foram encontrados erros estão na coluna do canto inferior esquerdo da janela do Code::Blocks. Nesse exemplo, o Code::Blocks está indicando que ocorreram erros (error) e avisos (warning). Vamos tratar desses erros e avisos aos poucos.

No aviso referente à linha 8, a mensagem diz

warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' (-Wformat)
Essa mensagem indica que há algo de errado na linha 8. Olhando essa linha com mais atenção vemos que no scanf está faltando "&" antes da variável n. Para corrigir isso, altere a linha 8 para:
    scanf("%d", &n);                           /* le informacao do teclado */  
Já a mensagem de erro referente à linha 12 diz
error `cont' undeclared (first use in this function).
Na figura, o editor do Code::Blocks mostra a linha onde o erro foi detectado pelo gcc. A mensagem de erro indica que na linha 12 o identificador cont foi usado sem ter sido declarado. Para corrigir isso, altere a linha 5 para:
    int n, par, impar, num, cont;

Agora, compile novamente o programa para ver se as alterações corrigiram os problemas. O resultado dessa segunda compilação pode ser visto a seguir.

Resultado da segunda compilação do programa primprog.c.
Image primprog coompila

Foram corrigidos um problema com um aviso e outro com um erro, mas o programa continua com problemas. O aviso referente a linha 15 diz

warning: implicit declaration of function  `print' (-Wimplicit-function-declaration)
Essa mensagem mostra que foi escrito "print" onde deveria estar escrito "printf". Para corrigir esse problema, altera a linha 15 para:

  printf("Digite o %do. numero: ", cont+1);
Já o erro referente a linha 17, onde o Code::Blocks mostra um retângulo vermelho no início da linha diz:
  error: lvalue required as left operand of assigment
Essa mensagem é um pouco complicada, mas nela aparece a palavra "assigment" (atribuição). Isto é devido ao fato de haver um "=", que é usado para atribuição, onde deveria haver um "==" que representa uma comparação. Altere a linha 17 para:
  if (num%2 == 0) par = par + 1;

Depois dessas duas correções compile o programa mais uma vez, seguindo novamente

Build ———> Compile current file
O resultado da terceira compilação é mostrado a seguir.

Resultado da terceira compilação do programa primprog.c.
Image primprog coompila

A terceira compilação mostra que ainda temos 1 erro e 1 aviso. O aviso da linha 26 é na verdade uma consequência do erro que o gcc encontrou na linha 25:

  error: expected ';' before 'return'
Esse erro é mais fácil de ser compreendido. Para corrigi-lo acrescente um simples ';' no final da linha 23
         par,impar);

Compilando o programa mais uma vez, obtemos o resultado mostrado a seguir.

Build ———> Compile current file
O novo resultado da compilação, que pode ser visto na figura abaixo, mostra que não foram encontrados erros ou avisos de sintaxe no programa.

Resultado da quarta compilação do programa primprog.c após mais correções.
Image primprog coompila

Para executar o programa clique no botão

Build ———> Run
Uma janela do DOS aparecerá, com a mensagem "Digite o tamanho da sequencia:". Digite algum número inteiro positivo para indicar o número de elementos da seqüência, seguido por Enter. Esse número determinará a quantidade de números que deverão ser digitados a seguir. Depois de você digitar cada número da seqüência seguido de Enter, o programa mostrará quantos números ímpares e quantos números pares você digitou.

Após seu programa ser executado, aparecerá a mensagem "Pressione qualquer tecla para continuar...". Um exemplo de resultado da execução do programa pode ser visto na figura abaixo. Depois de conferir o resultado digite qualquer tecla.

Resultado da execução do programa primprog.c.
Image execucao primprog


Salvando e reutilizando os seus programas

A aula está quase no fim. Clique
File ———> Quit
para encerrar o Code::Blocks .

Todos os seus arquivos serão apagados assim que o computador for desligado, devido às peculiaridades da rede da sala Pró-Aluno. Portanto, você precisa gravar os seus programas em um pen drive para reutilização futura. No caso, os arquivos fantastico.c e primprog.c poderiam ser gravados em um pen drive.

Se você não sabe como gravar os arquivos no pen drive, peça ajuda do monitor da sala.

Com seus programas salvos no pen drive, você pode querer reutilizá-los numa ocasião futura.

Após copiar o seu programa do pen drive para o computador, inicie o Code::Blocks e carregue o seu programa primprog.c clicando em

File ———> Open...
e indicando, na janela Open file, que a pasta a ser examinada é a temp e que o nome do arquivo a ser carregado é o primprog.c. Pronto, o seu programa primprog.c será carregado pelo Code::Blocks e estará pronto para ser reutilizado.


Antes de você ir embora...

O que está escrito a seguir só faz sentido se você estiver programando em uma das salas pró-aluno ou em algum laboratório.

Agora você já sabe criar um arquivo, editá-lo, salvá-lo e recuperá-lo. E ainda, se seu arquivo contém um programa em C, sabe como mandar compilá-lo e executá-lo.

Finalmente, não se esqueça agora de se desconectar da rede. Primeiro, saia do Code::Blocks clicando em

File ———> Quit
Agora, clique com o mouse em
Iniciar ———>  Desligar ....
Confirme que você quer realmente se desconectar, clicando em OK.


Projetos

É comum um programa ser divido em vários arquivos fontes (.c) e de cabeçalhos (headers .h). Nesse caso, esses arquivos juntos formam um projeto. A seguir descrevemos como cria um projeto no Code::Blocks.

Na janela inicial do Code::Blocks clique em

File ———> New ———> Project...
Como pode ser visto na imagem a seguir, através da página inicial do Code::Blocksé possível criar um novo projeto apenas clicando em Create a new project, Abrir um projeto já existente clicando em Open a existing project e clicar par abrir um project que foi criado recentemente que está na lista de Recent projects.

Criação de um projeto.
Image projeto

Em seguida, deverá ser selecionada a categoria do projeto. Na janela que se abrirá selecione Empty Project. Nesse caso não utilizaremos um arquivo main.c com algum trecho de código já preparado pelo wizard. Para prosseguir clique no botão Go.

Seleção da categoria do projeto.
Image projeto categoria

Na próxima janela que se abrirá clique no botão Next.

Wizard para aplicação de console.
Image projeto console

Em seguida, selecione a linguagem.

Escolha da linguagem.
Image projeto language

Agora, devemos selecionar o título do projeto, e a pasta/diretória em que ele estará. Na figura abaixo título do projeto é lightout e ele ficará no diretório /home/hofstadter/ep1, o botão "..." pode ajudar na seleção da pasta/diretório. Nesse diretório será criada pelo Code::Blocks a pasta/diretório lightout.

Escolha do título e diretório do projeto.
Image projeto titulo

A próxima janela apresenta o compilador e onde serão armazenados alguns arquivos. Clique no botão Finish.

Escolha do compilador.
Image projeto compilador

Nesse ponto temos que o projeto foi criado, mas ainda não contém nenhum arquivo. Agora arquivos devem ser criados e adicionados ao projeto.

Termino da criação do projeto.
Image projeto criado

Para adicionar um arquivo ao projeto clique

Project ———> Add files....

Adicionando um arquivo ao projeto.
Image projeto add

As imagens a seguir mostram a adição ao projeto dos arquivos main.c, main.h, animacao.c e animacao.h e que todos estão na pasta diretório /home/hofstader/ep1. Os arquivos podem ser selecionados um por vez ou podesse selecioná-los em bloco usando as teclas Shift + seta para cima ou para baixo. Depois clique no botão Open.

Adicionando um arquivo ao projeto.
Image projeto arquivos

Os arquivos que serão adicionados estão marcados.
Image projeto arquivos add

Na janela seguinte clique no botão OK

Seleção dos arquivos adicionas (continuação).
Image projeto selecao multipla de arquivos

Abrindo-se as abas Sources e Headers no canto direito da janela do Code::Blocks é possível ver que os arquivos que fazem parte do projeto.

Arquivos que fazem parte do projeto lightout.
Image projeto lista arquivos

Para compilar o projeto tecle Crtl+F9 ou clique em

Project ———> Build  
Para executar tecle Crtl+F10 ou clique em
Project ———> Run 
Os dois passos anteriores podem ser realizados simultaneamente teclando F9 ou clicando
Project ———> Build and run 

Compilando (build) um projeto.
Image projeto build

Caso seja necessário incluir alguma biblioteca para o linker clique em

Settings ———> Compiler 
Depois clique em linker e adicione os trechos referentes no campo Other linker options:.

Acrescentado bibliotecas para o Linker.
Image projeto linker

Acrescentado bibliotecas para o Linker.
Image projeto linker

Last modified: Tue Aug 26 15:20:22 BRT 2014