Está en la página 1de 39

FUNDAMENTOS DE

PROGRAMACIÓN
Introducción y Lógica de
UNIDAD 3
Programación
Tema Fases para la resolución de
problemas
OBJETIVO

Estudiar y comprender la base de la lógica de programación como primer paso


hacia el mundo de desarrollo de software y a la creación de aplicaciones. Emplear
estratégicamente
. los conceptos de lógica y algoritmos para la resolución de
problemas.
DESARROLLO
Introducción y Lógica de Programación
No se puede iniciar el estudio de la lógica de programación sin tener claro el significado del
término Programación.

PROGRAMA
Un programa es un conjunto de instrucciones que le indican al hardware que tipo de acciones
debe efectuar con los datos. La programación es la acción de codificar o escribir instrucciones
sobre un entorno llamado lenguaje de programación, para generar aplicaciones software o
simplemente programas (Zapata, 2017).
DESARROLLO
Introducción y Lógica de Programación
Para que un procesador realice un proceso se le debe suministrar en primer lugar un algoritmo
adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa:

• comprender las instrucciones de cada paso.


• realizar las operaciones correspondientes.
El procesador es una computadora, el algoritmo se ha de expresar en un formato que se
denomina programa, ya que el pseudocódigo o el diagrama de flujo no son comprensibles por
la computadora, aunque pueda entenderlos cualquier programador. Un programa se escribe
en un lenguaje de programación y las operaciones que conducen a expresar un algoritmo en
forma de programa se llaman programación. Así pues, los lenguajes utilizados
para escribir programas de computadoras son los lenguajes de programación y programadores
son los escritores y diseñadores de programas. El proceso de traducir un algoritmo en
pseudocódigo a un lenguaje de programación se denomina codificación, y el algoritmo escrito
en un lenguaje de programación se denomina código fuente.
Introducción y Lógica de Programación
Fases para la resolución de un Problema

Para la construcción de un software, independientemente de su tamaño o


complejidad, se deben ejecutar un conjunto de fases que garanticen su calidad.

1. Análisis del problema.


2. Diseño del algoritmo.
3. Codificación
4. Compilación y ejecución.
5. Verificación
6. Depuración.
7. Mantenimiento.
8. Documentación.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
Las características más sobresalientes de la resolución de problemas son:
• Análisis. El problema se analiza teniendo presente la especificación de los
requisitos dados por el cliente de la empresa o por la persona que encarga el
programa.

• Diseño. Una vez analizado el problema, se diseña una solución que conducirá a un
algoritmo que resuelva el problema.

• Codificación (implementación). La solución se escribe en la sintaxis del lenguaje de


alto nivel (por ejemplo, Pascal) y se obtiene un programa fuente que se compila a
continuación.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
Las características más sobresalientes de la resolución de problemas son:
• Ejecución, verificación y depuración. El programa se ejecuta, se comprueba
rigurosamente y se eliminan todos los errores (denominados “bugs”, en inglés) que
puedan aparecer.

• Mantenimiento. El programa se actualiza y modifica, cada vez que sea necesario,


de modo que se cumplan todas las necesidades de cambio de sus usuarios.

• Documentación. Escritura de las diferentes fases del ciclo de vida del software,
esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de
referencia, así como normas para el mantenimiento.
Introducción y Lógica de Programación
1. Análisis del Problema
“El análisis es una etapa que define el éxito o el fracaso del producto final”
La primera fase de la resolución de un problema con computadora es el análisis del
problema. Esta fase requiere una clara definición, donde se contemple exactamente
lo que debe hacer el programa y el resultado o solución deseada.
Dado que se busca una solución por computadora, se precisan especificaciones
detalladas de entrada y salida. La Figura 2.1 muestra los requisitos que se deben
definir en el análisis.
Introducción y Lógica de Programación

1. Análisis del Problema

Para poder identificar y definir bien un problema es conveniente responder a las


siguientes preguntas:

• ¿Qué entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
• ¿Cuál es la salida deseada? (tipo de datos de los resultados y cantidad).
• ¿Qué método produce la salida deseada?
• Requisitos o requerimientos adicionales y restricciones a la solución.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
1. Análisis del Problema

