Logo Studenta

Fundamentos-de-programacion

¡Este material tiene más páginas!

Vista previa del material en texto

Fundamentos iniciales 
de lógica de programación I.
Algoritmos en PSeInt y Python
Fundamentos iniciales 
de lógica de programación I.
Algoritmos en PSeInt y Python
Jairo Hernando Ramírez Marín
Ramírez Marín, Jairo Hernando
 Fundamentos iniciales de lógica de programación I. Algoritmos en PseInt y Python / Jairo Hernando 
Ramírez Marín – Envigado: Institución Universitaria de Envigado, 2019.
 278 páginas.
 ISBN - pdf: 978-958-52600-4-7
Programación lógica – 2. Algoritmos – 3. Ingeniería de software
 005.1 (SCDD 22 ed.)
Fundamentos iniciales de lógica de programación I. Algoritmos en PseInt y Python
© Jairo Hernando Ramírez Marín
© Institución Universitaria de Envigado
Edición: diciembre de 2019
ISBN – pdf: 978-958-52600-4-7
Rectora
Blanca Libia Echeverri Londoño
Director de Publicaciones
Jorge Hernando Restrepo Quirós
Coordinadora de Publicaciones
Lina Marcela Patiño Olarte
Asistente Publicaciones
Diana Yaned Marroquín Carmona
Diseño y diagramación
Leonardo Sánchez Perea
Corrección de texto
Erika Tatiana Agudelo
Editado en Envigado – Antioquia
Sello Editorial Fondo Editorial IUE
Institución Universitaria de Envigado
Carrera 27B #39ª Sur 57
Tel: (+4) 339 10 10 ext. 1524
www.iue.edu.co
publicaciones@iue.edu.co
El autor es moral y legalmente responsable de la información expresada en este libro, así como del respeto a los 
derechos de autor. Por lo tanto, no comprometen en ningún sentido a la Institución Universitaria de Envigado.
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDe-
rivada 4.0 Internacional. Más información: https://creativecommons.org/licenses/by-nc-nd/4.0/
Contenido
Agradecimientos 11
Presentación 13
UNIDAD 1. CONCEPTOS BÁSICOS DE LÓGICA DE PROGRAMACIÓN 
Introducción 15
1. Conceptos básicos de lógica de programación 17
1.1 Operadores usados en lógica 17
 1.1.1 Operadores aritméticos 17
 1.1.2 Operadores lógicos relacionales y booleanos 18
1.2 Tipos de división en lógica de programación 21
 1.2.1 División decimal 22
 1.2.2 División entera 22
 1.2.3 Operación módulo 23
1.3 Jerarquía de los operadores 25
 1.3.1 Ejemplos de jerarquía de los operadores 26
 1.3.2 Ejercicios resueltos 27
 1.3.3 Ejercicios propuestos 31
1.4 Expresiones algorítmicas 32
 1.4.1 Ejemplos de conversión de expresiones algorítmicas 33
 1.4.2 Convertir expresiones algorítmicas en matemáticas 34
 1.4.3 Ejercicios resueltos 34
 1.4.4 Ejercicios propuestos 35
1.5 Lógica de programación y algoritmos 36
	 1.5.1	Definiciones	 36
 1.5.2 Características de un algoritmo 37
 1.5.3 Partes de un algoritmo 38
 1.5.4 Tipos de algoritmos 39
 1.5.5 Pasos para solucionar un problema computacional 40
 1.5.6 Pasos de elaboración de un algoritmo 42
1.6 Formas de representación de un algoritmo 42
 1.6.1 Algoritmo en lenguaje natural 42
 1.6.2 Pseudocódigo 43
 1.6.3 Diagramación libre 45
 1.6.4 Diagramación rectangular 47
 1.6.5 Ejemplo de algoritmo cualitativo 48
 1.6.6 Ejemplo de algoritmo cuantitativo 50
1.7 Datos manejados en un algoritmo 52
 1.7.1 Datos numéricos 52
 1.7.2 Datos alfabéticos 53
 1.7.3 Datos alfanuméricos 53
 1.7.4 Datos lógicos o booleanos 54
 1.7.5 Ejercicios propuestos de tipos de datos 55
 1.7.6 Ejercicios propuestos de expresiones booleanas 56
 1.7.7 Datos variables 57
 1.7.8 Datos constantes 57
 1.7.9 Condiciones para nombrar variables y constantes 58
 1.7.10 Ejercicios propuestos 58
UNIDAD 2. ESTRUCTURA FUNDAMENTAL DE UN ALGORITMO 
Introducción 60
2. Estructura secuencial de un algoritmo 62
2.1 Estructura secuencial 62
2.2 Asignación de información 66
 2.2.1 Asignación interna 66
 2.2.2 Asignación externa 66
 2.2.3 Actualización 67
2.3 Operaciones básicas en algoritmos 67
2.4 Fórmulas y ecuaciones en algoritmos 72
2.5 Porcentajes en algoritmos 78
2.6 Conversión de unidades 84
2.7 Prueba de escritorio 88
2.8 Ejercicios resueltos 100
 2.9 Ejercicios propuestos 116
2.10	Práctica	final	de	algoritmos	secuenciales	 127
UNIDAD 3. ESTRUCTURAS DE DECISIÓN Y SELECCIÓN MÚLTIPLE 
Introducción 129
3. Estructuras de decisión y selección 131
3.1 Estructuras de decisión 131
3.2 Tipos de estructuras de decisión 133
 3.2.1 Estructura de decisión simple 133
 3.2.2 Estructura de decisión compuesta 138
 3.2.3 Estructura de decisión múltiple 141
 3.2.4 Estructura de decisión anidada 147
3.3 Ejercicios resueltos 158
3.4 Ejercicios propuestos 191
 3.5	Práctica	final	estructuras	de	decisión	 199
3.6 Estructuras de selección múltiple 201
3.7 Ejercicios resueltos 211
3.8 Ejercicios propuestos 220
 3.9	Práctica	final	de	estructuras	de	decisión	y	selección	 230
4. Solución a los ejercicios propuestos 232
Anexos 
Anexo	1.	Fórmulas	generales	de	figuras	geométricas.	 245
Anexo 2. Fórmulas de conversión de temperaturas. 248
Anexo 3. Equivalencias de longitud. 249
Anexo 4. Equivalencias de masa. 250
Anexo 5. Equivalencias de volumen. 251
Anexo	7.	Equivalencias	de	superficie.	 254
Anexo 8. Equivalencias de computación. 255
Anexo 9. Tabla de caracteres ASCII. 256
Referencias 257
Lista de tablas 259
Lista de figuras 261
Glosario 267
Del Autor 275
Agradecimientos
El primer agradecimiento siempre será para Dios, por inundarme de bendiciones 
en todos los aspectos de mi vida.
A mi esposa Ledy Yovana Cañaveral Ocampo, por su paciencia y por ser una 
excelente compañera en este viaje de vida. A mi hijo Miguel Ángel Ramírez 
Cañaveral, ese ser angelical que es el motor de todo cuanto hago, quien es mi 
mayor bendición junto con mi esposa, familia y amigos.
A mis padres Jairo Antonio Ramírez Quiros y Orfelina María Marín, por 
enseñarme valores a través del ejemplo. Gracias a ellos pude realizar mis estudios. 
Mi padre, quien me enseñó a ser responsable y luchador; mi madre, que me heredó 
su lógica y creatividad. Toda mi admiración y agradecimiento para ellos. No pude 
haber tenido mejores padres.
A mis hermanos John Diego y Lina María, que, a pesar de la distancia, siempre 
estamos unidos como familia para afrontar los problemas y superarlos; y a mis 
sobrinos John Fernando, Zorelly, Yoselin y Samuel; que trajeron alegría a nuestra 
familia con sus llegadas y que esperamos se levanten unidos y con lazos de 
hermandad.
A Oscar Alberto Saavedra Vásquez, Liliana María Loaiza y Samuel Saavedra 
Loaiza, a Alexander García Berrio, Paula Andrea Cañaveral Ocampo y Samuel 
García Cañaveral, a Carlos Andrés Cañaveral Ocampo y Marisella Pérez 
Martínez: unas familias maravillosas que nos han permitido compartir momentos 
inolvidables.
A mis amigos, especialmente a Felipe Bedoya, Wilmar Ocampo, Guelmer 
Hincapié, Alexander Ospina, Conrado y Enrique Zapata, quienes forman parte del 
círculo familiar.
A mis padrinos Fabiola Montoya y Bernardo Marín, quienes acogieron a unos 
desconocidos y les brindaron apoyo cuando más lo necesitaban. A mi familia, 
Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python12
a mis tías: Omaira, Hortencia, Olga y Olivia y a mis primos: Yesender y Yonier 
García; Bayron, Johana y Nilton Vasquez; Yuri Restrepo; Henry (q. e. p. d.) y Jeison 
(q. e. p. d.) Marín, que son los únicos familiares con los que hemos contado.
A Beatriz Hernández Obando y Sergio Alberto Estrada, quienes me dieron la 
oportunidad de iniciarme como docente de media técnica en el mejor colegio de 
todos (Colegio Monseñor Gustavo Calle Giraldo, en Bello). Así mismo, al Mg. 
Gustavo Adolfo Moreno López, quien me apoyó en el aspecto laboral, me motivó a 
estudiar la Maestría en software libre y fue un motivador constante para escribir 
este libro.
Al Decano de la Escuela de Ingeniería de la Institución Universitaria Salazar 
y Herrera (IUSH): Jorge Alonso Monsalve Jaramillo y a la Coordinadora del 
programa de Ingeniería Industrial: Yenny Alejandra Aguirre, quienes me motivaron 
a retomar la publicación de este libro y con la oportunidad brindada por Lina 
Marcela Patiño del Fondo Editorial IUE de la Institución Universitaria de 
Envigado, tomé un nuevo aire que me permitió culminareste anhelado sueño.
A Rafael Quintana, Carlos Monsalve y Alberto Sánchez mis profesores de Lógica, 
Algoritmos y Programación cuando realicé mi Tecnología en Sistemas. Sin olvidar 
a los profesores que me aportaron para culminar mis estudios de Ingeniería en 
Sistemas. A Roberto Flórez Rueda, profesor de la Universidad de Antioquia y 
experto en algoritmos, y a Hernán Rendón Valencia, Secretario General de la IUSH, 
quienes hicieron la revisión en el aspecto temático y de estilo, respectivamente.
A todos los estudiantes que he tenido en las diferentes instituciones: Colegio 
Monseñor Gustavo Calle Giraldo, Politécnico Marco Fidel Suárez, Corporación 
Tecnológica Católica de Occidente y la Institución Universitaria Salazar y Herrera, 
especialmente a Luisa Fernanda Molina Betancur, Juan Guillermo Martínez 
Álvarez, Joseph Mateus Raigoza Mesa, quienes me motivaron a terminar este libro y 
me ayudaron a revisar aspectos del mismo y realizar el testing de los ejercicios.
Presentación
En la mayoría de los hogares, empresas e instituciones educativas hay com-
putadoras para diferentes usos, lo que propició que su manejo pasara de 
ser una necesidad a ser una obligación. La mejor forma de actualizarse y 
ofrecer posibles soluciones a los múltiples problemas que se presentan es 
utilizando óptimamente estas herramientas. Pero luego de operarlas, se es-
pera subir a un nivel más avanzado que es el mismo desarrollo del software; 
pasamos del nivel de ser operarios de los programas a ser los creadores de 
estos, adecuándolos a las necesidades y exigencias de nuestro entorno sin 
importar el nivel de complejidad y su área de desempeño.
Con este libro se busca brindar la posibilidad de empezar a explorar 
todo este fantástico mundo de la programación, ampliando la posibilidad la-
boral y personal del lector: estudiante, docente de sistemas y de otras áreas 
o cualquier persona interesada en el tema; puesto que al adquirir los concep-
tos fundamentales de lógica de programación y algoritmos se pueden pasar 
fácilmente de algoritmos, con una sintaxis similar al software PSeInt, a un 
lenguaje de programación que le permita desarrollar aplicaciones para ce-
lulares y páginas web, configurar	periféricos	e	incluso	realizar	videojuegos	
con mayor facilidad.
La importancia de este libro radica en que está enfocado a personas 
que apenas inician en este mundo de la programación: estudiantes de media 
técnica que tienen énfasis en sistemas, estudiantes de los primeros semes-
tres	de	tecnologías	e	ingenierías	de	sistemas	y	programas	afines.
Es de resaltar que el ‘arte’ de programar no es una tarea fácil, pero se 
puede llegar a entender y manejar, siempre y cuando se tenga disciplina y 
dedicación,	y	al	final,	esta	actividad	se	puede	convertir	en	un	juego	lógico	y	
entretenido con resultados muy satisfactorios. Debido a lo anterior se ha to-
mado la iniciativa de compartir el conocimiento adquirido durante el proce-
so de más de dos décadas de docencia en colegios con énfasis en sistemas, 
instituciones tecnológicas e instituciones universitarias; y se busca entregar 
Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python14
estrategias que permitan entender el funcionamiento de los programas y la 
forma más fácil y acertada de desarrollar algoritmos, como primer paso, 
antes de ir a un lenguaje de programación.
Este libro lleva una secuencia lógica, coherente e incremental, donde se 
exponen conceptos teóricos, variedad de ejemplos para entender la temática 
y se termina con una serie de ejercicios prácticos que sirven para evidenciar 
el manejo del tema. Siempre se busca un avance empezando por el ejercicio 
más fácil hasta terminar con el más complejo. Se agregan varias solucio-
nes	a	un	mismo	ejercicio	para	facilitarle	al	estudiante	la	identificación	de	
la forma personal y propia de fortalecer su lógica, y se le motiva a crear 
nuevas soluciones. Se proponen algoritmos actuales con entorno reales, lo 
que facilita más el entendimiento del ejercicio planteado (primer paso del 
desarrollo de algoritmos).
En Fundamentos iniciales de lógica de programación I. Algoritmos en 
PSeInt y Python se encuentra la solución de ejercicios de algoritmos a través 
de pseudocódigos (similar al lenguaje de programación) y se habla super-
ficialmente	de	la	técnica	de	diagramación	libre	(usada	por	profesionales	de	
electrónica o industrial). Está distribuido en tres unidades, la solución de al-
gunos ejercicios propuestos y un apartado de anexos, en las que se abordan 
temas fundamentales de lógica de programación: conceptos y estructuras 
básicas de un algoritmo, estructuras de decisión y de selección.
Espero que este material sea de su agrado y le sirva para motivarlo a 
incursionar en el mundo de la programación, donde su éxito depende del 
manejo óptimo de la lógica de programación aplicada en el diseño de algo-
ritmos y la programación.
15Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Unidad 1 
Conceptos básicos de lógica de programación
Introducción
En	esta	unidad	se	explican	los	siguientes	temas	(véase	figura	1):
• Operadores usados en lógica.
• Jerarquía de los operadores.
• Expresiones algorítmicas.
• Lógica de programación y algoritmos.
• Conceptos básicos de algoritmos.
• Representación de los algoritmos.
• Datos usados en los algoritmos.
• Ejercicios resueltos y propuestos.
Estos temas facilitan la adquisición de las competencias que se descri-
ben a continuación:
• Conocer conceptos fundamentales de algoritmos y lógica de programa-
ción, como los tipos de algoritmos y sus características primordiales.
• Entender	las	diferentes	formas	de	representar	un	algoritmo	e	identificar	
la mejor al momento de dar solución a un problema.
• Convertir cualquier fórmula y operación matemática en una expresión 
algorítmica válida y entendible para la computadora.
• Desarrollar los pasos necesarios para la realización de un algoritmo en 
la búsqueda de soluciones a problemas planteados.
• Reconocer el concepto de dato y su interacción con los diversos proce-
sos de entrada y de salida.
Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python16
Fi
gu
ra
 1
