Um ambiente de desenvolvimento de software como o Dev-C++ um conjunto de ferramentas voltadas ao projeto, implementao e depurao de programas, normalmente integradas umas s outras por meio de uma interface grfica! Compilador Conjunto de arquivos fonte C/C++ Gerenciador de projetos Montador Conjunto de arquivos em cdigo de montagem Conjunto de arquivos objeto Ligador Cdigo executvel Editor epurador Figura 1 Ferramentas de um ambiente de desenvolvimento de software "or #ferramentas# entenda-se programas $ue desempen%am cada um uma determinada funo no processo de desenvolvimento! &o caso do ambiente Dev-C++, bem como na maioria dos ambientes de desenvolvimento acad'micos e comerciais, podemos identificar as seguintes ferramentas( Gerenciador de projetos: o programa $ue permite ao usurio gerenciar um projeto de software, ou seja, o conjunto de ar$uivos contendo o c)digo-fonte de um programa! *ste recurso mais utili+ado em projetos de software grandes, nos $uais o programa e,ecuta diversas funcionalidades e se torna interessante, por $uest-es de facilidade de manuteno do c)digo, separ-las em ar$uivos distintos! Editor( o programa atravs do $ual o usurio pode escrever, apagar e modificar os ar$uivos contendo o programa em linguagem de alto n.vel /no caso do Dev-C++, c)digo escrito em C ou C++0, tambm denominados c)digo-fonte! 1 vantagem de se utili+ar o editor do ambiente de desenvolvimento justamente o fato de ele ser integrado s outras ferramentas, o $ue torna os processos de implementao e depurao mais din2micos! Compilador /compiler0( o programa $ue tem por objetivo #tradu+ir# o c)digo-fonte do usurio escrito em linguagem de alto n.vel /no caso do Dev-C++, c)digo escrito em C ou C++0 em um tipo de ar$uivo intermedirio denominado c)digo-objeto! 3 c)digo-objeto ainda no um programa pronto4 no caso de um projeto de software em $ue se ten%a vrios ar$uivos com c)digo-fonte, cada um destes ar$uivos gera um c)digo-objeto $ue dever posteriormente ser ligado aos demais c)digos-objeto pelo ligador! Montador /assembler0( o programa $ue tem por objetivo #tradu+ir# $ual$uer ar$uivo do usurio escrito em linguagem de montagem /assembl50 em c)digo-objeto! "or ser uma linguagem de bai,o n.vel, a linguagem de montagem no ser utili+ada nos nossos projetos! Ligador /linker0( tem por objetivo ligar os diversos ar$uivos-objeto do projeto em um 6nico ar$uivo, denominado c)digo e,ecutvel! 1 ligao feita para resolver refer'ncias $ue o c)digo de um ar$uivo-objeto ten%a feito a dados ou c)digo de outro ar$uivo-objeto /por e,emplo, uma c%amada de funo inter-m)dulos0! epurador /debugger0( permite $ue o usurio efetue e,ecuo do programa passo-a-passo, no c)digo-fonte, e verificao de dados en$uanto est e,ecutando! 2. Instalando o Dev-C++ 3 Dev-C++ um ambiente freeware, mantido pela 7loods%ed 8oftware /www!bloods%ed!net0! *,istem vrias vers-es do ambiente, sendo $ue uma boa opo de verso estvel a 9!:!;!<! "ara bai,ar esta verso, procurar nas ferramentas de busca pelo ar$uivo devcpp!"#$%e&e /apro,! => ?70% 3 processo de instalao automati+ado! 3. Iniciando um proeto 3s objetivos de um projeto do Dev-C++ so( manter organi+ados os ar$uivos a serem utili+ados na gerao do programa permitir a seleo@alterao de configura-es do processo de gerao do programa Um projeto criado clicando-se em File New Project% 1 seguir e,ibida uma janela com as op-es de projetos! "ara um projeto de aplicativo usando linguagem C em console modo te,to( Console Application Digitar um nome para o projeto! 8elecionar a opo AC "rojectB Clicar em AOkB! 8elecionar uma pasta para salvar o ar$uivo de projeto! 1p)s o projeto estar criado, o Dev-C++ automaticamente cria o ar$uivo main%c e o e,ibe na janela do editor! 1lm disso, disponibili+a as seguintes abas laterais para navegao( 'roject (lista de ar$uivos0( mostra os ar$uivos $ue comp-em o projeto! &o m.nimo um ar$uivo deve estar presente, no $ual ser implementada pelo menos a funo main% Classes /navegador de classes e fun-es0( mostra as fun-es $ue comp-em o projeto C! Cnicialmente a funo main e,ibida, dado $ue o c)digo-fonte criado automaticamente pelo Dev-C++ contm um es$ueleto para esta funo! ebug /depurao0( permite visuali+ar variveis adicionadas ao visuali+ador do depurador /watc)*! 3. !ditando c"di#o-$onte em C >! Dentro do/s0 ar$uivo/s0 do projeto deve-se digitar o c)digo-fonte do programa! Um e,emplo mostrado a seguir( #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int base, altura, area; print(!"n#igite base e altura separados por v$rgula% !); scan(!&d,&d!, 'base, 'altura); if ((base > () '' (altura > ()) { area ) base*altura*+; print(!, -rea do tri.ngulo / &d!, area); 0 s1stem(23,4567); return (; D %. Compilando o pro#rama 3 programa escrito em linguagem C denominado cdigo fonte! *ste c)digo, porm, no entendido pelo processador do micro, $ue s) e,ecuta c)digos em linguagem de m$uina /linguagem binria, valores de < e =0! "ara converter o c)digo fonte em C em c)digo e,ecutvel em linguagem de m$uina, e,iste um conjunto de programas $ue fa+em parte de um ambiente de desenvolvimento em C como o Dev-C+ +! 8o eles( - Compilador: tem por funo converter o c)digo fonte em um c+digo objeto, $ue ser depois utili+ado pelo linEer! - Linker( tem por funo AjuntarB todos os c)digos objetos dispon.veis de um mesmo projeto e montar o ar$uivo e,ecutvel! "ara acionar o compilador e depois o linEer em um s) comando( - ?enu Execute Compile%! ?ensagens de status so mostradas em uma janela pr)pria Durante o processo de compilao so encontrados os poss.veis erros do programa! *stes erros so classificados em duas categorias( ,visos (warnings* ( so erros $ue no impedem a compilao do programa, porm indicam algum poss.vel problema em sua l)gica! *,emplos de situa-es $ue geram AwarningsB( variveis declaradas $ue nunca so usadas4 troca de operador relacional AFFB por operador de atribuio AFB! Erros (errors*: so erros graves, $ue impedem a compilao do programa pelo compilador! *,emplos de situa-es $ue geram AerrorsB( falta de par'nteses e@ou c%aves4 utili+ao de variveis no declaradas! Caso %aja erros, estes so indicados na vista ACompilerB, abai,o da janela do editor, e podem ser acessados atravs de um duplo cli$ue sobre a mensagem! &. Depurando o pro#rama Depurar /debugging- ou simplesmente AdebugarB0 significa encontrar poss.veis erros em um programa e corrig.-los! *m se tratando de erros de sinta,e, estes so informados pelo compilador ap)s a tentativa de compilao, permitindo $ue o programador os encontre e corrija facilmente! G os erros de l)gica mais simples /por e,emplo, trocar o operador de igualdade pelo operador de atribuio0 so muitas ve+es informados na forma de AwarningsB, dependendo do compilador! 1lguns erros de l)gica, no entanto, no podem ser detectados pelo compilador e muitas ve+es so dificilmente detectveis at mesmo pelo programador ao varrer visualmente o c)digo-fonte! "or e,emplo, no seguinte programa( int i; or (i ) (; i < 8(; i99); { print(2"n: valor da variavel i eh &d7,i); 0 3 usurio deseja $ue a sa.da do programa seja( . valor da variavel i e) $ . valor da variavel i e) 1 . valor da variavel i e) / %%% . valor da variavel i e) " no entanto, a sa.da do programa ser simplesmente( . valor da variavel i e) 1$ Csto ocorre por$ue e,iste um ponto-e-v.rgula ap)s o cabeal%o do for, $ue causa a e,ecuo de uma instruo va+ia nas =< itera-es do lao4 ap)s a e,ecuo das itera-es o printf(* ser e,ecutado uma 6nica ve+, e,ibindo o valor =< para i! *sse um erro muito cometido por programadores ine,perientes e $ue pode ser de dif.cil deteco, caso o programador possua apenas a sa.da visual do programa como indicao do erro! "ara detectar este e outros tipos de erro de forma mais eficiente, pode-se utili+ar o recurso de e,ecuo do programa passo-a-passo! &este caso, uma ferramenta agregada ao ambiente de desenvolvimento c%amada depurador /ou debugger0 permite $ue o programador ApercorraB a se$u'ncia de instru-es do seu programa, e,ecutando uma por ve+ e analisando os valores das variveis a cada passo da e,ecuo! "ara configurar o projeto para ser depurvel no Dev-C++ - ?enu Project Project Options. - 1ba Compiler, item Linker. - Configurar AHenerate debugging informationB para Yes. "ara iniciar a depurao no Dev-C++( - Iigar ao menos um ponto de parada /breaEpoint0 utili+ando a opo Toggle breakpoint. - ?enu ebug ebug. Comandos 6teis para depurao( Next !tep( permite e,ecutar somente a pr),ima instruo !tep "nto: entra em c%amadas de fun-es Toggle breakpoint: liga@desliga ponto de parada da e,ecuo #un to Cursor: e,ecuta at a lin%a onde se encontra o cursor 7oto direito sobre uma varivel A$$ %atc&: adiciona uma varivel para visuali+ao na vista de AdebugB!