Está en la página 1de 37

Algorítmica y Programación

UNIDAD 1:
ALGORITMOS Y PROGRAMAS

1.2.- ALGORITMOS: LENGUAJES ALGORÍTMICOS

1.2.3.-Pseudocódigo
Estudiar y practicar la resolución de problemas a través de
algoritmos empleando pseudocódigos

Profa. Yenny Salazar


Contenido

 Pseudocódigo
 Notación pseudocodificada
 Características de los pseudocódigos
 Ventajas de los pseudocódigo sobre los diagramas de flujo
 Escritura de pseudocódigos
 Estructura General de un pseudocódigo
 Pseudocódigos con PSeInt
 Estructura de un pseudocódigos en PSeInt
 Introducción a los tipo de datos, operadores y operaciones
 Estructuras de control: selectivas, iterativas, anidamiento y
ejemplos
 Actividades
 Referencias
El pseudocódigo (o falso lenguaje)

 Es un lenguaje de especificación (descripción) de


algoritmos, formado por una serie de palabras que
representan los pasos del algoritmo.
 Estas palabras son traducción libre de palabras
reservadas de un lenguaje de programación.
 Es utilizado por programadores para describir
algoritmos en un lenguaje humano simplificado que no
es dependiente de ningún lenguaje de programación.
Por este motivo puede ser implementado en cualquiera
lenguaje por cualquier programador que utilice el
pseudocódigo.
Notación Pseudocodificada

 Se puede definir como el lenguaje intermedio entre el lenguaje


natural y el lenguaje de programación seleccionado.
 Se encuentra sujeta a unas determinadas reglas que permiten y
facilitan el diseño de algoritmos como fórmula de resolución a
un problema.
 Surge como método para la representación de instrucciones de
control en una metodología estructurada y nació como un
lenguaje similar al inglés, que utilizaba palabras reservadas de
este idioma para la representación de acciones concretas (begin,
end, if, if–then–else, while, do-while, for, etc.) y que
posteriormente se fue adaptando a otros lenguajes de lengua
hispana (inicio, fin, si, sino, mientras, hacer-mientras, para, etc.)
Características del Pseudocódigo

 Permite el diseño y desarrollo de algoritmos totalmente independientes del


lenguaje de programación usado posteriormente en la fase de codificación, pues no
está sujeto a las reglas sintácticas de ningún lenguaje excepto las del suyo propio.
 Es extremadamente sencillo de aprender y utilizar.
 Facilita al programador el paso del algoritmo al correspondiente lenguaje de
programación.
 Permite una gran flexibilidad en el diseño del algoritmo a la hora de expresar
acciones concretas.
 Permite con cierta facilidad la realización de futuras correcciones o actualizaciones
gracias a que no es un sistema de representación rígido.
 La escritura o diseño de un algoritmo mediante el uso de esta herramienta, exige la
indentación (sangría) del texto en el margen izquierdo de las diferentes líneas.
 Permite obtener soluciones mediante aproximaciones sucesivas, es decir, lo que se
conoce comúnmente como diseño descendente o “top down” y que consiste en la
descomposición sucesiva del problema en niveles o subproblemas más pequeños, lo
que nos permite la simplificación del problema general.
Ventajas del pseudocódigo sobre
los diagramas de flujo

 Ocupan mucho menos espacio en el desarrollo del problema.


 Permite representar de forma fácil operaciones repetitivas complejas.
 Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de
programación formal.
 Si se siguen las reglas de indentación se puede observar claramente
los niveles en la estructura del programa.
 En los procesos de aprendizaje de los alumnos de programación, éstos
están más cerca del paso siguiente (codificación en un lenguaje
determinado, que los que se inician en esto con la modalidad
Diagramas de Flujo).
 Mejora la claridad de la solución de un problema.
Escritura de Pseudocódigos

 Aunque no existen reglas para escritura del pseudocódigo en


español, se ha recogido una notación estándar que ya es muy
empleada, donde las palabras reservadas básicas se representarán
en letras negritas minúsculas, las cuales son traducción libre de
palabras reservadas de lenguajes de programación como el C.
 La escritura deben permitir la descripción de:
 Instrucciones primitivas (entrada, salida y asignación).
 Instrucciones de proceso o cálculo.

 Instrucciones de control.

 Instrucciones compuestas.

 Todos aquellos elementos de trabajo y estructuras de datos que se vayan