. U
ni
da
d 
1.
 C
on
ce
pt
os
 b
ás
ic
os
.
17Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
1. Conceptos básicos de lógica de programación
1.1 Operadores usados en lógica
Corona y Ancona (2011) enuncian los operadores usados en lógica como 
símbolos que relacionan valores, variables o constantes dando un resultado 
determinado según el tipo de dato procesado.
Toda expresión manipula unos datos que arrojan resultados dependien-
do de su tipo; por ejemplo, al realizar la operación 5 / 2, podría arrojar como 
resultado 2.5 si se realiza en Python o 2 si es en otro lenguaje como C++ o 
Java con dos número enteros; así mismo, en la comparación de 2 < 5 arroja 
un resultado Verdadero (resultado booleano a pesar de hacer operación con 
dos números enteros).1
1.1.1 Operadores aritméticos
Los operadores aritméticos permiten la realización de operaciones 
matemáticas con variables y constantes. Estos operadores pueden ser 
utilizados con tipos de datos enteros, reales o cadenas, dependiendo del 
lenguaje de programación se pueden concatenar con el operador +. A 
continuación, en la tabla 1, se muestran los operadores aritméticos usados 
en los lenguajes de programación de computadoras:
Tabla 1. 
Operadores aritméticos
Operación Símbolo Nombre Alternativo
Suma o adición + Más
Resta o diferencia – Menos
Multiplicación o producto * Asterisco
División o cociente decimal / Slash
División o cociente entero \ Backslash Div
Operación módulo o de residuo Mod Módulo %
Exponenciación o potencia ^ Circunflejo **
1 En este libro se utilizará el punto (.) como separador de los números decimales puesto que en los 
lenguajes de programación si se utilizan números separados por coma (,) presentarán error.
18 Fundamentos iniciales de lógicade programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
La división entera solo es usada en algunos lenguajes de programación. 
Por tal motivo, en este libro que es enfocado a lógica de programación, no 
se usará con mucha frecuencia. En algunos lenguajes se usan funciones de 
truncamiento, de redondeo o se soluciona este problema en la declaración 
de variables de tipo entera, la cual omite los decimales.
1.1.2 Operadores lógicos relacionales y booleanos
Los operadores lógicos permiten hacer comparaciones entre variables y/o 
valores. Estos operadores se dividen en: operadores lógicos relacionales y 
operadores lógicos booleanos.
Se utilizan para establecer una relación entre dos valores por medio de 
una comparación y produciendo un resultado de Verdadero o Falso. Los 
operadores relacionales comparan valores del mismo tipo, tienen el mismo 
nivel de prioridad al evaluarse y tienen menor prioridad que los operadores 
aritméticos (véase tabla 2).
Tabla 2. 
Operadores relacionales.
Comparación Operador Ejemplo Python
Mayor que > 50 > 10 >
Menor que < 5 < 15 <
Mayor o igual que > = 10 >= 10 >=
Menor o igual que <= –5 <= 5 <=
Igual = 25 = 25 ==
Diferente < > 8 <> 4 !=
Los símbolos de los operadores	relacionales:	mayor	igual	que	(≥),	me-
nor	o	igual	que	(≤)	y	diferente	(≠),	son	usados	en	lógica matemática, pero 
no en lógica de programación. En el lenguaje de programación Python se 
usa el operador != (no igual) que es equivalente al operador <> (diferente).
Los operadores lógicos booleanos se utilizan para establecer relaciones 
entre valores lógicos, y estos valores pueden ser resultado de una expresión 
relacional. Al comparar valores de Falso o Verdadero usando los operado-
res lógicos booleanos de la tabla 3, se produce un resultado del mismo tipo: 
Verdadero o Falso.
19Unidad 1. Conceptos básicos de lógica de programación
Tabla 3. 
Operadores booleanos.
Operación Símbolo (Nombre) Python
Conjunción Λ (Y) And
Disyunción V (O) Or
Negación ! (NO) Not
Como lo dice (EcuRed, 2018), al momento de hacer comparaciones se 
debe tener en cuenta la tabla de verdad o tabla de valores de verdad vista en 
matemática o lógica matemática. La tabla 3 muestra el valor de verdad de 
una proposición compuesta para cada combinación de valores que se pue-
dan asignar a sus componentes. Las tablas de verdad fueron desarrolladas 
por Charles Sanders Peirce en los años de 1880, pero el formato más popu-
lar es el que introdujo Ludwig Wittgenstein en 1921. La tabla de los valores 
de verdad es usada en el ámbito de la lógica, para obtener Verdadero (V) o 
Falso (F) de una expresión o de una proposición.
Estas tablas pueden construirse haciendo una interpretación de los ope-
radores lógicos booleanos. En consecuencia, las tablas de verdad consti-
tuyen un método de decisión para chequear si una proposición es o no un 
teorema. Normalmente, empieza con la letra p con valores Verdadero, Ver-
dadero, Falso, Falso y una variable q con valores Verdadero, Falso, Verda-
dero y Falso, como se muestra en la tabla 4.
Tabla 4. 
Tabla de verdad.
P Q
Verdadero Verdadero
Verdadero Falso
Falso Verdadero
Falso Falso
Al construir tablas de verdad se pueden encontrar alguna negación, la 
cual es el valor contrario de la proposición, esta se representa con el sím-
bolo ~. Por ejemplo, si p = Verdadero, entonces ~p = Falso y si p = Falso, 
entonces ~p = Verdadero. La tabla de verdad de la negación de p y q se 
muestra en la tabla 5.
20 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Tabla 5. 
Tabla de verdad de la negación.
P Q ~p ~q
Verdadero Verdadero Falso Falso
Verdadero Falso Falso Verdadero
Falso Verdadero Verdadero Falso
Falso Falso Verdadero Verdadero
Por su parte, la conjunción	se	representa	con	el	símbolo	Λ.	Se	tienen	
que cumplir las dos condiciones en Verdadero para que el resultado sea Ver-
dadero, en los demás casos el resultado es Falso. Por ejemplo, si ponemos 
la siguiente condición: compro ese libro si tengo dinero (p) y si la tienda 
está abierta (q). Se pueden dar estos casos:
- Si tengo dinero (p = Verdadero) y la tienda está abierta (q = Verdadero) 
 Me compro el libro (Verdadero). Se tienen que cumplir las dos con-
