<?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>Introdução à Programação 1 e 2 (2009) &#187; for</title>
	<atom:link href="http://www.brunocampagnolo.com/2009ip/tag/for/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brunocampagnolo.com/2009ip</link>
	<description>PUCPR &#62; Design Digital &#62; 1o e 2o Períodos</description>
	<lastBuildDate>Fri, 18 Dec 2009 10:33:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Aula 08 &#8211; Estrutura de repetição</title>
		<link>http://www.brunocampagnolo.com/2009ip/2009/05/19/aula-08-estrutura-de-repeticao/</link>
		<comments>http://www.brunocampagnolo.com/2009ip/2009/05/19/aula-08-estrutura-de-repeticao/#comments</comments>
		<pubDate>Tue, 19 May 2009 19:36:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[aulas]]></category>
		<category><![CDATA[do while]]></category>
		<category><![CDATA[estrutura de repetição]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[repetição]]></category>
		<category><![CDATA[while]]></category>

		<guid isPermaLink="false">http://www.brunocampagnolo.com/2009ip/?p=765</guid>
		<description><![CDATA[Objetivo
Trabalhamos até agora com estruturas que permitiram a execução de nossos códigos linha a linha e apenas uma vez. A execução de um conjunto de linhas poderia ser controlada única e exclusivamente através da estrutura condicional (if). Para que se executasse um conjunto de linhas diversas vezes, a cada frame, utilizamos o bloco draw.
Entretanto, muitas [...]]]></description>
			<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Trabalhamos até agora com estruturas que permitiram a execução de nossos códigos linha a linha e apenas uma vez. A execução de um conjunto de linhas poderia ser controlada única e exclusivamente através da estrutura condicional (if). Para que se executasse um conjunto de linhas diversas vezes, a cada frame, utilizamos o bloco draw.</p>
