Vous êtes sur la page 1sur 14

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

Cmo se Disea un Algoritmo?


En programacin, un algoritmo establece, de manera genrica e informal, la secuencia de pasos o acciones que resuelve un determinado problema y, para representarlo, se utiliza, fundamentalmente, dos tipos de notacin: pseudocdigo y diagramas de flujo. As pues, en este artculo, voy a explicar, con un ejemplo, los pasos que "mentalmente" se pueden seguir para disear el algoritmo, en Pseudocdigo CEE (C En Espaol) y ordinograma, de un programa que d solucin a un problema de programacin. En concreto, vamos a ver, desmenuzadamente, cmo se puede disear el algoritmo para resolver el ejercicio 1, "Media aritmtica de nmeros introducidos", de la seccin Repetitiva hacer...mientras del listado de ejercicios de programacin resueltos en diferentes lenguajes. De forma que, los pasos a seguir (siete en este caso) son los siguientes: Paso 1 Comprender qu es lo que se nos est pidiendo. En este caso, el enunciado del ejercicio es: "Disee el algoritmo de un programa que: 1) Pida por teclado un nmero (dato entero). 2) Muestre por pantalla los mensajes: * Ha introducido <cantidad_de_nmeros> nmero(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 aritmtica (dato real) de los nmeros introducidos. Nota: Utilice un bucle hacer...mientras." En pantalla: Introduzca un nmero entero: 3 Ha introducido 1 nmero(s) La suma es 3 Desea introducir otro (s/n)?: s Introduzca un nmero entero: 7 Ha introducido 2 nmero(s) La suma es 10 Desea introducir otro (s/n)?: s Introduzca un nmero entero: 6 Ha introducido 3 nmero(s)
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

La suma es 16 Desea introducir otro (s/n)?: s Introduzca un nmero entero: 13 Ha introducido 4 nmero(s) La suma es 29 Desea introducir otro (s/n)?: n La media aritmtica es 7.25 Introduzca un nmero entero: 8 Ha introducido 1 nmero(s) La suma es 8 Desea introducir otro (s/n)?: n La media aritmtica es 8.000000 Simplemente, al leer el enunciado del problema, ya podemos hacernos una idea de algunas caractersticas importantes del algoritmo que vamos a disear: * Existen 5 instrucciones de salida para mostrar por pantalla: Introduzca un nmero entero: Ha introducido X nmero(s) La suma es Y Desea introducir otro (s/n)?: La media aritmtica es Z * Existen 2 instruccciones de entrada. Una para recoger un dato nmerico entero despus de mostrar por pantalla: Introduzca un nmero entero: y, otra, para recoger un dato de tipo carcter despus de mostrar por pantalla: Desea introducir otro (s/n)?: * En algn momento, se deber calcular: la cantidad de nmeros introducidos, la suma de los mismos y la media aritmtica de dichos nmeros, por tanto, seguramente, emplearemos 2 3 instrucciones de asignacin. * Tendremos que utilizar varias variables para:
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

recoger el o los nmeros que introduzca el usuario por teclado (numero), contar los nmeros introducidos (contador), almacenar la suma de dichos nmeros (acumulador), preguntar al usuario si desea introducir otro nmero o no (seguir), calcular la media aritmtica (media_aritmetica)? * Necesitaremos un bucle para que el usuario pueda introducir los nmeros que desee (solamente uno o ms), de hecho, ya se nos especfica, en la "Nota" del enunciado, que debemos hacer uso de un bucle hacer...mientras. En los pasos siguientes, vamos a ver cmo 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 2 Escribir la estructura bsica del algoritmo en pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos inicio ... fin Obsrvese 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:

Paso 3 Segn se nos indica en el primer punto del ejercicio, el algoritmo debe: 1) Pedir por teclado un nmero (dato entero). Mostrndose por pantalla: Introduzca un nmero entero: <nmero>
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

Por consiguiente, en el algoritmo hay que escribir una instruccin de salida y otra de entrada. En pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos inicio escribir( "Introduzca un nmero entero: " ) leer( numero ) ... fin Se tiene que declarar la variable nmero, as escribimos: algoritmo Media_aritmetica_de_numeros_introducidos variables entero numero inicio escribir( "Introduzca un nmero entero: " ) leer( numero ) ... fin

