No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Reto 7: algoritmos con manejo de errores

13/17
Recursos

Para entender un poco m谩s el uso de la estructura try / catch, resolvamos el siguiente problema, de esta manera identificar谩s c贸mo utilizarlos.

C贸mo manejar errores con try/catch

El algoritmo consiste en dividir dos n煤meros. Para esto necesitaremos dos n煤meros ingresados por el usuario y realizaremos dicha operaci贸n.

"Inicio del programa"
numero1 = _
numero2 = _

"El resultado es: "
resultado = numero1 / numero2
Mostrar resultado
"Fin del programa"

Nuestro programa funciona correctamente si ingresamos cualquier n煤mero.

"Inicio del programa"
numero1 = 10
numero2 = 2

"El resultado es: "
5
"Fin del programa"

Sin embargo鈥 驴Qu茅 suceder铆a si colocamos que numero2 sea igual a 0?

"Inicio del programa"
numero1 = 10
numero2 = 0

"El resultado es: "
ERROR

隆No puede ser! Nuestro programa colaps贸 porque no existe la divisi贸n entre 0. Intentemos resolverlo con la ayuda de try / catch. Si existe un error mostraremos un mensaje.

"Inicio del programa"
numero1 = _
numero2 = _

try
    "El resultado es: "
    resultado = numero1 / numero2   
    Mostrar resultado
catch
    Mostrar "No existe divisi贸n entre 0"

"Fin del programa"

Ahora comprobemos el algoritmo:

"Inicio del programa"
numero1 = 10
numero2 = 0

"No existe divisi贸n entre 0"
"Fin del programa"

Ahora nuestro programa no colapsa si existe un error.

Contribuci贸n creada por Andr茅s Guano (Platzi Contributor).

Aportes 122

Preguntas 13

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Creo que la mejor manera de entender el TRY CATCH es mediante la divisi贸n. Si el divisor de una funci贸n es 0, matem谩ticamente no es posible realizar la divisi贸n (n/0, siendo n cualquier n煤mero) y en cualquier lenguaje de programaci贸n al tratar de ejecutar una divisi贸n por 0 siempre saldr谩 un error (aunque probando algo de c贸digo en Javascript esto no es del todo cierto, por alguna raz贸n, Javascript si permite realizar la divisi贸n por 0). Por lo tanto, es com煤n usar la instrucci贸n try/catch para evitar que ese error rompa el flujo la ejecuci贸n del algoritmo. A continuaci贸n el ejemplo en python:

  • Sin try/catch:
a = 10
b = 0

c = a / b

print("El resultado de dividir " + a + " entre " + b + " es " + c)
print("El programa termino con exito")

En este caso, la ultima linea de c贸digo, el mensaje que deber铆a salir con El programa termino con exito no se ejecuta ya que Python al tratar de dividir por 0 lanzar谩 un error en la consola y detendr谩 la ejecuci贸n del c贸digo.

  • Con try/catch
a = 10
b = 0

try:
    c = a / b
    print("El resultado de dividir " + a + " entre " + b + " es " + c)
except:
    print("Alto, no es posible dividir por 0")

print("El programa termino con exito")

En este caso, Python al tratar de realizar la divisi贸n por 0 lanza el except (En Python no es catch sino except pero el concepto es el mismo), y muestra el mensaje Alto, no es posible dividir por 0, luego contin煤a con el c贸digo y finalmente muestra el mensaje El programa termino con exito que est谩 fuera del bloque de try/catch.

Espero que el aporte les sea de ayuda para entender un poco m谩s el concepto de try/catch. Otros usos que se le puede dar a esta instrucci贸n, es cuando tratas de realizar operaciones artim茅ticas con diferentes tipos de datos que no son compatibles, cuando alguna variable no est谩 definida, cuando se trata de indexar alg煤n valor que no est谩 en un array y as铆 hay muchos otros usos para esta instrucci贸n. San Google siempre ser谩 de gran ayuda si necesitan ampliar el concepto. Saludos

Si se tratara de un formulario, debe haber una manera en la que se indique al usuario donde poner los datos que se pide. La instrucci贸n ideal try es que se muestre la indicaci贸n en el documento. Pero si esa instrucci贸n falla, el plan B es que se indique de otra manera lo mismo, por eso el catch es mostrar mediante un alert donde colocar los datos.

try maquinaTragaMonedas {
	jugador = maquinaTragaMonedas {
		try = [manzana, cereza, coco, mango, 777, BAR, campana, estrella, naranjita]
]
		if jugador === maquinaTragaMonedas  {
			jugador i++}
	} else if{
			jugador !== maquinaTragaMonedas  {
				console.log("echale m谩s we, no ganaste")
		}
}

