Projetos e Configurações de Ambiente As atuais ferramentas de desenvolvimento contêm um IDE dividido entre ferramentas visuais e janelas para escrita de código em texto. Neste capítulo são apresentadas explicações sobre projeto, ambiente e configurações respectivas, utilizadas no C++ Builder, tornando desenvolvimentos futuros mais ágeis. São abordadas, ainda, convenções para a gravação, como nomes de units e forms, e explicações quanto às maneiras possíveis para execução de um projeto. 4.1 Projetos O C++ Builder utiliza o conceito de projetos (project), onde são relacionados todos os arquivos que pertencem ao projeto em questão e também podem ser utilizados sem problemas em projetos diferentes. Um projeto C++ Builder, inicialmente, é dividido em três units, duas associadas a um form (criado automaticamente) e outra ao project, que relaciona e referencia todos os forms e units da aplicação. Em um projeto, normalmente, tem-se o project, os forms e as units; para todo form tem-se duas units (uma para a definição dos componentes utilizados nele e outra para a implementação do código em si), porém existem units sem forms (códigos de funções, que podem compor uma biblioteca de funções). 4.2 Configurando seu Ambiente de Trabalho em C++ Builder O menu Tools do IDE (figura 4.1) traz uma série de opções de configuração para o ambiente de trabalho. A opção Options possui várias opções de configuração, distribuídas em um Tree View à esquerda com suas respectivas opções a direita (figura 4.2).
32 C++ Builder: Implementação de Algoritmos e Técnicas para Ambientes Visuais Figura 4.1 - Opção Environment Options do menu Tools. 4.2.1 Autosave Options Especifica quais arquivos e opções são automaticamente gravadas (salvas) pelo ambiente (IDE) ou quando você executa sua aplicação. Se o Editor Files estiver habilitado (marcado), todos os arquivos de seu projeto que tenham sido modificados são automaticamente gravados no momento da execução da aplicação. Quando a opção Project desktop está habilitada, o layout que se encontra em seu projeto, no momento em que você sai do C++ Builder, é salvo. Dessa forma, ao voltar e abrir o mesmo projeto, ele estará com a mesma disposição de quando você o fechou. Figura 4.2 - Opção Environment Options, obtida através da opção Options do menu Tools. 4.2.2 Compiling and Running Habilita ou desabilita opções referentes ao processo de compilação e execução de seu projeto. No caso da execução, refere-se à da aplicação, estando dentro do ambiente do C++ Builder. Nesse grupo de opções, quando Show compiler progress está m arcada, uma janela com o processo de com pilação é
Projetos e Configurações de Ambiente 33 exibida (figura 4.3) e fornece diversas informações sobre a compilação dos projetos, pois, caso haja erros, estes serão apontados. Quando a opção M in im iz e on R im está habilitada e você opta por executar seu projeto de dentro do IDE, este é minimizado de forma que você veja apenas sua aplicação rodando. Marcando a opção H id e d esig n ers on ru n, o seu form (em tempo de desenho) se oculta, não permitindo, assim, alterações nele antes que encerre a execução de seu projeto. Para um melhor aproveitamento dos exercícios deste livro, procure habilitar todos os itens descritos anteriormente na opção E n v iro n m en t O p tio n s. Figura 4.3 - Apresentação do processo de compilação de um projeto. 4.3 Gerenciando um Projeto 4.3.1 Criando Projetos O C++ Builder traz algumas maneiras para se criar um projeto. Aqui são tratadas duas delas, através do menu e da barra de tarefas. Pelo menu, selecione F il e /N e w /V C L F o rm s A pplication - C++ B u ild er, como mostra a figura 4.4. Quando o IDE cria (inicializa) um novo projeto e todo projeto (de aplicação), quando criado, gera imediatamente um novo form (figura 4.5). Figura 4.4 - Opção New do menu File para criação de projetos.
34 C++ Builder: Implementação de Algoritmos e Técnicas para Ambientes Visuais Para criar um projeto através da barra de tarefas, você deve clicar no botão Nexo Items (figura 4.6), onde uma janela é aberta para que seja escolhido o tipo de projeto que está sendo criado, como mostrado na figura 4.7. Optando por VCL Forms Application, que é o nosso foco, um novo projeto é criado e apresenta-se um novo form, da mesma maneira como na criação através do menu. Figura 4.5 - Ambiente de um novo projeto. jü -Ç, H P - h -ü New items Si-1 Figura 4.6 - Barra de tarefas. Figura 4.7 - Janela obtida através do acesso ao botão New Items para criar um novo projeto.
Projetos e Configurações de Ambiente 35 Project Run Component Tools fj Add to Project... Shif t+f 11 ( Remove from Project... Add to Repository... 2 View Source Add New Project... o S Add Existing Project... IjJjfs Compile [none] Ctrl+F9 ^ Build [none] Shift+F9 $ Information for [none] W j Compile all projects j K Build all projects Dependencies...? Default Options C++Builder Figura 4.8 - Menu Projects. Figura 4.9 - Janela que propicia a configuração do ambiente de trabalho para o projeto. 4.3.2 Configurando Projetos O IDE perm ite configurações através do m enu Project/ Default Options/C++ Builder (figura 4.8), o qual abre uma janela com opções, com as configurações possíveis ao projeto (figura 4.9).
36 C++ Builder: Implementação de Algoritmos e Técnicas para Ambientes Visuais 4.3.3 Gravando Projetos Todos os projetos, formulários e units deverão ser gravados em disco. Dessa forma, não é correto que se grave os projetos em lugares sugeridos pelo IDE e, sim, em pastas próprias. Normalmente se cria uma pasta para cada projeto ser arm azenado. No exemplo (figura 4.10), a pasta criada está dentro de uma pasta qualquer e tem o nome de GravandoProjetos, mas você deve eleger a nomenclatura mais apropriada. Uma vez criado o local onde o projeto será armazenado, através do menu, selecione File/Save Project As (figura 4.11), assim você poderá gravar o projeto, atribuindo a ele um nome. Antes, procure pela pasta criada e selecione-a. No momento em que se opta por gravar o projeto, o IDE identifica primeiro as units que não foram gravadas nenhuma vez e as grava antes do projeto. Figura 4.10 - Pasta utilizada para armazenar o projeto exemplo, visualizada através do Windows Explorer. Figura 4.11 - Opção para salvar todo o projeto pela primeira vez através do menu File.
Projetos e Configurações de Ambiente 37 Nesse momento, inclui-se uma convenção1, que é a de dar aos três primeiros caracteres do nome da unit o prefixo unt. Primeiro, é solicitado o nome da unit referente ao form com o nome untgravandoprojetos (figura 4.12), confirmando a gravação da unit, e não existindo nenhuma mais pendente de primeira gravação, o IDE solicita o nome do projeto, que aqui será chamado de GravandoProjetos (figura 4.13). Agora, na pasta onde o projeto foi gravado, além dos arquivos referentes à unit (.cpp e.h), ao form (.dfm) e ao projeto {.bpr), outros arquivos com extensões cfg, dof, dsk e res foram gerados automaticamente, como pode ser visto na figura 4.14. Figura 4.12 - Janela que propicia gravar uma unit de um projeto. Figura 4.13 - Janela que propicia gravar o arquivo de projeto, que também é uma unit. 1 Não há uma regra, mas a convenção é uma norma de ação que traz muitos benefícios de compreensão dos projetos ao desenvolvedor. Tem-se convenção não somente para nomes de arquivos, como nesse caso da unit (o qual adotaremos unt), mas também para nome de componentes e métodos, o qual normalmente se adota inserir três caracteres como prefixo, onde esses caracteres identificarão o tipo de componente ao qual fazem referência.
38 C++ Builder: Implementação de Algoritmos e Técnicas para Ambientes Visuais 4.3.4 Executando Projetos Pode-se executar o projeto através do menu Run/Run, como m ostrado na figura 4.15. Nesse momento, o IDE primeiro compila todo o projeto (no caso de um projeto com várias units, apenas as modificadas são compiladas). Caso não existam erros sintáticos, o projeto é executado e é gerado um arquivo.exe e a janela que o representa é exibida. Note que o ambiente de programação mudou e aparece ao fundo, e o projeto em execução tem o seu fundo não mais com os pontos pretos e, sim, todo cinza. Isto será útil nas ocasiões em que ocorrerem erros em tempo de execução ou em que seja necessário depurar o projeto. Por enquanto, feche o aplicativo. Outras duas formas de se executar um projeto são pela tecla F9 (figura 4.15) ou pela barra de tarefas, no botão identificado na figura 4.16. Todas as maneiras de execução de um projeto apresentadas se dão dentro do IDE, ou seja, o C++ Builder está sempre ativo no momento em que se executa a aplicação. Isso é ideal quando se deseja "depurar"2, porém esse processo faz, em algumas situações, com que, caso sua aplicação "trave"3, o IDE também trave, causando uma lentidão maior no processo de desenvolvimento. Com o intuito de evitar (ou minimizar) esse problema, uma quarta maneira de execução de seu projeto pode acontecer através da aplicação gerada pelo IDE, que pode ser localizada na pasta onde está seu projeto, e o arquivo terá o nome de seu projeto com o sufixo.exe, (identificada como Aplicativo), como pode ser visto na figura 4.17. Infelizmente, os travamentos podem ocorrer e o ambiente lhe dá subsídios para interromper a execução através do menu Run, opção Program Reset, ou pela combinação de teclas Ctrl + F2. Figura 4.14 - Visualização dos arquivos gerados após a gravação de um projeto. 2 Muitas vezes chamado de Debug, que significa localizar e eliminar os bugs (erros e falhas) de lógica ou sintaxe na programação. 3 O travamento de um programa pode se dar quando os recursos do Sistema Operacional estão esgotados (principalmente memória) ou quando existe uma lógica de programação errada, que venha a causar um loop sem fim - Deadlock. Em muitos casos pode haver perda de informações.
Projetos e Configurações de Ambiente 39 Run : StarTeam Window j> Run F9 Figura 4.15 - Opção Run disponível no menu Run para execução do projeto. * Run (F9) Figura 4.16 - Botão Run disponível na barra de tarefas para execução do projeto. Nome Gra vandopro jetos Tipo Aplicativo Figura 4.17 - Arquivo da aplicação gerado, visualizado no Windows Explorer. 4.4 Conclusão O ambiente IDE proporciona ao desenvolvedor várias maneiras de executar a mesma tarefa, como você deve ter verificado. Isso faz com que o desenvolvimento de projetos seja mais rápido quanto maior for a familiaridade e compreensão do programador. A maioria, senão todos os IDEs, não importando o fabricante e/ou a linguagem, utilizam o conceito de projetos, dessa forma, o apresentado neste capítulo subsidia um fácil e rápido início ao desenvolvimento de seus projetos.