Respuesta :
¿Cómo se Diseña un Algoritmo?En programación, un algoritmo establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema y, para representarlo, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.
Así pues, en este artículo, voy a explicar, con un ejemplo, los pasos que "mentalmente" se pueden seguir para diseñar el algoritmo, en Pseudocódigo CEE (C En Español) y ordinograma, de un programa que dé solución a un problema de programación.
En concreto, vamos a ver, desmenuzadamente, cómo se puede diseñar el algoritmo para resolver el ejercicio 1, "Media aritmética de números introducidos", de la sección Repetitivahacer...mientras del listado de ejercicios de programación resueltos en diferentes lenguajes.
De forma que, los pasos a seguir (siete en este caso) son los siguientes:· Paso 1Comprender 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.
Nota: Utilice un bucle hacer...mientras."
En pantalla:Introduzca un número entero: 3
Ha introducido 1 número(s)
La suma es 3
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 7
Ha introducido 2 número(s)
La suma es 10
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 6
Ha introducido 3 número(s)
La suma es 16
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 13
Ha introducido 4 número(s)
La suma es 29
¿Desea introducir otro (s/n)?: n
La media aritmética es 7.25Introduzca un número entero: 8
Ha introducido 1 número(s)
La suma es 8
¿Desea introducir otro (s/n)?: n
La media aritmética es 8.000000Simplemente, al leer el enunciado del problema, ya podemos hacernos una idea de algunas características importantes del algoritmo que vamos a diseñar:
* Exiten 5 instrucciones de salida para mostrar por pantalla:
Introduzca un número entero:
Ha introducido X número(s)
La suma es Y
¿Desea introducir otro (s/n)?:
La media aritmética es Z
* Exiten 2 instruccciones de entrada. Una para recoger un dato númerico entero después de mostrar por pantalla:
Introduzca un número entero:
y, otra, para recoger un dato de tipo carácter después de mostrar por pantalla:
¿Desea introducir otro (s/n)?:
* En algún momento, se deberá calcular:
la cantidad de números introducidos,
la suma de los mismos y
la media aritmética de dichos números,
por tanto, seguramente, emplearemos 2 ó 3 instrucciones de asignación.
* Tendremos que utilizar varias variables para:
recoger el o los números que introduzca el usuario por teclado (numero),
contar los números introducidos (contador),
almacenar la suma de dichos números (acumulador),
preguntar al usuario si desea introducir otro número o no (seguir),
¿calcular la media aritmética (media_aritmetica)?
* Necesitaremos un bucle para que el usuario pueda introducir los números que desee (solamente uno o más), de hecho, ya se nos especifica, en la "Nota" del enunciado, que debemos hacer uso de un bucle hacer...mientras.
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 2Escribir la estructura básica del algoritmo en pseudocódigo:algoritmo Media_aritmetica_de_numeros_introducidos
inicio
...
finObsé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:
Así pues, en este artículo, voy a explicar, con un ejemplo, los pasos que "mentalmente" se pueden seguir para diseñar el algoritmo, en Pseudocódigo CEE (C En Español) y ordinograma, de un programa que dé solución a un problema de programación.
En concreto, vamos a ver, desmenuzadamente, cómo se puede diseñar el algoritmo para resolver el ejercicio 1, "Media aritmética de números introducidos", de la sección Repetitivahacer...mientras del listado de ejercicios de programación resueltos en diferentes lenguajes.
De forma que, los pasos a seguir (siete en este caso) son los siguientes:· Paso 1Comprender 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.
Nota: Utilice un bucle hacer...mientras."
En pantalla:Introduzca un número entero: 3
Ha introducido 1 número(s)
La suma es 3
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 7
Ha introducido 2 número(s)
La suma es 10
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 6
Ha introducido 3 número(s)
La suma es 16
¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 13
Ha introducido 4 número(s)
La suma es 29
¿Desea introducir otro (s/n)?: n
La media aritmética es 7.25Introduzca un número entero: 8
Ha introducido 1 número(s)
La suma es 8
¿Desea introducir otro (s/n)?: n
La media aritmética es 8.000000Simplemente, al leer el enunciado del problema, ya podemos hacernos una idea de algunas características importantes del algoritmo que vamos a diseñar:
* Exiten 5 instrucciones de salida para mostrar por pantalla:
Introduzca un número entero:
Ha introducido X número(s)
La suma es Y
¿Desea introducir otro (s/n)?:
La media aritmética es Z
* Exiten 2 instruccciones de entrada. Una para recoger un dato númerico entero después de mostrar por pantalla:
Introduzca un número entero:
y, otra, para recoger un dato de tipo carácter después de mostrar por pantalla:
¿Desea introducir otro (s/n)?:
* En algún momento, se deberá calcular:
la cantidad de números introducidos,
la suma de los mismos y
la media aritmética de dichos números,
por tanto, seguramente, emplearemos 2 ó 3 instrucciones de asignación.
* Tendremos que utilizar varias variables para:
recoger el o los números que introduzca el usuario por teclado (numero),
contar los números introducidos (contador),
almacenar la suma de dichos números (acumulador),
preguntar al usuario si desea introducir otro número o no (seguir),
¿calcular la media aritmética (media_aritmetica)?
* Necesitaremos un bucle para que el usuario pueda introducir los números que desee (solamente uno o más), de hecho, ya se nos especifica, en la "Nota" del enunciado, que debemos hacer uso de un bucle hacer...mientras.
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 2Escribir la estructura básica del algoritmo en pseudocódigo:algoritmo Media_aritmetica_de_numeros_introducidos
inicio
...
finObsé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:
Algoritmos AritméticosSe basan también en las probabilidades de repetición de los mensajes a laentrada, aunque su metodología es my distinta. Lo que hacen es representarun valor del intervalo [0,1] con mayor numero de decimales -mayor precision-cuanto mayor sea la información de los datos a comprimir. Basicamente vadividiendo el intervalo [0,1] sucesivamente hasta obtener un numero -dentrode ese intervalo- que utilice menos bits para representar toda la entrada. Asíel decompresor podrá reconstruir la entrada con ese número más lainformación del numero de elementos codificados y sus probabilidadescorrespondientes. Es un proceso bastante eficiente, aunque como se acaba dedecir las probabilidades deben ser incluidas en el fichero comprimido. Por ellose suelen utilizar también modelos adaptativos, que cambian dinámicamentecon la entrada