jueves, 5 de mayo de 2016

[ABRIL 19 2016]


En los pasos siguientes, vamos a ver cómo combinar los elementos detectados e integrarlos en la estructura de un algoritmo. No obstante, lo vamos a hacer, poco a poco, a medida que vayamos construyendo dicho algoritmo.

Paso 1
Comprender qué es lo que se nos está pidiendo. En este caso, el enunciado del ejercicio es:

"Diseñe el algoritmo de un 
programa que:

1º) Pida por teclado un número (dato entero).
2º) Muestre por pantalla los mensajes:

    * Ha introducido <cantidad_de_números> número(s)
    * La suma es <suma>

3º) Pregunte al usuario si desea introducir otro o no.
4º) Repita los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no).
5º) Muestre por pantalla la media aritmética (dato real) de los números introducidos.

 Paso 2
Escribir la estructura básica del algoritmo en pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

inicio

...

fin
Obsérvese que, ya podemos nombrar al algoritmo mediante un identificador, en este caso, podemos escribir:

Media_aritmetica_de_numeros_introducidos

En 
ordinograma, comenzaremos escribiendo el inicio y fin del cuerpo:
Ejemplo Ordinograma Paso 2
· Paso 3
Según se nos indica en el primer punto del ejercicio, el algoritmo debe:

1º) Pedir por teclado un número (dato entero).

Mostrándose por pantalla:

Introduzca un número entero: <número>

Por consiguiente, en el algoritmo hay que escribir una instrucción de salida y otra de entrada. En pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

fin
Se tiene que declarar la variable numero, así escribimos:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 3
Recordemos que, en los ordinogramas no se representa la declaración de variables.
· Paso 4
A continuación, en el segundo punto del ejercicio se nos indica que:

2º) El programa debe mostrar por pantalla los mensajes:

* Ha introducido <cantidad_de_números> número(s)
* La suma es <suma>

De modo que, incorporamos dos nuevas instrucciones de salida al algoritmo, en las que vamos a mostrar el valor de una variable contador para mostrar la cantidad de números introducidos por el usuario y, por otra parte, el valor de una variable acumulador, para mostrar la suma de dichos números. En pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
Y declaramos las nuevas variables: contador y acumulador.
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero acumulador, contador, numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 4
Pero, ¿qué valores tienen las variables contador y acumulador? Inicialmente, almacenarán un cero (0) cada una de ellas y, después de leer un número, habrá que incrementar el valor de contador en uno (1) y sumar el valor de dicho número a acumulador.
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   escribir( "Introduzca un número entero: " )
   leer( numero )

   acumulador ← acumulador + numero
   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 4
· Paso 5
Atendiendo al tercer punto del ejercicio:

3º) Preguntar al usuario si desea introducir otro número o no.

al algoritmo le añadimos una nueva instrucción de salida, otra de entrada y declaramos una nueva variable (seguir).

En pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   escribir( "Introduzca un número entero: " )
   leer( numero )

   acumulador ← acumulador + numero
   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )

   escribir( "¿Desea introducir otro número (s/n)?: " )
   leer( seguir )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 5
· Paso 6
Teniendo en cuenta el cuarto punto del ejercicio:

4º) Repetir los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no).

es necesario hacer uso de una instrucción de control repetitiva que, como se especifica en la "Nota" del ejercicio, será un bucle hacer...mientras. En cualquier caso, también podríamos habernos hecho las preguntas del apartado 
¿Cuándo usar un bucle u otro? del Curso de Diseño de Algoritmos:

* ¿Se conoce, de antemano, el número de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones? No, por tanto, descartamos el bucle "para".
* ¿El bloque de instrucciones debe ejecutarse al menos una vez? Sí, de forma que, optamos por hacer uso de un bucle "hacer...mientras".

En pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   hacer
     escribir( "Introduzca un número entero: " )
     leer( numero )

     acumulador ← acumulador + numero
     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )
     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )
     leer( seguir )
   mientras ( seguir <> 'n' )
   ...

fin
Fíjese que, la inicialización de las variables contador y acumulador no están dentro del bloque de instrucciones del bucle, ya que, ello provocaría un error de lógica.

En ordinograma:
Ejemplo Ordinograma Paso 6
· Paso 7
Y, finalmente, para el quinto punto:

5º) Mostrar por pantalla la media aritmética (dato real) de los números introducidos.

añadimos una última instrucción. En pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   hacer
     escribir( "Introduzca un número entero: " )
     leer( numero )

     acumulador ← acumulador + numero
     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )
     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )
     leer( seguir )
   mientras ( seguir <> 'n' )

   escribir( "La media aritmética es ", acumulador / contador )
fin
Nótese que, para mostrar la media aritmética no hemos utilizado una nueva variable y, de esta forma, también nos ahorramos escribir una nueva instrucción de asignación:

media_aritmética ← acumulador / contador

En ordinograma, la solución final será:
Ejemplo Ordinograma Paso 7




No hay comentarios.:

Publicar un comentario