<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4850257962364430207</id><updated>2012-02-13T07:28:27.988-02:00</updated><category term='C++'/><category term='Videos'/><category term='Pilhas'/><category term='GCC'/><category term='Vetor'/><category term='MySQL'/><category term='Intermediário'/><category term='Listas Encadeadas'/><category term='Iniciante'/><category term='leitura recomendada'/><category term='Ponteiros'/><category term='Linux'/><category term='C'/><category term='Matriz'/><category term='Ubuntu'/><category term='Windows'/><category term='URPMI'/><category term='Struct'/><category term='Avançado'/><category term='Mandriva'/><title type='text'>Include C/C++</title><subtitle type='html'>C e C++ em sua multidiversidade, multiaplicabilidade e multicomplexidade</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://includec.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-44255314371054590</id><published>2009-10-19T10:50:00.001-02:00</published><updated>2011-07-15T12:03:10.038-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ponteiros'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Vídeos: Ponteiros e Recursividade</title><content type='html'>Video sobre Ponteiros.&lt;br /&gt;&lt;object width="640" height="320" class="BLOG_video_class" id="BLOG_video-79a1756e3a6add39" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v12.nonxt1.googlevideo.com/videoplayback?id%3D79a1756e3a6add39%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331286629%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D4D2A6BC6E9B16523E7F259AFFC3B9410A146933A.717F794BB1658303F2EA3D55893F1E5DEE7D02DF%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D79a1756e3a6add39%26offsetms%3D5000%26itag%3Dw160%26sigh%3DKHfzPVAQQdwF-8Dp3iInYkoUqrk&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="640" height="320" bgcolor="#FFFFFF"flashvars="flvurl=http://v12.nonxt1.googlevideo.com/videoplayback?id%3D79a1756e3a6add39%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331286629%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D4D2A6BC6E9B16523E7F259AFFC3B9410A146933A.717F794BB1658303F2EA3D55893F1E5DEE7D02DF%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D79a1756e3a6add39%26offsetms%3D5000%26itag%3Dw160%26sigh%3DKHfzPVAQQdwF-8Dp3iInYkoUqrk&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Video sobre Recursividade.&lt;br /&gt;&lt;object width="640" height="320" class="BLOG_video_class" id="BLOG_video-fd99175e5760fb3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v19.nonxt4.googlevideo.com/videoplayback?id%3D0fd99175e5760fb3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331286629%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D6F8A17925F41C7C8661833C2D3F39437023542.122A24AC77D803E73A4751A8F214FA8508D4113A%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfd99175e5760fb3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DD2XCJVIQ3LF7HTj9bcJIUrmucuQ&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="640" height="320" bgcolor="#FFFFFF"flashvars="flvurl=http://v19.nonxt4.googlevideo.com/videoplayback?id%3D0fd99175e5760fb3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331286629%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D6F8A17925F41C7C8661833C2D3F39437023542.122A24AC77D803E73A4751A8F214FA8508D4113A%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfd99175e5760fb3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DD2XCJVIQ3LF7HTj9bcJIUrmucuQ&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Até!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-44255314371054590?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=79a1756e3a6add39&amp;type=video%2Fmp4' length='0'/><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=fd99175e5760fb3&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/44255314371054590/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/10/videos-ponteiros-e-recursividade.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/44255314371054590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/44255314371054590'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/10/videos-ponteiros-e-recursividade.html' title='Vídeos: Ponteiros e Recursividade'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-1515114987379668755</id><published>2009-08-13T07:41:00.019-03:00</published><updated>2011-02-28T15:06:48.723-03:00</updated><title type='text'>Carregando variáves de arquivo LUA</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ol&amp;#225;, depois de um tempo sem postar nada, trago um exemplo de como se carregar vari&amp;#225;veis de um arquivo lua para o seu aplicativo em c++, utilizando Dev-C++. &lt;br /&gt;&lt;br /&gt;A linguagem lua vem sendo utilizada em muitos jogos, um grande exemplo &amp;#233; o jogo online &lt;a href="http://www.tibia.com/"&gt;Tibia&lt;/a&gt;, n&amp;#227;o &amp;#233; grande a atua&amp;#231;&amp;#227;o da linguagem lua neste jogo, ela &amp;#233; utilizada para se carregar vari&amp;#225;veis como SERVIDOR, USUARIO, VERS&amp;#195;O, entre outros detalhes.&lt;br /&gt;&lt;br /&gt;Ent&amp;#227;o vamos l&amp;#225;. Primeiramente temos que entender que a biblioteca que utilizaremos para carregar arquivos lua foi inicialmente desenvolvida para C, portanto, se voc&amp;#234; pretende utilizar C++ &amp;#233; necess&amp;#225;rio um comando para que seja possivel utilizar.&lt;/div&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;externn "C" {&lt;br /&gt;    #include "lua.h"&lt;br /&gt;    #include "lualib.h"&lt;br /&gt;    #include "lauxlib.h"&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora vamos ao nosso arquivo lua que guardar&amp;#225; as vari&amp;#225;veis. Crie um arquivo com a exten&amp;#231;&amp;#227;o lua e grave as seguintes varei&amp;#225;veis:&lt;br /&gt;&lt;br /&gt;SERVIDOR = "localhost"&lt;br /&gt;USUARIO = "ROOT"&lt;br /&gt;SENHA = "123"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Salve-o com o nome que desejar, desde que esteja na mesma pasta que o seu projeto. Para que o nosso programa possa ler as vari&amp;#225;veis quando quiser, sem necessitar de um c&amp;#243;digo enorme toda a vez que for capturar a vari&amp;#225;vel, vamos criar uma fun&amp;#231;&amp;#227;o CarregaVariavel do tipo Const Char*. Esta fun&amp;#231;&amp;#227;o recebera o seguinte par&amp;#226;metro:&lt;br /&gt;variavel é a variavel que será carregada.&lt;br /&gt;&lt;/div&gt;&lt;pre class="cpp" name="code"&gt;const char* CarregaVariavel(char* variavel)&lt;br /&gt;{&lt;br /&gt;   // Variavel&lt;br /&gt;   lua_State *LuaVar = lua_open();&lt;br /&gt;   // Carrega o arquivo&lt;br /&gt;   int sts = luaL_loadfile(LuaVar, "hello.lua");&lt;br /&gt;&lt;br /&gt;   // Se carregou o arquivo&lt;br /&gt;   if( sts== 0 ) {&lt;br /&gt;      // Carrega os dados do arquivo em si...&lt;br /&gt;      sts = lua_pcall(LuaVar, 0, LUA_MULTRET,0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   // Captura o valor da variavel entre aspas.&lt;br /&gt;   lua_getglobal(LuaVar,variavel);&lt;br /&gt;   // Atribui a uma variavel o valor capturado&lt;br /&gt;   return lua_tostring(LuaVar,-1);&lt;br /&gt;&lt;br /&gt;   lua_close(LuaVar);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Para chamarmos a nossa fun&amp;#231;&amp;#227;o, declararemos uma variavel do tipo const char e chamamos a nossa fun&amp;#231;&amp;#227;o. como abaixo&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;font class="cpp1-reservedword"&gt;const&lt;/font&gt;&lt;font class="cpp1-space"&gt; &lt;/font&gt;&lt;font class="cpp1-reservedword"&gt;char&lt;/font&gt;&lt;font class="cpp1-space"&gt; *teste;&lt;br /&gt;teste = CarregaVariavel(&lt;/font&gt;&lt;font class="cpp1-string"&gt;"SERVIDOR"&lt;/font&gt;&lt;font class="cpp1-symbol"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;O nosso programa final pode ser visto na listagem abaixo.&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;&lt;br /&gt;const char* CarregaVariavel(char* variavel);&lt;br /&gt;&lt;br /&gt;int main( int argc, char ** argv) {&lt;br /&gt;&lt;br /&gt;    const char *servidor;&lt;br /&gt;    const char *usuario;&lt;br /&gt;    const char *senha;&lt;br /&gt;&lt;br /&gt;    servidor = CarregaVariavel( "SERVIDOR" );&lt;br /&gt;    cout &lt;&lt; servidor &lt;&lt; endl;&lt;br /&gt;    usuario = CarregaVariavel("USUARIO");&lt;br /&gt;    cout &lt;&lt; usuario &lt;&lt; endl;&lt;br /&gt;&lt;br /&gt;    senha = CarregaVariavel("SENHA");&lt;br /&gt;    cout &lt;&lt; senha &lt;&lt; endl;&lt;br /&gt;    system("pause");&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;const char* CarregaVariavel(char* variavel)&lt;br /&gt;{&lt;br /&gt;   // Variavel&lt;br /&gt;   lua_State *LuaVar = lua_open();&lt;br /&gt;   // Carrega o arquivo&lt;br /&gt;   int sts = luaL_loadfile(LuaVar, "hello.lua");&lt;br /&gt;&lt;br /&gt;   // Se carregou o arquivo&lt;br /&gt;   if( sts== 0 ) {&lt;br /&gt;      // Carrega os dados do arquivo em si...&lt;br /&gt;      sts = lua_pcall(LuaVar, 0, LUA_MULTRET,0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   // Captura o valor da variavel entre aspas.&lt;br /&gt;   lua_getglobal(LuaVar,variavel);&lt;br /&gt;   // Atribui a uma variavel o valor capturado&lt;br /&gt;   return lua_tostring(LuaVar,-1);&lt;br /&gt;&lt;br /&gt;   lua_close(LuaVar);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;"Mas pô sipmann.. deu erro na hora de compila aqui no dev...??"... Para poder compilar &amp;#233; necess&amp;#225;rio baixar o pacote (atrav&amp;#233;s do sistema de pacotes do dev mesmo) "lua"... "Prontooo... e agora???"... Agora &amp;#233; necess&amp;#225;rio dizer ao compilador que iremos utilizar a biblioteca que acabamos de baixar (lembram do acesso ao mysql??? mesma coisa) Project &gt;&gt; Project Options &gt;&gt; Parameters... ai na lista "Linker" adicionem as duas linhas a seguir...&lt;br /&gt;-lLua -lLualib&lt;br /&gt;&lt;br /&gt;Pronto... s&amp;#243; compilar e brincar... &lt;br /&gt;Abra&amp;#231;&amp;#227;o e espero que tenham gostado... qualquer duvida s&amp;#243; posta ai... at&amp;#233;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-1515114987379668755?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/1515114987379668755/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/08/carregando-variaves-de-arquivo-lua.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/1515114987379668755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/1515114987379668755'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/08/carregando-variaves-de-arquivo-lua.html' title='Carregando variáves de arquivo LUA'/><author><name>Mauricio Sipmann</name><uri>https://profiles.google.com/109227542089338908174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bYk4TAwKESs/AAAAAAAAAAI/AAAAAAAAAAA/WwcRu_Z3xyg/s512-c/photo.jpg'/></author><thr:total>6</thr:total><georss:featurename>Rio Grande do Sul, Brasil</georss:featurename><georss:point>-27.848790459862073 -54.29443359375</georss:point><georss:box>-29.062965959862073 -56.16210959375 -26.634614959862073 -52.42675759375</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-3154695934799205584</id><published>2009-06-12T08:55:00.002-03:00</published><updated>2009-06-12T09:04:39.430-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='leitura recomendada'/><title type='text'>Revista programar: Metaprogramação em C++</title><content type='html'>A revista Programar dos nossos irmãos lusitanos em sua edição 20 publicou um interessante artigo sobre Metaprogramação em c++.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.revista-programar.info/front/view/26"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 400px;" src="http://3.bp.blogspot.com/_MvDshKp6n3U/SjJC3eEJ2DI/AAAAAAAAAZE/7Qu9EA7JEvQ/s400/revista_programar_20.png" alt="" id="BLOGGER_PHOTO_ID_5346409228372924466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fica assim nossa recomendação de leitura para o fim de semana: &lt;a href="http://www.revista-programar.info/front/view/26"&gt;http://www.revista-programar.info/front/view/26&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aufwiederzehn!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-3154695934799205584?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/3154695934799205584/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/06/revista-programar-metaprogramacao-em-c.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3154695934799205584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3154695934799205584'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/06/revista-programar-metaprogramacao-em-c.html' title='Revista programar: Metaprogramação em C++'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MvDshKp6n3U/SjJC3eEJ2DI/AAAAAAAAAZE/7Qu9EA7JEvQ/s72-c/revista_programar_20.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-5961629240742601010</id><published>2009-05-31T16:01:00.002-03:00</published><updated>2009-05-31T16:39:57.869-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='GCC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Otimizações do compilador GCC</title><content type='html'>Olá pessoal, esse pequeno post é para falar sobre compilação com otimização do compilador. Para isso vamos &lt;a href="http://includec.blogspot.com/2009/04/qual-o-tempo-de-execucao-de-meu.html"&gt;medir o tempo de execução&lt;/a&gt; de nosso programa.&lt;br /&gt;&lt;br /&gt;Usei o exemplo do post anterior, de qualquer forma segue o código abaixo:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &lt;stdio.h&gt;&lt;/stdio.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &lt;stdlib.h&gt;&lt;/stdlib.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tempo()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;struct&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; timeval tv;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; gettimeofday(&amp;amp;tv,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tv.tv_sec + tv.tv_usec/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1e6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1,t2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(i=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;300000000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i++);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t2 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2-t1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Na hora de compilar um programa com o GCC você pode colocar alguns parâmetros, vamos usar:&lt;br /&gt;&lt;br /&gt;-O1  Otimiza para tamanho do binário&lt;br /&gt;-O2  Otimiza para desempenho de execução&lt;br /&gt;-O3  Otimiza para Data cache&lt;br /&gt;&lt;br /&gt;* Atenção é "O" (letra) e não "0" (número).&lt;br /&gt;&lt;br /&gt;Vamos aos testes:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[helton2@hrpc ~]$ gcc teste.c -O1&lt;br /&gt;[helton2@hrpc ~]$ ./a.out&lt;br /&gt;1243797632.612002    1243797633.767017    1.155015&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Neste exemplo o tamanho do binário ficou em 6329 bytes e demorou 1.155 segundos.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[helton2@hrpc ~]$ gcc teste.c -O2&lt;br /&gt;[helton2@hrpc ~]$ ./a.out&lt;br /&gt;1243797643.222072    1243797644.371347    1.149275&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Neste exemplo o tamanho do binário ficou em 6345 bytes e demorou 1.149 segundos.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[helton2@hrpc ~]$ gcc teste.c -O3&lt;br /&gt;[helton2@hrpc ~]$ ./a.out&lt;br /&gt;1243797650.764788    1243797651.959029    1.194241&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Neste exemplo o tamanho do binário ficou em 6409 bytes e demorou 1.194 segundos.&lt;br /&gt;&lt;br /&gt;Compilando da forma padrão ...&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[helton2@hrpc ~]$ gcc teste.c&lt;br /&gt;[helton2@hrpc ~]$ ./a.out&lt;br /&gt;1243797667.095339    1243797670.080635    2.985296&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Neste exemplo o tamanho do binário ficou em 6369 bytes e demorou 2.985 segundos.&lt;br /&gt;&lt;br /&gt;Como aqui estamos tratando de um problema fácil, apenas um simples "for" a diferença é pequena, mas com problemas mais complexos, sem dúvida essas opções de compilação podem dar um "up" no seu programa.&lt;br /&gt;&lt;br /&gt;As opções aqui abordadas são válidas para a maioria dos compiladores C e C++ tanto em ambiente unix, linux, mac e windows.&lt;br /&gt;&lt;br /&gt;Dica de  &lt;a href="http://www.inf.ufrgs.br/%7Ecschepke/"&gt;Claudio Schepke&lt;/a&gt;. Obrigado!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-5961629240742601010?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/5961629240742601010/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/05/otimizacoes-do-compilador-gcc.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5961629240742601010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5961629240742601010'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/05/otimizacoes-do-compilador-gcc.html' title='Otimizações do compilador GCC'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-2764669834249506975</id><published>2009-05-14T09:57:00.005-03:00</published><updated>2009-05-14T10:09:38.231-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='URPMI'/><category scheme='http://www.blogger.com/atom/ns#' term='Mandriva'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Como instalar o GCC em Mandriva pela linha de comando?</title><content type='html'>Vamos ver aqui simples rápido como instalar programas (aqui vamos instalar o GCC, mas serve para qualquer outro) em distribuição Mandriva (qualquer versão) ou outra distribuição que utiliza o gerenciador de pacotes URPMI.&lt;br /&gt;&lt;br /&gt;O URPMI é como o APT das distribuições baseadas em Debian... um gerenciador de pacotes.&lt;br /&gt;&lt;br /&gt;Bom, o primeiro passo é "testar" se a instalação de um dado pacote (rpm, que está nos repositórios) é possível. Para isso (com root) usamos "urpmi -- test gcc", onde "gcc" é o pacote que queremos instalar.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MvDshKp6n3U/SgwWHR0SExI/AAAAAAAAARI/41Qrda367ZE/s1600-h/eh_possivel.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 375px;" src="http://2.bp.blogspot.com/_MvDshKp6n3U/SgwWHR0SExI/AAAAAAAAARI/41Qrda367ZE/s400/eh_possivel.png" alt="" id="BLOGGER_PHOTO_ID_5335663972824781586" border="0" /&gt;&lt;/a&gt;O URPMI então nos diz se é possíovel ou não. Para instalar então tem que dar o comando "urpmi gcc" onde gcc é o pacote que queremos instalar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MvDshKp6n3U/SgwWzFcT5QI/AAAAAAAAARQ/7Nroo3M9Y-E/s1600-h/instalando.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 354px;" src="http://2.bp.blogspot.com/_MvDshKp6n3U/SgwWzFcT5QI/AAAAAAAAARQ/7Nroo3M9Y-E/s400/instalando.png" alt="" id="BLOGGER_PHOTO_ID_5335664725417256194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;No início da tela anterior, executamos o comando "gcc" e como pode ver, não havia esse comando, instalamos, executamos novamente e tudo ok.&lt;br /&gt;&lt;br /&gt;É essa a dica, agora você que usa uma máquina rodando alguma distribuição que usa RMPI, e acessa ela remotamente por SSH por exemplo e que não tem acesso a interface gráfica... já pode programar em C.&lt;br /&gt;&lt;br /&gt;Welcome to jungle :)&lt;br /&gt;Bye&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-2764669834249506975?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/2764669834249506975/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/05/como-instalar-o-gcc-em-mandriva-pela.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/2764669834249506975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/2764669834249506975'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/05/como-instalar-o-gcc-em-mandriva-pela.html' title='Como instalar o GCC em Mandriva pela linha de comando?'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_MvDshKp6n3U/SgwWHR0SExI/AAAAAAAAARI/41Qrda367ZE/s72-c/eh_possivel.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-964087064334322639</id><published>2009-04-25T22:26:00.002-03:00</published><updated>2011-02-28T14:57:10.880-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Iniciante'/><title type='text'>Fatorial Recursivo em C</title><content type='html'>&lt;p align="justify"&gt;Neste pequeno tutorial vou demonstrar o cálculo do fatorial utilizando recursividade na linguagem C. O fatorial de um número é igual a ele mesmo vezes ele menos um até chegar em um, exemplo: &lt;br /&gt;&lt;br /&gt;Fatorial de 4 é igual a 4*3*2*1 que é igual a 24.&lt;br /&gt;Fatorial de 5 é igual a 5*4*3*2*1 que é igual a 120.&lt;br /&gt;&lt;br /&gt;Na função a seguir temos cálculo do fatorial de um número sem usar recursividade. Ela recebe como parâmetro um número inteiro e retorna o fatorial daquele número.&lt;/p&gt;&lt;pre class="cpp" name="code"&gt;&lt;br /&gt;int fatorial (int n)&lt;br /&gt;{   &lt;br /&gt;    int i;&lt;br /&gt;    i = n - 1; &lt;br /&gt;    for (i; i!=1; i--)&lt;br /&gt;        n = n * i;&lt;br /&gt;    return n;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p align="justify"&gt;Então podemos considerar que: &lt;br /&gt;&lt;br /&gt;- o fatorial de 5 é igual a 5 multiplicado pelo fatorial de 4;&lt;br /&gt;- o fatorial de 4 é igual a 4 multiplicado pelo fatorial de 3;&lt;br /&gt;- o fatorial de 3 é igual a 3 multiplicado pelo fatorial de 2 e assim por diante.&lt;br /&gt;&lt;br /&gt;Montando uma função matemática temos:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;fatorial de x = x * fatorial de ( x -1 );&lt;/span&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;Entendido isso, a nossa função recursiva está praticamente pronta, basta adicionar uma condição de fim, que na função anterior é &lt;span style="font-style:italic;"&gt;i diferente de 1&lt;/span&gt;. Veja a seguir a implementação da função em C.&lt;/p&gt;&lt;pre  class="cpp" name="code"&gt;&lt;br /&gt;int fatorial (int n)&lt;br /&gt;{&lt;br /&gt;    if(n==1) &lt;br /&gt;        return n;&lt;br /&gt;    return fatorial(n-1) * n;          &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p align="justify"&gt;Simples assim, até.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-964087064334322639?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/964087064334322639/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/04/fatorial-recursivo-em-c.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/964087064334322639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/964087064334322639'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/04/fatorial-recursivo-em-c.html' title='Fatorial Recursivo em C'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-7866078638614704551</id><published>2009-04-19T23:29:00.008-03:00</published><updated>2009-04-20T00:56:48.557-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Avançado'/><category scheme='http://www.blogger.com/atom/ns#' term='Struct'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Qual o tempo de execução de meu aplicativo?</title><content type='html'>Há situações em que precisamos medir quanto tempo demorou a execução de um determinado procedimento, ou a execução de um programa. Neste caso no Linux podemos usar a função &lt;span style="font-weight: bold;"&gt;gettimeofday()&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para mais detalhes... na linha de comando digite: &lt;span style="font-weight: bold;"&gt;man gettimeofday&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Algumas informações úteis:&lt;br /&gt;&lt;br /&gt;- a função retorna um int&lt;br /&gt;- o primeiro parâmetro é a struct timeval (arquivo time.h), e o segundo é um valor de timezone, mas esse parametro está deprecated, e como diz na documentação costuma-se usar um valor nullo (0, zero)&lt;br /&gt;- para que isso funcione você precisa ter no seu computador a glibc.&lt;br /&gt;&lt;br /&gt;Vamos ao código e posterior análise:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tempo()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;struct&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; timeval tv;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; gettimeofday(&amp;amp;tv,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tv.tv_sec + tv.tv_usec/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1e6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1,t2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(i=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;300000000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i++);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t2 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2-t1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;1 - Criamos uma função que retorna um double, a função tempo()&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tempo()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;struct&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; timeval tv;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; gettimeofday(&amp;amp;tv,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; tv.tv_sec + tv.tv_usec/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1e6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Essa função declara uma variável chamada &lt;span style="font-weight: bold;"&gt;tv&lt;/span&gt;, que é do tipo da &lt;span style="font-weight: bold;"&gt;struct timeval&lt;/span&gt; (lembre... essa struct está definida no arquivo time.h). Depois chamamos a função propriamente, passando um ponteiro para nossa variável &lt;span style="font-weight: bold;"&gt;tv&lt;/span&gt; e o segundo parâmetro como a documentação sugere com valor nulo.&lt;br /&gt;&lt;br /&gt;Depois &lt;a href="http://www.unitconversion.org/time/seconds-to-microseconds-conversion.html"&gt;dividimos os microsegundos por 1000000&lt;/a&gt; para convertê-los em segundos (deixe 1e6, não sei porque, mas se dividir por 1000000 não vai dar certo ... isso ainda é um mistério), somamos a esse resultado os os segundos de agora. A struct timeval tem dois atributos, tv_sec (os segundos de agora) e tv_usec (os microsegundos do segundo de agora). Como nossa variável se chama &lt;span style="font-weight: bold;"&gt;tv&lt;/span&gt;, então para acessar os microsegundos usamos &lt;span style="font-weight: bold;"&gt;tv.tv_usec&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Agora o main de nosso programa:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1,t2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t1 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(i=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;300000000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i++);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; t2 = tempo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%lf&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,t2-t1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Declaramos t1 e t2 do tipo double (a máscara para double é %lf lembra?) e também um i que vai ser nosso contador.&lt;br /&gt;&lt;br /&gt;Queremos medir quanto tempo demorou um for de 0 até 300000000 (300 milhões), por isso guardamos o tempo de agora em t1 e depois do for em t2, mostramos isso na tela (já vai ver porque). Diminuimos t1 de t2 e temos em segundos quanto que demorou nosso bloco de códigos.&lt;br /&gt;&lt;br /&gt;Compilando ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;gcc teste.c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mv a.out teste&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compilei (gerou o a.out) e renomeei isso para teste.&lt;br /&gt;&lt;br /&gt;Executando:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;./teste&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vai produzir um resultado como:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1240195429.991010    1240195432.975001    2.983991&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Temos o tempo inicial, tempo final e a diferença. Atenção!! Se você tiver um computador lento é aconselhavel diminuir o tamanho do for ... a não ser que tenha paciência.&lt;br /&gt;&lt;br /&gt;Estou rodando o programa num computador:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;uname -a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linux hrpc 2.6.27.14 # i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GNU/Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Legal!! Descobrimos que demorou 2.98 segundos ... mas pense bem, foi a primeira vez que eu executei o programa na máquina ... será que nas vezes seguintes vai ser diferente o tempo? Talvez o programa já vai estar carregado na memória? E ... fora o programa eu tenho mais vários outros processos executando em meu computador... será que eles não interferem?&lt;br /&gt;&lt;br /&gt;Só tem uma maneira de saber... rodando mais vezes o programa e vendo o tempo que resultou...&lt;br /&gt;&lt;br /&gt;Segue abaixo um shell script que faz o programa executar 50 vezes e guarda (acumulando) o valor dos printf em um arquivo. Atenção para o caminho dos arquivos aí na sua máquina.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;i=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(136, 0, 136);"&gt; [&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; -le 50&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(136, 0, 136);"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        /home/helton2/teste &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(34, 51, 136);"&gt;&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; /home/helton2/resultados.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;i=&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;`&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 204);"&gt;expr&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; + 1&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(136, 0, 136);"&gt;exit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Este código aí acima é do arquivo runteste.sh, criamos esse arquivo e damos permissão de execução a ele (&lt;span style="font-weight: bold;"&gt;chmod +x runteste.sh&lt;/span&gt;), aí ele é um executável igual nosso programa em C.&lt;br /&gt;&lt;br /&gt;Para rodá-lo então:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;./runteste.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Isso vai criar em "/home/helton2/" o arquivo "resultados.txt" com valores semelhantes (depende de em que dia você está executando e quão rápida é sua máquina) aos listado abaixo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;1240195429.991010    1240195432.975001    2.983991&lt;br /&gt;1240195432.980598    1240195436.225005    3.244407&lt;br /&gt;1240195436.230919    1240195439.232810    3.001891&lt;br /&gt;1240195439.238001    1240195442.226818    2.988817&lt;br /&gt;1240195442.231239    1240195445.222347    2.991108&lt;br /&gt;1240195445.228246    1240195448.210298    2.982052&lt;br /&gt;1240195448.216515    1240195451.466147    3.249632&lt;br /&gt;1240195451.472111    1240195454.732387    3.260276&lt;br /&gt;1240195454.738784    1240195457.728088    2.989304&lt;br /&gt;1240195457.734230    1240195460.976687    3.242457&lt;br /&gt;1240195460.981184    1240195464.242882    3.261698&lt;br /&gt;1240195464.247674    1240195467.239435    2.991761&lt;br /&gt;1240195467.245351    1240195470.236075    2.990724&lt;br /&gt;1240195470.241656    1240195473.518475    3.276819&lt;br /&gt;1240195473.522821    1240195476.506720    2.983899&lt;br /&gt;1240195476.511950    1240195479.494113    2.982163&lt;br /&gt;1240195479.499256    1240195482.492852    2.993596&lt;br /&gt;1240195482.497447    1240195485.473576    2.976129&lt;br /&gt;1240195485.478231    1240195488.463446    2.985215&lt;br /&gt;1240195488.471239    1240195491.746600    3.275361&lt;br /&gt;1240195491.752356    1240195494.763777    3.011421&lt;br /&gt;1240195494.768697    1240195498.037331    3.268634&lt;br /&gt;1240195498.041838    1240195501.072781    3.030943&lt;br /&gt;1240195501.077732    1240195504.334191    3.256459&lt;br /&gt;1240195504.340106    1240195507.636492    3.296386&lt;br /&gt;1240195507.641648    1240195510.639141    2.997493&lt;br /&gt;1240195510.644422    1240195513.607822    2.963400&lt;br /&gt;1240195513.613151    1240195516.608085    2.994934&lt;br /&gt;1240195516.613102    1240195519.872248    3.259146&lt;br /&gt;1240195519.877602    1240195523.154833    3.277231&lt;br /&gt;1240195523.162235    1240195526.428517    3.266282&lt;br /&gt;1240195526.433406    1240195529.866800    3.433394&lt;br /&gt;1240195529.879949    1240195533.494374    3.614425&lt;br /&gt;1240195533.499518    1240195536.512687    3.013169&lt;br /&gt;1240195536.517868    1240195539.777852    3.259984&lt;br /&gt;1240195539.784743    1240195543.055148    3.270405&lt;br /&gt;1240195543.060538    1240195546.337556    3.277018&lt;br /&gt;1240195546.343325    1240195549.587118    3.243793&lt;br /&gt;1240195549.591585    1240195552.838038    3.246453&lt;br /&gt;1240195552.844843    1240195556.124090    3.279247&lt;br /&gt;1240195556.129737    1240195559.367544    3.237807&lt;br /&gt;1240195559.375004    1240195562.423662    3.048658&lt;br /&gt;1240195562.428425    1240195565.675685    3.247260&lt;br /&gt;1240195565.680207    1240195568.961254    3.281047&lt;br /&gt;1240195568.966475    1240195572.196674    3.230199&lt;br /&gt;1240195572.202217    1240195575.433472    3.231255&lt;br /&gt;1240195575.454523    1240195578.449320    2.994797&lt;br /&gt;1240195578.454862    1240195581.466028    3.011166&lt;br /&gt;1240195581.471327    1240195584.739090    3.267763&lt;br /&gt;1240195584.744280    1240195587.976532    3.232252&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora sim temos dados um pouco melhores!!! Copie-os na sua planilha de cálculos preferida e jogue com os dados!!!!&lt;br /&gt;&lt;br /&gt;Aqui achei algumas coisas:&lt;br /&gt;&lt;br /&gt;melhor tempo: 2,9634000&lt;br /&gt;pior tempo:  3,6144250&lt;br /&gt;tempo médio: 3,1538744&lt;br /&gt;Maior diferença de tempo : 0,6510250&lt;br /&gt;&lt;br /&gt;Sem contar que daria para fazer um belo gráfico de dispersão com esses dados!&lt;br /&gt;&lt;br /&gt;Valeu pessoal!!&lt;br /&gt;&lt;br /&gt;Planejo fazer meu próximo post sobre structs.&lt;br /&gt;&lt;br /&gt;Agradescimentos a &lt;a href="http://www.inf.ufrgs.br/%7Ecschepke/"&gt;Claudio Schepke&lt;/a&gt; pela dica da função gettimeofday&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-7866078638614704551?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/7866078638614704551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/04/qual-o-tempo-de-execucao-de-meu.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/7866078638614704551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/7866078638614704551'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/04/qual-o-tempo-de-execucao-de-meu.html' title='Qual o tempo de execução de meu aplicativo?'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-3401547615590333355</id><published>2009-03-30T15:45:00.004-03:00</published><updated>2009-03-30T16:09:12.219-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Pilhas'/><category scheme='http://www.blogger.com/atom/ns#' term='Vetor'/><category scheme='http://www.blogger.com/atom/ns#' term='Iniciante'/><title type='text'>Calculadora em C utilizando pilhas</title><content type='html'>&lt;p align="justify"&gt;Olá, exemplo muito básico, mas muito básico mesmo, de uma calculadora com as 4 operações básicas feito no Dev-C++ utilizando a linguagem C e também o conceito de pilhas. Este programa pede para o usuário digitar dois valores e armazena eles em uma pilha (vetor), depois pede para o usuário informar a operação desejada, desempilha os valores e armazena eles em variáveis auxiliares, isso poderia ser tirado fora mas pro melhor entendimento preferi deixar assim, feita a operação é armazenado o resultado na pilha novamente e chamado a função que exibe o resultado final.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/*&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;  Name: Calculadora&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;  Author: Bol�var Arthur Butzke&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;  Date: 23/03/09 21:52&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;  Description: Calculadora. Programa que utilize pilhas para efetuar as opera��es b�sicas: &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;               adi��o, subtra��o, divis�o e multiplica��o.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;*/&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Bibliotecas de Fun��es */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Constantes */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#define MAX 10&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#define BASE 0&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Vari�veis */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; TOPO=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;, OPERACAO=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;float&lt;/span&gt;&lt;span style='color: #141312'&gt; VETOR[MAX], VALOR=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;, N1=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;, N2=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;, RESULTADO=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Fun��o para inserir elementos na pilha */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; EMPILHAR(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;float&lt;/span&gt;&lt;span style='color: #141312'&gt; VALOR)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     &lt;b&gt;if&lt;/b&gt; (TOPO == MAX)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;        printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"Buffer OverFlow - Pilha Cheia.&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     &lt;b&gt;else&lt;/b&gt;                &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;        VETOR[TOPO] = VALOR;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     TOPO++;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Fun��o para retirar elementos da pilha */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;float&lt;/span&gt;&lt;span style='color: #141312'&gt; DESEMPILHAR()&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     &lt;b&gt;if&lt;/b&gt; (TOPO == BASE)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;        printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"Buffer UnderFlow! Pilha Vazia.&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     &lt;b&gt;else&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;        TOPO--;   &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;        RESULTADO = VETOR[TOPO]; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;     &lt;b&gt;return&lt;/b&gt; RESULTADO;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Fun��o para efetuar as opera��es */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; CALCULA()&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;/span&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; RESULT = &lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         &lt;b&gt;if&lt;/b&gt; (OPERACAO == &lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Operacao de Adicao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N1 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N2 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULTADO = N1 + N2;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;%f + %f = %f&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,N1,N2,RESULTADO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              EMPILHAR(RESULTADO); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULT = &lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         &lt;b&gt;if&lt;/b&gt; (OPERACAO == &lt;/span&gt;&lt;span style='color: #b08000'&gt;2&lt;/span&gt;&lt;span style='color: #141312'&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Operacao de Subtracao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N1 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N2 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULTADO = N1 - N2;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;%f - %f = %f&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,N1,N2,RESULTADO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              EMPILHAR(RESULTADO); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULT = &lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              }              &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         &lt;b&gt;if&lt;/b&gt; (OPERACAO == &lt;/span&gt;&lt;span style='color: #b08000'&gt;3&lt;/span&gt;&lt;span style='color: #141312'&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Operacao de Multiplicacao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N1 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N2 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULTADO = N1 * N2;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;%f * %f = %f&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,N1,N2,RESULTADO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              EMPILHAR(RESULTADO); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULT = &lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         &lt;b&gt;if&lt;/b&gt; (OPERACAO == &lt;/span&gt;&lt;span style='color: #b08000'&gt;4&lt;/span&gt;&lt;span style='color: #141312'&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Operacao de Divisao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N1 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              N2 = DESEMPILHAR();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULTADO = N1 / N2;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;%f / %f = %f&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,N1,N2,RESULTADO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              EMPILHAR(RESULTADO); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              RESULT = &lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;              }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;//         printf("Operacao informada invalida. Operacoes validas sao:\n adicao (+)\n subtracao (-)\n multiplicacao (*)\n divisao (/)\n");&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;       &lt;b&gt;if&lt;/b&gt; (RESULT==&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;            printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Operacao nao encontrada. &lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;1 -&amp;gt; Adicao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;2 -&amp;gt; Subtracao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;3 -&amp;gt; Multiplicacao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;4 -&amp;gt; Divisao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Informe a operacao novamente: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;            scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;OPERACAO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;            CALCULA();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Fun��o para exibir o resultado */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; MOSTRARESULTADO()&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;      printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"Resultado da operacao e' %f&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,VETOR[BASE]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Fun��o Principal */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;/span&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; AUXILIAR=&lt;/span&gt;&lt;span style='color: #b08000'&gt;1&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;  Calculadora 1.0&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;b&gt;while&lt;/b&gt; (AUXILIAR != &lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Digite o valor1: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%f"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;N1);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          EMPILHAR(N1);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Digite o valor2: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%f"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;N2);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          EMPILHAR(N2);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;1 -&amp;gt; Adicao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;2 -&amp;gt; Subtracao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;3 -&amp;gt; Multiplicacao&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;4 -&amp;gt; Divisao"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Digite a operacao: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;OPERACAO);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          CALCULA();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          MOSTRARESULTADO();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;Digite 0 para sair ou 1 para realizar outra operacao: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;AUXILIAR);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;// nencess�rio para limpar a pilha ap�s realizar uma opera��o, sem isso vai mostrar sempre o resultado da primeira opera��o.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;          TOPO = BASE;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    &lt;b&gt;return&lt;/b&gt; &lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p align="justify"&gt;&lt;br /&gt;Para entender melhor o conceito de pilhas, pense em uma pilha de pratos, quando você precisa de um prato você vai e retira o que está em cima, quando não precisa mais, você coloca ele em cima novamente, assim, sempre o último prato empilhado é o primeiro que sai, leia &lt;a href="http://includec.blogspot.com/2009/03/listas-encadeadas.html"&gt;este post sobre listas encadeadas&lt;/a&gt; para saber mais.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-3401547615590333355?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/3401547615590333355/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/calculadora-em-c-utilizando-pilhas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3401547615590333355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3401547615590333355'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/calculadora-em-c-utilizando-pilhas.html' title='Calculadora em C utilizando pilhas'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-1505020045771338888</id><published>2009-03-20T23:11:00.005-03:00</published><updated>2009-10-22T15:03:44.919-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Vetor'/><category scheme='http://www.blogger.com/atom/ns#' term='Matriz'/><category scheme='http://www.blogger.com/atom/ns#' term='Iniciante'/><title type='text'>Transpor Matriz em Vetor</title><content type='html'>&lt;p align="justify"&gt;Olá galera do ICC!!&lt;br /&gt;&lt;br /&gt;Hoje vou postar um programinha feito por mim durante uma aula de revisão, ele é muito simples, possui basicamente uma matriz de ordem 10 e um vetor de 100 elementos.&lt;br /&gt;&lt;br /&gt;Segue abaixo o código-fonte.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/*&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;Data: 09/03/2009&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;Autor: Bolívar Arthur Butzke&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;E-mail: bolivarbutzke@gmail.com&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;Blog: bolivarbutzke.blogspot.com&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;1) Considerando uma matriz “M”, com a seguinte definição: &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;              [ M(I,J), (I = 1..10), (J = 1..10) ] e um vetor&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;              V(I), (I = 1..100), escreva os seguintes procedimentos:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;i) Um procedimento que mostre a diagonal principal da matriz&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;ii) Um procedimento de consulta e um de atribuição para os elementos da matriz “M”&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;iii) Um procedimento que transponha a matriz “M” para o vetor “V”&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;*/&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#include stdio.h&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #006e28'&gt;#include time.h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Prototipação das Funções */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; DiagonalPrincipal(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Consultar(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Atribuir(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Trasnpor(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; ExibirVetor(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; ExibirMatriz(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Declaração das variáveis Globais */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; M[&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;][&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;], i, j, V[&lt;/span&gt;&lt;span style='color: #b08000'&gt;100&lt;/span&gt;&lt;span style='color: #141312'&gt;], n; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;int&lt;/span&gt;&lt;span style='color: #141312'&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Preenche a matriz com números aleatórios */&lt;/i&gt;&lt;/span&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;for&lt;/b&gt; (i=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;i&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;i++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  &lt;b&gt;for&lt;/b&gt; (j=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;j&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;j++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   srand(time(NULL)+i*j);   &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   M[i][j] = rand() % &lt;/span&gt;&lt;span style='color: #b08000'&gt;100&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que exibe a matriz */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; ExibirMatriz();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que exibe a diagonal principal */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; DiagonalPrincipal();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que consulta na matriz */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; Consultar();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que cadastra valor na matriz */&lt;/i&gt;&lt;/span&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; Atribuir();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que transpoe a matriz em vetor */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; Trasnpor();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Chama função que exibe o vetor */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; ExibirVetor();&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Encerra a função main retornando um inteiro -&amp;gt; 0 */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;return&lt;/b&gt; &lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; DiagonalPrincipal(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Procedimento que Exibe a diagonal principal da matriz */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Diagonal Principal da Matriz"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;for&lt;/b&gt; (i=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;i&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;i++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  &lt;b&gt;for&lt;/b&gt; (j=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;j&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;j++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   &lt;b&gt;if&lt;/b&gt; (i==j)    &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;    printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d "&lt;/span&gt;&lt;span style='color: #141312'&gt;,M[i][j]); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Consultar(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Procedimento de Consulta na Matriz M */&lt;/i&gt;&lt;/span&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Consulta dos Elementos da Matriz"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Informe a linha do elemento: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;i);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Informe a coluna do elemento: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;j);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Valor armazenado Matriz[%d][%d]: %d&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,i,j,M[i][j]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Atribuir(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Procedimento de Atribuição de Valor para um elemento da Matriz M */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Atribuição de Valor para um elemento da Matriz"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Informe a linha do elemento: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;i);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Informe a coluna do elemento: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;j);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Informe o valor para armazenar: "&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; scanf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d"&lt;/span&gt;&lt;span style='color: #141312'&gt;,&amp;amp;M[i][j]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt; Valor armazenado Matriz[%d][%d]: %d&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,i,j,M[i][j]); &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; Trasnpor(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Procedimento para transpor a Matriz M para o Vetor V */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Transposição da Matriz M para o Vetor V"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; n = &lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;for&lt;/b&gt; (i=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;i&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;i++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  &lt;b&gt;for&lt;/b&gt; (j=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;j&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;j++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  {    &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   V[n] = M[i][j];&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   n++;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; ExibirVetor(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Exibe dados no vetor */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Dados do Vetor"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;for&lt;/b&gt; (n=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;n&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;100&lt;/span&gt;&lt;span style='color: #141312'&gt;;n++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"Vetor[%d] = %d&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;,n,V[n]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt; ExibirMatriz(&lt;/span&gt;&lt;span style='color: #0057ae'&gt;void&lt;/span&gt;&lt;span style='color: #141312'&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;/span&gt;&lt;span style='color: #888786'&gt;&lt;i&gt;/* Exibe dados da matriz */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;" Dados armazenados na Matriz"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;--------------------------------------------------&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; &lt;b&gt;for&lt;/b&gt; (i=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;i&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;i++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  &lt;b&gt;for&lt;/b&gt; (j=&lt;/span&gt;&lt;span style='color: #b08000'&gt;0&lt;/span&gt;&lt;span style='color: #141312'&gt;;j&amp;lt;&lt;/span&gt;&lt;span style='color: #b08000'&gt;10&lt;/span&gt;&lt;span style='color: #141312'&gt;;j++)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;   printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"%d "&lt;/span&gt;&lt;span style='color: #141312'&gt;,M[i][j]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; printf(&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #ff80e0'&gt;\n&lt;/span&gt;&lt;span style='color: #bf0303'&gt;"&lt;/span&gt;&lt;span style='color: #141312'&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #141312'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;Bem, no início do programa eu precisei incluir o arquivo de cabeçalho (header) &lt;span style='color: #006e28'&gt;stdio.h&lt;/span&gt; (Standart Input/Output) para poder executar os comandos de entrada e saída como &lt;span style='color: #141312'&gt;printf&lt;/span&gt; e &lt;span style='color: #141312'&gt;scanf&lt;/span&gt;, sendo que o &lt;span style='color: #141312'&gt;printf&lt;/span&gt; serve para imprimir uma mensagem na tela e o &lt;span style='color: #141312'&gt;scanf&lt;/span&gt; serve para ler algum valor formatado, por isso precisa passar um parametro dizendo qual o tipo de dados que vai receber e em qual variável vai armazenar, neste caso as variáveis eram todas do tipo integer (valores inteiros) então a máscara é &lt;span style='color: #141312'&gt;%d&lt;/span&gt;. Também precisei incluir o &lt;span style='color: #006e28'&gt;time.h&lt;/span&gt; para usar a função &lt;span style='color: #141312'&gt;time&lt;/span&gt; e poder atribuir valores aleatórios conforme hora do sistema nos elementos da matriz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Quando copiar este código para testar lembre-se de que precisa ter o sinal de "menor que" antes do nome dos arquivos de cabeçalho e o sinal de "maior que" no final para que o seu compilador preferido busque estes arquivos.header na pasta padrão do compilador, se por acaso você tiver estes arquivos cole-os no mesmo diretório/pasta do arquivo com código-fonte.c e então coloque os nomes dos arquivos de cabeçalho dentro de "aspas duplas".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A função que passa os valores armazenados na matriz para o vetor é muito simples, primeiramente inicializamos a variável &lt;span style='color: #141312'&gt;n&lt;/span&gt; com o valor zero, que corresponde ao primeiro elemento do vetor (lembre-se que sempre começamos a contar do zero). Depois fizemos dois &lt;span style='color: #141312'&gt;for &lt;/span&gt;, que chamamos de laços aninhados para acessar os elementos da matriz, no primeiro laço dizemos qual linha estamos e no segundo a coluna, assim podemos percorrer todos os elementos da matriz. &lt;br /&gt;&lt;br /&gt;Dentro deste laços aninhados, atribuimos o valor da matriz para o vetor e somamos 1 na variável &lt;span style='color: #141312'&gt;n&lt;/span&gt;, assim quando o laço se repetir a segunda vez passaremos o valor armazenada na linha 0 e coluna 1 para a posição 1 do vetor, na terceira vez ainda será o valor da linha zero mas coluna dois e n valerá 2, e assim por diante até passarmos os 100 valores armazenados na matriz para o vetor.&lt;br /&gt;&lt;br /&gt;A função "DiagonalPrincipal" serve para exibir os elementos que se encontram na Diagonal Principal, ou seja, os elementos onde o número da linha é igual ao número da coluna. Outras funções mais simples são para atribuir um valor para um determinado elemento da matriz e consultar o valor de um elemento da matriz, em nenhuma das funções eu precisei passar valores por parametros ou ponteiros porque neste programa específico estamos utilizando variáveis globais que ficam visíveis em todo o programa. &lt;br /&gt;&lt;br /&gt;Por enquanto é isso, em breve artigo sobre listas encadeadas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-1505020045771338888?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/1505020045771338888/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/traspor-matriz-em-vetor.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/1505020045771338888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/1505020045771338888'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/traspor-matriz-em-vetor.html' title='Transpor Matriz em Vetor'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-5664908459560630658</id><published>2009-03-20T00:24:00.013-03:00</published><updated>2009-03-30T16:02:55.142-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Listas Encadeadas'/><category scheme='http://www.blogger.com/atom/ns#' term='Intermediário'/><title type='text'>Listas Encadeadas</title><content type='html'>&lt;p align="justify"&gt;Olá galera do ICC!!!&lt;br /&gt;&lt;br /&gt;Estamos de volta e com conteúdo muito divertido, esta semana tirei para estudar um pouco sobre listas em C e é muito legal. Bom para começar, sempre que queremos guardar um grupo de dados podemos utilizar vetores ou matrizes, isso faz com que você utilize um espaço contíguo na memória, que mesmo com alocação dinâmica de memória vai necessariamente ser sequencial, então podemos acessar qualquer elemento do vetor passando apenas o ponteiro para o primeiro elemento. &lt;br /&gt;&lt;br /&gt;Até neste ponto tudo bem, mas um vetor não é uma estrutura muito flexível, é necessário definir um tamanho máximo para ele, mesmo usando alocação dinâmica para definir/alterar o tamanho do vetor isso acaba custando caro em relação a processamento e uso da região da memória livre reservada para execução do programa (&lt;a href="http://en.wikipedia.org/wiki/Heap_(data_structure)"&gt;Heap&lt;/a&gt;). Isso pode gerar muitos problemas como estouros de memória ao tentar inserir mais um elemento em um vetor cheio (&lt;a href="http://en.wikipedia.org/wiki/Buffer_overflow"&gt;Overflow&lt;/a&gt;) ou então Buffer &lt;a href="http://en.wikipedia.org/wiki/Buffer_underflow"&gt;Underflow&lt;/a&gt; ao tentar ler um vetor vazio.&lt;br /&gt;&lt;br /&gt;Para resolver estes problemas foram criadas as listas encadeadas, são nada mais do que uma estrura de dados com elementos ordenados do mesmo tipo. Elas podem ter o formato de filas ou pilhas, nas filas os dados são inseridos em uma estremidade e retirados na outra, conhecido como &lt;a href="http://pt.wikipedia.org/wiki/FIFO"&gt;FIFO&lt;/a&gt; (First In, First Out) e nas pilhas os dados que são inseridos por último são retirados primeiro, conhecido como &lt;a href="http://pt.wikipedia.org/wiki/LIFO"&gt;LIFO&lt;/a&gt; (Last In, First Out). &lt;br /&gt;&lt;br /&gt;Uma lista encadeada pode ser inicializada sem nenhum valor e a medida que vamos inserindo elementos nela vamos alocando memória dinâmicamente, assim o risco de faltar memória diminui pois não precisamos alocar uma grande quantidade de memória que não vai ser usada depois e não corremos o risco de ocorrer overflow. Quando queremos inserir um novo elemento na lista precisamos criar um nó, que é um ponteiro com endereço de memória do elemento e o valor o valor do elemento, o controle dos dados passa a ser logico e diminui o processamento necessário para recuperar os valores armazenados.&lt;br /&gt;&lt;br /&gt;Em breve exemplos utilizando pilhas e listas encadeadas.&lt;br /&gt;&lt;br /&gt;Até.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-5664908459560630658?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/5664908459560630658/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/listas-encadeadas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5664908459560630658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5664908459560630658'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/listas-encadeadas.html' title='Listas Encadeadas'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-6165671461411791600</id><published>2009-03-04T23:54:00.028-03:00</published><updated>2011-03-21T22:42:25.229-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Intermediário'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Acesso a banco de dados MySQL</title><content type='html'>&lt;script language='javascript' src='http://diversos.sourcedreams.com.br/dp.SyntaxHighlighter/Scripts/shBrushSql.js'&gt;&lt;/script&gt;&lt;br /&gt;Olá pessoal...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bom sendo este o meu primeiro post aqui no Include C/C++ e este post se destina a criar uma aplicação que tenha acesso a um banco de dados MySQL. Então vamos lá, agora que vocês já devem ter tudo funcionando 100% após ter lido o post &lt;a href="http://includec.blogspot.com/2009/03/compilando-cc-no-linux-e-no-windows.html"&gt;Compilando C/C++ no Linux e no Windows&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Agora então agora é necessário instalar o servidor de banco de dados MySQL. No linux basta digitar apt-get install mysql-server-X.X onde X é a versão. Nós iremos utilizar a 5.0 (mysql-server-5.0). São aproximadamente 36MB. Após baixado e instalado uma senha é requisitada, eu utilizei a famosa senha 123.&lt;br /&gt;&lt;br /&gt;Para que se consiga utilizar a biblioteca mysql é necessário baixar a libmysqlclient-dev, também através do apt-get.&lt;br /&gt;&lt;br /&gt;Com o serviço instalado vamos criar as tabelas, para isto abra um terminal e digite mysql --user=root -p, então pedirá uma senha, esta senha é do root do MySQL então vamos inserir a senha que você definiu (no meu caso 123) e pronto estamos conectados com o serviço. Vamos então digitar...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;create database acessodb;&lt;br /&gt;&lt;br /&gt;connect acessodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE `usuarios` (&lt;br /&gt;`id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;`usuario` varchar(20) NOT NULL,&lt;br /&gt;PRIMARY KEY (`id`)&lt;br /&gt;) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;&lt;br /&gt;&lt;br /&gt;INSERT INTO `usuarios` (`id`, `usuario`) VALUES&lt;br /&gt;(1, 'Mauricio Sipmann'),&lt;br /&gt;(2, 'Bolivar Arthur Butzke'),&lt;br /&gt;(3, 'Helton Ritter'),&lt;br /&gt;(4, 'Michel de Sousa');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Então ta, criamos um banco de dados, criamos a tabela e inserimos uns dados para podermos testar o banco, para sair do serviço basta digitar exit. Agora para conectar&lt;br /&gt;&lt;br /&gt;Feito isto vamos para o código-fonte do progrma em C++.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre  name="code" class="cpp"&gt;&lt;br /&gt;#include &lt;iostream&gt;  // Para usar o cin.get&lt;br /&gt;#include &lt;mysql/mysql.h&gt; // mysql/mysql.h  biblioteca mysql  &lt;br /&gt;#include &lt;sstream&gt; // para usar o istringstream&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt; MYSQL DBCon; // Vairiavel de conexão&lt;br /&gt; MYSQL_RES *result; //variável que recebe o resultado&lt;br /&gt; MYSQL_ROW dados; //variável que recebe os dados&lt;br /&gt;&lt;br /&gt; int ID; // Converter para integer&lt;br /&gt;&lt;br /&gt; // Inicia a variável DBCon&lt;br /&gt; mysql_init(&amp;amp;DBCon);&lt;br /&gt;&lt;br /&gt; //Conecta com o banco de dados&lt;br /&gt; if ( mysql_real_connect(&amp;amp;DBCon, "127.0.0.1", "root", "", "acessoaobd", 0, NULL, 0) )&lt;br /&gt; {&lt;br /&gt;       printf("Conectado!\n\n");&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;       //Escreve o erro que ocorreu&lt;br /&gt;       printf("Erro n %d : %s\n", mysql_errno(&amp;amp;DBCon), mysql_error(&amp;amp;DBCon));&lt;br /&gt;   cin.get();  //Espera o usuário pressionar uma tecla&lt;br /&gt;   cin.get();&lt;br /&gt;   return 1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;// Executa a consulta&lt;br /&gt;if(mysql_query(&amp;amp;DBCon,"select * from usuarios"))&lt;br /&gt;{&lt;br /&gt;printf("Erro n %d : %s\n",mysql_errno(&amp;amp;DBCon),mysql_error(&amp;amp;DBCon));&lt;br /&gt;cin.get();&lt;br /&gt;cin.get();&lt;br /&gt;return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Recebe os dados da cunsulta&lt;br /&gt;result = mysql_store_result(&amp;amp;DBCon);&lt;br /&gt;&lt;br /&gt;// Se consultou (sem erros)&lt;br /&gt;if (result)&lt;br /&gt;{&lt;br /&gt;// Enquanto receber dados vai escrevendo&lt;br /&gt;while ((dados=mysql_fetch_row(result)) != NULL)&lt;br /&gt;{&lt;br /&gt; // Escreve os dados formatados sende estes a ID e o NOME&lt;br /&gt;&lt;br /&gt; istringstream buffer(dados[0]); // Cria a variável que recebera a string a ser convertida para int&lt;br /&gt; buffer &gt;&gt; ID; // Convert a string para int&lt;br /&gt; printf("%02d     %s\n",ID,dados[1]); // Escreve formatado&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Limpa da memória&lt;br /&gt;mysql_free_result(result);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;printf("Erro n %d : %s\n", mysql_errno(&amp;amp;DBCon), mysql_error(&amp;amp;DBCon));&lt;br /&gt;cin.get();&lt;br /&gt;cin.get();&lt;br /&gt;return 1;&lt;br /&gt;}&lt;br /&gt;printf("\n");&lt;br /&gt;// Fecha a conexão ...&lt;br /&gt;mysql_close(&amp;amp;DBCon);&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Então vamos as explicações. As primeiras linhas fazem referência às bibliotecas que iremos utilizar, iostream para as funções cout e cin, mysql.h para acessarmos o banco de dados, e sstream para convertermos as variáveis de string para int. O código quinta linha  tem a função de minimizar o trabalho teriamos quando utilizássemos o cin.get ou cout &lt;&lt; "texto", teríamos que escrever sempre std::cout &lt;&lt; "" com este using namespace STD poupamos trabalho. Então definimos as variáveis DBCon, result, dados e ID, a variável DBCon é a nossa conexão com o banco, result é a variável que armazena o resultado de uma consulta e a variável dados é que receberá os dados de cada linha para escrevermos (veremos mais adiante nas explicações).  A função mysql_ini(&amp;amp;DBCon) tem a finalidade de incializar a variável de conexão com o banco pois precisaremos dela diversas vezes como verão. Agora uma parte interessante e que vai do gosto de cada um. Existem 2 funções para se conectar com o banco de dados, são elas:  &lt;/div&gt;&lt;ul&gt;&lt;li&gt; MYSQL * mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd);    &lt;/li&gt;&lt;li&gt; MYSQL * mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int clientflag); &lt;/li&gt;&lt;/ul&gt;A diferença é que na mysql_real_connet nós já especificamos o banco ao qual queremos nos conectar, já a mysql_connect só conecta e então seria necessário o uso da função &lt;i&gt;mysql_select_db. &lt;/i&gt;Nós usaremos a real_connect, onde são necessários os seguintes parâmetros:&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;pre  name="code" class="cpp"&gt;&lt;br /&gt;mysql_real_connect(variavel_de_conexao(&amp;amp;DBCon),"servidor(127.0.0.1)","usuario(root)","senha(123)","banco_de_dados(acessodb)",porta_de_conexão(0 para padrão),socket(NULL para padrão), flags_do_cliente(0 para padrão));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Caso ocorra algum erro utilizamos a função printf("Erro n %d: %s",mysql_errno(&amp;amp;DBCon), mysql_error(&amp;amp;DBCon)) onde formatamos para receber um inteiro e uma string, onde mysql_errno traz o numero do erro e mysql_error traz a mensagem de erro, então adicionamos 2 vezes cin.get() e um return 1 para que espere o usuário pressionar qualquer tecla para que finalize o programa.&lt;br /&gt;&lt;br /&gt;Então chegamos a parte de execução de uma consulta com o mysql_query(&amp;amp;DBCon,"select * from usuarios"), então esta na cara, variável de conexão e em seguida a nossa SQL de seleção, e também é claro um tratamento de erro.&lt;br /&gt;&lt;br /&gt;O pŕoximo passo então é armazenar o resultado completo da consulta em uma variável que é a variável result,   result = mysql_store_result(&amp;amp;DBCon), esta função é necessário somente passar a variável de conexão, e como padrão checar se não houve erros durante a seleção. Após tudo isto chegamos na parte em que os dados serão exibidos... para isto é necessário fazer um laço para percorrer todas as linhas que retornaram do banco de dados, por isso o while&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;onde a variável dados recebe a linha atual, ele se transforma numa array.&lt;br /&gt;&lt;br /&gt;É dentro do laço que é feito a conversão do campo ID que é string para int para que assim seja possível formatar o valor retornado com o printf.&lt;br /&gt;&lt;br /&gt;  istringstream buffer(dados[0]); // Cria a variável e já atribui o valor para ela&lt;br /&gt;  buffer &gt;&gt; ID; // Convert a string para int&lt;br /&gt;&lt;br /&gt;Portanto o índice 0 da array dados é a ID, então o indece 1 é o campo usuário, e assim segue para cada campo seguinte. A formatação usada no printf %02d é utilizada para que sempre seja impresso numero com 2 casas decimais... EX: 04&lt;br /&gt;&lt;br /&gt;Concluindo o código o mysql_free_result limpa da memória a pesquisa e o mysql_close encerra a conexão com o banco de dados. Bom, código feito, é hora de compilar, no linux para compilar (lembrando que este é um código C++) seria:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;g++ -c arquivo.cpp -lmysqlclient&lt;/li&gt;&lt;br /&gt;&lt;li&gt;g++ -o arquivo arquivo.o -lmysqlclient&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bom... Para que este -lmysqlclient?? Ele é usado para associar a libmysql-cliet-dev que nós baixamos antes ao nosso sistema.&lt;br /&gt;&lt;br /&gt;Então esta ai. Espero que tenham gostado. Até a próxima...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-6165671461411791600?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/6165671461411791600/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/acesso-banco-de-dados-mysql.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/6165671461411791600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/6165671461411791600'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/acesso-banco-de-dados-mysql.html' title='Acesso a banco de dados MySQL'/><author><name>Mauricio Sipmann</name><uri>https://profiles.google.com/109227542089338908174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bYk4TAwKESs/AAAAAAAAAAI/AAAAAAAAAAA/WwcRu_Z3xyg/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-4670759280274877224</id><published>2009-03-04T01:07:00.011-03:00</published><updated>2009-03-05T22:14:08.307-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Iniciante'/><title type='text'>Hello World multi-idiomas com alocação dinâmica de memória e ponteiros</title><content type='html'>Olá pessoal!&lt;br /&gt;&lt;br /&gt;Já vimos como desenvolver, sabemos o que precisamos tanto em Linux quanto em Windows para escrever/rodar nossos programas. É claro que se trata do modo mais básico, depois acabamos ajustando para aquilo que estamos desenvolvendo especificamente.&lt;br /&gt;&lt;br /&gt;Bom, no post anterior você viu como fazer um "hello world" em C e também em C++. Agora o código é C, e a partir dele iniciaremos postagens referentes a alguns assuntos chaves nessa linguagem:&lt;br /&gt;&lt;br /&gt;- Trabalhar com vetores e matrizes (bidimensionais e multidimensionais);&lt;br /&gt;&lt;br /&gt;- Trabalhar com alocação dinâmica de memória;&lt;br /&gt;&lt;br /&gt;- Trabalhar com strings.&lt;br /&gt;&lt;br /&gt;Sem mais delongas confira o código:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;Author: Helton Eduardo Ritter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;Date:2009-03-04&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;This program dinamic alloc memory to print "hello world" message&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &lt;stdio.h&gt; // necessary to printf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &lt;stdlib.h&gt; // necessary to malloc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &lt;time.h&gt; // necessary to time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; **texts; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// this is a pointer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i,j,k;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// dinamic allocate memory to = 4 languages, 20 space string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(i=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i++)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  texts[i] = malloc(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;20&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; * &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;sizeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// set texts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; texts[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] = &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Hello world!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// english&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; texts[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] = &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Hallo Velt!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// german&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; texts[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] = &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Ola mundo!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// portuguese&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; texts[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] = &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Holla mundo!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// Spanisch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// clear values&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; srand(time(NULL));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; k =  rand() % &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// print the random gretings&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; printf(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"%s"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,texts[k]); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// the declaration of main function say that this function "retun int value"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vamos as considerações que podem parecer básicas, mas que refrescam a mente de quem está já a algum tempo sem programar em C.&lt;br /&gt;&lt;br /&gt;- No início do arquivo principal, você deve incluir as bibliotecas das quais durante o código você vai usar funções. A biblioteca que normalmente está presente em todos os projetos é a "stdio.h" (standard I/O - input/output), ou seja sempre que precisar dar entrada ou saída em alguma informação, precisará incluir essa biblioteca.&lt;br /&gt;&lt;br /&gt;- Os delimitadores de comentários em C são os mesmos em muitas outras linguagens de programação. /* comentário aqui de multiplas linhas */ e também tem o // comentário de uma linha.&lt;br /&gt;&lt;br /&gt;- O main (embora seja o bloco principal) também é uma função e deve retornar um tipo de dados tal qual foi declarado, por isso daquele return antes de fechar o bloco do main (apenas evitar warning no compilador);&lt;br /&gt;&lt;br /&gt;- Na alocação de memória, o malloc retorna void, você deve passar como parâmetro para ele quanto de memória alocar, mas esse tamanho (bytes) dependem da arquitetura da maquina, logo um int em um processador 32 bits tem um tamanho diferente de um int em um processador 64, por isso que sempre fazermos o cálculo em cima de um tipo de dados e não passamos valores fixos;&lt;br /&gt;&lt;br /&gt;- O random no C não funciona muito bem se antes você não "limpar" ou mandar "zerar", se esquecer ele sorteará com muita frequencia o mesmo valor;&lt;br /&gt;&lt;br /&gt;- Por último e não menos importante temos o "%s" que é a "mascara" do printf que formata o valor passado a partir do segundo parâmetro nesta função. O "%s" no caso diz que o printf deverá formatar  o valor como uma string.&lt;br /&gt;&lt;br /&gt;Temos neste artigo vários tópicos abordados por alto, bem superficialmente. Em outro momento entraremos em detalhes de cada um.&lt;br /&gt;&lt;br /&gt;Até mais!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-4670759280274877224?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/4670759280274877224/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/hello-world-multi-idiomas-com-alocacao.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/4670759280274877224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/4670759280274877224'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/hello-world-multi-idiomas-com-alocacao.html' title='Hello World multi-idiomas com alocação dinâmica de memória e ponteiros'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-5708433508373312898</id><published>2009-03-03T19:35:00.006-03:00</published><updated>2009-03-17T10:11:56.399-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Iniciante'/><title type='text'>Compilando C/C++ no Linux e no Windows</title><content type='html'>Olá galera do Include C/C++!!&lt;br /&gt;&lt;br /&gt;Este é meu primeiro post aqui no ICC e pretendo mostrar o mais básico, como compilar um programa básico em C ou C++ no linux e no Windows.&lt;br /&gt;&lt;br /&gt;Primeiramente, vamos montar uma máquina com os softwares necessárias para programar em C/C++, caso o sistema operacional de sua preferência seja o Windows, a maneira mais fácil é baixar e instalar o &lt;a href="http://www.bloodshed.net/index.html"&gt;Bloodshed Dev-C++&lt;/a&gt;, é um programa gratuito e pode ser baixado &lt;a href="http://www.baixaki.com.br/download/dev-c-.htm"&gt;aqui&lt;/a&gt;, após instalar o Dev-C++ sua máquina Windows está pronta. Caso você utilize Linux, é um pouco mais fácil, a maioria das distribuições Linux já vem com o compilador GCC instalado ou então nos repositórios, bastando instalar, para este post estou utilizando &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu 8.10&lt;/a&gt; que pode ser baixado &lt;a href="http://ubuntu.c3sl.ufpr.br/releases/intrepid/ubuntu-8.10-desktop-i386.iso"&gt;aqui&lt;/a&gt;. Para deixar sua máquina com tudo em cima no Ubuntu recomendo executar os seguintes comandos para garantir o bom funcionamento.&lt;br /&gt;&lt;br /&gt;**Importante, é necessário estar logado como root ou ter permissões de administrador para executar estes comandos, se você estiver logado com outro usuário pode usar o comando "sudo -s" para adquirir privilégios de administrador.&lt;br /&gt;&lt;br /&gt;Atualizando o sistema:&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; apt-get update&lt;br /&gt; apt-get upgrade&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instalando o Buil-Essential&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; apt-get install build-essential&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Feito isso, temos nossa máquina devidamente equipada com os softwares para criar nosso primeiro programa em C/C++.&lt;br /&gt;&lt;br /&gt;Pra começar vamos criar um programa que imprima na tela a frase "Hello World!".&lt;br /&gt;&lt;br /&gt;Código em C:&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt; printf("Hello World!\n");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Código em C++:&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; std::cout &lt;&lt; "Hello World!\n" &lt;&lt; std::endl;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para compilar no Windows execute o Bloodshed Dev-C++, crie um novo arquivo, copie e cole o código-fonte no arquivo, salve como hello.c ou hello.cpp e pressione F9 para compilar e executar o programa. No Dev-C++ não tem diferença na compilação e execução do código-fonte, tanto para C quanto para C++, basta pressionar F9.&lt;br /&gt;&lt;br /&gt;Para compilar no Ubuntu abra qualquer editor de texto puro, pode ser o gedit, crie um novo arquivo, salve o arquivo com código em C como hello.c e o arquivo com código em C++ como hello.cpp, para compilar vá para o terminal (CTRL+ALT+F1) ou abra um terminal em modo design mesmo, basta pressionar as teclas ALT+F2 e executar "gnome-terminal" ou "xterm" para abrir um console de linha de comando, agora vem a parte divertida, vá até o diretório (pasta) onde você salvou os arquivos e execute os seguintes comandos para compilar o programa em C:&lt;br /&gt;&lt;br /&gt;Garantir permissão de Administrador&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; sudo -s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Compilar o programa&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; gcc -c hello.c&lt;br /&gt; gcc -o hello hello.o&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Executar o programa&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; ./hello&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;O programa imprimirá na tela a frase Hello World!&lt;br /&gt;&lt;br /&gt;Para compilar e executar o programa em C++, execute os mesmos passos do programa em C, mas na hora executar os comandos trocar o gcc por g++ e a extenção do arquivo para .cpp, fica assim:&lt;br /&gt;&lt;br /&gt;Garantir permissão de Administrador&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; sudo -s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Compilar o programa&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; g++ -c hello.cpp&lt;br /&gt; g++ -o hello hello.o&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Executar o programa&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt; ./hello&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por enquanto é isso, até a próxima!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-5708433508373312898?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/5708433508373312898/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/compilando-cc-no-linux-e-no-windows.html#comment-form' title='16 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5708433508373312898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/5708433508373312898'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/compilando-cc-no-linux-e-no-windows.html' title='Compilando C/C++ no Linux e no Windows'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4850257962364430207.post-3785041759835305998</id><published>2009-03-03T09:03:00.000-03:00</published><updated>2009-03-03T16:13:15.866-03:00</updated><title type='text'>Bem vindo ao Include C/C++</title><content type='html'>&lt;p class="MsoNormal"&gt;Olá ! caro amigo(a)&lt;br /&gt;&lt;br /&gt;Este é o post inaugural do mais novo e revolucionário blog dedicado a linguagem de programação C/C++ e seus entornos (bibliotecas, compiladores...).&lt;br /&gt;&lt;br /&gt;Temos um time de geeks tarados por tecnologia e programação, logo  surgirão coisas muito loucas aqui no blog,  do "hello world" a sockets, rede, banco de dados, talvez alguma coisa de jogos, OpenGL, GTK e o que mais a criatividade permitir.&lt;br /&gt;&lt;br /&gt;Assine nosso feed e nos acompanhe nessa saga fantástica! Não percam os próximos episódios.&lt;br /&gt;&lt;br /&gt;Até mais&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4850257962364430207-3785041759835305998?l=includec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://includec.blogspot.com/feeds/3785041759835305998/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://includec.blogspot.com/2009/03/bem-vindo-ao-include-c.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3785041759835305998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4850257962364430207/posts/default/3785041759835305998'/><link rel='alternate' type='text/html' href='http://includec.blogspot.com/2009/03/bem-vindo-ao-include-c.html' title='Bem vindo ao Include C/C++'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-29Vi0n0ahOg/TzhDcRAL9YI/AAAAAAAABB0/FiMn1WrlxiE/s220/3132010_300.jpg'/></author><thr:total>0</thr:total></entry></feed>
