<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marcio Bueno - Cursos Online &#187; Linguagens de Programação</title>
	<atom:link href="http://marciobueno.com/category/linguagens-programacao/feed" rel="self" type="application/rss+xml" />
	<link>http://marciobueno.com</link>
	<description>desenvolvimento através do conhecimento</description>
	<lastBuildDate>Mon, 23 Jan 2012 19:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Smalltalk &#8211; Uma das Primeiras Linguagens Orientadas a Objetos</title>
		<link>http://marciobueno.com/linguagens-programacao/smalltalk-primeiras-linguagens-orientadas-objetos?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=smalltalk-primeiras-linguagens-orientadas-objetos</link>
		<comments>http://marciobueno.com/linguagens-programacao/smalltalk-primeiras-linguagens-orientadas-objetos#comments</comments>
		<pubDate>Mon, 16 Feb 2009 03:14:13 +0000</pubDate>
		<dc:creator>Marcio Bueno</dc:creator>
				<category><![CDATA[Linguagens de Programação]]></category>

		<guid isPermaLink="false">http://marciobueno.com/?p=27</guid>
		<description><![CDATA[Uma das primeiras linguagens de programação orientada a objetos (oo) foi o Smalltalk, o grande diferencial entre Smalltalk e a maiorias das outras linguagens oo é que tudo na linguagens são objetos, inclusive if, while e for não são comandos, são métodos por mais incrível que isto pareça. A notação do Smalltalk é semelhante à [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify; ">Uma das primeiras linguagens de programação orientada a objetos (oo) foi o <strong>Smalltalk</strong>, o grande diferencial entre Smalltalk e a maiorias das outras linguagens oo é que tudo na linguagens são objetos, inclusive <strong>if</strong>, <strong>while</strong> e <strong>for</strong> não são comandos, são métodos por mais incrível que isto pareça.</p>
<p><span id="more-27"></span></p>
<p style="text-align: justify; ">A notação do Smalltalk é semelhante à escrita em inglês. Veja o código abaixo:</p>
<pre>Transcript clear.
Transcript cr.
Transcript show:'Olá Mundo'.
Transcript cr.</pre>
<p style="text-align: justify; ">Existe um objeto chamado Transcript que representa um console, isto é, um lugar onde as mensagens são exibidas. Na primeira linha, você está executando o método clear (limpar) do objeto Transcript. Na segunda linha é solicitado ao Transcript que pule de linha através do método <strong>cr</strong>, como um <strong>endl</strong> do C++ ou um <strong>&#8220;n&#8221;</strong> do C ou Java. Na terceira linha, é solicitado ao Transcript que seja exibida a string &#8216;Olá Mundo&#8217;, através do método <strong>show:</strong> que recebe como parâmetro uma string. Quando você precisar passar várias mensagens para um objeto, é possível utilizar um ponto-e-vírgula separando as chamadas, como no exemplo abaixo:</p>
<pre>Transcript clear; cr; show:'Olá Mundo'; cr.</pre>
<p style="text-align: justify; ">Voltando ao comandos de controle na maioria das linguagens: o if do Java, em Smalltalk é <strong>ifTrue:</strong>,  um método declarado na classe <strong>Boolean</strong> que recebe com parâmetro (veja o sinal de dois-pontos após o nome do método) um bloco de comandos, que em Smalltalk são comandos que estão dentro de colchetes [ ]. Já o <strong>whileTrue:</strong> é um método definido nas classes <strong>BlockClosure</strong> e <strong>BlockContext</strong>, portanto se o bloco for avaliado e retornar um valor True, então o bloco passado como parâmetro para o <strong>whileTrue:</strong> será avaliado. O exemplo abaixo já integra vários conceitos:</p>
<pre>| i |
i := 9.
Transcript clear.
[ i &gt; 0 ] whileTrue: [
	Transcript show: (i asString), ' -&gt; ',
		(i odd ifTrue: ['Par'] ifFalse: ['Ímpar']);
		cr.
	i := i - 1.
].</pre>
<p style="text-align: justify; ">Na primeira linha é definida a variável <strong>i</strong>, que em Smalltalk não precisa definir o tipo. Na segunda linha é realizado um comando de atribuição. A terceira linha declara um bloco [ i &gt; 0 ] que ao ser avaliado retorna um True ou False, e este bloco recebe a chamada ao método <strong>whileTrue:</strong> que executará o outro bloco enquanto a condição for verdadeira. Agora a terceira linha vamos quebrar em partes para melhor entendê-la. Primeiro, concatenação de strings em Smalltalk é realizada através de vírgula, portanto a variável <strong>i</strong> está sendo convertida para string (<strong>i asString</strong>) e concatenada com a string &#8216; -&gt; &#8216;, que será então concatenada com a string &#8216;Par&#8217; ou &#8216;Ímpar&#8217;. Para selecionar entre a string Par ou Ímpar é chamado o método <strong>odd</strong> para saber se o número é par, o resultado será um valor True ou False. Como o método <strong>ifTrue:ifFalse:</strong> está definido na classe Boolean, então podemos chamá-lo a partir do objeto retornado pelo método <strong>odd</strong>. Em Smalltalk um método que recebe mais de um parâmetro, possui o seu nome divido em partes, onde cada parte possui um símbolo de dois-pontos. Portanto, <strong>ifTrue:ifFalse:</strong> é um método que recebe dois parâmetros, no caso o bloco que contém a string &#8216;Par&#8217; e o bloco que contém a string &#8216;Ímpar&#8217;. E para terminar, um comando de atribuição para diminuir o valor da variável <strong>i</strong>. A saída deste programa é a seguinte:</p>
<pre>9 -&gt; Par
8 -&gt; Ímpar
7 -&gt; Par
6 -&gt; Ímpar
5 -&gt; Par
4 -&gt; Ímpar
3 -&gt; Par
2 -&gt; Ímpar
1 -&gt; Par</pre>
<p style="text-align: justify; ">Vejamos algo impressionante ao utilizar uma linguagem como o Smalltalk. Os testes a seguir daria trabalho para você conseguir implementá-lo em Java ou C:</p>
<pre>Transcript clear.
1 to: 500 do: [:i |
	Transcript show: '2 elevado a ', (i asString), ' é ',
		(2 raisedTo: i) asString; cr.
].</pre>
<pre>Transcript clear.
Transcript show: 5000 factorial asString.</pre>
<p style="text-align: justify; ">No primeiro trecho de código são impressos todos as potências de 2 entre 1 e 500, detalhe 2^500 gera um número com 151 dígitos (veja que já existe o método <strong>raisedTo:</strong> na classe Number). Agora, ao executar o segundo código, será impresso no Transcript o fatorial de 5000, que é um número com 16326 dígitos. Vai tentar fazer isto em Java!</p>
<p style="text-align: justify; ">Bom, para poder executar este programa é necessário utilizar uma IDE Smalltalk. Uma bastante conhecida é a <strong>Squeak!</strong> que possui o código aberto. Você pode baixá-la a partir do site oficial: <a href="http://squeak.org/Download/">http://squeak.org/</a>, utilize o link da direita da tela para fazer o download, senão você terá que baixar separadamente, a máquina virtual, o código fonte e a imagem para poder começar a utilizá-la. Hoje, o link direto se você for um usário do sistema operacional Windows é:</p>
<p><a href="http://ftp.squeak.org/3.10/win/Squeak3.10.2-7179-win32.zip">http://ftp.squeak.org/3.10/win/Squeak3.10.2-7179-win32.zip</a>.</p>
<p>Basta descompactar e executar o programa Squeak.exe.</p>
<p style="text-align: justify; ">O local para realizar alguns testes como os exemplos acima é o Workspace, no Squeak abra a aba Tools (encontra-se no canto superior direita da janela) clique no ícone que indica o Workspace e arraste-o para o meio da tela. Faça o mesmo com o Transcript para poder ver o resultado da execução do seu programa. Para executar um trecho de código, basta selecionar o código e apertar &lt;CTRL+D&gt; (ou clicar com o botão direito em cima da seleção e selecionar a opção <strong>do it</strong>).</p>
<p style="text-align: justify; ">Para aprender mais sobre Smalltalk vá em sites como:</p>
<p style="text-align: justify; ">
<ul>
<li><a rel="nofollow" href="http://www.goodstart.com/">http://www.goodstart.com/</a></li>
<li><a rel="nofollow" href="http://www.squeak.org/">http://www.squeak.org/</a></li>
<li><a rel="nofollow" href="http://www.smalltalk.org/">http://www.smalltalk.org/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marciobueno.com/linguagens-programacao/smalltalk-primeiras-linguagens-orientadas-objetos/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>É difícil aprender uma linguagem de programação?</title>
		<link>http://marciobueno.com/cpp/dificil-aprender-linguagem-programacao?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dificil-aprender-linguagem-programacao</link>
		<comments>http://marciobueno.com/cpp/dificil-aprender-linguagem-programacao#comments</comments>
		<pubDate>Sat, 17 Jan 2009 01:05:31 +0000</pubDate>
		<dc:creator>Marcio Bueno</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Ensino]]></category>
		<category><![CDATA[Linguagens de Programação]]></category>

		<guid isPermaLink="false">http://marciobueno.com/?p=20</guid>
		<description><![CDATA[Há 9 anos eu comecei a ensinar em instituições de ensino superior. No primeiro semestre como professor de programação fui designado para duas turmas: uma de Java para alunos concluintes e outra de Pascal formada apenas por alunos reprovados na disciplina de Técnicas de Linguagens de Programação I. Pois é, duas turmas com perfis bem [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">Há 9 anos eu comecei a ensinar em instituições de ensino superior. No primeiro semestre como professor de programação fui designado para duas turmas: uma de Java para alunos concluintes e outra de Pascal formada apenas por alunos reprovados na disciplina de Técnicas de Linguagens de Programação I. Pois é, duas turmas com perfis bem distintos.</p>
<p><span id="more-20"></span></p>
<p style="text-align:justify">Eu tomei como desafio a turma de alunos reprovados, pois alguns já estavam fazendo a disciplina pela terceira vez. O que eu implementei na época foi: uma aula na sala com assunto teórico e exercícios para serem feitos no caderno e a outra aula da semana era no laboratório para terminar de reforçar o assunto visto.</p>
<p style="text-align:justify">Essa idéia deu resultado, pois praticamente todos os alunos foram aprovados, infelizmente houve reprovação, pois tinha um aluno que assistia aula a cada 15 dias e outro que conheci no dia da primeira prova. Essa mesma metodologia apliquei para a turma de Java, que eram os concluintes da primeira turma deste curso, uma turma pequena, porém esforçada. O resultado desta turma foi muito gratificante, com 100% de aprovação.</p>
<p style="text-align:justify">Fiquei também muito feliz quando escutei do diretor que eu tinha conseguido um milagre, pois muitos alunos estavam elogiando um professor de linguagem de programação, algo realmente raro por ali.</p>
<p style="text-align:justify">Ao longo destes anos, ensinando diversas linguagens de programação e entrando em contato com os mais variados níveis de dificuldades e dúvidas, comecei a alimentar o sonho de desenvolver um curso capaz de atender e suprir as necessidades e lacunas por mim identificadas.</p>
<p style="text-align:justify">Finalmente o sonho da criação de cursos de linguagens de programação está se tornando realidade. E para estreiar, o primeiro curso a distância oferecido é o de <a href="http://marciobueno.com/treinamentos/cpp-orientado-objetos">C++ orientado a objetos</a>.</p>
<p style="text-align:justify">Quero  aproveitar para agradecer a todos os meus alunos que nestes 9 anos com seus feedbacks, críticas e incentivos me ajudaram a desenvolver e aprimorar a minha metodologia de ensino.</p>
<p style="text-align:justify"><em>Muito obrigado e sucesso para todos,</em></p>
]]></content:encoded>
			<wfw:commentRss>http://marciobueno.com/cpp/dificil-aprender-linguagem-programacao/feed</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
	</channel>
</rss>

