No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Qué es un algoritmo? ¿Cómo resolver problemas con algoritmos?

12/17
Recursos

Un algoritmo es una serie de pasos definidos, que van secuencialmente y logran un objetivo de la mejor forma.

¿Cómo construir un algoritmo?

Para poder tener la mejor respuesta posible a esta pregunta, vamos a ir realizando un ejemplo en paralelo a darle respuesta a la pregunta. El ejemplo o el problema es el siguiente:

“Quiero encender la luz de la habitación donde estoy en este momento”.

Una forma efectiva para crear cualquier algoritmo es seguir los siguientes pasos (Analizar el problema, crear un paso a paso y Buscar la forma de optimizar el algoritmo).

Analizando el problema

Analizar el problema, nos lleva a entender el objetivo general del algoritmo y nos permite encontrar los recursos que se tienen disponibles y los que hay que crear.

Al analizar nuestro reto, encontramos que hay una habitación, hay una luz que es posible encender y por último, tenemos que para poder encender la luz se necesita que esta esté apagada.

Después de haber hecho el análisis, tenemos como resultado que la luz está apagada, que estamos en una habitación que permite encenderla y el objetivo es encender la luz.

Construyendo el paso a paso que permitirá lograr el objetivo

En este punto se debe organizar un poco más la idea, se debe buscar encontrar todos esos detalles que nos permitirán cumplir el objetivo.

Paso a paso de nuestro ejemplo:

  1. Se necesita validar que la luz está apagada, esta es la condición base para poder encenderla.
  2. Identificar donde se va a encender la luz
  3. Presionar el elemento o hacer la acción que me permita encender la luz en ese momento.

Una vez se establezca el paso a paso, debemos hacernos una pregunta que permita determinar si hacer esos pasos de manera secuencial permitirán cumplir con el objetivo. Si la respuesta es si, se puede continuar en el proceso, si la respuesta es no se debe volver analizar el problema.

En el caso de nuestro ejemplo, si realizamos los tres pasos anteriores, podremos cumplir nuestro objetivo.

Buscar la forma de optimizar el algoritmo

En este punto se deben crear los pasos que se van a necesitar para que el algoritmo tenga respuesta a los distintos problemas que se pueden presentar. También se debe buscar la forma de llegar al objetivo consumiendo la menor cantidad de recursos posibles.

Veamos un ejemplo siguiendo con la secuencia del algoritmo que estamos creando.

¿Qué pasaría, si el paso uno del paso a paso no se cumple?, Es decir, cuál va a hacer la respuesta de nuestro algoritmo cuando se encuentre que la luz no está apagada. La lógica que el algoritmo debería seguir en este punto es la de finalizar el proceso, debido a que no se necesita encender la luz.

¡Cuéntanos en la sesión de comentarios, cuál sería tu flujo lógico para optimizar el proceso de encender la luz, en caso de que la luz esté encendida al momento de iniciar, el proceso!

Contribución del curso creada por: Silfredo Ibarra.

Aportes 411

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Ejemplo de flujograma para ¨Encender luz¨

🌈 ¿Cómo construir un algoritmo? 🌈

Tener claro el requerimiento: quiero encender la luz de la habitación donde estoy en este momento

  1. Análisis
    • ¿Cuál es el objetivo? -> Encender la luz 💡
    • ¿Con qué recursos cuento? -> Habitación 🚪
    • ¿Qué condiciones previas deben pasar para que sea posible? -> Que la luz esté apagada
  2. Paso a paso
  • ¿Qué tiene que pasar para que se cumpla el objetivo con los recursos que tengo?

a. Validar que la luz esté apagada (condición base)
b. Identificar dónde voy a encender la luz
c. Presionar el elemento que me permita encender la luz

  • ¿Si yo realizo estos pasos cumpliré con el objetivo?
  • Validar si el resultado que obtuve fue el que esperaba inicialmente
  1. Optimizar
    a. Tomar el requerimiento
    b. Identificar qué tenemos y lo que no
    c. Qué condición hace falta para que suceda
    d. Lo que necesitamos para que el objetivo se logre

