
Algoritmo
Definición:
Un algoritmo es un conjunto finito, ordenado y preciso de pasos (instrucciones) que resuelve un problema o realiza una tarea específica en un tiempo finito.
Ejemplo cotidiano (no computacional):
Algoritmo para preparar un té:
-
Poner agua a hervir.
-
Mientras el agua no hierva, esperar.
-
Colocar una bolsita de té en una taza.
-
Verter el agua caliente en la taza.
-
Esperar 3 minutos.
-
Retirar la bolsita.
-
Servir (y opcionalmente endulzar).
Si un algoritmo es una receta precisa, ¿cuántos algoritmos ejecutaste desde que te despertaste hoy hasta llegar a esta clase? Nombren al menos tres.
Visión Matemática:
Algoritmo como Función. En términos formales, un algoritmo puede modelarse como una función computable:
f : I → O
Donde:
-
I = conjunto de todas las entradas posibles (dominio).
-
O = conjunto de todas las salidas posibles (codominio o rango).
-
La función f asigna a cada entrada x ∈ I una única salida f(x) ∈ O, mediante un procedimiento finito y determinista.
"Un algoritmo es una realización operativa de una función computable: transforma sistemáticamente cada entrada en su salida correspondiente."
-
Parte lógica (también llamada componente de conocimiento o semántica): Especifica qué hay que hacer para resolver el problema. Incluye las fórmulas, reglas, relaciones matemáticas o condiciones que definen la solución. Ejemplo: Para calcular el promedio, la lógica es promedio = suma / cantidad.
-
Parte de control (también llamada flujo o estrategia): Especifica cómo, cuándo y en qué orden se aplican las operaciones lógicas. Incluye secuencia, selección, iteración, llamadas a subprogramas. Ejemplo: La estrategia de “leer todos los datos, luego sumarlos, luego dividir” vs. “acumular mientras se lee”.
Un algoritmo es como una receta de cocina:
-
Parte lógica = los ingredientes y las transformaciones (batir, hornear).
-
Parte de control = el orden de los pasos y las decisiones (si está dorado, retirar).
Un mismo problema puede tener la misma lógica pero diferentes controles (bucles vs. recursión, orden diferente). Y distinta lógica puede tener similar control.
Dada la función matemática f(x) = 1/x, ¿existe un algoritmo que la calcule para cualquier número real x? ¿Qué pasaría con x = 0? ¿Cómo afecta eso a la definición de algoritmo como función?
Definición Formal:
Un algoritmo es un conjunto finito y preciso de operaciones que, aplicadas en un orden determinado (control), transforman una entrada (I) en una salida (O), definiendo así una función computable f: I → O. Se compone de una lógica (el conocimiento del problema) y un control (la estrategia de aplicación).
Ejemplo con ambos conceptos (sin código, solo explicación)
Problema: Dados dos números enteros positivos A y B, hallar su máximo común divisor (MCD).
-
Función matemática:
MCD : Z+ × Z+ → Z+
Ejemplo: MCD(12, 18) = 6.
-
Parte lógica del algoritmo (conocimiento):
Propiedad: MCD(A, B) = MCD(B, A mod B) (algoritmo de Euclides).
Condición de parada: Si B = 0, entonces MCD = A.
-
Parte de control (estrategia):
-
Mientras B ≠ 0 hacer:
-
Calcular R = A mod B.
-
Asignar A = B, B = R.
-
-
Devolver A.
Aquí la lógica (la propiedad matemática de Euclides) es independiente del control (el bucle mientras). Podrías implementar el mismo con recursión (otro control).
-
No confundir algoritmo con fórmula matemática. Una fórmula es lógica pura, le falta control (por ejemplo, x=(−b± raiz(b2−4ac))/(2a) es una fórmula, pero no dice el orden de cálculo, ni cómo manejar entradas, ni qué hacer si el discriminante es negativo). El algoritmo añade el control.
-
No confundir algoritmo con programa. Un programa implementa un algoritmo en un lenguaje concreto (por ejemplo C++). El algoritmo sigue siendo la idea abstracta (lógica+control).
¿Existe algún problema para el cual sea matemáticamente imposible escribir un algoritmo? (Sí, existe. El problema de la parada. Lo verán en cursos avanzados). Mientras tanto, propongan un problema cotidiano que crean que ningún algoritmo podrá resolver perfectamente.
Características esenciales de un algoritmo:
-
Precisión: Cada paso debe ser claro y sin ambigüedades.
-
Determinismo: Para una misma entrada, siempre produce la misma salida (en algoritmos clásicos; salvo aleatorización).
-
Finitud: El algoritmo debe terminar después de un número finito de pasos.
-
Entrada: Recibe cero o más datos de entrada.
-
Salida: Produce uno o más resultados.
-
Efectividad: Los pasos deben ser básicamente ejecutables (en principio por un humano o máquina).
Heurística
En algorítmica se dice que un algoritmo es "heurístico" cuando da la solución a un problema aunque no de la manera optima, en "Algorítmica 1" ("Programación Estructurada") y "Algorítmica 2" ("Programación Orientada a Objetos") nuestros algoritmos serán heurísticos en su mayoría, la optimización de estos se hará en "Algorítmica 3" ("Análisis y Diseño de Algoritmos")
-
Heurística: Estrategia o regla práctica que no garantiza encontrar la solución óptima, pero suele ser rápida y útil para problemas complejos (IA, optimización). Ejemplo: “para resolver un cubo de Rubik, primero arma una cara”. No es un algoritmo exacto.
-
Algoritmo: Garantiza solución (si existe) y termina. Es riguroso.
Cuando buscas pareja en una aplicación de citas, ¿usas un algoritmo o una heurística? ¿Podrías escribir un algoritmo exacto para encontrar el amor?
Formas de Representar un Algoritmo
Se usan para diseñar y comunicar la lógica:
-
Lenguaje natural (ambiguo, pero útil para ideas iniciales).
-
Pseudocódigo: Mezcla de lenguaje natural y estructuras de programación, sin reglas estrictas de sintaxis.
-
Diagrama de flujo (Flowchart): Representación gráfica con símbolos estandarizados.
Símbolos básicos de diagrama de flujo:

