<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;CEINQn0-eSp7ImA9WhRaE0U.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201</id><updated>2012-02-16T05:56:33.351-03:00</updated><category term="Python" /><category term="Olimpíadas de Programação" /><category term="Notícias" /><category term="Dicas" /><category term="Cursos" /><category term="Linux" /><category term="Tirinha Nerd" /><category term="Problemas" /><category term="Vídeos" /><category term="Project Euler" /><category term="Matemática" /><category term="Humor" /><category term="Livros" /><category term="Downloads" /><category term="Java" /><category term="Pascal" /><category term="Olá Pascal" /><category term="Curiosidades" /><title>Olá Mundo!</title><subtitle type="html">Diga um Olá para o Mundo da programação!</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.ola-mundo.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>107</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ola-mundo" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ola-mundo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/ola-mundo" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fola-mundo" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry gd:etag="W/&quot;DkQERXs4eip7ImA9WhZSEEw.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-5257332863673041872</id><published>2011-03-23T17:15:00.004-03:00</published><updated>2011-03-24T21:51:44.532-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-24T21:51:44.532-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Olimpíadas de Programação" /><category scheme="http://www.blogger.com/atom/ns#" term="Problemas" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>O problema dos romanos</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wrq33tmwHXvNpSTNApAqq7gXT-s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wrq33tmwHXvNpSTNApAqq7gXT-s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wrq33tmwHXvNpSTNApAqq7gXT-s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wrq33tmwHXvNpSTNApAqq7gXT-s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Olá, pessoal. Quanto tempo, hein?&lt;br /&gt;
Bom, após vários meses sem postar nada, aqui estou eu de novo pra falar sabe do que? Advinha, a resolução de um probleminha com o auxílio da linguagem Python.&lt;br /&gt;
O negócio é o seguinte: lá na Roma antiga, ao invés do pessoal usar os algarismos arábicos (i.e. 1, 2, ...), eles tinham sua própria forma de representar os números, por meio dos algarismos romanos. Daí, surgiu a ideia de eu criar uma função que recebesse um número inteiro como argumento e retornasse o seu correspondente romano.&lt;br /&gt;
Após algumas horas quebrando a cabeça, finalmente cheguei na lógica mais pythônica.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: python"&gt;#!/usr/bin/python3.1
# coding: utf-8

__author__ = 'Luiz Augusto de M. Morais'
__date__ = '23.03.2011'
__version__ = '1.0.1'
__license__ = 'GPL'

romanos = {0: '', 1: 'I', 5: 'V', 10: 'X', 50: 'L', 100: 'C', 500: 'D', 1000: 'M'}

def converter(numero):
    """converter(numero) -&amp;gt; string
    A função converter recebe um número entre 0 e 4000 e o converte para
    seu número romano correspondente."""
    if 0 &amp;lt; numero &amp;lt;= 3999:
        romano = ''
        tamanho = len(str(numero)) - 1
        for algarismo in decompor(numero, tamanho):
            romano += romanizar(algarismo, 10 ** tamanho)
            tamanho -= 1
        return romano
    else:
        print('O número tem que estar no intervalo: 0 &amp;lt; numero &amp;lt;= 3999')


def decompor(numero, tamanho):
    """decompor(numero, tamanho) -&amp;gt; lista de algarismos
    A função decompor recebe um número como parâmetro e retorna as partes
    deste número (i.e. dezena, centena, etc.) em forma de lista.
    O parâmetro tamanho se refere ao tamanho do número (e.g. 100 -&amp;gt; 3)"""
    algarismos = []
    for digito in str(numero):
        algarismos.append(int(digito) * 10 ** tamanho)
        tamanho -= 1
    return algarismos
        