try{
plan A
cruza el lago con el bote 馃殻鈥嶁檪锔
}catch{
plan B
Cruza el lago nadando 馃強鈥嶁檧锔
}
[](

algoritmo grafico rapido, para explciar funcionamiento del try catch

Try: yo quiero hacer el funcionamiento de un algoritmo super complejo pero si algo me falla鈥
Catch: entonces yo realizo algo sencillo para que no quede nos quedemos sin nada鈥

try {
	sumar_numeros(x, y)
{
catch ( error = no definiste la funci贸n ) {
	alert ("lo sentimos no podemos sumar eso")
}

despu茅s de esto podemos ver que error fue coloc谩ndolo en la consola o algo as铆

Mi algoritmo es simple es una funcion que extrae dinero de uin cajero pero en caso que quede sin dinero lanza la alerta dinero insuficiente

try 
{
	extraerDinero(billsExtract);
}
catch 
{
	alert("Dinero insuficiente, soy un cajero pobre") //easter egg
}
try {
	var nombre = Prompt("Escribe tu nombre")
}
catch {
	alert("no puedes ingresar n煤meros!"
}

Pensando en como aumentar la vida de un personaje en un juego. S铆 el n煤mero est谩 entre 11 y 100, aumenta 10 de vida, sino, aumenta 20 (10% de posibilidad).

Si hay un error que aumente por defecto 10 de vida.

Int vida = 100;

funtion potaDeVida(){
try {
If(random.numero >= 10 && <= 100){
vida = vida + 10;
}else{
vida = vida + 20
}
}Catch{
vida = vida + 10;
}
}

Esto me ayudo. 鉃★笍 (https://es.javascript.info/try-catch)

aporte hecho en python

  • Primero, se ejecuta el c贸digo en try {鈥.

  • Si no hubo errores, se ignora catch (err): la ejecuci贸n llega al final de try y contin煤a, omitiendo catch.

  • Si se produce un error, la ejecuci贸n de try se detiene y el control fluye al comienzo de catch (err). La variable err (podemos usar cualquier nombre para ella) contendr谩 un objeto de error con detalles sobre lo que sucedi贸.

try
{
aplicar a ofertas de trabajo de +$900
}
catch
{
abrir Onlyfans
}

Aca mi ejemplo con javascript 馃槂

馃捇馃枼隆Resolviendo el reto!

1) 隆La p谩gina se ha ca铆do, hay que avisar al usuario de cualquier forma posible!

COMPRAS

dinero = 100
precio_producto = 150

Try {
	dinero >= precio_producto
print ("Compra del producto con 茅xito.")
}
Catch {
print ("Escoger otro producto o aumentar dinero.")
}

Analogia del Try Catch

Te pongo la siguiente analogia. Imagina que vas a comprar un pan, hablas con el panadero y le pides que te de una baguette el panadero al no tener ese tipo de pan explota y te quedas tu sin pan y lleno de sangre. Eso pasa con las excepciones, siempre hay que evitarlas lo maximo posible, el hecho de que un lenguaje incluya una funcionalidad no es porque tiene que hacerse de esa forma siempre.

<code> 
"ingresa tu nombre"
tu nombre es:
try 
	print (tu nombre es)
catch
	print ("no puedes ingresar n煤meros"

Mi ejemplo consiste en ingresar dos n煤meros para realizar una divisi贸n y si el usuario ingresa un valor que no sea n煤mero, Catch solicita ingresar un dato v谩lido:

Try:
鈥欌楨studiar ingles como es debido鈥欌

Catch:
鈥欌楧ecir que soy intermedio en mi CV鈥欌

No estaba entendiendo bien los ejemplos del try catch, en que momento usarlo m谩s que todo, pero con este ejemplo que le ped铆 a gpt entend铆 mejor, espero les sirva

try {
  // c贸digo que puede causar una excepci贸n
  let x = y + 1;
} catch (error) {
  // c贸digo que maneja la excepci贸n
  console.log(error);
}

Este es el ejemplo sencillo en python que realic茅

try:
    edad = int(input("digite su edad\n"))
    print(edad)
except ValueError:
    print("Ingrese un n煤mero entero")


Este es el ejemplo que hice, aprendiendo cada d铆a 馃槂


function division()
  {
    try
    {
      var a = Number(prompt("introducir numero"));
      var b = Number(prompt("introducir numero"));
      resultado = a / b
      if(a == 0 , b == 0)
      {
        throw "No se puede dividir entre 0";
      }
    console.log("Resultado = " + resultado)
    }
    catch(error)
      {
        alert("Error: "+error);
      
    }

  }
division()

Try = Lograr entrar a la universidad + Estudiar en Platzi
Catch = Estudiar solo en Platzi, conseguir primer empleo, pagar universidad

<code> 

try {
  // codigo
}
catch (planB){
  // continuacion en caso de que el codigo puesto a prueba falle
}


Try: Ejecuta un bloque de instrucciones (si existe un error en alguna parte del bloque no se ejecuta nada del Try y pasa al Catch)
Catch: Plan B para continuar con el flujo
Esto se utiliza m谩s en bases de datos para controlar sentencias sql

No s茅, si mi ejemplo este bien, pero recibo humildemente cualquier opini贸n

TRY
estoy haciendo un documento en WORD
//POR ALGUNA RAZON NO SE GUARDA SE VA LA LUZ
CATCH
auto guardado de la 煤ltima instrucci贸n

Try: Seleccionar boton
Si hay error al seleccionar el boton.
Cath: No responde - Refrescar navegador

try: salir con mi cruch
Catch: Seguir aprendiendo en Platzi

try:
    numerador = int(input("Ingresa un numerador: "))
    denominador = int(input("Ingresa un denominador: "))
    
    resultado = numerador / denominador
    
    print("El resultado de la divisi贸n es:", resultado)

catch ZeroDivisionError:
    print("No es posible dividir por cero.")

catch ValueError:
    print("Ingresa n煤meros v谩lidos.")

Try:
Andar con las piernas

Catch:
alert(鈥淔ractura en la rodilla, utiliza muletas鈥)

En python hay que usar ** try-except**.
Hice un ejemplo sencillo con el error al dividir un n煤mero entre cero.

class FondosInsuficientesError(Exception):
pass

def comprar_productos():
total_gastado = 0

try:
    # Intentamos comprar la bicicleta
    precio_bicicleta = 200
    if total_gastado + precio_bicicleta <= 3200:
        total_gastado += precio_bicicleta
        print("Compraste una bicicleta por $", precio_bicicleta)
    else:
        raise FondosInsuficientesError()

    # Intentamos comprar la moto
    precio_moto = 2000
    if total_gastado + precio_moto <= 3200:
        total_gastado += precio_moto
        print("Compraste una moto por $", precio_moto)
    else:
        raise FondosInsuficientesError()

    # Intentamos comprar la televisi贸n
    precio_tele = 4000
    if total_gastado + precio_tele <= 3200:
        total_gastado += precio_tele
        print("Compraste una televisi贸n por $", precio_tele)
    else:
        raise FondosInsuficientesError()

except FondosInsuficientesError:
    print("Fondos insuficientes para comprar todos los productos.")
finally:
    print("Total gastado: $", total_gastado)

comprar_productos()

Que buen aporte con respecto al uso del try-catch es interesante en como muchos programadores lo usan para aplicarlo en problemas reales. Por supuesto que en los lenguajes y aplicaciones reales, los try catch siempre tienen un moton de codigo. Mas la parte try que la catch ya que es solo un mensaje de error. Aqui esta el reto de la profe.

let dinero = 100
let precio = 150

try {
    if (dinero <= precio) {
        "No puedes comprar el producto"
    } else {
        "Puedes comprar el producto"
    }
} catch (exception) {
    print("Error: Datos erroneos, prueba otra vez" + exception)
}

Gracias por la clase

Try es la instrucci贸n y catch es el plan B; el cual se ejecutar谩 cuando la instrucci贸n tenga un error, por ejemplo, Try sacar la ra铆z cuadrada de un n煤mero Catch no existe la ra铆z cuadrada de un n煤mero negativo

TRay Cath es la mejor manera de controlar los errores de un proceso y evitar una salida anormal


Try:
	Ir a la venta en automovil

Except:
	Ir a la venta caminando
	

try
(ingrese su nombre)
an3
catch
esta ingresando numeros, intente de nuevo

Muchas Gracias Profe鈥

El manejo de errores con los bloques try-catch (o try-except) es una forma de controlar las excepciones que pueden ocurrir durante la ejecuci贸n de un programa.

def obtener_entero(cadena):
try:
entero = int(cadena)
return entero
except ValueError:
print(鈥淓rror: No se pudo convertir la cadena en un n煤mero
entero.鈥)
return None

try{
	if(usuario == cookies.accept){
		save.data
	}
} catch(error){
	if(usuario == cookies.denied){
		save.data
	}
}

Algoritmo de la clase hecho en JavaScript:

try {

    let numerador = 10; // Numerador
    let denominador = 0; // Denominador
  
    let resultado = numerador / denominador;
  
    if (!isFinite(resultado)) {

      throw new Error("La division no es posible");

    }

    console.log("El resultado de la divisi贸n es: " + resultado);

  } catch (error) {

    console.log("Ocurri贸 un error: " + error.message);

  }

Se me complic贸 un poco de entender, pero con la ayuda de un comentario del curso y con un toque de ChatGPT, escrib铆 algo as铆 como ejemplo del uso de Try Catch.

"Le pedimos al usuario que ingrese n煤meros y, al programa, que los divida e imprima el resultado.

Sin embargo, sabemos que puede resultar errores de esto:

  1. Que no se ingresen valores num茅ricos.
  2. Que se intente dividir por cero.

Para ambos casos, creamos un 鈥渆xcept鈥 o 鈥渃atch鈥 que imprima un mensaje explicando el error y la soluci贸n al usuario.

(En el lenguaje de programaci贸n Python, try/catch se llama try/except, pero es lo mismo.)

try:
    num1 = int(input("Ingrese un n煤mero: "))
    num2 = int(input("Ingrese otro n煤mero: "))
    resultado = num1 / num2
    print("El resultado de la divisi贸n es:", resultado)
except ValueError:
    print("Error: Debe ingresar valores num茅ricos.")
except ZeroDivisionError:
    print("Error: No se puede dividir entre cero.") 

Try
"Ir a comprar al supermercado"
Catch
"Mandar a comprar al supermercado"

Realice dos ejemplos, uno teorico y otro en codigo:

  1. Try
    Controlar el balon y anotar gol.
  • Estar posicionado

  • Detener el balon

  • Mantenerlo controlado

    Catch

  • Correr y driblar para recuperar el balon.

Try representa mi intento de controlar el bal贸n como delantero, mientras que el Catch es la respuesta despu茅s de que el bal贸n se haya escapado y permite recuperarme r谩pidamente para seguir buscando el gol.

try:
    edad = int(input("Ingresa tu edad: "))
    resultado = 2023 - edad
    print("Naciste en el a帽o", resultado)
catch ValueError:
		print("Ha ocurrido un error. Ingresa un n煤mero v谩lido para tu edad.")

TRY

  • Le solicito al usuario ingresar su edad, y ese valor lo guardo con un entero.
  • Realizo un calculo basado en la edad que ingreso el usuario.
  • Imprimo el resultado en pantalla.
    CATCH
  • Capturo un error si el usuario ingreso letras o caracteres distintos a numeros, ese error es de tipo ValueError (Error de Valor).
  • Imprime un mensajede de error de tipo de Dato para edad.

en un juego de piedra papel o tijera en JavaScript que me dejaron como reto le di al jugador la posibilidad de poner las opciones 1,2 y 3 para escoger su opci贸n pero no me percate si el jugador colocaba otro numero como 5 o 9 el c贸digo tendr铆a problemas el try catch seria una gran soluci贸n en este caso

try:
    gastos = []
    for i in range(7):
        dia = int(input(f"Ingrese los gastos del d铆a {i+1}: "))
        gastos.append(dia)

    promedio = sum(gastos) / len(gastos)
    print(f"El promedio de gastos de la semana es igual a {promedio:.2f}")
    if promedio >= 100:
        print(f"El promedio de gastos semanal super贸 los 100 d贸lares: {promedio:.2f}")
except ValueError:
    print("Debe ingresar valores num茅ricos para los gastos.")

try{ functionx()}
catch{ console.log(鈥渁lgo anda mal鈥)

Aqui les comparto un script con manejo de exepciones por si el usuario ingresa una opcion no valida en Python

驴Qu茅 es un dato?

En inform谩tica, un dato es cualquier informaci贸n que puede ser almacenada y procesada por un programa de computadora. Los datos pueden tomar muchas formas diferentes, desde texto y n煤meros hasta im谩genes y sonidos. En general, se considera que los datos son la materia prima con la que trabajan los programas de computadora.

Tipos de datos

Existen varios tipos de datos que se utilizan en programaci贸n, entre los que destacan:

  • Datos de texto: se refieren a cadenas de caracteres que representan palabras, frases, oraciones, etc. Los datos de texto se utilizan ampliamente en aplicaciones como procesadores de texto, correo electr贸nico y redes sociales.
  • Datos num茅ricos: se refieren a valores que representan n煤meros, ya sean enteros o decimales. Estos datos se utilizan en una amplia variedad de aplicaciones, desde c谩lculos matem谩ticos hasta simulaciones cient铆ficas y financieras.
  • Datos booleanos: se refieren a valores que pueden ser verdaderos o falsos. Estos datos se utilizan ampliamente en aplicaciones que requieren toma de decisiones, como la programaci贸n de juegos y sistemas de votaci贸n en l铆nea.
  • Arrays: como se mencion贸 anteriormente, los arrays son estructuras de datos que permiten almacenar una colecci贸n de elementos del mismo tipo en una 煤nica variable. Los arrays son muy utilizados en programaci贸n para almacenar y manipular grandes cantidades de datos de manera eficiente.

Ejemplo de algoritmo de un reloj

A continuaci贸n, se presenta un ejemplo de un algoritmo para mostrar la hora actual en un reloj digital:

  1. Obtener la hora actual del sistema.
  2. Convertir la hora actual a un formato de 24 horas.
  3. Dividir la hora actual en horas, minutos y segundos.
  4. Mostrar las horas, minutos y segundos en un formato de reloj digital.
  5. Esperar un segundo.
  6. Repetir el paso 1.

Este algoritmo utiliza datos num茅ricos para representar las horas, minutos y segundos, as铆 como datos de texto para representar el formato del reloj digital. Adem谩s, utiliza un bucle para repetir continuamente la obtenci贸n y muestra de la hora actual.

驴Qu茅 son las estructuras de control?

Las estructuras de control son instrucciones o bloques de c贸digo que permiten modificar el flujo de ejecuci贸n de un programa de computadora. Es decir, son herramientas que permiten controlar el orden en que se ejecutan las instrucciones del programa, permitiendo tomar decisiones, realizar repeticiones y ejecutar acciones condicionales.

Las estructuras de control son fundamentales en la programaci贸n, ya que permiten escribir programas m谩s complejos y sofisticados que pueden tomar decisiones y realizar acciones de manera aut贸noma. Adem谩s, el uso adecuado de las estructuras de control puede mejorar la eficiencia y eficacia del programa al reducir el n煤mero de instrucciones innecesarias y repetitivas.

Existen tres tipos principales de estructuras de control:

Estructuras condicionales

Las estructuras condicionales permiten tomar decisiones en funci贸n del resultado de una o varias condiciones. La estructura condicional m谩s com煤n es el 鈥渋f鈥 o 鈥渟i鈥 en espa帽ol, que ejecuta una instrucci贸n o bloque de c贸digo solo si se cumple una condici贸n. Tambi茅n existen otras estructuras condicionales como 鈥渆lse鈥 o 鈥渟ino鈥 en espa帽ol, que se ejecutan en caso contrario a la condici贸n establecida en el 鈥渋f鈥, y 鈥渆lse if鈥 o 鈥渟ino si鈥 en espa帽ol, que permiten establecer varias condiciones consecutivas para tomar decisiones m谩s complejas.

Estructuras de repetici贸n

Las estructuras de repetici贸n permiten ejecutar una o varias instrucciones varias veces en funci贸n de una condici贸n. Las estructuras de repetici贸n m谩s comunes son el 鈥渇or鈥 y el 鈥渨hile鈥 en los que se establece una condici贸n y se ejecutan las instrucciones dentro de un bloque de c贸digo hasta que se cumpla o se deje de cumplir dicha condici贸n. Estas estructuras son especialmente 煤tiles cuando se necesitan realizar operaciones repetitivas con datos.

Estructuras de control de excepciones

Las estructuras de control de excepciones permiten manejar errores o situaciones excepcionales en la ejecuci贸n del programa. Las estructuras de control de excepciones m谩s comunes son el 鈥渢ry-catch鈥 o 鈥渋ntenta-captura鈥 en espa帽ol, que intentan ejecutar una instrucci贸n y, si se produce una excepci贸n o error, se ejecuta un bloque de c贸digo para manejar la situaci贸n. Estas estructuras son muy 煤tiles para evitar que los programas se detengan por completo debido a errores inesperados y para manejar errores de manera eficiente.

Estructuras condicionales

Las estructuras condicionales son aquellas que permiten tomar decisiones en funci贸n del resultado de una o varias condiciones. En la programaci贸n, la estructura condicional m谩s com煤n es el 鈥渋f鈥 o 鈥渟i鈥 en espa帽ol, que ejecuta una instrucci贸n o bloque de c贸digo solo si se cumple una condici贸n.

La sintaxis b谩sica de la estructura condicional 鈥渋f鈥 es la siguiente:


if condici贸n:
    instrucci贸n(es)

Donde 鈥渃ondici贸n鈥 es una expresi贸n booleana que eval煤a si se cumple o no una determinada condici贸n, y 鈥渋nstrucci贸n(es)鈥 es una o varias instrucciones que se ejecutar谩n si se cumple la condici贸n.

Tambi茅n existen otras estructuras condicionales, como el 鈥渆lse鈥 o 鈥渟ino鈥 en espa帽ol, que se ejecutan en caso contrario a la condici贸n establecida en el 鈥渋f鈥. La sintaxis b谩sica de la estructura condicional 鈥渋f-else鈥 es la siguiente:


if condici贸n:
    instrucci贸n(es) si se cumple la condici贸n
else:
    instrucci贸n(es) si no se cumple la condici贸n

Adem谩s, existe el 鈥渆lse if鈥 o 鈥渟ino si鈥 en espa帽ol, que permite establecer varias condiciones consecutivas para tomar decisiones m谩s complejas. La sintaxis b谩sica de la estructura condicional 鈥渋f-else if-else鈥 es la siguiente:


if condici贸n1:
    instrucci贸n(es) si se cumple la condici贸n1
elif condici贸n2:
    instrucci贸n(es) si se cumple la condici贸n2
else:
    instrucci贸n(es) si no se cumple ninguna de las condiciones anteriores

Las estructuras condicionales son fundamentales en la programaci贸n, ya que permiten que los programas tomen decisiones de manera aut贸noma y ejecuten instrucciones espec铆ficas en funci贸n de las condiciones establecidas. En general, las estructuras condicionales se utilizan para hacer que el programa sea m谩s inteligente y eficiente en la toma de decisiones, lo que a su vez mejora la experiencia del usuario final.

Algoritmos con variables y condicionales

Los algoritmos con variables y condicionales son aquellos que utilizan variables para almacenar valores y estructuras condicionales para tomar decisiones en funci贸n de esos valores. Estos algoritmos son muy 煤tiles para resolver problemas complejos en la programaci贸n.

A continuaci贸n se presenta un ejemplo de algoritmo con variables y condicionales, que simula el funcionamiento de un sem谩foro:

markdownCopy code
1. Iniciar variable color en "verde"
2. Iniciar variable tiempo en 0
3. Mientras tiempo < 60:
4.     Si color es "verde":
5.         Imprimir "Semaforo en verde"
6.         Incrementar tiempo en 1
7.         Si tiempo >= 60:
8.             Terminar el algoritmo
9.         Si tiempo >= 30:
10.            Cambiar color a "amarillo"
11.    Si color es "amarillo":
12.        Imprimir "Semaforo en amarillo"
13.        Incrementar tiempo en 1
14.        Si tiempo >= 60:
15.            Terminar el algoritmo
16.        Si tiempo >= 45:
17.            Cambiar color a "rojo"
18.    Si color es "rojo":
19.        Imprimir "Semaforo en rojo"
20.        Incrementar tiempo en 1
21.        Si tiempo >= 60:
22.            Terminar el algoritmo
23.        Si tiempo >= 55:
24.            Cambiar color a "verde"

En este algoritmo, se utilizan dos variables: 鈥渃olor鈥, que representa el color actual del sem谩foro, y 鈥渢iempo鈥, que representa el tiempo transcurrido desde que el sem谩foro se puso en verde. El algoritmo inicia con el sem谩foro en verde y el tiempo en 0, y se ejecuta en un ciclo mientras el tiempo sea menor a 60 segundos. En cada iteraci贸n del ciclo, se verifica el color actual del sem谩foro y se imprimen mensajes correspondientes en funci贸n de ese color. Adem谩s, se incrementa el tiempo en 1 segundo en cada iteraci贸n y se cambia el color del sem谩foro si se cumplen ciertas condiciones (por ejemplo, cambiar a amarillo despu茅s de 30 segundos en verde, y a rojo despu茅s de 45 segundos en amarillo). Finalmente, cuando el tiempo llega a 60 segundos, el algoritmo termina.

Este ejemplo muestra c贸mo se pueden utilizar variables y estructuras condicionales para simular un proceso complejo en un programa, lo que puede ser muy 煤til en situaciones reales.

Ciclos

Los ciclos son estructuras de control en programaci贸n que permiten ejecutar una serie de instrucciones repetidamente mientras se cumple una condici贸n determinada. Los ciclos son 煤tiles para procesar grandes cantidades de datos, realizar operaciones matem谩ticas complejas o simplemente para automatizar tareas repetitivas.

Existen dos tipos principales de ciclos en programaci贸n: el ciclo 鈥渨hile鈥 y el ciclo 鈥渇or鈥.

Ciclo while

El ciclo 鈥渨hile鈥 ejecuta una serie de instrucciones repetidamente mientras se cumpla una condici贸n determinada. La sintaxis b谩sica de un ciclo while es la siguiente:


while condici贸n:
    instrucciones

El ciclo while eval煤a la condici贸n al inicio de cada iteraci贸n. Si la condici贸n se cumple, se ejecutan las instrucciones dentro del ciclo. Despu茅s de ejecutar las instrucciones, el ciclo vuelve a evaluar la condici贸n y, si se cumple, se repite el proceso. El ciclo termina cuando la condici贸n no se cumple m谩s.

A continuaci贸n, se presenta un ejemplo de ciclo while que suma los primeros 10 n煤meros naturales:


suma = 0
i = 1

while i <= 10:
    suma += i
    i += 1

print("La suma de los primeros 10 n煤meros naturales es:", suma)

En este ejemplo, el ciclo while se repite mientras la variable 鈥渋鈥 sea menor o igual a 10. En cada iteraci贸n, se suma el valor de 鈥渋鈥 a la variable 鈥渟uma鈥, y se incrementa el valor de 鈥渋鈥 en 1. Despu茅s de que el ciclo termina, se imprime el valor final de la variable 鈥渟uma鈥.

Ciclo for

El ciclo 鈥渇or鈥 es una estructura de control que permite iterar sobre una secuencia de elementos (como una lista o una cadena de caracteres) y ejecutar una serie de instrucciones para cada elemento de la secuencia. La sintaxis b谩sica de un ciclo for es la siguiente:


for variable in secuencia:
    instrucciones

En cada iteraci贸n del ciclo for, la variable 鈥渧ariable鈥 toma el valor de uno de los elementos de la secuencia y se ejecutan las instrucciones dentro del ciclo. Despu茅s de ejecutar las instrucciones, el ciclo avanza al siguiente elemento de la secuencia y repite el proceso hasta que se han procesado todos los elementos.

A continuaci贸n, se presenta un ejemplo de ciclo for que imprime los elementos de una lista de frutas:


frutas = ["manzana", "banana", "kiwi", "naranja"]

for fruta in frutas:
    print(fruta)

En este ejemplo, el ciclo for itera sobre la lista de frutas y en cada iteraci贸n, la variable 鈥渇ruta鈥 toma el valor de uno de los elementos de la lista y se imprime en la consola.

En resumen, los ciclos son estructuras de control en programaci贸n que permiten repetir una serie de instrucciones mientras se cumple una condici贸n determinada. Los ciclos 鈥渨hile鈥 y 鈥渇or鈥 son los tipos principales de ciclos en programaci贸n y son 煤tiles para procesar grandes cantidades de datos y automatizar tareas repetitivas.

Algoritmos con ciclos

Aqu铆 hay algunos ejemplos de algoritmos que utilizan ciclos:

  1. Suma de n煤meros: Este algoritmo pide al usuario un n煤mero n y calcula la suma de todos los n煤meros enteros desde 1 hasta n utilizando un ciclo for.

Inicio
  Leer n
  suma = 0
  Para i desde 1 hasta n hacer
    suma = suma + i
  FinPara
  Mostrar suma
Fin

  1. Factorial de un n煤mero: Este algoritmo pide al usuario un n煤mero n y calcula su factorial utilizando un ciclo while.

Inicio
  Leer n
  factorial = 1
  i = 1
  Mientras i <= n hacer
    factorial = factorial * i
    i = i + 1
  FinMientras
  Mostrar factorial
Fin

  1. Tabla de multiplicar: Este algoritmo pide al usuario un n煤mero n y muestra su tabla de multiplicar del 1 al 10 utilizando un ciclo for anidado.

Inicio
  Leer n
  Para i desde 1 hasta 10 hacer
    producto = n * i
    Mostrar n, " x ", i, " = ", producto
  FinPara
Fin

  1. B煤squeda en una lista: Este algoritmo busca un elemento espec铆fico en una lista y devuelve su 铆ndice utilizando un ciclo for.

Inicio
  lista = [2, 4, 6, 8, 10]
  elemento = 8
  indice = -1
  Para i desde 0 hasta longitud(lista)-1 hacer
    Si lista[i] == elemento entonces
      indice = i
      SalirPara
    FinSi
  FinPara
  Mostrar indice
Fin

Estos son solo algunos ejemplos de algoritmos que utilizan ciclos. Los ciclos son una herramienta poderosa en la programaci贸n que nos permiten automatizar tareas repetitivas y procesar grandes cantidades de datos de manera eficiente.

Try Catch

Try-Catch es una estructura de control utilizada en programaci贸n para manejar excepciones o errores que puedan ocurrir durante la ejecuci贸n de un programa.

La estructura Try-Catch consta de dos bloques principales: el bloque Try y el bloque Catch.

  • El bloque Try es donde se coloca el c贸digo que se espera que se ejecute sin errores. Si se produce alg煤n error en este bloque, se genera una excepci贸n y el control del programa pasa al bloque Catch.
  • El bloque Catch es donde se coloca el c贸digo que se ejecutar谩 en caso de que se produzca una excepci贸n. Este bloque recibe como par谩metro la excepci贸n generada por el bloque Try, lo que permite al programador analizar y solucionar el problema.

Aqu铆 hay un ejemplo sencillo de c贸mo se utiliza la estructura Try-Catch en Java:

csharpCopy code
try {
   // C贸digo que se espera que se ejecute sin errores
   int a = 10 / 0; // Genera una excepci贸n de divisi贸n entre cero
} catch (ArithmeticException e) {
   // C贸digo que se ejecutar谩 en caso de que se produzca una excepci贸n
   System.out.println("Ha ocurrido un error: " + e.getMessage());
}

En este ejemplo, el bloque Try contiene una operaci贸n de divisi贸n entre cero, lo que generar谩 una excepci贸n de tipo ArithmeticException. El bloque Catch recibe esta excepci贸n y muestra un mensaje de error en la consola.

El uso de Try-Catch es fundamental en la programaci贸n moderna, ya que permite manejar errores de manera controlada y predecible. Con esta estructura de control, podemos garantizar que nuestro programa no se detendr谩 abruptamente en caso de errores inesperados, sino que manejar谩 los errores de manera apropiada para seguir funcionando correctamente.

Algoritmos con manejo de errores

El manejo de errores en los algoritmos es una parte importante de la programaci贸n, ya que permite detectar y corregir errores que puedan ocurrir durante la ejecuci贸n del programa. Aqu铆 hay un ejemplo sencillo de c贸mo se puede implementar el manejo de errores en un algoritmo:


int dividir(int a, int b) {
   if (b == 0) {
      throw new ArithmeticException("Error: divisi贸n entre cero");
   } else {
      return a / b;
   }
}

try {
   int resultado = dividir(10, 0);
} catch (ArithmeticException e) {
   System.out.println("Ha ocurrido un error: " + e.getMessage());
}

En este ejemplo, se define una funci贸n dividir que toma dos n煤meros enteros como entrada y devuelve el resultado de la divisi贸n entre ellos. Si el segundo n煤mero es cero, se genera una excepci贸n de tipo ArithmeticException.

Luego, en el bloque Try, se llama a la funci贸n dividir con los par谩metros 10 y 0, lo que generar谩 la excepci贸n de divisi贸n entre cero. El bloque Catch recibe esta excepci贸n y muestra un mensaje de error en la consola.

El manejo de errores tambi茅n puede ser utilizado en ciclos y condicionales. Por ejemplo, si estamos leyendo datos de un archivo o de un usuario, podemos usar el manejo de errores para garantizar que los datos sean v谩lidos antes de continuar con la ejecuci贸n del programa. Aqu铆 hay un ejemplo de c贸mo se puede utilizar el manejo de errores en un ciclo:


Scanner input = new Scanner(System.in);
int num = -1;

while (num < 0 || num > 100) {
   try {
      System.out.println("Ingrese un n煤mero entre 0 y 100: ");
      num = Integer.parseInt(input.nextLine());
      if (num < 0 || num > 100) {
         throw new Exception("El n煤mero debe estar entre 0 y 100");
      }
   } catch (Exception e) {
      System.out.println("Ha ocurrido un error: " + e.getMessage());
   }
}

System.out.println("El n煤mero ingresado es: " + num);

En este ejemplo, se pide al usuario que ingrese un n煤mero entre 0 y 100. Si el n煤mero ingresado no cumple con este rango, se genera una excepci贸n de tipo Exception. El ciclo se repite hasta que el usuario ingresa un n煤mero v谩lido.

En resumen, el manejo de errores es esencial en la programaci贸n para detectar y corregir errores durante la ejecuci贸n del programa. Esto garantiza que nuestro programa pueda manejar situaciones inesperadas de manera controlada y predecible.

Algoritmos con manejo de errores

El manejo de errores en los algoritmos es una parte importante de la programaci贸n, ya que permite detectar y corregir errores que puedan ocurrir durante la ejecuci贸n del programa. Aqu铆 hay un ejemplo sencillo de c贸mo se puede implementar el manejo de errores en un algoritmo:


int dividir(int a, int b) {
   if (b == 0) {
      throw new ArithmeticException("Error: divisi贸n entre cero");
   } else {
      return a / b;
   }
}

try {
   int resultado = dividir(10, 0);
} catch (ArithmeticException e) {
   System.out.println("Ha ocurrido un error: " + e.getMessage());
}

En este ejemplo, se define una funci贸n dividir que toma dos n煤meros enteros como entrada y devuelve el resultado de la divisi贸n entre ellos. Si el segundo n煤mero es cero, se genera una excepci贸n de tipo ArithmeticException.

Luego, en el bloque Try, se llama a la funci贸n dividir con los par谩metros 10 y 0, lo que generar谩 la excepci贸n de divisi贸n entre cero. El bloque Catch recibe esta excepci贸n y muestra un mensaje de error en la consola.

El manejo de errores tambi茅n puede ser utilizado en ciclos y condicionales. Por ejemplo, si estamos leyendo datos de un archivo o de un usuario, podemos usar el manejo de errores para garantizar que los datos sean v谩lidos antes de continuar con la ejecuci贸n del programa. Aqu铆 hay un ejemplo de c贸mo se puede utilizar el manejo de errores en un ciclo:


Scanner input = new Scanner(System.in);
int num = -1;

while (num < 0 || num > 100) {
   try {
      System.out.println("Ingrese un n煤mero entre 0 y 100: ");
      num = Integer.parseInt(input.nextLine());
      if (num < 0 || num > 100) {
         throw new Exception("El n煤mero debe estar entre 0 y 100");
      }
   } catch (Exception e) {
      System.out.println("Ha ocurrido un error: " + e.getMessage());
   }
}

System.out.println("El n煤mero ingresado es: " + num);

En este ejemplo, se pide al usuario que ingrese un n煤mero entre 0 y 100. Si el n煤mero ingresado no cumple con este rango, se genera una excepci贸n de tipo Exception. El ciclo se repite hasta que el usuario ingresa un n煤mero v谩lido.

En resumen, el manejo de errores es esencial en la programaci贸n para detectar y corregir errores durante la ejecuci贸n del programa. Esto garantiza que nuestro programa pueda manejar situaciones inesperadas de manera controlada y predecible.

鈥渋nicio del programa鈥
Email = 鈥渋ngresa tu correo electr贸nico鈥
Password = 鈥淚ngresa tu contrase帽a鈥
try
鈥淚niciar sesi贸n鈥
Catch
Mostrar 鈥淐orreo o contrase帽a incorrectos鈥
鈥淔in del programa鈥

Una demostraci贸n del try-catch usando diagrama de flujo

Ac谩 un programa de gesti贸n de inventario para una tienda que necesita comprobar que los datos ingresados sean correctos.

Recibo retroalimentaciones.

Creo que ser铆a algo as铆

Una aplicaci贸n importante de Try/Catch no solo seria captar error internos al programa, sino que tambien aquellos externos al mismo en donde se trabaje con la colaboracion del usuario , un ejemplo:

  • Un juego para ninos
<import random

print("A aprender a sumar!")
while True:
  try:
    num1 = random.randint(1,20)
    num2 = random.randint(1,20)
    ans = int(input(f"{num1} + {num2} = "))
    if ans == num1+num2:
        print()
        print("Es correcto!")
        print()
    else:
        print()
        print(f"La repuesta es {num1+num2}. Intentemos otra vez!")
        print()
  except:
    print("Introduce solo numeros!")
    print()> 

Este es mi ejemplo.

Try 
	"Reproducir un video de Youtube"
Catch 
	"Mostrar el enlace de Youtube"

a = 1
b =4

try { "la suma de : " ,
c = a ++ b
Mostrar 鈥淟a operacion fue exitosa鈥
} catch { mostrar 鈥渓a operacion fallo en algo intenta de nuevo鈥潁
fin

Try {Contactar a Richard Gere
}
Catch

El try catch es para la captura de errores no para ejecutar plan b, c o d,. El algoritmo debe ser resiliente si, pero el try lo que define es capturar algo que definitivamente no se esperaba, (un error). Par谩 los plan B, C o D est谩n los if o funciones recursivas.. Es decir durante el try si algo no sale como se esperaba pero de tipo excepci贸n . (Varables null, Definiciones, memoria, ejecuci贸n etc.) salta al catch, de resto siga funcionando como debe funcionar.

Uso del Try catch en JavaScript

let LegalAge = 18;

try {
  //Logica de nuestro flujo.
  //En est茅 caso no se definira la variable (InputUser)
  if(InputUser >= LegalAge){
    console.log('Eres mayor de edad!');
  }else{
    console.log('Eres menor de edad');
  }

} catch (error) {
  //Mostrar mensaje de error si el try no funciona.
  console.error('La validaci贸n no se completo');
}

Try: 鈥淓scriba su contrase帽a"
primer intento.
segundo intento.
Catch:鈥 Ha excedido el n煤mero de intentos su cuenta est谩bloqueada temporalmente"

Aqu铆 est谩 un ejemplo de algoritmo en pseudoc贸digo que utiliza una estructura de control para manejar errores:

Declare una variable num con valor 0
Declare una variable error con valor falso
Hacer
  Escribir "Por favor ingrese un n煤mero: "
  Leer num
  Si num = 0 entonces
    Escribir "El n煤mero no puede ser cero"
    error = verdadero
  Sino
    error = falso
  Fin si
Mientras error = verdadero
Escribir "Gracias, has ingresado el n煤mero ", num

Este algoritmo utiliza un ciclo do-while para repetir un bloque de c贸digo hasta que la variable error sea falsa. El bloque de c贸digo dentro del ciclo solicita al usuario que ingrese un n煤mero y lo almacena en la variable num. Si el valor de num es igual a cero, se imprime un mensaje de error y se establece la variable error en verdadera. Si el valor de num es diferente de cero, se establece la variable error en falsa. El ciclo do-while contin煤a hasta que el usuario ingrese un n煤mero v谩lido (es decir, un n煤mero diferente de cero). Una vez que se ingresa un n煤mero v谩lido, el ciclo termina y el algoritmo imprime un mensaje de agradecimiento.

Es muy 煤til ya que no se detiene todo el programa por un error.

En el caso de un videojuego de mundo abierto con opciones aun no implementadas podria hacerse algo como:

try {
Actividad no implementada
}
catch {
鈥淓sta opcion no esta disponible en esta version, vuelve en la siguiente actualizacion!鈥
}

"Inicio del programa"
Ingrese el medicamento:
"el resultado es"
ERROR
NO SE ENCONTRO CONEXION CON LA BASE DE DATOS
"el c贸digo que contin煤a no se ejecuta por el error"
-------------------------
"Inicio del programa"
Ingrese el medicamento:

try
     "el resultado es"
     resultado = buscar en base de datos de inventario
     Mostrar resultado
catch 
      Mostrar " Se perdi贸 conexi贸n con la base de datos"

"contin煤a el programa"
.
.
.
"fin del programa"

Try Catch

permite realizar una instrucci贸n clara para ejecutar algo en caso de que esa instrucci贸n no funcione, cuida la l贸gica del algoritmo en caso de que algo no salga bien.

public class Enero27 {
//codigo try catch
public static void main(String[] args) {
try{
System.out.println(鈥渆jecutar bloque de instrucciones鈥);
System.out.println(鈥淚nstruccion uno鈥);
int n = Integer.parseInt(鈥淢鈥);//error forzado en tiempo de ejecuci贸n
System.out.println(鈥淚nstruccion dos鈥);
System.out.println(鈥淚nstruccion tres鈥鈥);
}
catch (Exception e){
System.out.println("error al ejecutar instruccion鈥> "+e);
}
finally{
System.out.println(鈥渋nstrucciones que se realizan, aunque encontremos errores鈥);
}
}

En este ejemplo, se est谩n manejando dos tipos diferentes de excepciones.

try:
number1 = 1
number2 = 0
split = number1 / number2
print(鈥淓l divisor es:鈥, split)
except ZeroDivisionError:
print(鈥淣o se puede dividir por cero鈥)

try
{
document.write (鈥淰e a Marineford a salvar a Ace鈥);
}
catch
{
alert(鈥淟lora de rodillas en medio de una batalla campal鈥);
}

// Code in C# 
            try
            {
                Console.WriteLine("Ingrese un numero");
                a = int.Parse(Console.ReadLine());
                Console.WriteLine("Ingrese otro numero");
                b = int.Parse(Console.ReadLine());
                c = a / b;
                Console.WriteLine("El resultado es: " + c);
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine("No se puede dividir por cero");
            }
            catch (FormatException e)
            {
                Console.WriteLine("No se puede convertir a numero");
            }
            finally
            {
                Console.WriteLine("El programa termino");
            }
            Console.ReadKey();
            // ----------------------------
//ej 1:
try 
	print ("Dime tu nombre y edad")
catch 
	print ("Ups, ingresaste mal, por favor dime tu nombre y tu edad")

//Ej 2:
// INTERACIONES DE 1 A 4

try {
	for (let i =1; i>=4 ; i++) {
console.log("interation ${i} ");
  }

console.log ("Fin del ciclo");
}

catch {
	for (let i =4; i>=1 ; i++) {
console.log("interation ${i} ");
  }
console.log ("Fin del ciclo");
} 
try {
documen.write: ("sacar dinero" (cantidad)) {
if ( cantidad < 1800) : true
else if {
catch {
| alert:("cantidad no disponible"); {

En la selecci贸n de una avatar en video juego, si el jugador, no selecciona al principio el personaje, se aplica Catch, para que vuelva a desplegar la opci贸n de seleccionar mascotas, hasta que el jugador la seleccione.

Practica try - catch

Try {
Ingresar a https://prueba/page.com/
}
Catch {
Mostrar error 404
}

try {
const data = prompt(鈥渨rite something鈥);

const suma =  Math.log(data);

} catch (error) {
console.log(error);
};

A veces puede servir cuando no se haya definido una funci贸n o se est谩n haciendo pruebas sobre ella.

try
{
funcionNoDefinida();
}
catch(err)
{
console.log(err)
}


Tambi茅n se puede usar para conocer en cu谩l parte del c贸digo puede haber un error al probar una instrucci贸n: en este caso se entraron mal los datos 鈥渁鈥 y 鈥渂鈥 por eso no pueden sumar.

a=5;
b="no opero";

try
{
c=a+b;
console.log(c);
}
catch(err)
{
alert("parece que al probar no hubo error");
}

//resultado "5no opero"

                     Mi codigo
try{
	let texto=["abc","123"]
}catch (error){
	alert("Error馃樋馃槩馃槩")
}

Funciona as铆:

  1. Primero, se ejecuta el c贸digo en try {鈥.

  2. Si no hubo errores, se ignora catch (err): la ejecuci贸n llega al final de try y contin煤a, omitiendo catch.

  3. Si se produce un error, la ejecuci贸n de try se detiene y el control fluye al comienzo de catch (err). La variable err (podemos usar cualquier nombre para ella) contendr谩 un objeto de error con detalles sobre lo que sucedi贸.

Entonces, un error dentro del bloque try {鈥 no mata el script; tenemos la oportunidad de manejarlo en catch.

Un ejemplo simple de Try Catch

try{
    let correo="[email protected]"
    console.log("Bienvenido nuevamente")
}catch{
    console.log("Revisa si has puesto correctamente tu correo, verifica puntos, letras y arroba")
}

try { toma el autob煤s };
catch { toma un taxi };

Aqui un ejemplo simple en c++, espero les ayude.

#include <iostream>
#include <conio.h>
using namespace std; 

int main(){

   try
   {
           int numeros[5]={};
           for (int i = 0; i <5; i++)
           {
               cout<<"Ingresar Numero"<<endl;
               cin>>numeros[i];
                if (numeros[i]<20)
                   {
                       cout<<"Dato ingresado"<<endl;
                       
                   }
                   else{
                       throw numeros[i];
                   }
                   
           }
   }
   catch(int x)
   {
       cout<<"error, ha ingresado el numero mayor al permitido "<<x<<endl;
   }
   

Es excelenete para integracinoes a servidores. que son enlaces externos a nuestro c贸digo y que posiblemente pueda tener errores de conexi贸n.

Aca mi ejemplo utilizando throw para forzar al codigo a ejecutar el catch con una excepcion personalizada

Cuantos dias tiene cada mes 
var cantidadDias = () => 30;
try
{
  var mes = cantidadDias();
  if(mes === 30) throw new Error("febrero solo tiene 28 dias");
}
 catch (error)
{
 console.error(error.name, error.message);
}

Podr铆a ser un ejemplo de try catch, cuando te piden escribir la fecha de nacimiento y se debe escribir sin espacio o s铆mbolos
Try: Escribir fecha de nacimiento
Catch: Escribe la fecha sin espacios o s铆mbolos

Considero que puede ser:

Try
Reproducir canciones en la app de Spotify
Catch
Reproducir canciones en la p谩gina web de Spotify

otro ejemplo:

Try
Abrir explorador y mostrar lista de favoritos
Catch
Abrir explorador y mostrar la 煤ltima p谩gina abierta

En un Cajero Autom谩tico se acerca un usuario a realizar una extracci贸n de efectivo, supongamos que falle por error de conexi贸n el avance efectivo, seria un buen uso el catch ya que si falla la conexi贸n el plan de contingencia seria la devoluci贸n de la extracci贸n y no reste del saldo del usuario.

Hola, no s茅 como escribirlo en c贸digo, pero este es mi ejemplo:

Escribir nuevo nombre de usuario:

try {

	nuevo_usuario_escribe_su_nombre(_________)

}

catch (error = nombre de usuario ya existe)

{
	alert ("Nombre de usuario no disponible, prueba con otro o elige uno de los siguientes")

	console.log ("generar nombre de usurio aleatorio")

} 

es importante evaluar si usar un Try Catch es lo indicado o mejor deberiamos realizar una validacion mas concreta por codigo de que cosa hace falta por ejemplo una interaccion con el usuario y enviarlo a hacer algo diferente