Ejemplo: Calcular el área de un rectángulo
Datos de entrada:
-
Base (número real positivo)
-
Altura (número real positivo)
Salida esperada:
-
Área = base × altura
Algoritmo en lenguaje natural
Paso a paso, usando frases cotidianas pero precisas:
-
Inicio del algoritmo.
-
Solicitar al usuario que ingrese el valor de la base del rectángulo.
-
Leer y almacenar el valor de la base.
-
Solicitar al usuario que ingrese el valor de la altura del rectángulo.
-
Leer y almacenar el valor de la altura.
-
Calcular el área multiplicando la base por la altura.
-
Mostrar el resultado del área.
-
Fin del algoritmo.
Algoritmo en pseudocódigo
El pseudocódigo usa una mezcla de español con estructuras de control simples (solo secuencial aquí). Se escribe en forma de lista numerada o indentada.
INICIO
ESCRIBIR "Ingrese la base del rectángulo:"
LEER base
ESCRIBIR "Ingrese la altura del rectángulo:"
LEER altura
area ← base * altura
ESCRIBIR "El área del rectángulo es: ", area
FIN
Explicación de la notación:
-
← significa asignación (guardar el resultado en la variable).
-
ESCRIBIR es salida en pantalla.
-
LEER es entrada desde teclado.
-
No hay decisiones ni bucles → solo estructura secuencial.
Diagrama de Flujo

