<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34831085</id><updated>2011-07-30T19:45:43.238-03:00</updated><category term='operadores'/><category term='indentação'/><category term='condicional'/><category term='algoritmos'/><category term='variáveis'/><category term='expressões'/><category term='lógica de programação'/><category term='repetição'/><category term='estilo'/><category term='história'/><category term='sintaxe'/><title type='text'>bits fritos</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34831085.post-945674167600929946</id><published>2010-03-13T17:21:00.004-03:00</published><updated>2010-03-16T21:31:14.121-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='história'/><title type='text'>O Delphi é o novo Cobol?</title><content type='html'>Depois de um debate em um fórum, fiquei pensando: será que o Delphi terá o mesmo destino de outras linguagens que foram líderes de mercado em suas épocas e depois sumiram, deixando um rastro de sistemas legados?&lt;br /&gt;&lt;br /&gt;Acho que isso é o que acontece com qualquer linguagem bem sucedida. O Delphi foi um dos produtos mais famosos da finada Borland, que antes disso já tinha entrado para a história da informática com o Turbo Pascal. Acredito que o Brasil foi um dos maiores mercados do Delphi, já que essa linguagem acabou sucedendo o Clipper como padrão para o desenvolvimento de sistemas comerciais por aqui.&lt;br /&gt;&lt;br /&gt;A linguagem era simples e poderosa (para a época), mesmo que um pouco verborrágica demais (afinal, era baseada em Pascal). Incluía uma orientação a objetos levemente parecida com Java (baseada em classes de herança simples, herança múltipla de interfaces, separação entre tipos primitivos e classes e, ainda, propriedades com getters e setters). O IDE era parecido com o do maior concorrente, o Visual Basic: muita facilidade para desenho das janelas e dezenas de componentes incluídos. Suporte a depuração, um compilador muito rápido (marca registrada da Borland) e a possibilidade de criar executáveis que rodavam sem a necessidade de runtimes e DLLs.&lt;br /&gt;&lt;br /&gt;Durante boa parte da década de 90 essa foi a linguagem preferida para o desenvolvimento dos gloriosos "sisteminhas" como controle de estoque e frente de caixa. A grande facilidade de uso permitiu que programadores sem muita experiência criassem sistemas complexos. A possibilidade de criar componentes facilmente distribuíveis também favoreceu a criação de um grande mercado de componentes que davam acesso a dispositivos, geravam relatórios e manipulavam vários formatos de arquivos (só para ficar nos mais comuns).&lt;br /&gt;&lt;br /&gt;Essa facilidade toda também teve seu lado negativo: desenvolver sistemas complexos é... complexo e quando feito por programadores sem o conhecimento necessário leva a abusos (gambiarras) e falhas na implementação. Programar é mais que desenhar janelas e arrastar componentes e a falta de qualidade nos sistemas feitos dessa maneira acabou contaminando a própria linguagem Delphi com uma fama de "coisa de amadores" (no mau sentido).&lt;br /&gt;&lt;br /&gt;Com o tempo e o aparecimento de outras linguagens, o Delphi começou a mostrar as suas limitações. A falta de um bom gerenciamento automático de memória, a divisão entre tipos primitivos e a hierarquia de classes, a inexistência de referências que trabalhassem com esses dois "supertipos" de valores, a inflexibilidade da biblioteca padrão de componentes e os próprios bugs do IDE Delphi são exemplos de problemas que eram menores ou inexistentes na concorrência.&lt;br /&gt;&lt;br /&gt;A enorme dificuldade da Borland em gerenciar o produto Delphi no mercado de linguagens de programação e em desenvolver a ferramenta de modo a acompanhar a evolução da programação acabou enterrando a linguagem. A falta de um suporte razoável para programação web também pesou nesse caminho. O Delphi ainda é muito usado no Brasil, mas cada vez mais empresas migram para linguagens mais modernas como Java e C#. De certa forma, dá pra dizer que o Delphi já é o novo Cobol.&lt;br /&gt;&lt;br /&gt;E agora, qual será (é) o novo Delphi?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-945674167600929946?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/945674167600929946/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=945674167600929946&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/945674167600929946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/945674167600929946'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2010/03/o-delphi-e-o-novo-cobol.html' title='O Delphi é o novo Cobol?'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-687044352189206690</id><published>2006-10-25T09:13:00.000-03:00</published><updated>2006-10-25T10:41:42.457-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operadores'/><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='expressões'/><title type='text'>Lógica de Programação 10</title><content type='html'>Neste tópico vamos ver alguns dos operadores da nossa linguagem. Vamos começar com os operadores matemáticos:&lt;br /&gt;&lt;pre class="codigo"&gt;(3 + 5) * 2 - (10 / 2)&lt;/pre&gt;Como você pode ver, os operadores são muito parecidos com aqueles que a gente aprende na escola: + é soma, - é subtração, * (asterisco) é multiplicação e / (barra) é divisão. Os parênteses funcionam como na matemática, mudando a ordem em que as expressões são avaliadas. Se não há parênteses, a ordem padrão é utilizada: multiplicação e divisão primeiro, depois soma e subtração.&lt;br /&gt;&lt;br /&gt;O resultado de operadores matemáticos, que precisam de um número de cada lado, é sempre outro número: primeiro 3 + 5 é calculado, depois 8 * 2, então 10 / 2 (por causa do parênteses) e finalmente 16 - 5, resultando em 11.&lt;br /&gt;&lt;br /&gt;Outro tipo de operadores são os de comparação:&lt;br /&gt;&lt;pre class="codigo"&gt;3 == 5&lt;br /&gt;3 != 5&lt;br /&gt;3 &lt; 5&lt;br /&gt;1 &lt;= 1&lt;br /&gt;2 &gt;= -5&lt;/pre&gt;Esses operadores precisam de um número de cada lado (por enquanto) e retornam não um número, mas um valor booleano. Valores booleanos podem apenas ser falso ou verdadeiro. Nesse exemplo, 3 é diferente de 5, então 3 == 5 (o operador para igual) retorna falso e 3 != 5 (o operador para diferente) retorna verdadeiro. Como 3 é menor que 5, 3 &lt; 5 também retorna verdadeiro. Um é menor ou igual a 1, então 1 &lt;= 1 também é verdadeiro, assim como 2 &gt;= -5.&lt;br /&gt;&lt;br /&gt;O último tipo de operador que vamos ver agora são os operadores lógicos:&lt;br /&gt;&lt;pre class="codigo"&gt;falso &lt;span class="reserved"&gt;ou&lt;/span&gt; verdadeiro&lt;br /&gt;&lt;span class="reserved"&gt;não&lt;/span&gt; verdadeiro &lt;span class="reserved"&gt;e&lt;/span&gt; 3 &gt; 2&lt;br /&gt;&lt;span class="identifier"&gt;salário&lt;/span&gt; &gt; 5 * &lt;span class="identifier"&gt;salário mínimo&lt;/span&gt; &lt;span class="reserved"&gt;e&lt;/span&gt; &lt;span class="identifier"&gt;idade&lt;/span&gt; &lt; 30 &lt;span class="reserved"&gt;e&lt;/span&gt; &lt;span class="reserved"&gt;não&lt;/span&gt; &lt;span class="identifier"&gt;solteiro&lt;/span&gt;&lt;/pre&gt;Alguns desses operadores nós já vimos, sempre precisando de um valor booleano de cada lado (com exceção do operador &lt;span style="font-style: italic;"&gt;não&lt;/span&gt;). O operador &lt;span style="font-style: italic;"&gt;ou&lt;/span&gt; retorna verdadeiro se qualquer um dos valores é verdadeiro (no exemplo, falso ou verdadeiro retorna verdadeiro). O operador &lt;span style="font-style: italic;"&gt;não&lt;/span&gt; inverte o valor booleano: se era verdadeiro, retorna falso e vice-versa. O operador &lt;span style="font-style: italic;"&gt;e&lt;/span&gt; retorna verdadeiro só se os dois valores são verdadeiros (o exemplo retorna falso, já que não verdadeiro é falso). A terceira linha mistura todos os operadores que nós já vimos: retorna verdadeiro se a variável salário tem valor maior que 5 vezes o salário mínimo (outra variável) e ao mesmo tempo idade é menor que 30 e ao mesmo tempo a variável solteiro é falsa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-687044352189206690?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/687044352189206690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=687044352189206690&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/687044352189206690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/687044352189206690'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/10/lgica-de-programao-10.html' title='Lógica de Programação 10'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-7872292361923426196</id><published>2006-10-05T12:31:00.000-03:00</published><updated>2006-10-05T12:36:38.404-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='repetição'/><category scheme='http://www.blogger.com/atom/ns#' term='expressões'/><title type='text'>Lógica de programação 9</title><content type='html'>No último post nós vimos como trocar um número máximo de lâmpadas, e também como trocar apenas as lâmpadas queimadas dentro desse número máximo. Isso é o que nós conseguimos até agora:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;trocas&lt;/span&gt; = 0&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; &lt;span class="identifier"&gt;trocas&lt;/span&gt; &lt; 10 &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;se&lt;/span&gt; não existir lâmpada queimada &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;        &lt;span class="reserved"&gt;interrompa&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;    &lt;span class="comment"&gt;// todo aquele código que troca uma lâmpada&lt;/span&gt;&lt;br /&gt;    &lt;span class="identifier"&gt;trocas&lt;/span&gt; = &lt;span class="identifier"&gt;trocas&lt;/span&gt; + 1&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Como você pode ver, estamos limitando o número de trocas na condição da repetição enquanto que dentro do bloco de código repetido nós usamos um condicional para interromper a repetição quando terminamos de trocar as lâmpadas queimadas. Vamos ver o que acontece se trocarmos as condições de lugar:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;trocas&lt;/span&gt; = 0&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; existir lâmpada queimada &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;se&lt;/span&gt; &lt;span class="identifier"&gt;trocas&lt;/span&gt; &gt;= 10 &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;        &lt;span class="reserved"&gt;interrompa&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;    &lt;span class="comment"&gt;// todo aquele código que troca uma lâmpada&lt;/span&gt;&lt;br /&gt;    &lt;span class="identifier"&gt;trocas&lt;/span&gt; = &lt;span class="identifier"&gt;trocas&lt;/span&gt; + 1&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Veja como as condições se inverteram.  Isso aconteceu porque a condição do enquanto deve ser verdadeira durante toda a repetição, até que fica falsa quando a repetição deve terminar; por outro lado, a condição do condicional é falsa durante toda a repetição, ficando verdadeira para sinalizar o fim das trocas de lâmpadas. Se você simular esse código vai descobrir que ele faz exatamente a mesma coisa que o anterior.&lt;br /&gt;&lt;br /&gt;Será que existe outra maneira de fazer isso? Claro: nós podemos unir essas duas condições numa expressão só, porque no fundo elas servem para dizer "continue repetindo... continue repetindo... pare!". Se é assim, nós podemos colocá-las no nosso enquanto e mandar aquele condicional passear:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;trocas&lt;/span&gt; = 0&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; existir lâmpada queimada &lt;span class="reserved"&gt;e&lt;/span&gt; &lt;span class="identifier"&gt;trocas&lt;/span&gt; &lt; 10 &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="comment"&gt;// todo aquele código que troca uma lâmpada&lt;/span&gt;&lt;br /&gt;    &lt;span class="identifier"&gt;trocas&lt;/span&gt; = &lt;span class="identifier"&gt;trocas&lt;/span&gt; + 1&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Para fazer isso, usamos uma nova palavra reservada: e. Esse tipo de palavra chave (outro nome para palavra reservada) também é conhecido como operador, porque pega expressões, fazendo alguma operação com elas, e retorna o resultado da operação. O operador e retorna um valor verdadeiro se as expressões da cada lado dele (direito e esquerdo) forem verdadeiras ao mesmo tempo. Esse código faz a mesma coisa que os dois anteriores, mas de uma maneira mais elegante e resumida.&lt;br /&gt;&lt;br /&gt;Na próxima parte vamos conhecer outros operadores da nossa linguagem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-7872292361923426196?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/7872292361923426196/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=7872292361923426196&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/7872292361923426196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/7872292361923426196'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/10/lgica-de-programao-9.html' title='Lógica de programação 9'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-1059995641096484315</id><published>2006-10-03T22:43:00.000-03:00</published><updated>2006-10-03T22:47:06.177-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='repetição'/><category scheme='http://www.blogger.com/atom/ns#' term='variáveis'/><title type='text'>Lógica de programação 8</title><content type='html'>Nós já sabemos trocar todas as lâmpadas de uma sala usando repetição (se não lembra veja a parte 6 dessa série), mas digamos que o SINDETROL (Sindicato dos Estagiários Trocadores de Lâmpadas) tenha feito um acordo que limita as trocas de lâmpadas a 10 por dia. Nesse caso, nós vamos ter que contar as trocas de lâmpadas e parar quando chegarmos na décima troca. Para fazer isso podemos usar uma variável:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;trocas&lt;/span&gt; = 0&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; &lt;span class="identifier"&gt;trocas&lt;/span&gt; &lt; 10 &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="comment"&gt;// todo aquele código que troca uma lâmpada&lt;/span&gt;&lt;br /&gt;    &lt;span class="identifier"&gt;trocas&lt;/span&gt; = &lt;span class="identifier"&gt;trocas&lt;/span&gt; + 1&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Vamos tentar entender o que está acontecendo. No começo, o valor inicial da variável trocas é zero, porque ainda não trocamos lâmpadas hoje. Como zero é menor que 10 o código que troca uma lâmpada é executado e trocas é somado com 1. Como 1 ainda é menor que 10, trocamos mais uma lâmpada e trocas passa a ser 2. Isso acontece até que trocas está valendo 9, porque já trocamos 9 lâmpadas, e o código de troca de lâmpadas é executado pela última vez. Depois disso, trocas é incrementado para 10. Como 10 não é menor que 10 a repetição pára e o estagiário vai tomar um cafezinho. Note que só podemos incrementar o valor de trocas depois que realmente fazemos uma troca. Pronto. Fim do tópico.&lt;br /&gt;&lt;br /&gt;Não! Como você deve lembrar, a repetição da parte 6 tinha como condição ainda existir alguma lâmpada queimada para ser trocada. Agora estamos trocando 10 lâmpadas sem nem ver se elas estão queimadas ou não! Vamos tentar consertar isso com um comando novo:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;trocas&lt;/span&gt; = 0&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; &lt;span class="identifier"&gt;trocas&lt;/span&gt; &lt; 10 &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;se&lt;/span&gt; não existir lâmpada queimada &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;        &lt;span class="reserved"&gt;interrompa&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;    &lt;span class="comment"&gt;// todo aquele código que troca uma lâmpada&lt;/span&gt;&lt;br /&gt;    &lt;span class="identifier"&gt;trocas&lt;/span&gt; = &lt;span class="identifier"&gt;trocas&lt;/span&gt; + 1&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Agora, enquanto a repetição limita o número de trocas a 10, o condicional que colocamos logo no começo da repetição trata de interromper a repetição se não tiver mais lâmpadas queimadas. Se as lâmpadas queimadas acabaram o comando interrompa cancela a repetição, fazendo com que o computador execute o comando seguinte ao fim da repetição.&lt;br /&gt;&lt;br /&gt;Mas essa não é a única forma de fazer isso (dica: o que acontece se usarmos o mesmo mecanismo, mas com as condições da repetição e do condicional trocadas?). Na próxima parte, vamos ver variações desse exemplo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-1059995641096484315?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/1059995641096484315/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=1059995641096484315&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/1059995641096484315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/1059995641096484315'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/10/lgica-de-programao-8.html' title='Lógica de programação 8'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-6938820852777217536</id><published>2006-10-02T10:06:00.000-03:00</published><updated>2006-10-02T11:15:29.591-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='expressões'/><category scheme='http://www.blogger.com/atom/ns#' term='variáveis'/><title type='text'>Lógica de programação 7</title><content type='html'>Como eu prometi, hoje vamos aprender a contar. Quer dizer, espero que você já saiba contar: o que nós vamos aprender é como fazer o computador contar. Para fazer isso, nós vamos usar outro conceito importante, chamado variável. Uma variável é um espaço na memória do computador que pode guardar um dado qualquer. As variáveis têm nomes, para que o computador saiba (e o programador também!) de que espaço na memória que a gente está falando. Na nossa linguagem nós criamos uma nova variável quando damos um valor para ela pela primeira vez:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;x&lt;/span&gt; = 10&lt;/pre&gt;Isso faz com que o computador reserve um espaço na memória para guardar o valor da variável x e ponha o valor 10 nesse espaço. Vamos criar mais variáveis:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="identifier"&gt;y&lt;/span&gt; = 5&lt;br /&gt;&lt;span class="identifier"&gt;x&lt;/span&gt; = 11&lt;br /&gt;&lt;span class="identifier"&gt;soma&lt;/span&gt; = &lt;span class="identifier"&gt;x&lt;/span&gt; + &lt;span class="identifier"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span class="identifier"&gt;salário&lt;/span&gt; = 1654.32&lt;br /&gt;&lt;span class="identifier"&gt;salário anual&lt;/span&gt; = &lt;span class="identifier"&gt;salário&lt;/span&gt; * 12&lt;br /&gt;&lt;span class="identifier"&gt;média&lt;/span&gt; = (4 + 5 + 2 + 3.14159) / 4&lt;/pre&gt;Na primeira linha criamos uma nova variável y com o valor 5. Assumindo que esse exemplo é a continuação do outro, mudamos o valor da variável x, que era 10 e passou a ser 11 (no mesmo espaço de memória em que ela estava antes, porque ela já existia quando mudamos o seu valor). Também criamos uma variável soma com o resultado da soma de x com y: o valor inicial de soma é 16. A variável salário tem um valor real, em vez de ser inteiro como nos casos anteriores. Note que na nossa linguagem o separador de casas decimais é o ponto e não a vírgula; a grande maioria das linguagens de programação usa esse formato, que não por acaso é como os americanos escrevem os números deles. A variável salário anual tem o valor de salário multiplicado por 12 (19851.84). Os parênteses funcionam como na matemática: a variável média tem a soma dos 4 valores divida por 4 (3.5353975).&lt;br /&gt;&lt;br /&gt;Veja que nesses exemplos eu só usei o valor de uma variável depois de ter dado um valor para ela. Não importa qual a linguagem, é sempre importante garantir que a variável tem valor antes de começar usar o valor dela. Algumas linguagens dão um valor padrão (zero, por exemplo); em outras o computador avisa que você esqueceu de definir um valor inicial; outras não ligam pra isso e deixam o pepino pra você (pepino porque você não tem como saber o que você vai encontrar na memória). Você pode descobrir isso lendo a documentação ou o manual da linguagem.&lt;br /&gt;&lt;br /&gt;Mas o computador ainda não está contando! Cadê? Cadê a contagem? Calma, esse tópico foi só a vaselina. No próximo vai.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-6938820852777217536?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/6938820852777217536/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=6938820852777217536&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/6938820852777217536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/6938820852777217536'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/10/lgica-de-programao-7.html' title='Lógica de programação 7'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115949513699856064</id><published>2006-09-28T22:53:00.000-03:00</published><updated>2006-09-28T22:58:57.006-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indentação'/><category scheme='http://www.blogger.com/atom/ns#' term='estilo'/><title type='text'>Indentação</title><content type='html'>Se você está acompanhando os posts sobre lógica de programação, já deve ter notado que os textos têm um formato característico. Além da sintaxe da nossa linguagem de programação, isto é, da ordem em que as palavras reservadas têm que aparecer, também existe um certo padrão nos espaços que são usados no começo de cada linha. Esses espaços no início de cada linha são chamados de indentação. Na maioria das linguagens, inclusive na nossa, a indentação não faz parte da sintaxe: você pode usar a indentação que quiser, inclusive nenhuma, ou colocar espaços nos lugares que você quiser, que o significado do programa não muda.&lt;br /&gt;&lt;br /&gt;Então para que serve a indentação? A indentação serve como um guia visual para nós, programadores humanos. Deixa o código fonte do programa mais organizado, mais fácil de ler, entender e modificar. Veja um exemplo altamente didático, sem indentação:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; carros andando na rua &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;espere&lt;br /&gt;olhe para um lado&lt;br /&gt;olhe para o outro lado&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; não chegar ao outro lado &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;se&lt;/span&gt; pessoa na frente &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;desvie&lt;br /&gt;&lt;span class="reserved"&gt;senão&lt;/span&gt;&lt;br /&gt;dê um passo&lt;br /&gt;&lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Confuso, não? Agora com a indentação, colocando os blocos de código dentro das repetições e dos condicionais um nível de indentação para a direita (inclusive quando existe um bloco dentro do outro):&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; carros andando na rua &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    espere&lt;br /&gt;    olhe para um lado&lt;br /&gt;    olhe para o outro lado&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; não chegar ao outro lado &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;se&lt;/span&gt; pessoa na frente &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;        desvie&lt;br /&gt;    &lt;span class="reserved"&gt;senão&lt;/span&gt;&lt;br /&gt;        dê um passo&lt;br /&gt;    &lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Muito melhor. Tradicionalmente, a indentação era feita com tabulações (tecla Tab), com uma tabulação para cada nível. O problema é que existem alguns estilos de indentação que misturam espaços e tabulações, e quando se misturam os dois da maneira errada o resultado é uma bagunça feia de se ver. Para tentar evitar esse problema, virou moda usar só espaços para fazer a indentação: 8 ou, mais recentemente, 4 espaços para cada nível de indentação. Realmente não interessa muito o estilo a ser usado, desde que se use indentação (pode valer pontos extras nos trabalhos da universidade) e o estilo se mantenha no código fonte inteiro (é muito feio ficar trocando de estilo no meio do texto).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115949513699856064?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115949513699856064/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115949513699856064&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115949513699856064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115949513699856064'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/indentao.html' title='Indentação'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115940958425246339</id><published>2006-09-27T23:12:00.000-03:00</published><updated>2006-09-27T23:14:29.310-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='repetição'/><title type='text'>Lógica de programação 6</title><content type='html'>Tudo bem, o condicional é muito divertido e tudo mais, mas e se eu for um estagiário trabalhando numa sala grande com muitas lâmpadas? Preciso copiar e colar esse código pra cada lâmpada maldita? Não, pequeno gafanhoto. É aí que entra outro conceito importatíssimo da lógica de programação: a repetição. Existem várias formas de repetição, mas todas são variações dessa:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; condição &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    ações&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Isso faz com que o computador verifique a condição: se ela for verdadeira, ele executa as ações e verifica a condição de novo, para executar as ações de novo se ela continuar verdadeira, para verificar a condição de novo... Enfim, acho que já deu pra entender. Da mesma forma que no condicional, depois que o computador percebe que a condição ficou falsa e sai da repetição, ele não volta pra ela só porque a condição ficou verdadeira de novo. A única forma de repetir a repetição é colocar uma repetição dentro da outra. Vamos usar uma repetição na troca da lâmpada:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;enquanto&lt;/span&gt; existir lâmpada queimada &lt;span class="reserved"&gt;faça&lt;/span&gt;&lt;br /&gt;    &lt;span class="reserved"&gt;se&lt;/span&gt; lâmpada muito alta &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;        por escada em baixo da lâmpada&lt;br /&gt;        subir na escada&lt;br /&gt;        remover lâmpada queimada&lt;br /&gt;        colocar lâmpada boa&lt;br /&gt;        descer da escada&lt;br /&gt;        guardar escada&lt;br /&gt;    &lt;span class="reserved"&gt;senão&lt;/span&gt;&lt;br /&gt;        remover lâmpada queimada&lt;br /&gt;        colocar lâmpada boa&lt;br /&gt;    &lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;&lt;span class="reserved"&gt;fim enquanto&lt;/span&gt;&lt;/pre&gt;Bonito, não? Num próximo post vamos deixar a coisa mais interessante e começar a contar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115940958425246339?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115940958425246339/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115940958425246339&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115940958425246339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115940958425246339'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-6.html' title='Lógica de programação 6'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115940936749122115</id><published>2006-09-27T23:08:00.000-03:00</published><updated>2006-09-27T23:19:51.993-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='sintaxe'/><category scheme='http://www.blogger.com/atom/ns#' term='condicional'/><title type='text'>Lógica de programação 5</title><content type='html'>Se você prestou atenção no condicional do último post, viu que eu destaquei algumas das palavras do código da troca da lâmpada. Aquelas são palavras com significado especial na nossa linguagem de programação. Todas as linguagens de programação têm palavras especiais, conhecidas como palavras reservadas, que indicam ao computador o que tem que ser feito. Essas palavras têm que ser colocadas numa ordem definida para que o computador possa entendê-las: é a sintaxe da linguagem, o formato em que o texto deve aparecer. Elas são reservadas porque são usadas pela linguagem: você não pode usá-las para outras coisas porque isso confunde o computador. Essa é a sintaxe do condicional, sem e com senão, respectivamente:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;se&lt;/span&gt; condição &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;    ações (se a condição for verdadeira)&lt;br /&gt;&lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="reserved"&gt;se&lt;/span&gt; condição &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;    ações (se a condição for verdadeira)&lt;br /&gt;&lt;span class="reserved"&gt;senão&lt;/span&gt;&lt;br /&gt;    ações (se a condição for falsa)&lt;br /&gt;&lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;/pre&gt;É bom lembrar que as ações são executadas apenas se a condição for verdadeira quando o computador estiver testando o condicional. O computador vai executando um comando depois do outro, na ordem em que foram escritos: se depois que o computador já tiver passado pelo condicional a condição se tornar verdadeira, isso não influi em nada nesse ponto do código — o computador não retorna a esse condicional só porque a condição mudou.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115940936749122115?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115940936749122115/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115940936749122115&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115940936749122115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115940936749122115'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-5.html' title='Lógica de programação 5'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115921627965616737</id><published>2006-09-25T17:20:00.000-03:00</published><updated>2006-09-25T17:43:41.923-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='condicional'/><title type='text'>Lógica de programação 4</title><content type='html'>Como prometido, hoje vamos fazer o nosso primeiro algoritmo. Vamos usar um problema tradicional pra isso: trocar uma lâmpada queimada. Uma primeira tentativa, usando uma linguagem conhecida por aí como Portugol ou português estruturado, poderia ser:&lt;br /&gt;&lt;pre class="codigo"&gt;trocar lâmpada queimada&lt;/pre&gt;Simples, não? Pois é, mas os computadores são burros e não sabem o que significa trocar, nem o que seria uma lâmpada e muito menos qual a diferença entre uma lâmpada queimada e uma lâmpada boa. Vamos tentar explicar então, o que seria trocar uma lâmpada:&lt;br /&gt;&lt;pre class="codigo"&gt;remover lâmpada queimada&lt;br /&gt;colocar lâmpada boa&lt;/pre&gt;Agora está melhor. Mas e se a lâmpada estiver num lugar muito alto e você não alcançar a tal lâmpada? Nesse caso, podemos nos valer de um artifício técnico conhecido como escada. Se você subir na escada, alcança a lâmpada (espero). Vamos lá:&lt;br /&gt;&lt;pre class="codigo"&gt;por escada em baixo da lâmpada&lt;br /&gt;subir na escada&lt;br /&gt;remover lâmpada queimada&lt;br /&gt;colocar lâmpada boa&lt;br /&gt;descer da escada&lt;br /&gt;guardar escada&lt;/pre&gt;Ótimo, podemos ir pra casa. Mas peraí: isso de carregar escada pra lá e pra cá dá muito trabalho, e nós programadores somos preguiçosos. Vou até criar um fato para isso:&lt;br /&gt;&lt;blockquote class="fato"&gt;Fato 3: Os programadores são preguiçosos.&lt;/blockquote&gt;Não se assuste com a aparente negatividade desse fato. Os programadores são preguiçosos, mas no bom sentido: o que eles querem é poupar trabalho, tanto para eles quanto para os computadores. Trabalho humano poupado é igual a mais tempo para tomar cerveja (ou qualquer outro líquido que você costume consumir). Trabalho computacional poupado é igual a menos custos, o que algumas vezes significa mais dinheiro para os trabalhadores humanos.&lt;br /&gt;&lt;br /&gt;É claro que os programadores usam de esperteza para poupar trabalho, em vez de realmente serem preguiçosos e simplesmente entregar uma caixa de papelão com luzinhas para o cliente (às vezes isso causava a perda de algumas vidas inocentes, e nem sempre existia um estagiário à mão para ser entregue à guilhotina). O método esperto que nós vamos usar nesse caso, conhecido como condicional, costuma poupar trabalho para os computadores, mas às vezes também poupa trabalho humano (mais sobre esses usos no futuro). Veja só:&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span class="reserved"&gt;se&lt;/span&gt; lâmpada muito alta &lt;span class="reserved"&gt;então&lt;/span&gt;&lt;br /&gt;    por escada em baixo da lâmpada&lt;br /&gt;    subir na escada&lt;br /&gt;    remover lâmpada queimada&lt;br /&gt;    colocar lâmpada boa&lt;br /&gt;    descer da escada&lt;br /&gt;    guardar escada&lt;br /&gt;&lt;span class="reserved"&gt;senão&lt;/span&gt;&lt;br /&gt;    remover lâmpada queimada&lt;br /&gt;    colocar lâmpada boa&lt;br /&gt;&lt;span class="reserved"&gt;fim se&lt;/span&gt;&lt;/pre&gt;Agora sim: se a lâmpada for muito alta, fazemos todos aqueles passos que incluem pegar e guardar a escada. Por outro lado, se não precisarmos da escada nós poupamos trabalho e só trocamos a infeliz da lâmpada. No próximo post vamos ver como criar condicionais para outras coisas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115921627965616737?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115921627965616737/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115921627965616737&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115921627965616737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115921627965616737'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-4.html' title='Lógica de programação 4'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115898602204041334</id><published>2006-09-23T01:29:00.000-03:00</published><updated>2006-09-23T01:33:42.046-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algoritmos'/><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><title type='text'>Lógica de programação 3</title><content type='html'>Percebi que estava cometendo uma falha terrível: ainda não disse o que é a tal "lógica de programação"! Vamos lá: os computadores que nós usamos hoje em dia são baseados na &lt;a href="http://pt.wikipedia.org/wiki/Arquitetura_de_von_Neumann"&gt;arquitetura de Von Neumann&lt;/a&gt;, inventada por um computeiro fodão da metade do século passado. O importante nisso é que os computadores seguem sempre um ciclo: pega uma instrução da memória, pega os dados necessários, executa a instrução, põe os dados na memória (ou gospe eles na tela, por exemplo) e pega a próxima instrução da memória, continuando nesse ciclo eternamente. Da mesma forma, os programas são escritos em linguagens de programação que acabam, no geral, seguindo mais ou menos o mesmo paradigma (paradigma imperativo, se te interessa saber).&lt;br /&gt;&lt;br /&gt;Esse paradigma é uma adaptação direta do conceito de algoritmo. "&lt;a href='http://pt.wikipedia.org/w/index.php?title=Algoritmo&amp;oldid=3267636'&gt;Algoritmo&lt;/a&gt; é uma sequência finita e não ambígua de instruções para solucionar um problema", pra usar a definição altamente didática da Wikipedia. Ou seja, é uma receita que um dia acaba (ainda bem), bem explicadinha (lembre do fato 1 — computadores são burros) que ensina alguém (o computador, por exemplo, mas não necessariamente) a fazer alguma coisa (resolver o tal problema).&lt;br /&gt;&lt;br /&gt;O caso é que os programas são algoritmos, escritos em alguma linguagem que o computador entende. Não interessa muito a linguagem, porque todas elas se parecem. Os conceitos usados em uma costumam se aplicar às outras, com pequenas modificações. Uma receita de bolo de chocolate é muito parecida, seja em português, em inglês ou árabe. Com as linguagens de programação é a mesma coisa, com a vantagem que a semelhança entre elas é bem maior do que entre línguas humanas. Conhecendo os princípios básicos, a &lt;span style="font-weight:bold;"&gt;lógica de programação&lt;/span&gt;, fica fácil programar em qualquer linguagem.&lt;br /&gt;&lt;br /&gt;Pronto, está explicado. No próximo post vamos fazer o nosso primeiro algoritmo. Aguarde e confie, como diz o glorioso Didi Mocó.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115898602204041334?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115898602204041334/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115898602204041334&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115898602204041334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115898602204041334'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-3.html' title='Lógica de programação 3'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115889396437153495</id><published>2006-09-21T23:57:00.000-03:00</published><updated>2006-09-21T23:59:24.380-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><title type='text'>Lógica de programação 2</title><content type='html'>A computação é uma área meio bisonha: é uma mistura de matemática e engenharia, principalmente, mas também encosta em todas as outras áreas do conhecimento. Essa influência forte da engenharia, aliada à pouca idade da computação, faz com que a programação empreste muitas idéias usadas na fabricação de coisas. O processo tradicional de programação segue o padrão análise (do problema), projeto (da solução) e implementação e teste (do programa). Tudo muito certinho e organizado, como numa fábrica de carros.&lt;br /&gt;&lt;br /&gt;Eu sou da opinião que a técnica é importante, mas a programação se assemelha mais à literatura do que à engenharia. O funcionamento dos programas é descrito por textos (às vezes também alguns desenhos), os programas podem ser alterados muito mais facilmente do que uma peça de motor e o custo de fazer cópias de um programa é próximo de zero. Além disso, o programa é uma coisa muito mais próxima do texto que o descreve do que um patinete é próximo do projeto do patinete. É quase como se o programa fosse o texto. Programar é um processo artesanal apesar de tudo, é criativo e muitas vezes solitário (pelo menos em alguns momentos). Existem textos bonitos e textos feios de programas, e cada programador tem o seu estilo próprio que vai se desenvolvendo com o tempo. Tudo isso nos leva ao segundo fato:&lt;br /&gt;&lt;blockquote class="fato"&gt;Fato 2: Programar é uma arte.&lt;/blockquote&gt;Pense nesse fato assim: a técnica é importante, educação formal em programação aumenta o número e a qualidade das ferramentas que você tem e é preciso ser organizado se você quiser criar qualquer coisa com um tamanho razoável, mas no fundo um programador é um escritor de programas. Às vezes você vai quebrar as regras de propósito, vai inovar, vai bolar histórias geniais e se tiver sorte ainda vai se divertir muito fazendo isso. Espero que aos poucos você acabe concordando com esse fato.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115889396437153495?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115889396437153495/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115889396437153495&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115889396437153495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115889396437153495'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-2.html' title='Lógica de programação 2'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34831085.post-115889074669854663</id><published>2006-09-21T23:04:00.000-03:00</published><updated>2006-09-21T23:59:52.033-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lógica de programação'/><title type='text'>Lógica de programação 1</title><content type='html'>Então você resolveu que quer aprender a programar. Bom, se é assim, é melhor ter uma idéia de onde você está se metendo. Para resumir bastante (para os parentes, por exemplo), programar é ensinar ao computador como fazer coisas novas. O computador é um bicho danado de burro, ao contrário de você, humano ou criatura semelhante. Computadores não são muito melhores que calculadoras grudadas numa televisão. Isso nos leva ao primeiro fato da vida de um programador:&lt;br /&gt;&lt;blockquote class="fato"&gt;Fato 1: Quando falar com o computador, fale beeeem devagar.&lt;/blockquote&gt;É importante ler isso realçando bem o "beeeem", para que isso penetre no seu inconsciente. É claro que esse fato não deve ser levado ao pé da letra: se você realmente começar a bater altos papos com o seu computador em público, falando beeeem devagar, os não programadores vão achar que você tem algum grave problema neurológico e vão parar de te chamar pra sair (e você provavelmente não quer isso).&lt;br /&gt;&lt;br /&gt;O que esse fato quer dizer é que como os computadores são burros feito uma porta você deve explicar detalhadamente e claramente tudo o que ele tem que fazer. Passo a passo, beeeem devagar, como numa receita de bolo para chimpanzés (chimpanzés são ótimos cozinheiros se trabalharem numa cozinha espaçosa o suficiente). A maioria das engasgadas dos programas que você criar serão mal entendidos entre você e o seu colega digital.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34831085-115889074669854663?l=bitsfritos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsfritos.blogspot.com/feeds/115889074669854663/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34831085&amp;postID=115889074669854663&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115889074669854663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34831085/posts/default/115889074669854663'/><link rel='alternate' type='text/html' href='http://bitsfritos.blogspot.com/2006/09/lgica-de-programao-1.html' title='Lógica de programação 1'/><author><name>diogoko</name><uri>http://www.blogger.com/profile/12654596388540959315</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