diciones para poder comprar el libro.
- Si tengo dinero (p = Verdadero) y la tienda no está abierta (~q = Falso) 
 No compro el libro (Falso). Al no estar abierta la tienda no puedo 
comprar el libro.
- Si no tengo dinero (~p = Falso) y la tienda está abierta (q = Verdadero) 
 No compro el libro (Falso). Al no tener dinero, tampoco puedo com-
prar el libro.
- Si no tengo dinero (~p = Falso) y la tienda no está abierta (~q = Falso) 
 No compro el libro (Falso). Al no tener dinero y la tienda no estar 
abierta no puedo comprar el libro.
En resumen, p = Verdadero y q = Verdadero, entonces p Λ q = Verdade-
ro, en los demás casos es Falso (véase tabla 6).
Tabla 6. 
Tabla de verdad de la conjunción.
P Q p Λ q
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso
21Unidad 1. Conceptos básicos de lógica de programación
La disyunción se representa con el símbolo V. Da como resultado Falso 
cuando las dos condiciones son falsas, en los demás casos es Verdadero. Por 
ejemplo, si ponemos la siguiente condición, me compro un vehículo si me 
aprueban un préstamo en el banco (p) o si me gano la lotería (q). Se pueden 
dar estos casos:
- Si me aprueban un préstamo en el banco (p = Verdadero) o me gano la 
lotería (q = Verdadero)  Me compro el vehículo (Verdadero).
- Si me aprueban un préstamo en el banco (p = Verdadero) o no me gano 
la lotería (~q = Falso)  Me compro el vehículo (Verdadero).
- Si no me aprueban un préstamo en el banco (~p = Falso) o me gano la 
lotería (q = Verdadero)  Me compro el vehículo (Verdadero).
- Si no me aprueban un préstamo en el banco (~p = Falso) o no me gano 
la lotería (~q = Falso)  No puedo comprar el vehículo (Falso).
En resumen, p = Falso y q = Falso, entonces p V q = Falso, en los de-
más casos es Verdadero (véase tabla 7).
Tabla 7. 
Tabla de verdad de la disyunción.
P q p V q
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso
1.2 Tipos de división en lógica de programación
Antes de empezar a hacer operaciones con jerarquía de los operadores es 
fundamental entender los tres tipos de división que existen en lógica y en 
lenguajes de programación que, a pesar de su similitud, tienen algunas di-
ferencias marcadas.
22 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
1.2.1 División decimal
Es la división que se realiza por defecto, es la más usada. Se representa 
con signo / (slash). Es aquella que da resultados con decimales, en caso de 
tenerlos. Una calculadora siempre arroja los resultados de esta forma. En 
este libro se usan dos decimales para dar resultados de forma más precisa 
y	así	unificar	 respuestas	en	 la	 solución	de	 los	ejercicios	 (tener	en	cuenta	
conceptos de redondeo para estas respuestas).
Por ejemplo, 51 / 2 = 25.5 no tiene decimales para hacer aproximación 
y 100 / 3 = 33.3333333, quedaría 33.33 (aproximando o truncando a dos 
decimales). El resultado se muestra completo con sus decimales. En caso de 
ser una división cuyo resultado no tenga decimales, este se puede presentar 
de dos formas, dependiendo del formato de salida: 20 / 5 se puede visualizar 
como 4 o 4.0 y ambos resultados son válidos.
1.2.2 División entera
Se representa con signo \ (backslash). Esta división no tiene en cuenta los 
decimales del resultado, no importa su valor decimal. Aquí no se puede 
aproximar o redondear, sino que se aplica el concepto de truncamiento al 
resultado.
Según Ruiz, Llorente, González, Aparicio y Arribas (2019,p.19) “para 
hacer truncamientos de orden n se eliminan todas las cifras a partir de ese 
orden”, en nuestros ejemplos se aplica truncamiento de orden 0 quitando 
los dígitos a la derecha del separador decimal y dejando los dígitos que se 
encuentra a la izquierda del punto, por ejemplo, al hacer la división entera 
59 999 \ 10 000 se obtiene como respuesta 5.9999 y aplicarle el concepto de 
truncamiento, el resultado sería 5.
Existe truncamiento a un número de dígitos, por ejemplo, al truncar el 
número	3.14159265	a	cuatro	dígitos	significativos	a	la	derecha,	el	resultado	
es 3.1415; pero en este caso, usaremos el truncamiento con cero cantidades 
de	dígitos	significativos	a	la	derecha,	para	lo	cual	se	quita	los	valores	ubica-
dos después del punto (.) sin importar cual sea ese valor. Ahora aplicando el 
concepto de división entera a 51 \ 2, el resultado es 25.
23Unidad 1. Conceptos básicos de lógica de programación
En la práctica normal, la división entera se aplica declarando variables 
de este tipo o usando funciones de truncamiento y redondeo. Por ejemplo, si 
se calcula una operación como Division = 8 / 3, el resultado es 2.666666 si 
la variable Division es de tipo real; pero si es de tipo entero el resultado es 
2. Por lo tanto, se realiza el truncamiento por la declaración de la variable.
1.2.3 Operación módulo
Es conocida como división de residuo; debido a que usa el residuo de la 
división de los dos valores enteros para arrojar un resultado. Por ejemplo, 
51 mod 2 es igual a 1. Normalmente se usa el operador % o la palabra mod. 
Para	explicar	el	resultado	véase	la	figura	2.	
Figura 2. Ejemplo de operación módulo.
Para entender mejor los tipos de división, se realizan las siguientes acla-
raciones:
- La operación decimal 46 / 7 es igual a 6.57142857, aproximando la 
respuesta a dos decimales sería 6.57. Este resultado es el que sacamos 
frecuentemente en las calculadoras, celulares o computadoras.
- La operación entera 46 \ 7 es igual a 6, dado que se aplica el trun-
camiento al resultado quitando los decimales de la respuesta anterior: 
6.57La operación módulo 46 mod 7 es igual a 4; el cual corresponde al 
residuo luego de ejecutar la división de 46 entre 7 (el 7 en el 46 está 6 
veces, al multiplicar 7 por 6 da 42, quedando como residuo 4, que es lo 
que falta para llegar a 46). Para entender mejor los conceptos, observar 
los resultados de cada una de las operaciones en la tabla 8.
24 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Tabla 8. 
Resultados de los tipos de división.
Operación Decimal Entera Módulo
11 dividido 6 1.83333333 ≈ 1.83 1 5
29 dividido 9 3.22222222 ≈ 3.22 3 2
38 dividido 8 4.75 4 6
45 dividido 2 22.50 22 1
52 dividido 9 5.77777778 ≈ 5.78 5 7
64 dividido 7 9.14285714 ≈ 9.14 9 1
80 dividido 8 10.00 10 0
98 dividido 9 10.8888888889 ≈ 10.89 10 8
100 dividido 3 33.3333333 ≈ 33.33 33 1
148 dividido 84 1.7619047619047 ≈ 1.76 1 64
1583 divido 78 20.29487179487 ≈ 20.29 20 23
4562 divido 145 31.46206896551 ≈ 31.46 31 67
7821 divido 23 340.04347826 ≈ 340.04 340 1
Se recomienda tener en cuenta lo siguiente al momento de resolver los 
diferentes tipos de división:
- Cuando una división es exacta en la operación módulo, el resultado 
siempre es igual a cero, porque no queda ningún residuo. Por ejemplo: al 
realizar la operación 42 mod 7 (el 7 en el 42 está 6 veces, 7 multiplicado 
por 6) da como resultado 42 y lo que le faltaría para llegar a 42 es 0. 
- Cuando la división es exacta, la división decimal y la división entera 
son iguales. Por ejemplo: 42 / 7 = 6.00 es igual a 42 \ 7 = 6.
- Cuando el denominador es mayor que el numerador, el resultado de 
la división entera es igual 0 y de la operación módulo es igual al nu-
merador. Por ejemplo: 7 / 42 = 0.1666 y al realizar el truncamiento de 
los decimales a la respuesta anterior, el resultado es 0. Y al realizar la 
operación 7 mod 42 es resultado es igual a 7.
Para entender mejor las últimas observaciones, ver los resultados de 
cada una de las divisiones en la tabla 9.
25Unidad 1. Conceptos básicos de lógica de programación
Tabla 9. 
Resultados de los casos especiales en los tipos de división.
Operación Decimal Entera Módulo
8 dividido 16 0.50 0 8
15 dividido 5 3.00 3 0
48 dividido 8 6.00 6 0
14 dividido 24 0.58333333 ≈ 0.58 0 14
78 dividido 13 6.00 6 0
97 dividido 101 0.96039604 ≈ 0.96 0 97
645 dividido 4521 0.142667551 0 645
4335 dividido 255 17.00 17 0
1.3 Jerarquía de los operadores
Una computadora, para dar el resultado de una operación matemática, rea-
liza cálculos teniendo siempre en cuenta el orden de los operadores que la 
conforman. Este orden es el que se conoce como jerarquía de los opera-
dores, la cual efectúa las operaciones de forma estricta según los niveles 
mostrados en la tabla 10.
Tabla 10. 
Jerarquía de los operadores de cuatro niveles.
Nivel Operación por desarrollar Símbolo
1 Potenciación o exponenciación ^
2 Multiplicación y división decimal * /
3 División entera y operación módulo \ mod
4 Suma y resta + –
Al resolver cualquier expresión matemática, se desarrollan las opera-
ciones que están entre paréntesis, y en el interior se van aplicando cada uno 
de los niveles que se muestran. Es importante tener en cuenta que un parén-
tesis desaparece cuando no tenga operaciones para realizar en su interior. 
Luego, se repasan los niveles de arriba hacia abajo hasta reducir a un solo 
término.
26 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
1.3.1 Ejemplos de jerarquía de los operadores
Para realizar cualquier operación matemática es necesario utilizar la jerar-
quía de los operadores antes mencionada, debido a que esta indica el orden 
a seguir en el desarrollo de cada una de las operaciones, dependiendo de los 
operadores aritméticos que la componen.
Ejemplo 1. La expresión 2 + 5 * 3 podrá generar duda al momento de 
evaluar cuál operación se ejecuta primero: ¿multiplicación o suma?, si se 
suma primero 2 + 5 da como resultado 7 y al multiplicarlo por 3, da como 
respuesta 21; pero si primero se multiplica 5 * 3 da como resultado 15 y 
luego de sumarle 2, da como respuesta 17. Entonces, ¿cuál es la respuesta 
correcta: 21 o 17?
Para no tener dudas al momento de resolver una operación mate-
mática, se deben seguir las instrucciones de la jerarquía de los operadores, 
donde se observa que primero se ejecuta la multiplicación y luego la suma, 
por lo tanto, la respuesta correcta será 17, quedando así: 
2 + 5 * 3
2 + 15
17
Ejemplo 2. Para dar el resultado a la expresión 40 / 5 + 8 ̂ 2 * 3, se debe 
hacer lo siguiente:
- 40 / 5 + 8 ^ 2 * 3  Primero se resuelve la potenciación, que es el 
operador de mayor jerarquía (debido a que no tiene paréntesis), dando 
como resultado: 40 / 5 + 64 * 3.
- 40 / 5 + 64 * 3  En este momento se pasa a dar solución a la división, 
que está al mismo nivel que la multiplicación, puesto que operaciones 
del mismo nivel se desarrollan de izquierda a derecha, dando como re-
sultado: 8 + 64 * 3.
- 8 + 64 * 3  Luego se resuelve la multiplicación, que está por encima 
de la suma en la jerarquía, dando como resultado: 8 + 192.
- 8 + 192  Por último, se realiza la suma dando como resultado 200.
27Unidad 1. Conceptos básicos de lógica de programación
1.3.2 Ejercicios resueltos
a. 9 + 2 * 12 / 2 ^ 2 + (5 ^ 3 / (10 + 2.5))
 9 + 2 * 12 / 2 ^ 2 + (5 ^ 3 / 12.5)
 9 + 2 * 12 / 2 ^ 2 + (125 / 12.5)
 9 + 2 * 12 / 2 ^ 2 + 10
 9 + 2 * 12 / 4 + 10
 9 + 24 / 4 + 10
 9 + 6 + 10
 15 + 10
 25
