|
@@ -69,6 +69,10 @@ print(soma) //imprime o resultado da soma
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+ <div>
|
|
|
+ <img src="./imgs/soma_4_numeros.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+ </div>
|
|
|
</center>
|
|
|
<br />
|
|
|
No entanto a solução muda radicalmente se desejamos escrever um algoritmo que funcione para um número arbitrário de valores de entrada (este número é
|
|
@@ -160,6 +164,10 @@ soma = 0</pre>
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+ <div>
|
|
|
+ <img src="./imgs/soma_n_numeros.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+ </div>
|
|
|
</center>
|
|
|
<h3>Conceito de simulação de um Algoritmo</h3>
|
|
|
Um conceito muito importante à programação é o processo de <b>simulação</b> de um algoritmo. Útil na verificação da corretude do mesmo e também para entender
|
|
@@ -278,7 +286,7 @@ linhas dentro do comando while(C: 5 com 6; Python: linha 4 com 5), além da troc
|
|
|
<pre>
|
|
|
1 int num, soma;
|
|
|
2 scanf("%d", &num);
|
|
|
-3 soma = num;
|
|
|
+3 soma = 0;
|
|
|
4 while (num >= 0){
|
|
|
5 soma = soma + num;
|
|
|
6 scanf(%d, &num);
|
|
@@ -289,7 +297,7 @@ linhas dentro do comando while(C: 5 com 6; Python: linha 4 com 5), além da troc
|
|
|
<td>
|
|
|
<pre>
|
|
|
1 num = input();
|
|
|
-2 soma = num;
|
|
|
+2 soma = 0;
|
|
|
3 while num >= 0:
|
|
|
4 soma = soma + num
|
|
|
5 num = input()
|
|
@@ -298,6 +306,10 @@ linhas dentro do comando while(C: 5 com 6; Python: linha 4 com 5), além da troc
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+<div>
|
|
|
+ <img src="./imgs/soma_n_positivos.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+</div>
|
|
|
</center>
|
|
|
Note também a diferença da inicialização da variável <b>soma</b>. Começando com zero ela ficará com o valor desejado após a primeira execução do comando <i>soma = soma + num</i>,
|
|
|
ou seja, ela assumirá o valor do primeiro elemento da sequência (se este não for negativo). Note também que para uma sequência vazia, ou seja, para a entrada que já começa com um
|
|
@@ -306,7 +318,7 @@ número negativo, o resultado escrito na saida será 0, que é o desejado.<br />
|
|
|
5 e 6 no C, 4 e 5 no Python. Note que após a leitura do número -5, não é executado o comando <b>soma = soma + num</b>, pois o teste do <b>while</b> fica falso e o programa para
|
|
|
o comando de escrita (printf no C; print no Python) </i><br /><br />
|
|
|
|
|
|
-<b>Exercício 3: </b><i>Ainda considerando o enunciado do problmea 2, verifique o que há de errado com o programa a seguir:</i><br />
|
|
|
+<b>Exercício 3: </b><i>Ainda considerando o enunciado do problema 2, verifique o que há de errado com o programa a seguir:</i><br />
|
|
|
<center>
|
|
|
<table>
|
|
|
<tr>
|
|
@@ -365,6 +377,10 @@ o comando de escrita (printf no C; print no Python) </i><br /><br />
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+ <div>
|
|
|
+ <img src="./imgs/potencia_x_3.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+ </div>
|
|
|
</center>
|
|
|
Portanto a dificuldade deste problema se encontra na repetição arbitrária: repetir a operação de multiplicação um número variável de vezes, dependente da vontade do usuário.<br />
|
|
|
Novamente, vamos iniciar o processo de resolução examinando um exemplo, x=2 e n=7.<br />
|
|
@@ -471,6 +487,10 @@ Interrompido o laço, a resposta estará armazenada em <b>result</b>:
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+<div>
|
|
|
+ <img src="./imgs/potencia_x_n.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+</div>
|
|
|
</center>
|
|
|
<b>Exercício 4</b> <i>Repare que o programa dá a resposta correta quando n==0, porém quando x==0 e n==0 teriamos um resultado, mesmo que na matemática 0<sup>0</sup>
|
|
|
é indeterminado.</i><br />
|
|
@@ -488,7 +508,7 @@ Interrompido o laço, a resposta estará armazenada em <b>result</b>:
|
|
|
2 scanf("%d %d", &x, &n);
|
|
|
3 cont = 0;
|
|
|
4 while (cont < n){
|
|
|
-5 c = x*x;
|
|
|
+5 x = x*x;
|
|
|
6 cont = cont+1;
|
|
|
7 }
|
|
|
8 printf("%d", x);
|
|
@@ -507,6 +527,10 @@ Interrompido o laço, a resposta estará armazenada em <b>result</b>:
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+<div>
|
|
|
+ <img src="./imgs/potencia_x_n_errada.png" /><br />
|
|
|
+ <span>Código no iVProg</span>
|
|
|
+</div>
|
|
|
</center>
|
|
|
<b>Exercício 7</b> <i>É possível alterar o programa-solução do problema 3, dispensando a variável contadora <b>cont</b>? Isto é, tente deduzir uma outra versão para o
|
|
|
referido problema, utilizando apenas três variáveis <b>x</b>, <b>n</b> e <b>result</b></i>.
|