Ir al contenido principal

Algoritmos: Funciones en pseudocódigo...

En el post anterior vimos como armar los algoritmos para resolver problemas y vimos algunos ejemplos básicos. Avanzando en el tema de algoritmos, nos encontramos con el concepto de funciones.

Una función es un subprograma que se escribe como un subalgoritmo del programa principal. Las funciones tienen la característica de poder recibir una o más entradas (argumentos) y devolver sólo una salida. 

También existen los procedimientos que consisten en funciones que no devuelven ninguna salida, pero estos los utilizaremos a la hora de programar, en pseudocódigo veremos sólo funciones.

Éstas son muy útiles para refinar nuestros algoritmos y para resolver problemas generales, o acciones que se realizan reiteradas veces. De manera que podemos volver a utilizarlas con sólo hacer un llamado a las mismas, ya sea en un mismo algoritmo o en otros. 

Estructura de una función:

Las funciones mantienen la misma estructura que vimos para un algoritmo, sólo que con algunas diferencias en los elementos de la cabecera y el retorno de la función.

1) Se recomienda utilizar nombres con verbos que definan la acción que realiza la función.

2) Al igual que en un algoritmo tradicional, tenemos valores de entrada, sólo que aquí reciben el nombre de argumentos.

3) Aquí sólo tenemos un valor de salida que llamamos retorno de la función.

4, 5 y 7) Igual que en un algoritmo tradicional.

6) Al final de todas nuestras instrucciones, debemos asignar a nuestra función el valor que debe retornar. Para ello, le asignamos al nombre de nuestra función el contenido de nuestra variable salida.

Llamando a una función desde un algoritmo:

Para hacer un llamado a una función desde un algoritmo, basta con asignarle a una variable del mismo tipo que la salida de la función el retorno de la misma.


También puede usarse el valor de la función dentro de una condición:



Siempre haciendo el llamado a la función y asignando o comparando el valor que retorna.
  


Si fuera un procedimiento (función que no devuelve valor), bastaría con hacer el llamado:



EJEMPLO:

Para finalizar esta entrada, haremos un ejemplo sencillo usando dentro de nuestro algoritmo una función.

  • Calcular el producto de dos números enteros positivos mediante sumas sucesivas:


Podemos ver cómo asignamos el valor de nuestra función a una variable prod que luego se muestra en pantalla. 


La función lo que hace es calcular el producto a través de sumas sucesivas que logramos a través de una iteración. 


Para reducir la complejidad de este algoritmo, podemos agregar una condición que evalúe cuál de nuestras entradas es mayor, de manera que luego realice menos iteraciones.




Comentarios

  1. disculpen alguien me puede ayudar con el siguiente programa: realizar un menu que ofrezca las opciones: 1. pago de seguro de auto, en este el usuario indicara a cuantos meses lo desea a pagar, 2. aplicar el 5.3% de impuesto al maestro que gane mas de 7000 quincenal, imprimir cuanto ganar

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

C: Conversiones de tipo (casting) en C...

El casting o simplemente cast  nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad. Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir. Veamos un ejemplo: Declaramos una variable de tipo int con un identificador tan creativo como "a" y le realizamos diferentes cast a a para mostrarlo como si fuera un float, un double y un char en un printf. Lo que obtendríamos en pantalla sería lo siguiente: Donde tenemos el valor de nuestro a, a convertido en float y double (mostrándolo con 3 cifras decimales) y a convertido en char. Si vemos este último caso, al hacer la conversión de "a" a char toma a como el código ascii de

C: Ejemplos: Congruencia de Zeller (nivel básico) ...

La Congruencia de Zeller es un algoritmo que se atribuye al matemático alemán Julius Christian Johannes Zeller que vivió en el siglo XIX. Este algoritmo nos permite determinar el día de la semana que le corresponde a una fecha determinada del calendario Gregoriano. La fórmula que nosotros usaremos (con algunas modificaciones respecto de la original para poder usarla en  informática) es la siguiente: Donde h es el día de la semana (entre 0 y 6), J es año/100 (la centuria) y K es año mod 100 (el año de la centuria). Y hay que tener en cuenta que los meses de enero y febrero cuentan como el mes 13 y 14 del año anterior. Ahora que tenemos la fórmula, programemos el algoritmo en C mediante el uso de una función: Analicemos el código paso a paso: Tenemos en cuenta el caso de enero y febrero: Dijimos que estos meses corresponden a los meses 13 y 14 del año anterior por lo que los asignamos como corresponde (mes + 12 , que dará 13 para enero y 14 para febrero) y le rest

Algoritmos: Resolución de problemas y refinamientos en pseudocódigo...

En otras entradas, vimos las partes que debe tener nuestro algoritmo en pseudocódigo y las estructuras que utilizaremos para resolverlo. Ahora llega el turno de implementar todo en conjunto para dar origen a nuestra creación. Pero ¿cómo resolvemos un problema así? Para hacerlo, utilizaremos lo que llamamos refinamientos sucesivos. Este concepto consiste en dividir el problema en subproblemas más pequeños y a estos, a su vez, en otros más pequeños; y así sucesivamente hasta que la solución de los últimos sea trivial, sencillo de resolver. Luego usaremos todas las soluciones obtenidas para armar la solución de nuestro problema mayor. Este principio, tiene base en parte de la técnica divide and conquer (dependiendo de la traducción: "divide y vencerás") que es una de las muchas técnicas de resolución de algoritmos existentes. Como vemos, al dividir el problema en otros más pequeños y más fáciles de resolver, podemos pasar de un problema complicado a uno cuya solución es much