<p>Entretanto, muitas vezes será necessário executar um conjunto de linhas dentro de um mesmo frame. Para isto, podemos utilizar a estrutura de repetição.</p>
<h3>Estrutura de Repetição</h3>
<p>É a estrutura de controle do fluxo lógico que permite executar diversas vezes um mesmo trecho do algoritmo até que uma certa condição seja satisfeita. Existem diversos tipos de estruturas de repetição, o que as diferencia é o local no qual a condição é tratada. Assim, existem os tipos de estrutura de repetição:</p>
<ul>
<li>Estrutura de Repetição com teste no início;</li>
<li>Estrutura de Repetição com teste no final;</li>
<li>Estrutura de Repetição com variável de controle;</li>
<li>Estrutura de Repetição com teste no meio.</li>
</ul>
<h3>Estrutura de Repetição com teste no início</h3>
<p>Nessa estrutura, um fluxo de execução será repetido <strong>enquanto uma certa condição e</strong>steja sendo satisfeita.</p>
<pre style="padding-left: 30px;">while (condição)</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; comando a ser executado</pre>
<p>Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre colchetes ({}).</p>
<pre style="padding-left: 30px;">while (condição)</pre>
<pre style="padding-left: 30px;">{</pre>
<pre style="padding-left: 30px;">    primeiro comando a ser executado</pre>
<pre style="padding-left: 30px;">    segundo comando a ser executado</pre>
<pre style="padding-left: 30px;">    ...</pre>
<pre style="padding-left: 30px;">    comando n a ser executado</pre>
<pre style="padding-left: 30px;">}</pre>
<p>Dessa forma, a condição é testada antes de executar o trecho de código. Ou seja, se, da primeira vez o resultado for falso, os comandos não são executados nenhuma vez.</p>
<p>Observe que se a condição for sempre verdadeira, a estrutura de repetição se repete indefinidamente e o programa fica travado em um loop infinito. Neste caso, o processamento fica travado nesta linha.</p>
<h3>Estrutura de repetição com teste no final</h3>
<p>Nessa estrutura, um fluxo de execução será repetido pelo menos uma vez. Cada vez que terminar a execução de um dos fluxos, o teste condicional é feito para verificar se o fluxo é executado novamente.</p>
<pre style="padding-left: 30px;">do
&nbsp;&nbsp;&nbsp; comando a ser executado</pre>
<pre style="padding-left: 30px;">while (condição)</pre>
<p>Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre chaves ({}).</p>
<pre style="padding-left: 30px;">do</pre>
<pre style="padding-left: 30px;">{
&nbsp;&nbsp;&nbsp; primeiro comando a ser executado</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; segundo comando a ser executado
&nbsp;&nbsp;&nbsp; ...</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; comando n a ser executado
} while (condição)</pre>
<p>Dessa forma, a condição é testada depois de executar o trecho de código. Ou seja, se, da primeira vez o resultado da condição for falso, mesmo assim os comandos são executados<strong> pelo menos uma vez.</strong></p>
<h3>Estrutura de Repetição com variável de controle</h3>
<p>Ocorrem casos que é difícil determinar quantas vezes um bloco será executado. Sabe-se que ele será executado quando uma certa condição for satisfeita. Às vezes, não é intuitivo determinar quantas vezes um bloco vai ser executado. Nestas vezes, os comandos while e do while são recomendados.<br />
No caso de se saber quantas vezes um bloco deve ser executado, o comando for permite a execução de um bloco um número determinado de vezes.</p>
<pre style="padding-left: 30px;">for (inicialização;condição;incremento)
&nbsp;&nbsp;&nbsp; comando</pre>
<p>Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre chaves ({}).</p>
<pre style="padding-left: 30px;">for (inicialização;condição;incremento)</pre>
<pre style="padding-left: 30px;">{</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; comando 1</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; ...</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; comando n
}</pre>
<p>O comando for é equivalente a:</p>
<pre style="padding-left: 30px;">inicialização</pre>
<pre style="padding-left: 30px;">while (condição)</pre>
<pre style="padding-left: 30px;">{</pre>
<pre style="padding-left: 60px;">comando 1</pre>
<pre style="padding-left: 60px;">...</pre>
<pre style="padding-left: 60px;">comando n</pre>
<pre style="padding-left: 30px;">    incremento
}</pre>
<p>&nbsp;</p>
<p>Por exemplo:</p>
<pre style="padding-left: 30px;">for (num=1;num&lt;=10;num=num+1)
&nbsp;&nbsp;&nbsp; comando</pre>
<p>É equivalente a:</p>
<pre style="padding-left: 30px;"><em>num=1 </em></pre>
<pre style="padding-left: 30px;"><em>while (num&lt;=10) </em><em>{ </em><em>&nbsp;&nbsp;&nbsp;
    comando</em><em>
&nbsp;&nbsp;&nbsp; num = num + 1
} </em></pre>
<h3>Estrutura de repetição com teste no meio</h3>
<p>Às vezes, trabalha-se com condições complexas que são difíceis de serem representadas no início ou no final de um bloco. Dessa forma, a estrutura de repetição com teste no meio utiliza-se do comando break que é útil para interromper a repetição a qualquer momento da execução. Quando o fluxo é interrompido, passa-se, diretamente, para o fluxo imediatamente superior.</p>
<pre style="padding-left: 30px;">while (true) //Ou outra condição</pre>
<pre style="padding-left: 30px;">{
&nbsp;&nbsp;&nbsp; primeiro comando a ser executado</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; segundo comando a ser executado
&nbsp;&nbsp;&nbsp; if (condição)</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break
&nbsp;&nbsp;&nbsp; terceiro comando a ser executado</pre>
<pre style="padding-left: 30px;">&nbsp;&nbsp;&nbsp; n comando a ser executado
}</pre>
<h3>O comando continue</h3>
<p>O comando continue interrompe a execução de uma iteração do laço e passa para a próxima. Quando o comando continue é chamado dentro de um &#8220;for&#8221; o controle passa para o comando de incremento.</p>
<h3>Comparação entre as estruturas de repetição</h3>
<table border="1">
<tbody>
<tr>
<th>Estrutura</th>
<th>Quando é testada a condição</th>
<th>Quantidade de<br />
execuções</th>
<th>Efeito do comando continue</th>
</tr>
<tr>
<td>while</td>
<td>início</td>
<td>0 ou mais</td>
<td>Passa para a próxima<br />
iteração, ou seja, testa a condição</td>
</tr>
<tr>
<td>do while</td>
<td>fim</td>
<td>1 ou mais</td>
<td>Passa para a próxima<br />
iteração, ou seja, testa a condição</td>
</tr>
<tr>
<td>for</td>
<td>início</td>
<td>0 ou mais</td>
<td>Faz o incremento e depois testa<br />
a condição</td>
</tr>
<tr>
<td>Teste no meio</td>
<td>Qualquer lugar</td>
<td>Depende se utiliza while, do<br />
while ou for</td>
<td>Depende se utiliza while, do while ou for.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Exemplos em Processing</h2>
<p>No exemplo abaixo, um conjunto de linhas é desenhado através da estrutura de repetição for.</p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex01forlinhas.png"><img class="alignnone size-full wp-image-776" title="aula08ex01forlinhas" src="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex01forlinhas.png" alt="aula08ex01forlinhas" width="284" height="420" /></a></p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/index.html">Executar!</a></p>
<p>&nbsp;</p>
<p>Neste exemplo, uma elipse tem seu tamanho alterado a partir de uma variável i.</p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex02forellipse.png"><img class="alignnone size-full wp-image-777" title="aula08ex02forellipse" src="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex02forellipse.png" alt="aula08ex02forellipse" width="358" height="471" /></a></p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/index1.html">Executar!</a></p>
<p>É possível misturar a estrutura de repetição com a estrutura condicional.</p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex03foreif.png"><img class="alignnone size-full wp-image-784" title="aula08ex03foreif" src="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex03foreif.png" alt="aula08ex03foreif" width="366" height="528" /></a></p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/index2.html">Executar!</a></p>
<p>Em mais um exemplo, o degradê é obtido através do desenho de uma linha e alteração de cor ao mesmo tempo.</p>
<p>Observe que este exemplo já foi <a href="http://www.brunocampagnolo.com/2009ip/2009/03/12/exercicio-p02-variaveis-do-processing-e-o-modo-continuo/">tratado anteriormente</a>.</p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex04forelinhas2.png"><img class="alignnone size-full wp-image-785" title="aula08ex04forelinhas2" src="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex04forelinhas2.png" alt="aula08ex04forelinhas2" width="325" height="433" /></a></p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/index3.html">Executar!</a></p>
<p>Por padrão, a estrutura for produz repetições em uma dimensão. Colocando uma estrutura for dentro da outra, pode-se iterar por duas dimensões. No exemplo a seguir, o ponto percorre as linhas e colunas durante a execução.</p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex05forepontos.png"><img class="alignnone size-full wp-image-792" title="aula08ex05forepontos" src="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/aula08ex05forepontos.png" alt="aula08ex05forepontos" width="325" height="443" /></a></p>
<p><a href="http://www.brunocampagnolo.com/2009ip/wp-content/uploads/2009/05/index4.html">Executar!</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunocampagnolo.com/2009ip/2009/05/19/aula-08-estrutura-de-repeticao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
