CODE::BLOCKS
18 de maro de 2010 Reviso do Doc: 2.2
Prof. Marcelo Facio Palin
[email protected]Criando um Projeto C++
Descrio O que vamos aprender? Cdigo:: Blocks um IDE C livre construda para atender as mais exigentes necessidades dos seus utilizadores. Foi concebido para ser muito extensvel e totalmente configurvel. Finalmente, uma IDE com todas as funcionalidades que voc precisa que consistente na aparncia e operaes em todas as plataformas. Construdo como um framework de plugins, o Code::Blocks pode ser estendido com plug-ins. Qualquer tipo de funcionalidade pode ser acrescentado em instalando/codificando um plugin. Por exemplo, a funcionalidade de compilao e depurao j fornecido pelos plugins! Site Oficial http://www.codeblocks.org/
<< www.insciti.com.br/ead/moodle >>
Onde baixar o Code::Blocks; Vamos aprender a criar um projeto Hello World que roda no Console (Tela DOS); Vamos aprender a executar o programa; Vamos aprender a compilar um projeto MPI. Para isso aprenderemos a incluir arquivos .h e linkar com as bibliotecas lib
http://sourceforge.net/projects/codebloc Clique no link dos binaries: ks/files/Binaries/8.02/codeblocks-8.02-
1
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
Fig 02: Tela para download do cdigo binrio com o MinGW.
Faa o Download pelo Sourceforge.net
O que o Sourceforge.net? SourceForge.net o maior website do mundo voltado ao desenvolvimento de software de cdigo aberto, hospedando mais de 100.000 projetos e mais de 1.000.000 de usurios registrados com um recurso centralizado de gerenciamento de projetos, comunicaes e cdigo. SourceForge.net tem o maior repositrio de cdigo aberto e aplicaes disponvel na internet, e hospeda mais produtos de desenvolvimento de cdigo aberto que qualquer outro site ou rede no mundo. SourceForge.net prov uma grande variedade de servios para projetos hospedados e para a comunidade de Cdigo Aberto.
<< www.insciti.com.br/ead/moodle >>
Download
Ao clicar sobre a palavra Sourceforge na Fig 02, o download se iniciar automaticamente. O arquivo tem o tamanho de 19.3Mb.
2
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free O que o MinGW?
O mingw um conjunto de ferramentas GNU, que foram especificamente portadas para o Ambiente Win32. Entre elas, incluem-se, GCC, BINUTILS e outros. O objetivo principal do mingw poder disponibilizar aos usurios das ferramentas GNU, binrios executveis (exe) e bibliotecas dinmicas(dll) usando as API's nativas do Windows, atributo que nenhuma outra ferramenta faz. A sigla MinGw vem de Minimalist GNU for Windows(Um projeto GNU), ou seja, um conjunto mnimo de ferramentas GNU para desenvolvimento sobre o ambiente Windows. A MinGw um conjunto de ferramentas GNU que foram portadas para o ambiente windows, entretanto, de uma maneira geral, foi portado para o Windows apenas o que necessrio para desenvolvimento mesmo, ou seja, no foi portado um servidor X. Uma desvantagem perante a cygwin que ele no possui o bash portado para o windows. Para resolver isto, eles decidiram criar o msys, que uma verso semelhante ao bash do cygwin, entretanto bem inferior.
Fig 01: Tela Principal da IDE Code::Blocks
Criando o Primeiro Projeto com Code::Blocks
Tela Principal do Code::Blocks
<< www.insciti.com.br/ead/moodle >>
3
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
Create a new Project
Console Application
Escolha a opo Console Application e clique OK.
<< www.insciti.com.br/ead/moodle >>
A prxima tela somente de BoasVindas do Wizard (auxiliar para criar um projeto). Se voc marcar a opo essa tela no aparecer mais nas prximas vezes. Para quem est iniciando deixe sem marcar a opo.
4
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
Escolha a Linguagem C++
Digite o Nome do Projeto
Na tela ao lado digite o Nome do Projeto: HelloWorld Escolha em qual pasta deseja salv-lo. No meu exemplo estou salvando o projeto dentro do diretrio de projetos do .Net 2008, mas poderia ser qualquer pasta.
<< www.insciti.com.br/ead/moodle >>
O Code::Blocks criar um projeto chamado HelloWorld.cbp (CBP code blocks Project). Aps essa tela voc dever indicar o compilador C++ para o projeto. Se voc instalou corretamente o Code::Blocks com o MinGW o compilador j estar definido como o GCC.
5
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
Compilador do Cdigo C++ (GNU) o GCC
Caso o Code::Blocks tenha sido instalado corretamente o compilador GCC j estar definido. Observe que o cdigo compilado para depurao de cdigo sempre ficar dentro da pasta \bin\Debug e o cdigo final (Release) dentro da pasta Release. Qual a diferena entre o cdigo de Debug e o de Release?
Projeto foi Criado
Na Aba Management do Code::Blocks temos a indicao de que o Projeto HelloWorld tem a pasta Sources (fonte) onde tem somente o arquivo main.cpp.
<< www.insciti.com.br/ead/moodle >>
Editando o Cdigo main.cpp
Na Aba Management d um duplo clique sobre o nome do arquivo main.cpp que o cdigo automaticamente se abrir para a edio.
6
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
COMPILAR - EXECUTAR
Na figura acima temos os botes COMPILAR, EXECUTAR e o boto que faz os dois ao mesmo tempo. Fica a seu critrio escolher entre eles e a opo no Menu Build -> Build (F9). A opo compilar e executar est no Menu Build -> Build na run (Ctrl + F9).
Tela de Sada
<< www.insciti.com.br/ead/moodle >>
O code::Blocks no necessita que coloquemos a funo getchar() para parar o cdigo na tela, ele j faz isso automaticamente:
7
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
Programao Paralela com MPI
Hello World em Paralelo
// Projeto em C - Hello World Paralelo com MPI #include <stdio.h> #include <mpi.h> int main(int argc, char *argv[]) { int rank,size; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf("Ola, mundo. Eu sou processador %d de %d processadores.\n", rank,size); MPI_Finalize();
<< www.insciti.com.br/ead/moodle >>
Depois de copiar o cdigo em MPI para o Editor, clique inverso sobre o nome do projeto e escolha Properties...
8
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free Programao Paralela Na figura abaixo clique no boto Projects Build options...
Definindo o diretrio da mpi.lib.
Primeiro clique na aba Linker Settings e depois no boto Add.. Na caixa menor chamada Add Library clique no boto (...) e v at aonde o seu arquivo mpi.lib est, indique -o e clique ok. Se surgir a pergunta: Keep this as a relative path? Clique em No. Ou seja, ele manter o caminho exato at o arquivo mpi.lib.
<< www.insciti.com.br/ead/moodle >>
9
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free Detalhes de como deve ficar o PATH para a mpil.ib Depois de inserido o caminho para a mpi.lib se selecionar e clicar em Edit Voc ver que o caminho para a lib est completo como na figura abaixo.
Feito isso, clique OK. Pronto a biblioteca mpi.lib foi indicada para linkar.
Definindo o diretrio dos .h (INCLUDES)
Na aba, Search Directories, da figura abaixo, voc deve adicionar o diretrio onde esto os .h do MPI. Para adicionar o diretrio voc deve clicar no boto ADD indicando o diretrio desejado. Ou seja, o diretrio: C:\Arquivos de programas\MPICH2\include ou C:\MPICH2\include dependendo de como voc instalou o MPICH.
<< www.insciti.com.br/ead/moodle >>
10
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free Configurando o diretrio de sada do .EXE
Na figura abaixo temos um campo chamado Output filename. Nele voc deve indicar o diretrio aonde o .exe ser gravado. Como a pasta MPICH2\examples j est compartilhada e preparada para rodarmos o programa paralelo, troque de \bin\Debug\HelloWorld.exe para C:\Arquivos de programas\MPICH2\examples\HelloWorld_parallel.exe.
<< www.insciti.com.br/ead/moodle >>
Ateno: tudo o que voc configurou valer somente para a compilao em Debug
11
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free Voc poder fazer o mesmo para o Release Experimente clicar em Release ...
Voc ver que as configuraes sumiram. Portanto, igual o .Net 2008, voc ter que fazer as mesmas configuraes para o Release, caso queira que o programa rode mais rpido e fique mais enxuto. Lembre-se, release = lanamento, quando o programador ir entregar o .exe final sem erros.
Clique em COMPILAR e verifique se no h ERROS!
<< www.insciti.com.br/ead/moodle >>
12
<< email: [email protected] Prof. Marcelo Facio Palin >>
Code::Blocks IDE C++ - Free
COMO EXECUTAR UM PROGRAMA MPI? A tela mostra o exemplo da execuo do programa que calcula o produto escalar entre dois vetores. Lembrando que a dimenso do vetor deve ser maior que o nmero de ns do cluster, e mais, a diviso entre a dimenso pelo nmero de mquinas deve ser exato. Essa primeira verso do programa no trata desses erros. Abra o prompt no diretrio MPICH2/examples onde est o programa calc_prodescalar.exe. Digite mpiexec n 3 calc_prodescalar , onde n 3 indica que rodar em 3 mquinas o programa chamado calc_prodescalar.exe.
No Windows no necessrio digitar CPI.exe, basta somente o nome CPI. No Linux tudo CASE SENSITIVE, ou seja, devemos levar em conta at o Maiscula/Minscula.
<< www.insciti.com.br/ead/moodle >>
Erros comuns
Caso o Windows pea a senha, provavelmente ocorreu um problema no registro da senha do usurio Windows com o wmpiregister.exe. Faa o registro da senha novamente. Lembrando que o Login e a senha so os mesmos do usurio Windows. E que a senha no pode ser NULA! ERRO! EXECUTAR UM PROGRAMA MPI DIRETAMENTE, SEM CHAMAR O MPIEXEC CAUSAR ERRO DE EXECUO! USE O PROMPT DO DOS E CHAME O MPIEXEC
13
<< email: [email protected] Prof. Marcelo Facio Palin >>