1
+ /*
2
+ * EJERCICIO:
3
+ * - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
4
+ * - Utiliza operaciones de inserción, borrado, actualización y ordenación.
5
+ *
6
+ * DIFICULTAD EXTRA (opcional):
7
+ * Crea una agenda de contactos por terminal.
8
+ * - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
9
+ * - Cada contacto debe tener un nombre y un número de teléfono.
10
+ * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
11
+ * los datos necesarios para llevarla a cabo.
12
+ * - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
13
+ * (o el número de dígitos que quieras)
14
+ * - También se debe proponer una operación de finalización del programa.
15
+ */
16
+
17
+ //OBJETO
18
+ interface Person {
19
+ names : string ;
20
+ age : number ;
21
+ }
22
+
23
+ let persona1 : Person = {
24
+ names : "Sebastian Rodriguez" ,
25
+ age : 33 ,
26
+ }
27
+
28
+ console . log ( persona1 )
29
+ console . log ( `La edad de ${ persona1 . names } es de ${ persona1 . age } años` )
30
+
31
+ interface Person { //insercion opcional directo en interface
32
+ city ?: string
33
+ }
34
+
35
+ persona1 . city = "Barranquilla"
36
+ console . log ( persona1 )
37
+ console . log ( `La edad de ${ persona1 . names } es de ${ persona1 . age } años y su ciudad es en ${ persona1 . city } ` )
38
+
39
+ persona1 . age = 34 //actualizacion
40
+ console . log ( `Cambiamos la edad de persona1, antes era 33 y ahora es: ${ persona1 . age } ` )
41
+
42
+ persona1 [ "hobby" ] = "Tocar la guitarra" // insercion directa
43
+ console . log ( persona1 )
44
+
45
+ delete persona1 . city //borre la propiedad city de persona1
46
+ console . log ( persona1 )
47
+
48
+
49
+ // ARRAY
50
+
51
+ const myArray : number [ ] = [ 1 , 2 , 3 , 4 , 5 ] // este es un array de numeros
52
+ console . log ( myArray )
53
+
54
+ myArray . push ( 6 ) //push se utiliza para agregar
55
+ console . log ( myArray )
56
+
57
+ const lastElement = myArray . pop ( ) //ELIMINA EL ULTIMO ELEMENTO DEL ARRAY
58
+ console . log ( lastElement )
59
+ console . log ( myArray )
60
+
61
+ const firstElement = myArray . shift ( ) // ELIMINA EL PRIMER ELEMENTO DEL ARRAY
62
+ console . log ( firstElement )
63
+ console . log ( myArray )
64
+
65
+ myArray . unshift ( 0 , 1 ) // AGREGA 1 O VARIOS ELEMENTOS AL COMIENZO DEL ARRAY
66
+ console . log ( myArray )
67
+
68
+ myArray . splice ( 1 , 0 , 10 ) //agrega un elemento en la posicion deseada
69
+ console . log ( myArray )
70
+
71
+ myArray . splice ( 1 , 1 ) // ELIMINA UN ELEMENTO EN LA POSICION DESEADA
72
+ console . log ( myArray )
73
+
74
+ myArray . sort ( ) // ORDENA EN EL ARRAY EN ORDEN ACENDENTE
75
+ console . log ( myArray )
76
+
77
+ myArray . reverse ( ) // INVIERTE EL ORDEN DE LOS ELEMENTOS
78
+ console . log ( myArray )
79
+
80
+ // CLASES = MAPS
81
+
82
+ const myMap = new Map < string , number > ( ) // CREACION DE CLASE
83
+
84
+ myMap . set ( "sebastian" , 30 ) //INSERCION CON .SET
85
+ myMap . set ( "laura" , 31 )
86
+ console . log ( myMap )
87
+
88
+ let laura = myMap . get ( "laura" ) // BUSQUEDA
89
+ console . log ( laura )
90
+
91
+ myMap . delete ( "laura" ) // ELIMINA UNA CLASE DEL MAP
92
+ console . log ( myMap )
93
+
94
+ // VERIFICA SI EXISTE LA CLASE
95
+ console . log ( myMap . has ( "sebastian" ) )
96
+ console . log ( myMap . has ( "laura" ) )
97
+
98
+ console . log ( myMap . size ) // CON SIZE PUEDO SABER EL TAMAÑO DEL MAP
99
+
100
+ // SET
101
+
102
+ const mySet = new Set < number > ( [ 1 , 2 , 3 , 4 , 5 ] )
103
+ console . log ( mySet )
104
+
105
+ mySet . add ( 6 ) // INSERCION
106
+ console . log ( mySet )
107
+ mySet . add ( 5 ) // NO ACEPTA DUPLICACIONES
108
+ console . log ( mySet )
109
+
110
+ mySet . delete ( 2 ) //BORRA
111
+ console . log ( mySet )
112
+
113
+ console . log ( mySet . has ( 2 ) ) // VERIFICA SI CONTIENE EL ELEMENTO Y DEVUELVE TRUE O FALSE
114
+ console . log ( mySet . has ( 4 ) ) // VERIFICA SI CONTIENE EL ELEMENTO Y DEVUELVE TRUE O FALSE
115
+
116
+ console . log ( mySet . size ) // MUESTRA EL TAMAÑO DE SET
117
+
118
+ mySet . clear ( ) // LIMPIA TODO EL SET
119
+ console . log ( mySet )
120
+ console . log ( mySet . size )
121
+
122
+ // EXTRA - AGENDA DE CONTACTOS
123
+
124
+ const readline = require ( "readline" ) !
125
+
126
+ const rl = readline . createInterface ( {
127
+ input : process . stdin ,
128
+ output : process . stdout
129
+ } )
130
+
131
+ const contactos = new Map < string , string > ( )
132
+
133
+ const addContact = ( ) => {
134
+ rl . question ( "Escriba su nombre: " , ( nombre :string ) => {
135
+ rl . question ( "Escriba su numero de celular: " , ( celular :string ) => {
136
+ const regex = / ^ \d { 1 , 9 } $ / ;
137
+ if ( contactos . has ( nombre ) ) {
138
+ console . log ( "El contacto ya existe" )
139
+ console . log ( "" )
140
+ addContact ( )
141
+ } else {
142
+ if ( ! regex . test ( celular ) ) {
143
+ contactos . set ( nombre , celular )
144
+ console . log ( "" )
145
+ console . log ( `Contacto nuevo: ${ nombre } : ${ contactos . get ( nombre ) } ` )
146
+ console . log ( "" )
147
+ console . log ( `Tienes "${ contactos . size } " contactos` )
148
+ console . log ( "" )
149
+ agenda ( )
150
+ } else {
151
+ console . log ( "esta errado" )
152
+ addContact ( )
153
+ }
154
+ }
155
+
156
+ } )
157
+ } )
158
+ }
159
+
160
+ const searchContacts = ( ) => {
161
+ rl . question ( "Escribe el nombre del contacto que deseas buscar: " , ( nombre : string ) => {
162
+ if ( contactos . has ( nombre ) ) {
163
+ console . log ( "" )
164
+ console . log ( `nombre: ${ nombre } ` )
165
+ console . log ( `telefono: ${ contactos . get ( nombre ) } ` )
166
+ console . log ( "" )
167
+ agenda ( )
168
+ } else {
169
+ console . log ( "el contacto no existe" )
170
+ agenda ( )
171
+ }
172
+ } )
173
+ }
174
+
175
+ const deleteContact = ( ) => {
176
+ console . table ( contactos )
177
+ console . log ( "" )
178
+ if ( contactos . size === 0 ) {
179
+ console . log ( "no hay contactos para eliminar" )
180
+ console . log ( "" )
181
+ agenda ( )
182
+ } else {
183
+ rl . question ( "Escriba el nombre del contacto que desea eliminar: " , ( nombre :string ) => {
184
+ let deleteContact = nombre
185
+ contactos . delete ( nombre )
186
+ console . log ( "" )
187
+ console . table ( contactos )
188
+ console . log ( "" )
189
+ console . log ( `Contacto "${ deleteContact } " eliminado` )
190
+ agenda ( )
191
+ } )
192
+ }
193
+ }
194
+
195
+ const replaceContact = ( ) => {
196
+ rl . question ( "Cual es el contacto que deseas reemplazar: " , ( nombre : string ) => {
197
+ let usuario : string = nombre
198
+ let telefono = contactos . get ( nombre )
199
+ console . log ( "" )
200
+ if ( contactos . has ( nombre ) ) {
201
+ console . log ( `${ usuario } : ${ telefono } ` )
202
+ console . log ( "" )
203
+ rl . question ( "que deseas reemplazar, nombre o telefono: " , ( opcion : string ) => {
204
+ if ( opcion === "nombre" ) {
205
+ contactos . delete ( nombre )
206
+ console . log ( "" )
207
+ rl . question ( "cual es el nuevo nombre: " , ( nuevoNombre : string ) => {
208
+ contactos . set ( nuevoNombre , telefono ! )
209
+ console . table ( contactos )
210
+ console . log ( "contacto reemplazado" )
211
+ console . log ( "" )
212
+ agenda ( )
213
+ } )
214
+ } else if ( opcion === "telefono" ) {
215
+ contactos . delete ( nombre )
216
+ console . log ( "" )
217
+ rl . question ( "cual es el nuevo telefono: " , ( nuevoTelefono : string ) => {
218
+ contactos . set ( usuario , nuevoTelefono )
219
+ console . table ( contactos )
220
+ console . log ( "contacto reemplazado" )
221
+ console . log ( "" )
222
+ agenda ( )
223
+ } )
224
+ }
225
+ } )
226
+ } else {
227
+ console . log ( `El contacto ${ nombre } no existe` )
228
+ console . log ( "" )
229
+ agenda ( )
230
+ }
231
+ } )
232
+ }
233
+
234
+ const viewContact = ( ) => {
235
+ console . table ( contactos )
236
+ console . log ( "" )
237
+ console . log ( `Total contactos: ${ contactos . size } ` )
238
+ console . log ( "" )
239
+ agenda ( )
240
+ }
241
+
242
+ const agenda = ( ) => {
243
+ console . log ( "BIENVENIDO A TU AGENDA DE CONTACTOS" )
244
+ console . log ( "" )
245
+ rl . question ( `Que deseas hacer ahora:
246
+ 1. Agregar contacto
247
+ 2. Buscar contacto
248
+ 3. Eliminar contacto
249
+ 4. Reemplazar contacto
250
+ 5. Mostrar contactos
251
+ 6. Salir
252
+
253
+ ` , ( numero :string ) => {
254
+ switch ( numero ) {
255
+ case "1" :
256
+ addContact ( )
257
+ break ;
258
+ case "2" :
259
+ searchContacts ( )
260
+ break
261
+ case "3" :
262
+ deleteContact ( )
263
+ break
264
+ case "4" :
265
+ replaceContact ( )
266
+ break
267
+ case "5" :
268
+ viewContact ( )
269
+ break
270
+ case "6" :
271
+ rl . close ( )
272
+ default :
273
+ break ;
274
+ }
275
+ } )
276
+ }
277
+
278
+ agenda ( )
0 commit comments