Skip to content

Commit d8228d9

Browse files
authored
Merge pull request mouredev#7429 from JuSeRDev/JuSeRDev
[05, 06, 07] - TypeScript
2 parents ab13a50 + e63024d commit d8228d9

File tree

3 files changed

+257
-0
lines changed

3 files changed

+257
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+
* "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+
* (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
11+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
12+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
13+
* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
14+
* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
15+
* Comprueba también que se ha conservado el valor original en las primeras.
16+
*/
17+
18+
let variable1 = 10
19+
let variable2 = variable1
20+
// variable2 = 20
21+
variable1 = 30
22+
console.log(variable1)
23+
console.log(variable2)
24+
25+
// tipos de datos por refernecia
26+
27+
let myListA = [10, 20]
28+
let myListb = myListA
29+
myListb.push(30) //aqui se agrego el valor a ambos arrays
30+
console.log(myListA)
31+
console.log(myListb)
32+
33+
let myNumber: number = 10
34+
35+
function myFunctionA(myInt:number):number {
36+
myInt = 20
37+
return myInt
38+
}
39+
40+
console.log(myFunctionA(myNumber))
41+
console.log(myNumber)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* EJERCICIO:
3+
* Entiende el concepto de recursividad creando una función recursiva que imprima
4+
* números del 100 al 0.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Utiliza el concepto de recursividad para:
8+
* - Calcular el factorial de un número concreto (la función recibe ese número).
9+
* - Calcular el valor de un elemento concreto (según su posición) en la
10+
* sucesión de Fibonacci (la función recibe la posición).
11+
*/
12+
13+
const countdown = (count: number) =>{
14+
if (count >= 0) {
15+
console.log(count)
16+
countdown(count - 1)
17+
}
18+
}
19+
20+
console.log(countdown(10))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
/*
2+
* EJERCICIO:
3+
* Implementa los mecanismos de introducción y recuperación de elementos propios de las
4+
* pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
5+
* o lista (dependiendo de las posibilidades de tu lenguaje).
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web. Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como el nombre de una nueva web.
9+
* - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
10+
* impresora compartida que recibe documentos y los imprime cuando así se le indica.
11+
* La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
12+
* interpretan como nombres de documentos.
13+
*/
14+
15+
// Pila/Stacks )LIFO=
16+
17+
let stack: number[] = []
18+
stack.push(1)
19+
stack.push(2)
20+
stack.push(3)
21+
console.log("Este es el stack completo: ", stack)
22+
23+
let stackItem = stack.pop()
24+
console.log("El tulitmo elemento desapilado es: ", stackItem)
25+
console.log("Este es el stack actualizado: ", stack)
26+
27+
// Cola/Queve (FIFO)
28+
29+
let queve: number[] = []
30+
31+
queve.push(1)
32+
queve.push(2)
33+
queve.push(3)
34+
35+
console.log("Esta es el queve: ", queve)
36+
37+
let queveItem = queve.shift()
38+
39+
console.log("Este es el primer elementro desapilado: ", queveItem)
40+
console.log("Este es el queve actualizado", queve)
41+
42+
43+
// Extra
44+
45+
let paginaWeb: number[] = []
46+
47+
let accionMovimiento = (accion: string) =>{
48+
if (accion === "adelante") {
49+
let lastNumber = paginaWeb.length
50+
let newNumber = lastNumber + 1
51+
paginaWeb.push(newNumber)
52+
return paginaWeb
53+
} else if (accion === "atras"){
54+
paginaWeb.pop()
55+
return paginaWeb
56+
}
57+
}
58+
59+
console.log(accionMovimiento("adelante"))
60+
console.log(accionMovimiento("adelante"))
61+
console.log(accionMovimiento("adelante"))
62+
console.log(accionMovimiento("atras"))
63+
console.log(accionMovimiento("atras"))
64+
65+
//! EXTRA
66+
67+
/*
68+
* EJERCICIO:
69+
* Implementa los mecanismos de introducción y recuperación de elementos propios de las
70+
* pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
71+
* o lista (dependiendo de las posibilidades de tu lenguaje).
72+
*
73+
* DIFICULTAD EXTRA (opcional):
74+
* - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web. Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como el nombre de una nueva web.
75+
* - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una impresora compartida que recibe documentos y los imprime cuando así se le indica. La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se interpretan como nombres de documentos.
76+
*/
77+
78+
import * as readline from "readline";
79+
80+
const rl = readline.createInterface({
81+
input: process.stdin,
82+
output: process.stdout
83+
})
84+
85+
const webNavigation = () =>{
86+
let stack: string[] = []
87+
let memoria: (string | undefined)[] = []
88+
89+
const preguntar = () =>{
90+
rl.question(`Añade una url o navega con las pabaras "adelante/atras/salir": `, (action)=>{
91+
console.log("")
92+
if (action === "adelante") {
93+
if (memoria.length <= 0) {
94+
console.log("")
95+
console.log("no tienes registro de memoria")
96+
console.log("")
97+
preguntar()
98+
} else {
99+
console.log("")
100+
console.log("esto es lo que tiene memoria ⬇️:")
101+
console.log(memoria)
102+
console.log("esto es lo que tiene memoria en la ultima posicion ⬇️:")
103+
console.log(memoria[memoria.length -1])
104+
stack.push(`${memoria[memoria.length -1]}`)
105+
console.log("")
106+
console.log("Esta es la pagina en la que estas ahora: ⬇️")
107+
console.log(stack[stack.length -1])
108+
console.log("")
109+
memoria.pop()
110+
console.log("asi quedo memoria ⬇️:")
111+
console.log(memoria)
112+
console.log("")
113+
console.log("Asi quedo stack ⬇️:")
114+
console.log(stack)
115+
console.log("")
116+
}
117+
} else if (action === "atras"){
118+
119+
if (stack.length <= 0) {
120+
console.log("")
121+
console.error("estas en la pagina de inicio, no puedes ir mas para atras")
122+
console.log("")
123+
preguntar()
124+
}else{
125+
console.log("")
126+
let lastPage = stack.pop()
127+
console.log("esta es la ultima pagina eliminada y guardada en la variable lastPage ⬇️:")
128+
console.log(lastPage)
129+
console.log("")
130+
console.log("lastPage ⬇️:")
131+
console.log(lastPage)
132+
console.log("")
133+
memoria.push(lastPage)
134+
console.log("Memoria ⬇️:")
135+
console.log(memoria)
136+
console.log("")
137+
console.log("Volviste a la pagina ⬇️:")
138+
console.log(stack[stack.length -1])
139+
console.log("")
140+
console.log("Asi esta el stack ⬇️:")
141+
console.log(stack)
142+
console.log("")
143+
}
144+
} else if (action === "salir"){
145+
console.log("Saliendo del navegador web")
146+
console.log()
147+
rl.close()
148+
} else{
149+
stack.push(action)
150+
console.log("Has navegado a la web ⬇️:")
151+
console.log(stack[stack.length -1])
152+
console.log(stack)
153+
console.log("")
154+
}
155+
preguntar()
156+
})
157+
}
158+
preguntar()
159+
}
160+
161+
// webNavigation()
162+
163+
const sharedPrinter = () =>{
164+
let quece: string[] = []
165+
166+
const preguntar = () =>{
167+
rl.question("Añade un documento o selecciona imprimir/salir: ", (action)=>{
168+
if (action === "salir") {
169+
console.log("")
170+
console.log("Saliste del programa")
171+
console.log("")
172+
rl.close()
173+
} else if (action === "imprimir") {
174+
console.log("")
175+
console.log(`Hay ${quece.length} elemento imprimiendose`)
176+
console.log("")
177+
while (quece.length > 0) { //ejecuta un bucle siempre que la condicion sea verdadera y se vuelve a evaluar la condicion hasta que esta sea falsa
178+
const documento = quece.shift(); // Elimina el primer elemento
179+
console.log("Imprimiendo: ", documento); // en cada bucle imprime el valor de document
180+
}
181+
console.log("\nLa cola está vacía.\n");
182+
preguntar()
183+
} else {
184+
console.log("")
185+
quece.push(action)
186+
console.log("Esto es loque tiene la variable quece ⬇️")
187+
console.log(quece)
188+
console.log("")
189+
preguntar()
190+
}
191+
})
192+
}
193+
preguntar()
194+
}
195+
196+
// sharedPrinter()

0 commit comments

Comments
 (0)