a

Somos una startup de tecnología dedicada a la transformación digital. Especializados en desarrollo de aplicaciones móviles, desarrollo web a medida y marketing digital.

Últimas noticias
Síguenos
Armadillo Amarillo > Tecnología  > Introducción a la programación (Day 11)

Introducción a la programación (Day 11)

Bienvenidos al tercer día (espero que ya hayáis descubierto el secreto del título) de nuestro curso de introducción a la programación.

Hoy toca: ¡¡ Funciones  / Métodos / Procedimientos !!

Como siempre hemos hecho, recurrimos a nuestro especialista en… todo. San Wiki.

En informática, una subrutina o subprograma (también llamada procedimiento, función , rutina o método), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre «function» para referirse a subrutinas que devuelven un valor.

Se le llama subrutina a un segmento de código separado del bloque principal y que puede ser invocado en cualquier momento desde este o desde otra subrutina. Una subrutina, al ser llamada dentro de un programa, hace que el código principal se detenga y se dirija a ejecutar el código de la subrutina.

Vamos a darle un poco de sentido a lo que nos cuenta San Wiki, que siempre habla un poco raro…

Básicamente, es un trozo de código que se encarga de hacer exclusivamente una función en concreto.

Vamos con un ejemplo refrescante:

  1. Preparación del Gazpacho
    1. Coger tomates
    2. Coger pimiento verde
    3. Coger pepino
    4. Coger cebolla
    5. Coger pan duro
    6. Coger diente de ajo
    7. Coger aceite de oliva
    8. Coger vinagre
    9. Coger aceite de oliva
    10. Coger vinagre
    11. Coger Sal
    12. Lavar tomates
    13. Lavar pimiento verde
    14. Echar Tomates
    15. Echar pimiento verde
    16. Echar pepino
    17. Echar cebolla
    18. Poner el pan duro en remojo
    19. Echar diente de ajo
    20. Echar aceite de oliva
    21. Echar vinagre
    22. Echar Sal
    23. Triturar
    24. Echar pan remojado
    25. Triturar
    26. Ajustar sabor
    27. Remover
    28. Echar Hielos
    29. Servir

(¡¡¡¡ POR FAVOR, NO SIGÁIS ESTA RECETA !!!!)

Básicamente esto seria el «programa» de hacer un gazpacho. Como podemos ver, es muy extenso y casi que cuesta leerlo, ¿podemos hacer algo? Claro que sí, vamos a hacer uso de todo los conocimientos adquiridos hasta ahora para que tenga mejor pinta.

2. Preparación de un Gazpacho «modo informático».

Función CogerIngredientes(alimentos) {

Repetir para todos los alimentos –> alimento{

coger (alimento);

}

}

Función EcharIngredientes(alimentos) {

Repetir para todos los alimentos –> alimento{

echar a la olla (alimento);

}

}

Función LavarIngredientes(alimentos) {

Repetir para todos los alimentos –> alimento{

lavar (alimento);

}

}

  1. CogerIngredientes (tomates, pimiento verde, pepino, cebolla, pan duro, diente de ajo, aceite de oliva, vinagre, sal)
  2. LavarIngredientes (tomates, pimiento verde)
  3. EcharIngredientes (tomates, pimiento verde, pepino, cebolla, diente de ajo, aceite de oliva, vinagre, sal)
  4. Poner el pan duro en remojo
  5. Triturar
  6. EcharIngredientes (pan en remojo)
  7. Triturar
  8. Ajustar sabor
  9. Remover
  10. Echar Hielos
  11. Servir

 

Gran diferencia, ¿no? hemos conseguido reducir nuestro «programa» de 30 instrucciones a 11.

Vamos a explicar un poco lo que hemos hecho:

Primero hemos visto que hacíamos 1 tarea muchas muchas veces, como es el ejemplo de «echar», «pelar» y «lavar». Así que las hemos aislado en una función, que recibe un array de alimentos, recorremos ese array yendo 1 a 1 y ejecutando la tarea aislada.

Si vemos un poco más dentro de la función (que es lo que se ejecutaría al llamarla en el punto 1, 2, 3 y 6) vemos como la función CogerIngredientes recibe desde la parte principal de nuestro programa una variable «alimentos». Esta variable será un array (una caja, para entendernos) de alimentos y podemos ir recorriendo 1 a 1 nuestros elementos, independiente del tamaño de la caja y ejecutando siempre la tarea «coger».

 

Si analizásemos punto a punto cómo sería en el momento de ejecución:

  1. CogerIngredientes (tomates, pimiento verde, pepino, cebolla, pan duro, diente de ajo, aceite de oliva, vinagre, sal)
  2. Coger tomates
    1. Coger pimiento verde
    2. Coger pepino
    3. Coger cebolla
    4. Coger pan duro
    5. Coger diente de ajo
    6. Coger aceite de oliva
    7. Coger vinagre
    8. Coger aceite de oliva
    9. Coger vinagre
    10. Coger Sal
  3. LavarIngredientes (tomates, pimiento verde)
    1. Lavar tomates
    2. Lavar pimiento verde
  4. EcharIngredientes (tomates, pimiento verde, pepino, cebolla, diente de ajo, aceite de oliva, vinagre, sal)
    1. Echar Tomates
    2. Echar pimiento verde
    3. Echar pepino
    4. Echar cebolla
    5. Echar diente de ajo
    6. Echar aceite de oliva
    7. Echar vinagre
    8. Echar Sal
  5. Poner el pan duro en remojo
  6. Triturar
  7. EcharIngredientes (pan en remojo)
    1. Echar pan en remojo
  8. Triturar
  9. Ajustar sabor
  10. Remover
  11. Echar Hielos
  12. Servir

Podemos ver como el resultado es muy muy similar al primero que pusimos, pero esto es solamente en el momento en el que la máquina ejecuta el programa. Sin embargo, hemos ganado muchas cosas al usar las funciones, que de la otra manera no y son:

  • Tamaño relativamente pequeño.- Esto facilita aislar el impacto que pueda tener la realización de un cambio en el programa, bien para corregir un error, o bien por rediseño del algoritmo correspondiente.
  • Independencia modular.- Cuanto más independientes son los módulos entre sí más fácil y flexiblemente se trabajará con ellos. Esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como consecuencia de la independencia modular, un módulo cumplirá:
    • Características de caja negra; es decir, abstracción.
    • Aislamiento de los detalles mediante encapsulamiento.

La independencia modular mejora el rendimiento humano, pudiendo realizarse programación en equipo y desarrollar módulos paralelamente. También contribuye a la reutilización de software.

La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.

Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que esta puede resolver.

Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás.

 

¡Espero que os haya servido de ayuda!

Cualquier duda, ¡nos vemos en los comentarios!.

¡¡Un saludo!!

Jesus Lopez

Armadillo Habilidoso. Experto técnico en todas tecnologías habidas y por haber. Responsable de los Armadillos Habilidosos, amante de la música, las motos y Geek a más no poder.

No Comments

Leave a reply