a manipular en el programa (variables, constantes, arreglos, registros,
ficheros, etc.)
Estructura General de un Pseudocódigo

 Cabecera. Es el área o bloque informativo donde quedará


 Programa. reflejado el nombre del algoritmo y el nombre del
programa al que pertenece dicho diseño,
 Modulo.
debiéndose especificar el primero en el apartado
 Tipos de datos. denominado Módulo y el segundo en el apartado
denominado Programa.
 Constantes.

 Variables.

 Cuerpo.
Se denomina así al resto del diseño, el cual queda
 Inicio.
dividido en otros dos bloques denominados Bloque
 Instrucciones. de datos y Bloque de acciones o instrucciones.
 Fin.
Pseudocódigo con PSeInt

 PSeInt (Pseudo Intérprete), es un Entorno de Desarrollo Integrado (IDE,


por sus siglas en inglés) para pseudocódigo.
 Es una aplicación informática que se distribuye como software libre bajo
licencia GPL
 Sirve para escribir algoritmos en pseudocódigo y ejecutarlos, además
genera diagramas de flujo de dichos algoritmos.
 La práctica de escribir algoritmos con PSeInt puede ayudar a aprender a
programar.
 Para descargar la aplicación o conseguir actualizaciones visite:
http://pseint.sourceforge.net
 Para profundizar en el uso del PSeInt consultar:
https://www.itson.mx/oferta/isw/Documents/guia_pseint_2016.pdf
https://terepebernal.com/blog/pseudocodigo/algoritmos-pseint-lo-mas-/
Estructura de un Pseudocódigo en PSeInt

Algoritmo sin_titulo
Comienza con la palabra
Instrucción1; clave Algoritmo seguida del
Instrucción2; nombre del algoritmo.