Al encontrarse con dos paréntesis se empieza a resolver por el más in-
terno, y solo desaparece cuando queda un solo término en medio (en la se-
gunda línea desaparece un paréntesis, debido a que al sumar 10 + 2.5 queda 
un solo termino que es 12.5; mientras que el segundo no desaparece porque 
aún faltan operacionespor realizar en su interior: potenciación y división. 
Este desaparece en la cuarta línea).
b. 20 / 2 / 4 / 5 + ((41 / 2 / 5 + 2.9) mod 3)
 20 / 2 / 4 / 5 + ((20.5 / 5 + 2.9) mod 3)
 20 / 2 / 4 / 5 + ((4.1 + 2.9) mod 3)
 20 / 2 / 4 / 5 + (7 mod 3)
 20 / 2 / 4 / 5 + 1
 10 / 4 / 5 + 1
 2.5 / 5 + 1
 0.5 + 1
 1.5
En este ejemplo se presenta una situación similar relacionada con el 
manejo de paréntesis. En la línea 4 y en la línea 6 desaparecen los paréntesis.
c. (10 ^ 3 + 5 * 100 / 5) + 54 – (605 mod 2) * 1150
 (1000 + 5 * 100 / 5) + 54 – (605 mod 2) * 1150
 (1000 + 500 / 5) + 54 – (605 mod 2) * 1150
28 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
 (1000 + 100) + 54 – (605 mod 2) * 1150
 1100 + 54 – (605 mod 2) * 1150
 1100 + 54 – 1 * 1150
 1100 + 54 – 1150
 1154 – 1150
 4
Cuando un paréntesis desaparece y queda solo un número, al momen-
to de destruirlo, se aplica la ley de signos. En el caso del 605 módulo 2 el 
resultado es positivo: +1, pero al estar precedido de un signo negativo, la 
respuesta será con signo negativo: –1.
d. (12 + 3) * 8 – (9 – 4 ^ 2 – 10)
 15 * 8 – (9 – 4 ^ 2 – 10)
 15 * 8 – (9 – 16 – 10)
 15 * 8 – (–7 – 10)
 15 * 8 – (–17)
 15 * 8 + 17
 120 + 17
 137
En este ejercicio se aplican las aclaraciones referentes a cuando dos 
términos tienen signos iguales, estos se suman y conservan el signo: –7 – 10 
es igual a –17; y al desaparecer el paréntesis precedido con signo negativo 
se cambiaría a positivo: – (–17) es igual a +17.
e. –7 * 10 – 50 mod 3 * 4 – 12 * 8 + (–3) ^ 3 – 5
 –7 * 10 – 50 mod 3 * 4 – 12 * 8 + (–27) – 5
 –7 * 10 – 50 mod 3 * 4 – 12 * 8 – 27 – 5
 –70 – 50 mod 3 * 4 – 12 * 8 –27 – 5
 –70 – 50 mod 12 – 12 * 8 – 27 – 5
 –70 – 50 mod 12 – 96 – 27 – 5
 –70 – 2 – 96 – 27 – 5
 –72 – 96 – 27 – 5
29Unidad 1. Conceptos básicos de lógica de programación
 –168 – 27 – 5
 –195 – 5
 –200
En este ejercicio se aplica la aclaración de cuando un número negativo 
es elevado a una potencia impar, el resultado es negativo. Por ejemplo, (–3) 
^ 3 da como resultado un número con signo negativo –27. Y en la séptima 
línea, cuando dos términos tienen signos iguales, estos se suman y conser-
van el signo: –70 – 2 es igual a –72.
Al ejecutar la expresión del literal e en Python, el resultado es –206 
(véase	la	figura	3); pero este resultado es diferente al 200 obtenido al resol-
ver el ejemplo anterior.
Figura 3. Ejecución de operaciones en Python.
La explicación a la diferencia entre las dos respuestas radica en que 
Python tiene una estructura de jerarquía de operadores de tres niveles, don-
de se combinan en uno solo las multiplicaciones y las divisiones (véase 
tabla 11).
Tabla 11. 
Jerarquía de los operadores de tres niveles.
Nivel Operación para desarrollar
1 Potenciación o exponenciación.
2 Multiplicación, división (decimal y entera) y operación módulo.
3 Suma y resta.
En la tabla anterior no se agrega la potenciación, porque en algoritmos 
y en programación no existe esta operación, sino que se usa la potenciación 
para obtener las raíces.
30 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
f. –7 * 10 – 50 mod 3 * 4 – 12 * 8 + (–3) ^ 3 – 5
 –7 * 10 – 50 mod 3 * 4 – 12 * 8 + (–27) – 5
 –7 * 10 – 50 mod 3 * 4 – 12 * 8 – 27 – 5
 –70 – 50 mod 3 * 4 – 12 * 8 –27 – 5
 –70 – 2 * 4 – 12 * 8 – 27 – 5
 –70 – 8 – 12 * 8 – 27 – 5
 –70 – 8 – 96 – 27 – 5
 –78 – 96 – 27 – 5
 –174 – 27 – 5
 –201 – 5
 –206
En	la	cuarta	línea	pasa	algo	sumamente	significativo;	se	realiza	primero	
la operación módulo que las multiplicaciones; y esto pasa en computadoras 
que manejen un nivel de jerarquía de tan solo tres niveles, donde se combi-
nan en uno solo las multiplicaciones y las divisiones (véase tabla 11).
g. (17 / 7 * 2) + (4 * 3 / 5 – 2) – (40 / 3 / 2 * 4 – 5)
 (2.43 * 2) + (4 * 3 / 5 – 2) – (40 / 3 / 2 * 4 – 5)
 4.86 + (4 * 3 / 5 – 2) – (40 / 3 / 2 * 4 – 5)
 4.86 + (12 / 5 – 2) – (40 / 3 / 2 * 4 – 5)
 4.86 + (2.4 – 2) – (40 / 3 / 2 * 4 – 5)
 4.86 + 0.4 – (40 / 3 / 2 * 4 – 5)
 4.86 + 0.4 – (13.33 / 2 * 4 – 5)
 4.86 + 0.4 – (6.67 * 4 – 5)
 4.86 + 0.4 – (26.68 – 5)
 4.86 + 0.4 – 21.68
 5.26 – 21.68
 –16.42
Al encontrarse con dos paréntesis se resuelven de izquierda a derecha; 
por eso se empieza por el primer paréntesis (17 / 7 * 2) y luego con otro 
(4 * 3 / 5 – 2).
31Unidad 1. Conceptos básicos de lógica de programación
h. 5 ^ 2 ^ 2 + 8 * 2 ^ 3 ^ 2 / 2 ^ 3 mod 23
 5 ^ 4 + 8 * 2 ^ 3 ^ 2 / 2 ^ 3 mod 23
 625 + 8 * 2 ^ 3 ^ 2 / 2 ^ 3 mod 23
 625 + 8 * 2 ^ 9 / 2 ^ 3 mod 23
 625 + 8 * 512 / 2 ^ 3 mod 23
 625 + 8 * 512 / 8 mod 23
 625 + 4096 / 8 mod 23
 625 + 512 mod 23
 625 + 6
 631