Los datos disponibles


Se refiere al conjunto de datos que se tiene y que se va a procesar para servir de insumo a la
solución del problema. Estos datos representan los datos de entrada que necesita los algoritmos.
Variables requeridas
Necesarias para almacenar los valores de los datos disponibles, de los resultados esperados y de
las fórmulas matemáticas que se requieran, además se deben identificar todas las variables
necesarias en la solución.
En cuanto a los procesos
Son todas las acciones a los que se someten los datos disponibles para encontrar la solución del
problema
Los resultados que se esperan
Constituyen las salidas del algoritmo y son el producto del proceso que realice. Todo algoritmo
debe proporcionar algún resultado.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
1. Análisis del Problema

El procedimiento de desarrollo de un problema (algoritmos) es independiente del lenguaje de


programación que se utilizará. Los algoritmos pueden requerir de datos de entrada para
producir datos de salida cumple el mismo esquema de la computación.

EA

PA
ná SA

ns
lisi ris
lis
ais
lis

Datostde entrada: un algoritmo tiene ceroo o mas entradas, es decir la información


li que recibe el
r al comenzar o, dinámicamente, cmientras el algoritmo se ejecuta. d
algoritmo
Procesamiento
a de datos: incluye las operaciones
e aritmético-lógicas, cuyo objetivo
a es obtener la
solución del problema.
d s d
Salida de resultados: permite comunicar al exterior el resultado. Un algoritmo puede producir
o
una o mas salidas.
o e
s
d I
Introducción y Lógica de Programación
Fases para la resolución de un Problema
2. Diseño del Algoritmo

Definición de algoritmo: es una secuencia no ambigua, finita y ordenada de pasos


para poder resolver un problema.
La palabra algoritmo deriva del nombre de un matemático árabe del siglo IX, llamado
Al-Khuwarizmi, quien describió varios métodos para resolver cierto tipo de
problemas aritméticos.
Características
• No ambigua implica que cada paso del algoritmo debe poder ser interpretado de
una única forma.
• Finita significa que la cantidad de pasos que componen el algoritmo esta limitada.
El algoritmo empieza y termina.
• Orden. Los pasos del algoritmo deben seguirse en una determinada secuencia
lógica para llegar a la solución del problema.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
2. Diseño del Algoritmo

Una vez que se ha analizado y comprendido el problema ya se puede pensar en la


solución. El diseño consiste en aplicar el conocimiento disponible para responder a la
pregunta: ¿cómo solucionar el problema?

Diseñar una solución equivale a generar, organizar y representar las ideas sobre la
solución del problema. Para ello se cuenta con técnicas y herramientas de diseño
propias de cada modelo de programación, que permiten registrar y comunicar las
operaciones y procesos a desarrollar.

Estas técnicas y herramientas están basadas en los algoritmos que se representa


mediante descripción narrada, diagramas de flujo, seudocódigo entre otros.
Introducción y Lógica de Programación
Fases para la resolución de un Problema
2. Diseño del Algoritmo

En la etapa de análisis del proceso de programación se determina qué hace el


programa. En la etapa de diseño se determina cómo hace el programa la tarea
solicitada. Los métodos más eficaces para el proceso de diseño se basan en el
conocido divide y vencerás. Es decir, la resolución de un problema complejo se
realiza dividiendo el problema en subproblemas y a continuación dividiendo estos
subproblemas en otros de nivel más bajo, hasta que pueda ser implementada una
solución en la computadora. Este método se conoce técnicamente como diseño
descendente (top-down) o modular. El proceso de romper el problema en cada etapa y
expresar cada paso en forma más detallada se denomina refinamiento sucesivo.
Introducción y Lógica de Programación
2. Diseño del Algoritmo
Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un solo punto de
entrada y un solo punto de salida.
Cualquier programa bien diseñado consta de un programa principal (el módulo de nivel más
alto) que llama a subprogramas (módulos de nivel más bajo) que a su vez pueden llamar a
otros subprogramas. Los programas estructurados de esta forma se dice que tienen un diseño
modular y el método de romper el programa en módulos más pequeños se llama
programación modular. Los módulos pueden ser planeados, codificados, comprobados y
depurados independientemente (incluso por diferentes programadores) y a continuación
combinarlos entre sí. El proceso implica la ejecución de los siguientes pasos hasta que el
programa se termina:

