forked from marquez.juan/clase-10-ejercicios-de-repaso
Agrega README con consignas y estructura de carpetas
This commit is contained in:
189
README.md
Normal file
189
README.md
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
# Ejercicios de repaso del primer cuatrimestre
|
||||||
|
|
||||||
|
Estos ejercicios abordan los temas vistos en el cuatrimestre: el lenguaje
|
||||||
|
JavaScript, arrays y objetos, el DOM y eventos. Para cada ejercicio, completar
|
||||||
|
el archivo HTML con su archivo `.js` vinculado.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Cada carpeta contiene un ejercicio distinto, la idea es que ustedes creen todo
|
||||||
|
el contenido que necesiten (archivos HTML, javascript y css).
|
||||||
|
|
||||||
|
## Ejercicio 0: Uso de git
|
||||||
|
|
||||||
|
Seguir los pasos habituales para gestionar con git estos ejercicios:
|
||||||
|
|
||||||
|
- Hacer un fork de [este
|
||||||
|
repositorio](https://gitea.juansemarquez.com/marquez.juan/clase-10-ejercicios-de-repaso)
|
||||||
|
(noten que tiene 'marquez.juan' en la URL)
|
||||||
|
- Clonar **tu fork**. (No debería figurar `marquez.juan` en la URL).
|
||||||
|
- Crear una nueva rama con `switch -c nombre-de-tu-rama`
|
||||||
|
- Hacer `git push origin nombre-de-tu-rama`
|
||||||
|
- Desde gitea, crear el pull request, desde la rama recién creada de tu fork
|
||||||
|
hacia la rama `main` del repositorio que pertenece a `marquez.juan`. De esta
|
||||||
|
manera el docente puede ir siguiendo tu trabajo y respondiendo las consultas
|
||||||
|
más fácilmente.
|
||||||
|
- Comenzar a resolver los ejercicios, en el archivo `ejercicioX.js` de cada
|
||||||
|
subcarpeta.
|
||||||
|
- Hacer al menos un commit por cada uno de los ejercicios que siguen.
|
||||||
|
- Al finalizar cada sesión de trabajo, hacer `git push origin
|
||||||
|
nombre-de-tu-rama`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 1: Saludo personalizado
|
||||||
|
|
||||||
|
Crear una página con un campo de texto y un botón. Al hacer clic en el botón,
|
||||||
|
leer el valor del campo y mostrar en la página el mensaje `"Hola, [nombre]!"`.
|
||||||
|
Si el campo está vacío, mostrar en su lugar `"Por favor, ingresá tu nombre."`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 2: Lista de tareas simple
|
||||||
|
|
||||||
|
Crear una página con un campo de texto y un botón "Agregar". Cada vez que se
|
||||||
|
haga clic en el botón, agregar el texto del campo como un nuevo ítem en una
|
||||||
|
lista `<ul>`. Después de agregar el ítem, limpiar el campo.
|
||||||
|
|
||||||
|
Si el campo está vacío al hacer clic, no agregar nada.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 3: Resaltador de ítems
|
||||||
|
|
||||||
|
Crear una lista con al menos seis ítems de cualquier contenido. Al hacer clic
|
||||||
|
en un ítem, agregarle la clase `"seleccionado"`. Al hacer clic de nuevo sobre
|
||||||
|
el mismo ítem, quitarle la clase.
|
||||||
|
|
||||||
|
Usar delegación de eventos, incluyendo un solo listener en la lista, no uno por
|
||||||
|
ítem.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 4: Contador con límite
|
||||||
|
|
||||||
|
Crear una página con tres elementos: un botón "Sumar", un botón "Restar" y un
|
||||||
|
párrafo que muestre el valor actual del contador, empezando en `0`.
|
||||||
|
|
||||||
|
Requisitos:
|
||||||
|
- El contador no puede bajar de `0` ni subir de `10`.
|
||||||
|
- Cuando el contador llega a `10`, el botón "Sumar" se deshabilita.
|
||||||
|
- Cuando el contador llega a `0`, el botón "Restar" se deshabilita.
|
||||||
|
- Al volver a un valor intermedio, los botones se vuelven a habilitar.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 5: Filtro de lista en tiempo real
|
||||||
|
|
||||||
|
Dado un array de países (al menos diez), construir dinámicamente una lista en
|
||||||
|
la página con todos ellos. Es decir: la lista de países no debe estar en el
|
||||||
|
archivo html, sino como array en javascript, y a partir de este array se debe
|
||||||
|
generar la lista.
|
||||||
|
|
||||||
|
Agregar un campo de texto arriba de la lista para búsqueda. A
|
||||||
|
medida que el usuario escribe, mostrar solo los países cuyo nombre contenga el
|
||||||
|
texto ingresado (sin distinguir mayúsculas de minúsculas). Si el campo está
|
||||||
|
vacío, mostrar todos.
|
||||||
|
|
||||||
|
En ningún momento debemos modificar el array original, sino ir reconstruyendo
|
||||||
|
la lista en el DOM con cada cambio del campo de búsqueda.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 6: Tabla dinámica
|
||||||
|
|
||||||
|
Dado el siguiente array de objetos:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const empleados = [
|
||||||
|
{ nombre: "Ana", sector: "Desarrollo", sueldo: 150000 },
|
||||||
|
{ nombre: "Luis", sector: "Diseño", sueldo: 120000 },
|
||||||
|
{ nombre: "Marta", sector: "Desarrollo", sueldo: 160000 },
|
||||||
|
{ nombre: "Carlos", sector: "RRHH", sueldo: 110000 },
|
||||||
|
{ nombre: "Julia", sector: "Diseño", sueldo: 130000 }
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
Construir dinámicamente una tabla HTML con una fila por empleado. Agregar una
|
||||||
|
fila al final que muestre el sueldo promedio del total de empleados.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 7: Formulario con validación
|
||||||
|
|
||||||
|
Crear un formulario con los campos nombre, edad y contraseña. Al enviarlo,
|
||||||
|
validar:
|
||||||
|
|
||||||
|
- Que ningún campo esté vacío.
|
||||||
|
- Que la edad contenga números enteros entre 0 y 100.
|
||||||
|
- Que la contraseña tenga al menos 8 caracteres.
|
||||||
|
|
||||||
|
Si hay errores, mostrarlos en la página junto a cada campo. Si todo es válido,
|
||||||
|
ocultar los errores y mostrar un mensaje de éxito.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 8: Carrito de compras
|
||||||
|
|
||||||
|
Dado el siguiente array de productos:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const productos = [
|
||||||
|
{ nombre: "Teclado", precio: 8500 },
|
||||||
|
{ nombre: "Mouse", precio: 4200 },
|
||||||
|
{ nombre: "Monitor", precio: 62000 },
|
||||||
|
{ nombre: "Auriculares", precio: 11000 },
|
||||||
|
{ nombre: "Webcam", precio: 15500 }
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
Construir dinámicamente una lista de productos en la página, donde cada ítem
|
||||||
|
tenga un botón "Agregar al carrito". Al hacer clic, el producto se agrega a
|
||||||
|
una sección "Carrito" visible en la página, junto con su precio. Al pie del
|
||||||
|
carrito, mostrar el total actualizado.
|
||||||
|
|
||||||
|
Si el mismo producto se agrega más de una vez, no duplicarlo: incrementar su
|
||||||
|
cantidad y actualizar el total.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ejercicio 9: Quiz de opción múltiple
|
||||||
|
|
||||||
|
Crear un array de al menos cinco preguntas, cada una con la forma:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
pregunta: "¿Cuál es la capital de Francia?",
|
||||||
|
opciones: ["Madrid", "París", "Roma", "Berlín"],
|
||||||
|
correcta: 1 // índice de la opción correcta
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Mostrar una pregunta por vez, con sus opciones como botones. Al seleccionar
|
||||||
|
una opción:
|
||||||
|
- Indicar visualmente si fue correcta o incorrecta.
|
||||||
|
- Mostrar un botón "Siguiente" para pasar a la próxima pregunta.
|
||||||
|
|
||||||
|
Al finalizar todas las preguntas, mostrar el puntaje total (`X de Y correctas`)
|
||||||
|
y un botón para reiniciar el quiz desde cero.
|
||||||
|
|
||||||
|
|
||||||
|
**Sobre la corrección y calificación:** El pedido de que hagan _push_ de lo que
|
||||||
|
van avanzando clase a clase tiene como objetivo ir registrando la actividad de
|
||||||
|
cada estudiante. En ese contexto importante que comprendan lo siguiente:
|
||||||
|
|
||||||
|
- El docente no va a corregir ni calificar _todos_ los ejercicios.
|
||||||
|
- El docente sí va a revisar y responder todas las preguntas que se hagan
|
||||||
|
acerca del código publicado en gitea.
|
||||||
|
- Si alguien hace push de un código que contiene errores, esto **no** impactará
|
||||||
|
negativamente en su calificación. Es normal equivocarse, y forma parte del
|
||||||
|
aprendizaje.
|
||||||
|
- Al finalizar el cuatrimestre:
|
||||||
|
- La calificación de lo relacionado con javascript será evaluada en el examen
|
||||||
|
parcial (y el recuperatorio, si hiciera falta).
|
||||||
|
- La calificación de lo relacionado con git, será evaluada considerando el uso
|
||||||
|
de git durante el cuatrimestre: no importa si cada commit contiene código
|
||||||
|
correcto o incorrecto, lo que importa es que cada estudiante haya dejado
|
||||||
|
registro de su progreso clase a clase.
|
||||||
|
- No es necesario tener completo el 100% de la ejercitación, el porcentaje
|
||||||
|
debe rondar el mismo que se solicita para la asistencia (75%).
|
||||||
1
ejercicio1/ejercicio1.js
Normal file
1
ejercicio1/ejercicio1.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio1/estilo.css
Normal file
2
ejercicio1/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio1/index.html
Normal file
14
ejercicio1/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 1</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 1</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio1.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio2/ejercicio2.js
Normal file
1
ejercicio2/ejercicio2.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio2/estilo.css
Normal file
2
ejercicio2/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio2/index.html
Normal file
14
ejercicio2/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 2</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 2</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio2.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio3/ejercicio3.js
Normal file
1
ejercicio3/ejercicio3.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio3/estilo.css
Normal file
2
ejercicio3/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio3/index.html
Normal file
14
ejercicio3/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 3</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 3</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio3.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio4/ejercicio4.js
Normal file
1
ejercicio4/ejercicio4.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio4/estilo.css
Normal file
2
ejercicio4/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio4/index.html
Normal file
14
ejercicio4/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 4</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 4</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio4.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio5/ejercicio5.js
Normal file
1
ejercicio5/ejercicio5.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio5/estilo.css
Normal file
2
ejercicio5/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio5/index.html
Normal file
14
ejercicio5/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 5</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 5</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio5.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio6/ejercicio6.js
Normal file
1
ejercicio6/ejercicio6.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio6/estilo.css
Normal file
2
ejercicio6/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio6/index.html
Normal file
14
ejercicio6/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 6</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 6</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio6.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio7/ejercicio7.js
Normal file
1
ejercicio7/ejercicio7.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio7/estilo.css
Normal file
2
ejercicio7/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio7/index.html
Normal file
14
ejercicio7/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 7</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 7</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio7.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio8/ejercicio8.js
Normal file
1
ejercicio8/ejercicio8.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio8/estilo.css
Normal file
2
ejercicio8/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio8/index.html
Normal file
14
ejercicio8/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 8</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 8</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio8.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
ejercicio9/ejercicio9.js
Normal file
1
ejercicio9/ejercicio9.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Agregar aquí el código javascript
|
||||||
2
ejercicio9/estilo.css
Normal file
2
ejercicio9/estilo.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Agregar el código CSS necesario para el ejercicio */
|
||||||
|
|
||||||
14
ejercicio9/index.html
Normal file
14
ejercicio9/index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>Ejercicio 9</title>
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Ejercicio 9</h1>
|
||||||
|
|
||||||
|
<script src="ejercicio9.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user