top of page
Algortimica I - Laboratorio 1 - Andhersson Salazar.PNG

1. Introducción a los Algoritmos

Introducción a lenguaje de programación. Estructura de un programa. Definición Algoritmos

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é:

  1. Poner agua a hervir.

  2. Mientras el agua no hierva, esperar.

  3. Colocar una bolsita de té en una taza.

  4. Verter el agua caliente en la taza.

  5. Esperar 3 minutos.

  6. Retirar la bolsita.

  7. 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):

  1. Mientras B ≠ 0 hacer:

    • Calcular R = A mod B.

    • Asignar A = B, B = R.

  2. 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:

  1. Inicio del algoritmo.

  2. Solicitar al usuario que ingrese el valor de la base del rectángulo.

  3. Leer y almacenar el valor de la base.

  4. Solicitar al usuario que ingrese el valor de la altura del rectángulo.

  5. Leer y almacenar el valor de la altura.

  6. Calcular el área multiplicando la base por la altura.

  7. Mostrar el resultado del área.

  8. 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​

Ejemplo 1 Diagrama de flujo.png

“¿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:

  1. Zona de declaraciones (variables, constantes, tipos, subprogramas).

  2. Zona de instrucciones ejecutables (cuerpo principal).

  3. 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?

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

  1.                      25

  2.                      16

  3.                      20

  4.                      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.

Laboratorio de la Clase

Ahora resolveremos los ejercicios en el Laboratorio, dale click al botón

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

Yape.jpeg
Plin.jpeg
Donar con PayPal

Este curso nació para compartir conocimiento técnico en Ingeniería de Sistemas, Software, Informática y áreas afines. Tu donación ayuda a seguir creando cursos universitarios de calidad, sin publicidad, bien explicados, con material educativo y totalmente gratuitos. Gracias por ser parte del crecimiento de este proyecto

bottom of page