1. Programar un módulo.
2. Comprobar el módulo.
3. Si es necesario, depurar el módulo.
4. Combinar el módulo con los módulos anteriores.
Introducción y Lógica de Programación
3. Codificación
La codificación es la escritura en un lenguaje de programación de la representación
del algoritmo desarrollada en las etapas precedentes. Dado que el diseño de un
algoritmo es independiente del lenguaje de programación utilizado para su
implementación, el código puede ser escrito con igual facilidad en un lenguaje o en
otro.

Para realizar la conversión del algoritmo en programa se deben sustituir las palabras
reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones
indicadas en lenguaje natural por el lenguaje de programación correspondiente.

Ingresar cantidad, precio


Input(cantidad)
Readln(precio)
Introducción y Lógica de Programación
3. Codificación
Introducción y Lógica de Programación

4. Compilación y ejecución
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria
mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un
programa editor. Posteriormente el programa fuente se convierte en un archivo de programa que se
guarda (graba) en disco.
El programa fuente debe ser traducido a lenguaje máquina, este proceso se realiza con el compilador
y el sistema operativo que se encarga prácticamente de la compilación.
Si tras la compilación se presentan errores (errores de compilación) en el programa fuente, es preciso
volver a editar el programa, corregir los errores y compilar de nuevo. Este proceso se repite hasta que
no se producen errores, obteniéndose el programa objeto que todavía no es ejecutable
directamente. Suponiendo que no existen errores en el programa fuente, se debe instruir al sistema
operativo para que realice la fase de montaje o enlace (link), carga, del programa objeto con las
bibliotecas del programa del compilador. El proceso de montaje produce un programa ejecutable.

.Exe
Introducción y Lógica de Programación

4. Verificación
La verificación o compilación de un programa es el proceso de ejecución del programa con una
amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarán si el
programa tiene o no errores (“bugs”). Para realizar la verificación se debe desarrollar una amplia
gama de datos de test: valores normales de entrada, valores extremos de entrada que comprueben
los límites del programa y valores de entrada que comprueben aspectos especiales del programa.
5. Depuración
La depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos
errores.
Cuando se ejecuta un programa, se pueden producir tres tipos de errores:

1. Errores de compilación. Se producen normalmente por un uso incorrecto de las reglas del
lenguaje de programación y suelen ser errores de sintaxis. Si existe un error de sintaxis, la
computadora no puede comprender la instrucción, no se obtendrá el programa objeto y el
compilador imprimirá una lista de todos los errores encontrados durante la compilación.
Input(edad)
Introducción y Lógica de Programación

5. Depuración
2. Errores de ejecución. Estos errores se producen por instrucciones que la computadora puede
comprender pero no ejecutar. Ejemplos típicos son: división por cero y raíces cuadradas de números
negativos. En estos casos se detiene la ejecución del programa y se imprime un mensaje de error.

3. Errores lógicos. Se producen en la lógica del programa y la fuente del error suele ser el diseño del
algoritmo.
Estos errores son los más difíciles de detectar, ya que el programa puede funcionar y no producir
errores de compilación ni de ejecución, y sólo puede advertirse el error por la obtención de resultados
incorrectos. En este caso se debe volver a la fase de diseño del algoritmo, modificar el algoritmo,
cambiar el programa fuente y compilar y ejecutar una vez más.
//Aquí se realiza el cálculo del IVA
venta = cantidad * precio
iva = venta * 0.12
Valor = 5 / 0
Introducción y Lógica de Programación

6-7. Documentación y Mantenimiento