def romanizar(numero, ordem=1):
    """romanizar(numero [, ordem]) -&amp;gt; string
    A função romanizar recebe um número inteiro como parâmetro e
    retorna o número romano correspondente."""
    if numero in romanos.keys():
        romano = romanos[numero]
    elif numero &amp;lt; 4 * ordem:
        romano = numero // ordem * romanos[ordem]
    elif numero == 4 * ordem:
        romano = romanos[1 * ordem] + romanos[5 * ordem]
    elif numero &amp;lt; 9 * ordem:
        romano = romanos[5 * ordem] + (numero // ordem - 5) * romanos[ordem]
    elif numero == 9 * ordem:
        romano = romanos[ordem] + romanos[ordem * 10]
    return romano&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-5257332863673041872?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5257332863673041872?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5257332863673041872?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2011/03/o-problema-dos-romanos.html" title="O problema dos romanos" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CUQMQnszcCp7ImA9Wx9QEkw.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-4813456905643183847</id><published>2010-12-24T14:56:00.000-03:00</published><updated>2010-12-24T14:56:23.588-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-24T14:56:23.588-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Curiosidades" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Qual a diferença entre #!/usr/bin/python e #!/usr/bin/env python?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/INJ5KzU1uU9oZjjd5IUIieh1iRE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INJ5KzU1uU9oZjjd5IUIieh1iRE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/INJ5KzU1uU9oZjjd5IUIieh1iRE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INJ5KzU1uU9oZjjd5IUIieh1iRE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i1204.photobucket.com/albums/bb408/luizaugustomm/env_python.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://i1204.photobucket.com/albums/bb408/luizaugustomm/env_python.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Para quem utiliza o Linux como SO e programa em Python, já deve estar familiarizado em colocar um comentário com um caminho para o interpretador.&lt;br /&gt;
&lt;br /&gt;
Este comentário especial na primeira linha faz com que o computador saiba onde está o interpretador da linguagem Python.&lt;br /&gt;
&lt;br /&gt;
Mas, se você já prestou atenção, alguns programadores utilizam&amp;nbsp;&lt;i&gt;#!/usr/bin/python&lt;/i&gt;&amp;nbsp;e outros &lt;i&gt;#!/usr/bin/env python&lt;/i&gt;. Qual dos dois está certo? E qual a diferença entre eles? Eu também já fiz estas perguntas.&lt;br /&gt;
&lt;br /&gt;
No primeiro caso, quando utilizamos&amp;nbsp;&lt;i&gt;#!/usr/bin/python&lt;/i&gt;, estamos especificando a localização do interpretador Python em sua máquina. O caminho está dizendo que o interpretador Python está dentro da pasta &lt;i&gt;/usr/bin&lt;/i&gt;, que é onde geralmente ele está.&lt;br /&gt;
&lt;br /&gt;
Mas, imagine se você fosse executar seu script em uma máquina que o interpretador estivesse instalado em&lt;i&gt; /bin&lt;/i&gt;? O seu script simplesmente não iria funcionar, pois o caminho para o interpretador é diferente.&amp;nbsp;O comando &lt;i&gt;env&lt;/i&gt;&amp;nbsp;resolve este problema.&lt;br /&gt;
&lt;br /&gt;
Quando utilizamos&amp;nbsp;&lt;i&gt;#!/usr/bin/env python&lt;/i&gt;, estamos invocando o comando &lt;i&gt;env, &lt;/i&gt;que procura o caminho do comando passado como argumento (i. e. python) nas variáveis de ambiente para poder executá-lo. Ou seja, se o interpretador estiver em &lt;i&gt;/usr/local/bin, /bin/, /usr/bin &lt;/i&gt;ou em qualquer outro caminho, o comando &lt;i&gt;env&lt;/i&gt; irá encontrá-lo e executá-lo, não importa onde ele esteja.&lt;br /&gt;
&lt;br /&gt;
Portanto, quando for criar scripts em Python no Linux, escolha sempre a segunda opção para não ter dores de cabeça posteriormente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-4813456905643183847?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4813456905643183847?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4813456905643183847?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/12/qual-diferenca-entre-usrbinpython-e.html" title="Qual a diferença entre #!/usr/bin/python e #!/usr/bin/env python?" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DEACQXk-eyp7ImA9Wx9RE0k.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-2636656230956681652</id><published>2010-12-14T14:12:00.000-03:00</published><updated>2010-12-14T14:12:40.753-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-14T14:12:40.753-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Matemática" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Matrizes em Python</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jnmn0nduPYa19cPNiV_c-8dUBnQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jnmn0nduPYa19cPNiV_c-8dUBnQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jnmn0nduPYa19cPNiV_c-8dUBnQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jnmn0nduPYa19cPNiV_c-8dUBnQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Olá, pessoal. Depois de longos dias sem posts, aqui estou eu transmitindo mais um pouco do meu ínfimo conhecimento sobre Python a vocês.&lt;br /&gt;
&lt;br /&gt;
Hoje nós vamos estudar maneiras de como criar e manipular matrizes em Python. Primeiramente, quero dizer que não vou utilizar o módulo &lt;a href="http://www.scipy.org/"&gt;SciPy&lt;/a&gt; e sim os artifícios nativos da linguagem, pois este post tem um caráter didático. Porém, se você estiver interessado em aplicações mais "profissionais", indico utilizar o módulo citado anteriormente, pois ele é bastante eficiente.&lt;br /&gt;
&lt;h4&gt;Revisando matrizes...&lt;/h4&gt;Na matemática, uma matriz é uma tabela composta de &lt;b&gt;m&lt;/b&gt; x &lt;b&gt;n&lt;/b&gt;&amp;nbsp;elementos, onde &lt;b&gt;m&lt;/b&gt;&amp;nbsp;é o número de linhas e &lt;b&gt;n&lt;/b&gt;&amp;nbsp;o de colunas.&lt;br /&gt;
Existem vários tipos de matrizes. Veja abaixo os principais:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Matriz quadrada:&lt;/b&gt; o número de linhas é igual ao número de colunas.&lt;br /&gt;
Ex.:&lt;br /&gt;
[3, 1, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[1, 2, 3,&lt;br /&gt;
&amp;nbsp;2, 5] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4, 5, 6,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7, 8, 9]&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Matriz transposta:&amp;nbsp;&lt;/b&gt;é uma matriz onde todos os elementos das linhas de M são transformados em colunas de Mt.&lt;br /&gt;
&lt;u&gt;Ex.:&lt;/u&gt;&lt;br /&gt;
[1, 2, 3, &amp;nbsp; &amp;nbsp; &amp;nbsp;==&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;[1, 4,&lt;br /&gt;
&amp;nbsp;4, 5, 6] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2, 5,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3, 6]&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Matriz identidade:&lt;/b&gt;&amp;nbsp;é uma matriz quadrada onde todos os elementos da diagonal principal são iguais a 1 e as demais posições iguais a 0.&lt;br /&gt;
&lt;u&gt;Ex.:&lt;/u&gt;&lt;br /&gt;
[1, 0, 0,&lt;br /&gt;
&amp;nbsp;0, 1, 0,&lt;br /&gt;
&amp;nbsp;0, 0, 1]&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Operações com matrizes&lt;/h4&gt;&lt;h5&gt;Soma de matrizes&lt;/h5&gt;&lt;div&gt;[1, 0, &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;[2, 3, &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp;[3, 3,&lt;/div&gt;&lt;div&gt;&amp;nbsp;5, 2] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4, 2] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 9, 4]&lt;/div&gt;&lt;h5&gt;Subtração de matrizes&lt;/h5&gt;&lt;div&gt;&lt;div&gt;[1, 0, &amp;nbsp; &amp;nbsp; &amp;nbsp;- &amp;nbsp; &amp;nbsp; &amp;nbsp; [2, 3, &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp;[-1, -3,&lt;/div&gt;&lt;div&gt;&amp;nbsp;5, 2] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4, 2] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1, 0]&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Multiplicação por escalar&lt;/h5&gt;&lt;div&gt;&lt;div&gt;2 &amp;nbsp; * &amp;nbsp; [1, 0, &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp; [2, 0,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5, 2] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10, 4]&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Multiplicação de matrizes&lt;/h5&gt;&lt;div&gt;Clique&amp;nbsp;&lt;a href="http://www.somatematica.com.br/emedio/matrizes/matrizes4.php"&gt;aqui&lt;/a&gt;&amp;nbsp;para ver exemplos de multiplicação de matrizes.&lt;/div&gt;&lt;div&gt;Se quiser saber mais sobre matrizes, clique &lt;a href="http://www.algosobre.com.br/matematica/matrizes-e-determinantes-i.html"&gt;aqui&lt;/a&gt;.&lt;/div&gt;&lt;h4&gt;Como utilizar matrizes em Python?&lt;/h4&gt;&lt;h5&gt;Listas&lt;/h5&gt;&lt;div&gt;A forma mais rápida e fácil de utilizar matrizes em Python é criando listas aninhadas.&lt;/div&gt;&lt;div&gt;Veja o exemplo abaixo da representação de uma matriz 3 x 2 em Python.&lt;/div&gt;&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz3x2 = [[4, 5, 1],
             [3, 2, 7]]&lt;/pre&gt;&lt;br /&gt;
Como vocês podem ver, esta matriz nada mais é do que uma lista que contém listas. Estas &lt;b&gt;listas mais internas&lt;/b&gt; estão representando as &lt;b&gt;linhas&lt;/b&gt;&amp;nbsp;e as &lt;b&gt;colunas&lt;/b&gt; são representadas pelos &lt;b&gt;elementos dos índices&lt;/b&gt; de cada linha.&lt;br /&gt;
&lt;br /&gt;
Nesta matriz, as linhas são selecionadas pelo primeiro e as colunas pelo segundo índices.&lt;br /&gt;
Por exemplo, se eu quiser selecionar a segunda linha da matriz, utilizo o comando abaixo:&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz3x2[1]
#Saída: [3, 2, 7]&lt;/pre&gt;Coloco o índice 1, ao invés de 2, pois os índices das listas em Python começam do número 0.&lt;br /&gt;
&lt;br /&gt;
Mas, se eu quiser acessar um elemento específico da matriz, tenho que utilizar o índice da linha e o da coluna:&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz3x2[1][2]
#Saída: 7&lt;/pre&gt;&lt;br /&gt;
&lt;h5&gt;List Comprehensions&lt;/h5&gt;&lt;div&gt;Se você ainda não sabe usar list comprehensions, clique &lt;a href="http://www.python.org/dev/peps/pep-0202/"&gt;aqui&lt;/a&gt; e &lt;a href="http://programeempython.blog.br/2010/07/estruturas-de-dados-em-python-listas_27.html"&gt;aqui&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Você pode utilizar este artifício em Python para extrair uma coluna específica de uma matriz, por exemplo.&lt;/div&gt;&lt;div&gt;&lt;u&gt;Ex.:&lt;/u&gt;&lt;/div&gt;&lt;pre class="brush: python"&gt;coluna2 = [linha[1] for linha in matriz3x2]
print coluna2
#Saída: [5, 2]&lt;/pre&gt;&lt;br /&gt;
Um outro exemplo de list comprehensions em matrizes é capturar os elementos da diagonal principal.&lt;br /&gt;
&lt;u&gt;Ex.:&lt;/u&gt;&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz2x2 = [[4, 5],
             [3, 2]]
             
diagonal_principal = [matriz[i][i] for i in (0, 1)]
print diagonal_principal
#Saída: [4, 2]&lt;/pre&gt;&lt;h5&gt;Dicionários&lt;/h5&gt;Existe ainda outra forma de manipular matrizes em Python, é por meio de dicionários.&lt;br /&gt;
Esta abordagem é mais utilizada quando a matriz é esparsa, ou seja, a maioria dos seus elementos é igual a zero.&lt;br /&gt;
Poderíamos ter uma matriz usando listas assim:&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz4 = [[4, 0, 0, 0, ],
             [0, 0, 0, 2, ],
             [0, 6, 0, 0, ],
             [0, 0, 0, 3, ]]

print matriz4[1][3]
#Saída: 2
&lt;/pre&gt;Perceba que a maioria dos elementos da matriz são zeros. Ela pode ser otimizada se forem usados dicionários ao invés de listas.&lt;br /&gt;
&lt;u&gt;Ex.:&lt;/u&gt;&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz4dic = {(0,0): 4, (1, 3): 2, (2, 1): 6, (3,3): 3}
print matriz4dic[1, 3]
#Saída: 2&lt;/pre&gt;Esta matriz tem os mesmo elementos da matriz anterior, retirando somente os zeros.&lt;br /&gt;
&lt;br /&gt;
Porém, se você tentar acessar uma posição onde não existe chave, será lançado um erro:&lt;br /&gt;
&lt;pre class="brush: python"&gt;&amp;gt;&amp;gt;&amp;gt; matriz4dic[0,1]
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
KeyError: (0, 1)&lt;/pre&gt;&lt;br /&gt;
Para resolver isto, você só precisa utilizar o método get():&lt;br /&gt;
&lt;pre class="brush: python"&gt;matriz4dic.get((0,1), 0)
0&lt;/pre&gt;&lt;br /&gt;
O primeiro argumento é a posição do elemento na matriz e o segundo argumento é o valor que deve ser retornado caso a chave requerida não exista. Pronto, nosso problema está resolvido.&lt;br /&gt;
&lt;br /&gt;
Espero que vocês tenham gostado das dicas. Qualquer dúvida, deixem um comentário abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Referências:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://olamundo0.files.wordpress.com/2010/07/aprendacomputaocompython.pdf"&gt;Aprenda Computação com Python&lt;/a&gt;&lt;br /&gt;
Learning Python, 3.ed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-2636656230956681652?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/2636656230956681652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/2636656230956681652?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/12/matrizes-em-python.html" title="Matrizes em Python" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;Dk8EQXo_fyp7ImA9Wx9TE0Q.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-7862149275831616716</id><published>2010-11-22T00:00:00.001-03:00</published><updated>2010-11-22T00:00:00.447-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T00:00:00.447-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #33</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kvAW3UDOE5li7X77VHK2HpGGPto/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kvAW3UDOE5li7X77VHK2HpGGPto/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kvAW3UDOE5li7X77VHK2HpGGPto/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kvAW3UDOE5li7X77VHK2HpGGPto/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/08/tn33.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="331" src="http://olamundo0.files.wordpress.com/2010/08/tn33.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://www.entreveronaweb.com/"&gt;Entreveronaweb.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-7862149275831616716?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7862149275831616716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7862149275831616716?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/11/tirinha-nerd-33.html" title="Tirinha Nerd #33" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CkcEQ3wzeyp7ImA9Wx5aF0Q.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-382059727656711110</id><published>2010-11-15T00:00:00.000-03:00</published><updated>2010-11-15T00:00:02.283-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-15T00:00:02.283-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #32</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oIXgdla51_YwpfULeLP0YLuPUQ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oIXgdla51_YwpfULeLP0YLuPUQ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oIXgdla51_YwpfULeLP0YLuPUQ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oIXgdla51_YwpfULeLP0YLuPUQ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn32.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://olamundo0.files.wordpress.com/2010/07/tn32.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://vidadesuporte.com.br/"&gt;Vida de Suporte&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-382059727656711110?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/382059727656711110?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/382059727656711110?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/11/tirinha-nerd-32.html" title="Tirinha Nerd #32" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;D0UEQHg4cSp7ImA9Wx5aEUU.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-4831756762864198101</id><published>2010-11-08T00:00:00.000-03:00</published><updated>2010-11-08T00:00:01.639-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-08T00:00:01.639-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #31</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GmU-y4265sGYK1rb5QwljCN8bQI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GmU-y4265sGYK1rb5QwljCN8bQI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GmU-y4265sGYK1rb5QwljCN8bQI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GmU-y4265sGYK1rb5QwljCN8bQI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://olamundo0.files.wordpress.com/2010/07/tn31.jpg" width="334" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://geekandpoke.typepad.com/"&gt;Geek &amp;amp; Poke&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-4831756762864198101?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4831756762864198101?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4831756762864198101?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/11/tirinha-nerd-31.html" title="Tirinha Nerd #31" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CkMEQH8_eSp7ImA9Wx5bFUU.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-8135394289632292368</id><published>2010-11-01T00:00:00.001-03:00</published><updated>2010-11-01T00:00:01.141-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T00:00:01.141-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #30</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JaR-fbwz7s-nTYvBNBoZPDnuuo8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JaR-fbwz7s-nTYvBNBoZPDnuuo8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JaR-fbwz7s-nTYvBNBoZPDnuuo8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JaR-fbwz7s-nTYvBNBoZPDnuuo8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn30.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://olamundo0.files.wordpress.com/2010/07/tn30.jpg" width="450" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://geekandpoke.typepad.com/"&gt;Geek &amp;amp; Poke&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-8135394289632292368?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/8135394289632292368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/8135394289632292368?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/11/tirinha-nerd-30.html" title="Tirinha Nerd #30" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DkUDRnk9fCp7ImA9Wx5bFUs.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-5911355804354194117</id><published>2010-10-31T18:17:00.001-03:00</published><updated>2010-10-31T19:31:17.764-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-31T19:31:17.764-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Otimizador de Rotas, uma implementação do algoritmo de Dijkstra</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-gBPxZKwx9qzIZib1TltYqFyse0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-gBPxZKwx9qzIZib1TltYqFyse0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-gBPxZKwx9qzIZib1TltYqFyse0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-gBPxZKwx9qzIZib1TltYqFyse0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_P2BnBpOt0sw/TM3Rp81fVFI/AAAAAAAAAPg/fEUOx4UteME/s1600/grafo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_P2BnBpOt0sw/TM3Rp81fVFI/AAAAAAAAAPg/fEUOx4UteME/s320/grafo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Olá, pessoal, sentiram minha falta? Passei vários meses sem escrever no blog, pois estava muito ocupado com projetos, pesquisas e preparando minha apresentação para o &lt;a href="http://www.pythonbrasil.org.br/2010"&gt;PythonBrasil[6]&lt;/a&gt; que, aliás, foi excelente.&lt;br /&gt;
&lt;br /&gt;
Para quem não sabe, eu fui um dos palestrantes no maior evento brasileiro sobre Python, o PythonBrasil. O tema da minha palestra foi "&lt;a href="http://www.pythonbrasil.org.br/2010/sobre-o-evento/inscricoes/e6712a086ea330ec31dedf6907bb0c0f"&gt;A implementação do algoritmo de Dijkstra em Python para calcular a distância mínima entre cidades&lt;/a&gt;". &amp;nbsp;Na palestra, falei sobre o que é o algoritmo de Dijkstra, para que ele serve e mostrei o software que eu desenvolvi baseado neste algoritmo, o &lt;b&gt;Otimizador de Rotas&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Para quem não teve a oportunidade de assistir à palestra, poderá ver os slides que eu utilizei.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;div id="__ss_5628120" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/LuizAugustoMac%C3%AAdoMorais/otimizador-de-rotas-pythonbrasil6" title="Otimizador de Rotas - PythonBrasil[6]"&gt;Otimizador de Rotas - PythonBrasil[6]&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse5628120" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=palestrapythonbrasil-101031162211-phpapp01&amp;stripped_title=otimizador-de-rotas-pythonbrasil6&amp;userName=LuizAugustoMacêdoMorais" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5628120" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=palestrapythonbrasil-101031162211-phpapp01&amp;stripped_title=otimizador-de-rotas-pythonbrasil6&amp;userName=LuizAugustoMacêdoMorais" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/LuizAugustoMac%C3%AAdoMorais"&gt;Luiz Augusto Macêdo Morais&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
O Otimizador de Rotas utiliza o algoritmo de Dijkstra para calcular a distância mínima entre duas cidades . Ele serve para ajudar em viagens onde o condutor não conhece o caminho mais curto e deseja economizar alguns quilômetros.&lt;br /&gt;
&lt;br /&gt;
O projeto está apenas iniciando e o programa ainda não está totalmente funcional, pois o número de cidades ainda é pequeno e só podemos calcular a distância de cidades do mesmo Estado. Porém, com a sua ajuda, este programa pode crescer.&lt;br /&gt;
&lt;br /&gt;
Ele está hospedado no BitBucket, se você quiser olhar o código, clique &lt;a href="https://bitbucket.org/luizaugustomm/otimizador-de-rotas/"&gt;aqui&lt;/a&gt;. Está tudo meio desorganizado porque eu ainda não estou familiarizado com o BitBucket, mas os códigos estão todos comentados.&lt;br /&gt;
&lt;br /&gt;
O programa é feito em Python + GTK e atualmente só foi testado no Linux. Então, se algum usuário do Windows/Mac quiser testá-lo, fique à vontade.&lt;br /&gt;
&lt;br /&gt;
Seguem alguns screenshots do programa:&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_P2BnBpOt0sw/TM3aJkmE59I/AAAAAAAAAPk/kYzLauAC7J8/s1600/Captura_de_tela.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_P2BnBpOt0sw/TM3aJkmE59I/AAAAAAAAAPk/kYzLauAC7J8/s400/Captura_de_tela.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Janela principal&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P2BnBpOt0sw/TM3aPdlU_sI/AAAAAAAAAPo/grmGYib4UoY/s1600/Captura_de_tela-1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="156" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TM3aPdlU_sI/AAAAAAAAAPo/grmGYib4UoY/s400/Captura_de_tela-1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Resultado simples&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P2BnBpOt0sw/TM3aSsVm3eI/AAAAAAAAAPs/uoO3FA2jFW0/s1600/Captura_de_tela-2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TM3aSsVm3eI/AAAAAAAAAPs/uoO3FA2jFW0/s400/Captura_de_tela-2.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Resultado completo&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div&gt;Pessoal, o programa ainda está cheio de falhas e com poucas funcionalidades, mas espero que daqui para o final do ano ele esteja funcional.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Se você quer ajudar no desenvolvimento do software ou tem alguma dúvida ou opinião, envie um e-mail para &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;contato@ola-mundo.com&lt;/span&gt; ou me adicione no &lt;a href="http://twitter.com/luizaugustomm"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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/6199904129053985201-5911355804354194117?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5911355804354194117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5911355804354194117?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/10/otimizador-de-rotas-uma-implementacao.html" title="Otimizador de Rotas, uma implementação do algoritmo de Dijkstra" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_P2BnBpOt0sw/TM3Rp81fVFI/AAAAAAAAAPg/fEUOx4UteME/s72-c/grafo.png" height="72" width="72" /></entry><entry gd:etag="W/&quot;D0EEQXc-fyp7ImA9Wx5UGUo.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-3466015067471618445</id><published>2010-10-25T00:00:00.001-03:00</published><updated>2010-10-25T00:00:00.957-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-25T00:00:00.957-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #29</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TrnPiZ1JeForiG_Y1byR11arE2M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TrnPiZ1JeForiG_Y1byR11arE2M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TrnPiZ1JeForiG_Y1byR11arE2M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TrnPiZ1JeForiG_Y1byR11arE2M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn29.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://olamundo0.files.wordpress.com/2010/07/tn29.jpg" width="450" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://geekandpoke.typepad.com/"&gt;Geek &amp;amp; Poke&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-3466015067471618445?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3466015067471618445?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3466015067471618445?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/10/tirinha-nerd-29.html" title="Tirinha Nerd #29" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;Ck8EQ38ycCp7ImA9Wx5UE0o.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-5617441433894633624</id><published>2010-10-18T00:00:00.001-03:00</published><updated>2010-10-18T00:00:02.198-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-18T00:00:02.198-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #28</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vvRet2tOJ_Pw9HGXxgEt39Gc-Jk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vvRet2tOJ_Pw9HGXxgEt39Gc-Jk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vvRet2tOJ_Pw9HGXxgEt39Gc-Jk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vvRet2tOJ_Pw9HGXxgEt39Gc-Jk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn28.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-5617441433894633624?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5617441433894633624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5617441433894633624?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/10/tirinha-nerd-28.html" title="Tirinha Nerd #28" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DEcERX8_eCp7ImA9Wx5VF0s.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-59344687701583006</id><published>2010-10-11T00:00:00.001-03:00</published><updated>2010-10-11T00:00:04.140-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-11T00:00:04.140-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #27</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b7RiWgP6Qg098jgHl5kQhwSaBtE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b7RiWgP6Qg098jgHl5kQhwSaBtE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b7RiWgP6Qg098jgHl5kQhwSaBtE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b7RiWgP6Qg098jgHl5kQhwSaBtE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn27.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-59344687701583006?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/59344687701583006?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/59344687701583006?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/10/tirinha-nerd-27.html" title="Tirinha Nerd #27" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;C0UEQXY5eSp7ImA9Wx5VEUs.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-6348530362284585020</id><published>2010-10-04T00:00:00.000-03:00</published><updated>2010-10-04T00:00:00.821-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-04T00:00:00.821-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #26</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ubv-x7Y9xVR-nqqKH1mhCixu7fQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubv-x7Y9xVR-nqqKH1mhCixu7fQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ubv-x7Y9xVR-nqqKH1mhCixu7fQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubv-x7Y9xVR-nqqKH1mhCixu7fQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn26.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn26.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://geekandpoke.typepad.com/"&gt;Geek &amp;amp; Poke&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-6348530362284585020?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/6348530362284585020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/6348530362284585020?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/10/tirinha-nerd-26.html" title="Tirinha Nerd #26" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DEMEQng-fSp7ImA9Wx5WFUg.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-5226483095585871739</id><published>2010-09-27T00:00:00.000-03:00</published><updated>2010-09-27T00:00:03.655-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T00:00:03.655-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #25</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2kA5ISJbRK4Uwhuq6SKLdnhiyCI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kA5ISJbRK4Uwhuq6SKLdnhiyCI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2kA5ISJbRK4Uwhuq6SKLdnhiyCI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kA5ISJbRK4Uwhuq6SKLdnhiyCI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn25.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn25.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://vidadesuporte.com.br/"&gt;Vida de Suporte&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-5226483095585871739?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5226483095585871739?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/5226483095585871739?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/09/tirinha-nerd-25.html" title="Tirinha Nerd #25" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;C0EEQX84fip7ImA9Wx5XGUg.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-382203508909913311</id><published>2010-09-20T00:00:00.000-03:00</published><updated>2010-09-20T00:00:00.136-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-20T00:00:00.136-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #24</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y2jDLaHqJ136n0Qsx_gIaoWIAu8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y2jDLaHqJ136n0Qsx_gIaoWIAu8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y2jDLaHqJ136n0Qsx_gIaoWIAu8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y2jDLaHqJ136n0Qsx_gIaoWIAu8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn24.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-382203508909913311?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/382203508909913311?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/382203508909913311?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/09/tirinha-nerd-24.html" title="Tirinha Nerd #24" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DE8EQXY8eyp7ImA9Wx5XE0k.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-1762551196204186428</id><published>2010-09-13T00:00:00.001-03:00</published><updated>2010-09-13T00:00:00.873-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-13T00:00:00.873-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #23</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6Mk5eCLG6PSbLcQkMZjVvi-d_sg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6Mk5eCLG6PSbLcQkMZjVvi-d_sg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6Mk5eCLG6PSbLcQkMZjVvi-d_sg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6Mk5eCLG6PSbLcQkMZjVvi-d_sg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn23.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-1762551196204186428?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/1762551196204186428?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/1762551196204186428?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/09/tirinha-nerd-23.html" title="Tirinha Nerd #23" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CEcEQ3k9fSp7ImA9Wx5QF0k.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-4281801473316885800</id><published>2010-09-06T00:00:00.001-03:00</published><updated>2010-09-06T00:00:02.765-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-06T00:00:02.765-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #22</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/poELAS18mllSytYK4Ga-Yb1CAsU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/poELAS18mllSytYK4Ga-Yb1CAsU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/poELAS18mllSytYK4Ga-Yb1CAsU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/poELAS18mllSytYK4Ga-Yb1CAsU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn22.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://vidadesuporte.com.br/"&gt;Vida de Suporte&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-4281801473316885800?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4281801473316885800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/4281801473316885800?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/09/tirinha-nerd-22.html" title="Tirinha Nerd #22" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DkEFRXozeCp7ImA9Wx5XGUg.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-7163658539973425861</id><published>2010-08-30T00:00:00.001-03:00</published><updated>2010-09-20T00:50:14.480-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-20T00:50:14.480-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #21</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G1ieRAhOl0YxWG-xr9D7O_fm44M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G1ieRAhOl0YxWG-xr9D7O_fm44M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G1ieRAhOl0YxWG-xr9D7O_fm44M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G1ieRAhOl0YxWG-xr9D7O_fm44M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://olamundo0.files.wordpress.com/2010/07/tn21.jpg" width="451" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://geekandpoke.typepad.com/"&gt;Geek &amp;amp; Poke&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-7163658539973425861?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7163658539973425861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7163658539973425861?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/tirinha-nerd-21.html" title="Tirinha Nerd #21" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CEMEQn0zcCp7ImA9Wx5RFU4.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-1323863587511392907</id><published>2010-08-23T00:00:00.000-03:00</published><updated>2010-08-23T00:00:03.388-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-23T00:00:03.388-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #20</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w8sNw08NJeuy7E4qI3YPgj1AsXM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w8sNw08NJeuy7E4qI3YPgj1AsXM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w8sNw08NJeuy7E4qI3YPgj1AsXM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w8sNw08NJeuy7E4qI3YPgj1AsXM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn20.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-1323863587511392907?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/1323863587511392907?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/1323863587511392907?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/tirinha-nerd-20.html" title="Tirinha Nerd #20" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;DUEEQXc8eSp7ImA9Wx5SGU8.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-3580551462579747618</id><published>2010-08-16T00:00:00.001-03:00</published><updated>2010-08-16T00:00:00.971-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-16T00:00:00.971-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #19</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BzXfBwSxHibTaIuQJRmmC9qnfe4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BzXfBwSxHibTaIuQJRmmC9qnfe4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BzXfBwSxHibTaIuQJRmmC9qnfe4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BzXfBwSxHibTaIuQJRmmC9qnfe4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn19.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn19.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte: &lt;a href="http://vidadesuporte.com.br/"&gt;Vida de Suporte&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-3580551462579747618?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3580551462579747618?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3580551462579747618?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/tirinha-nerd-19.html" title="Tirinha Nerd #19" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;D0QDQHw5fCp7ImA9Wx5SFUk.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-7910781323699061615</id><published>2010-08-11T13:48:00.001-03:00</published><updated>2010-08-11T13:49:31.224-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-11T13:49:31.224-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Os acentos estão de volta ao AdobeAir2</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YYFHyk8Jn2DZATLfQBZ57eYk34g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YYFHyk8Jn2DZATLfQBZ57eYk34g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YYFHyk8Jn2DZATLfQBZ57eYk34g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YYFHyk8Jn2DZATLfQBZ57eYk34g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_P2BnBpOt0sw/TGLMpncOm7I/AAAAAAAAAOs/64mC28eAFlc/s1600/air-debugged.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="293" src="http://3.bp.blogspot.com/_P2BnBpOt0sw/TGLMpncOm7I/AAAAAAAAAOs/64mC28eAFlc/s320/air-debugged.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Há algum tempo, eu escrevi aqui no blog um &lt;a href="http://www.ola-mundo.com/2010/06/volte-ter-acentos-no-seesmic-e.html"&gt;post ensinando a corrigir o erro dos acentos no AdobeAir2&lt;/a&gt;. Este erro fazia com que todos os aplicativos que funcionassem com a plataforma Air deixassem de aceitar acentos, foi o caso do Seesmic Desktop e TweetDeck.&lt;br /&gt;
&lt;br /&gt;
Porém, ontem, dia 10, foi lançada uma atualização para o AdobeAir que solucionou este problema.&lt;br /&gt;
Então, não perca tempo, siga os passos abaixo para instalar a nova versão do programa:&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
1. Remova a versão anterior:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo apt-get purge adobeair&lt;/pre&gt;&lt;br /&gt;
2. Baixe a nova versão no site da Adobe (ela ainda não está disponível nos repositórios do Ubuntu):&lt;br /&gt;
&lt;a href="http://get.adobe.com/br/air/" target='blank'&gt;Download AdobeAir2.0.3&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;OBS.1: Para seguir com este tutorial, escolha a extensão .bin&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;OBS.2: Se você utiliza um sistema operacional derivado do Debian (e.g. Ubuntu), escolha a extensão .deb. Após baixar o arquivo, é só clicar e instalar.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
3. Após baixar o arquivo AdobeAIRInstaller.bin, abra o Terminal e vá para a pasta onde você o salvou.&lt;br /&gt;
&lt;b&gt;Exemplo:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: bash"&gt;cd Download/&lt;/pre&gt;&lt;br /&gt;
4. Agora, dê permissões para o arquivo:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;chmod +x AdobeAIRInstaller.bin&lt;/pre&gt;&lt;br /&gt;
5. Finalizando, instale-o:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./AdobeAIRInstaller.bin&lt;/pre&gt;&lt;br /&gt;
Se você gostou do tutorial, divulgue-o para que outros também tenham acesso a esta dica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-7910781323699061615?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7910781323699061615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7910781323699061615?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/os-acentos-estao-de-volta-ao-adobeair2.html" title="Os acentos estão de volta ao AdobeAir2" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_P2BnBpOt0sw/TGLMpncOm7I/AAAAAAAAAOs/64mC28eAFlc/s72-c/air-debugged.png" height="72" width="72" /></entry><entry gd:etag="W/&quot;DU4BRnY9fCp7ImA9Wx5SFEQ.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-3776110274337797196</id><published>2010-08-11T00:39:00.000-03:00</published><updated>2010-08-11T00:39:17.864-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-11T00:39:17.864-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Vídeos" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>[Vídeo] Como criar interfaces gráficas em Python com o Glade?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MsGcfX0tcrKDu1sEDmBeq7d3aSg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MsGcfX0tcrKDu1sEDmBeq7d3aSg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MsGcfX0tcrKDu1sEDmBeq7d3aSg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MsGcfX0tcrKDu1sEDmBeq7d3aSg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Para quem já acompanha o blog, sabe que eu estava estudando Qt para poder criar interfaces gráficas em Python. Porém, como eu estava desenvolvendo os programas para Ubuntu, senti que deveria mudar de estratégia.&lt;br /&gt;
&lt;br /&gt;
Agora, começarei a estudar a biblioteca GTK, que é usada no Gnome. Com isso, espero produzir muitos posts sobre este assunto.&lt;br /&gt;
&lt;br /&gt;
Para começar, vejam este excelente vídeo do &lt;a href="http://twitter.com/OgMaciel" target="blank"&gt;OgMaciel&lt;/a&gt; que ensina como criar um programa em Python usando a ferramenta Glade para a construção da interface gráfica.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=5181979964016003560&amp;amp;hl=en&amp;amp;fs=true" style="height: 326px; width: 400px;" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;Fonte: &lt;a href="http://blog.ogmaciel.com/?p=413" target="blank"&gt;OgMaciel&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-3776110274337797196?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3776110274337797196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3776110274337797196?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/video-como-criar-interfaces-graficas-em.html" title="[Vídeo] Como criar interfaces gráficas em Python com o Glade?" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;A0EDRnc5fCp7ImA9Wx5SFEo.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-8442477002988361924</id><published>2010-08-10T19:34:00.000-03:00</published><updated>2010-08-10T19:34:37.924-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-10T19:34:37.924-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Notícias" /><title>[Evento] Inscrições abertas para o SBIE21</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WciVwgwouuR-NfI-eXlcZQfxKeg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WciVwgwouuR-NfI-eXlcZQfxKeg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WciVwgwouuR-NfI-eXlcZQfxKeg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WciVwgwouuR-NfI-eXlcZQfxKeg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" height="116" src="http://www.sbie.org.br/images/stories/banner-br.png" width="400" /&gt;&lt;/div&gt;&lt;br /&gt;
Estão abertas as inscrições para o XXI Simpósio Brasileiro de Informática na Educação (SBIE), que tem por objetivo divulgar as produções científicas nacionais relacionadas à informática na educação.&lt;br /&gt;
&lt;br /&gt;
Este o ano, o simpósio será realizado entre os dias 23 a 26 de Novembro na cidade de João Pessoa - PB e será organizado pela Universidade Federal da Paraíba (UFPB), Universidade Federal de Pernambuco (UFPE) e Empresa Municipal de Informática - EMPREL Recife. Lembrando que este evento é de nível nacional e é promovido anualmente pela Sociedade Brasileira de Computação (SBC).&lt;br /&gt;
&lt;br /&gt;
As inscrições on-line estarão disponíveis até o dia 26/11/2010, porém, os preços irão subir a medida em que o evento se aproximar. Então, se você está interessado em participar, sugiro que faça sua inscrição até o dia 31/08, pois terá um desconto.&lt;br /&gt;
&lt;br /&gt;
Para se inscrever no evento, clique &lt;a href="http://sistemas.sbc.org.br/sbie2010/public/default.php?pt" target="blank"&gt;aqui&lt;/a&gt;. Se quiser saber mais informações, acesse o &lt;a href="http://www.ccae.ufpb.br/sbie2010/" target="blank"&gt;site oficial&lt;/a&gt;.&lt;br /&gt;
Se você quiser acompanhar as últimas notícias do SBIE21, siga o &lt;a href="http://twitter.com/SBIE2010" target="blank"&gt;perfil do evento&lt;/a&gt; no Twitter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-8442477002988361924?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/8442477002988361924?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/8442477002988361924?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/evento-inscricoes-abertas-para-o-sbie21.html" title="[Evento] Inscrições abertas para o SBIE21" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;CE8EQ30-eCp7ImA9Wx5SE08.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-664216474890373028</id><published>2010-08-09T00:00:00.002-03:00</published><updated>2010-08-09T00:00:02.350-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-09T00:00:02.350-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha Nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="Humor" /><title>Tirinha Nerd #18</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mp0q9n-m7X2RlbewP0C5l79hThU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mp0q9n-m7X2RlbewP0C5l79hThU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mp0q9n-m7X2RlbewP0C5l79hThU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mp0q9n-m7X2RlbewP0C5l79hThU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/07/tn18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/tn18.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: right;"&gt;Fonte : &lt;a href="http://nerdson.com/blog/"&gt;Nerdson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-664216474890373028?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/664216474890373028?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/664216474890373028?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/tirinha-nerd-18.html" title="Tirinha Nerd #18" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;D0MNSHw8eip7ImA9Wx5XFE8.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-7063440223145393494</id><published>2010-08-07T23:06:00.001-03:00</published><updated>2010-09-13T21:51:39.272-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-13T21:51:39.272-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Curiosidades" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Qual a diferença entre range() e xrange() em Python?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8qkxkBEShB87KxIW4Mc2qh6IogQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qkxkBEShB87KxIW4Mc2qh6IogQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8qkxkBEShB87KxIW4Mc2qh6IogQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qkxkBEShB87KxIW4Mc2qh6IogQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/08/ranxran.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/08/ranxran.png" /&gt;&lt;/a&gt;&lt;/div&gt;Quando precisamos usar uma estrutura de repetição &lt;i&gt;for&lt;/i&gt; em Pascal, utilizamos uma variável de controle que começa com um valor inicial e vai sendo incrementada/decrementada até seu valor final.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exemplo:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;for i := 1 to 10 do
begin
    writeln(i);
end;&lt;/pre&gt;&lt;br /&gt;
Todavia, em Python, a estrutura &lt;i&gt;for&lt;/i&gt;&amp;nbsp;trabalha de um jeito diferente. Ao invés de utilizar uma variável de controle, o interpretador&amp;nbsp;percorre cada índice de uma variável de tipo sequencial (e.g. string, lista, tupla, etc.) e extrai seu valor.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exemplos:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: python"&gt;# Utilizando uma lista
for i in [1, 2, 3, 4, 5]:
    print i,&lt;/pre&gt;&lt;pre&gt;Saída: 1 2 3 4 5&lt;/pre&gt;&lt;pre class="brush: python"&gt;# Utilizando uma string
for letra in 'Luiz Augusto':
    print letra,&lt;/pre&gt;&lt;pre&gt;Saída: L u i z  A u g u s t o&lt;/pre&gt;&lt;br /&gt;
No exemplo acima, o programa irá percorrer toda a lista e imprimir cada elemento dela. Depois, percorrerá os índices da string e imprimirá seus valores correspondentes, no caso, as letras do meu nome.&lt;br /&gt;
&lt;br /&gt;
Mas, como eu faço para criar um &lt;i&gt;for&lt;/i&gt; que vá de 1 a 1000, por exemplo? Preciso digitar todos estes números em uma lista? A resposta é NÃO, para isso, o Python dispões de duas funções a &lt;i&gt;range()&lt;/i&gt; e &lt;i&gt;xrange()&lt;/i&gt;.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Veja as duas funções em ação:&lt;br /&gt;
&lt;pre class="brush: python" title="range"&gt;for i in range(1, 11):
    print i,&lt;/pre&gt;&lt;pre&gt;Saída: 1 2 3 4 5 6 7 8 9 10&lt;/pre&gt;&lt;pre class="brush: python" title="xrange"&gt;for i in xrange(1, 11):
    print i,&lt;/pre&gt;&lt;pre&gt;Saída: 1 2 3 4 5 6 7 8 9 10&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;Afinal, qual é a diferença entre range e xrange?&lt;/h4&gt;&lt;br /&gt;
Como você viu na demonstração anterior, a saída do programa que tem &lt;i&gt;range()&lt;/i&gt; foi a mesma saída do que tem &lt;i&gt;xrange()&lt;/i&gt;. Será que Python tem duas funções que fazem a mesma coisa? Vamos continuar nossa investigação.&lt;br /&gt;
&lt;br /&gt;
Agora, vamos atribuir às variáveis &lt;i&gt;a&lt;/i&gt; e &lt;i&gt;b&lt;/i&gt; os valores de retorno das funções &lt;i&gt;range()&lt;/i&gt; e &lt;i&gt;xrange()&lt;/i&gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: python"&gt;a = range(1, 11)
print a&lt;/pre&gt;&lt;pre&gt;Saída: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/pre&gt;&lt;pre class="brush: python"&gt;b = xrange(1, 11)
print b&lt;/pre&gt;&lt;pre&gt;Saída: xrange(1, 11)&lt;/pre&gt;&lt;br /&gt;
Ôpa, achamos uma diferença! Agora, vamos ver de que tipo cada variável é.&lt;br /&gt;
&lt;pre class="brush: python" title="range"&gt;type(a)&lt;/pre&gt;&lt;pre&gt;Saída: type 'list'&lt;/pre&gt;&lt;pre class="brush: python" title="range"&gt;type(b)&lt;/pre&gt;&lt;pre&gt;Saída: type 'xrange'&lt;/pre&gt;&lt;br /&gt;
Bom, por meio da função &lt;i&gt;type()&lt;/i&gt;, descobrimos que função &lt;i&gt;range()&lt;/i&gt; retorna uma lista de inteiros e &lt;i&gt;xrange()&lt;/i&gt; retorna um objeto &lt;i&gt;xrange&lt;/i&gt;. Para adiantar, posso dizer que a principal diferença entre estas duas funções é a velocidade.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Finalmente, a resposta!&lt;/h4&gt;&lt;br /&gt;
Como a função &lt;i&gt;range()&lt;/i&gt; cria uma lista com todos os números (de 0 a 100000, por exemplo), ela deixa um espaço na memória para cada elemento. Já a função &lt;i&gt;xrange()&lt;/i&gt; não cria todos os valores de uma vez. Ao invés disso, a cada iteração, ela vai substituindo o valor antigo pelo próximo, assim, consome apenas um único espaço na memória.&lt;br /&gt;
&lt;br /&gt;
Isso não faz muita diferença num intervalo pequeno, mas, imagina ter que fazer um &lt;i&gt;for&lt;/i&gt; de 0 a 100.000.000.000? Quantos espaços de memória não seriam gastos usando o &lt;i&gt;range()&lt;/i&gt;?! Nestes casos, é fortemente aconselhável a utilização do &lt;i&gt;xrange()&lt;/i&gt;. Porém, se o número de iterações for pequeno, não importa qual das duas funções você vai usar, isto não vai interferir no desempenho do seu programa.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444;"&gt;Gostou do post? Então, não tenha medo,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;faça um comentário abaixo&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;. :P&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-7063440223145393494?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7063440223145393494?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/7063440223145393494?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/qual-diferenca-entre-range-e-xrange-em.html" title="Qual a diferença entre range() e xrange() em Python?" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry><entry gd:etag="W/&quot;D0MHQHczeyp7ImA9Wx9QEkw.&quot;"><id>tag:blogger.com,1999:blog-6199904129053985201.post-3695597996427499263</id><published>2010-08-04T21:33:00.001-03:00</published><updated>2010-12-24T15:30:31.983-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-24T15:30:31.983-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cursos" /><category scheme="http://www.blogger.com/atom/ns#" term="Olá Pascal" /><category scheme="http://www.blogger.com/atom/ns#" term="Pascal" /><title>Olá Pascal #12 - Variáveis compostas heterogêneas (Registros)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OpPgxqRPhYK7h7ZH0Hoqrh8Eofk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OpPgxqRPhYK7h7ZH0Hoqrh8Eofk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OpPgxqRPhYK7h7ZH0Hoqrh8Eofk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OpPgxqRPhYK7h7ZH0Hoqrh8Eofk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://olamundo0.files.wordpress.com/2010/05/ola_pascal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="74" src="http://olamundo0.files.wordpress.com/2010/05/ola_pascal.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Bem-vindo a mais uma aula da série Olá Pascal. Na &lt;a href="http://www.ola-mundo.com/2010/07/ola-pascal-11-variaveis-compostas.html"&gt;última aula&lt;/a&gt;, nós vimos como funcionam as variáveis homogêneas multidimensionais. Hoje, veremos um novo tipo de variável composta, o &lt;b&gt;registro&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Até agora, só vimos variáveis compostas que armazenam valores do mesmo tipo. Porém, os registros são variáveis heterogêneas, ou seja, podem armazenar tipos de dados distintos.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Se ainda não deu pra entender o que são os registros, imagine que eles sejam semelhantes a "modelos de formulários", onde você poderá colocar dados como nome, idade, nascimento, salário, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exemplo de formulário&lt;/b&gt;&lt;br /&gt;
&lt;table border="1"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Nome&lt;/b&gt; Luiz Augusto&lt;/td&gt;&lt;td&gt;&lt;b&gt;Idade&lt;/b&gt; 18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Cargo&lt;/b&gt; Professor&lt;/td&gt;&lt;td&gt;&lt;b&gt;Salário&lt;/b&gt; R$2,56&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Podemos facilmente implementar o formulário acima em Pascal usando registros. Veremos isto adiante.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sintaxe:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;var
    nomeDoRegistro :  record
                            variavel1 : tipo1;
                            variavel2 : tipo2;
                            variavelN : tipoN;
                        end;
&lt;/pre&gt;&lt;br /&gt;
Outra alternativa para declarar uma variável do tipo registro é criar um tipo próprio de registro.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exemplo:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;type
    registroFuncionarios =  record
                                nome, cargo : String;
                                idade : integer;
                                salario : real;
                            end;
                            
var
    funcionario1 : registroFuncionarios;
    funcionario2 : registroFuncionarios;
&lt;/pre&gt;&lt;br /&gt;
O tipo &lt;b&gt;registroFuncionarios&lt;/b&gt; é como se fosse apenas um modelo de formulário. As variáveis &lt;i&gt;funcionario1&lt;/i&gt; e &lt;i&gt;funcionario2&lt;/i&gt; são do mesmo tipo, logo, têm os mesmos campos para serem preenchidos (nome, cargo, etc.).&lt;br /&gt;
&lt;br /&gt;
Agora, você pode estar com a seguinte dúvida: nos arrays, nós acessávamos cada elemento por meio de um índice. Mas, como acessamos os elementos de um registro? Seria algo como &lt;i&gt;funcionario1[nome]&lt;/i&gt;, por exemplo? A resposta é &lt;b&gt;não&lt;/b&gt;! Pascal só aceita índices do tipo inteiro.&lt;br /&gt;
&lt;br /&gt;
Para acessarmos os elementos de um registro, usamos a notação de ponto. Veja a sintaxe a seguir:&lt;br /&gt;
&lt;b&gt;Acessando elementos:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;nomeDoRegistro.elementoDoRegistro
&lt;/pre&gt;&lt;br /&gt;
Além da notação de ponto, a linguagem Pascal possui um comando que simplifica o acesso aos elementos de um registro, o &lt;b&gt;with&lt;/b&gt;.&lt;br /&gt;
&lt;b&gt;Sintaxe:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;with nomeDoRegistro do
begin
    elemento1DoRegistro;
    elemento2DoRegistro;
    elementoNDoRegistro;
end;
&lt;/pre&gt;&lt;br /&gt;
Para ser mais claro, vejamos um exemplo usando as variáveis&amp;nbsp;&lt;i&gt;funcionario1&lt;/i&gt;&amp;nbsp;e &lt;i&gt;funcionario2&lt;/i&gt; que criamos anteriormente. Essas variáveis são do tipo &lt;i&gt;registroFuncionarios&lt;/i&gt;, logo têm os seguintes campos a serem preenchidos: &lt;i&gt;nome&lt;/i&gt;, &lt;i&gt;cargo&lt;/i&gt;, &lt;i&gt;idade&lt;/i&gt; e &lt;i&gt;salario&lt;/i&gt;. Vamos criar um programa que receba estes dados para cada variável e mostre-os na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;program CadastroFuncionarios;
uses crt;
type
    registroFuncionarios =  record
                                nome, cargo : String;
                                idade : integer;
                                salario : real;
                            end;
                            
var
    funcionario1 : registroFuncionarios;
    funcionario2 : registroFuncionarios;
    
begin
    // Vamos preencher os dados do funcionário 1
    writeln('Funcionário 1:');
    write('Nome: ');
    readln(funcionario1.nome);
    write('Cargo: ');
    readln(funcionario1.cargo);
    write('Idade: ');
    readln(funcionario1.idade);
    write('Salário: ');
    readln(funcionario1.salario);
    writeln;
    
    // Agora, preencheremos os dados do funcionário 2 usando o comando with
    with funcionario2 do
    begin
        writeln('Funcionário 2:');
        write('Nome: ');
        readln(nome);
        write('Cargo: ');
        readln(cargo);
        write('Idade: ');
        readln(idade);
        write('Salário: ');
        readln(salario);
    end;
    
    clrscr; // Limpando a tela
    // Exibindo os dados do funcionário 1
    with funcionario1 do
    begin
        writeln('Funcionário 1:');
        writeln('Nome: ', nome, ' Idade: ':20, idade);
        writeln('Cargo: ', cargo, ' Salário: R$':20, salario:0:2);
        writeln;
    end;
    
    // Exibindo os dados do funcionário 2
    with funcionario2 do
    begin
        writeln('Funcionário 2:');
        writeln('Nome: ', nome, ' Idade: ':20, idade);
        writeln('Cargo: ', cargo, ' Salário: R$':20, salario:0:2);
    end;
end.
&lt;/pre&gt;&lt;br /&gt;
Se você percebeu, para receber os dados da variável &lt;i&gt;funcionario1&lt;/i&gt; foi usada a notação de ponto, já para &lt;i&gt;funcionario2&lt;/i&gt;, foi usado o comando &lt;i&gt;with&lt;/i&gt;. Daqui pra frente, daremos&amp;nbsp;preferência&amp;nbsp;à segunda maneira, pois ela deixa o código mais limpo.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Registro de registro&lt;/h4&gt;&lt;br /&gt;
Da mesma forma que temos arrays de arrays, em Pascal, existem os registros de registros. Eles são como subitens dentro de um registro principal.&lt;br /&gt;
&lt;br /&gt;
Pense no seguinte exemplo: eu estou desenvolvendo um programa para cadastrar os funcionários de uma empresa e, no cadastro, eu precise dos seguintes dados: nome, rua, número, cep, telefone fixo e celular. Eu simplesmente poderia criar um registro com todos estes dados, mas isto deixaria o programa muito bagunçado. Veja, a seguir, as duas soluções.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Registro único&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;var
    funcionario :   record
                        nome, rua, telefoneFixo, telefoneCelular: String;
                        numero : integer;
                        cep : longint;
                    end;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Como acessar?&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;funcionario.nome
funcionario.rua
funcionario.numero
funcionario.cep
funcionario.telefoneFixo
funcionario.telefoneCelular&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Registros de registro&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;var
    funcionario :   record
                        nome : String;
                        endereco :  record
                                        rua : String;
                                        numero : integer;
                                        cep : longint;
                                    end;
                        telefone :  record
                                        fixo, celular : string;
                                    end;
                    end;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Como acessar?&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;funcionario.nome
funcionario.endereco.rua
funcionario.endereco.numero
funcionario.endereco.cep
funcionario.telefone.fixo
funcionario.telefone.celular&lt;/pre&gt;&lt;br /&gt;
Você pode pensar: "Ahh, mas agora eu vou ter que digitar mais e ainda terei os mesmos elementos no registro!". Mas, organizando seus registros desta forma, tenho certeza que seu código ficará mais legível e, portanto, mais fácil de fazer uma manutenção.&lt;br /&gt;
&lt;br /&gt;
Lembre-se que você pode usar o comando &lt;b&gt;with&lt;/b&gt; para simplificar o código:&lt;br /&gt;
&lt;pre class="brush: pascal"&gt;program Funcionarios;
var
    funcionario :   record
                        nome : String;
                        endereco :  record
                                        rua : String;
                                        numero : integer;
                                        cep : longint;
                                    end;
                        telefone :  record
                                        fixo, celular : string;
                                    end;
                    end;
                    
begin
    with funcionario do
    begin
        nome := 'Benedito';
        writeln(nome);
        with endereco, telefone do
        begin
            rua := 'Rua dos que não foram';
            numero := 11;
            cep := 123321;
            
            fixo := '(83) 1234 - 4321';
            celular := '(83) 9998 - 8889';
            
            writeln(rua);
            writeln(numero);
            writeln(cep);
            writeln(fixo);
            writeln(celular);
        end;
    end;
end.&lt;/pre&gt;&lt;br /&gt;
Bom, pessoal, por hoje é só. Espero que vocês tenham gostado desta aula. Se ficar alguma dúvida, deixem um comentário abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ola-mundo.com/2010/07/ola-pascal-11-variaveis-compostas.html" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://olamundo0.files.wordpress.com/2010/07/botao_anterior.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6199904129053985201-3695597996427499263?l=www.ola-mundo.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3695597996427499263?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6199904129053985201/posts/default/3695597996427499263?v=2" /><link rel="alternate" type="text/html" href="http://www.ola-mundo.com/2010/08/ola-pascal-12-variaveis-compostas.html" title="Olá Pascal #12 - Variáveis compostas heterogêneas (Registros)" /><author><name>Luiz Augusto</name><uri>http://www.blogger.com/profile/08945023918800119701</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_P2BnBpOt0sw/TCZvtop37lI/AAAAAAAAALI/VSi-6jnccuc/S220/logo-300x300.png" /></author></entry></feed>