En ordinograma: Recordemos que, en los ordinogramas no se representa la declaracin de variables. Paso 4 A continuacin, en el segundo punto del ejercicio se nos indica que: 2) El programa debe mostrar por pantalla los mensajes: * Ha introducido <cantidad_de_nmeros> nmero(s)
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

* 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 nmeros introducidos por el usuario y, por otra parte, el valor de una variable acumulador, para mostrar la suma de dichos nmeros. En pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos variables entero numero inicio escribir( "Introduzca un nmero entero: " ) leer( numero ) ... escribir( "Ha introducido ", contador, " nmero(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 nmero entero: " ) leer( numero ) ... escribir( "Ha introducido ", contador, " nmero(s)" ) escribir( "La suma es ", acumulador ) ... fin

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

En ordinograma:

Pero, qu valores tienen las variables contador y acumulador? Inicialmente, almacenarn un cero (0) cada una de ellas y, despus de leer un nmero, habr que incrementar el valor de contador en uno (1) y sumar el valor de dicho nmero a acumulador. algoritmo Media_aritmetica_de_numeros_introducidos variables entero acumulador, contador, numero inicio acumulador 0 contador 0 escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero contador contador + 1 escribir( "Ha introducido ", contador, " nmero(s)" ) escribir( "La suma es ", acumulador ) ... fin
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

En ordinograma:

Paso 5 Atendiendo al tercer punto del ejercicio: 3) Preguntar al usuario si desea introducir otro nmero o no. al algoritmo le aadimos una nueva instruccin de salida, otra de entrada y declaramos una nueva variable (seguir). En pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos variables caracter seguir
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

entero acumulador, contador, numero inicio acumulador 0 contador 0 escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero contador contador + 1 escribir( "Ha introducido ", contador, " nmero(s)" ) escribir( "La suma es ", acumulador ) escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) ... fin

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

En ordinograma:

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 instruccin de control repetitiva que, como se especifica en la
j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

"Nota" del ejercicio, ser un bucle hacer...mientras. En cualquier caso, tambin podramos habernos hecho las preguntas del apartado Cundo usar un bucle u otro? del Curso de Diseo de Algoritmos: * Se conoce, de antemano, el nmero 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 pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos variables caracter seguir entero acumulador, contador, numero inicio acumulador 0 contador 0 hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero contador contador + 1 escribir( "Ha introducido ", contador, " nmero(s)" ) escribir( "La suma es ", acumulador ) escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) ... fin Fjese que, la inicializacin de las variables contador y acumulador no estn dentro del bloque de instrucciones del bucle, ya que, ello provocara un error de lgica. En ordinograma:

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

Paso 7 Y, finalmente, para el quinto punto: 5) Mostrar por pantalla la media aritmtica (dato real) de los nmeros introducidos. aadimos una ltima instruccin. En pseudocdigo: algoritmo Media_aritmetica_de_numeros_introducidos variables caracter seguir entero acumulador, contador, numero inicio acumulador 0 contador 0 hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero contador contador + 1 escribir( "Ha introducido ", contador, " nmero(s)" ) escribir( "La suma es ", acumulador ) escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) escribir( "La media aritmtica es ", acumulador / contador ) fin Ntese que, para mostrar la media aritmtica no hemos utilizado una nueva variable y, de esta forma, tambin nos ahorramos escribir una nueva instruccin de asignacin: media_aritmtica acumulador / contador En ordinograma, la solucin final ser:

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Desarrollo de algoritmos Jos Francisco Meza Nicols Seccin 44

Puede consultar la codificacin de este algoritmo en lenguaje C y en Pascal. No obstante, tngase en cuenta que en Pascal se hace uso del bucle "repetir...hasta" en vez de "repetir...mientras". Si le ha gustado este artculo y desea incluirlo en su sitio web, puede hacerlo sin ningn problema, siempre y cuando cite como fuente del mismo a www.carlospes.com

j.fco_mn@live.com.mx Facultad de Contadura y Ciencias Administrativas | UMSNH

Vous aimerez peut-être aussi