Archivos de la etiqueta: Programación

02Dic/16

Aprendizaje de matemáticas por medio de la programación

 

 

APRENDIZAJE DE MATEMÁTICAS POR MEDIO DE LA PROGRAMACIÓN

 

Autores: MsC. Marcos Antonio León Fonseca.

MsC. Noralys Muñiz Maldonado.

 

Introducción:

 

En el mundo informático es un criterio generalizado que el aprendizaje de la programación ejerce una influencia positiva en el desarrollo del pensamiento y en la capacidad para la solución de problemas transferibles a otros dominios del conocimiento.

 

Aprender a programar, es aprender a solucionar problemas, pero a su vez, la solución de problemas obliga a la reflexión acerca de los aspectos esenciales del fenómeno en cuestión por lo que la contribución que la programación puede aportar al entendimiento de otros temas, las matemáticas en especial, es significativo.

 

El propósito de este artículo consiste en demostrar, a través de ejemplos, que la programación favorece el aprendizaje de las matemáticas.

 

Desarrollo:

 

Ejemplos:

 

Los lenguajes de programación tienen implementada una estructura de control de extraordinario valor, llamada recursividad, la cual permite que un procedimiento se llame a sí mismo como un subprocedimiento. Utilizando los recursos que brinda el lenguaje de programación C++, elabore funciones recursiva que permitan:

 

  1. a) Hallar el factorial de un número.

 

Matemáticamente se define como factorial de un número n al producto de los enteros positivos desde 1 hasta n y se denota por n!

 

n! = 1 . 2 . 3 . 4 . 5 . . . (n – 2) (n – 1) n

 

también se define 0! = 1, de forma que la función está definida para todos los enteros no negativos. Así tenemos que:

 

0! = 1     1! = 1     2! = 1 . 2 = 2     3! = 1 . 2 . 3 = 6

4! = 1 . 2 . 3 . 4 = 24     5! = 1 . 2 . 4 . 5 = 120

 

y así sucesivamente.

 

 

Observe que:

 

5! = 5 . 4! = 5 . 24 = 120    6! = 6 . 5! = 6 . 120 = 720

 

esto se cumple para cualquier entero n positivo; o sea,

 

n! = n (n – 1)!

 

de acuerdo con esto, la función factorial se puede definir también como :

 

Si n < 2 entonces n! = 1

Si n ≥ 2 entonces n! = n (n – 1)!

 

Por ejemplo, 4! sería:

 

4! = 4 . 3!

3! = 3 . 2!

2! = 2 . 1!

1! = 1 . 0!

0! = 1

1! = 1 . 1 = 1

2! = 2 . 1 = 2

3! =  3 . 2 = 6

4! = 4 . 6 = 24

 

Esta definición de n! es recursiva  ya que se refiere a sí misma cuando invoca (n – 1) !

 

Luego nuestra función podría ser:

 

int Factorial (int n) {

if (n < 2)

return 1;

else

return n * Factorial (n – 1);

}

 

  1. b) Encontrar el término n-ésimo Fn de la secuencia de Fibonacci.

 

La celebre secuencia de Fibonacci designada por F0, F1, F2, …, es:

 

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

O sea:

 

F0 = 0 y F1 = 1 y cada término sucesivo es la suma de los dos términos precedentes, por ejemplo, los dos términos que siguen a la secuencia anterior son:

34 + 55 = 59      y      55 + 89 = 144

por lo que una definición formal de esta función es la siguiente:

 

Si n = 0 o n = 1, entonces Fn = n

Si n > 1, entonces Fn = Fn-2 + Fn-1

 

Este es otro ejemplo de definición recursiva, ya que la definición se refiere a sí misma en Fn-2  y  Fn-1

 

Nuestra función podría ser:

 

int Fibonacci (int n) {

if (n == 0 || n == 1)

return n;

else

return Fibonacci (n – 2) + Fibonacci (n – 1);

}

 

  1. c) Encontrar un valor determinado para la función de Ackermann.

 

La función de Ackermann es una función con dos argumentos a los cuales se le pueden asignar cualquier número entero no negativo: 0,1, 2, 3, 4, …

 

Esta función se define como:

 

Si m = 0, entonces A (m, n) = n + 1

Si m ≠ 0, pero n = 0, entonces A (m, n) = A (m – 1, 1)

Si m ≠ 0 y n  ≠ 0, entonces A (m, n) = A (m – 1, A (M, n – 1))

 

Por ejemplo, el valor de A (1, 3) sería:

 

A (1, 3) = A (0, A (1, 2))

A ( 1, 2) = A (0, A (1, 1))

A (1, 1) = A (0, A (1, 0))

A (1, 0) =  A (0, 1)

A (0, 1) = 1 + 1 = 2

A (1, 1)  = A (0, 2)

A (0, 2) = 2 + 1 = 3

A (1, 1) = 3

A (1, 2) = A (0, 3)

A (0, 3) = 3 + 1 = 4

A (1, 2) = 4

A (1, 3) = A (0, 4)

A (0, 4) = 4 + 1 = 5

A (1, 3) = 5

 

Una vez más tenemos una definición recursiva, ya que se refiere a sí misma en  A (m – 1, 1) y A (m – 1, A (M, n – 1)).

 

 

Por lo que nuestra función podría ser:

 

int Ackermann (int m, int n) {

if (m == 0)

return n + 1;

else

if (m != 0 && n == 0)

return Ackermann (m – 1, 1);

else

if (m != 0 && n != 0)

return Ackermann (m – 1, Ackermann (m, n – 1));

}

 

Como se puede notar la implementación de las funciones en el lenguaje de programación requiere del análisis de los aspectos esenciales de los contenidos matemáticos que se abordan favoreciéndose con ello su aprendizaje.

 

Conclusiones:

 

La contribución que la programación puede aportar al aprendizaje de contenidos  matemáticos, es significativo.

 

Bibliografía:

Deitel, H. M. y Deitel., P. J. (2005). Cómo Programar en C/C++. Santiago de Cuba., PROGRAF.

Katrib Mora, M. (1986). Lenguajes de programación y Técnicas de compilación. Ciudad de la Habana., Editorial Pueblo y Educación.

Lipschutz, S. (1989). Estructura de datos. Ciudad de la Habana., Edición Revolucionaria.