En otros lenguajes, las potencias sucesivas, se resuelven de derecha a 
izquierda, como es el caso del lenguaje de programación Python. Recuerde 
que en la parte de operadores se explicó que la potenciación se puede repre-
sentar con el doble asterisco (**). El resultado sería como se puede observar 
en	la	figura	4.
Figura 4. Ejecución de potencias sucesivas en Python.
1.3.3 Ejercicios propuestos
Dar el resultado de las siguientes expresiones.
a. 2 + 3 * 4
b. 10 ^ 2 ^ 2 / 7
c. 42 / 2 / 3 / 7 ^ 3
d. 8 + 7 * 3 + 4 * 6
e. 5 ^ 3 + 120 – 3 ^ 5
f. 12 + 3 * 7 + 5 * 4
g. 4 + 5 ^ 2 – 500 + 20 ^ 2 * 10
h. (4 ^ 3 + 2 * 40 – 140) ^ 2
32 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
i. 5 + (25 * 2 + 5 * 8 / 2 – 10) * 2
j. 2 * 25 / 5 + 5 ^ 2 – 5
k. 15 – ((4 *5 + (8 / 2 –5) * 2) + 8 * 10 / 2)
l. 2 – 5 * 12 / 2 + 8
m. (8 ^ 2 + 3 * 10 + 5) – (6 ^ 2 – 2 * 5 – 6)
n. (33 + 5 * 3 ^ 5 + 11 * 3 + 14) / (3 + 2)
o. (2 * 5 * 3 * 4 ^ 2) / (48 / 2 ^ 2 – 20 + 2 ^ 2) / 10
p. 4 ^ 2 + 3 ^ 2 * 2 ^ 2 + 5 ^ 3 – 4 ^ ((7 * 3 mod 9) mod 25)
q. (4 – (9 * 8 * 5 mod 3) * 3) / (100 mod 8 mod 3)
r. 208 / 4 / (455 * 2 / 5 mod 4 + 50)
s. (17 / 7 * 2) + (4 * 3 / 5 – 2) – (40 / 3 / 2 – 5)
t. 4 ^ 2 * 5 * 3 – 8 – 152 – (5 ^ 3 * 10 \ 4) mod 2 * 4
u. 8 * (4 – 3 ^ 2) ^ 2 – 9 * (3 ^ 4 – 4 ^ 3) ^ 3
v. (4 + 2 * 9 / 5) – (2 ^ 2 * 8) / 2 ^ 2
w. 8 ^ 2 / 4 ^ 3 mod 10 ^ 2 / 5 + 100
x. (80 / 8) ^ 2 – 4 / 2 + (20 / 4) ^ 3
y. 89 + (66 ^ 2 mod 2011 + 400) ^ (2 mod 8) / 3 ^ (3 + 2)
z. 14 – (7 + 4 * 3 – (–2) ^ 2 * 2 – 6) + (2 ^ 2 + 6 – 5 * 3)
1.4 Expresiones algorítmicas
Las expresiones algorítmicas son expresiones manejadas dentro de ló-
gica de programación que usan una sintaxis que permite ser procesada 
por la computadora. Estas expresiones son diferentes a las expresiones 
matemáticas.
Para crear expresiones algorítmicas se requiere la aplicación de los ope-
radores aritméticos, haciendo reemplazo de los operadores matemáticos por 
operadores aritméticos. Una expresión matemática como a2 + bx + c, se 
convierte a expresión algorítmica, quedando de esta forma a ^ 2 + b * x + c.
33Unidad 1. Conceptos básicos de lógica de programación
1.4.1 Ejemplos de conversión de expresiones algorítmicas
Ejemplo 1. En la expresión matemática: a2 + 2ab + b2, se puede observar 
que, tanto la letra a como la letra b, están elevadas al cuadrado, por tal moti-
vo	se	debe	utilizar	el	operador	circunflejo	(^).	De	igual	forma,	los	términos	
2, a y b, se están multiplicando entre sí, por lo que deben ser separados por 
el operador de la multiplicación (*). Por último, la suma queda tal cual está 
ubicada en la expresión. El resultado al realizar la conversión sería: a ^ 2 + 
2 * a * b + b ^ 2.
Ejemplo 2. La expresión matemática X + 2Y, para ser convertida a ex-
presión algorítmica, simplemente se agregar el asterisco (*) al termino 2Y, 
considerando que el número 2 se está multiplicando con la letra Y dando 
como resultado X + 2 * Y.
Ejemplo 3. La expresión 5a3 + 2b4 – 4c tiene multiplicación, potencia, 
suma y resta. Dando como resultado: 5 * a ^ 3 + 2 * b ^ 4 – 4 * c.
Pero no todas las expresiones son tan fáciles de convertir; aquíse darán 
cuatro ejemplos donde se empezará a generar un poco más de complejidad, 
donde varias expresiones matemáticas diferentes, generan la misma expre-
sión algorítmica.
a.  x + y / m * n ^ 3
b.  x + y / m * n ^ 3
c.  x + y / m * n ^ 3
d.  x + y / m * n ^ 3
Para	 poder	 solucionar	 la	 dificultad	 anterior,	 se	 deben	 usar	 paréntesis	
para empezar a romper la jerarquía y que se hagan unas operaciones antes 
que otras.
Los	resultados	finales	son	los	siguientes:
a.  (x + y) / m * n ^ 3
b.  (x + y) / (m * n ^ 3)
34 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
c.  x + y / (m * n ^ 3)
d.  x + y / m * n ^ 3
Observe que cada presencia o ausencia de paréntesis diferencia cada 
expresión	algorítmica,	de	ahí	lo	fundamental	de	identificar	el	lugar	donde	
se van a agregar.
1.4.2 Convertir expresiones algorítmicas en matemáticas
Los ejercicios también se pueden convertir en sentido contrario, de una ex-
presión algorítmica sacar una expresión matemática, como se muestra en 
estos ejemplos:
a. x * y * z  xyz
b. a * (x – y) ^ 3  a (x – y)3
c. 40 / 5 + 8 ^ 2 – 3  + 82 – 3
d. x ^ 2 / a ^ 2 + y ^ 2  + y2
e. x ^ 2 / (a ^ 2 + y ^ 2)  
f. x ^ (a – 2) / (x ^ 2 – 2 + y ^ (2 * n))  
1.4.3 Ejercicios resueltos
a.  (x + 2 * y) / 2 ^ 3
b. x +  x + 2 * y / 2 ^ 3
c.  (m ^ 2 + n ^ 2) / (4 * x * y ^ 3)
d.  (m – n) ^ 2 / (4 * x * (3 * y ^ 3))
	  (m – n) ^ 2 / (4 * x * 3 * y ^ 3) // Se puede ignorar el paréntesis sin 