🎯 Identificar las diferentes alternativas que puedo tomar para cumplir el objetivo

😄 Este fue mi resultado.

así quedó el mio

Aqui un buen ejemplo (no lo hagan en su casa).

⚡👉Se denomina algoritmo a un grupo finito de operaciones organizadas de manera lógica y ordenada que permite solucionar un determinado problema. Se trata de una serie de instrucciones o reglas establecidas que, por medio de una sucesión de pasos, permiten arribar a un resultado o solución.

Algoritmo es una serie de pasos

Ayuda a ser óptimos y más rápidos

Ejemplo:

“Quiero encender la luz de la habitación donde estoy en este momento”

Identifica:

  • que estoy requiriendo
  • objetivo
  • Recursos con los que cuento

Para construir un Algoritmo se requiere un proceso de análisis

<aside>
🤘🏾 cuando tengamos un requerimiento o una necesidad para crear un algoritmo lo más importante es leerlo cuantas veces sea necesario

</aside>

Identifiquemos que componen esta frase

  • Objetivo: encender la luz 💡
  • Recurso: la habitación

No siempre vas a tener un nivel de detalle lo suficientemente claro para que todos los recursos estén dados en un requerimiento, en ocasiones vas asumir o agregar las condiciones para llegar al resultado.

Análisis:

luz → habitación → encender la luz

Cual es esa otra condición que debe pasar para que eso sea posible

La luz debe estar apagada → agregamos este elemento que permite agregarle recursos

Ya tenemos un mejor contexto: la luz apagada en una habitación y debemos encenderla

Pasos:

  • Validar que la luz este apagada
  • Identificar donde voy a encender la luz
  • Presionar el botón de encendido

Pregunta:

¿Con estos pasos logramos el objetivo de encender la luz 💡 ? Si 😼

<aside>
🤘🏾 Paso a Paso: Dividir un problema en partes pequeñas

</aside>

Flujo para encender una laptop:

Diagrama de flujo

https://app.diagrams.net/
Chicos, si les interesa este es un software para la creacion de diagramas de flujo.

Diagrama de flujo sobre si mi hermano debería o no ir a la uni después de beber el día anterior

Este es mi algoritmo para poder comer un snack

Bueno este es el diagrama que cree, creo que considere todos los casos, acepto cualquier complemento, en la parte inicial dejo una lista de las variables que tuve en cuenta.

Aqui les dejo mi propio diagrama, si hay algun error no duden en dejarlo en las respuestas! 😉

Diagrama para encender la luz!

Adjunto ejemplo, Encender luz, en habitación"

Este es mi algoritmo para encender la luz, espero les sea útil :3

Óptimo: La opción más efectiva.

¿Es óptimo hacer que si la luz está encendida, apagarla, y hacer nuevamente el algoritmo de encenderla?:

  • No es óptimo para nada y consume tiempo debido a que si la luz ya está encendida, ya cumplimos el objetivo, no deberíamos complicarnos más.

Entiendo que el algoritmo es una serie de pasos para la solución de un problema, sin embargo, hay que ver mas haya de una simple solución para todos los casos que se puedan presentar.

Este es mi ejercicio:

“Sujeto a correciones”

Gracias.

Esta es la solución que se me ocurre en la menor cantidad de pasos.

Aquí comparto mi diagrama de flujo 😊👍.

Diagrama de Flujo para encender una luz

  1. Iniciar el proceso
  2. Comprobar si la luz está encendida
  3. Si la luz está encendida, detener el proceso
  4. Si la luz está apagada, presionar el interruptor
  5. Si el interruptor no funciona, verificar los cables
  6. Si los cables están conectados correctamente, revisar el fusible
  7. Si el fusible está en buen estado, verificar el tablero eléctrico
  8. Si no hay problemas con el tablero, encender la luz
  9. Finalizar el proceso
  10. Una vez que se haya completado el proceso, es importante realizar una evaluación de los resultados para determinar si se han alcanzado los objetivos y qué áreas pueden mejorar.
  11. Esto también puede servir para documentar los resultados y los cambios realizados para futuras referencias.
  12. Se recomienda publicar el resultado final para compartirlo con otros miembros del equipo.

