import React, {useEffect, useState } from 'react'; const Calculadora = () => { // Estado para almacenar los datos del formulario const [formulario, setFormulario] = useState({ numero1: 0, numero2: 0 }); const [suma, setSuma] = useState(0); const [multiplicacion, setMultiplicacion] = useState(0); useEffect(() => { console.log('El componente se ha montado por primera vez'); }, []); // Array vacío indico que se ejecute una sola vez, al montar (renderizar) el componente useEffect(() => { console.log(formulario); }); // Si parámetros se ejecuta cada vez que renderizamos el componente: cuidado con poner cosas que fuercen a enderizar useEffect(() => { console.log('El formulario ha cambiado'); setSuma(formulario.numero1 + formulario.numero2) // Esto va con retraso setMultiplicacion(formulario.numero1 * formulario.numero2) // Esto va con retraso }, [formulario]); // Array con propiedades indico que se ejecute cuando cambian esas propiedades // Función para manejar cambios en los campos de entrada const handleInputChange = (event) => { const { name, value } = event.target; setFormulario({ ...formulario, [name]: Number(value) }); }; return ( <form > <label> Numero 1: <input type="number" name="numero1" value={formulario.numero1} onChange={handleInputChange} /> </label> <label> Numero 2: <input type="number" name="numero2" value={formulario.numero2} onChange={handleInputChange} /> </label> <h1>{formulario.numero1 + formulario.numero2}</h1> <h1>{formulario.numero1 * formulario.numero2}</h1> <h1>{suma}</h1> <h1>{multiplicacion}</h1> </form> ); }; export default Calculadora;
Autor: Juan Pablo Fuentes
Formador de programación y bases de datos
Solución calculadora
import React, { useState } from 'react'; const Calculadora = () => { // Estado para almacenar los datos del formulario const [formulario, setFormulario] = useState({ numero1: 0, numero2: 0 }); const [suma, setSuma] = useState(0); const [multiplicacion, setMultiplicacion] = useState(0); // Función para manejar cambios en los campos de entrada const handleInputChange = (event) => { const { name, value } = event.target; setFormulario({ ...formulario, [name]: Number(value) }); setSuma(formulario.numero1 + formulario.numero2) // Esto va con retraso setMultiplicacion(formulario.numero1 * formulario.numero2) // Esto va con retraso }; return ( <form > <label> Numero 1: <input type="number" name="numero1" value={formulario.numero1} onChange={handleInputChange} /> </label> <label> Numero 2: <input type="number" name="numero2" value={formulario.numero2} onChange={handleInputChange} /> </label> <h1>{formulario.numero1 + formulario.numero2}</h1> <h1>{formulario.numero1 * formulario.numero2}</h1> <h1>{suma}</h1> <h1>{multiplicacion}</h1> </form> ); }; export default Calculadora;
Ejercicio bucle
Vamos a pedir una cadena al usuario y vamos a decir el número de vocales que tiene.
Una vocal es a,e,i,o,u
Pasos:
-Pedir una cadena al usuario
– recorrer las letra de la cadena
– si es vocal contarla
– mostrar el resultado
Ejemplos bucles for
for i in range(10, 0, -1): print(i) for i in range(101): cuadrado = i ** 2 if cuadrado % 2 == 0: print(cuadrado) numero = 20000000 queEs = True for i in range(2, numero): if numero % i == 0: queEs = False break # Un ejemplo muy bueno de uso de break print(queEs) # ¿Que nos está averiguando la variable queEs? if queEs: print(numero, "es primo") else: print(numero, "no es primo") # break y continue # break sale del bucle y continue se salta las siguientes instrucciones del bucle for i in range(10): if i == 5: break # Sal del bucle, acabado print(i) for i in range(10): if i == 5: continue # Salta la siguiente instrucción print(i) cesta = [10, 30, 40, 5] # esto es una lista lo veremos suma = 0 for valor in cesta: suma += valor print(suma) cadena = "" for i in range(5): cadena += "*" print(cadena) cadena = "hola que tal" palabras = 1 for letra in cadena: if letra == " ": palabras += 1 print(palabras) # Bucles anidados: un bucle dentro de otro bucle for i in range(1, 11): print(i, "x 7 =", i * 7) print("-----------") # Todas las tablas de multiplicar for tabla in range(1, 11): for i in range(1, 11): print(i, "x ", tabla, " =", i * tabla) print("-----------") # Todos los números primos hasta el 100 for numero in range(2,101): queEs = True for i in range(2, numero): if numero % i == 0: queEs = False break if queEs: print(numero)
Bucle for
frutas = ["manzana", "banana", "cereza"] for fruta in frutas: print(fruta) for contador in range(10): print(contador) # range(valor) -> 0 hasta el valor -1 # range(inicio,fin) -> desde inicio hasta fin -1 # range(inicio,fin,paso) -> desde inicio hasta fin de paso en paso for i in range(5, 12): print(i) print("---------") for i in range(0, 100, 5): # range(inicio,fin) -> desde inicio hasta fin -1 print(i) print("---------") for i in range(10, 1, -1): # range(inicio,fin) -> desde inicio hasta fin -1 en este caso paso negativo print(i) suma = 0 for i in range(101): suma += i print(suma) for letra in "hola que tal": print(letra) letraABuscar = "a" contador = 0 cadena = "tal" for letra in cadena: if letra == letraABuscar: contador += 1 print("En '", cadena, "' hay", contador, "letras", letraABuscar) notas = [5, 8, 1, 3, 6, 9] aprobados = 0 for nota in notas: if nota >= 5: aprobados += 1 print("Hay", aprobados, "aprobados")
Soluciones ejercicios bucles while
# Escribir un programa que nos muestre una cuenta atrás desde 10 # 10 9 8 ... cuenta = 10 while cuenta > 0: print(cuenta) cuenta -= 1 # Escribir un programa que muestre los cuadrados pares de los números del 1 al 100 # 4,16,36.... contador = 1 while contador <= 100: # calculo el cuadrado cuadrado=contador**2 # compruebo si es par if (cuadrado % 2 == 0): # imprimo print(cuadrado) contador += 1
Otro ejemplo de renderizar listas
function Alumnos() { let lista = [{ id: 1, nombre: "Ana", nota: 7 }, { id: 2, nombre: "Eva", nota: 5 }, { id: 3, nombre: "Pep", nota: 8 } ] return (<ul> { lista.map((valor) => <li key={valor.id}>{valor.nombre + " : " + valor.nota}</li>) } </ul>) } export default Alumnos;
Ejemplo estados complejos
import React, { useState } from 'react'; import Numero from './Numero' const Contador = () => { // Quiero variables dentro de una página de react tengo que utilizar estado const [contador, setContador] = useState({ valor: 0, historial: [] }); const [cadena, setCadena] = useState("") const incrementarContador = () => { setContador({ valor: contador.valor + 1, historial: contador.historial.concat("I") }); setCadena("") console.log(contador) }; const decrementarContador = () => { if (contador.valor > 0) { setContador({ valor: contador.valor - 1, historial: contador.historial.concat("D") }); } else { setCadena("No puedes poner número negativos") } }; const resetearContador = () => { setContador({ valor: 0, historial: [...contador.historial,"R"] }); setCadena("") }; return ( <div> <Numero numero={contador.valor} resetear={resetearContador} /> <p> {cadena}</p> <button onClick={incrementarContador}>Incrementar</button> <button onClick={decrementarContador}>Decrementar</button> <button onClick={resetearContador}>Reset</button> </div> ); }; export default Contador;
Interacción estados padres e hijos
import React, { useState } from 'react'; import Numero from './Numero' const Contador = () => { // Quiero variables dentro de una página de react tengo que utilizar estado const [contador, setContador] = useState(0); const [cadena, setCadena] = useState("") const incrementarContador = () => { setContador(contador + 1); setCadena("") }; const decrementarContador = () => { if (contador>0) { setContador(contador - 1); }else{ setCadena("No puedes poner número negativos") } }; const resetearContador = () => { setContador(0); setCadena("") }; return ( <div> <Numero numero={contador} resetear={resetearContador}/> <p> {cadena}</p> <button onClick={incrementarContador}>Incrementar</button> <button onClick={decrementarContador}>Decrementar</button> <button onClick={() => setContador(0)}>Reset</button> </div> ); }; export default Contador;
import './Numero.css' function Numero({ numero, resetear }) { return <h1 onClick={resetear}>{numero}</h1> } export default Numero;
Ejemplo de estados con contador y texto
import React, { useState } from 'react'; const Contador = () => { // Quiero variables dentro de una página de react tengo que utilizar estado const [contador, setContador] = useState(0); const [cadena, setCadena] = useState("") const incrementarContador = () => { setContador(contador + 1); setCadena("") }; const decrementarContador = () => { if (contador>0) { setContador(contador - 1); }else{ setCadena("No puedes poner número negativos") } }; return ( <div> <p>Contador: {contador}</p> <p> {cadena}</p> <button onClick={incrementarContador}>Incrementar</button> <button onClick={decrementarContador}>Decrementar</button> <button onClick={() => setContador(0)}>Reset</button> </div> ); }; export default Contador;