Introducción al ejercicio en JavaScript
Clase 35 de 47 • Curso Básico de Algoritmos y Pensamiento Lógico
Contenido del curso
Tipos de datos y operadores lógicos
- 6

¿Qué son variables y constantes?
04:45 min - 7

¿Qué son Bits y Bytes?
01:14 min - 8

Identifica las variables según los requerimientos de negocio
00:46 min - 9

Strings (texto) y concatenación
02:44 min - 10

Números y operaciones matemáticas básicas
03:29 min - 11

Operaciones matemáticas compuestas: paréntesis y orden de evaluación
03:11 min - 12

True y false: booleanos y tablas de la verdad
07:48 min - 13

Arrays y funciones sobre arrays
04:10 min - 14

¿Cómo diseñar algoritmos con diagramas de flujo?
07:11 min - 15

Define el tipo de dato según los requerimientos de negocio
01:02 min
Estructuras de control
- 16

If y Else: condicionales y comparaciones para proteger tus algoritmos
04:11 min - 17

Switch y Case: condicionales en forma de casos
03:46 min - 18

Excepciones y errores: Throw y Try Catch
05:00 min - 19

¿Qué es un ciclo? While, For y Do While
05:34 min - 20

Diagrama de flujo con condicionales
03:53 min - 21

Diagrama de flujo con ciclos
04:40 min - 22

Tutorial de algoritmos de programación
07:05 min - 23

Diseña algoritmos para resolver problemas de tu vida diaria
01:02 min
Encapsula tu código en funciones
- 24

¿Cómo desarrollar tu lógica de programación?
01:44 min - 25

¿Qué es una función?
07:43 min - 26

Modularización de código
04:09 min - 27

Flujo de funciones para encapsular algoritmos
01:34 min - 28

Nomenclaturas de programación: camelCase, PascalCase, snake_case
01:02 min - 29

¿Qué es recursividad? Funciones que se llaman a sí mismas
01:58 min - 30

Convierte algoritmos con ciclos a funciones recursivas
00:33 min - 31

Resolviendo acertijos
03:20 min
Traduce tus algoritmos a lenguajes de programación
- 32

Diferencias entre lenguajes de programación
05:10 min - 33

Cómo escribir código en cualquier lenguaje de programación
03:08 min - 34

Cómo programar en JavaScript, Python y PHP
05:15 min - 35

Introducción al ejercicio en JavaScript
Viendo ahora - 36

Programando en JavaScript
09:33 min - 37

Introducción al ejercicio en Python
00:51 min - 38

Programando en Python
04:54 min - 39

Introducción al ejercicio en PHP
00:47 min - 40

Programando en PHP
12:27 min - 41

Cómo programar en Java y Lenguaje C
02:02 min - 42

Introducción al ejercicio en Java
00:38 min - 43

Programando en Java
06:31 min - 44

Introducción al ejercicio en C
00:32 min - 45

Programando en Lenguaje C
04:22 min - 46

Traduce diagramas de flujo a código en lenguajes de programación
00:33 min
Conclusiones
Para entender mucho mejor la función que desarrollaremos en JavaScript es importante tener en cuenta dos puntos: la lógica a implementar y el flujo de la ejecución.
El reto es escribir una función en JavaScript que muestre cuál es el segundo número más grande (en valor) dentro de un array de números.
Lo primero que debemos hacer ante un ejercicio de lógica es planear bien cómo lo vamos a ordenar, de esta forma nuestra solución en código será eficaz y no solo efectiva.
Comprendamos el ejercicio
Empecemos graficando el problema:
Empecemos con un array de ejemplo:
[3, 7, 4, 8, 9]
Si lo organizamos en orden descendente, quedaría de la siguiente forma:
[9,8,7,4,3]
Aquí podemos ver que el número más grande, el de mayor valor, es el 9. Pero el enunciado nos pide el segundo número de mayor valor, así que en realidad estamos buscando, en este caso, el número 8.
Recuerda que estás creando la lógica de una función que puede recibir un array de cualquier longitud (que puede variar la cantidad de lugares que tendrá el array) y con el orden de números aleatorio, así que debemos implementarlo para que, sea cual sean sus características, lo podamos procesar.
Paso a paso para resolver el ejercicio
Teniendo claro lo anterior, pasamos a ir paso a paso por la resolución del ejercicio:
- Capturamos en una variable el valor de la posición 0 del array. No necesitamos conocer su valor, solo será nuestro punto de partida como referencia, no implica que tenga un valor fundamental.
- Capturamos una segunda variable donde guardaremos el valor que estamos buscando, así que le llamaremos “second” y lo inicializamos en cero porque este valor va a cambiar mucho.
- Creamos un ciclo for con el cual pasaremos por cada posición del array para encontrar el valor que estamos buscando.
- Ahora tenemos un primer condicional que pregunta si nuestra posición actual del array es mayor al valor de nuestra variable first. Aquí hay un punto interesante porque en la primera iteración del ciclo estaremos evaluando en ambos casos la posición 0 del array, pero después de esa ya empezará a variar (porque va por cada posición), a pesar de esto siempre preguntaremos si es mayor a first.
- Si la condición es verdadera, entonces nuestra variable resultado que hemos llamado “second” guardará este valor porque para este punto de la iteración el valor de la posición actual del array es mayor a la del número de referencia first.
- Pero nuestra iteración no termina allí, tenemos una segunda condición que pregunta: si el valor de la posición actual del array es mayor al valor de second y además es menor que first entonces el segundo valor más grande del array es el que tenemos en nuestra posición actual del array.
Ejercicio graficado
Si esta explicación aún no es totalmente clara para ti, hagamos este ejemplo gráficamente:
Al finalizar todas las iteraciones, la variable second quedó con el valor 4, justo el número que estábamos buscando en nuestro algoritmo.
Otras soluciones
Hay una ruta aparentemente más fácil para solucionar nuestro ejercicio.
Podríamos ordenar nuestro array:
[5,4,3,1]
Y luego tomar su segundo valor de la siguiente manera:
numbers[1] = 4
En este caso, para este array en específico, la solución funciona correctamente. Sin embargo, debemos evaluar otros casos de uso, por ejemplo, si el array tiene números repetidos.
Si tomamos el siguiente array con números repetidos:
[1,3,2,1,4,4]
Lo ordenamos:
[4,4,3,2,1,1]
Y buscamos la segunda posición del array:
numbers[1]
El valor que obtendremos es un 4. ¡Eso es incorrecto! Recuerda que nuestro ejercicio consiste en encontrar el segundo valor más grande dentro de un array de números, por lo que el valor que buscábamos era un 3, no el 4. Este algoritmo no funciona correctamente si tenemos números repetidos en nuestro array.
No te preocupes si habías pensado en esta solución inicialmente. Haber pensado diferente ("fuera de la caja") ayudará muchísimo a que tu cerebro encuentre las mejores soluciones ante cada nuevo problema que te encuentres. Solo recuerda tener en cuenta diferentes posibles casos de uso para probar tus algoritmos. :wink:
Implementación en JavaScript
Te espero en la siguiente clase donde resolveremos este ejercicio usando el lenguaje de programación JavaScript.