Instrucción3;
Instrucción…; Seguido de la secuencia de instrucciones (lista
de una o más instrucciones, cada una terminada
Instrucciónn; en punto y coma.
FinAlgoritmo
Finaliza con la palabra reservada FinAlgoritmo.

Observación: Los ejemplos presentados en este material tendrán esta estructura.


Introducción a los Tipos de Datos

 Un tipo de dato es un atributo que indica la clase de


datos que se va a manejar. Esto incluye imponer
restricciones en los datos, como qué valores pueden
tomar los objetos (variables, constantes, etc.) y qué
operaciones se pueden realizar con ellos.
 Los tipos de datos básicos son:
 caracter un caracter (letra, número, especiales)
 cadena cadena de caracteres
 entero número entero
 real número real
 boolean falso o verdadero
Introducción a los Operadores

 Asignación  Relacionales
Operador Operación
Cada autor usa sus respectivas convenciones.
= igual
Por ejemplo, la instrucción "reemplace el
<> diferente
valor de la variable x por el valor de la
< menor que
variable y" puede ser Asigne a x el valor de y
> mayor que
representado como: x=y
<= menor o igual que
xy
>= mayor o igual que

 Aritméticos  Lógicos
Operador Operación Operador Operación
+ suma Será verdadera si y sólo
y
- resta si ambas son verdaderas
* multiplicación Será verdadera si al
o
/ división menos una es verdadera
mod módulo no Es la negación

Nota: Investigar la precedencia de los operadores.


Introducción a las Operaciones

 Las operaciones aritméticas se representan de la


siguiente forma:

//Esta es una forma de escribir un comentario

sumaa+b;

volumenpi*r^2*h;

hipotenusa rc(a^2+b^2);

resultadosin(a);
Introducción a las Operaciones

 Las operaciones aritméticas se representan de la


siguiente forma: Comentarios: se usan
para hacer aclaratorias
o indiciones sobre los
//Esta es una forma de escribir un comentario procesos del algoritmo.

sumaa+b;  : asigna el resultado de la operación


aritmetica (suma) a la variable
volumenpi*r^2*h; pi: constante matemática 
^: eleva a la potencia del número de la derecha
hipotenusa rc(a^2+b^2);
rc: calcula la raíz cuadrada de la
resultadosin(a); operación dentro del paréntesis

sin: calcula en seno de a

Nota: Investigar otros operadores aritméticos y funciones matemáticas.


Estructuras de Control Secuenciales

Las instrucciones se siguen en una secuencia fija que normalmente


viene dada por el número de renglón. Es decir que las instrucciones se
ejecutan de arriba hacia abajo. Las instrucciones se ejecutan
dependiendo de la condición dada dentro del algoritmo.
Las instrucciones son los elementos básicos en los que se
Instrucción1; divide el algoritmo, son acciones básicas que se pueden
Instrucción2; implementar de modo general y son independientes del
..
. lenguaje. El punto y coma indica el final de la instrucción.
InstrucciónN;
Ejemplos:
Comienzo del proceso inicio
Fin del proceso fin
Entrada (lectura) leer
Salida (imprimir) escribir
Asignación 
Estructuras de Control Selectivas

 Simples:
Representan instrucciones que pueden o no ejecutarse, según el
cumplimiento de una condición.
La condición es una expresión booleana. Las
Instrucciones son ejecutada sólo si la condición es
si condición entonces verdadera.
Instrucciones;
fin si

Ejemplo:

si ab entonces
escribir “El primero es mayor que el segundo”;
fin si
Estructuras de Control Selectivas

 Dobles (alternativa):
Se realiza una instrucción de dos posibles alternativas, según el
cumplimiento de una condición.
La condición es una variable booleana o una función
reducible a booleana (lógica, Verdadero/Falso).
Si esta condición es cierta (verdadero) se
si condición entonces ejecuta Instrucciones1, si no es así (si es falso),
Instrucciones1 entonces se ejecuta Instrucciones2.
sino
Instrucciones2 Ejemplo:
fin si
si ab entonces
escribir “El primero es mayor que el segundo”;
sino
escribir “El primero es menor que el segundo”;
fin si
Estructuras de Control Selectivas

 Múltiples:
Equivale a anidar varias funciones de selección.
En este caso hay una serie de condiciones que
tienen que ser mutuamente excluyentes. Si una
si condición1 entonces de ellas se cumple, las demás tienen que ser
Instrucciones1 falsas necesariamente.
sino si condición2 entonces En general, si condicióni es verdadera, entonces
Instrucciones2 sólo se ejecuta Instruccionesi.
sino si condición… entonces
Instrucciones… Ejemplo:
sino si n<m entonces
Instruccionesn escribir "el primero es menor que el segundo";
fin si sino si n==m entonces
fin si escribir "son iguales";
fin si sino
escribir "el primero es mayor que el segundo";
fin si
fin si
Estructuras de Control Selectivas

 Múltiples (Caso):
Permite escoger entre varias opciones con la misma estructura, pero de
forma más sencilla que con la estructura si-sino anidada. Cada opción tiene
su bloque de instrucciones a ejecutar.
segun variable hacer Hay una variable cuyo valor es comparado en cada caso (opción)
con los valores "valori", cuando coinciden ambos valores,
opción_valor1:
entonces se ejecutan las Instruccionesi correspondientes. La
Instrucciones1 opción de otro modo es análoga a la sección sino del ejemplo
opción_valor2: anterior, es decir cuando el valor no sea ninguna de las opciones
Instrucciones2 preestablecidas.
opción_valor…:
Instrucciones… Ejemplo:
opción_valorn: segun x hacer
Instruccionesn 1: escribir "la suma de a+b: " a+b;
de otro modo: 2: escribir "la resta de a-b: " a-b;
Instruccionesx 3: escribir "el producto de a*b: " a*b;
fin segun 4: escribir "el cociente de a/b: " a/b;
de otro modo: escribir "operación no válida";
fin segun
Estructuras de Control Iterativas

 Es una secuencia de instrucciones destinada a ejecutarse varias


veces. El objetivo de un bucle (o iteración) es repetir un bloque de
instrucciones varias veces. Según el tipo de bucle, este bloque se va a
repetir un número fijo de veces (n veces) o según un determinado
número de criterios (una prueba de una o varias condiciones).
 Un error en una condición de salida puede provocar un número
incorrecto de bucles, no entrar en uno nunca o incluso peor, no
poder salir nunca.
 Las instrucciones mientras, repetir y para, permiten ejecutar
iteraciones (bucles o ciclos). En cada caso se ejecuta un bloque de
instrucciones mientras la condición que se evalúa tome valor
verdadero.
Estructuras de Control Iterativas

 Mientras:
El bucle se repite mientras la condición sea cierta, si al llegar por primera vez
al bucle mientras, la condición resulta falsa, el cuerpo del bucle no se ejecuta
ninguna vez.
mientras expresion_logica hacer
Instrucción (o bloque de instrucciones);
fin mientras

Esta estructura de control permite repetir o iterar el [Bloque de Instrucciones]


mientras la expresion_logica sea verdadera, es decir que estas iteraciones
terminarán cuando la expresion_logica sea falsa y entonces se podrá ejecutar
la siguiente instrucción después del fin mientras.
Es válido señalar que en esta instrucción la expresion_logica (condición) se
evalúa al inicio del ciclo.
Ejemplo: Estructuras de
Control Mientras

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo Mientras01
suma <- 0;
escribir "Dime un numero ";
leer x;
mientras x <> 0 hacer
suma <- suma + x;
escribir "Hasta ahora, la suma es ", suma;
escribir "Dime otro numero";
leer x;
fin mientras
escribir "Terminado";
FinAlgoritmo
Ejemplo: Estructuras de
Control Mientras

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo Mientras01
suma <- 0;
escribir "Dime un numero "; Nótese que esta línea de la estructura mientras no culmina en punto y coma,
pues no es el final de la instrucción.
leer x;
mientras x <> 0 hacer El ciclo mientras se
suma <- suma + x; repetirá hasta que la
variable x sea 0.
escribir "Hasta ahora, la suma es ", suma;
Si la primera vez que se lee
escribir "Dime otro numero"; la variable x su valor es
leer x; igual a 0, no se ejecuta el
ciclo.
fin mientras
escribir "Terminado"; La palabra reservada fin mientras indica el final de la estructura mientras,
FinAlgoritmo por tanto no es necesario colocar el punto y coma de final de instrucción.
Ejemplo: Estructuras de
Control Mientras

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo Mientras01 Inicio del algoritmo y nombre

suma <- 0; Se inicializa la variable y asigna valor (entero)


escribir "Dime un numero "; Instrucción de salida, imprime en la salida estándar el texto entre las comillas.
leer x;
Instrucción de entrada, guarda en la variable lo leído de la entrada estándar .
mientras x <> 0 hacer
suma <- suma + x; Se ejecuta la operación aritmética y se asigna el resultado a la variable

escribir "Hasta ahora, la suma es ", suma;


escribir "Dime otro numero"; Aquí muestra el valor que tenga guardado la variable

leer x;
fin mientras Final de la estructura mientras

escribir "Terminado";
FinAlgoritmo
Final del algoritmo
Estructuras de Control Iterativas

 Repetir:
Esta estructura se utiliza cuando es necesario que el cuerpo del bucle se
ejecute al menos una vez y hasta que se cumpla la expresion_logica, es decir
que siga siendo verdadera.
repetir
Instrucción (o bloque de instrucciones);
hasta que expresion_logica

Como la condición se evalúa al final, si el resultado es verdadero, se vuelve a


ejecutar el bloque de instrucciones, en caso contrario se ejecutan las
instrucciones que sigan a continuación, saliendo así del ciclo. Su funcionalidad
es el mismo que el mientras, la diferencia es la forma en que se controla el
bucle. Se debe contemplar dentro del bloque de instrucciones al menos una
condición que altere (en algún momento) el resultado de la expresión booleana,
para evitar un ciclo infinito.

Observación: El Repetir es el equivalente al Hacer-Mientras visto en el tema 1.2.2.-Diagrama de Flujos.


Ejemplo: Estructuras de
Control Repetir

Ejemplo: algoritmo que comprueba una contraseña (3 intentos máx.) hasta que sea 352.

Algoritmo contraseña
Definir clave como entero;
intentos <- 0;
repetir
intentos <- intentos + 1;
escribir "Digite la clave: ";
leer clave;
hasta que (clave = 352) o (intentos = 3);
si (intentos = 3) y (clave <> 352) entonces
escribir "Demasiados intentos";
sino
escribir "Clave correcta";
fin si
Fin Algoritmo
Ejemplo: Estructuras de
Control Repetir

Ejemplo: algoritmo que comprueba una contraseña (3 intentos máx.) hasta que sea 352.
Se declara una variable entera, sin asignarle valor

Algoritmo contraseña Expresión booleana que compara las dos condiciones usando el operador
lógico o. Basta que una de las dos condiciones sea verdadera para que la
Definir clave como entero;
expresión completa sea verdadera.
intentos <- 0;
repetir
El ciclo repetir se ejecuta
intentos <- intentos + 1; al menos una vez. Se
escribir "Digite la clave: "; detiene el ciclo cuando la
expresión booleana sea
leer clave;
verdadera.
hasta que (clave = 352) o (intentos = 3);
si (intentos = 3) y (clave <> 352) entonces
escribir "Demasiados intentos";
sino
Expresión booleana que compara las dos condiciones usando el operador
escribir "Clave correcta"; lógico y. Necesariamente ambas condiciones deben ser verdaderas para que la
expresión completa sea verdadera.
fin si
Fin Algoritmo
Estructuras de Control Iterativas

 Para:
Se usa cuando se desea iterar un número conocido de veces, empleando como
índice una variable que se incrementa (o decrementa):

para variable<-valor_inicial hasta valor_final con paso paso hacer


Instrucción (o bloque de instrucciones);
fin para

Los procesos iterativos que se han visto hasta ahora terminan por una condición.
En muchas situaciones las iteraciones se realizan un número determinado de
veces, pues se conoce de antemano el número de iteraciones. En este caso se
necesita una variable que lleve el control de las veces que se va a repetir bloque
de instrucciones. La propia estructura inicializa dicha variable (la cual se usa
como contador) asignándole un valor_inicial, además se incluye el valor_final
que debe tomar la variable para salir del bucle y va sumándosele la cantidad
paso cada vez que se ejecute la instrucción (o el bloque de instrucciones).
Ejemplo: Estructuras de
Control Para

Ejemplo: algoritmo que muestra los primero 5 números pares.

Algoritmo pares
definir contador como entero;
para contador<-2 hasta 10 con paso 2 hacer
escribir contador;
fin para
FinAlgoritmo
Ejemplo: Estructuras de
Control Para

Ejemplo: algoritmo que muestra los primero 5 números pares.

Algoritmo pares
definir contador como entero;
para contador<-2 hasta 10 con paso 2 hacer Se conoce de ante mano que el ciclo para se
repetirá 5 veces, pues la variable contador se
escribir contador; incrementa de 2 en 2, y al superar el valor de
fin para 10 se detiene el ciclo
FinAlgoritmo

La misma estructura permite inicializar Y el incremento


la variable que controla el número de
iteraciones, según el valor requerido Además de establecer
en punto de parada
Anidamiento de Estructuras
de Control Iterativas

 Los ciclos anidados o compuestos no son más que ciclos que tienen otros ciclos
dentro del bloque de instrucciones que deben ejecutar. Esta facilidad de
componer uno o más ciclos en combinación con algunas estructuras de
almacenamiento resulta muy útil para la solución de algunos algoritmos de
búsqueda y ordenación que se verán más adelante.
 Usualmente los ciclos que se componen para resolver un algoritmo en particular
son los ciclos por variable de control; esto no quiere decir, que no se pueda hacer
con ciclos de condición o con una combinación de ellos dos, pero son menos
frecuentes estos casos.
 En general, las estructuras anidadas se muestran indentadas, para hacer más
sencilla su identificación a simple vista.
 Se pueden anidar, permitiendo las siguientes combinaciones de anidamiento:
mientras en mientras, mientras en repetir, mientras en para, repetir en repetir,
repetir en para, repetir en mientras, para en para, para en mientras, para en
repetir.
Ejemplo: Anidamiento de
Estructuras de Control Iterativas

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo tabla_multiplicar_un_número
definir num, i, seguir como entero;
repetir
escribir "Introduzca un número entero: ";
leer num;
escribir "La tabla de multiplicar del ", num, " es: ";
para i<-1 hasta 10 con paso 1 hacer // Inicio del anidamiento
escribir "número " num " * " i, " = ", num*i;
fin para // Fin del anidamiento
escribir "¿Desea ver otra tabla? (marque 1 para si / 2 para no): ";
leer seguir;
hasta que seguir=1;
FinAlgoritmo
Ejemplo: Anidamiento de
Estructuras de Control

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo tabla_multiplicar_un_número
definir num, i, seguir como entero;
repetir
escribir "Introduzca un número entero: ";
leer num;
El ciclo repetir se
escribir "La tabla de multiplicar del ", num, " es: "; repetirá mientras
para i<-1 hasta 10 con paso 1 hacer // Inicio del anidamiento que la variable
seguir sea 1, por
escribir "número " num " * " i, " = ", num*i; tanto se repetirá la
fin para // Fin del anidamiento misma cantidad de
veces el ciclo para
escribir "¿Desea ver otra tabla? (marque 1 para si / 2 para no): ";
leer seguir; Ciclo para dentro del
hasta que seguir=1; ciclo repetir
FinAlgoritmo
Ejemplo: Anidamiento de
Estructuras de Control

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.
Algoritmo tabla_multiplicar_un_número
Definición de variables (nombre y tipo de dato)
definir num, i, seguir como entero;
repetir Instrucción de salida, imprime en la salida estándar el texto
entre las comillas.
escribir "Introduzca un número entero: ";
Instrucción de entrada, guarda en la variable lo leído
leer num; de la entrada estándar .
escribir "La tabla de multiplicar del ", num, " es: ";
Aquí muestra el valor que tenga
para i<-1 hasta 10 con paso 1 hacer // Inicio del anidamiento guardado la variable
escribir "número " num " * " i, " = ", num*i;
Aquí se ejecuta la operación aritmética y se muestra el
fin para // Fin del anidamiento resultado
escribir "¿Desea ver otra tabla? (marque 1 para si / 2 para no): ";
leer seguir;
hasta que seguir=1;
FinAlgoritmo Condición que permite detener el ciclo
Ejemplo de un Pseudocódigo en PSeInt

Ejemplo: algoritmo que muestra la tabla de multiplicar de un número entero introducido por
teclado. Repetir hasta que se indique lo contrario.

Algoritmo Ejecución
Actividades

 Investigar:
 precedencia de los operadores.
 Otros operadores aritméticos (diferentes a los vistos en este material)
 Funciones matemáticas de PSeInt.
 Escribir el algoritmo en pseudocódigo de los siguientes enunciados:
 Leer y mostrar nombre, género, edad y estado civil, indicando si es mayor o menor de
edad.
 Del anterior, mostrar el nombre (solo si es un hombre o mujer menor de edad o es un
hombre casado de cualquier edad) y un mensaje que diga “usted no se manda”.
 Mostrar los número del 1 al 100.
 Mostrar el promedio de un número desconocido de calificaciones de exámenes. Notas
válidas del 0 al 10,00.
 Dados el dividendo y el divisor, mostrar el resto y el cociente calculados por medio de
restas sucesivas.
 Un vendedor desea calcular su comisión total sobre la venta de varios artículos. Le
corresponde el 5% de comisión sobre artículos cuyo precio es menor de $25 y el 7.5%
de comisión sobre aquellos artículos cuyo precio es de $25 o más. Suponga que el
vendedor hizo n ventas.
 Descargar la aplicación PSeInt y probar sus algoritmos.
Referencias

Corona, M. y Ancona M. 2011. Diseño de algoritmos y su codificación en


lenguaje C. McGraw-Hill. México.
Joyanes, L. y Zahonero, I. 2002. Programación en C. Metodología,
algoritmos y estructura de datos. McGraw-Hill.
Joyanes, L. 2008. Fundamentos de Programación, Algoritmos, Estructura
de Datos y Objetos. Cuarta edición. McGraw-Hill.
López, J. Algoritmos y Programación. 2009. Segunda Edición. Eduteka.

Profa. Yenny Salazar

También podría gustarte