recomendaciones importantes para mejorar la resolución de problemas con algoritmos

Así hice mi diagrama

llega un punto donde al hacer tantas preguntas el algoritmo tiende a volverse un ciclo infinito, eso es normal?

Flujograma “Encender la luz”

para lograr un algoritmo tenemos que tener es un gran nivel de detalle.


Esta es mi solución.


Aqui mi ejemplo de diagrama de flujo.
Tener conocimientos básicos de electricidad te da una pequeña ventaja.

https://imgur.com/a/kXk2TKf

Un algoritmo es una serie de pasos divididos que van secuencialmente y logran un objetivo de la mejor manera, para crear el algoritmo es necesario formular las preguntas e identificar los objetivos y recursos con los que cuento haciendo luego una serie de pasos que ayuden a su cumplimiento !

un algoritmo es el nivel de detalle y serie de pasos definidos que van secuencialmente para llegar a un objetivo.

Les quiero compartir una página donde pueden practicar la resolución de algoritmos. [HakerRank](https://www.hakerrank.com) Es un sitio donde puedes resolver problemas de programación con el lenguaje que quieras y comparar tu código con el de alguien más para ver distintas formas de resolver un mismo problema.
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-9-3c39afd4-e5db-4d27-9c19-71bf78f717f8.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-8-4ff9eec0-c139-4098-866c-ac52b71fbcbb.jpg)
No puedo eliminar los comentarios, subiré las imágenes desde el final hacia el inicio para que se aprecie de forma ordenada y secuencial.
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-7-08be96c4-8255-4ff8-9807-ef89f1f2ba09.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-5-8aed9d9e-a752-4bd4-8419-d0a37a7ab18e.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-6-3d53ce86-c61f-45c3-b4a4-3ba2d56b2f77.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-4-4c6ecdbd-6162-4a63-8291-3f535b57590d.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-3-a8650996-df40-4032-89b6-9d5dfa146a30.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-2-7b1b4d7c-e00b-46bd-9a69-fdb2e1be9839.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-1-a7b81075-8dbb-4d67-9080-74521c0ddd3b.jpg)
![](https://static.platzi.com/media/user_upload/Como%20crear%20un%20algoritmo-im%C3%A1genes-0-6dc6ab79-744a-4cc7-ae02-7813d88e90f0.jpg)
hice este algoritmo para bañarme.![](https://static.platzi.com/media/user_upload/image-7c9b4433-f4f7-41c3-93cf-cb221dcd5ee6.jpg) cualquier mejora es bienvenida
![](https://static.platzi.com/media/user_upload/image-d3d8d27c-5e18-4e2c-b4d8-46e0d9211c6e.jpg)

¿Cómo construir un algoritmo?

Construir un algoritmo implica seguir una serie de pasos lógicos y sistemáticos para diseñar un conjunto de instrucciones claras y precisas que resuelvan un problema específico. Aquí hay una guía paso a paso para construir un algoritmo:

  1. Comprende el Problema:
    Antes de comenzar a escribir un algoritmo, es crucial entender completamente el problema que estás tratando de resolver. Analiza el problema, identifica las entradas necesarias y comprende las restricciones y requisitos.

  2. Divide el Problema:
    Si el problema es complejo, divídelo en subproblemas más pequeños y manejables. Abordar partes más pequeñas del problema por separado puede hacer que el proceso sea más fácil de manejar.

  3. Diseña una Solución:
    Selecciona un Enfoque: Decide qué técnica o estrategia utilizar para resolver el problema (por ejemplo, bucles, recursión, algoritmos de ordenación, etc.).
    Visualiza el Flujo: Visualiza el flujo de las operaciones. Puedes usar diagramas de flujo o pseudocódigo para planificar cómo se ejecutarán las instrucciones.

  4. Escribe Pseudocódigo:
    Escribir pseudocódigo implica describir el algoritmo en un lenguaje humano simple y estructurado. Esto te permite planificar la lógica del algoritmo antes de traducirlo a un lenguaje de programación específico.

  5. Traduce a un Lenguaje de Programación:
    Elige un Lenguaje: Decide en qué lenguaje de programación implementarás el algoritmo.
    Escribe el Código: Transcribe el pseudocódigo a un programa en el lenguaje de programación elegido. Asegúrate de seguir la estructura y la lógica del pseudocódigo.

  6. Prueba el Algoritmo:
    Casos de Prueba: Diseña casos de prueba que cubran una variedad de situaciones posibles.
    Verifica Resultados: Ejecuta el algoritmo con los casos de prueba y verifica si produce los resultados esperados. Si el algoritmo no funciona correctamente, depúralo para corregir los errores.

  7. Optimización (Opcional):
    Si el algoritmo funciona pero es lento, considera formas de optimizarlo. Esto podría implicar mejorar la eficiencia del código, reducir el uso de recursos o encontrar un enfoque algorítmico más eficiente.

  8. Documenta tu Algoritmo:
    Agrega Comentarios: Documenta el código con comentarios claros para explicar qué hace cada parte del algoritmo.
    Describe el Propósito: Asegúrate de que cualquier persona que lea tu algoritmo pueda entender su propósito y su lógica.

  9. Itera y Mejora (si es necesario):
    Si encuentras problemas o áreas para mejorar, itera sobre el proceso. La práctica constante ayudará a perfeccionar tus habilidades en la construcción de algoritmos.
    Recuerda que cada problema puede tener múltiples soluciones posibles. La clave es encontrar una solución que sea efectiva y eficiente para el contexto específico del problema que estás abordando.

Diagrama de flujo.

Otro ejemplo de flujograma para encender la luz:

Para hacer diagramas de flujo super faciles les recomiendo LucidChart es muy amigable, gratuito solo te deja hacer 3, pero puedes reutilizarlos las veces que quieras.
Aqui mi ejemplo!

Aunque estuvo difícil para mi…aquí vamos yo lo creo así:
acepto criticas:

Encender la luz - Flujograma

[](!)

Siento que no seria optimo apagar la luz para volver a encenderla, es agregar un paso innecesario que haría un ciclo innecesario de volver a encender la luz, yo daría fin al proceso

Es interesante ya que la profesora dijo que tendríamos que suponer ciertas condiciones por ejemplo que había un bombillo o que avía un interruptor bastante interesante y complejo en la practica

Iniciando la siguiente clase y ver el diagrama de la teacher, creo que en el mío me falto el inicio antes de Habitación.

Si quieren profundizar en la solución de algoritmos con diagramas de flujo, les recomiendo esta lista de vídeos de este gran canal de YouTube 😃

https://youtube.com/playlist?list=PLWtYZ2ejMVJnpjQFWykrPcVOycJLVP2cG

Aquí dejo mi aporte del algoritmo para encender la luz

![](

My example about flowchatrs "turn on the light"
please tell me what do you think about it

Compañeros, para los diagramas de flujo les recomiendo DFD, fue un programa que usé en el colegio y me ayudó demasiado a desarrollar mi pensamiento lógico, a la vez que haces tus diagramas de flujo puedes ejecutarlos y probarlos, en lo personal me gusta mucho que usa las mismas formas geométricas que la profesora y tiene una opción para pedir información al usuario.

Quise elaborar mi diagrama con otro ejemplo esta vez.

He escuchado con mucha frecuencia la siguiente expresión: “el algoritmo de Facebook me bloquea la cuenta si escribo groserías” por ejemplo. Ahora nos queda clarisímo que no es el algoritmo sino el código desarrollado por Facebook el que bloquea cuentas.

Acá mi tarea

Ya que estamos en un curso de programación, me parecio prudente compartir un codigo con el cual podemos llevar a cabo esto.

Pues no sé manejar muy bien los símbolos pero lo manejo así

Encender la Luz
1- La luz está encendida
1.1 --No
1.1.1 Buscar el botón
1.1.2 Oprimir el botón
Prendió la luz?
No
Verificar el botón
Prendió la luz
No
Verificar el Bombillo
Predio la Luz
Si
1.2 Si

Fin

Hice el ejemplo en Java
Link de replit

import java.util.*;
import java.io.*;

public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Is the Light On or Off [Type true for On or false for Off]");
    boolean light_status = input.nextBoolean();
    
    if(light_status == false){
      System.out.println("The light is Off");
      System.out.println("Looking for the switch...");
      System.out.println("Is the switch activated or not? [Type true if activated or false if not]");
      boolean switch_status = input.nextBoolean();
      
      if(switch_status == false){
        System.out.println("Activating the switch");
        switch_status = true;
        System.out.println("Switch activated");
        System.out.println("Turning on the light...");
        light_status = true;
      }

      if(light_status == false && switch_status == true){
        System.out.println("Something is wrong with the switch it gotta be fixed"); 
      }
    }
    
    if(light_status){
      System.out.println("The light is On");
      System.out.println("Nothing more to do");
    }
  }
}

La base esta jajaja:

(armado con draw io)

Mi pequeño ejemplo ![](https://static.platzi.com/media/user_upload/WhatsApp%20Image%202025-02-02%20at%2019.19.55_fdbc0a47-553cf8bd-59cb-4da3-a5d9-189f8ba94ff7.jpg)
realmente excelente clase me gusto mucho
![](https://whimsical.com/VX6WiEbHBvuvNuxHnYGE6Q)![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202025-01-12%20120042-eb514979-da97-4d7e-8f21-88a41f7e9cb5.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202025-01-12%20120042-0f25015c-ba46-4825-aa9b-9bab5cd58f31.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202025-01-12%20120042-902f178f-b4d1-4973-9ba5-32e0e50d60b4.jpg)
INICIO Quiero encender la luz Acercarme al interruptor La luz está apagada? Sí: Presionar el interruptor Encender la luz FIN No: Presionar el interruptor Apagar la luz Presionar el interruptor Encender la luz FIN
INICIO Quiero encender la luz Acercarme al interruptor Presionar el interruptor La luz encendió? Sí --- Fin No Presionar el interruptor La luz encendió? Sí --- Fin
Mi flujograma: ![](https://static.platzi.com/media/user_upload/image-74f50643-2951-4c9d-97f8-fb0a32e3bf65.jpg)
Para responder a su pregunta de cómo agregaría complejidad a algo tan sencillo como encender la luz y qué hacer si la luz ya está encendida, creo que primero se debe definir el por qué quiero encender la luz: La maestra en su análisis, no leyó correctamente el requerimiento, ella dijo "hay que encender la luz", pero el requerimiento dice "QUIERO encender la luz", entonces ahí cambia. Para saber si debo o no apagar la luz para encenderla, debo entender bien los por qués, por qué QUIERO encender la luz?, el fin último de encender la luz, puede que no sea simplemente el hecho de que esté la luz encendida, sino que yo quiero encenderla para verificar el correcto funcionamiento de la energía eléctrica, por ejemplo, en ese caso, sí deberé primero crear un algoritmo para apagarla, y entonces, cumplir el requerimiento de yo encenderla. Pero si el fin último de querer encender la luz, es simplemente que la luz esté encendida, entonces al estar encendida, ya se consiguió ese fin y el algoritmo llega a su fin. Pero tampoco es lógico que si yo estoy en esa habitación y la luz ya está encendida, quiera encenderla solo para que esté encendida, entonces me iría por mi primera suposición, hay una razón por la que yo QUIERO encender la luz, entonces aunque esté encendida, debe apagarse. Mi conclusión es que, si estoy en una habitación y quiero encender la luz, pero la luz está encendida, sí debo apagarla primero, porque no tiene lógica que yo quiera hacer algo para obtener un resultado que ya existe.
Me parece complejo entender esto, por que hacerse preguntas como validar si la luz está encendida, antes de encenderla, suena logico, pero para el computador no, asi que está clase me ayuda a darle visión a lo implicito y no asumir ni obviar ningún proceso.
* Identifico si la luz esta encendida Si es 0 = False, hago estos pasos: 1\. Me levanto 2\. Estiro la mano 3\. Enciendo la luz * Identifico si la luz esta encendida Si es 1 = True, esta encendida la luz