<h4>Patrones de programacin</h4>

Programar no significa colocar lneas al azar y ver si se obtienen
los resultados requeridos.  Tampoco significa concebir una solucin
partiendo desde cero.  Siempre se reutilizan elementos de programas
conocidos.  Es as como al estudiar los programas se pueden 
observar patrones de organizacin de las instrucciones que se repiten
una y otra vez.  Estas instrucciones rara vez son idnticas, pero exiben
ciertas similitudes, que denominaremos patrones de programacin.<p>

Es importante conocer estos patrones de programacin porque son muy
tiles para concebir nuevos programas.  Ellos resuelven problemas
conocidos sin tener que re-inventar soluciones para esos problemas
una y otra vez.<p>

Un ejemplo de estos patrones de programacin es la acumulacin.  Este
patrn se usa para realizar clculos como la suma de varios valores
calculados en las iteraciones de un ciclo:<p>

<center>
suma= val1 + val2 + val3 + ... + valn<br>
producto= fac1 * fac2 * fac3 * ... * facn
</center><p>

La forma general de este patrn es:<p>

<code><pre>
    ``tipo'' ``variable'' = ``valor inicial'';
    ...
    while ( ... ) {
      ...
      ``variable'' = ``variable'' ``operador'' ``expresin'';
      ...
    }
</pre></code>

Ejemplos:

<ol>

<li>Calcular el promedio de notas:<p>

<sample><pre>
    ? 4.0
    ? 5.0
    ? 6.0
    ? 0.0
    Promedio= 5.0
</pre></sample>

Solucin: se necesita sumar las notas y adems contabilizar
cuantas notas ha ingresado el usuario.<p>

<code><pre>
    double suma= 0;
    <b>int numNotas= 0;</b>
    double nota;
    print("? ");
    nota= readDouble();
    while (nota!=0.0) {
      suma= suma+nota;
      <b>numNotas= numNotas+1;</b>
      nota= readDouble();
    }</b>
    print("Promedio= ");
    println(suma/notas);
</pre></code>

<li>Calcular el factorial de un nmero:<p>

Definicin:<p>

<center>
0! = 1<br>
n! = (n-1)!, n>=1
</center><p>

Ms informalmente necesitamos:

<center>
fact= 1 * 2 * 3 * ... * (n-1) * n
</center><p>

Solucin:<p>

<code><pre>
    print("? ");
    int n= readInt();
    <b>double fact= 1.0;</b>
    int i= 0;
    while (<b>i&lt;=n</b>) {
      <b>fact= fact*i;</b>
      i= i+1;
    }
    print("El factorial es ");
    println(fact);
</pre></code>

</ol>