afectar el resultado.
35Unidad 1. Conceptos básicos de lógica de programación
El doble slash (//) se usa en el libro para realizar comentarios, así como 
dentro de los pseudocódigos.
e. x + y +  x + y + (a ^ 2 + b ^ 2) / 2
f.  (x + y + a ^ 2 + b ^ 2) / 2
g. x + y + a2 +  x + y + a ^ 2 + b ^ 2 / 2
h.  (m + n) / p / ((q – r) / s)
i.  (m + n / p) / (q – r / s)
j.  (m + n / p) / ((q – r) / s)
1.4.4 Ejercicios propuestos
Convertir las siguientes expresiones matemáticas en expresiones 
algorítmicas:
a. 
b. y + 
c. 
d. 
e. 
f. 
g. 
h. 
36 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
i. 
j. 
k. 
l. 
Convertir las siguientes expresiones algorítmicas a expresiones mate-
máticas:
m. 7 * (1 + y)
n. a ^ 3 + b ^ 3
o. (x + y) / (u + w / a)
p. a ^ 3 + 3 * a ^ 2 * b + 3 * a * b ^ 2 + b ^ 3
q. (a + b) ^ 2 – (a – b ^ 2)
r. x – y ^ 2 * (x – y) ^ (2 – n ^ 3)
s. (a / b) + (c / a) + c
t. a / (b + c) / (a / b + c)
1.5 Lógica de programación y algoritmos
La base fundamental al momento de empezar a programar son la lógica y 
los algritmos.	A	continuación	unas	definiciones	cortas	con	unas	explicacio-
nes de las caracteristicas, partes, tipos y pasos para resolver un algoritmo. 
1.5.1 Definiciones
El término “lógica (del griego logos)	significa	estudio	o	tratado	racional	y	
así, el objeto de estudio de esta disciplina es el razonamiento y éste se ex-
presa mediante el lenguaje” (García, Ordoñez y Ruiz citados en Guzmán y 
López, 2019, p. 76). Por lo tanto, lógica es todo aquello relacionado con la 
razón o el pensamiento.
37Unidad 1. Conceptos básicos de lógica de programación
El algoritmo	es	el	conjunto	finito	de	pasos,	operaciones	o	procedimien-
tos secuenciales que sirven para obtener una solución a un problema deter-
minado	a	partir	de	ciertas	reglas	definidas.	El	término	algoritmo viene, según 
la traducción de Fibonacci de las palabras Algoritmi dicit, de la obra Quitab 
Al Jabr Al Mugabala del autor árabe Muhammed ibn Musa al–Khwarizmi 
(también llamado Al–Jwarizmi o Al–Juarismi), matemático árabe del siglo 
ix que aparece con un turbante en el famoso libro del Álgebra de Baldor 
(Niño, Cobos y Mendoza, 2010).
La lógica que se aprende en el desarrollo de los temas se aplica en len-
guajes de programación, de ahí el concepto de lógica de programación.
1.5.2 Características de un algoritmo
Todo algoritmo debe cumplir con las siguientes características:
-	 Ser	finito: todo algoritmo debe tener un inicio y en un momento deter-
minado	debe	llegar	a	su	fin.	Tiene	un	número	finito	de	instrucciones.
-	 Ser	definido: debe tener un desarrollo claro y coherente. No debe per-
mitir dobles interpretaciones.
- Ser preciso: un algoritmo solo debe hacer lo solicitado en un orden ló-
gico y estricto. Se debe generar un orden estructurado en el desarrollo 
de la solución. Se puede presentar errores si se hace más o menos de 
lo pedido, de igual forma cuando se realizan instrucciones en un orden 
equivocado.
- Ser legible: debe estar bien estructurado y organizado para entenderlo 
fácilmente.2
-	 Ser	eficiente: debe hacer lo solicitado con el mínimo de instrucciones 
posibles.
- Ser general: debe soportar todas las variaciones que sean posible para 
dar	solución	a	problemas	con	las	mismas	especificaciones.
- Ser neutral de material: puede ser realizado en papel, pizarras, micro-
controladores, simuladores o computadoras.
2 Se recomienda tener en cuenta esta y las siguientes características, aunque no son de tanta riguro-
sidad como las anteriores que sí son casi de estricto cumplimiento.
38 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
A pesar de la complejidad que se maneja en los conceptos de algo-
ritmos, estos son muy comunes, se encuentran en todo lugar y se aplican 
constantemente. El ejemplo más claro está en una receta de cocina, que no 
es otra cosa que un algoritmo, por poco parecido que tenga con un cálculo 
matemático o un programa informático, cumple con cada una de las caracte-
rísticas de un algoritmo. A continuación, una breve explicación, las recetas 
de cocina son:
- Instrucciones paso a paso que sirven para dar solución a un problema, 
en este caso si se busca una receta es porque se requiere hacer un postre, 
ensalada o cualquier plato, y se encontrarán unas instrucciones secuen-
ciales para su realización.
- Finitas porque tienen un proceso que empieza con una serie de ingre-
dientes	y	unas	instrucciones	que	van	a	finalizar	con	la	realización	de	un	
producto esperado.
- Definidas	porque	 tienen	un	mismo	procedimiento	y	un	 resultado	 co-
rrecto, si se aplica correctamente.
- Precisas porque tienen instrucciones claras que se deben realizar de for-
ma ordenada.
- Legibles porque tienen un desarrollo claro y estructurado. Normalmen-
te pueden ser realizadas, sin ningún problema, por cualquier persona.
- Eficientes	porque	se	hace	el	producto	con	el	mínimo	de	recursos	y	en	el	
menor tiempo posible.
- Generales porque permiten variantes de acuerdo con la experiencia de 
quien la realiza; pero a pesar de estas el resultado siempre va a ser el 
mismo.
- Son neutrales respecto al material, puesto que pueden estar escritas en 
un libro de recetas, pueden ser vista en un programa de televisión o 
simplemente existir en grabaciones.
1.5.3 Partes de un algoritmo
a. Entrada: es el lugar donde se relaciona la información que va a ser leída 
o ingresada. Aquí van todos los datos que se desconocen y se requieren 
39Unidad 1. Conceptos básicos de lógica de programación
para realizar cálculos, operaciones o procesos. En el pseudocódigo la 
entrada empieza con palabras como ingresar, obtener, iniciar o leer y 
se describen las variables necesarias para crear una solución, separa-
das por coma (,). Estas variables deben cumplir con ciertas condiciones 
(condiciones	para	nombrar	variables	o	constantes),	tema	ubicado	al	fi-
nalizar esta primera unidad. También se recomienda acompañar estas 
entradas	de	mensajes	que	permitan	identificar	con	mayor	facilidad	lo	
que se requiere, entregando instrucciones claras y precisas al usuario de 
la forma como debe entregar los datos.
b. Proceso: es el lugar donde se realizan las operaciones y cálculos nece-
sarios para alcanzarel resultado esperado. Cada cálculo se recomien-
da almacenarlo en una variable y se le asigna información por medio 
del signo igual (=) o a con el símbolo (). Se recomienda realizar un 
cálculo en cada renglón, aunque cada cálculo puede incluir varias ope-
raciones matemáticas. En el pseudocódigo el proceso puede calcularse 
asignando los cálculos o describiendo las acciones a realizar, por ejem-
plo, calcular, restar o sumar. 
c. Salidala cual dará respuesta a los requerimientos o peticiones que te-
nía el algoritmo al empezar.” : es el lugar donde se describe la informa-
ción que se va a imprimir, la cual dará respuesta a los requerimientos 
o peticiones que tenía el algoritmo al empezar. En el pseudocódigo la 
salida empieza con las palabras visualizar, imprimir, escribir o mostrar 
y se escriben las variables a mostrar separadas por coma (,). También se 
recomienda	acompañar	las	salidas	de	mensajes	que	permitan	identificar	
con mayor facilidad los datos que se quieren mostrar.
1.5.4 Tipos de algoritmos
a. Algoritmo cualitativo: “son algoritmos usados generalmente para des-
cribir procesos de la vida cotidiana que no incluyen cálculos numé-
ricos” (Guerrero, 2016, p.3). También conocido como algoritmo no 
computacional. Ejemplos claros y cotidianos de algoritmos cualitativos 
pueden ser: el modo de operar una lavadora, tocar música por medio de 
partituras, construir un aeroplano, búsqueda de un número en el direc-
40 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
torio telefónico, el montaje de una llanta pinchada, la búsqueda de una 
dirección, la adquisición de algún producto o incluso hacer trucos de 
magia, entre otros.
b. Algoritmo cuantitativo: “son algoritmos muy objetivos, pues al tener 
siempre correspondencia con problemas matemáticos, demanda la 
inclusión de cálculos numéricos para la obtención de los resultados” 
(Guerrero, 2016, p.4). También conocido como algoritmo computacio-
nal. Ejemplos de algoritmos cuantitativos pueden ser: la división para 
calcular el cociente de dos números, la liquidación de una nómina, la 
solución a cualquier ecuación o fórmula, el registro de transacciones en 
un banco o la realización de un determinado estudio estadístico, entre 
otros.
1.5.5 Pasos para solucionar un problema computacional
a. Definición	y	delimitación	del	problema: para resolver un problema es 
fundamental	conocerlo	por	completo,	y	que	esté	definido	y	delimitado.	
Esta fase está dada por el enunciado del problema, que luego de ser 
leído cuantas veces sea necesario, se pasará a determinar si está claro 
o no y si es posible darle una solución. Si no se entiende el enunciado 
no se podrá continuar con los demás pasos. Se debe tener cuidado con 
no confundir el enunciado dado que se puede terminar dando solución 
a otro problema inexistente.
b. Análisis del problema: una vez que se ha comprendido completamente 
qué	es	lo	que	se	va	a	desarrollar,	es	necesario	definir	los	datos de entra-
da, los cálculos necesarios para procesar los datos, los datos de salida y 
las restricciones que pueda tener la solución planteada.
c. Diseño del algoritmo: en esta fase se determinan los pasos o instruc-
ciones que se llevarán a cabo, el orden lógico de ejecución y la manera 
como	se	desarrollará	todo	el	programa	para	un	eficiente	funcionamien-
to. La forma de representarlo puede ser pseudocódigo, diagramación 
libre o diagramación rectangular.
d. Codificación: consiste en pasar el diseño del algoritmo, en cualquiera 
de las formas de representación, en un lenguaje comprendido por la 
41Unidad 1. Conceptos básicos de lógica de programación
computadora llamado lenguaje de programación. Existen varios len-
guajes con diferentes características y fabricantes, por ejemplo: Len-
guaje C, C++, Java, Python, PHP y todas las herramientas ofrecidas por 
Microsoft (Visual Basic, Visual Studio C#, Visual Studio C++, J#, ASP 
.NET, entre otros).
e. Compilación: en esta etapa la computadora hace una revisión de las 
instrucciones digitadas por el programador y muestra los errores que se 
hayan producido al no cumplir con la sintaxis del lenguaje. Algo impor-
tante para resaltar es que ningún compilador detecta los errores lógicos 
en la realización de una solución, solo los de sintaxis.
f. Depuración:	consiste	en	identificar	y	corregir	los	errores	reportados	en	
el proceso de compilación. Este proceso se repite cuantas veces necesa-
rio, hasta dejar el programa sin ningún error.
g. Construcción del programa: al no tener ningún tipo de error, el compi-
lador	construye	un	programa	ejecutable	que	permitirá	verificar	el	fun-
cionamiento de la solución propuesta. Hay que tener en cuenta que, un 
solo error evitará la creación de este programa ejecutable.
h. Ejecución: luego de haber corregido todos los errores y haber compila-
do el programa, se pasa a ejecutarlo para ver los resultados obtenidos. 
En esta etapa se utilizan los dispositivos de entrada y de salida, siendo 
el teclado y el monitor, respectivamente, los más utilizados. Los resul-
tados tienen que ser los esperados, de lo contrario, se tienen que repetir 
los pasos anteriores para detectar los errores; normalmente, aquí se de-
tectan los errores de lógica que no detectan los compiladores.
i. Documentación: se divide en documentación interna, que son aquellos 
comentarios o mensajes que se añaden al código fuente para hacer más 
claro su entendimiento y el de algunos procesos; y documentación ex-
terna la cual es un documento escrito donde se hace descripción paso a 
paso de la manera cómo se debe usar el programa y se describe todo lo 
relacionado con este. Las documentaciones externas más comunes son 
los manuales de usuario y los manuales técnicos.
j. Mantenimiento: se lleva a cabo después de terminado el programa 
cuando se detecta que es necesario hacer algún cambio, ajuste o com-
42 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
plementación para que siga trabajando de manera correcta. Para poder 
realizar este trabajo se requiere que el programa este correctamente do-
cumentado. Luego de todo mantenimiento se recomienda hacer ajustes 
a los manuales realizados en la parte de documentación.
1.5.6 Pasos de elaboración de un algoritmo
a. Leer el enunciado del problema, cuantas veces sea necesario, hasta en-
tenderlo completamente.
b. Determinar claramente los datos de entrada requeridos para poder dar 
solución al problema.
c.	 Definir	cálculos	y	comparaciones	necesarias	para	llegar	al	resultado	es-
perado.
d. Aclarar y determinar los datos de salida, los cuales contienen la infor-
mación o resultados que se soliciten.
e. Tener en cuenta condiciones y restricciones para la solución del proble-
ma.
Los cinco pasos anteriores gozan de la misma importancia. La falta de 
análisis a alguno de estos causará problemas en el transcurso del desarrollo 
del algoritmo. No se debe continuar con alguno de los pasos hasta tener 
claridad de cada uno de los anteriores.
1.6 Formas de representación de un algoritmo
Al momento de plantear una solución a través de un algoritmo es impor-
tante saber que existen varias técnicas para representarlos: lenguaje natural, 
pseudocódigo, diagramación libre y diagramación rectangular. En este libro 
se hace un enfoque mayor en el pseudocódigo por ser la representación más 
cercana al lenguaje de programación.
1.6.1 Algoritmo en lenguaje natural
Un algoritmo en lenguaje natural es	definido	por	(Gómez	y	Moraleda,	2015)	
como una solución basada en el lenguaje que utilizamos para comunicar-
nos, mediante explicaciones más o menos precisas se puede describir una 
43Unidad 1. Conceptos básicos de lógica de programación
solución a un problema usando palabras del lenguaje común que expresan 
operaciones, cálculos y procesos sin tener ninguna sintaxis de programa-
ción.Un algoritmo que permita calcular la ganancia que puede obtener un 
comerciante luego de realizar la venta de un producto puede representarse 
como	se	hace	en	la	figura	5.
Figura 5. Primer ejemplo de un algoritmo en lenguaje natural.
1.6.2 Pseudocódigo
Gómez y Moraleda (2015) describen el pseudocódigo como una notación 
basada en un lenguaje de programación estructurado del que se excluyen 
todos los aspectos de declaración de constantes, tipos, variables y subpro-
gramas; no tiene sintaxis estricta, como sucede con los lenguajes de progra-
mación.
Por	otro	lado,	Juganaru	(2014)	lo	define	como	un	“lenguaje	falso”	for-
mado por una serie de palabras con un formalismo muy sencillo que descri-
be el funcionamiento de un programa; combina frases de lenguaje común e 
instrucciones de programación.
Un pseudocódigo ocupa menos espacio en una hoja de papel, permite 
representar en forma fácil operaciones repetitivas complejas, es más fácil de 
realizar su transformación a un lenguaje de programación y se pueden ob-
servar claramente los niveles de las operaciones. En ocasiones los pseudo-
códigos se enfocan a determinado lenguaje de programación. Por lo anterior 
es	que	la	mayoría	de	los	desarrolladores	profesionales	prefieren	utilizarlo	
antes	que	el	diagrama	de	flujo	que	es	más	enfocado	a	programadores	prin-
cipiantes	o	profesionales	de	otras	carreras	afines.
En este libro usamos el pseudocódigo como principal forma de repre-
sentación de un algoritmo, aunque al inicio de cada unidad se brindan solu-
ciones	combinadas	con	los	diagramas	de	flujos.
44 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Se pone como ejemplo el mismo ejercicio de la ganancia obtenida por 
un comerciante utilizado en el lenguaje natural: un algoritmo que permita 
calcular las ganancias que puede obtener un comerciante luego de realizar 
la venta de un producto determinado.
Para hacer un pseudocódigo hay que aplicar conceptos que se trataron 
en	las	partes	que	conforman	un	algoritmo	(véase	figura	6).
Figura 6. Partes de un algoritmo.
En	la	figura	7	se	puede	visualizar	un	algoritmo	en	pseudocódigo, to-
mando el ejemplo de la ganancia obtenida sobre la venta de un producto.
Figura 7. Primer ejemplo de un algoritmo en pseudocódigo.
La solución es casi la misma del lenguaje natural, solo que ya con un 
poco más estructura y una sintaxis diferente. A medida que se avanza en el 
libro se observarán las diferencias, similitudes y sobre todo las ventajas de 
cada una de estas formas de representación.
45Unidad 1. Conceptos básicos de lógica de programación
1.6.3 Diagramación libre
La diagramación libre	es	también	conocida	como	diagramas	de	flujo,	per-
mite ilustrar la secuencia de pasos de un algoritmo por medio de símbolos 
especializados	y	líneas	de	flujo.	La	combinación	de	símbolos	especializados	
y	líneas	de	flujo	describe	la	lógica para la solución del problema (algorit-
mo).	Entonces	se	puede	afirmar	que	“El	diagrama	de	flujo	es	la	represen-
tación	gráfica	de	un	algoritmo;	para	ello	se	utiliza	unconjunto	de	símbolos	
estándares mundialmente utilizados” (Sauceda, 2019, p. 4).
Los símbolos usados en la diagramación libre	y	sus	significados	se	pre-
sentan en la tabla 12.3
Tabla 12. 
Símbolos de diagramación libre (Microsoft Visio).
Símbolo Significado
Símbolo de inicio y final: se usa para indicar el Inicio y el Fin del 
diagrama de flujo.
Símbolo de proceso y asignación: se usa para realizar 
instrucciones, cálculos y operaciones de asignación.
Símbolo de decisión: se usa para realizar operaciones de 
comparación de valores con estructuras de decisión.
Símbolo de entrada de datos: se usa para indicar las variables 
que van a servir de datos de entrada al diagrama.
Símbolo de subprogramas: se usa para representar todos los 
subprogramas o subrutinas (funciones y procedimientos).
Símbolo de impresión: se usa para mostrar los datos que serán 
visualizados en la impresora o en la pantalla de la computadora 
(siendo este último, el dispositivo de salida más usado).
3 Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización 
(ANSI).
46 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Símbolo Significado
Símbolo de estructura repetitiva: se usa para representar ciclos 
o estructuras repetitivas dentro del diagrama de flujo.
Símbolo de línea o conectores: se usa para conectar los 
diferentes símbolos dentro del diagrama de flujo.
En	la	figura	8	se	puede	visualizar	un	algoritmo	en	diagramación	libre 
a partir del ejemplo de la ganancia obtenida sobre la venta de un producto.
Figura 8. Primer ejemplo de un algoritmo en diagramación libre.
Para	realizar	un	diagrama	de	flujo	se	debe	tener	en	cuenta	lo	siguiente:	
-	 Usar	solo	flechas	horizontales	y/o	verticales.
- Evitar el cruce de líneas.
-	 No	dejar	líneas	de	flujo	(flechas)	sin	conectar.
- Trazar los símbolos de manera que puedan leerse de arriba a abajo y de 
izquierda a derecha.
- Todo texto dentro de un símbolo tiene que ser escrito claramente.
47Unidad 1. Conceptos básicos de lógica de programación
Se puede observar con claridad que a pesar de ser casi idénticos, el dia-
grama ocupa más espacio que el pseudocódigo. En el diagrama desaparecen 
las palabras Leer e Imprimir,	porque	las	figuras	tienen	su	propio	significado	
y es redundante poner el símbolo y la palabra.4
1.6.4 Diagramación rectangular
También conocida con el nombre de diagrama estructurado N–S (Nassi–
Shneiderman). En esta diagramación se utilizan una serie de rectángulos 
consecutivos que son de diferentes tipos y representan diferentes partes de 
un	 algoritmo.	Los	 símbolos	 usados	 y	 sus	 significados	 se	 presentan	 en	 la	
tabla 13.
Tabla 13. 
Símbolos de diagramación rectangular.
Símbolo Significado
Símbolo general: se usa para el Inicio y el Fin del diagrama, para 
leer e imprimir datos y para la realización de cálculos.
Si NO Símbolo de decisión: se usa para realizar operaciones de 
comparación de valores con estructuras de decisión.
Símbolo de estructura repetitiva: se usa para representar ciclos o 
estructuras repetitivas dentro del diagrama de flujo.
Símbolo de estructuras caso: se usa para hacer operaciones con 
estructuras de selección múltiple o caso.
En	la	figura 9 se puede visualizar un algoritmo en diagramación rec-
tangular a partir del ejemplo de la ganancia obtenida sobre la venta de un 
producto.
4 Para profundizar todos los conceptos de diagramación libre y diagramas de flujo (Sauceda, 2019, p. 4).
48 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Figura 9. Primer ejemplo de algoritmo en diagramación rectangular.
1.6.5 Ejemplo de algoritmo cualitativo
a. Problema: diseñar un algoritmo para preparar una limonada para un 
grupo de varias personas. Tener en cuenta las diferentes formas de re-
presentación de un algoritmo y los conceptos vistos hasta ahora.
b. Algoritmo en lenguaje natural: en	la	figura	10	se	puede	visualizar	un	
algoritmo en lenguaje natural, dando solución al problema de preparar 
una limonada para un grupo de personas.
c. Algoritmo en pseudocódigo: en	la	figura	11	se	puede	visualizar	un	al-
goritmo en pseudocódigo, dando solución al problema de preparar una 
limonada para un grupo de personas.
Figura 10. Segundo ejemplo de un algoritmo en lenguaje natural.
49Unidad 1. Conceptos básicos de lógica de programación
Figura 11. Segundo ejemplo de un algoritmo en pseudocódigo.
a. Algoritmo en diagramación libre: en	la	figura	12	se	puede	visualizar	un	
algoritmo en diagramación libre, dando solución al problema de prepa-
rar una limonada para un grupo de personas.
Figura 12. Segundo ejemplo de un algoritmo en diagramación libre.
b. Algoritmo en diagramaciónrectangular: en	la	figura	13	se	puede	vi-
sualizar un algoritmo en diagramación rectangular, dando solución al 
problema de preparar una limonada para un grupo de personas:
50 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Figura 13. Segundo ejemplo de un algoritmo en diagramación rectangular.
En el lenguaje natural se pueden omitir algunas consideraciones que se 
tienen que cumplir en el algoritmo cuantitativo enfocado a pasarse a un len-
guaje de programación, por ejemplo, las tildes en las variables al momento 
de explicar los pasos a realizar.
El	leguaje	natural	es	muy	flexible	y	se	enfoca	principalmente	en	des-
glosar y mostrar la solución propuesta de una forma más clara y entendible.
Una operación de leer es similar a la obtención de la información en el 
desarrollo de un algoritmo, mientras que la operación de imprimir es similar 
a la entrega de resultados requeridos.
1.6.6 Ejemplo de algoritmo cuantitativo
a. Problema: diseñar un algoritmo que permita hallar la suma de tres nú-
meros enteros.
b. Algoritmo en lenguaje natural: en	la	figura	14	se	puede	visualizar	un	
algoritmo en lenguaje natural, dando solución al problema de calcular e 
imprimir la suma de tres números.
Figura 14. Tercer ejemplo de un algoritmo en lenguaje natural.
51Unidad 1. Conceptos básicos de lógica de programación
c. Algoritmo en pseudocódigo: en	la	figura	15	se	puede	visualizar	en	al-
goritmo en pseudocódigo, dando solución al problema de calcular e 
imprimir la suma de tres números.
Figura 15. Tercer ejemplo de un algoritmo en pseudocódigo.
d. Algoritmo en diagramación libre: en	la	figura	16	se	puede	visualizar	en	
algoritmo en diagramación libre, dando solución al problema de calcu-
lar e imprimir la suma de tres números.
Figura 16. Tercer ejemplo de un algoritmo en diagramación libre.
52 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
e. Algoritmo en diagramación rectangular: en	la	figura	17	se	puede	vi-
sualizar en algoritmo en diagramación rectangular, dando solución al 
problema de calcular e imprimir la suma de tres números.
Figura 17. Tercer ejemplo de un algoritmo en diagramación rectangular.
Para practicar este tema explique el proceso que se debe realizar paso a 
paso, en cada una de estas situaciones: cambiar una bombilla fundida; cam-
biar un neumático chuzado de un vehículo; realizar una llamada telefónica; 
funcionamiento de un cajero electrónico al realizar un retiro de dinero; y el 
funcionamiento de una máquina expendedora de gaseosas.
1.7 Datos manejados en un algoritmo
Todos los datos que se manejan dentro de un algoritmo tienen un tipo aso-
ciado. Un dato puede ser un simple carácter tal como b, un valor entero tal 
como 35 o un valor alfanumérico como Calle 42 # 83-60. El tipo de dato de-
termina la naturaleza del conjunto de valores que puede tomar una variable.
Los tipos de datos más frecuentes son alfabéticos, numéricos, alfanu-
méricos y lógicos.
Dentro de los lenguajes de programación se encuentran con una gran 
variedad de tipos de datos para el almacenamiento de variables. A continua-
ción, una explicación breve de estos tipos.
1.7.1 Datos numéricos
Normalmente se reconocen dos tipos de variables numéricas:
53Unidad 1. Conceptos básicos de lógica de programación
- Entera: permite almacenar datos numéricos enteros (sin decimales); 
por ejemplo, una edad de 20, una cantidad de 5, un número positivo 
como 60, un número negativos como –58.
- Real: permite almacenar datos numéricos que tengan decimales, por 
ejemplo, una estatura de 1.75, un peso de 70.2 o el valor de una reten-
ción de 0.08.
Cualquier operación entre números reales da como resultado un núme-
ro real. Cualquier operación entre números enteros da un resultado entero, 
excepto en la división que pueda dar un número real.
1.7.2 Datos alfabéticos
Normalmente se reconocen dos tipos de variables alfabéticas:
- Carácter: permite almacenar una letra, un número o un símbolo en me-
dio de comillas sencillas rectas (‘); por ejemplo, una respuesta ‘S’ o ‘N’, 
dos valores ‘1’ o ‘5’, o un símbolo como ‘@’.
- Cadena: permite almacenar varios caracteres en medio de comillas do-
bles rectas (“); por ejemplo, un nombre como “Miguel Ángel”, un ape-
llido como “Cañaveral”, una ciudad como “Medellín” o una ocupación 
como “Docente”.
Además, dentro de lógica de programación y los lenguajes de progra-
mación,	también	son	clasificadas	como	alfabéticas	aquellas	variables	que	al-
macenen números con los cuales no se van a realizar cálculos o no se hacen 
operaciones matemáticas, por ejemplo, un número de cédula “1.023.245”, 
un NIT “1023245-3” o un código postal “259”. Lo anterior es fundamental 
para optimizar el manejo de memoria en una computadora; una vez que una 
variable numérica ocupa más espacio que una variable de tipo alfabética.
1.7.3 Datos alfanuméricos 
Los datos alfanuméricos permiten almacenar combinaciones de datos 
alfabéticos, datos numéricos que serán tratados como alfabéticos en forma 
de cadena de caracteres, símbolos o caracteres especiales. Los ejemplos 
más claros son una dirección de una residencia (Carrera 50 # 10-00), una 
54 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
dirección de correo electrónico (micorreo_123@servidor.com), una placa 
de un vehículo (MNU664) o el código de un producto (REF–4560).
1.7.4 Datos lógicos o booleanos
Los datos lógicos o booleanos permiten almacenar aquellos datos que ten-
gan solo valores de Verdadero o Falso, 1 o 0, F o V, entre otros. Estas va-
riables son resultado de una comparación entre otros datos. Por ejemplo, si 
se tiene: A=1, B=10, C=–5. El resultado de hacer algunas comparaciones se 
muestra en la tabla 14.
Tabla 14. 
Comparación entre diferentes tipos de datos.
Al comparar El resultado sería Explicación
A > B Falso A (1) no es mayor que B (10)
A != B Verdadero A (1) no es igual B (10)
C > A Falso C (–5) no es mayor que A (1)
C < A Verdadero C (–5) es menor que A (1)
C > 0 Falso C (–5) no es mayor que 0
B > 0 Verdadero B (10) es mayor que 0
B < 0 Falso B (10) no es menor que 0
B = 10 Verdadero B (10) es igual a 10
A = 3 Falso A (1) no es igual a 3
8 <> C Verdadero 8 es diferente de C (–5)
Al momento de hacer comparaciones se debe tener en cuenta la tabla de 
verdad vista en matemáticas básicas. La tabla 15 muestra tablas de verdad 
para los operadores	de	negación	(~),	conjunción	(Λ)	y	disyunción	(V).5
Tabla 15. 
Tabla de verdad de la negación, conjunción y disyunción.
p Q NO (~p) NO (~q) Y (p Λ q) O (p V q)
Verdadero Verdadero Falso Falso Verdadero Verdadero
Verdadero Falso Falso Verdadero Falso Verdadero
Falso Verdadero Verdadero Falso Falso Verdadero
Falso Falso Verdadero Verdadero Falso Falso
5 Para profundizar en el tema, se recomienda el texto Lógica Matemática para Ingeniería de Sistemas 
y Computación de Cardona Torres, Hernández Rodríguez y Jaramillo Valbuena (2010).
55Unidad 1. Conceptos básicos de lógica de programación
Por	ejemplo,	1	<	7	Λ	5	<	10	=	Verdadero	y	5	>	20	Λ	‘A’	<	‘B’	=	Falso 
(mirar	la	explicación	en	la	figura	18).
Figura 18. Ejemplo de comparaciones con la conjunción.
Cuando se evalúa una expresión teniendo el operador de la conjunción 
(Λ),	se	tienen	que	cumplir	las	dos	condiciones	para	que	el	resultado	sea	Ver-
dadero; mientras que con el operador de la disyunción (V), basta con que 
se cumpla una sola para que el resultado sea Verdadero.	Mirar,	en	la	figura	
19, el mismo ejemplo anterior, pero cambiando el operador de conjunción 
por el de disyunción.
Figura 19. Ejemplo de comparaciones con la disyunción.
Cuando se comparan variables alfabéticas teniendo en cuenta que la ‘A’ 
es menor que la ‘B’, la letra ‘Z’ es mayor que todas las letras. Cuandouna 
computadora procesa estas letras tiene en cuenta su código ASCII, la letra 
‘A’ tiene un código de 65, la letra ‘B’ tiene un código de 66 y la ‘Z’ de 90 
(véase anexo 9).
1.7.5 Ejercicios propuestos de tipos de datos
Indicar el tipo de dato (si es Numérico-Entero, Numérico-Real, Alfabético-
Cadena, Alfabético-Carácter o Lógico) de los siguientes valores:
56 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
a. ‘A’
b. –89 
c. “125”
d. “–9”
e. –5
f. 0
g. 125.00
h. 4.000
i. ‘+’
j. “9.12”
k. 325
l. “fin	del	algoritmo”
m. –5698.23
n. V
o. 2.333
p. Falso
q. 0.0005
r. 30 000
s. “Sí”
t. –500.00
1.7.6 Ejercicios propuestos de expresiones booleanas
Indique el resultado de las siguientes expresiones (Falso o Verdadero):
a. 3 < 6
b. 5 >= 10
c. ‘A’ > ‘Z’
d. ‘8’ > ‘700’
e. 8 <> 8
f. 64 >= 64
57Unidad 1. Conceptos básicos de lógica de programación
g. ‘8’ > ‘7’
h. 45 mod 2 = 0
i. 2 ^ 4 <> 84
j. 85.36 = 85.34 V 235 = 114
k. ~ (‘A’ >= ‘Z’ V ‘8’ <= ‘0’)
l. 12	<>	15	Λ	111<=	114
m. ~	(17	<	698	Λ	‘J’	<>	‘K’)
n. 158	>=	158	Λ	256	<=	256
o. 25 > 12 V 0 > 14
p. 25	>	12	Λ	0	>	14
q. 3 ^ 2 = 36 / 6 + 3
r. 5 * 4 + 2 > 45 mod 13
1.7.7 Datos variables
Son espacios de memoria que almacenan valores que pueden cambiar en 
el transcurso de un algoritmo. Usualmente son introducidas por el usuario.
Toda variable consta de un nombre y un tipo. El nombre es un conjunto 
de letras o caracteres y números, en el cual se almacena la información in-
gresada por el usuario o asignada por el programador. El tipo indica la clase 
de información que almacena la variable, la cual puede ser entera, real, 
cadena o lógica. 
Por ejemplo, al declarar una variable llamada Edad de tipo Entero, en 
memoria quedaría representado así:
Edad 20
1.7.8 Datos constantes
Son espacios de memoria que no cambian en el transcurso de un algoritmo 
y cuyos valores son asignados al momento de su declaración. En determi-
nados casos se puede presentar que el valor de una variable no cambie en 
58 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
el transcurso de un algoritmo; pero por este hecho no puede ser catalogada 
como constante
Una constante es un dato alfabético, numérico, alfanumérico o lógico que 
no cambia durante la ejecución del programa. Un ejemplo claro de un valor 
constante es el valor de Π (Pi siempre va a ser igual a 3.14159265358979, y 
este valor nunca cambia). En memoria quedaría representado así:
Pi 3.14159265358979
Cuando en otro lugar del algoritmo se intente cambiar el valor de Pi por 
0; el algoritmo lanzaría una alerta indicando que las constantes no pueden 
ser	modificadas	o	se	suspendería	su	ejecución.
1.7.9 Condiciones para nombrar variables y constantes
Para	definir	el	nombre	de	una	variable se deben tener en cuenta las siguien-
tes condiciones:
- Debe comenzar con una letra, mayúscula o minúscula comprendida en-
tre la ‘A’ y la ‘Z’ o la ‘a’ y la ‘z’ (omitiendo la letra ñ que no existe en el 
idioma inglés y los lenguajes de programación están en ese idioma; ya 
que se reconoce como un carácter especial).
- No debe contener espacios en blanco.
- No se pueden utilizar caracteres especiales (´ ¨ ¿ ¡), símbolos (% & # 
@), operadores aritméticos	(+	–	*	/)	o	signos	ortográficos	(,	;	.	:).
- Los dígitos y el carácter de subraya o guion bajo (_) están permitidos 
después del primer carácter; aunque algunos lenguajes como Java o 
C++ permiten usarlo al inicio.
1.7.10 Ejercicios propuestos
Coloque al frente de cada nombre de variable, si está Correcta o Incorrecta 
y la explicación de su respuesta, solo cuando esta sea Incorrecta:
a. $Sueldo
b. A
c. cElUlAr
59Unidad 1. Conceptos básicos de lógica de programación
d. Dir_casa
e. Edad
f. Notas
g. N-Tel
h. SB512
i. Tel
j. c@rreo
k. Apellido paterno
l. Nombre
m. 2Salarios
n. Pensión
o. N1
p. Primera/Nota
q. 1Nota
r. Año
60 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Unidad 2 
Estructura fundamental de un algoritmo
Introducción
 En esta unidad se explican los siguientes temas (ver el resumen en la 
figura	20).
- Estructura secuencial.
- Datos de entrada, proceso y datos de salida.
- Asignación interna, asignación externa y actualización.
- Operaciones primordiales y básicas.
- Porcentajes.
- Conversión de medidas.
- Prueba de escritorio.
- Ejercicios resueltos y propuestos.
Estos temas facilitan la obtención de las competencias que se describen 
a continuación:
- Utilizar de forma correcta los diferentes operadores aritméticos y lógi-
cos, teniendo en cuenta la jerarquía que indica el orden en que deben 
ejecutarse las operaciones.
-	 Conocer	las	principales	partes	de	un	algoritmo	secuencial,	identificando	
datos de entrada, proceso y datos de salida.
- Comprender el funcionamiento de las computadoras y la integración 
que tiene con la lógica de programación al momento de dar solución a 
problemas planteados.
- Manejar de forma correcta la asignación de información a una variable 
por medio de la asignación interna, la asignación externa o la actualiza-
ción.
- Resolver ejercicios que requieran del manejo de operaciones primor-
diales y la conversión de fórmulas a expresiones algorítmicas.
61Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
Fi
gu
ra
 2
0.
 U
ni
da
d 
2.
 E
st
ru
ct
ur
a 
fu
nd
am
en
ta
l d
e 
un
 a
lg
or
itm
o.
62 Fundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y PythonFundamentos iniciales de lógica de programación I. Algoritmos en PSeInt y Python
- Calcular porcentajes dentro de algoritmos utilizando las tres fórmulas 
de acuerdo con el tipo de problema planteado.
- Solucionar cualquier ejercicio planteado relacionado con las estructuras 
secuenciales que componen un algoritmo.
2. Estructura secuencial de un algoritmo
Un algoritmo está conformado por varias estructuras fundamentales, cada 
una con un propósito y uso determinado. Estas estructuras son llamadas 
estructuras de control. La primera estructura es la secuencial, la cual se 
trabajará en esta segunda unidad; y la otras son la estructura de decisión y 
la estructura de selección múltiple (caso), que se trabajarán en la unidad 3.
2.1 Estructura secuencial
Es la estructura más simple dentro de los algoritmos, donde una ac-
ción	o	instrucción	sigue	a	otra	en	secuencia	hasta	llegar	al	fin	del	algorit-
mo. Esta estructura consta de tres partes primordiales: los datos de entra-
da, el proceso y los datos de salida, temas tratados en el numeral 1.5.3 de 
la primera unidad.
Tomando como base la representación de una computadora en 
su unidad central de proceso (Joyanes, 2008), se plantea la siguiente 
relación	(figura	21).
63Unidad 2. Estructura fundamental de un algoritmo
Figura 21. Organización física de una computadora.
Fuente: Edukativos (2013).
Todo programador debería tener presente la relación entre la compu-
tadora y estructuras secuenciales (Edukativos, 2013). Los datos de entrada 
son los que se ingresan a la computadora por medio de los dispositivos 
de entrada (teclado, mouse, cámara, entre otros); en nuestro caso se usa-
rá únicamente el teclado para ingresar la información. El proceso son los 
cálculos y operaciones de un algoritmo que se realizan en la unidad central 
de proceso, estas se almacenan en variables (creadas anteriormente) y des-
pués se convierten en los datos de salida, los cuales se muestran a través de 
los diferentes dispositivos de salida (pantalla, impresora, parlantes, entre 
otros); en nuestro caso se usará únicamente la pantalla para visualizar los 
resultados.
De esta forma, todo lo que se haga en un algoritmo se enfoca a lo in-
gresado por el usuario, el proceso que se realiza y su respectiva salida. En 
64 Fundamentos

Continuar navegando