![Page 1: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/1.jpg)
ESTRUCTURA DE DATOS:Tema 3. Recursividad
Presenta: David Martínez Torres
Universidad Tecnológica de la Mixteca
Instituto de Computación
Oficina No. 37
![Page 2: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/2.jpg)
Contenido
1. Directa e indirecta
2. Comparación entre funciones iterativas y recursivas
3. Funciones recursivas con arreglos
4. Ejemplo de transformación de un algoritmo recursivo a iterativo
5. Ejemplo de transformación de un algoritmo iterativo a recursivo
6. Conclusiones
7. Referencias
2
![Page 3: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/3.jpg)
Definición
Una función recursiva es una función que se llama a sí misma, ya sea directa o indirecta a través de otra función.
Componentes
Caso base. Es el resultado más simple, lo que conoce la función.
Paso de recursión. Problema poco menos complejo que el original. También puede incluir la palabra reservada return.
3
![Page 4: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/4.jpg)
1. Recursión directa e indirecta
Según el modo en que se realiza la llamada
Directa: Cuando un método/función se invoca así mismo. Ej., factorial, potencia, etc.
Indirecta: Cuando un método/función puede invocar a una segunda función/método que a su vez invoca a la primera
4
![Page 5: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/5.jpg)
1. Recursión directa
Ejemplo 1 de recursión directa
5
![Page 6: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/6.jpg)
1. Recursión directa
6
![Page 7: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/7.jpg)
1. Recursión directa
int factorial(int n) //definición de la función
{
int fact;
if(n==0||n==1) //caso base
fact=1;
else
fact=n*factorial(n-1);
return fact;
} 7
![Page 8: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/8.jpg)
1. Recursión directa
Ejemplo 2 de recursión directa
8
![Page 9: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/9.jpg)
1. Recursión directa
Ejemplo: Imprimir contenido de una cola dinámica
Caso base: si temp == NULL
printf(“NULL\n”);
Paso de recursión: sino
printf(“%d ”,temp->dato);imprimir(temp->sig)
3 2 8
ini fin
cola
temp 9
![Page 10: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/10.jpg)
1. Recursión directa
int main(){
…
imprimir(cola.ini);
…}
void imprimir(tipoNodoPtr temp){
if(temp==NULL)
printf(NULL);
else {
printf(%d ->,temp->dato);
imprimir(temp->sig);}
} 10
![Page 11: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/11.jpg)
1. Recursión directa
La serie Fibonacci
0,1,1,2,3,5,8,13,21,34, …
Empieza con 0 y 1, y tiene la propiedad que cada número Fibonacci subsecuente es la suma de los dos números Fibonacci previos.
La serie Fibonacci se puede defininir recursivamente de la siguiente manera:
fibonacci(0)=0
fibonacci(1)=1
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
11
![Page 12: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/12.jpg)
1. Recursión directa
12
![Page 13: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/13.jpg)
1. Recursión directa
Torres de Hanoi
Definición del problema:
13
![Page 14: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/14.jpg)
Torres de Hanoi /3
Paso 0 – Inicial
Configuración inicial:
La torre A contiene n discos
de diferentes tamaños.
En el tope sólo pueden ir los
discos más pequeños
Objetivo:
Mover todos los discos de la torre A a la torre B
Mover:
Toma el disco del tope de la torre y muévelo a otra torre.
Solo se puede mover un disco cada vez
Después de un movimiento todos los discos han de estar en alguna torre. 14
![Page 15: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/15.jpg)
Torres de Hanoi /4
Paso 2. Recursión 1
Paso 3. Recursión 1 Paso 4. Recursión 1
Paso 1. Recursión 1
Mueve el disco tope de la torre A a latorre C
15
![Page 16: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/16.jpg)
Torres de Hanoi /5
Paso 5. Recursión 1 Paso 6. Recursión 1
Paso 7. Recursión 1 Paso 8. Mover
16
![Page 17: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/17.jpg)
Torres de Hanoi /6
Paso 11. Recursión 2 Paso 12. Recursión 2
Paso 9. Recursión 2 Paso 10. Recursión 2
17
![Page 18: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/18.jpg)
Torres de Hanoi /7
Paso 15. Recursión 2
Paso 13. Recursión 2 Paso 14. Recursión 2
18
![Page 19: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/19.jpg)
Ideas para una solución recursiva
19
![Page 20: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/20.jpg)
void moverTorres( int n, char desde, char hacia,char temp){
if( n== 1 )
printf("Mueve de %c a %c .\n",desde,hacia);
else {
moverTorres( n- 1, desde, temp, hacia);
printf("Mueve de %c a %c .\n",desde,hacia);
moverTorres( n- 1, temp, hacia, desde);
}
}
20
![Page 21: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/21.jpg)
1. Recursión indirecta
int main(){
system("cls");
A('D');
printf("\n");
system("pause");
return 0;
}
void A(char c){
if(c>'A')
B(c);
putchar(c);
}
void B(char c){
A(--c);
}
21
![Page 22: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/22.jpg)
2. Comparación entre funciones recursivas e iterativas
Se basan en una estructura de control:
las iterativas utilizan una estructura de repetición; las recursivas una estructura de selección.
Incluyen un ciclo de repetición:
la iteración utiliza una estructura de repetición explícita; la recursión lo hace mediante llamadas de función repetidas.
Incluyen una prueba de terminación:
la iteración termina cuando falla la condición de continuación del ciclo; la recursión termina cuando se reconoce el caso base.
22
![Page 23: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/23.jpg)
2. Comparación entre funciones recursivas e iterativas
Rendimiento
En el caso de la recursión el invocar repetidamente la misma función, puede resultar costosa en tiempo de procesador y espacio de memoria.
Por el contrario la iteración se produce dentro de una función.
23
![Page 24: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/24.jpg)
2. Comparación entre funciones recursivas e iterativas
¿Cuándo elegir recursión?
La razón fundamental es que existen numerosos problemas complejos que poseen naturaleza recursiva, por lo cual son más fáciles de implementar con este tipo de algoritmos
Sin embargo, en condiciones críticas de tiempo y de memoria, la solución a elegir debe ser normalmente de forma iterativa.
24
![Page 25: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/25.jpg)
3. Funciones recursivas con arreglos de estructuras
Considere que tiene un arreglo de estructuras con datos de alumnos. Escriba las siguientes funciones recursivas:
Encuentre el alumno que tiene el mayor promedio
La suma de las edades de los alumnos
Busque un alumno en el grupo y devuelva su posición en el arreglo
25
![Page 26: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/26.jpg)
3. Funciones recursivas con arreglos
Ejemplo. La suma de los elementos del arreglo
int suma(int *vector, int fin){
int result;
if(fin==0)
result=vector[0];
else
result=vector[fin]+suma(vector,fin-1);
return result;
}
26
![Page 27: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/27.jpg)
5. Transformación de un algoritmo recursivo a iterativo
Todo algoritmo recursivo puede ser transformado en otro de tipo iterativo, pero para ello a veces se necesita utilizar pilas donde almacenar los cálculos parciales y el estado actual del subprograma recursivo.
Es posible estandarizar los pasos necesarios para convertir un algoritmo recursivo en iterativo, aunque el algoritmo así obtenido requerirá una posterior labor de optimización.
27
![Page 28: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/28.jpg)
5. Transformación de un algoritmo recursivo a iterativo
Tipos de transformaciones:
Recursivas finales
Recursivas no finales
28
![Page 29: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/29.jpg)
Recursivas finales
Esquema recursivo
tipo f(tipo x){
tipo res;
if(Condicion(x))
res = (CasoBase)
else
res = f(Pred(x))
return res;
}
Esquema iterativo
tipo f(tipo x){tipo res;while !(Condicion(x))
res = Pred(x);
res = (CasoBase)return res;}
29
![Page 30: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/30.jpg)
Recursivas finales: ejemplo
Transformar el algoritmo recursivo, que calcula el residuo de la división de dos enteros, a su correspondiente algoritmo iterativo
30
![Page 31: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/31.jpg)
Recursivas finales: ejemplo
Esquema recursivo
int residuo(int a, int b){
int res;
if(a<b)
res=a;
else
res=residuo((a-b),b);
return res;
}
Equivalencia
x → (a,b)
<Condicion (a,b)> → a<b
<CasoBase> → a, si a<b
Pred(a,b) → (a-b,b)
31
![Page 32: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/32.jpg)
Recursivas finales: ejemplo 1
Esquema iterativo
int residuo(int a, int b)
{
int res;
while(!(a<b))
a=a-b;
return res=a;
}
Esquema recursivo
int residuo(int a, int b)
{
int res;
if(a<b)
res=a;
else
res=residuo((a-b),b);
return res;
}32
![Page 33: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/33.jpg)
Recursivas finales: ejemplo 2
Esquema iterativo
void imprimirL(tipoListaPtrlista) {
while(!(lista == NULL)) {printf(“%d ->”, lista->dato);lista=lista->sig);
}printf(“NULL”);}
Esquema recursivo
void imprimirL(tipoListaPtrlista) {
if(lista == NULL)
printf(“NULL”);
else {
printf(“%d ->”,
lista->dato);
imprimir(lista->sig);
}
}
33
![Page 34: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/34.jpg)
Recursivas no finales
Esquema recursivo
tipo f(tipo x){
tipo result;
if (Condicion(x))
result = (CasoBase);
else
result = C(x,f(Pred(x)));
return result;
}
Esquema iterativo
tipo f(tipo x){tipo result;result= (CasoBase);while !(Condicion(x)) {
result= C(result,x);x= Pred(x);
}return result;}
34
![Page 35: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/35.jpg)
Recursivas no finales: Ejemplo
Transformar el algoritmo recursivo, que calcula la suma de los elementos de un vector a su correspondiente iterativo
35
![Page 36: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/36.jpg)
Recursivas no finales: Ejemplo
Equivalencias
Recursiva
x →(A,i)
<Condicion(A,i)> → i<0
<CasoBase>para (A,-1) = 0
C(x,f(Pred(x)))=A[i]+Suma(A,i-1)
Iterativa
C(result,x)=result+A[i]
Pred(x)=i-1
result es la pila donde se almacenan las llamadas
Esquema recursivo
int suma (int *A, int i){
int result;
if (i < 0)
result= 0;
else
result = A[i] + suma (A, i-1);
return result;
}
36
![Page 37: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/37.jpg)
Recursivas no finales: Ejemplo
Esquema recursivo
int suma (int *A, int i){
int result;
if (i < 0)
result= 0;
else
result = A[i] + suma (A, i-1);
return result;
}
Esquema iterativo
int suma (int *A, int i){
int result;
result=0;
while (!(i <0)){
result=result+A[i];
i=i-1;
}
return result;
}
37
![Page 38: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/38.jpg)
Conclusiones /1
Se basan en una estructura de control:
la iteración utiliza una estructura de repetición; la recursión una estructura de selección.
Incluyen un ciclo de repetición:
la iteración utiliza una estructura de repetición explícita; la recursión lo hace mediante llamadas de función repetidas.
Incluyen una prueba de terminación:
la iteración termina cuando falla la condición de continuación del ciclo; la recursión termina cuando se reconoce el caso base.
38
![Page 39: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/39.jpg)
Conclusiones /2
Tanto la iteración como la recursión pueden ocurrir en forma infinita:
En la iteración, si la prueba de continuación de ciclo nunca se convierte en falsa
En la recursión, si el paso de recursión no reduce el problema de tal forma que converja con el caso base
La recursión invoca el mecanismo en forma repetida y, por lo tanto, sobrecarga las llamadas de función. Esto puede resultar costoso tanto en tiempo de procesador como en espacio de memoria.
39
![Page 40: Estructura de datos: Tema 3. Recursividaddtorres/cursos/estructuradedatos/Tema3-Recursividad.… · computación y a la programación estructurada. ... Levine Gutierrez, Guillermo](https://reader031.vdocuments.co/reader031/viewer/2022022621/5bb051b609d3f2dd708e17f2/html5/thumbnails/40.jpg)
7. Referencias
1. Joyanes Aguilar, Luis (1996) Fundamentos de programación, Algoritmos y Estructura de datos. McGraw-Hill, México.
2. Deitel & Deitel (2001) C++ Como programar en C/C++.Prentice Hall
3. Kerrighan y Ritchie “El lenguaje de programación”. Prentice Hall
4. Gottfried, Byron (1999) “Programación en C” McGrawHill, México.
5. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.
6. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.
7. H. Schildt, C++ from the Ground Up, McGraw-Hill, Berkeley, CA, 1998
8. Keller,,AL;Pohl,Ira. A Book on C. 3 ª edición. Edit.Benjamin umnings.1995
40