“¿Cuál de los tres es más preciso?
¿Cuál es más fácil de entender para una persona no técnica?
¿Cuál será más fácil de convertir después a un programa en C++?”
Programa
Un programa es definido como un "algoritmo" codificado en un lenguaje de programación y que se procesa en una computadora para solucionar un problema específico.
-
Algoritmo → es la idea, la lógica, la solución independiente de la máquina. Se puede escribir en pseudocódigo, diagramas o lenguaje natural.
-
Programa → es la implementación de un algoritmo en un lenguaje de programación específico (C++, Python, Java, etc.) para que lo ejecute una computadora.
"Un programa es un algoritmo codificado en un lenguaje que una computadora puede interpretar y ejecutar."
Si un algoritmo es la receta, y un programa es la receta escrita en un idioma que la computadora entiende… ¿Cuál es el ‘idioma’ que habla tu celular? ¿Por qué no podemos darle nuestra receta en español directo y que funcione?
Estructura de un programa
Un programa típico, de manera abstracta, tiene:
-
Zona de declaraciones (variables, constantes, tipos, subprogramas).
-
Zona de instrucciones ejecutables (cuerpo principal).
-
Subprogramas (funciones, procedimientos – lo veremos más adelante).
Un programa tiene declaraciones al inicio, luego instrucciones, luego subprogramas. Si comparamos un programa con un libro de cocina: ¿qué sería las declaraciones? ¿qué sería el cuerpo principal? ¿y los subprogramas?
Lenguaje de Programación
Definición:
Lenguaje artificial diseñado para comunicar instrucciones a una máquina (computadora). Permite expresar algoritmos de forma precisa.
Clasificación básica (solo menciones teóricas):
-
Bajo nivel (lenguaje máquina, ensamblador, C): Cercano al hardware, difícil para humanos.
-
Alto nivel (C#, Python, Java): Más parecido al lenguaje humano, independiente de la máquina.
-
Compilados vs. interpretados:
-
Compilado: se traduce todo el programa a código máquina antes de ejecutarlo (ej. C++).
-
Interpretado: se traduce y ejecuta línea a línea (ej. Python).
-
Importancia:
El lenguaje de programación es la herramienta para materializar un algoritmo en un programa ejecutable. En este curso usaremos C++ (compilado, de alto nivel, muy potente para estructuras de control, apuntadores y archivos).
Este curso usa C++. Si en lugar de C++ usáramos Python para la parte práctica, ¿aprenderíamos los mismos conceptos de algoritmos? ¿Qué cambiaría en la forma de pensar del estudiante?
Si todos los lenguajes de programación permiten escribir algoritmos, ¿por qué no usamos solo español con reglas estrictas? ¿Qué tiene C++ que no tenga el español, y viceversa?
Elementos del lenguaje de Programación
Caracteres
Los caracteres que se pueden utilizar para construir elementos del lenguaje de programación son: Letras, dígitos y el carácter del subrayado (_).
-
Letras mayúsculas del alfabeto inglés: A - Z.
-
Letras minúsculas del alfabeto inglés: a – z.
-
Dígitos : 0 – 9.
-
Carácter del subrayado : _
Identificadores
Es una secuencia de caracteres letras, dígitos y el carácter del subrayado _, que sirven para dar nombre a las variables, constantes, funciones , etiquetas, clases ctc.
Las reglas para formar un identificador son:
-
El primer carácter debe ser una letra o el carácter del subrayado (_).
-
Los caracteres restantes pueden ser letras, dígitos o el carácter del subrayado (_).
-
Deben ser distintos de las palabras reservadas por el lenguaje.
-
Debe ser una unidad sin espacios.
En el lenguaje C, C++ y algunos otros las mayúsculas y minúsculas son diferentes.
Constantes
Son datos que no cambian su valor durante la ejecución del programa, existen tantos tipos de constantes como tipos de datos existen.
En el lenguaje C o C++ una constante se declara en su respectiva sección bajo el siguiente formato.
Formato:
#define identificador valor
Ejemplo:
#define pi 3.1416 #define eap “FISI” #define condición ‘S’ #define N 10
Variables.
El valor de una variable, puede cambiar su valor a lo largo de la ejecución del programa. En los lenguajes de programación hay que declarar las variable antes de ser usadas, de acuerdo a los tipos de datos que van ha almacenar, bajo el siguiente formato.
<tipo-de-dato> <lista-de-variables>;
Donde:
<tipo-de-dato>: Debe ser un tipo de dato valido el el lenguaje de programación.
<lista-de-variables>: Puede consistir de una o mas identificadores separadas por comas.
Ejemplos:
En algoritmica Algorítmica:
Tipo-de-dato : Variables
Entero edad
Entero numeroPersonas
Entero i, j, k
Real acumulado, suma
Carácter condicion
Carácter nombre[20 ]
En el lenguaje C o C++
Tipo-de-dato Variables
Int edad;
Int nper;
Int i,j,k;
Float acum,suma;
Char condición;
Char nom[20]
Ejercicios
Ejercicio 1
Una institución benéfica europea ha recibido tres donaciones en soles, dólares y marcos. La donación será repartida en tres rubros: 60% para la implementación de un centro de salud, 25% para un comedor de niños y el resto para gastos administrativos. Diseñe un algoritmo que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros
Ejercicio 5
Dado un tiempo expresado en HH:MM y otro tiempo en MM:SS, diseñe un programa que calcule la suma de los tiempos y lo exprese en HH:MM:SS.
Ejercicio 8
En una estación de peaje se lleva un control sobre los vehículos que pasan. Para cada vehículo se identifica su tipo (automóvil, camioneta, autobús, vehículo de carga pesada). Además se determina su uso (particular, transporte público, comercial). Si se establece la tarifa de pago:
Tipo de Vehículo y Uso Tarifa (Bs.)
Automóvil o Camioneta Particular 500,00
Autobús Transporte público 700,00
Vehículo de Carga Comercial 1000,00
Cualquier otra opción 600,00
Elabore un algoritmo para indicar el monto a pagar por un vehículo cuyo datos sean conocidos.
Ejercicio 11
Diseñe un algoritmo que lea tres números y los imprima de mayor a menor y de menor a mayor.
Ejercicio 14
Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.
Ejercicio 17
Determinar el importe a pagar por un alumno de un instituto cuya cuota tiene un porcentaje de descuento que se establece en la siguiente tabla y esta en función al colegio de procedencia del alumno; asimismo los importes están exonerados de impuestos.
INSTITUTOS
Colegio A B C
Nacional 50 40 30
Particular 25 29 15
Ejercicio 8
En una estación de peaje se lleva un control sobre los vehículos que pasan. Para cada vehículo se identifica su tipo (automóvil, camioneta, autobús, vehículo de carga pesada). Además se determina su uso (particular, transporte público, comercial). Si se establece la tarifa de pago:
Tipo de Vehículo y Uso Tarifa (Bs.)
Automóvil o Camioneta Particular 500,00
Autobús Transporte público 700,00
Vehículo de Carga Comercial 1000,00
Cualquier otra opción 600,00
Elabore un algoritmo para indicar el monto a pagar por un vehículo cuyo datos sean conocidos.
Ejercicio 2
Un empleado percibe un sueldo mensual, calcular el sueldo neto, si se realizan los siguientes descuentos:
Fonavi 1%. Seguro Social 2,5%, e Impuesto a la remuneración 1%. Por otro lado tiene una bonificación del 15% del sueldo libre de descuentos. Determine y muestre el sueldo bruto, los descuentos detallados, el sueldo neto y la bonificación.
Ejercicio 6
Una persona ha recorrido tres tramos de una carrera. La longitud del primer tramo está dada en kilómetros, del segundo tramo en pies y del tercer tramo en millas. Diseñe un programa que determine la longitud total recorrida en metros y yardas. Se sabe que:
1 metro = 3.28 pies, 1 yarda = 3 pies, 1 kilómetro = 1000 metros y 1 milla = 1609 metros
Ejercicio 9
Se cuenta con los votos obtenidos por Juan, Pedro y Maria en una elección democrática a la presidencia de un club. Para ganar la elección se debe obtener como mínimo el 50% de los votos más 1.En caso que no haya un ganador se repite la elección en una segunda vuelta. Van a la segunda vuelta los dos que obtengan la más alta votación ó, los tres en caso de producirse un empate doble (entre los dos con menor votación) o un empate triple. Diseñe un algoritmo que determine el resultado de la elección.
Ejercicio 12
A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000, por encima de 1000 y hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional. Calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.
Ejercicio 15
Escribir un programa que permita actualizar el saldo de una cuenta de un cliente de un banco. Los datos de entrada son : numero de cuenta , saldo anterior, tipo de movimiento (1 deposito , 2 retiro). En ambos casos se debe pedir el monto de la transacción.
Ejercicio 8
En una estación de peaje se lleva un control sobre los vehículos que pasan. Para cada vehículo se identifica su tipo (automóvil, camioneta, autobús, vehículo de carga pesada). Además se determina su uso (particular, transporte público, comercial). Si se establece la tarifa de pago:
Tipo de Vehículo y Uso Tarifa (Bs.)
Automóvil o Camioneta Particular 500,00
Autobús Transporte público 700,00
Vehículo de Carga Comercial 1000,00
Cualquier otra opción 600,00
Elabore un algoritmo para indicar el monto a pagar por un vehículo cuyo datos sean conocidos.
Ejercicio 8
En una estación de peaje se lleva un control sobre los vehículos que pasan. Para cada vehículo se identifica su tipo (automóvil, camioneta, autobús, vehículo de carga pesada). Además se determina su uso (particular, transporte público, comercial). Si se establece la tarifa de pago:
Tipo de Vehículo y Uso Tarifa (Bs.)
Automóvil o Camioneta Particular 500,00
Autobús Transporte público 700,00
Vehículo de Carga Comercial 1000,00
Cualquier otra opción 600,00
Elabore un algoritmo para indicar el monto a pagar por un vehículo cuyo datos sean conocidos.
Ejercicio 3
Un corredor reporta el número de minutos que corre en un año. Escribir un programa que dé como salida la cantidad de tiempo equivalente en meses, semanas, días, horas y minutos.
Ejercicio 7
Desarrollar un Algoritmo que permita calcular la comisión total que recibe un vendedor donde ingrese el monto de ventas, si el monto es menor a 10000 recibirá solamente 5% de su ventas por comisión; si sus ventas se encuentran entre 10000 a 50000 su comisión será de 7.5% de las ventas y 200 por bonificación, pero si sus ventas es mayor a 50000 su comisión será de 9% de sus ventas y su bonificación es 300.Visualizar el total
Ejercicio 10
Ingrese por Teclado el Nombre del Obrero, las horas trabajadas y el Tipo de Actividad (Pintado, Laqueado, Barnizado), por cada hora trabajada se le pagara:
a) Si el Servicio es Pintado se le pagara s/. 10
b) Si el Servicio es Laqueado se le pagara s/. 12
c) Si el Servicio es Barnizado se le pagara s/. 14
Por cada hora extra se le pagara 30% mas sobre el pago por hora trabajada, sabiendo que semanalmente trabaja 40 horas. Calcule y visualice El Jornal Semanal que recibirá el Obrero, el Jornal Extra y el Total del Jornal.
Ejercicio 13
Se tienen cuatro esferas A, B, C y D de las cuales se sabe que tres son de igual peso y una diferente. Realice un programa en C que reciba como datos los pesos de las cuatro esferas y determine cual es la esfera diferente y si es de mayor o menor peso.
Ejercicio 16
En un hospital se ha hecho un estudio sobre los pacientes registrados durante los últimos 10 años, con el objeto de hacer una aproximación de los costos de internamiento por paciente. Se obtuvo un costo promedio diario según el tipo de enfermedad que aqueja al paciente, además se pudo determinar que en promedio todos los pacientes con edad entre 14 y 22 años implican un costo adicional del 10%. La siguiente tabla expresa los costos diarios según el tipo de enfermedad.
TIPO DE ENFERMEDAD COSTO /PACIENTE
-
25
-
16
-
20
-
32
Calcular e imprimir el costo que representa un paciente
Ejercicio 8
En una estación de peaje se lleva un control sobre los vehículos que pasan. Para cada vehículo se identifica su tipo (automóvil, camioneta, autobús, vehículo de carga pesada). Además se determina su uso (particular, transporte público, comercial). Si se establece la tarifa de pago:
Tipo de Vehículo y Uso Tarifa (Bs.)
Automóvil o Camioneta Particular 500,00
Autobús Transporte público 700,00
Vehículo de Carga Comercial 1000,00
Cualquier otra opción 600,00
Elabore un algoritmo para indicar el monto a pagar por un vehículo cuyo datos sean conocidos.
Si ya aprendiste algo que pocos se atreven a estudiar, ahora te reto a construir, compartir o resolver problemas reales con ello. El siguiente curso con la complejidad que necesitas puede existir gracias a tu aporte