La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de
resolución de dicho problema. La importancia de la documentación debe ser destacada por su decisiva
influencia en el producto final.
Programas pobremente documentados son difíciles de leer, más difíciles de depurar y casi imposibles
de mantener y modificar.
La documentación de un programa puede ser interna y externa. La documentación interna es la
contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o
pseudocódigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los
resultados.
La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el
programa. Tales cambios se denominan mantenimiento del programa. Después de cada cambio la
documentación debe ser actualizada para facilitar cambios posteriores. Es práctica frecuente numerar
las sucesivas versiones de los programas 1.0, 1.1, 2.0, 2.1, etc. (Si los cambios introducidos son
importantes, se varía el primer dígito [1.0, 2.0,...]; en caso de pequeños cambios sólo se varía el
segundo dígito [2.0, 2.1…].)
Introducción y Lógica de Programación
LOS TIPOS DE DATOS

Los tipos de datos más comunes y que se trabajarán en este curso son: alfanuméricos,
numéricos y lógicos.

Los tipos de datos son clasificaciones para organizar la información que se almacena
en la memoria del computador (Anívar Chavez, 2017. El tipo de dato le indica al
dispositivo de procesamiento cuanto espacio de memoria debe reservar para
almacenar el dato, es decir, para determinar el tamaño del espacio de memoria.

Los tipos de datos más comunes dentro del entorno del proceso de desarrollo
algorítmico (no desde el enfoque de un lenguaje de programación) son: alfanuméricos,
numéricos y lógicos.
Introducción y Lógica de Programación
LOS TIPOS DE DATOS

DATOS ALFANUMÉRICOS

Estos datos se componen de la combinación de todos los caracteres conocidos: letras


del alfabeto, dígitos y caracteres especiales, incluyendo el espacio en blanco. Los datos
alfanuméricos se dividen en caracter y cadena.

Caracter (sin tilde): se refiere a los datos que solo tienen un caracter, que puede ser
una letra del alfabeto, un digito del 0 al 9 o un carácter especial. Los valores de tipo
carácter deben encerrarse entre comillas simples. Por ejemplo: ’a’, ’R’, ’2’, ’#’, ’@’, ‘ ’

Los dígitos que son tratados como caracteres son diferentes a los valores numéricos,
por lo tanto, no se deben realizar operaciones aritméticas con ellos.
venta= ‘4’ + ‘5’ error
‘6’ + ‘8’ resultado ’68’
Introducción y Lógica de Programación
LOS TIPOS DE DATOS
DATOS ALFANUMÉRICOS

Cadena: son los datos que están compuestos por un conjunto de letras del alfabeto,
dígitos y caracteres especiales, incluyendo el espacio en blanco. Los datos de tipo
cadena deben encerrarse entre comillas dobles.

Son ejemplos de datos de tipo cadena los siguientes:


“Carrera 17 #12 – 65”, “Gato”, “Jacobo Herrera”, “75478923”, “01800043433”.

Al igual que en el caso de los tipos caracter, los datos de cadena expresados dígitos
numéricos no pueden ser utilizados para hacer cálculos numéricos.
Introducción y Lógica de Programación
LOS TIPOS DE DATOS
DATOS NUMÉRICOS
Corresponden a los datos que están compuestos por solo números y signos (positivo y
negativo), es decir, dígitos del 0 al 9, con los cuales se pueden realizar operaciones aritméticas.
Estos tipos de datos se subdividen en: Enteros y Reales.
-98
Entero: son aquellos datos compuestos por números que no tienen punto decimal. Pueden ser
números positivos, negativos o el cero. Ejemplos de este tipo de datos pueden ser: 20, -5, 200,
1500000.

Real: son datos con componente decimal, pueden ser positivos, negativos o cero. Ejemplos:
1.75, 4.5, 1800000.00, -234.00.

Hay que tener presente que las unidades de mil no se deben separar con puntos o comas.
Solamente se usa el punto para indicar la partedecimal.
Introducción y Lógica de Programación
LOS TIPOS DE DATOS

Datos lógicos o booleanos

Son aquellos datos que toman solo uno de los dos posibles valores booleanos: Verdadero o
Falso. Estos valores son equivalentes a los dígitos del sistema binario: 1 corresponde a
Verdadero y 0 a Falso.

Por ejemplo, supóngase que se necesita almacenar la respuesta suministrada por un paciente
en una clínica sobre si fuma o no, o sobre si es alérgico o no a un tipo de medicamento. En
ambos casos, se debería utilizar este tipo de datos para clasificar el dato suministrado por el
paciente.
Introducción y Lógica de Programación
LOS TIPOS DE DATOS
Introducción y Lógica de Programación

VARIABLES
LOS IDENTIFICADORES

Un identificador es el nombre que se le asigna a las variables, constantes, funciones,


procedimientos y al algoritmo esto se hace para que el algoritmo pueda identificar claramente
cada uno de estos elementos (Herrera, Gutiérrez, Pulgarín, 2017).

Para asignar nombres validos a un identificador existen una serie de reglas que facilitan su
escritura. Es importante mencionar también que, existen reglas y recomendaciones propias,
dependiendo del lenguaje de programación en el que se vaya a codificar.
Introducción y Lógica de Programación
VARIABLES
LOS IDENTIFICADORES REGLAS PARA DEFINIRLOS

• Definir identificadores nemotécnicos, es decir, alusivos o relacionados con la función del


elemento que se está nombrando.
• El primer carácter del identificador debe ser una letra.
• No utilizar caracteres especiales dentro de los identificadores como vocales tildadas, la letra
˜n, o símbolos como: $, #, !, ?, entre otros. Venta$ = cantidad * precio
• No se deben dejar espacios en blanco dentro del nombre de un identificador.
• No utilizar palabras propias del lenguaje algorítmico / programación que se está utilizando
“Palabras reservadas”.
• Se pueden utilizar varias palabras unidas con el guion bajo entre cada una de ellas.
• Evite el uso de artículos y proposiciones, tales como: el, los, la, un, unos, a, para, de, entre
otros.
• El identificador para el nombre del algoritmo, comienza en mayúscula.
• Si el identificador corresponde al nombre de una constante, este debe escribirse en
mayúsculas. PHI=3.14159
Introducción y Lógica de Programación
VARIABLES
Definición de Variable
Una variable es un objeto que ocupa un espacio en la memoria de la computadora que
permite almacenar temporalmente información (dato) durante la ejecución del algoritmo, y
cuyo contenido puede cambiar mientras se ejecuta el algoritmo.

Atributos de una variable


1. Identificador (nombre de la variable)
2. Dirección (posición de memoria donde se almacena el dato)
3. Tipo de dato (especifica: conjunto de valores y operaciones)
4. Valor (dato almacenado en memoria)
dor Me
m
fi ca ori
a
Ejemplo enti
Id
o
Tip

entero edad
Introducción y Lógica de Programación
VARIABLE
Declaración de variables
Cuando en un algoritmo se requiera utilizar una variable, esta debe ser declarada. Declarar una
variable quiere decir que se va a reservar un espacio de memoria, el cual tendrá un nombre y
un tipo de dato.
definir Dim edad as integer (Lenguaje Visual Basic net)
Asignación de datos a una variable
Existen dos formas de darle valor a una variable: a través de la asignación o a través de la
lectura de un valor. Readln(edad) en Pascal lectura de datos
La forma general para declarar variables es la siguiente:
Ejemplos: Atención: No puede existir mas de
Declaración Asignación una variable con el mismo nombre
(identificación) en un mismo
Cadena apellido apellido= “Mrquez davila” algoritmo y con distinta finalidad.
Real salario salario = 1412.25
Entero edad edad = 36
Caracter estacivil estadocivil = ‘S’
Logico discapacidad discapacidad = False
Introducción y Lógica de Programación
CONSTANTES
Una constante es un espacio en la memoria donde se almacena un dato que, a diferencia de
los datos que se almacenan en las variables, permanece constante durante la ejecución de
todo el algoritmo. Al igual que las variables, las constantes también se deben declarar. Para
declarar una constante se utiliza la siguiente forma general o sintaxis:

Constante Tipo IDENTIFICADOR = Valor.


• La palabra Constante es una palabra reservada que indica que se va a declarar una
constante y que su valor no podrá ser cambiado durante la ejecución del algoritmo.
• Tipo, refiere a uno de los cinco tipos de datos: Caracter, Cadena, Entero, Real y Lógico.
• IDENTIFICADOR, es el nombre que se le asigna a la constante. Se recomienda que se escriba
en letras mayúsculas.
• Valor, es el valor que tendrá la constante y debe estar acorde con el tipo de dato que se le
haya asignado a la constante.
Ejemplos:
Constante Real VALOR_PI = 3.1415926
Constante Caracter APLICA_IVA = ’S’
Introducción y Lógica de Programación
OPERADORES
Un operador es un símbolo que permite realizar una operación con números o con datos que
se encuentran almacenados en las variables y constantes. En lógica de programación, existen 3
tipos de operadores: aritméticos, relacionales y lógicos.

Operadores aritméticos

Se utilizan para realizar operaciones aritméticas entre datos de tipo entero o real, su resultado
es de tipo numérico. Los operadores aritméticos son los siguientes:
- Resta
+ Suma
/ División real o entera
* Multiplicación o producto
% Modulo o Resto de la división entera (Mod)
ˆ Potenciación, este símbolo tiene el nombre de circunflejo.
Introducción y Lógica de Programación
OPERADORES

Operadores aritméticos

El operador % (residuo, resto o modulo de la división entera), no se debe confundir con el


símbolo de porcentaje, en este caso se trata de un operador de división entre datos de tipo
entero, pero no obtiene el cociente, sino el residuo o resto de la división entera:
Puntos Importantes
Cuando se use el operador / o %, el operando de la derecha, no debe tener el valor de
0, ya que generaría un error debido a que la división entre cero matematicamente, no
está definida.

El operador % (Modulo o Resto de la división) solo se puede emplear con datos de tipo
Entero.

El operador / puede usarse con datos enteros o reales. Si los datos son enteros, el
resultado es entero, si alguno de los datos es real, el resultado será del mismo tipo
(real).
Introducción y Lógica de Programación
OPERADORES

Operadores Relacionales

Estos operadores se utilizan para escribir expresiones relacionales o de comparación, las cuales
producen un resultado lógico o booleano: Verdadero o Falso.

Los operadores relacionales son los siguientes:

< Menor que.


> Mayor que. Puntos Importantes
<= Menor o igual a.
>= Mayor o igual a. Se usa un solo igual (=) para realizar asignación de valores
en variables o constantes. Se utiliza doble igual (==) para
! = Diferente de. (<>) realizar comparaciones entre dos operandos.
== Igual a.
Introducción y Lógica de Programación
OPERADORES

Operadores Lógicos

Estos operadores se utilizan para crear expresiones lógicas o booleanas


cuyo resultado es de tipo lógico: Verdadero o Falso.

Los operadores lógicos son los siguientes:

Y Conjunción.
O Disyunción.
NO Negación.

Estos operadores funcionan con datos de tipo lógico; para obtener el resultado de la aplicación
de estos operadores, es indispensable conocer cómo funcionan las tablas de verdad de cada
uno de ellos.
DESARROLLO
Introducción y Lógica de Programación
PSEUDOCODIGO
El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal
lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de
programación) relativamente fácil.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar
básicamente las estructuras de control de programación estructurada
El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en
inglés —similares a sus homónimas en los lenguajes de programación—, tales como start, end,
stop, if-then-else, while-end, repeat-until, etc. La escritura de pseudocódigo exige
normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas.
DESARROLLO
Introducción y Lógica de Programación
BIBLIOGRAFÍA

• Chaves, A. (2017). Aprenda a Diseñar Algoritmos. Bogotá - Colombia: Editorial Sello Editorial
UNAD.
• Herrera, J., Gutiérres, J., & Pulgarín, R. (2017). Introducción a la Lógica de Programación
(Primera ed.). Bogotá - Colombia: Editorial: ElIZCOM S.A.S.
• Lovos, E., & Goin, M. (2018). Problemas y Algoritmos - Un Enfoque Práctico. Editorial UNRN.
• Zapata, C. (2006). Fundamentos de programación, Guía de autoenseñanza (Primera ed.).
Colombia: Editorial Alfaomega Ra-Ma.

También podría gustarte