2999a commited on
Commit
a41ad04
verified
1 Parent(s): e61061a

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

This view is limited to 50 files because it contains too many changes. 聽 See raw diff
Files changed (50) hide show
  1. .gitattributes +13 -0
  2. subir/Curso de Control de Flujo en C/01-Bienvenida/01-Control de Flujo y Arrays en C IF WHILE FOR y m谩s.mp4 +3 -0
  3. subir/Curso de Control de Flujo en C/01-Bienvenida/01-Control de Flujo y Arrays en C IF WHILE FOR y m谩s.vtt +200 -0
  4. subir/Curso de Control de Flujo en C/01-Bienvenida/01-Lecturas recomendadas.txt +1 -0
  5. subir/Curso de Control de Flujo en C/01-Bienvenida/01-Resumen.html +0 -0
  6. subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Resumen.html +0 -0
  7. subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Uso del Condicional IF en Lenguaje C para Decisiones L贸gicas.mp4 +3 -0
  8. subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Uso del Condicional IF en Lenguaje C para Decisiones L贸gicas.vtt +401 -0
  9. subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-if_c58ef3ef-a775-44e3-a585-fbd6c1932976.c +9 -0
  10. subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Lecturas recomendadas.txt +1 -0
  11. subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.mp4 +3 -0
  12. subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.vtt +753 -0
  13. subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Resumen.html +0 -0
  14. subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-demoif_72993f29-e31b-4df7-8b00-add49844084a.c +17 -0
  15. subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-If anidados en C Creaci贸n de men煤s interactivos.mp4 +3 -0
  16. subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-If anidados en C Creaci贸n de men煤s interactivos.vtt +713 -0
  17. subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-Resumen.html +0 -0
  18. subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-nestedif_e6d6f354-6111-4e0b-9802-2aa3a6d9a99e.c +38 -0
  19. subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Estructura y uso del switch en programaci贸n en C.mp4 +3 -0
  20. subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Estructura y uso del switch en programaci贸n en C.vtt +866 -0
  21. subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Resumen.html +0 -0
  22. subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-switch_26ee0200-c773-4d19-a0d9-ba7fc5b5f686.c +40 -0
  23. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Bucle While en C Implementaci贸n y Ejemplos Pr谩cticos.mp4 +3 -0
  24. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Bucle While en C Implementaci贸n y Ejemplos Pr谩cticos.vtt +500 -0
  25. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Resumen.html +0 -0
  26. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-while_189ccca7-d3a5-4d0c-8408-4fc807afdccd.c +14 -0
  27. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Ciclos WHILE y DOWHILE en Programaci贸n.mp4 +3 -0
  28. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Ciclos WHILE y DOWHILE en Programaci贸n.vtt +490 -0
  29. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Resumen.html +0 -0
  30. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-dowhile_093e5362-d724-4dea-b1c3-7269ab208dd6.c +4 -0
  31. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Lecturas recomendadas.txt +3 -0
  32. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Resumen.html +0 -0
  33. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Uso del Ciclo FOR en Programaci贸n en C.mp4 +3 -0
  34. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Uso del Ciclo FOR en Programaci贸n en C.vtt +416 -0
  35. subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-for_53ab0088-8c9a-4daf-b43d-4b6b92f44274.c +12 -0
  36. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/01-Resumen.html +0 -0
  37. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/01-Uso de la Instrucci贸n Break en C.mp4 +3 -0
  38. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Resumen.html +0 -0
  39. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Uso del Continue en Bucles de Programaci贸n.mp4 +3 -0
  40. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Uso del Continue en Bucles de Programaci贸n.vtt +380 -0
  41. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-Uso seguro de GOTO en manejo de errores en C.mp4 +3 -0
  42. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-Uso seguro de GOTO en manejo de errores en C.vtt +371 -0
  43. subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-goto_f20fa5d7-3cec-42f3-ba42-44d528ccb729.c +15 -0
  44. subir/Curso de Control de Flujo en C/presentation.mhtml +0 -0
  45. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt +2 -0
  46. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Qu茅 es una red neuronal.mp4 +3 -0
  47. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Qu茅 es una red neuronal.vtt +763 -0
  48. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Resumen.html +0 -0
  49. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/03-C贸mo funcionan los LLMs.mp4 +3 -0
  50. subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/03-C贸mo funcionan los LLMs.vtt +928 -0
.gitattributes CHANGED
@@ -105,3 +105,16 @@ subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Inge
105
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/03-Videos[[:space:]]contenedores[[:space:]]codecs[[:space:]]y[[:space:]]protocolos.mp4 filter=lfs diff=lfs merge=lfs -text
106
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/04-C贸mo[[:space:]]Funciona[[:space:]]un[[:space:]]zip.mp4 filter=lfs diff=lfs merge=lfs -text
107
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/05-Introducci贸n[[:space:]]a[[:space:]]Blockchain[[:space:]]e[[:space:]]Inteligencia[[:space:]]Artificial/01-Arquitectura[[:space:]]y[[:space:]]funcionamiento[[:space:]]interno[[:space:]]de[[:space:]]Blockchain.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/03-Videos[[:space:]]contenedores[[:space:]]codecs[[:space:]]y[[:space:]]protocolos.mp4 filter=lfs diff=lfs merge=lfs -text
106
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/04-C贸mo[[:space:]]Funciona[[:space:]]un[[:space:]]zip.mp4 filter=lfs diff=lfs merge=lfs -text
107
  subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/05-Introducci贸n[[:space:]]a[[:space:]]Blockchain[[:space:]]e[[:space:]]Inteligencia[[:space:]]Artificial/01-Arquitectura[[:space:]]y[[:space:]]funcionamiento[[:space:]]interno[[:space:]]de[[:space:]]Blockchain.mp4 filter=lfs diff=lfs merge=lfs -text
108
+ subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/05-Introducci贸n[[:space:]]a[[:space:]]Blockchain[[:space:]]e[[:space:]]Inteligencia[[:space:]]Artificial/02-Qu茅[[:space:]]es[[:space:]]una[[:space:]]red[[:space:]]neuronal.mp4 filter=lfs diff=lfs merge=lfs -text
109
+ subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingenier铆a[[:space:]]de[[:space:]]Software/05-Introducci贸n[[:space:]]a[[:space:]]Blockchain[[:space:]]e[[:space:]]Inteligencia[[:space:]]Artificial/03-C贸mo[[:space:]]funcionan[[:space:]]los[[:space:]]LLMs.mp4 filter=lfs diff=lfs merge=lfs -text
110
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/01-Bienvenida/01-Control[[:space:]]de[[:space:]]Flujo[[:space:]]y[[:space:]]Arrays[[:space:]]en[[:space:]]C[[:space:]]IF[[:space:]]WHILE[[:space:]]FOR[[:space:]]y[[:space:]]m谩s.mp4 filter=lfs diff=lfs merge=lfs -text
111
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/02-Toma[[:space:]]de[[:space:]]decisiones/01-Uso[[:space:]]del[[:space:]]Condicional[[:space:]]IF[[:space:]]en[[:space:]]Lenguaje[[:space:]]C[[:space:]]para[[:space:]]Decisiones[[:space:]]L贸gicas.mp4 filter=lfs diff=lfs merge=lfs -text
112
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/02-Toma[[:space:]]de[[:space:]]decisiones/02-Manejo[[:space:]]de[[:space:]]Condicionales[[:space:]]IfElse[[:space:]]en[[:space:]]Lenguaje[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
113
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/02-Toma[[:space:]]de[[:space:]]decisiones/03-If[[:space:]]anidados[[:space:]]en[[:space:]]C[[:space:]]Creaci贸n[[:space:]]de[[:space:]]men煤s[[:space:]]interactivos.mp4 filter=lfs diff=lfs merge=lfs -text
114
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/02-Toma[[:space:]]de[[:space:]]decisiones/04-Estructura[[:space:]]y[[:space:]]uso[[:space:]]del[[:space:]]switch[[:space:]]en[[:space:]]programaci贸n[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
115
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/03-Control[[:space:]]de[[:space:]]Bucles[[:space:]]en[[:space:]]C/01-Bucle[[:space:]]While[[:space:]]en[[:space:]]C[[:space:]]Implementaci贸n[[:space:]]y[[:space:]]Ejemplos[[:space:]]Pr谩cticos.mp4 filter=lfs diff=lfs merge=lfs -text
116
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/03-Control[[:space:]]de[[:space:]]Bucles[[:space:]]en[[:space:]]C/02-Ciclos[[:space:]]WHILE[[:space:]]y[[:space:]]DOWHILE[[:space:]]en[[:space:]]Programaci贸n.mp4 filter=lfs diff=lfs merge=lfs -text
117
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/03-Control[[:space:]]de[[:space:]]Bucles[[:space:]]en[[:space:]]C/03-Uso[[:space:]]del[[:space:]]Ciclo[[:space:]]FOR[[:space:]]en[[:space:]]Programaci贸n[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
118
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/04-Uso[[:space:]]de[[:space:]]las[[:space:]]instrucciones[[:space:]]break[[:space:]]y[[:space:]]continue/01-Uso[[:space:]]de[[:space:]]la[[:space:]]Instrucci贸n[[:space:]]Break[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
119
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/04-Uso[[:space:]]de[[:space:]]las[[:space:]]instrucciones[[:space:]]break[[:space:]]y[[:space:]]continue/02-Uso[[:space:]]del[[:space:]]Continue[[:space:]]en[[:space:]]Bucles[[:space:]]de[[:space:]]Programaci贸n.mp4 filter=lfs diff=lfs merge=lfs -text
120
+ subir/Curso[[:space:]]de[[:space:]]Control[[:space:]]de[[:space:]]Flujo[[:space:]]en[[:space:]]C/04-Uso[[:space:]]de[[:space:]]las[[:space:]]instrucciones[[:space:]]break[[:space:]]y[[:space:]]continue/03-Uso[[:space:]]seguro[[:space:]]de[[:space:]]GOTO[[:space:]]en[[:space:]]manejo[[:space:]]de[[:space:]]errores[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
subir/Curso de Control de Flujo en C/01-Bienvenida/01-Control de Flujo y Arrays en C IF WHILE FOR y m谩s.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d66aa5b8a2552176103ed5d92ef993f31160595373ad88b46ea4472087f16d66
3
+ size 26753376
subir/Curso de Control de Flujo en C/01-Bienvenida/01-Control de Flujo y Arrays en C IF WHILE FOR y m谩s.vtt ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.320 --> 00:07.000
4
+ 隆Hey! Bienvenida o bienvenido
5
+ al curso de programaci贸n en C.
6
+
7
+ 00:07.000 --> 00:09.200
8
+ Si est谩s aqu铆 es porque ya viste
9
+ el curso anterior
10
+
11
+ 00:09.200 --> 00:12.000
12
+ en donde te ense帽aba las bases,
13
+ tipos de datos,
14
+
15
+ 00:12.000 --> 00:14.000
16
+ c贸mo ejecutar un programa en C,
17
+
18
+ 00:14.000 --> 00:17.700
19
+ c贸mo instalarlo en tu computadora Windows
20
+ o de sistema UNIX.
21
+
22
+ 00:17.700 --> 00:20.300
23
+ Tambi茅n te ense帽茅 c贸mo podr铆amos
24
+
25
+ 00:20.300 --> 00:22.400
26
+ nosotros trabajar la estructura general
27
+ de un programa
28
+
29
+ 00:22.400 --> 00:25.800
30
+ y c贸mo utilizar las funciones m谩s
31
+ importantes de C,
32
+
33
+ 00:25.800 --> 00:28.800
34
+ una de las funciones
35
+ m谩s importantes como es Print.
36
+
37
+ 00:28.800 --> 00:30.800
38
+ Luego, en este curso ya vamos a entrar
39
+
40
+ 00:30.800 --> 00:33.000
41
+ en la carne del lenguaje de programaci贸n.
42
+
43
+ 00:33.000 --> 00:35.600
44
+ Ya est谩s preparada o preparado
45
+ para entender
46
+
47
+ 00:35.600 --> 00:38.000
48
+ c贸mo se maneja el flujo en un programa,
49
+
50
+ 00:38.000 --> 00:40.700
51
+ c贸mo se maneja
52
+ la toma de decisiones en un programa,
53
+
54
+ 00:40.700 --> 00:42.500
55
+ por ejemplo, con la instrucci贸n IF,
56
+
57
+ 00:42.500 --> 00:46.600
58
+ c贸mo se manejan los bucles o loops en C
59
+
60
+ 00:46.600 --> 00:48.800
61
+ con la instrucci贸n WHILE,
62
+ con la instrucci贸n DO WHILE,
63
+
64
+ 00:48.800 --> 00:50.300
65
+ con las instrucciones FOR.
66
+
67
+ 00:50.300 --> 00:54.000
68
+ Vamos a aprender tambi茅n a detalle
69
+ c贸mo utilizar el BREAK
70
+
71
+ 00:54.000 --> 00:57.400
72
+ para que sepas en d贸nde entra
73
+ este important铆simo
74
+
75
+ 00:57.400 --> 01:00.500
76
+ comando de control de flujo
77
+ en tu programa.
78
+
79
+ 01:00.500 --> 01:03.400
80
+ Tambi茅n vamos a ver
81
+ una de las estructuras de datos
82
+
83
+ 01:03.400 --> 01:05.900
84
+ m谩s utilizadas en C, que es el Array.
85
+
86
+ 01:05.900 --> 01:07.900
87
+ Vamos a aprender
88
+ a almacenar datos en Array,
89
+
90
+ 01:07.900 --> 01:09.900
91
+ leer datos en un Array y m谩s.
92
+
93
+ 01:09.900 --> 01:11.900
94
+ Y luego, bueno, ya sabes,
95
+
96
+ 01:11.900 --> 01:14.600
97
+ estamos dividiendo todos los cursos
98
+ de lenguajes de programaci贸n
99
+
100
+ 01:14.600 --> 01:16.500
101
+ porque un lenguaje de programaci贸n
102
+
103
+ 01:16.500 --> 01:18.700
104
+ no cabe en un solo curso
105
+ y queremos que tengas
106
+
107
+ 01:18.700 --> 01:22.200
108
+ la facilidad de irlos consultando
109
+ poco a poco,
110
+
111
+ 01:22.200 --> 01:25.400
112
+ paso a paso
113
+ y aprendi茅ndolos curso a curso.
114
+
115
+ 01:25.400 --> 01:27.900
116
+ Por eso tendremos m谩s de dos cursos de C.
117
+
118
+ 01:27.900 --> 01:30.200
119
+ La idea es sacar cuatro inicialmente,
120
+
121
+ 01:30.200 --> 01:32.400
122
+ en donde el siguiente ser铆an
123
+ funcionalidades
124
+
125
+ 01:32.400 --> 01:33.800
126
+ m谩s avanzadas del lenguaje
127
+
128
+ 01:33.800 --> 01:37.300
129
+ y luego llegar铆amos a la parte de manejo
130
+ de memoria,
131
+
132
+ 01:37.300 --> 01:39.300
133
+ todo lo que tiene que ver con punteros
134
+
135
+ 01:39.300 --> 01:41.700
136
+ o manejo din谩mico de la memoria
137
+
138
+ 01:41.700 --> 01:44.000
139
+ en programas en el lenguaje C.
140
+
141
+ 01:45.000 --> 01:47.300
142
+ Con esto dicho, quiero aprovechar
143
+ a presentarme.
144
+
145
+ 01:47.300 --> 01:50.300
146
+ Yo soy Ricardo Celis,
147
+ soy profesor en Platzi,
148
+
149
+ 01:50.300 --> 01:53.500
150
+ soy tambi茅n miembro
151
+ de todo lo que tiene que ver
152
+
153
+ 01:53.500 --> 01:56.000
154
+ con la ejecuci贸n y planeaci贸n de cursos.
155
+
156
+ 01:56.000 --> 01:58.400
157
+ Estoy dirigiendo la ejecuci贸n
158
+ y planeaci贸n de cursos
159
+
160
+ 01:58.400 --> 01:59.900
161
+ de desarrollo de software
162
+
163
+ 01:59.900 --> 02:01.900
164
+ y todo lo que tiene que ver en esta 谩rea.
165
+
166
+ 02:01.900 --> 02:04.500
167
+ As铆 que, bueno, estoy muy feliz de estar
168
+ aqu铆 contigo.
169
+
170
+ 02:04.500 --> 02:06.300
171
+ Por favor, si tienes alguna duda,
172
+
173
+ 02:06.300 --> 02:09.400
174
+ escr铆beme a mi Twitter, es @celismx.
175
+
176
+ 02:09.400 --> 02:11.600
177
+ Cu茅ntame, profe, empec茅 su curso de C,
178
+
179
+ 02:11.600 --> 02:13.500
180
+ estoy emocionada, estoy emocionado.
181
+
182
+ 02:13.500 --> 02:15.200
183
+ Y ah铆 yo estar茅 muy pendiente de darte
184
+
185
+ 02:15.200 --> 02:17.200
186
+ el seguimiento que te mereces.
187
+
188
+ 02:17.200 --> 02:19.300
189
+ Todas tus dudas
190
+ me las puedes mandar por ah铆.
191
+
192
+ 02:19.300 --> 02:22.100
193
+ Y sin m谩s,
194
+ quiero darte la bienvenida
195
+
196
+ 02:22.100 --> 02:23.900
197
+ y gracias por estar aqu铆 en este curso.
198
+
199
+ 02:23.900 --> 02:29.900
200
+ Nos vemos en la pr贸xima clase.
subir/Curso de Control de Flujo en C/01-Bienvenida/01-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://platzi.com/clases/lenguaje-c/
subir/Curso de Control de Flujo en C/01-Bienvenida/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Uso del Condicional IF en Lenguaje C para Decisiones L贸gicas.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8cde56be962660871a214868be340af537938873157058e62bc0d961c2e4ff0
3
+ size 63090949
subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Uso del Condicional IF en Lenguaje C para Decisiones L贸gicas.vtt ADDED
@@ -0,0 +1,401 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.193 --> 00:06.899
4
+ En esta clase te voy a ense帽ar
5
+ c贸mo utilizar el condicional IF
6
+
7
+ 00:07.025 --> 00:09.320
8
+ para tomar decisiones en tu c贸digo.
9
+
10
+ 00:09.836 --> 00:12.642
11
+ Nos vamos, lo primero, igual,
12
+ antes de entrar directamente en IF,
13
+
14
+ 00:12.768 --> 00:15.129
15
+ es que quiero dejarte claro qu茅 es
16
+
17
+ 00:15.254 --> 00:18.320
18
+ un statement en C
19
+ y qu茅 es un bloque de c贸digo.
20
+
21
+ 00:18.625 --> 00:23.640
22
+ Un statement es, por ejemplo, cuando
23
+ nosotros declaramos una simple variable,
24
+
25
+ 00:23.640 --> 00:26.167
26
+ o cuando nosotros imprimimos algo.
27
+
28
+ 00:26.413 --> 00:29.390
29
+ Digamos printf, hello world, esta l铆nea,
30
+
31
+ 00:30.690 --> 00:34.501
32
+ a esta sola l铆nea de c贸digo
33
+ que se encarga de imprimir algo,
34
+
35
+ 00:34.627 --> 00:39.560
36
+ se le conoce como statement
37
+ o una l铆nea de c贸digo.
38
+
39
+ 00:39.560 --> 00:42.007
40
+ Ve谩moslo como la unidad de c贸digo en C.
41
+
42
+ 00:42.133 --> 00:45.000
43
+ Una l铆nea que cierra con punto y coma.
44
+
45
+ 00:45.303 --> 00:47.160
46
+ Por eso es tan importante el punto y coma,
47
+
48
+ 00:47.160 --> 00:53.665
49
+ es la instrucci贸n que es el caracter
50
+ que cierra o termina statements.
51
+
52
+ 00:53.885 --> 00:56.960
53
+ Mira, aqu铆 en nuestros programas nosotros
54
+ tenemos much铆simos statements.
55
+
56
+ 00:56.960 --> 00:59.591
57
+ Por ejemplo, aqu铆 hay uno, aqu铆 hay otro.
58
+
59
+ 00:59.717 --> 01:04.200
60
+ Vamos a ponerlos ac谩 para el ejemplo
61
+ de lo que es un statement.
62
+
63
+ 01:04.773 --> 01:06.760
64
+ Todo esto es un statement.
65
+
66
+ 01:07.424 --> 01:11.320
67
+ Pero en C no solo vamos a tener l铆neas
68
+ de c贸digo individuales,
69
+
70
+ 01:11.320 --> 01:16.000
71
+ tambi茅n podemos tener bloques
72
+ o grupos de statements y o declaraciones.
73
+
74
+ 01:16.379 --> 01:21.440
75
+ Estos grupos siempre van a estar definidos
76
+ por estas llaves y ser铆an as铆.
77
+
78
+ 01:23.055 --> 01:29.440
79
+ Podemos copiar este c贸digo que tenemos
80
+ arriba y pegarlo aqu铆 adentro.
81
+
82
+ 01:30.507 --> 01:32.421
83
+ Muy bien, todo bonito.
84
+
85
+ 01:32.864 --> 01:37.043
86
+ Vamos a identar, ya sabes, contabulador
87
+ identas, para que se vea bien.
88
+
89
+ 01:37.169 --> 01:39.918
90
+ Y con esto lo que estamos diciendo
91
+
92
+ 01:40.043 --> 01:43.400
93
+ es que estas tres l铆neas de c贸digo
94
+ o estos tres statements
95
+
96
+ 01:43.400 --> 01:46.840
97
+ se juntan para formar un bloque de c贸digo.
98
+
99
+ 01:47.535 --> 01:51.139
100
+ Entonces tenemos statements,
101
+ que son las l铆neas de c贸digo individuales,
102
+
103
+ 01:51.265 --> 01:56.401
104
+ y bloques que van a estar contenidos
105
+ por nuestros bracers o corchetes.
106
+
107
+ 01:57.194 --> 02:02.120
108
+ Con esto ya sabes que vamos a tener
109
+ statements o vamos a tener bloques.
110
+
111
+ 02:02.508 --> 02:05.132
112
+ Los statements son
113
+ simples unidadesde c贸digo,
114
+
115
+ 02:05.258 --> 02:06.669
116
+ la unidad b谩sica de c贸digo,
117
+
118
+ 02:06.795 --> 02:10.920
119
+ y los bloques son conjuntos de statements.
120
+
121
+ 02:10.920 --> 02:13.520
122
+ Pueden tener dos o m谩s, idealmente.
123
+
124
+ 02:13.520 --> 02:16.567
125
+ No tiene sentido que hagas un bloque
126
+ para una sola l铆nea de c贸digo.
127
+
128
+ 02:16.693 --> 02:19.560
129
+ Entonces vamos a tener dos
130
+ o m谩s statements aqu铆 dentro.
131
+
132
+ 02:19.686 --> 02:23.869
133
+ Y sint谩cticamente,
134
+ para nuestro compilador,
135
+
136
+ 02:23.995 --> 02:27.101
137
+ esto se tomar铆a como una unidad de c贸digo.
138
+
139
+ 02:27.227 --> 02:31.036
140
+ O sea, cuando entra aqu铆, no se va a salir
141
+
142
+ 02:31.162 --> 02:34.306
143
+ a menos que se lo pidamos expl铆citamente.
144
+
145
+ 02:34.432 --> 02:38.449
146
+ Pero eso lo veremos m谩s adelante cuando
147
+ estudiemos el comando break.
148
+
149
+ 02:38.589 --> 02:43.046
150
+ Con esto dicho, v谩monos a la explicaci贸n
151
+ de nuestro if.
152
+
153
+ 02:44.729 --> 02:47.007
154
+ Lo primero que quiero
155
+ que veas es que tengo aqu铆
156
+
157
+ 02:47.133 --> 02:49.200
158
+ una peque帽a estructura
159
+ ya previamente escrita.
160
+
161
+ 02:49.200 --> 02:51.503
162
+ No te preocupes,
163
+ el c贸digo lo haremos en vivo.
164
+
165
+ 02:51.629 --> 02:54.560
166
+ Pero quiero explicarte c贸mo funciona
167
+ r谩pidamente esto.
168
+
169
+ 02:55.067 --> 02:58.023
170
+ El if funciona a trav茅s de expresiones.
171
+
172
+ 02:58.149 --> 03:02.633
173
+ Vamos a tener que, si esta expresi贸n
174
+ es verdadera,
175
+
176
+ 03:02.759 --> 03:08.040
177
+ entonces debemos ejecutar todo el c贸digo
178
+ que tengamos en nuestro bloque.
179
+
180
+ 03:08.707 --> 03:13.207
181
+ Si, adem谩s, si no es verdadero esto,
182
+
183
+ 03:13.967 --> 03:17.006
184
+ o si esta expresi贸n s铆 es verdadera,
185
+
186
+ 03:17.132 --> 03:21.196
187
+ entonces ejecutamos este c贸digo,
188
+ que ser铆an otros statements.
189
+
190
+ 03:21.616 --> 03:25.493
191
+ Y por 煤ltimo, si ninguna de las opciones
192
+ es verdadera,
193
+
194
+ 03:25.759 --> 03:28.680
195
+ entonces ejecutamos esta l铆nea de c贸digo.
196
+
197
+ 03:28.909 --> 03:32.882
198
+ Y aqu铆 quiero dejarte la primera buena
199
+ pr谩ctica del lenguaje C.
200
+
201
+ 03:33.008 --> 03:39.640
202
+ Cuando t煤 tengas un solo statement,
203
+ no necesitas escribir nuestras llaves.
204
+
205
+ 03:39.922 --> 03:42.319
206
+ No necesitas escribir esas llaves.
207
+
208
+ 03:42.452 --> 03:44.925
209
+ Simple y sencillamente puedes dejarlo as铆.
210
+
211
+ 03:46.312 --> 03:48.978
212
+ Y con esto el compilador sabe
213
+
214
+ 03:49.103 --> 03:53.852
215
+ que la primera instrucci贸n
216
+ despu茅s de un if
217
+
218
+ 03:53.978 --> 03:57.520
219
+ va a ser perteneciente
220
+ a ese if por default.
221
+
222
+ 03:57.661 --> 04:02.200
223
+ Eso quiere decir que para una sola l铆nea
224
+ de c贸digo no necesitamos crear bloques.
225
+
226
+ 04:02.609 --> 04:05.680
227
+ Esto est谩 correcto y no deber铆as tener
228
+ miedo al escribirlo.
229
+
230
+ 04:05.680 --> 04:06.972
231
+ Simplemente hazlo.
232
+
233
+ 04:07.098 --> 04:08.683
234
+ Yo te cuento aqu铆 una peque帽a an茅cdota,
235
+
236
+ 04:08.722 --> 04:11.413
237
+ que cuando yo empec茅 a programar
238
+ en el lenguaje C,
239
+
240
+ 04:11.539 --> 04:14.480
241
+ a m铆 me daba miedo
242
+ que no tuviera las llaves.
243
+
244
+ 04:14.480 --> 04:18.127
245
+ Y que entonces el compilador no lo fuera
246
+ a detectar como que pertenec铆a a ese if.
247
+
248
+ 04:18.253 --> 04:20.040
249
+ Y no me arriesgaba y le pon铆a las llaves.
250
+
251
+ 04:20.166 --> 04:22.520
252
+ Obviamente luego
253
+ uno aprende el est谩ndar de C.
254
+
255
+ 04:22.520 --> 04:24.545
256
+ Y eso que yo hac铆a estaba muy mal,
257
+
258
+ 04:24.671 --> 04:27.331
259
+ porque estaba escribiendo
260
+ l铆neas de c贸digo innecesarias.
261
+
262
+ 04:27.457 --> 04:32.080
263
+ Ahora, esto entonces es correcto si tienes
264
+ dos o m谩s instrucciones o statements.
265
+
266
+ 04:32.080 --> 04:35.680
267
+ Y esto es correcto para cuando tienes
268
+ una sola instrucci贸n.
269
+
270
+ 04:36.116 --> 04:40.393
271
+ Aqu铆 tenemos ya nuestra construcci贸n
272
+ que ser铆a el if, su else y un else if.
273
+
274
+ 04:40.519 --> 04:43.440
275
+ Los else if t煤 puedes poner tantos
276
+ como quieras.
277
+
278
+ 04:44.385 --> 04:48.046
279
+ Quiero que te quede s煤per claro que puedes
280
+ usar tantos else if
281
+
282
+ 04:48.172 --> 04:50.080
283
+ como lo necesites en tu c贸digo,
284
+
285
+ 04:50.206 --> 04:54.000
286
+ para cada una de las situaciones
287
+ que se van a presentar en tu programa.
288
+
289
+ 04:54.532 --> 04:57.369
290
+ Lo primero entonces ser铆a simplemente
291
+ dejar esto claro.
292
+
293
+ 04:57.495 --> 05:01.640
294
+ Ser铆a expression3, expression4
295
+ y expression5 o statement5.
296
+
297
+ 05:02.252 --> 05:06.343
298
+ Aqu铆 podemos poner tantos else if
299
+ como tu situaci贸n lo requiera.
300
+
301
+ 05:06.469 --> 05:10.847
302
+ Toma en cuenta que igual el primero
303
+ en donde se cumpla la expresi贸n
304
+
305
+ 05:10.873 --> 05:12.060
306
+ es donde va a entrar.
307
+
308
+ 05:12.086 --> 05:13.429
309
+ Y eso es bien importante.
310
+
311
+ 05:13.555 --> 05:17.130
312
+ Si t煤 tienes aqu铆 una expresi贸n
313
+ que ya se cumple en este,
314
+
315
+ 05:17.256 --> 05:20.047
316
+ tu c贸digo nunca va a llegar al statement4.
317
+
318
+ 05:20.173 --> 05:21.993
319
+ Nunca en la vida va a llegar,
320
+
321
+ 05:22.119 --> 05:23.305
322
+ porque esto se es...
323
+
324
+ 05:23.431 --> 05:26.080
325
+ Recuerda que estamos hablando
326
+ de programaci贸n estructurada
327
+
328
+ 05:26.206 --> 05:29.218
329
+ y se ejecuta
330
+ de la primera l铆nea a la 煤ltima.
331
+
332
+ 05:29.344 --> 05:32.552
333
+ Entonces, si esta expresi贸n
334
+ fuera verdadera,
335
+
336
+ 05:32.678 --> 05:36.323
337
+ en todos los casos que son similares
338
+ a tus otros else if,
339
+
340
+ 05:36.449 --> 05:39.885
341
+ entonces nunca entrar铆a
342
+ a estas condiciones.
343
+
344
+ 05:40.011 --> 05:43.920
345
+ Tienes que tener mucho cuidado en pensar
346
+ c贸mo estructuras esto.
347
+
348
+ 05:44.144 --> 05:46.800
349
+ Justo vamos a ver ese ejemplo
350
+ en la siguiente clase.
351
+
352
+ 05:47.547 --> 05:50.886
353
+ Con esto dicho, ya nada m谩s te quiero
354
+ decir que esto else if
355
+
356
+ 05:51.012 --> 05:54.283
357
+ es una construcci贸n que no tiene l铆mites
358
+
359
+ 05:54.409 --> 05:56.483
360
+ en cuesti贸n de cu谩ntos else if
361
+ puedes tener,
362
+
363
+ 05:56.609 --> 06:01.334
364
+ y que la instrucci贸n if b谩sica es esta,
365
+ un if y un else.
366
+
367
+ 06:01.460 --> 06:05.445
368
+ Esta es la m谩s as铆 utilizada
369
+ para tomar simplemente
370
+
371
+ 06:05.571 --> 06:08.960
372
+ si esto se est谩 cumpliendo, lo ejecutas,
373
+ y si no, el programa sigue.
374
+
375
+ 06:09.212 --> 06:11.040
376
+ O, y si no, ejecutas esto u otro.
377
+
378
+ 06:11.376 --> 06:14.122
379
+ Esa es la instrucci贸n m谩s b谩sica
380
+ que existe en C.
381
+
382
+ 06:14.248 --> 06:16.881
383
+ Siempre tienes que usarla de esta manera,
384
+ if else,
385
+
386
+ 06:17.007 --> 06:20.376
387
+ y la 煤ltima ser铆a if, else if,
388
+
389
+ 06:20.502 --> 06:22.720
390
+ esa ya se conoce como una construcci贸n.
391
+
392
+ 06:23.166 --> 06:25.359
393
+ Con esto dicho,
394
+ nos vemos en la pr贸xima clase,
395
+
396
+ 06:25.485 --> 06:29.360
397
+ en donde haremos un ejemplo
398
+ de c贸mo utilizar estas sentencias.
399
+
400
+ 06:29.766 --> 06:35.360
401
+ Nos vemos all谩.
subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-if_c58ef3ef-a775-44e3-a585-fbd6c1932976.c ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ if (expresion){
2
+ statement1
3
+ statement1.1
4
+ statement1.2
5
+ }
6
+ else if (expresion)
7
+ statement2
8
+ else
9
+ statement5
subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://en.cppreference.com/w/c/language/operator_logical
subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5426504d2d0f76c85823002a6a2883c411cb5488949cf6981eb31e780e17ff26
3
+ size 119910789
subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.vtt ADDED
@@ -0,0 +1,753 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.226 --> 00:07.400
4
+ Bueno, vamos a nuestro editor de c贸digo
5
+ y comencemos a escribir nuestro ejemplo.
6
+
7
+ 00:07.400 --> 00:12.960
8
+ Lo primero que vamos a hacer es guardar
9
+ este archivo como demoif.c.
10
+
11
+ 00:12.960 --> 00:15.440
12
+ Ya lo tenemos todo listo.
13
+
14
+ 00:15.440 --> 00:19.720
15
+ T煤 sabes, tenemos que incluir
16
+ nuestra bell铆sima librer铆a de print,
17
+
18
+ 00:19.720 --> 00:21.920
19
+ que nos sirve much铆simo para los ejemplos.
20
+
21
+ 00:21.920 --> 00:23.280
22
+ Vamos a ponerle...
23
+
24
+ 00:23.280 --> 00:28.360
25
+ Vamos a ponerle standard.io,
26
+ que es la librer铆a en donde est谩 el print.
27
+
28
+ 00:28.360 --> 00:30.360
29
+ Vamos a poner include.
30
+
31
+ 00:30.360 --> 00:36.040
32
+ Vamos a llamar stdio.h, que es set
33
+ de nuestras librer铆as est谩ndares.
34
+
35
+ 00:36.040 --> 00:37.040
36
+ Muy bien.
37
+
38
+ 00:37.040 --> 00:39.040
39
+ Ahora, 驴qu茅 m谩s vamos a necesitar?
40
+
41
+ 00:39.040 --> 00:42.360
42
+ Recuerda nuestro boilerplate
43
+ o nuestro demo de C.
44
+
45
+ 00:42.360 --> 00:46.360
46
+ Vamos a necesitar el main,
47
+ as铆 que lo voy a copiar de aqu铆.
48
+
49
+ 00:46.360 --> 00:50.360
50
+ Y vamos a nuestro demoif.
51
+
52
+ 00:50.360 --> 00:51.360
53
+ Eso es todo.
54
+
55
+ 00:51.360 --> 00:54.298
56
+ Ahora, lo primero
57
+ que quiero hacer es ense帽arte
58
+
59
+ 00:54.423 --> 00:57.360
60
+ un poquito sobre
61
+ los operadores de comparaci贸n.
62
+
63
+ 00:57.360 --> 01:01.360
64
+ Vamos a tener que if,
65
+ esta es nuestra instrucci贸n principal,
66
+
67
+ 01:01.360 --> 01:03.360
68
+ pero luego entra la expresi贸n.
69
+
70
+ 01:03.360 --> 01:08.360
71
+ Vamos a decirle si n de n煤mero
72
+ es mayor que 10,
73
+
74
+ 01:08.360 --> 01:10.360
75
+ entonces imprima...
76
+
77
+ 01:12.360 --> 01:15.360
78
+ Entonces imprima, vamos a decir,
79
+
80
+ 01:16.360 --> 01:17.360
81
+ el n煤mero...
82
+
83
+ 01:20.360 --> 01:21.360
84
+ el n煤mero...
85
+
86
+ 01:21.360 --> 01:26.360
87
+ el n煤mero es mayor que 10.
88
+
89
+ 01:27.360 --> 01:36.360
90
+ Pero que si n es igual a 10,
91
+
92
+ 01:36.360 --> 01:38.360
93
+ entonces imprima...
94
+
95
+ 01:40.360 --> 01:42.360
96
+ vamos a imprimir...
97
+
98
+ 01:43.360 --> 01:46.360
99
+ el n煤mero es 10.
100
+
101
+ 01:48.360 --> 01:50.360
102
+ Perfecto. Bell铆simo.
103
+
104
+ 01:50.360 --> 01:53.360
105
+ Y luego vamos a tener otro else if,
106
+
107
+ 01:54.360 --> 01:57.360
108
+ que diga si el n煤mero...
109
+
110
+ 01:59.360 --> 02:02.360
111
+ es mayor que 20.
112
+
113
+ 02:05.360 --> 02:07.360
114
+ Ah, no, pero esto es
115
+ lo que voy a imprimir.
116
+
117
+ 02:07.360 --> 02:09.360
118
+ Bueno, vamos con nuestra expresi贸n.
119
+
120
+ 02:09.360 --> 02:12.360
121
+ Igual aprovecho y le dejo su print,
122
+ todo bello.
123
+
124
+ 02:12.360 --> 02:13.360
125
+ Punto y coma.
126
+
127
+ 02:13.360 --> 02:20.360
128
+ Vamos aqu铆 arriba y ponemos sencillamente
129
+ n mayor que 20.
130
+
131
+ 02:20.360 --> 02:21.360
132
+ Muy bien.
133
+
134
+ 02:22.360 --> 02:25.360
135
+ Y por 煤ltimo, else if,
136
+
137
+ 02:27.360 --> 02:34.360
138
+ vamos a ponerle aqu铆 un n es menor que 10.
139
+
140
+ 02:34.360 --> 02:47.360
141
+ El n煤mero, vamos a imprimir,
142
+ el n煤mero es menor que 10.
143
+
144
+ 02:47.360 --> 02:48.360
145
+ Excelente.
146
+
147
+ 02:48.360 --> 02:52.360
148
+ Ahora, obviamente,
149
+ tenemos que declarar el famoso n煤mero,
150
+
151
+ 02:52.360 --> 02:55.360
152
+ y para esto vamos a crear
153
+ una variable que se llame n.
154
+
155
+ 02:55.360 --> 02:58.360
156
+ Vamos a declarar nuestra variable,
157
+
158
+ 02:59.360 --> 03:01.360
159
+ va a ser de tipo entero, n,
160
+
161
+ 03:01.360 --> 03:06.360
162
+ y vamos a inicializarla primero en, no s茅,
163
+
164
+ 03:06.360 --> 03:08.360
165
+ vamos a ponerle 11.
166
+
167
+ 03:08.360 --> 03:09.360
168
+ Muy bien.
169
+
170
+ 03:09.360 --> 03:10.360
171
+ Punto y coma.
172
+
173
+ 03:11.360 --> 03:12.360
174
+ Y guardamos.
175
+
176
+ 03:13.360 --> 03:14.360
177
+ Vamos a ejecutar nuestro c贸digo.
178
+
179
+ 03:14.360 --> 03:17.360
180
+ Recuerda que para ejecutar el c贸digo...
181
+
182
+ 03:17.360 --> 03:19.360
183
+ Ah, nos falta un else.
184
+
185
+ 03:20.360 --> 03:21.360
186
+ Else, error.
187
+
188
+ 03:23.360 --> 03:25.360
189
+ No hay n煤mero.
190
+
191
+ 03:26.360 --> 03:28.360
192
+ Else, entonces vamos a print.
193
+
194
+ 03:28.360 --> 03:29.360
195
+ Error.
196
+
197
+ 03:31.360 --> 03:34.360
198
+ Error, no hay n煤mero.
199
+
200
+ 03:34.360 --> 03:35.360
201
+ Muy bien.
202
+
203
+ 03:35.360 --> 03:37.360
204
+ Ahora s铆 tenemos todo list铆simo.
205
+
206
+ 03:38.360 --> 03:39.360
207
+ Vamos a guardar nuestro c贸digo,
208
+
209
+ 03:39.360 --> 03:40.360
210
+ control s,
211
+
212
+ 03:40.360 --> 03:43.360
213
+ y recuerda que con f6
214
+ compilamos nuestro programa.
215
+
216
+ 03:44.360 --> 03:46.360
217
+ Si t煤 est谩s trabajando en una laptop,
218
+
219
+ 03:46.360 --> 03:48.360
220
+ lo m谩s probable es que tengas
221
+ que presionar function,
222
+
223
+ 03:48.360 --> 03:51.360
224
+ que es el botoncito fn, y luego f6.
225
+
226
+ 03:51.360 --> 03:53.360
227
+ Esperamos a que esto termine de cargar.
228
+
229
+ 03:54.360 --> 03:55.360
230
+ Se est谩 demorando un poco.
231
+
232
+ 03:55.360 --> 03:58.360
233
+ Vamos a ver si s铆 se presion贸 f6.
234
+
235
+ 04:06.360 --> 04:07.360
236
+ Ah, ok.
237
+
238
+ 04:07.360 --> 04:08.360
239
+ Y aqu铆 tenemos un error.
240
+
241
+ 04:08.360 --> 04:10.360
242
+ Dice que esperaba un punto y coma.
243
+
244
+ 04:10.360 --> 04:12.360
245
+ Recuerda que yo ya te ense帽茅
246
+ c贸mo debuguear.
247
+
248
+ 04:12.360 --> 04:15.360
249
+ V谩monos a la l铆nea de c贸digo
250
+ que nos est谩 indicando.
251
+
252
+ 04:15.360 --> 04:17.360
253
+ Y nos dice, oye, el error est谩 en el else.
254
+
255
+ 04:17.360 --> 04:18.360
256
+ Y yo ya te di el tip.
257
+
258
+ 04:18.360 --> 04:20.360
259
+ Siempre el error est谩 un punto y coma.
260
+
261
+ 04:20.360 --> 04:22.360
262
+ Y nos dice, oye, el error est谩 en el else.
263
+
264
+ 04:22.360 --> 04:26.360
265
+ Y yo ya te di el tip, siempre el error
266
+ est谩 una instrucci贸n antes
267
+
268
+ 04:26.360 --> 04:29.360
269
+ a la que te marca el debugger,
270
+ el compilador.
271
+
272
+ 04:29.360 --> 04:31.360
273
+ Entonces vamos a poner aqu铆 punto y coma,
274
+
275
+ 04:31.360 --> 04:36.360
276
+ guardamos,
277
+ y vamos a presionar function, f6,
278
+
279
+ 04:36.360 --> 04:37.360
280
+ si est谩s en un laptop,
281
+
282
+ 04:37.360 --> 04:40.360
283
+ y si no, simplemente
284
+ f6 para correr el c贸digo.
285
+
286
+ 04:41.360 --> 04:44.360
287
+ Ya, 11 dice, el n煤mero es mayor que 10.
288
+
289
+ 04:44.360 --> 04:46.360
290
+ Excelente. Esto est谩 muy bien.
291
+
292
+ 04:46.360 --> 04:49.360
293
+ Ahora veamos qu茅 pasa cuando
294
+ nuestro n煤mero es 10.
295
+
296
+ 04:49.360 --> 04:52.360
297
+ Mira que voy a ir checando instrucci贸n
298
+ por instrucci贸n,
299
+
300
+ 04:52.360 --> 04:55.360
301
+ expresi贸n por expresi贸n
302
+ que se est茅 cumpliendo.
303
+
304
+ 04:55.360 --> 04:58.360
305
+ Y todo, obviamente, porque te quiero
306
+ ense帽ar algo bien importante aqu铆.
307
+
308
+ 04:58.360 --> 05:01.360
309
+ Vamos a poner otra vez a compilar
310
+ nuestro programa
311
+
312
+ 05:01.360 --> 05:03.360
313
+ y vamos a esperar su salida.
314
+
315
+ 05:03.360 --> 05:06.360
316
+ Excelente. Nos dice, el n煤mero es 10.
317
+
318
+ 05:06.360 --> 05:08.360
319
+ Entonces todo est谩 funcionando.
320
+
321
+ 05:08.360 --> 05:11.360
322
+ Ahora, si n es mayor que 20.
323
+
324
+ 05:11.360 --> 05:13.360
325
+ Bell铆simo. Entonces pongamos 21.
326
+
327
+ 05:14.360 --> 05:17.360
328
+ 21. Como mi edad.
329
+
330
+ 05:17.360 --> 05:20.360
331
+ Control S y luego compilamos el programa.
332
+
333
+ 05:20.360 --> 05:23.360
334
+ Fnf6. Vamos a ver qu茅 pasa.
335
+
336
+ 05:25.360 --> 05:27.360
337
+ Uy, uy, uy. Esto est谩 grave.
338
+
339
+ 05:27.360 --> 05:29.360
340
+ Dice, el n煤mero es mayor que 10.
341
+
342
+ 05:29.360 --> 05:30.360
343
+ 驴Qu茅 est谩 pasando?
344
+
345
+ 05:30.360 --> 05:34.360
346
+ Ah, bueno, quer铆a que vieras
347
+ lo que te coment茅 en la clase anterior.
348
+
349
+ 05:34.360 --> 05:38.360
350
+ Las instrucciones tienen
351
+ que estar bien pensadas.
352
+
353
+ 05:38.360 --> 05:41.360
354
+ Entonces nosotros podemos,
355
+ si te das cuenta aqu铆 dice,
356
+
357
+ 05:41.360 --> 05:45.360
358
+ si n es mayor que 10, pues obvio,
359
+ el n煤mero es mayor que 10.
360
+
361
+ 05:45.360 --> 05:48.360
362
+ Pero 21 sigue siendo mayor que 10.
363
+
364
+ 05:48.360 --> 05:53.360
365
+ As铆 que se est谩 cumpliendo
366
+ y no cae en n mayor que 20.
367
+
368
+ 05:53.360 --> 05:58.360
369
+ Si por alguna raz贸n en tu c贸digo
370
+ necesitaras crear rangos num茅ricos
371
+
372
+ 05:58.360 --> 06:00.360
373
+ para que de 10 a 20 haga algo
374
+
375
+ 06:00.360 --> 06:02.360
376
+ y de 20 a 30 haga otra cosa,
377
+
378
+ 06:02.360 --> 06:04.360
379
+ de 30 a 40 haga otra cosa,
380
+
381
+ 06:04.360 --> 06:06.360
382
+ lo tienes que especificar.
383
+
384
+ 06:06.360 --> 06:10.360
385
+ Entonces, para esto vamos
386
+ a auxiliarnos del comando am.
387
+
388
+ 06:12.360 --> 06:14.360
389
+ Lo que ser铆a de la siguiente forma.
390
+
391
+ 06:14.360 --> 06:21.360
392
+ amf n es menor que 20.
393
+
394
+ 06:21.360 --> 06:23.360
395
+ Por ejemplo, guardemos.
396
+
397
+ 06:23.360 --> 06:24.360
398
+ 驴Aqu铆 qu茅 estoy diciendo?
399
+
400
+ 06:24.360 --> 06:29.360
401
+ Si n es mayor que 10 y n es menor que 20,
402
+
403
+ 06:29.360 --> 06:32.360
404
+ 隆ah! Ya estamos haciendo un rango.
405
+
406
+ 06:32.360 --> 06:37.360
407
+ Es mayor que 10, pero menor que 20.
408
+
409
+ 06:37.360 --> 06:40.360
410
+ Vamos a guardar, vamos a compilar
411
+ y vamos a ver qu茅 pasa.
412
+
413
+ 06:40.360 --> 06:45.360
414
+ El c贸digo es mucho de probar
415
+ y experimentar qu茅 ocurre.
416
+
417
+ 06:45.360 --> 06:49.360
418
+ Y mira que ahora s铆 funcion贸
419
+ de forma excelente.
420
+
421
+ 06:49.360 --> 06:51.360
422
+ El n煤mero es mayor que 20.
423
+ 驴Por qu茅?
424
+
425
+ 06:51.360 --> 06:56.360
426
+ Porque 21 s铆 es mayor que 10,
427
+ pero es menor que 20.
428
+
429
+ 06:56.360 --> 06:59.360
430
+ Y mira que t煤 puedes jugar
431
+ con las instrucciones.
432
+
433
+ 06:59.360 --> 07:03.360
434
+ As铆 como tenemos el and, que se describe
435
+ con doble signo de ampersand,
436
+
437
+ 07:03.360 --> 07:07.360
438
+ esto significa si esta instrucci贸n
439
+ es verdadera
440
+
441
+ 07:07.360 --> 07:10.360
442
+ y esta instrucci贸n es verdadera,
443
+
444
+ 07:10.360 --> 07:13.360
445
+ eso quiere decir que las dos instrucciones
446
+ que estamos comparando
447
+
448
+ 07:13.360 --> 07:15.360
449
+ deben de ser verdaderas.
450
+
451
+ 07:15.360 --> 07:17.360
452
+ La otra forma de hacerlo es con un or.
453
+
454
+ 07:17.360 --> 07:19.360
455
+ Pero para este caso no nos sirve un or.
456
+
457
+ 07:19.360 --> 07:20.360
458
+ 驴Por qu茅?
459
+
460
+ 07:20.360 --> 07:23.360
461
+ El or, cualquiera de las instrucciones
462
+ que se cumpla,
463
+
464
+ 07:23.360 --> 07:26.360
465
+ va a hacer que el c贸digo se ejecute.
466
+
467
+ 07:26.360 --> 07:29.360
468
+ Mira, esto se conoce como or.
469
+
470
+ 07:29.360 --> 07:35.360
471
+ Entonces, si n es mayor que 10
472
+ o n es mayor que 20, se va a cumplir.
473
+
474
+ 07:35.360 --> 07:39.360
475
+ Mira cu谩l ser铆a la salida de nuestro
476
+ c贸digo una vez guardamos y ejecutamos.
477
+
478
+ 07:42.360 --> 07:46.360
479
+ Y nos dice el n煤mero es mayor que 10,
480
+ pero menor que 20.
481
+
482
+ 07:46.360 --> 07:49.360
483
+ Eso no era cierto, el n煤mero es 21.
484
+
485
+ 07:49.360 --> 07:50.360
486
+ 驴Por qu茅?
487
+
488
+ 07:50.360 --> 07:55.360
489
+ Porque o se cumple esta instrucci贸n
490
+ o se cumple esta otra instrucci贸n.
491
+
492
+ 07:55.360 --> 07:57.360
493
+ Cualquiera de las dos que se cumpla,
494
+
495
+ 07:57.360 --> 08:01.360
496
+ la expresi贸n se da como verdadera
497
+ y se ejecuta este c贸digo.
498
+
499
+ 08:01.360 --> 08:04.360
500
+ Entonces, en este caso
501
+ nos sirve el ampersand.
502
+
503
+ 08:04.360 --> 08:06.360
504
+ Ya para ir cerrando esta clase,
505
+
506
+ 08:06.360 --> 08:10.360
507
+ lo que aprendimos es a utilizar
508
+ la sentencia, la instrucci贸n if,
509
+
510
+ 08:10.360 --> 08:13.360
511
+ la instrucci贸n else if
512
+ y la instrucci贸n else.
513
+
514
+ 08:13.360 --> 08:18.360
515
+ Pero no se ha cumplido un caso en donde
516
+ tengamos un n煤mero todav铆a menor que 10.
517
+
518
+ 08:18.360 --> 08:21.360
519
+ Vamos a asegurarnos de que esto ocurra.
520
+
521
+ 08:21.360 --> 08:23.360
522
+ Vamos a poner 9.
523
+
524
+ 08:24.360 --> 08:26.360
525
+ Y vamos a compilar.
526
+
527
+ 08:27.360 --> 08:28.360
528
+ F6.
529
+
530
+ 08:30.360 --> 08:31.360
531
+ El n煤mero es menor que 10.
532
+
533
+ 08:31.360 --> 08:32.360
534
+ Todo excelente.
535
+
536
+ 08:32.360 --> 08:33.360
537
+ Esto se cumple.
538
+
539
+ 08:33.360 --> 08:34.360
540
+ 驴C贸mo se deber铆a cumplir?
541
+
542
+ 08:34.360 --> 08:36.360
543
+ Y luego, error, no hay n煤mero.
544
+
545
+ 08:36.360 --> 08:43.360
546
+ 驴Qu茅 pasa si yo digo
547
+ que esto va a ser igual a B?
548
+
549
+ 08:46.360 --> 08:48.360
550
+ Ok, veamos qu茅 ocurre.
551
+
552
+ 08:48.360 --> 08:49.360
553
+ Compilemos.
554
+
555
+ 08:51.360 --> 08:54.360
556
+ Y nos da B, un declared.
557
+
558
+ 08:54.360 --> 08:57.360
559
+ Claro, porque estamos diciendo
560
+ que esto va a ser un entero.
561
+
562
+ 08:57.360 --> 09:00.360
563
+ Entonces, nunca nos va a pasar este error
564
+ de que no hay n煤mero
565
+
566
+ 09:00.360 --> 09:02.360
567
+ porque el compilador nos lo prevendr铆a.
568
+
569
+ 09:02.360 --> 09:05.360
570
+ Pero, 驴qu茅 pasa si yo pongo
571
+ un n煤mero negativo?
572
+
573
+ 09:05.360 --> 09:08.360
574
+ Eso s铆 que podr铆a ser un error
575
+ porque a lo mejor nuestro programa
576
+
577
+ 09:08.360 --> 09:12.360
578
+ no deber铆a recibir n煤meros negativos.
579
+
580
+ 09:12.360 --> 09:16.360
581
+ Entonces, este rango ya no recibe
582
+ n煤meros negativos.
583
+
584
+ 09:16.360 --> 09:18.360
585
+ Este rango no recibe n煤meros negativos.
586
+
587
+ 09:18.360 --> 09:19.360
588
+ Este tampoco.
589
+
590
+ 09:19.360 --> 09:20.360
591
+ Este s铆.
592
+
593
+ 09:20.360 --> 09:22.360
594
+ Aqu铆 podr铆amos agregar otro ampersand.
595
+
596
+ 09:22.360 --> 09:31.360
597
+ S铆, n es menor que 10, pero, y adem谩s
598
+ es mayor que n, es mayor que 0.
599
+
600
+ 09:31.360 --> 09:36.360
601
+ Con esto nos aseguramos de que vamos
602
+ a recibir 煤nicamente n煤meros positivos
603
+
604
+ 09:36.360 --> 09:40.360
605
+ y de hecho vamos a utilizar otra
606
+ instrucci贸n que ser铆a mayor o igual.
607
+
608
+ 09:40.360 --> 09:41.360
609
+ Muy bien.
610
+
611
+ 09:41.360 --> 09:46.360
612
+ Esto quiere decir que n va a ser mayor
613
+ que o igual que 0.
614
+
615
+ 09:46.360 --> 09:47.360
616
+ Perfecto.
617
+
618
+ 09:47.360 --> 09:54.360
619
+ El n煤mero es menor que 10,
620
+ pero, es 0 o m谩s.
621
+
622
+ 09:56.360 --> 09:58.360
623
+ Ok, no, no tiene caso ese pero.
624
+
625
+ 09:58.360 --> 10:04.360
626
+ El n煤mero es 0 o m谩s, 0 o 9.
627
+
628
+ 10:04.360 --> 10:09.360
629
+ El n煤mero est谩 en el rango de 0 al 9.
630
+
631
+ 10:09.360 --> 10:10.360
632
+ Excelente.
633
+
634
+ 10:10.360 --> 10:13.360
635
+ Matem谩ticamente correcto amigos y amigas.
636
+
637
+ 10:13.360 --> 10:17.360
638
+ Y bueno, este 煤ltimo error ser铆a
639
+ el n煤mero es positivo.
640
+
641
+ 10:17.360 --> 10:22.360
642
+ Error, no quiero n煤meros negativos.
643
+
644
+ 10:22.360 --> 10:24.360
645
+ Dig谩mosle no a la negatividad hoy.
646
+
647
+ 10:24.360 --> 10:27.360
648
+ Vamos a, y este, eso ser铆a todo.
649
+
650
+ 10:27.360 --> 10:31.360
651
+ Entonces ya con esto, en teor铆a,
652
+ ahorita lo vamos a comprobar.
653
+
654
+ 10:31.360 --> 10:35.360
655
+ Si nosotros ponemos menos 1
656
+ nos deber铆a decir error,
657
+
658
+ 10:35.360 --> 10:37.360
659
+ no quiero n煤meros negativos.
660
+
661
+ 10:37.360 --> 10:39.360
662
+ Vamos a limpiar nuestra terminal.
663
+
664
+ 10:41.360 --> 10:42.360
665
+ Uy.
666
+
667
+ 10:43.360 --> 10:45.360
668
+ Vamos ac谩 a nuestra terminal.
669
+
670
+ 10:45.360 --> 10:46.360
671
+ Muy bien.
672
+
673
+ 10:46.360 --> 10:48.360
674
+ Y ejecutemos nuestro c贸digo.
675
+
676
+ 10:48.360 --> 10:52.360
677
+ Voy a limpiarla con Clear para que lo veas
678
+ todo bien, todo clarito.
679
+
680
+ 10:52.360 --> 10:57.360
681
+ Aseg煤rate de guardar
682
+ y aseg煤rate de ejecutar tu c贸digo.
683
+
684
+ 10:57.360 --> 10:59.360
685
+ Vamos a esperar el resultado.
686
+
687
+ 11:00.360 --> 11:01.360
688
+ Excelente.
689
+
690
+ 11:01.360 --> 11:03.360
691
+ Error, no quiero n煤meros negativos.
692
+
693
+ 11:03.360 --> 11:06.360
694
+ Y con esto ya aprendiste
695
+ c贸mo puedes hacerle
696
+
697
+ 11:06.360 --> 11:10.360
698
+ para asegurarte de recibir todas
699
+ las instrucciones que necesites.
700
+
701
+ 11:11.360 --> 11:12.360
702
+ Muy bien.
703
+
704
+ 11:12.360 --> 11:15.360
705
+ Ya aprendimos a utilizar if,
706
+ else, if, else.
707
+
708
+ 11:15.360 --> 11:18.360
709
+ Es una instrucci贸n s煤per 煤til
710
+ en tus programas en C.
711
+
712
+ 11:18.360 --> 11:21.360
713
+ Y recuerda que conforme vayamos viendo
714
+ cosas m谩s avanzadas
715
+
716
+ 11:21.360 --> 11:25.360
717
+ en el curso, obviamente lo vamos a ir
718
+ utilizando mucho m谩s.
719
+
720
+ 11:25.360 --> 11:30.360
721
+ Pero quer铆a que te quedara clar铆sima
722
+ la estructura b谩sica de esta sintaxis,
723
+
724
+ 11:30.360 --> 11:32.360
725
+ de c贸mo se escribe, de c贸mo se utiliza,
726
+
727
+ 11:32.360 --> 11:34.360
728
+ de c贸mo puedes meter los operadores.
729
+
730
+ 11:34.360 --> 11:37.360
731
+ Te voy a dejar en la secci贸n
732
+ de enlaces un link
733
+
734
+ 11:37.360 --> 11:39.360
735
+ para que veas todos los operadores
736
+ del lenguaje C.
737
+
738
+ 11:39.360 --> 11:42.360
739
+ Esto es algo que est谩 como una lectura
740
+ en nuestro curso pasado.
741
+
742
+ 11:42.360 --> 11:44.360
743
+ As铆 que no te preocupes en absoluto.
744
+
745
+ 11:44.360 --> 11:47.360
746
+ Si tienes dudas de qu茅 otros operadores
747
+ puedes utilizar,
748
+
749
+ 11:47.360 --> 11:49.360
750
+ te voy a dejar el enlace a esa lectura.
751
+
752
+ 11:49.360 --> 11:52.360
753
+ Y sin m谩s, nos vemos en la pr贸xima clase.
subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-demoif_72993f29-e31b-4df7-8b00-add49844084a.c ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include <stdio.h>
2
+ int n = -1;
3
+
4
+ int main()
5
+ {
6
+ if(n > 10 && n < 20)
7
+ printf("el numero es mayor que diez, pero menor que 20");
8
+ else if (n == 10)
9
+ printf("el numero es diez");
10
+ else if (n > 20)
11
+ printf("el numero es mayor que veinte");
12
+ else if(n < 10 && n >= 0)
13
+ printf("el numero esta en el rango de 0 al 9");
14
+ else
15
+ printf("error no quiero numeros negativos");
16
+ return 0;
17
+ }
subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-If anidados en C Creaci贸n de men煤s interactivos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f257800fdc1a427d44f9f70ccda02e7f5de020eda76c4f51001ed291c22f493
3
+ size 126391773
subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-If anidados en C Creaci贸n de men煤s interactivos.vtt ADDED
@@ -0,0 +1,713 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.220 --> 00:05.928
4
+ Otro concepto muy importante
5
+ en el lenguaje C
6
+
7
+ 00:06.053 --> 00:08.760
8
+ son los if-anidados,
9
+ es decir, que t煤 puedes
10
+
11
+ 00:08.760 --> 00:11.969
12
+ tener un decisional
13
+ adentro de otro decisional.
14
+
15
+ 00:12.094 --> 00:15.160
16
+ Eso es algo cool, la verdad es que lo vas
17
+
18
+ 00:15.160 --> 00:17.564
19
+ a utilizar en algunas ocasiones,
20
+ en otras no.
21
+
22
+ 00:17.689 --> 00:20.680
23
+ Quiz谩s tienes un sistema
24
+ en donde debas de crear
25
+
26
+ 00:20.806 --> 00:23.178
27
+ un sistema de submen煤s, por ejemplo.
28
+
29
+ 00:23.303 --> 00:25.988
30
+ De hecho, eso es lo que te voy
31
+ a mostrar c贸mo hacer ahorita.
32
+
33
+ 00:26.114 --> 00:29.218
34
+ As铆 que vamos a nuestro editor de c贸digo,
35
+
36
+ 00:29.343 --> 00:33.579
37
+ control-n o command-n,
38
+ para crear una nueva tabsita,
39
+
40
+ 00:33.705 --> 00:35.793
41
+ un nuevo archivo y lo vamos a guardar
42
+
43
+ 00:35.919 --> 00:42.868
44
+ con control-s como nested-if.c.
45
+ Excelente. Ahora,
46
+
47
+ 00:42.994 --> 00:46.155
48
+ 驴qu茅 voy a hacer aqu铆?
49
+ Pues lo mismo de todas las veces,
50
+
51
+ 00:46.281 --> 00:49.296
52
+ que no es tratar de dominar
53
+ el mundo ni conquistarlo,
54
+
55
+ 00:49.422 --> 00:51.396
56
+ es crear nuestro primer boilerplate,
57
+
58
+ 00:51.522 --> 00:54.023
59
+ nuestra plantilla por decirlo as铆.
60
+
61
+ 00:54.190 --> 00:57.131
62
+ Vamos a borrar esta variable,
63
+ no quiero traer nada
64
+
65
+ 00:57.257 --> 01:00.640
66
+ del otro lado y vamos
67
+ a crear nuestras llaves.
68
+
69
+ 01:01.055 --> 01:03.267
70
+ Muy bien, y ahora t煤 ya
71
+ sabes que esto que estoy
72
+
73
+ 01:03.392 --> 01:06.251
74
+ haciendo aqu铆 es definir que todo
75
+ este c贸digo es un bloque,
76
+
77
+ 01:06.377 --> 01:09.539
78
+ es un gran bloque que pertenece
79
+
80
+ 01:09.665 --> 01:12.160
81
+ a nuestra funci贸n main.
82
+ 驴Ves? Es importante
83
+
84
+ 01:12.160 --> 01:15.755
85
+ que poquito a poquito vamos
86
+ desglosando este grandioso
87
+
88
+ 01:15.880 --> 01:17.578
89
+ lenguaje que es C.
90
+
91
+ 01:17.703 --> 01:20.098
92
+ Grandioso porque es mi lenguaje favorito,
93
+
94
+ 01:20.224 --> 01:21.439
95
+ pero adem谩s porque todav铆a
96
+
97
+ 01:21.565 --> 01:25.326
98
+ se ocupa y es un lenguaje
99
+ que lanzaron en 1972.
100
+
101
+ 01:25.452 --> 01:28.238
102
+ Imag铆nate eso. Muy bien,
103
+ 驴cu谩ntos a帽os son?
104
+
105
+ 01:28.363 --> 01:31.788
106
+ Bueno, muchos a帽os. Vamos a
107
+ crear todo nuestro programa,
108
+
109
+ 01:31.914 --> 01:35.369
110
+ vamos a empezar y aqu铆
111
+ quiero que pensemos
112
+
113
+ 01:35.495 --> 01:37.920
114
+ qu茅 es el algoritmo que
115
+ vamos a desarrollar.
116
+
117
+ 01:37.920 --> 01:41.147
118
+ Voy a crear un comentario.
119
+ Este programa genera men煤s,
120
+
121
+ 01:42.829 --> 01:47.179
122
+ men煤s seg煤n lo que el usuario elija.
123
+
124
+ 01:47.366 --> 01:52.881
125
+ Ok, vamos a hacer un simple programa
126
+ que imprime diferentes men煤s
127
+
128
+ 01:53.007 --> 01:55.416
129
+ y vamos a crear dos variables.
130
+
131
+ 01:59.315 --> 02:04.455
132
+ Ok, opci贸n 1 va a ser igual a,
133
+ opci贸n 1, voy a escribir
134
+
135
+ 02:04.581 --> 02:06.207
136
+ todo en ingl茅s
137
+ porque es la mejor pr谩ctica,
138
+
139
+ 02:06.333 --> 02:10.344
140
+ opci贸n 1 va a ser igual
141
+ a cualquier n煤mero,
142
+
143
+ 02:10.470 --> 02:13.188
144
+ vamos a inicializar todo
145
+ en cero, punto y coma,
146
+
147
+ 02:14.090 --> 02:19.730
148
+ opci贸n 2 va a ser igual
149
+ a cero, punto y coma.
150
+
151
+ 02:20.003 --> 02:24.701
152
+ Excelente. Y ahora vamos
153
+ a declarar una serie de ifs, else ifs.
154
+
155
+ 02:27.135 --> 02:29.738
156
+ If option 1 es igual,
157
+
158
+ 02:29.864 --> 02:33.252
159
+ este es el operador de comparaci贸n,
160
+
161
+ 02:33.378 --> 02:37.777
162
+ recuerda, si option 1 es igual a
163
+ cero, entonces
164
+
165
+ 02:39.957 --> 02:42.840
166
+ lo que voy a escribir yo va a ser,
167
+ y aqu铆 quiero que veas
168
+
169
+ 02:42.840 --> 02:46.753
170
+ que hay dos grandes
171
+ formas de escribir nuestras llaves,
172
+
173
+ 02:46.879 --> 02:49.009
174
+ ya sea que pones tus llaves as铆,
175
+
176
+ 02:49.235 --> 02:53.369
177
+ una al lado y otra donde cierras,
178
+ o las dos llaves abajo.
179
+
180
+ 02:53.495 --> 02:56.179
181
+ Esto se suele manejar
182
+ al gusto del programador,
183
+
184
+ 02:56.305 --> 02:58.337
185
+ yo siempre lo manejo de esta forma.
186
+
187
+ 02:58.463 --> 03:01.783
188
+ Lo que no es al gusto del programador
189
+ es la indentaci贸n.
190
+
191
+ 03:01.909 --> 03:05.029
192
+ Tenemos que todo el c贸digo
193
+ siempre va indentado a un nivel,
194
+
195
+ 03:05.155 --> 03:08.653
196
+ un nivel, todo, por ejemplo,
197
+ este if est谩 adentro de este main,
198
+
199
+ 03:08.779 --> 03:10.201
200
+ por eso est谩 indentado a un nivel,
201
+
202
+ 03:10.327 --> 03:12.240
203
+ y todo lo que yo escriba perteneciente
204
+
205
+ 03:12.240 --> 03:14.941
206
+ a este if va a estar
207
+ indentado a un nivel.
208
+
209
+ 03:15.168 --> 03:17.732
210
+ Entonces vamos a escribir
211
+ nuestro primer print.
212
+
213
+ 03:21.882 --> 03:26.975
214
+ Si usted eligi贸 la opci贸n cero,
215
+
216
+ 03:27.398 --> 03:32.191
217
+ ver谩 nuestro men煤 de bebidas.
218
+
219
+ 03:32.681 --> 03:39.219
220
+ Elija una. Y aqu铆 vamos
221
+ a poner otros if anidados.
222
+
223
+ 03:45.678 --> 03:48.630
224
+ Entonces si option 2 es igual a cero,
225
+
226
+ 03:49.050 --> 03:51.215
227
+ eso ser铆a nuestra primer bebida.
228
+
229
+ 03:51.582 --> 03:53.212
230
+ Vamos a poner un print
231
+
232
+ 03:56.199 --> 03:58.086
233
+ y vamos a poner usted.
234
+
235
+ 03:58.522 --> 04:03.600
236
+ Si te das cuenta aqu铆 no
237
+ necesito estas llaves
238
+
239
+ 04:03.600 --> 04:06.705
240
+ que el editor me autocomplet贸,
241
+ muy desafortunadamente
242
+
243
+ 04:06.831 --> 04:08.906
244
+ el autocomplete no siempre es buena idea,
245
+
246
+ 04:09.032 --> 04:15.000
247
+ al menos yo no soy el m谩s fan de 茅l.
248
+ Usted eligi贸, en lenguajes como C,
249
+
250
+ 04:15.000 --> 04:19.634
251
+ no, en lenguajes como JavaScript yo amo el
252
+ autocomplete, todo depende del lenguaje.
253
+
254
+ 04:20.020 --> 04:26.258
255
+ Ok, usted eligi贸 una Coca-Cola,
256
+ una Platzi-Cola, cero.
257
+
258
+ 04:30.637 --> 04:33.240
259
+ Mmm, rico. Hay que hacer copy
260
+
261
+ 04:33.240 --> 04:37.802
262
+ porque esto es marketing, 驴no?
263
+ Muy bien, punto y coma y punto y coma.
264
+
265
+ 04:38.188 --> 04:42.614
266
+ Aqu铆 si te das cuenta estamos anidando
267
+ nuestro decisional.
268
+
269
+ 04:42.740 --> 04:44.447
270
+ Obviamente no tendr铆amos
271
+
272
+ 04:44.573 --> 04:47.274
273
+ solamente Coca-Colas,
274
+ as铆 que pondr铆amos else if,
275
+
276
+ 04:47.727 --> 04:54.250
277
+ opt 2, igual a 1 y aqu铆 ser铆a print.
278
+
279
+ 04:55.963 --> 04:59.775
280
+ Y voy a copiar esta sintaxis
281
+ para no tener que escribir tanto.
282
+
283
+ 05:01.245 --> 05:03.769
284
+ Un programador
285
+ exitoso escribe menos c贸digo.
286
+
287
+ 05:04.789 --> 05:07.984
288
+ Vamos a poner,
289
+ usted eligi贸 una Platzi-Cola
290
+
291
+ 05:10.487 --> 05:15.475
292
+ con mucha az煤car. Az煤car, muy bien.
293
+
294
+ 05:15.963 --> 05:19.421
295
+ Imaginemos que tiene tilde.
296
+ Excelente. Y por 煤ltimo,
297
+
298
+ 05:19.547 --> 05:25.970
299
+ else if y ser铆a option 2, igual a 2
300
+
301
+ 05:26.817 --> 05:30.040
302
+ y ac谩 pondr铆amos
303
+ esta misma l铆nea de c贸digo.
304
+
305
+ 05:32.179 --> 05:38.103
306
+ Uy, control C, control V,
307
+ la indentamos bien.
308
+
309
+ 05:41.468 --> 05:47.951
310
+ Usted eligi贸 una Platzi-Pi帽a colada.
311
+
312
+ 05:48.638 --> 05:51.840
313
+ Muy bien, listo. Con esto ya y por 煤ltimo,
314
+
315
+ 05:51.840 --> 05:56.455
316
+ else up y imprimir铆amos
317
+
318
+ 05:59.759 --> 06:02.878
319
+ opci贸n inv谩lida.
320
+
321
+ 06:04.395 --> 06:06.976
322
+ Bell铆simo. Punto y coma para cerrar.
323
+
324
+ 06:08.966 --> 06:12.304
325
+ Aqu铆, si te das cuenta,
326
+ nosotros ya creamos una primera
327
+
328
+ 06:12.430 --> 06:16.150
329
+ toma de decisiones.
330
+ La primera toma de decisiones,
331
+
332
+ 06:16.276 --> 06:19.658
333
+ si es cero, es bebidas,
334
+ as铆 que hay que darle la bienvenida.
335
+
336
+ 06:19.784 --> 06:21.741
337
+ Usted eligi贸 nuestra opci贸n cero,
338
+
339
+ 06:21.867 --> 06:24.295
340
+ ver谩 nuestro men煤 de bebidas. Elija una.
341
+
342
+ 06:24.475 --> 06:27.080
343
+ Y aqu铆 hay que escribir algo m谩s.
344
+ Entonces voy a crear
345
+
346
+ 06:27.080 --> 06:30.434
347
+ un salto de l铆nea que se hace
348
+ con diagonal invertida N
349
+
350
+ 06:30.699 --> 06:32.845
351
+ y vamos a imprimir nuestro men煤,
352
+
353
+ 06:32.971 --> 06:36.206
354
+ bien, bien lindo. Voy a utilizar otro
355
+
356
+ 06:36.332 --> 06:40.227
357
+ print para que se vea bien.
358
+ Ya tenemos ac谩, elija una bebida.
359
+
360
+ 06:40.353 --> 06:46.675
361
+ El siguiente paso ser铆a,
362
+ presione cero o ingrese opci贸n cero.
363
+
364
+ 06:48.741 --> 06:54.538
365
+ Cero para Coca-Cola Platzi-Cola. Cero.
366
+
367
+ 06:55.592 --> 06:59.845
368
+ Vamos a dejar aqu铆 un salto
369
+ de l铆nea, diagonal invertida N.
370
+
371
+ 07:02.717 --> 07:06.749
372
+ Voy a copiar esto para
373
+ replicarlo y que sea s煤per veloz
374
+
375
+ 07:07.135 --> 07:09.346
376
+ el desarrollo de nuestro programa.
377
+
378
+ 07:09.513 --> 07:12.642
379
+ Y lo voy a copiar aqu铆 tambi茅n.
380
+ Excelente.
381
+
382
+ 07:13.605 --> 07:15.808
383
+ Opci贸n cero para Platzi-Cola cero.
384
+
385
+ 07:16.758 --> 07:21.685
386
+ Opci贸n uno para Platzi-Cola normal.
387
+
388
+ 07:22.643 --> 07:27.856
389
+ Opci贸n dos para Platzi-Colada.
390
+
391
+ 07:30.036 --> 07:35.421
392
+ Platzi-Pina-Colada. Muy bien.
393
+ Hay que ponerle punto y coma,
394
+
395
+ 07:35.547 --> 07:38.125
396
+ punto y coma.
397
+ Verifiquemos que todo est谩 excelente.
398
+
399
+ 07:38.251 --> 07:40.975
400
+ Y ya, si te das cuenta,
401
+ hicimos unpeque帽铆simo men煤.
402
+
403
+ 07:41.101 --> 07:44.696
404
+ Obviamente vamos aqu铆 a falsear
405
+ nuestras opciones.
406
+
407
+ 07:44.822 --> 07:46.440
408
+ Simplemente imprimamos ahora
409
+
410
+ 07:46.440 --> 07:49.314
411
+ qu茅 ocurre con el c贸digo
412
+ tal como lo tenemos.
413
+
414
+ 07:49.562 --> 07:54.344
415
+ Vamos a F6 para compilar.
416
+ Recuerda que si no sabes
417
+
418
+ 07:54.470 --> 07:57.459
419
+ c贸mo configurar mi entorno,
420
+ tienes que ir a nuestro primer curso.
421
+
422
+ 07:57.585 --> 07:59.000
423
+ Y mira, aqu铆 est谩.
424
+
425
+ 07:59.000 --> 08:02.071
426
+ Ok, usted eligi贸 la opci贸n cero.
427
+ Ver谩 nuestro men煤 de bebidas.
428
+
429
+ 08:02.197 --> 08:04.932
430
+ Elija una. Opci贸n cero
431
+ para Platzi-Cola cero.
432
+
433
+ 08:05.058 --> 08:08.220
434
+ Opci贸n uno para Platzi-Cola normal.
435
+
436
+ 08:08.346 --> 08:12.263
437
+ Opci贸n dos para Platzi-Pina-Colada.
438
+ Usted eligi贸 una Platzi-Cola cero.
439
+
440
+ 08:12.389 --> 08:15.796
441
+ Rico. Muy bien. Ahora nos falta
442
+ aqu铆 un primer men煤.
443
+
444
+ 08:15.922 --> 08:17.837
445
+ Entonces hay que copiar esto.
446
+
447
+ 08:19.801 --> 08:22.389
448
+ Vamos a copiar este c贸digo.
449
+ Vamos a ponerlo
450
+
451
+ 08:22.515 --> 08:25.359
452
+ en nuestro main
453
+ y vamos a traerlo por ac谩.
454
+
455
+ 08:25.526 --> 08:28.780
456
+ Recuerda que debe estar
457
+ indentado solo una, un nivel.
458
+
459
+ 08:29.176 --> 08:31.158
460
+ Vamos a decirle,
461
+
462
+ 08:33.555 --> 08:37.518
463
+ eh, bienvenido a Platzi Store.
464
+
465
+ 08:39.474 --> 08:42.803
466
+ Opci贸n cero para Platzi-Bebidas.
467
+
468
+ 08:44.263 --> 08:47.926
469
+ Opci贸n uno para Platzi-Comidas.
470
+
471
+ 08:48.445 --> 08:51.712
472
+ Y opci贸n dos para Platzi-Postres.
473
+
474
+ 08:51.853 --> 08:55.293
475
+ Opci贸n excelente.
476
+ Ya tenemos aqu铆 nuestro primer men煤.
477
+
478
+ 08:55.419 --> 08:58.160
479
+ Ahora te voy a dejar un primer reto.
480
+
481
+ 08:58.160 --> 09:00.949
482
+ Quiero que t煤 acompletes,
483
+ si te das cuenta, yo solo program茅
484
+
485
+ 09:01.075 --> 09:02.518
486
+ la opci贸n cero de nuestro men煤.
487
+
488
+ 09:02.644 --> 09:05.816
489
+ Yo quiero que t煤 programes la opci贸n uno,
490
+ que va a ser para alimentos,
491
+
492
+ 09:05.942 --> 09:08.662
493
+ y la opci贸n dos,
494
+ que va a ser para postres.
495
+
496
+ 09:08.788 --> 09:10.759
497
+ Aqu铆 tienes la estructura
498
+ que debes de seguir.
499
+
500
+ 09:10.885 --> 09:13.232
501
+ Te voy a dar el,
502
+ te voy a dejar esto listo.
503
+
504
+ 09:13.358 --> 09:15.694
505
+ Vamos a poner aqu铆 el else if
506
+
507
+ 09:16.831 --> 09:20.807
508
+ y vamos a usar nuestro operador,
509
+ nuestra variable opci贸n uno.
510
+
511
+ 09:21.000 --> 09:26.579
512
+ Y si esto es igual a uno,
513
+ entonces aqu铆, aqu铆 va a ir,
514
+
515
+ 09:26.705 --> 09:28.953
516
+ vamos a, te voy a dejar
517
+ hasta un comentario.
518
+
519
+ 09:29.079 --> 09:36.039
520
+ Aqu铆 va el c贸digo de,
521
+ el men煤 de alimentos.
522
+
523
+ 09:36.965 --> 09:39.307
524
+ Y vamos a copiar este else if
525
+
526
+ 09:42.294 --> 09:44.084
527
+ para el men煤 de postres.
528
+
529
+ 09:44.210 --> 09:49.716
530
+ Aqu铆 va el men煤 de postres.
531
+ Hay que identar esto bien.
532
+
533
+ 09:51.106 --> 09:56.161
534
+ Y por 煤ltimo, else y aqu铆 ser铆a opci贸n,
535
+
536
+ 10:00.412 --> 10:04.876
537
+ mensaje de manejo de opci贸n inv谩lida.
538
+
539
+ 10:05.277 --> 10:08.962
540
+ Aqu铆 es donde t煤 le dices al usuario, oye,
541
+ Dude, eso que me pediste no existe.
542
+
543
+ 10:09.088 --> 10:12.575
544
+ No vendo todav铆a la opci贸n cuatro,
545
+ cinco, seis, por ejemplo.
546
+
547
+ 10:12.701 --> 10:15.800
548
+ Ya con esto t煤,
549
+ t煤 debes de preparar tu c贸digo.
550
+
551
+ 10:15.926 --> 10:18.597
552
+ Ok. Debes de terminar el c贸digo y dejarme,
553
+
554
+ 10:18.723 --> 10:20.480
555
+ ya sea, la impresi贸n de c贸mo
556
+
557
+ 10:20.480 --> 10:22.904
558
+ queda tu men煤 en la terminal.
559
+
560
+ 10:23.030 --> 10:27.183
561
+ Ahora, 驴qu茅 pasa si t煤, por ejemplo,
562
+ quisieras elegir la opci贸n 0,2?
563
+
564
+ 10:27.309 --> 10:29.600
565
+ Pues simplemente la pones aqu铆 arriba.
566
+
567
+ 10:29.726 --> 10:31.840
568
+ 驴Vale? De momento no hemos
569
+ aprendido a manejar inputs,
570
+
571
+ 10:31.840 --> 10:34.439
572
+ as铆 que no te preocupes.
573
+ Todo lo estamos manejando
574
+
575
+ 10:34.564 --> 10:37.294
576
+ por inputs aqu铆 arriba
577
+ en nuestro programita.
578
+
579
+ 10:37.420 --> 10:42.166
580
+ Guardamos, compilamos.
581
+ Vamos a esperar a que termine.
582
+
583
+ 10:42.292 --> 10:45.193
584
+ Y 隆uy! Nos marca un error. Todo mal.
585
+
586
+ 10:47.710 --> 10:51.960
587
+ Vamos a ver por qu茅. Dice main.
588
+
589
+ 10:53.546 --> 10:58.440
590
+ Ah, claro, al escribir todo esto
591
+ se me borr贸 el return.
592
+
593
+ 10:58.440 --> 11:02.213
594
+ Entonces hay que componerlo.
595
+ Vamos a ver qu茅 est谩 pasando.
596
+
597
+ 11:02.339 --> 11:05.401
598
+ Ah, ok. Y todo se me anid贸
599
+ dentro de este primer if.
600
+
601
+ 11:05.527 --> 11:08.238
602
+ Eso est谩 mal. Aqu铆 hay que saber separar
603
+
604
+ 11:08.364 --> 11:11.470
605
+ en d贸nde terminan las cosas.
606
+ Entonces te voy a ense帽ar justo eso.
607
+
608
+ 11:12.016 --> 11:14.507
609
+ Vamos a cerrar una llave ac谩.
610
+
611
+ 11:14.633 --> 11:17.103
612
+ Esta llave cierra nuestro primer if.
613
+
614
+ 11:17.229 --> 11:20.950
615
+ Este else if se cierra con su llave ac谩.
616
+ Veamos. S铆.
617
+
618
+ 11:21.076 --> 11:24.906
619
+ Este else if se cierra con su llave.
620
+ Este else se cierra con su llave.
621
+
622
+ 11:25.032 --> 11:28.034
623
+ Y este estar铆a cerrando nuestro main.
624
+
625
+ 11:28.160 --> 11:33.022
626
+ As铆 que vamos a ponerle return.
627
+ Cero, punto y coma.
628
+
629
+ 11:33.148 --> 11:35.919
630
+ Recuerda que esa es la instrucci贸n
631
+ de salida que vamos a tener.
632
+
633
+ 11:36.045 --> 11:37.902
634
+ Vamos a, se me olvid贸 guardar.
635
+
636
+ 11:38.028 --> 11:44.627
637
+ Vamos a guardar.
638
+ Control S y vamos a nuestro terminal.
639
+
640
+ 11:44.907 --> 11:49.172
641
+ Vamos a darle F6. Muy bien.
642
+
643
+ 11:49.298 --> 11:52.165
644
+ Y ya una vez compila
645
+ y se ejecuta nuestro programa.
646
+
647
+ 11:52.291 --> 11:55.552
648
+ Nos dice, usted eligi贸 la opci贸n cero.
649
+ Ver谩 nuestro men煤 de bebidas.
650
+
651
+ 11:55.859 --> 11:58.974
652
+ Ah, ok. Opci贸n cero para Coca-Cola cero,
653
+
654
+ 11:59.100 --> 12:01.484
655
+ para Coca-Cola normal y para pi帽a colada.
656
+
657
+ 12:01.610 --> 12:04.438
658
+ Mira, usted eligi贸
659
+ una pi帽a colada con az煤car.
660
+
661
+ 12:04.563 --> 12:07.680
662
+ Mmm, rico. Excelente.
663
+ Aqu铆 tenemos un typo.
664
+
665
+ 12:07.680 --> 12:11.877
666
+ Lo guardamos y eso es todo.
667
+ Aqu铆 ya aprendiste c贸mo
668
+
669
+ 12:12.003 --> 12:15.040
670
+ utilizar if anidados.
671
+ Es un ejemplo s煤per b谩sico,
672
+
673
+ 12:15.040 --> 12:16.397
674
+ pero quiero que t煤 lo termines
675
+
676
+ 12:16.523 --> 12:19.057
677
+ para que te quede
678
+ bien clarita la informaci贸n.
679
+
680
+ 12:19.183 --> 12:20.363
681
+ Velo como un ejercicio.
682
+
683
+ 12:20.489 --> 12:23.902
684
+ Crea un men煤 desde cero,
685
+ por favor, y mu茅stramelo
686
+
687
+ 12:24.028 --> 12:26.079
688
+ en la secci贸n de comentarios.
689
+ Termina este men煤,
690
+
691
+ 12:26.205 --> 12:28.826
692
+ crea tu propio men煤 y con eso
693
+ ya habr谩s aprendido
694
+
695
+ 12:28.952 --> 12:33.368
696
+ a escribir if anidados.
697
+ No te conf铆es en pensar
698
+
699
+ 12:33.494 --> 12:35.758
700
+ que esto es muy simple.
701
+ No lo necesito practicar.
702
+
703
+ 12:35.884 --> 12:38.434
704
+ Si no lo practicas,
705
+ se te va a olvidar en una hora
706
+
707
+ 12:38.560 --> 12:40.300
708
+ o dos despu茅s
709
+ de que hayas visto esta clase
710
+
711
+ 12:40.426 --> 12:46.426
712
+ y no queremos eso.
713
+ Nos vemos en la pr贸xima.
subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-nestedif_e6d6f354-6111-4e0b-9802-2aa3a6d9a99e.c ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include <stdio.h>
2
+ int opt1 = 0;
3
+ int opt2 = 2;
4
+
5
+ int main(){
6
+ printf("bienvenid a platzi store :\n");
7
+ printf("opcion 0 para platzi bebidas \n");
8
+ printf("opcion 1 para platzi comidas \n");
9
+ printf("opcion 2 para platzi postres \n");
10
+
11
+ // este programa genera menus segun lo que el usuario elija
12
+ if(opt1 == 0){
13
+ printf("usted eligio la opcion 0, vera nuestro menu de bebidas elija una:\n");
14
+ printf("opcion 0 para platzi cola cero \n");
15
+ printf("opcion 1 para platzi cola normal \n");
16
+ printf("opcion 2 para platzi pina colada \n");
17
+
18
+ if (opt2 == 0)
19
+ printf("usted eligio una platzi cola cero, mmm rico");
20
+ else if (opt2 == 1)
21
+ printf("usted eligio una platzi cola cpn azucar, mmm rico");
22
+ else if (opt2 == 2)
23
+ printf("usted eligio una platzi pina colada con azucar, mmm rico");
24
+ else
25
+ printf("opcion invalida");
26
+ }
27
+ else if(opt1 ==1){
28
+ //aqui va el menu de alimentos
29
+ }
30
+ else if(opt1 ==2){
31
+ //aqui va el menu de postres
32
+ }
33
+ else {
34
+ // mensaje de manejo de opcion invalida
35
+ }
36
+
37
+ return 0;
38
+ }
subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Estructura y uso del switch en programaci贸n en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6b69af0b554bee155d47b994eed87dd5c060cb6d30e2644f18d9c71c96e937b6
3
+ size 129525828
subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Estructura y uso del switch en programaci贸n en C.vtt ADDED
@@ -0,0 +1,866 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.200 --> 00:05.800
4
+ En esta clase vamos
5
+ a aprender otra estructura
6
+
7
+ 00:05.926 --> 00:08.346
8
+ para el control de flujo
9
+ de nuestro programa,
10
+
11
+ 00:08.472 --> 00:12.878
12
+ principalmente para decidir
13
+ qu茅 es el c贸digo que vamos a ejecutar.
14
+
15
+ 00:13.004 --> 00:14.817
16
+ Y esta es la instrucci贸n switch.
17
+
18
+ 00:15.077 --> 00:18.483
19
+ Vamos a crearuna nueva tab aqu铆
20
+ en nuestro Visual Studio Code.
21
+
22
+ 00:18.609 --> 00:20.869
23
+ Vamos a guardarla, t煤 sabes, control S.
24
+
25
+ 00:20.995 --> 00:27.036
26
+ Vamos a crear un nuevo archivo
27
+ que se llame switch.c.
28
+
29
+ 00:30.012 --> 00:31.059
30
+ Y listo.
31
+
32
+ 00:31.318 --> 00:34.045
33
+ Ahora te quiero contar un poquito
34
+ sobre esta estructura.
35
+
36
+ 00:34.385 --> 00:37.551
37
+ La declaraci贸n switch
38
+ es una estructura m煤ltiple
39
+
40
+ 00:37.677 --> 00:39.926
41
+ que nos va a servir para tomar decisiones,
42
+
43
+ 00:40.052 --> 00:42.403
44
+ es decir, vamos a tener varios casos
45
+
46
+ 00:42.529 --> 00:44.898
47
+ en donde puede entrar y en muchos casos
48
+
49
+ 00:45.023 --> 00:48.419
50
+ de hecho se utiliza justo
51
+ para no tener que crear
52
+
53
+ 00:48.545 --> 00:50.435
54
+ muchos else ifs espec铆ficos.
55
+
56
+ 00:50.630 --> 00:55.710
57
+ Ojo, que el switch funciona con valores
58
+ constantes, es decir,
59
+
60
+ 00:55.836 --> 00:58.577
61
+ cada una de las ramas
62
+ que vamos a tener no va a tener
63
+
64
+ 00:58.703 --> 01:01.280
65
+ tanto as铆 una expresi贸n como en el if,
66
+
67
+ 01:01.280 --> 01:04.718
68
+ sino que vamos a tener solamente
69
+ alg煤n valor constante,
70
+
71
+ 01:04.843 --> 01:07.779
72
+ por ejemplo, un n煤mero o una string,
73
+
74
+ 01:07.905 --> 01:09.176
75
+ una cadena de caracteres
76
+
77
+ 01:09.302 --> 01:13.267
78
+ o algo que vaya a ser permanente
79
+ y fijo o constante.
80
+
81
+ 01:13.693 --> 01:15.428
82
+ Luego esto lo vamos a comparar
83
+
84
+ 01:15.554 --> 01:19.717
85
+ con una variable de control
86
+ y esta va a ir entrando en cada una.
87
+
88
+ 01:19.843 --> 01:23.557
89
+ Ves como que creamos este cubo de formas
90
+ con los que juegan los beb茅s,
91
+
92
+ 01:23.841 --> 01:26.803
93
+ en donde si la forma se match,
94
+ entonces entra ah铆,
95
+
96
+ 01:26.929 --> 01:30.133
97
+ ah bueno, exactamente
98
+ esa es la estructura switch.
99
+
100
+ 01:30.259 --> 01:33.676
101
+ Uno de sus principales
102
+ usos es crear m谩quinas de estado,
103
+
104
+ 01:33.802 --> 01:36.478
105
+ es decir, sistemas en donde tu c贸digo
106
+
107
+ 01:36.603 --> 01:39.960
108
+ se va a ir comportando
109
+ de forma predefinida
110
+
111
+ 01:39.960 --> 01:44.220
112
+ y conforme vaya en cada uno de los pasos
113
+ del switch va a ir ejecutando algo.
114
+
115
+ 01:44.346 --> 01:45.800
116
+ Un caso de ejemplo clar铆simo
117
+
118
+ 01:45.800 --> 01:48.951
119
+ de una m谩quina de estado
120
+ ser铆a un robot vigilante,
121
+
122
+ 01:49.076 --> 01:52.255
123
+ en donde el primer
124
+ estado ser铆a, ah ok, estado,
125
+
126
+ 01:52.381 --> 01:54.925
127
+ alerta o detecci贸n, b煤squeda de intrusos.
128
+
129
+ 01:55.218 --> 01:57.800
130
+ Ese ser铆a el primer estado
131
+ y el robot se mantendr铆a ah铆
132
+
133
+ 01:57.800 --> 02:00.262
134
+ por toda la vida hasta
135
+ que detecta un intruso.
136
+
137
+ 02:00.387 --> 02:02.541
138
+ Se cumpla todo el c贸digo de detecci贸n
139
+
140
+ 02:02.667 --> 02:07.044
141
+ y pase al siguiente estado de alerta
142
+ o dispersi贸n de intrusos,
143
+
144
+ 02:07.170 --> 02:09.828
145
+ por ejemplo, que ah铆
146
+ ya el robot lo perseguir铆a,
147
+
148
+ 02:09.954 --> 02:12.078
149
+ activar铆a una alarma y hasta le disparar铆a
150
+
151
+ 02:12.203 --> 02:14.117
152
+ con una pistola si lo programamos as铆.
153
+
154
+ 02:14.243 --> 02:16.194
155
+ Ojal谩 que no,
156
+ porque la violencia est谩 mal.
157
+
158
+ 02:16.376 --> 02:21.723
159
+ Luego, eso ser铆a el estado de dispersi贸n
160
+ de intrusos y un tercer estado
161
+
162
+ 02:21.849 --> 02:23.839
163
+ ser铆a verificaci贸n de dispersi贸n
164
+
165
+ 02:23.965 --> 02:29.569
166
+ y un cuarto estado ser铆a
167
+ reseteo de estado o guardar
168
+
169
+ 02:29.695 --> 02:32.506
170
+ la informaci贸n de que ya
171
+ detectamos un intruso, bla bla bla,
172
+
173
+ 02:32.632 --> 02:35.000
174
+ pas贸 esto, se genera un block y despu茅s
175
+
176
+ 02:35.000 --> 02:38.042
177
+ regresar铆amos al estado 1,
178
+ que ser铆a el estado de alerta
179
+
180
+ 02:38.168 --> 02:40.117
181
+ y b煤squeda o detecci贸n de intrusos,
182
+
183
+ 02:40.243 --> 02:42.594
184
+ en donde el robot pasar铆a
185
+ la mayor铆a de su tiempo.
186
+
187
+ 02:42.720 --> 02:44.219
188
+ Esto se puede crear con un switch.
189
+
190
+ 02:44.345 --> 02:49.188
191
+ Veamos c贸mo ser铆a una base
192
+ o una estructura inicial
193
+
194
+ 02:49.314 --> 02:50.318
195
+ de un c贸digo switch.
196
+
197
+ 02:50.655 --> 02:54.386
198
+ Lo primero es declarar la expresi贸n
199
+ mentse, que es switch.
200
+
201
+ 02:54.532 --> 02:56.372
202
+ Aqu铆 nos lo autocompleta
203
+
204
+ 02:56.498 --> 02:59.200
205
+ y est谩 muy bien escrito de hecho.
206
+
207
+ 02:59.200 --> 03:02.298
208
+ Entonces tenemos que nuestro switch
209
+ va a verificar una expresi贸n
210
+
211
+ 03:02.423 --> 03:06.456
212
+ tal como lo hac铆a el if
213
+ y vamos a tener nuestros casos.
214
+
215
+ 03:06.582 --> 03:08.849
216
+ Aqu铆 es donde yo te digo que vamos a tener
217
+
218
+ 03:08.974 --> 03:13.116
219
+ nuestras expresiones constantes,
220
+ el c贸digo de cada caso,
221
+
222
+ 03:13.242 --> 03:15.551
223
+ y nosotros vamos a tener tantos casos
224
+
225
+ 03:15.677 --> 03:17.227
226
+ como nosotros querramos.
227
+
228
+ 03:17.493 --> 03:19.653
229
+ Entonces los casos pueden ser num茅ricos
230
+
231
+ 03:19.779 --> 03:21.951
232
+ o pueden ser por cadenas de caracteres.
233
+
234
+ 03:22.077 --> 03:24.214
235
+ Vamos a hacerlo con casos num茅ricos.
236
+
237
+ 03:25.747 --> 03:32.614
238
+ Vamos a decirle que mi caso 1, el c贸digo
239
+ ser铆a detecci贸n de intrusos, 驴no?
240
+
241
+ 03:34.778 --> 03:39.086
242
+ De intrusos y un break.
243
+ El break es la instrucci贸n
244
+
245
+ 03:39.212 --> 03:42.280
246
+ o la sentencia que nos
247
+ indica que ya se cumpli贸 todo
248
+
249
+ 03:42.280 --> 03:46.701
250
+ el c贸digo que ten铆amos
251
+ aqu铆, entonces que se salga.
252
+
253
+ 03:47.915 --> 03:49.880
254
+ Obviamente dentro de este caso
255
+
256
+ 03:49.880 --> 03:51.504
257
+ podr铆amos tener instrucciones if,
258
+
259
+ 03:51.630 --> 03:53.489
260
+ podr铆amos tener instrucciones if else,
261
+
262
+ 03:53.615 --> 03:55.916
263
+ podemos tener todo el c贸digo C
264
+ que querramos,
265
+
266
+ 03:56.103 --> 03:58.600
267
+ todo lo que se necesite ejecutar
268
+ en el caso 1.
269
+
270
+ 03:58.800 --> 04:00.601
271
+ Luego tendr铆amos nuestrocaso 2.
272
+
273
+ 04:01.477 --> 04:03.903
274
+ Y aqu铆 ser铆a lo mismo, por ejemplo,
275
+
276
+ 04:04.029 --> 04:07.440
277
+ en el ejemplo ficticio
278
+ que est谩bamos pensando,
279
+
280
+ 04:07.566 --> 04:11.348
281
+ aqu铆 ser铆a espantar o dispersar,
282
+
283
+ 04:13.395 --> 04:17.265
284
+ correr a los intrusos, 驴no?
285
+
286
+ 04:21.247 --> 04:23.781
287
+ Luego tendr铆amos nuestro case 5.
288
+
289
+ 04:26.660 --> 04:31.276
290
+ Y as铆 sucesivamente en cada una
291
+ de las instrucciones de nuestro switch.
292
+
293
+ 04:31.760 --> 04:33.698
294
+ Ahora, hagamos esto en un ejemplo.
295
+
296
+ 04:33.824 --> 04:37.031
297
+ Ya te ense帽茅 la sintaxis.
298
+ Vamos a tener tantos cases
299
+
300
+ 04:37.157 --> 04:40.041
301
+ como necesitemos
302
+ y vamos a tener un default.
303
+
304
+ 04:40.167 --> 04:42.195
305
+ El default lo puedes ver como el else.
306
+
307
+ 04:42.399 --> 04:47.047
308
+ Si ninguno de los casos se cumple,
309
+ entonces vamos a ir a nuestro default.
310
+
311
+ 04:47.181 --> 04:48.792
312
+ Por default vamos a hacer
313
+
314
+ 04:48.918 --> 04:51.035
315
+ esta instrucci贸n y hacemos un break
316
+
317
+ 04:51.196 --> 04:53.956
318
+ que nos remover铆a del c贸digo.
319
+
320
+ 04:54.923 --> 04:57.574
321
+ Ahora, 驴qu茅 ser铆a la expresi贸n a validar?
322
+
323
+ 04:57.700 --> 04:59.298
324
+ Nuestra expresi贸n muchas veces
325
+
326
+ 04:59.572 --> 05:01.708
327
+ va a ser simple
328
+ y sencillamente una variable
329
+
330
+ 05:01.834 --> 05:04.538
331
+ que nosotros vamos a declarar.
332
+ Por ejemplo,
333
+
334
+ 05:04.663 --> 05:07.957
335
+ variable y si esta variable vale 1,
336
+ entra 1,
337
+
338
+ 05:08.083 --> 05:11.348
339
+ si esta variable vale 2, entra 2,
340
+ si llega a valer 5, entra 5,
341
+
342
+ 05:11.474 --> 05:13.205
343
+ si no tenemos ninguno de los valores
344
+
345
+ 05:13.331 --> 05:15.718
346
+ ser铆a el default y har铆amos el c贸digo
347
+
348
+ 05:15.843 --> 05:17.985
349
+ que tengamos en nuestro default.
350
+
351
+ 05:18.247 --> 05:21.844
352
+ Con esto dicho, veamos un ejemplo
353
+ en c贸digo ya m谩s pr谩ctico.
354
+
355
+ 05:21.970 --> 05:23.440
356
+ Creemos nuestro men煤.
357
+
358
+ 05:26.898 --> 05:30.918
359
+ Para esto, a nuestra estructura inicial
360
+ voy a declararle lo de siempre.
361
+
362
+ 05:31.044 --> 05:33.008
363
+ Necesito mi STDIO,
364
+
365
+ 05:33.134 --> 05:35.408
366
+ vamos a, ya sabes, numeral include.
367
+
368
+ 05:36.170 --> 05:42.848
369
+ Vamos a importar nuestra librer铆a
370
+ STDIO.h. Muy bien.
371
+
372
+ 05:42.974 --> 05:45.032
373
+ Luego vamos a declarar nuestro main.
374
+
375
+ 05:45.412 --> 05:49.640
376
+ Aqu铆 est谩 perfecto. Y en main
377
+ vamos a poner nuestro switch.
378
+
379
+ 05:49.640 --> 05:52.378
380
+ Recuerda que no necesitamos
381
+ nada de esto por ac谩.
382
+
383
+ 05:52.899 --> 05:55.507
384
+ Vamos a poner todo esto
385
+ que ya ten铆amos escrito
386
+
387
+ 05:56.081 --> 05:58.758
388
+ y vamos a asegurarnos
389
+ de eliminar esta llavecita
390
+
391
+ 05:58.884 --> 06:02.587
392
+ que ten铆amos ah铆 porque
393
+ s贸lo nos va a estorbar en un futuro.
394
+
395
+ 06:02.747 --> 06:04.685
396
+ Ahora hay que hacer
397
+ la identaci贸n correcta.
398
+
399
+ 06:06.751 --> 06:09.008
400
+ Vamos a poner
401
+ nuestro break tambi茅n ah铆.
402
+
403
+ 06:09.134 --> 06:12.104
404
+ La identaci贸n de verdad,
405
+ no me canso de decir
406
+
407
+ 06:12.284 --> 06:15.049
408
+ lo importante que es
409
+ porque es la que nos define el orden
410
+
411
+ 06:15.175 --> 06:17.498
412
+ y hace que el c贸digo
413
+ sea m谩s legible para nosotros.
414
+
415
+ 06:17.845 --> 06:21.227
416
+ Al compilador en C
417
+ no le importa la identaci贸n,
418
+
419
+ 06:21.353 --> 06:22.991
420
+ de verdad,
421
+ no le importa en absoluto.
422
+
423
+ 06:23.117 --> 06:26.661
424
+ A quien le debe de importar
425
+ es a ti porque si no identas,
426
+
427
+ 06:26.787 --> 06:28.798
428
+ todo va a estar
429
+ muy mal en tu c贸digo
430
+
431
+ 06:28.923 --> 06:32.836
432
+ y va a ser un caos en
433
+ cuesti贸n de legibilidad.
434
+
435
+ 06:33.469 --> 06:37.195
436
+ Vamos a ponerle su break.
437
+ Vamos a ponerle punto y coma.
438
+
439
+ 06:38.182 --> 06:42.938
440
+ Ya nada m谩s nos falta jalarnos
441
+ el default y el break.
442
+
443
+ 06:43.064 --> 06:45.415
444
+ Y aqu铆 quiero que comparemos
445
+ esta instrucci贸n
446
+
447
+ 06:45.541 --> 06:47.868
448
+ con la instrucci贸n que ya hab铆amos visto
449
+
450
+ 06:47.994 --> 06:53.506
451
+ que era la de nuestros if anidados.
452
+
453
+ 06:53.632 --> 06:56.931
454
+ Entonces yo quiero que hagamos
455
+ un men煤 utilizando nuestros casos.
456
+
457
+ 06:57.271 --> 07:00.023
458
+ Vamos a decirle que este programa,
459
+
460
+ 07:00.149 --> 07:05.658
461
+ bienvenido, primf, y de hecho
462
+ me voy a traer el men煤
463
+
464
+ 07:05.784 --> 07:07.042
465
+ de nuestros nested if.
466
+
467
+ 07:07.275 --> 07:10.172
468
+ Vamos a copiarnos directamente esto.
469
+
470
+ 07:11.012 --> 07:15.922
471
+ Perfect铆simo. Por aqu铆
472
+ y lo copiamos con control C
473
+
474
+ 07:16.048 --> 07:19.118
475
+ y lo pegamos ac谩 en donde pertenece.
476
+
477
+ 07:20.845 --> 07:23.824
478
+ Dice bienvenido a Platzi Store.
479
+ Mira que se nos ident贸 mal.
480
+
481
+ 07:23.950 --> 07:26.994
482
+ Vamos a identarlo bien. No pasa nada.
483
+
484
+ 07:27.120 --> 07:29.651
485
+ Solo voy a darle uno m谩s
486
+ al switch y ya est谩 todo bello.
487
+
488
+ 07:30.097 --> 07:32.156
489
+ Vamos a decirle bienvenido a Platzi Store.
490
+
491
+ 07:32.282 --> 07:36.862
492
+ Opci贸n 0 para platzi bebidas,
493
+ opci贸n 1 para platzi comidas
494
+
495
+ 07:36.988 --> 07:38.858
496
+ y opci贸n 2 para platzi postres.
497
+
498
+ 07:39.132 --> 07:42.480
499
+ Vamos a escribir ac谩 nuestra
500
+ variable de tipo entero
501
+
502
+ 07:42.480 --> 07:49.032
503
+ que va a ser int opcion 1
504
+ y vamos a inicializarla
505
+
506
+ 07:49.158 --> 07:53.055
507
+ en 0 punto y coma. Excelente.
508
+ Tenemos ya nuestro men煤
509
+
510
+ 07:53.181 --> 07:56.258
511
+ y la variable que vamos
512
+ a estar leyendo va a ser
513
+
514
+ 07:56.383 --> 07:59.257
515
+ igual a opci贸n 1. No se me puso el 1 bien.
516
+
517
+ 07:59.473 --> 08:01.326
518
+ Ahora s铆, guardo.
519
+
520
+ 08:02.399 --> 08:05.872
521
+ Y el caso no va a empezar en 1
522
+ sino que voy a empezar en 0.
523
+
524
+ 08:06.710 --> 08:11.331
525
+ 1, control copy
526
+
527
+ 08:13.303 --> 08:16.076
528
+ y por 煤ltimo caso 2.
529
+
530
+ 08:17.289 --> 08:18.798
531
+ Vamos para el caso 0.
532
+
533
+ 08:19.113 --> 08:21.768
534
+ Vamos a traernos este c贸digo
535
+ que ya hab铆a escrito aqu铆.
536
+
537
+ 08:22.813 --> 08:25.262
538
+ Vamos a imprimirlo en nuestro case.
539
+
540
+ 08:26.966 --> 08:29.055
541
+ Vamos a identar un poco esto.
542
+
543
+ 08:31.461 --> 08:33.888
544
+ Hago mucho 茅nfasis en identaci贸n
545
+ porque de verdad
546
+
547
+ 08:34.014 --> 08:35.279
548
+ es muy, muy importante.
549
+
550
+ 08:35.405 --> 08:39.437
551
+ Es de lo mejor que pueden hacer
552
+ que su c贸digo sea legible y bonito.
553
+
554
+ 08:39.830 --> 08:42.795
555
+ Y aqu铆 ya podemos
556
+ nosotros poner otro switch
557
+
558
+ 08:43.540 --> 08:46.317
559
+ o podr铆amos poner directamente un if,
560
+
561
+ 08:46.443 --> 08:48.734
562
+ lo que ustedes quieran, uno o varios if.
563
+
564
+ 08:48.967 --> 08:51.318
565
+ Estas instrucciones se pueden
566
+ combinar entre ellas,
567
+
568
+ 08:51.444 --> 08:56.203
569
+ pero de momento solo les estoy ense帽ando
570
+ el switch, as铆 que voy a usar un switch.
571
+
572
+ 08:57.509 --> 09:00.361
573
+ Vamos a declarar nuestra
574
+ variable opci贸n 2, int
575
+
576
+ 09:00.696 --> 09:06.453
577
+ opci贸n 2 igual a 0,
578
+ 0 punto y coma y listo.
579
+
580
+ 09:09.065 --> 09:13.036
581
+ Vamos a tener switch opci贸n 2
582
+ y vamos a copiar nuestros casos.
583
+
584
+ 09:13.256 --> 09:16.299
585
+ El primer caso va a ser el caso 0
586
+
587
+ 09:17.820 --> 09:23.253
588
+ y en el caso 0 yo pondr铆a
589
+ que nos compraron una Platzi Cola.
590
+
591
+ 09:23.819 --> 09:27.332
592
+ Si se acuerdan
593
+ habl谩bamos de la Platzi Cola 0.
594
+
595
+ 09:29.200 --> 09:31.488
596
+ Perfecto. Control copy,
597
+ vamos a nuestro switch
598
+
599
+ 09:31.614 --> 09:35.800
600
+ y ponemos nuestro c贸digo.
601
+ Con esto ya podemos
602
+
603
+ 09:35.800 --> 09:38.619
604
+ verificar si est谩 funcionando todo bien,
605
+
606
+ 09:38.922 --> 09:43.314
607
+ as铆 que hagamos justamente eso.
608
+ Default break, default break
609
+
610
+ 09:43.440 --> 09:46.037
611
+ y default y sub break. Excelente.
612
+
613
+ 09:46.617 --> 09:51.012
614
+ Vamos a poner 0, 0 para ver si entramos
615
+ a la opci贸n 0 que es Platzi Cola 0
616
+
617
+ 09:51.138 --> 09:53.802
618
+ y luego entramos a la opci贸n que es,
619
+
620
+ 09:53.928 --> 09:56.699
621
+ y luego se imprime
622
+ en nuestro men煤 de bebidas,
623
+
624
+ 09:56.825 --> 09:59.878
625
+ que es este, y luego
626
+ entramos a la opci贸n Platzi Cola 0.
627
+
628
+ 10:00.004 --> 10:02.888
629
+ Muy bien. Vamos a dejar todo
630
+ as铆 como est谩.
631
+
632
+ 10:03.014 --> 10:07.039
633
+ Control S y compilamos
634
+ y ejecutamos nuestro c贸digo.
635
+
636
+ 10:07.766 --> 10:10.961
637
+ Y nos marca un error,
638
+ dice expected declaration
639
+
640
+ 10:11.087 --> 10:13.371
641
+ or statement y el error est谩
642
+ en la funci贸n main.
643
+
644
+ 10:13.497 --> 10:16.080
645
+ Lo que est谩 pasando, ah no mira,
646
+
647
+ 10:16.080 --> 10:20.458
648
+ dice switch bla bla bla,
649
+ esto est谩 muy raro,
650
+
651
+ 10:20.583 --> 10:24.960
652
+ dice l铆nea 37,1. Vamos a la
653
+ l铆nea 37 y veamos qu茅 pasa
654
+
655
+ 10:24.960 --> 10:27.142
656
+ con esta llave que tenemos ac谩.
657
+
658
+ 10:27.363 --> 10:31.342
659
+ Uy, y claro, lo que est谩 pasando
660
+ es que esta llave cierra a este switch
661
+
662
+ 10:31.468 --> 10:34.554
663
+ y deber铆amos cerrar nuestro main,
664
+ pues corrijamos eso.
665
+
666
+ 10:34.874 --> 10:37.371
667
+ Entonces vamos a poner otra llave
668
+
669
+ 10:37.497 --> 10:41.054
670
+ antes del return que deber铆a de cerrar
671
+ a nuestro switch grande,
672
+
673
+ 10:41.194 --> 10:45.271
674
+ a nuestro switch 1,
675
+ que es el gran el gran switch
676
+
677
+ 10:45.397 --> 10:46.977
678
+ que controla el estado
679
+ de nuestro programa,
680
+
681
+ 10:47.103 --> 10:48.967
682
+ en donde estamos en este momento.
683
+
684
+ 10:49.093 --> 10:51.007
685
+ Vamos a guardar
686
+ y vamos a identar bien todo.
687
+
688
+ 10:51.132 --> 10:53.891
689
+ Mira que aqu铆 est谩 bien,
690
+ entramos a nuestro primer switch,
691
+
692
+ 10:54.017 --> 10:56.828
693
+ tenemos nuestro key 0,
694
+ luego entramos a nuestro segundo switch
695
+
696
+ 10:56.954 --> 10:58.978
697
+ y aqu铆 este key 0 no est谩 bien identado.
698
+
699
+ 10:59.104 --> 11:00.997
700
+ Vamos a ponerlo y todo esto deber铆a
701
+
702
+ 11:01.123 --> 11:02.984
703
+ estar un nivel adentro m谩s.
704
+
705
+ 11:04.131 --> 11:05.229
706
+ El default tambi茅n.
707
+
708
+ 11:05.355 --> 11:08.817
709
+ Y ya con eso yo s茅 que esto
710
+ pertenece a este switch
711
+
712
+ 11:08.943 --> 11:11.240
713
+ que tenemos ac谩.
714
+ Date cuenta de c贸mo todo
715
+
716
+ 11:11.240 --> 11:14.269
717
+ se va volviendo m谩s legible
718
+ conforme tenemos cuidado
719
+
720
+ 11:14.395 --> 11:17.512
721
+ de escribir las cosas
722
+ de la mejor forma posible.
723
+
724
+ 11:18.052 --> 11:21.391
725
+ Es por eso important铆simo.
726
+ Luego, luego de esto,
727
+
728
+ 11:21.517 --> 11:24.868
729
+ ya simple y sencillamente
730
+ vamos a poner los breaks bien.
731
+
732
+ 11:24.994 --> 11:28.727
733
+ Los breaks, yo los pongo
734
+ un nivel adentro de mi case
735
+
736
+ 11:30.053 --> 11:32.066
737
+ y de mi default tambi茅n, por supuesto.
738
+
739
+ 11:32.192 --> 11:35.479
740
+ Tenemos nuestra llave
741
+ y tenemos nuestro return 0.
742
+
743
+ 11:35.605 --> 11:37.375
744
+ Control S, compilamos.
745
+
746
+ 11:39.730 --> 11:42.369
747
+ Vamos a esperar que ocurre y ya.
748
+
749
+ 11:42.529 --> 11:45.777
750
+ Bell铆simo, todo funcion贸.
751
+ Bienvenido a Platzi Store.
752
+
753
+ 11:45.977 --> 11:49.412
754
+ Opci贸n 0 para platzi bebidas,
755
+ opci贸n 1 para platzi comidas.
756
+
757
+ 11:49.538 --> 11:50.999
758
+ Usted eligi贸 la opci贸n 0,
759
+
760
+ 11:51.124 --> 11:53.114
761
+ ver谩 nuestro men煤 de bebidas, elija una.
762
+
763
+ 11:53.240 --> 11:56.696
764
+ Opci贸n 0 para platzi cola,
765
+ para platzi cola normal
766
+
767
+ 11:56.822 --> 12:00.144
768
+ y para platzi pina colada.
769
+ Luego usted eligi贸 una platzi cola 0.
770
+
771
+ 12:00.289 --> 12:04.014
772
+ Rico, excelente. Con esto
773
+ ya viste c贸mo podemos
774
+
775
+ 12:04.140 --> 12:06.520
776
+ usar el switch para crear
777
+ este tipo de men煤s.
778
+
779
+ 12:06.520 --> 12:08.901
780
+ Yo quiero aqu铆 que te quede
781
+ un aprendizaje y esto
782
+
783
+ 12:09.027 --> 12:12.200
784
+ es una buena pr谩ctica.
785
+ Nosotros solemos utilizar
786
+
787
+ 12:12.200 --> 12:15.138
788
+ switch principalmente
789
+ para m谩quinas de estado,
790
+
791
+ 12:15.263 --> 12:19.363
792
+ para control a gran escala
793
+ del flujo de nuestro programa.
794
+
795
+ 12:19.489 --> 12:22.555
796
+ Cada uno de los cases podr铆a tener
797
+ mucho c贸digo adentro.
798
+
799
+ 12:22.982 --> 12:26.207
800
+ Se vuelve muy complejo usar switch
801
+ dentro de switches.
802
+
803
+ 12:26.387 --> 12:28.167
804
+ Ya ah铆 dentro de cada case
805
+
806
+ 12:28.293 --> 12:30.600
807
+ t煤 debes de crear una l贸gica
808
+ normal de C que conforme
809
+
810
+ 12:30.600 --> 12:34.018
811
+ vayamos aprendiendo a
812
+ hacer cosas m谩s complejas
813
+
814
+ 12:34.183 --> 12:37.938
815
+ te va a quedar s煤per clara.
816
+ Pero de momento, por favor,
817
+
818
+ 12:38.064 --> 12:39.978
819
+ quiero que solamente
820
+ te quedes con la estructura
821
+
822
+ 12:40.103 --> 12:41.884
823
+ y que recuerdes, el switch es bueno
824
+
825
+ 12:42.010 --> 12:43.764
826
+ en grandes estructuras en C.
827
+
828
+ 12:43.922 --> 12:46.773
829
+ Es donde lo solemos utilizar
830
+ en m谩quinas de estado.
831
+
832
+ 12:46.899 --> 12:48.000
833
+ Es mejor que una m谩quina
834
+
835
+ 12:48.000 --> 12:50.958
836
+ de estados est茅 hecha
837
+ con switches versus Eaves
838
+
839
+ 12:51.083 --> 12:54.040
840
+ porque simplemente
841
+ tienes una gran estructura
842
+
843
+ 12:54.040 --> 12:56.701
844
+ general en donde tienes tus declaraciones.
845
+
846
+ 12:56.827 --> 12:59.851
847
+ Y aqu铆 quiero que veas el c贸digo.
848
+ Tenemos nuestros valores constantes
849
+
850
+ 12:59.977 --> 13:03.215
851
+ que son case 0, tenemos nuestro case 1,
852
+
853
+ 13:03.341 --> 13:05.920
854
+ nuestro case 2 y ah铆
855
+ vas a poner cada parte
856
+
857
+ 13:05.920 --> 13:07.930
858
+ de tu c贸digo que necesites que se ejecute
859
+
860
+ 13:08.056 --> 13:12.700
861
+ de forma espec铆fica
862
+ en un c贸digo C m谩s grande.
863
+
864
+ 13:12.826 --> 13:18.360
865
+ Con esto dicho, pues nos vemos
866
+ en la siguiente clase.
subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-switch_26ee0200-c773-4d19-a0d9-ba7fc5b5f686.c ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include <stdio.h>
2
+ int opt1 = 0;
3
+ int opt2 = 0;
4
+
5
+ int main()
6
+ {
7
+ printf("bienvenid a platzi store :\n");
8
+ printf("opcion 0 para platzi bebidas \n");
9
+ printf("opcion 1 para platzi comidas \n");
10
+ printf("opcion 2 para platzi postres \n");
11
+ switch (opt1 ){
12
+
13
+ case 0:
14
+ printf("usted eligio la opcion 0, vera nuestro menu de bebidas elija una:\n");
15
+ printf("opcion 0 para platzi cola cero \n");
16
+ printf("opcion 1 para platzi cola normal \n");
17
+ printf("opcion 2 para platzi pina colada \n");
18
+ switch (opt2)
19
+ {
20
+ case 0:
21
+ printf("usted eligio una platzi cola cero, mmm rico");
22
+ break;
23
+
24
+ default:
25
+ break;
26
+ }
27
+ break;
28
+ case 1:
29
+ /* Dispersar, correr a los intrusos */
30
+ break;
31
+ case 2:
32
+ /* Dispersar, correr a los intrusos */
33
+ break;
34
+ default:
35
+ break;
36
+ }
37
+ return 0;
38
+ }
39
+
40
+
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Bucle While en C Implementaci贸n y Ejemplos Pr谩cticos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:89dff8bddf4192a6f4d218201b047581a0ffc8d589414a995794414f85ac03c3
3
+ size 66311251
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Bucle While en C Implementaci贸n y Ejemplos Pr谩cticos.vtt ADDED
@@ -0,0 +1,500 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.313 --> 00:08.561
4
+ Bueno, lleg贸 el momento de hablar
5
+ de los bucles o ciclos en C.
6
+
7
+ 00:08.921 --> 00:12.244
8
+ T煤, cuando tienes un programa, muchas
9
+ veces vas a necesitar
10
+
11
+ 00:12.370 --> 00:16.040
12
+ que alguna parte de tu c贸digo se repita
13
+ bastante tiempo.
14
+
15
+ 00:16.218 --> 00:17.920
16
+ Regresando al ejemplo de nuestro robot,
17
+
18
+ 00:17.920 --> 00:19.969
19
+ sentinela o guardia de seguridad,
20
+
21
+ 00:20.095 --> 00:23.453
22
+ el bucle donde el robot
23
+ va a estar siempre,
24
+
25
+ 00:23.579 --> 00:29.202
26
+ siempre escaneando o buscando un ladr贸n
27
+
28
+ 00:29.328 --> 00:31.032
29
+ o alguien que est谩, alg煤n intruso,
30
+
31
+ 00:31.158 --> 00:33.160
32
+ bueno, esto pues va a ser un bucle
33
+
34
+ 00:33.160 --> 00:36.393
35
+ porque el robot va a estar repitiendo
36
+ la misma acci贸n
37
+
38
+ 00:36.519 --> 00:40.134
39
+ de encontrar un enemigo
40
+ hasta que lo encuentre.
41
+
42
+ 00:40.260 --> 00:41.320
43
+ Y una vez lo
44
+ encuentre,
45
+
46
+ 00:41.507 --> 00:43.944
47
+ no necesitar铆amos
48
+ que se siga repitiendo eso
49
+
50
+ 00:44.070 --> 00:46.475
51
+ porque nos saldr铆amos de ese bucle
52
+ infinito
53
+
54
+ 00:46.601 --> 00:49.172
55
+ y nos ir铆amos a otra parte
56
+
57
+ 00:49.298 --> 00:52.515
58
+ que ser铆a ya la parte de correr al ladr贸n
59
+ de la zona,
60
+
61
+ 00:52.641 --> 00:54.668
62
+ sonar la alarma, etc茅tera, etc茅tera.
63
+
64
+ 00:54.794 --> 00:58.014
65
+ Con esto dicho,
66
+ veamos el bucle while y do while
67
+
68
+ 00:58.140 --> 01:00.280
69
+ que nos van a servir
70
+ exactamente para esto.
71
+
72
+ 01:00.408 --> 01:02.885
73
+ Y te explico c贸mo funciona
74
+ en el lenguaje C.
75
+
76
+ 01:03.011 --> 01:05.136
77
+ En el lenguaje C, el bucle while
78
+
79
+ 01:05.262 --> 01:08.270
80
+ simple y sencillamente
81
+ eval煤a una expresi贸n, 驴ok?
82
+
83
+ 01:08.693 --> 01:12.471
84
+ Y eval煤a la expresi贸n siempre
85
+ y cuando la expresi贸n sea true,
86
+
87
+ 01:12.597 --> 01:17.481
88
+ sea 1, el bucle se va a repetir y va a
89
+ reevaluar la expresi贸n.
90
+
91
+ 01:17.607 --> 01:21.091
92
+ Si la expresi贸n sigue siendo 1,
93
+ vuelve a repetir
94
+
95
+ 01:21.217 --> 01:23.080
96
+ y entonces eval煤a otra vez la expresi贸n.
97
+
98
+ 01:23.336 --> 01:25.339
99
+ Cuando la expresi贸n sea 0,
100
+
101
+ 01:25.465 --> 01:29.568
102
+ es cuando se sale del bucle
103
+ y contin煤a la ejecuci贸n del programa
104
+
105
+ 01:29.694 --> 01:33.032
106
+ despu茅s de todo el bloque
107
+ que tengamos en nuestro while.
108
+
109
+ 01:33.158 --> 01:35.824
110
+ Ya estamos aqu铆 en nuestra terminal
111
+ de Visual Studio Code,
112
+
113
+ 01:35.950 --> 01:38.330
114
+ vamos a abrir una nueva tab
115
+
116
+ 01:38.637 --> 01:42.684
117
+ y te voy a ense帽ar c贸mo funciona
118
+ a grandes rasgos el while.
119
+
120
+ 01:43.898 --> 01:45.080
121
+ Lo primero que hay que hacer, ya sabes,
122
+
123
+ 01:45.080 --> 01:46.974
124
+ control N para abrir una nueva pesta帽a,
125
+
126
+ 01:47.100 --> 01:50.422
127
+ control S para guardar,
128
+ vamos a ponerle while. c.
129
+
130
+ 01:50.548 --> 01:52.440
131
+ While se podr铆a traducir como mientras,
132
+
133
+ 01:52.440 --> 01:56.729
134
+ as铆 que mientras la condici贸n se cumpla,
135
+
136
+ 01:56.855 --> 01:59.195
137
+ se va a ejecutar todo el bloque de c贸digo.
138
+
139
+ 01:59.455 --> 02:02.963
140
+ Cuando la condici贸n se deja de cumplir,
141
+
142
+ 02:03.089 --> 02:05.627
143
+ entonces este bloque de c贸digo
144
+ se deja de ejecutar
145
+
146
+ 02:05.753 --> 02:08.160
147
+ y se retoma la ejecuci贸n
148
+ al final de este bloque,
149
+
150
+ 02:08.160 --> 02:10.400
151
+ o sea, aqu铆, todo lo que tengamos abajo.
152
+
153
+ 02:10.893 --> 02:14.720
154
+ 驴Qu茅 es lo m谩s importante que quiero
155
+ que tengas claro desde este momento?
156
+
157
+ 02:15.283 --> 02:17.520
158
+ T煤 eres quien controla el while,
159
+
160
+ 02:17.760 --> 02:20.824
161
+ entonces dentro del while
162
+ t煤 debes de asegurarte
163
+
164
+ 02:20.950 --> 02:25.080
165
+ cu谩l es la instrucci贸n que va a cambiar
166
+ para que nuestro while se salga.
167
+
168
+ 02:25.080 --> 02:25.956
169
+ 驴Ok?
170
+
171
+ 02:25.982 --> 02:29.106
172
+ Eso es lo m谩s importante que debes
173
+ de tener en cuenta.
174
+
175
+ 02:29.232 --> 02:31.950
176
+ Si t煤 no le das una opci贸n al while
177
+ de que se salga,
178
+
179
+ 02:32.076 --> 02:33.570
180
+ entonces nunca se va a salir
181
+
182
+ 02:33.696 --> 02:36.991
183
+ y entonces estar铆amos
184
+ en un problema grave,
185
+
186
+ 02:37.117 --> 02:40.400
187
+ porque tu c贸digo se quedar铆a atorado
188
+ ah铆 de forma infinita
189
+
190
+ 02:40.400 --> 02:43.200
191
+ y simple y sencillamente
192
+ no har铆a nada m谩s.
193
+
194
+ 02:43.510 --> 02:46.105
195
+ Veamos ya un ejemplo en c贸digo,
196
+ el while es s煤per simple.
197
+
198
+ 02:46.545 --> 02:48.840
199
+ Vamos a crear la estructura de siempre,
200
+
201
+ 02:48.840 --> 02:53.770
202
+ vamos a importar,
203
+ incluir nuestra librer铆a
204
+
205
+ 02:54.383 --> 02:57.607
206
+ standard de input output main.
207
+
208
+ 02:59.706 --> 03:00.706
209
+ Perfecto.
210
+
211
+ 03:01.580 --> 03:03.750
212
+ Vamos a quitarle esto.
213
+
214
+ 03:04.043 --> 03:06.904
215
+ Vamos y ya aqu铆 est谩 todo donde
216
+ deber铆a ir todo el c贸digo,
217
+
218
+ 03:07.030 --> 03:09.741
219
+ todo est谩 excelente,
220
+ vamos a poner nuestro while ah铆.
221
+
222
+ 03:09.867 --> 03:12.120
223
+ Y quiero que hagamos algo s煤per simple,
224
+
225
+ 03:12.120 --> 03:16.046
226
+ quiero que veas el funcionamiento
227
+ de un while en acci贸n.
228
+
229
+ 03:16.172 --> 03:19.634
230
+ As铆 que vamos a declarar una variable n
231
+ del tipo entero,
232
+
233
+ 03:19.760 --> 03:23.886
234
+ int n va a ser igual a 20, punto y coma.
235
+
236
+ 03:24.766 --> 03:28.094
237
+ Y quiero que simplemente veas
238
+ el while en acci贸n.
239
+
240
+ 03:28.220 --> 03:35.203
241
+ Entonces voy a decir que mientras n sea
242
+ mayor a 10, voy a imprimir,
243
+
244
+ 03:38.866 --> 03:40.266
245
+ voy a imprimir,
246
+
247
+ 03:41.719 --> 03:47.023
248
+ n es igual a, vamos a poner por ciento de,
249
+
250
+ 03:47.149 --> 03:49.803
251
+ para poner nuestro decimal aqu铆,
252
+ por ciento de,
253
+
254
+ 03:49.929 --> 03:52.000
255
+ coma y la variable que vamos a estar
256
+ imprimiendo,
257
+
258
+ 03:52.000 --> 03:53.840
259
+ que en este caso ser谩 n.
260
+
261
+ 03:53.840 --> 03:54.907
262
+ Excelente.
263
+
264
+ 03:55.081 --> 03:58.529
265
+ Guardamos y luego quiero que hagamos
266
+ una peque帽a operaci贸n de resta.
267
+
268
+ 03:58.655 --> 04:03.040
269
+ Adem谩s del por ciento de hay que poner
270
+ un salto de l铆nea
271
+
272
+ 04:03.040 --> 04:07.030
273
+ para que todo se vaya escribiendo
274
+ en una l铆nea m谩s abajo y as铆 sucesivamente.
275
+
276
+ 04:07.630 --> 04:09.240
277
+ Y esto va aqu铆.
278
+
279
+ 04:10.661 --> 04:11.754
280
+ Excelente.
281
+
282
+ 04:12.001 --> 04:14.920
283
+ Luego voy a hacer una peque帽a operaci贸n
284
+ aritm茅tica.
285
+
286
+ 04:14.920 --> 04:22.115
287
+ n va a ser igual a n menos 1,
288
+ punto y coma.
289
+
290
+ 04:23.022 --> 04:24.196
291
+ 驴Qu茅 estoy haciendo aqu铆?
292
+
293
+ 04:24.322 --> 04:27.383
294
+ Que cada ciclo le resto un 1 a n.
295
+
296
+ 04:27.509 --> 04:30.880
297
+ Cada que se repite mi while
298
+ yo le resto un 1 a n.
299
+
300
+ 04:30.880 --> 04:31.921
301
+ 驴Qu茅 va a pasar?
302
+
303
+ 04:32.047 --> 04:35.035
304
+ Pues que n en alg煤n punto
305
+ va a dejar de ser mayor que 10.
306
+
307
+ 04:35.457 --> 04:37.786
308
+ Entonces vamos a ver qu茅 pasa.
309
+
310
+ 04:38.892 --> 04:41.238
311
+ Y aqu铆 deber铆amos de poner otro print.
312
+
313
+ 04:42.598 --> 04:45.515
314
+ Y mira que aqu铆 tengo un grave error
315
+ que no he dentado el while.
316
+
317
+ 04:45.754 --> 04:47.432
318
+ Lo corregimos f谩cilmente.
319
+
320
+ 04:49.925 --> 04:52.411
321
+ Corregimos todo, corregimos todo.
322
+
323
+ 04:54.934 --> 04:57.375
324
+ Y ponemos este ac谩.
325
+
326
+ 04:57.713 --> 04:58.913
327
+ Excelente.
328
+
329
+ 04:59.535 --> 05:00.872
330
+ Todo bello ahora, s铆.
331
+
332
+ 05:01.186 --> 05:03.040
333
+ Por 煤ltimo voy a poner un print.
334
+
335
+ 05:04.623 --> 05:11.594
336
+ Y este print va a decir
337
+ el ciclo while ha salido.
338
+
339
+ 05:11.974 --> 05:16.630
340
+ El bucle se ha saltado.
341
+
342
+ 05:18.687 --> 05:21.173
343
+ 驴Hemos salido del bucle
344
+ ser铆a lo correcto en espa帽ol?
345
+
346
+ 05:21.933 --> 05:27.551
347
+ Hemos salido del bucle porque n
348
+
349
+ 05:27.677 --> 05:31.337
350
+ es igual o menor que 10.
351
+
352
+ 05:32.110 --> 05:34.123
353
+ Excelente.
354
+ Punto y coma.
355
+
356
+ 05:34.249 --> 05:37.406
357
+ Y ya solo nos falta el return igual,
358
+ el return 0.
359
+
360
+ 05:39.273 --> 05:40.532
361
+ Punto y coma.
362
+
363
+ 05:41.225 --> 05:42.726
364
+ Uf, un typo ac谩.
365
+
366
+ 05:42.852 --> 05:43.749
367
+ Muy bien.
368
+
369
+ 05:43.962 --> 05:45.200
370
+ Todo perfecto.
371
+
372
+ 05:45.719 --> 05:46.859
373
+ 驴Qu茅 deber铆a pasar aqu铆?
374
+
375
+ 05:46.985 --> 05:48.214
376
+ Vamos a entrar al while.
377
+
378
+ 05:48.340 --> 05:51.401
379
+ Se va a verificar la expresi贸n n
380
+ es mayor que 10.
381
+
382
+ 05:51.527 --> 05:52.289
383
+ 驴S铆 o no?
384
+
385
+ 05:52.415 --> 05:55.509
386
+ S铆, porque n es 20 y 20 es mayor que 10.
387
+
388
+ 05:55.863 --> 05:58.502
389
+ Entonces mientras esto se cumpla,
390
+
391
+ 05:58.628 --> 06:01.288
392
+ se va a ejecutar este c贸digo
393
+ que tenemos aqu铆 adentro
394
+
395
+ 06:01.414 --> 06:04.336
396
+ hasta que se deje de cumplir
397
+ y nos salgamos.
398
+
399
+ 06:04.462 --> 06:08.080
400
+ Vamos a guardar y vamos a compilar
401
+ nuestro programa.
402
+
403
+ 06:08.379 --> 06:09.299
404
+ Muy bien.
405
+
406
+ 06:09.425 --> 06:11.080
407
+ Y mira que se imprime correctamente.
408
+
409
+ 06:11.080 --> 06:13.514
410
+ n es igual a 20, luego le restamos 1,
411
+
412
+ 06:13.640 --> 06:16.670
413
+ se repite, eval煤a la expresi贸n y 19.
414
+
415
+ 06:16.943 --> 06:18.288
416
+ 驴19 es mayor que 10?
417
+
418
+ 06:18.414 --> 06:18.974
419
+ S铆.
420
+
421
+ 06:19.100 --> 06:21.720
422
+ Entonces lo imprime, le resta 1 y es 18.
423
+
424
+ 06:21.884 --> 06:23.225
425
+ 驴18 es mayor que 10?
426
+
427
+ 06:23.351 --> 06:23.951
428
+ S铆.
429
+
430
+ 06:24.077 --> 06:25.143
431
+ Y as铆 hasta 11.
432
+
433
+ 06:25.269 --> 06:26.800
434
+ A 11 se le resta 1.
435
+
436
+ 06:26.926 --> 06:28.313
437
+ 驴10 es mayor que 10?
438
+
439
+ 06:28.439 --> 06:28.966
440
+ No.
441
+
442
+ 06:29.092 --> 06:30.928
443
+ Y nos dice hemos salido del bucle,
444
+
445
+ 06:31.054 --> 06:32.680
446
+ porque n es igual o menor que 10.
447
+
448
+ 06:32.680 --> 06:33.851
449
+ Se me fue una S.
450
+
451
+ 06:34.078 --> 06:38.122
452
+ Ah铆, bueno, no pasa nada,
453
+ la agregamos y todo bello.
454
+
455
+ 06:38.248 --> 06:43.280
456
+ Ahora, 驴qu茅 pasa si nosotros de una
457
+ declaramos 10 como nuestra variable?
458
+
459
+ 06:43.280 --> 06:44.476
460
+ 驴Qu茅 deber铆a pasar?
461
+
462
+ 06:44.602 --> 06:47.139
463
+ Pi茅nsalo por favor y cu茅ntame
464
+ en los comentarios.
465
+
466
+ 06:47.265 --> 06:50.496
467
+ Vamos con fn, f6, en mi caso porque tengo
468
+ un laptop,
469
+
470
+ 06:50.622 --> 06:51.949
471
+ compilamos y ejecutamos,
472
+
473
+ 06:52.075 --> 06:55.630
474
+ y dice hemos salido del bucle porque n
475
+ es igual o menor que 10.
476
+
477
+ 06:55.756 --> 06:59.316
478
+ Como evaluamos la expresi贸n
479
+ y fue 0 desde el principio,
480
+
481
+ 06:59.442 --> 07:02.930
482
+ nunca entramos aqu铆,
483
+ nunca entramos ni una sola vez.
484
+
485
+ 07:03.056 --> 07:06.620
486
+ Pero, 驴qu茅 pasa si t煤 quisieras entrar
487
+ al menos una vez?
488
+
489
+ 07:06.746 --> 07:09.120
490
+ Porque tu programa lo amerita.
491
+
492
+ 07:09.553 --> 07:10.513
493
+ 驴Qu茅 pasa ah铆?
494
+
495
+ 07:10.639 --> 07:12.820
496
+ Bueno, para eso existe el do while,
497
+
498
+ 07:12.946 --> 07:18.720
499
+ y es lo que vamos a aprender
500
+ en la pr贸xima clase.
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-while_189ccca7-d3a5-4d0c-8408-4fc807afdccd.c ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include <stdio.h>
2
+ int n = 10;
3
+ int main()
4
+ {
5
+ while (n > 10){
6
+ printf("n es igual a %d\n", n);
7
+ n = n-1;
8
+ }
9
+ printf("hemos salido del bucle porque n es igual o menor que 10");
10
+ return 0;
11
+ }
12
+
13
+
14
+
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Ciclos WHILE y DOWHILE en Programaci贸n.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3e0cd212c53c5528720a189356438a64ca96c70673afb8424fd2dc33e7cb762
3
+ size 69648787
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Ciclos WHILE y DOWHILE en Programaci贸n.vtt ADDED
@@ -0,0 +1,490 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.140 --> 00:06.954
4
+ M谩s adelante veremos el tercer bucle
5
+ que es el ciclo FOR.
6
+
7
+ 00:07.080 --> 00:10.160
8
+ Pero desde ya quiero que vayas teniendo
9
+ clara una cosa.
10
+
11
+ 00:10.712 --> 00:17.040
12
+ Los ciclos WHILE los vamos a utilizar como
13
+ ejecuci贸n condicional en nuestro c贸digo.
14
+
15
+ 00:17.507 --> 00:22.580
16
+ Es decir, tenemos que poner una condici贸n
17
+ y si se cumple vamos a ejecutarlo.
18
+
19
+ 00:22.886 --> 00:25.480
20
+ El ejemplo que te puse va a ser igual
21
+ para un ciclo FOR.
22
+
23
+ 00:25.665 --> 00:26.390
24
+ 驴Por qu茅?
25
+
26
+ 00:26.516 --> 00:31.320
27
+ Porque el ciclo FOR siempre lo vamos a
28
+ usar cuando nosotros sepamos cu谩l
29
+
30
+ 00:31.320 --> 00:33.440
31
+ es la cantidad de elementos
32
+ que querramos iterar.
33
+
34
+ 00:33.440 --> 00:35.040
35
+ 驴Ok?
36
+ Toma en cuenta eso.
37
+
38
+ 00:35.040 --> 00:39.063
39
+ Ciclo FOR, cuando t煤 tengas claro cu谩ntos
40
+ elementos vas a iterar.
41
+
42
+ 00:39.203 --> 00:44.480
43
+ Ciclo WHILE, cuando vayas a hacer
44
+ una ejecuci贸n condicional de tu bucle.
45
+
46
+ 00:44.930 --> 00:50.234
47
+ Y aqu铆 de nuevo, un WHILE, por ejemplo,
48
+ podr铆a ser para un robot de minisumo.
49
+
50
+ 00:50.360 --> 00:52.198
51
+ Que los minisumos
52
+ son estos peque帽os robots
53
+
54
+ 00:52.323 --> 00:54.400
55
+ que se tienen que encontrar unos a otros
56
+
57
+ 00:54.400 --> 00:57.080
58
+ y sacar del dojo, como los sumos grandes
59
+ pero en rob贸tico.
60
+
61
+ 00:57.536 --> 01:02.240
62
+ Bueno, un WHILE podr铆a ser mientras est谩s
63
+ en la rutina de b煤squeda y la condici贸n
64
+
65
+ 01:02.240 --> 01:07.342
66
+ ser铆a que si encontraste algo, entonces el
67
+ WHILE se deja de cumplir, te sales de ah铆
68
+
69
+ 01:07.468 --> 01:11.061
70
+ y comienzas a otra rutina
71
+ que ser铆a de persecuci贸n
72
+
73
+ 01:11.187 --> 01:13.551
74
+ al objetivo que has encontrado
75
+ y de sacarlo.
76
+
77
+ 01:13.951 --> 01:16.381
78
+ Eso ser铆a un ejemplo de
79
+ una ejecuci贸n condicional
80
+
81
+ 01:16.507 --> 01:18.672
82
+ en donde depende de factores externos.
83
+
84
+ 01:18.798 --> 01:21.116
85
+ Por ejemplo, de que el usuario
86
+ ponga un input,
87
+
88
+ 01:21.242 --> 01:22.880
89
+ de que tu robot detecte algo,
90
+
91
+ 01:23.125 --> 01:26.840
92
+ de que tu software sienta o vea un cambio
93
+ en su programa.
94
+
95
+ 01:27.267 --> 01:30.302
96
+ Esto es lo que nosotros vamos a estar
97
+ buscando con los ciclos WHILE.
98
+
99
+ 01:30.428 --> 01:34.447
100
+ Estos peque帽os cambios que si no ocurren,
101
+ todo est谩 cool,
102
+
103
+ 01:34.573 --> 01:37.899
104
+ todo est谩 bien y el programa se puede
105
+ seguir bucleando.
106
+
107
+ 01:38.319 --> 01:39.480
108
+ 驴Todo claro? Muy bien.
109
+
110
+ 01:39.936 --> 01:44.400
111
+ Otro ejemplo de este caso de uso, por
112
+ ejemplo en C o en cuestiones de drivers,
113
+
114
+ 01:44.400 --> 01:47.259
115
+ podr铆a ser un WHILE para que mientras
116
+
117
+ 01:47.384 --> 01:50.976
118
+ se est谩n pasando archivos
119
+ de un chip a otro chip,
120
+
121
+ 01:51.102 --> 01:53.806
122
+ ok, mientras hay una
123
+ transferencia de archivos,
124
+
125
+ 01:53.932 --> 01:56.396
126
+ no hagas nada,
127
+ simplemente transfiera archivos.
128
+
129
+ 01:56.536 --> 01:58.458
130
+ Cuando termin贸 la transferencia,
131
+
132
+ 01:58.583 --> 02:00.920
133
+ te podr铆as salir del ciclo WHILE y podr铆as
134
+
135
+ 02:00.920 --> 02:03.200
136
+ simple y sencillamente continuar
137
+ con la ejecuci贸n de tu programa.
138
+
139
+ 02:03.752 --> 02:05.649
140
+ 驴Cu谩l es la clave aqu铆?
141
+
142
+ 02:05.929 --> 02:09.470
143
+ Que t煤 no sabes de antemano
144
+ cu谩ndo vas a acabar,
145
+
146
+ 02:09.596 --> 02:11.440
147
+ por ejemplo,
148
+ la transferencia de archivos.
149
+
150
+ 02:11.440 --> 02:16.400
151
+ T煤 no sabes de antemano cu谩ndo vas
152
+ a detectar alg煤n cambio en tus sensores.
153
+
154
+ 02:16.400 --> 02:19.659
155
+ Imag铆nate que haces
156
+ un proyecto que se encarga de cerrar
157
+
158
+ 02:19.785 --> 02:22.135
159
+ autom谩ticamente tus ventanas
160
+ cuando detecta lluvia.
161
+
162
+ 02:22.502 --> 02:24.439
163
+ 驴T煤 sabes cu谩ndo va a llover?
164
+ No.
165
+
166
+ 02:24.565 --> 02:28.625
167
+ Entonces tienes que tener un WHILE que
168
+ est茅 constantemente esperando a la lluvia
169
+
170
+ 02:28.751 --> 02:32.355
171
+ y cuando llegue la lluvia,
172
+ entonces mientras no haya lluvia,
173
+
174
+ 02:32.481 --> 02:34.471
175
+ el WHILE sigue ah铆 buscando lluvia.
176
+
177
+ 02:34.845 --> 02:37.095
178
+ Y t煤 no sabes cu谩ndo va a llover,
179
+ nadie sabe.
180
+
181
+ 02:37.262 --> 02:41.390
182
+ Y cuando llega la lluvia, entonces el
183
+ WHILE detecta la lluvia con tu sensor,
184
+
185
+ 02:41.516 --> 02:44.260
186
+ cambias una variable
187
+ para que la condici贸n
188
+
189
+ 02:44.386 --> 02:46.840
190
+ se deje de cumplir
191
+ y te vas al resto del c贸digo,
192
+
193
+ 02:46.840 --> 02:49.800
194
+ que ser铆a simple y sencillamente
195
+ cerrar la ventana.
196
+
197
+ 02:50.473 --> 02:54.726
198
+ 驴Qu茅 pasa con esto?
199
+ El WHILE es una herramienta
200
+
201
+ 02:54.852 --> 02:57.400
202
+ poderos铆sima y quiero
203
+ que te quede claro
204
+
205
+ 02:57.400 --> 03:02.410
206
+ que se utiliza para bucles cuando
207
+ tienen una ejecuci贸n condicional.
208
+
209
+ 03:02.536 --> 03:07.474
210
+ Con esto dicho, vamos a ver al hermano
211
+ del WHILE que es el doWHILE all谩.
212
+
213
+ 03:07.600 --> 03:08.480
214
+ Vamos a eso.
215
+
216
+ 03:08.606 --> 03:11.027
217
+ Creamos un nuevo archivo
218
+ en nuestro editor y lo guardamos.
219
+
220
+ 03:11.153 --> 03:13.393
221
+ Este
222
+ se va a llamar doWHILE,
223
+
224
+ 03:13.519 --> 03:16.647
225
+ que significar铆a haz mientras.c.
226
+
227
+ 03:17.894 --> 03:20.218
228
+ La estructura b谩sica de nuestro doWHILE
229
+
230
+ 03:20.343 --> 03:23.561
231
+ va a ser bien, bien parecida,
232
+ s贸lo que al rev茅s.
233
+
234
+ 03:23.687 --> 03:26.138
235
+ Nosotros vamos a inicializarlo con un do,
236
+
237
+ 03:26.264 --> 03:29.481
238
+ vamos a poner todo el c贸digo
239
+ de nuestro programa
240
+
241
+ 03:29.607 --> 03:31.929
242
+ y vamos a checar con nuestro condicional.
243
+
244
+ 03:32.150 --> 03:36.142
245
+ 驴Qu茅 ganamos
246
+ con poner nuestra condicional al final?
247
+
248
+ 03:36.382 --> 03:39.301
249
+ Ganamos algo muy importante
250
+ en ciertos casos
251
+
252
+ 03:39.427 --> 03:44.869
253
+ y es que vamos a ejecutar
254
+ el c贸digo al menos una sola vez.
255
+
256
+ 03:44.995 --> 03:48.532
257
+ Es decir, aunque
258
+ en el WHILE tradicional
259
+
260
+ 03:48.658 --> 03:51.047
261
+ si la condici贸n no se
262
+ cumple desde el principio,
263
+
264
+ 03:51.173 --> 03:55.006
265
+ no lo ejecutamos nunca, pero en el doWHILE
266
+ lo hacemos al menos una vez.
267
+
268
+ 03:55.132 --> 03:57.369
269
+ Imag铆nate que tuvieras
270
+ que programar un c贸digo
271
+
272
+ 03:57.495 --> 03:59.200
273
+ de muy bajo nivel en donde te encargas
274
+
275
+ 03:59.200 --> 04:03.451
276
+ de la transferencia de archivos
277
+ en tu sistema operativo. 隆Uy, qu茅 miedo!
278
+
279
+ 04:03.577 --> 04:06.495
280
+ Pues no, simplemente tendr铆as
281
+ que ver c贸mo lo hace Windows,
282
+
283
+ 04:06.621 --> 04:08.690
284
+ qu茅 variables te da, qu茅 objetos tienes
285
+
286
+ 04:08.913 --> 04:13.287
287
+ y podr铆as hacer un doWHILE.
288
+ 驴Por qu茅? Porque dentro de esta subrutina,
289
+
290
+ 04:13.413 --> 04:15.353
291
+ dentro de tu
292
+ doWHILE podr铆as verificar
293
+
294
+ 04:15.479 --> 04:18.738
295
+ cu谩l es el peso del archivo,
296
+ ya que lo necesitas saber
297
+
298
+ 04:18.863 --> 04:22.320
299
+ al menos una vez.
300
+ Si t煤 no sabes cu谩l es
301
+
302
+ 04:22.320 --> 04:25.134
303
+ el peso del archivo, 驴c贸mo
304
+ vas a saber si ya terminaste
305
+
306
+ 04:25.259 --> 04:28.738
307
+ de transferirlo o no? Entonces podr铆amos
308
+ hacerlo con un doWHILE.
309
+
310
+ 04:28.864 --> 04:31.561
311
+ Verificamos el peso del archivo
312
+ y verificamos que a煤n
313
+
314
+ 04:31.687 --> 04:34.019
315
+ no hayamos transferido una cantidad igual
316
+
317
+ 04:34.145 --> 04:36.278
318
+ al peso del archivo y repetimos
319
+
320
+ 04:36.403 --> 04:40.888
321
+ el bucle hasta que ya
322
+ el archivo completo se transfiri贸.
323
+
324
+ 04:41.014 --> 04:43.245
325
+ Y as铆 de f谩cil podr铆amos
326
+ ver un caso de uso.
327
+
328
+ 04:43.371 --> 04:45.249
329
+ Entonces siempre que t煤 digas,
330
+
331
+ 04:45.375 --> 04:47.514
332
+ ah, pero yo necesito que se haga
333
+ al menos una vez esto.
334
+
335
+ 04:47.640 --> 04:49.732
336
+ 驴Y cu谩ndo vas a, como programadora
337
+
338
+ 04:49.858 --> 04:51.759
339
+ o como programador, tener estos casos?
340
+
341
+ 04:51.885 --> 04:53.736
342
+ Cuando tienes que inicializar algo.
343
+
344
+ 04:54.043 --> 04:56.080
345
+ Imag铆nate que tienes un robot
346
+
347
+ 04:56.080 --> 04:59.033
348
+ y tienes que asegurarte,
349
+ antes de que el robot haga cualquier cosa,
350
+
351
+ 04:59.159 --> 05:00.924
352
+ tienes que asegurarte de que el robot
353
+
354
+ 05:01.050 --> 05:03.409
355
+ est谩 sensando de forma correcta,
356
+
357
+ 05:03.534 --> 05:06.626
358
+ de que los sensores est谩n funcionando.
359
+ Entonces podr铆amos
360
+
361
+ 05:06.752 --> 05:09.476
362
+ hacer un c贸digo de inicializaci贸n
363
+ que utilice un doWHILE,
364
+
365
+ 05:09.736 --> 05:12.394
366
+ que diga, ok, el sensor 1,
367
+ le mandas un voltaje,
368
+
369
+ 05:12.520 --> 05:14.050
370
+ esperas una respuesta del sensor,
371
+
372
+ 05:14.176 --> 05:16.973
373
+ si hay respuesta entonces
374
+ ok, el sensor funcion贸.
375
+
376
+ 05:17.480 --> 05:20.347
377
+ Y si no hay respuesta,
378
+ y eso puede ser la primera vez
379
+
380
+ 05:20.473 --> 05:22.017
381
+ que ejecutas tu c贸digo, 驴no?
382
+
383
+ 05:22.143 --> 05:23.940
384
+ Todos los sensores
385
+ funcionaron en la primera,
386
+
387
+ 05:24.066 --> 05:26.674
388
+ pero si no funcionaron en la primera,
389
+ simplemente repites
390
+
391
+ 05:26.800 --> 05:30.480
392
+ ese c贸digo hasta que
393
+ todos los sensores est茅n inicializados
394
+
395
+ 05:30.606 --> 05:32.890
396
+ y ah铆 s铆 puedes decir, ah, ok,
397
+ mi robot est谩 perfecto.
398
+
399
+ 05:33.016 --> 05:36.507
400
+ Yo lo hac铆a, este tipo
401
+ de subroutinas de inicializaci贸n
402
+
403
+ 05:36.633 --> 05:39.097
404
+ son buenas porque t煤 tienes que verificar
405
+
406
+ 05:39.223 --> 05:40.318
407
+ de alguna forma que los sensores
408
+
409
+ 05:40.443 --> 05:43.740
410
+ est谩n funcionando
411
+ o todo tu c贸digo va a ser in煤til.
412
+
413
+ 05:43.866 --> 05:46.179
414
+ En rob贸tica, si tu sensor est谩 roto,
415
+
416
+ 05:46.305 --> 05:50.176
417
+ tu c贸digo podr谩 estar escrito
418
+ con las mejores pr谩cticas y perfecto,
419
+
420
+ 05:50.302 --> 05:51.829
421
+ pero si el sensor no te manda inputs,
422
+
423
+ 05:51.955 --> 05:54.232
424
+ no te manda valores,
425
+ tu robot no va a hacer nada.
426
+
427
+ 05:54.358 --> 05:55.815
428
+ Por eso es un buen uso.
429
+
430
+ 05:55.940 --> 05:59.417
431
+ Inicializaci贸n de cosas
432
+ es un muy buen uso del do-while.
433
+
434
+ 05:59.630 --> 06:01.401
435
+ Te voy a dejar un desaf铆o.
436
+
437
+ 06:01.527 --> 06:04.600
438
+ Este desaf铆o va a ser que el
439
+ while que hicimos aqu铆,
440
+
441
+ 06:04.600 --> 06:07.158
442
+ que lo pases a la estructura
443
+ de do-while, solo para que la veas
444
+
445
+ 06:07.283 --> 06:09.840
446
+ en funcionamiento.
447
+ M谩s adelante, ya cuando
448
+
449
+ 06:09.840 --> 06:12.702
450
+ veamos arrays, podremos
451
+ ver ejemplos m谩s completos de esto.
452
+
453
+ 06:13.042 --> 06:14.920
454
+ Pero mientras, te dejo ese desaf铆o
455
+
456
+ 06:14.920 --> 06:18.178
457
+ porque es el mismo c贸digo
458
+ que tenemos ac谩, t茅cnicamente,
459
+
460
+ 06:18.303 --> 06:20.886
461
+ simplemente lo tienes que reacomodar.
462
+
463
+ 06:21.012 --> 06:24.557
464
+ Y mu茅strame si entendiste
465
+ las diferencias, piensa un caso
466
+
467
+ 06:24.683 --> 06:27.680
468
+ de uso que t煤 tendr铆as.
469
+ Puede ser en rob贸tica,
470
+
471
+ 06:27.680 --> 06:30.435
472
+ puede ser en cuestiones
473
+ de desarrollo de software tradicional,
474
+
475
+ 06:30.561 --> 06:32.439
476
+ lo que se te ocurra. Cu茅ntame,
477
+
478
+ 06:32.565 --> 06:36.320
479
+ do y do-while, que sea tu apunte
480
+ en donde me dejas claras
481
+
482
+ 06:36.446 --> 06:38.240
483
+ las diferencias y nos vemos
484
+
485
+ 06:38.240 --> 06:40.333
486
+ con esto en la 煤ltima clase
487
+ de este m贸dulo,
488
+
489
+ 06:40.459 --> 06:43.396
490
+ en donde veremos el ciclo for.
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-dowhile_093e5362-d724-4dea-b1c3-7269ab208dd6.c ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ do
2
+ {
3
+ /* code */
4
+ } while (/* condition */);
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Lecturas recomendadas.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ https://youtu.be/X_yQUzzl1qM
2
+ https://youtu.be/i678o8yDSKY
3
+ https://youtu.be/LO6kESS-Lu8
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Uso del Ciclo FOR en Programaci贸n en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e76378bc8513d0a9587161935885c0d044ed5c3f6ec10da8d59ac0a992fe833e
3
+ size 62309502
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Uso del Ciclo FOR en Programaci贸n en C.vtt ADDED
@@ -0,0 +1,416 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.366 --> 00:05.321
4
+ El ciclo FOR lo vamos
5
+ a utilizar siempre
6
+
7
+ 00:05.447 --> 00:07.874
8
+ que tengamos clara
9
+ la cantidad de elementos
10
+
11
+ 00:08.000 --> 00:12.200
12
+ que vamos a analizar o a recorrer o que
13
+ esperamos tener simple y sencillamente.
14
+
15
+ 00:12.555 --> 00:14.080
16
+ Te voy a mostrar c贸mo se escribe.
17
+
18
+ 00:14.481 --> 00:16.412
19
+ Lo primero es crear un nuevo archivo.
20
+
21
+ 00:16.538 --> 00:18.727
22
+ Vamos a declarar nuestro ciclo FOR.
23
+
24
+ 00:18.853 --> 00:22.549
25
+ Ah, primero hay que guardarlo,
26
+ por supuesto, FOR.C.
27
+
28
+ 00:22.936 --> 00:27.147
29
+ Vamos a escribir FOR
30
+ y vamos a declarar nuestro bucle.
31
+
32
+ 00:27.273 --> 00:31.741
33
+ La forma m谩s tradicional del FOR
34
+ es i igual a cero.
35
+
36
+ 00:31.867 --> 00:36.279
37
+ Vamos a inicializar nuestra variable i
38
+ en alg煤n valor.
39
+
40
+ 00:36.432 --> 00:40.440
41
+ Luego vamos a decir un condicional
42
+ que siempre va a ser i mayor que,
43
+
44
+ 00:40.440 --> 00:43.126
45
+ i menor que, i igual o mayor que, etc.
46
+
47
+ 00:43.412 --> 00:50.040
48
+ Por ejemplo, cuando i es menor que n,
49
+ entonces suma i m谩s m谩s.
50
+
51
+ 00:52.770 --> 00:54.503
52
+ Esto ser铆a el ciclo FOR.
53
+
54
+ 00:54.629 --> 00:56.480
55
+ As铆 de simple, as铆 de sencillo.
56
+
57
+ 00:56.480 --> 00:58.042
58
+ Obviamente podremos tener llaves.
59
+
60
+ 00:58.168 --> 01:02.333
61
+ Vamos a poner un printf y en este printf
62
+
63
+ 01:02.459 --> 01:09.044
64
+ yo voy a decirle el valor actual de i es,
65
+
66
+ 01:09.691 --> 01:13.657
67
+ por ciento de, salto de l铆nea, slash n,
68
+
69
+ 01:14.323 --> 01:17.310
70
+ muy bien, i coma la variable i.
71
+
72
+ 01:18.480 --> 01:23.708
73
+ Ah铆 lo que estamos haciendo es simple
74
+ y sencillamente recorrer un n煤mero,
75
+
76
+ 01:23.834 --> 01:25.941
77
+ un set dado que va a ser n.
78
+
79
+ 01:26.067 --> 01:29.191
80
+ Nosotros ya tenemos que saber cu谩l
81
+ va a ser el tama帽o de n
82
+
83
+ 01:29.317 --> 01:31.892
84
+ y lo vamos a ir recorriendo en intervalos
85
+ de uno.
86
+
87
+ 01:32.018 --> 01:35.469
88
+ Y m谩s m谩s simplemente
89
+ le suma un uno a esto.
90
+
91
+ 01:35.595 --> 01:37.945
92
+ Ya te voy a mostrar para que te quede
93
+ mucho m谩s claro.
94
+
95
+ 01:38.432 --> 01:40.703
96
+ Vamos a hacer esto justo ahora,
97
+
98
+ 01:40.829 --> 01:44.686
99
+ pero quiero que te vaya quedando claro
100
+ que el ciclo FOR nos va a servir
101
+
102
+ 01:44.812 --> 01:48.903
103
+ cuando nosotros conocemos el tama帽o
104
+ del objeto que queremos recorrer.
105
+
106
+ 01:49.029 --> 01:53.763
107
+ Y m谩s precisamente, se suelen utilizar
108
+ much铆simo para hacer recorridos de arrays.
109
+
110
+ 01:53.923 --> 01:57.120
111
+ As铆 que hagamos todo el boilerplate
112
+ de nuestro c贸digo.
113
+
114
+ 01:57.246 --> 02:03.067
115
+ Vamos a declarar hashtag include,
116
+ vamos a ponerle stdio.h,
117
+
118
+ 02:03.800 --> 02:06.508
119
+ vamos a cerrar y declaramos nuestro main.
120
+
121
+ 02:06.846 --> 02:08.321
122
+ Muy bien.
123
+
124
+ 02:09.940 --> 02:11.180
125
+ Borramos esto.
126
+
127
+ 02:11.865 --> 02:14.199
128
+ Vamos aqu铆 a poner todo el c贸digo
129
+
130
+ 02:14.325 --> 02:16.565
131
+ que acabamos de escribir
132
+ para que no se pierda.
133
+
134
+ 02:16.966 --> 02:20.784
135
+ Vamos a ponerlo ac谩 y como bien sabes,
136
+ no necesito crear este FOR,
137
+
138
+ 02:20.910 --> 02:22.734
139
+ o sea, no necesito que sea un bloque
140
+
141
+ 02:22.860 --> 02:26.431
142
+ porque ya de por s铆 solo tengo
143
+ una l铆nea de c贸digo.
144
+
145
+ 02:26.671 --> 02:28.717
146
+ As铆 que vamos a quitarle estas llaves.
147
+
148
+ 02:29.366 --> 02:31.286
149
+ Hay que seguir las buenas pr谩cticas.
150
+
151
+ 02:32.503 --> 02:34.960
152
+ Y con esto nos falta un par de cosas.
153
+
154
+ 02:34.960 --> 02:36.440
155
+ Lo primero es declarar n.
156
+
157
+ 02:36.841 --> 02:41.760
158
+ int, 驴qu茅 va a ser n?
159
+
160
+ 02:41.760 --> 02:46.920
161
+ Va a ser igual a, no s茅, vamos a ponerlo
162
+ que n sea igual a 1.
163
+
164
+ 02:48.941 --> 02:52.680
165
+ No, n tiene que ser m谩s o menos un 30.
166
+
167
+ 02:52.959 --> 02:54.039
168
+ Bien, punto y coma.
169
+
170
+ 02:54.345 --> 02:58.310
171
+ Digamos que queremos recorrer un array
172
+ de 30 posiciones totales.
173
+
174
+ 02:58.735 --> 03:01.137
175
+ Y, y va a ser inicializada en 0.
176
+
177
+ 03:01.263 --> 03:06.602
178
+ Es decir, y va a empezar en 0,
179
+ va a ir a 1, 2, 3, 4, hasta que sea 30.
180
+
181
+ 03:06.728 --> 03:11.090
182
+ Y cuando y sea 30, entonces,
183
+ 驴30 es menor que 30?
184
+
185
+ 03:11.216 --> 03:11.976
186
+ No.
187
+
188
+ 03:12.102 --> 03:14.466
189
+ Y ah铆 se va a cumplir absolutamente todo.
190
+
191
+ 03:14.592 --> 03:20.520
192
+ Entonces vamos a declarar int i igual a 0
193
+ y i menos 1.
194
+
195
+ 03:20.520 --> 03:21.544
196
+ Perfecto.
197
+
198
+ 03:21.710 --> 03:22.762
199
+ Lo tenemos listo.
200
+
201
+ 03:22.888 --> 03:25.320
202
+ Vamos a guardar y vamos a ejecutar esto.
203
+
204
+ 03:26.353 --> 03:27.578
205
+ F6.
206
+
207
+ 03:28.411 --> 03:30.520
208
+ Ah, y mira, nos dice la terminal.
209
+
210
+ 03:30.646 --> 03:36.737
211
+ Oye, as铆 como lo declaraste,
212
+ solo se permit铆a en C99 y C11,
213
+
214
+ 03:36.863 --> 03:39.200
215
+ que son est谩ndares anteriores
216
+ del lenguaje.
217
+
218
+ 03:39.200 --> 03:42.642
219
+ As铆 que declaremos, no pasa nada,
220
+ declaremos nuestra i afuera.
221
+
222
+ 03:43.149 --> 03:45.280
223
+ int i, punto y coma.
224
+
225
+ 03:46.232 --> 03:49.840
226
+ Vamos a poner esto y ahora s铆 ejecutemos
227
+ nuestro c贸digo.
228
+
229
+ 03:50.519 --> 03:51.999
230
+ Vamos al terminal.
231
+
232
+ 03:52.771 --> 03:53.880
233
+ Y perfecto.
234
+
235
+ 03:54.113 --> 03:55.793
236
+ Todo est谩 funcionando.
237
+
238
+ 03:56.288 --> 03:57.042
239
+ Muy bien.
240
+
241
+ 03:57.168 --> 04:01.583
242
+ Vamos aqu铆 i es igual 0, i es igual a 1,
243
+ i es igual a 2, i es igual a 3.
244
+
245
+ 04:02.063 --> 04:04.640
246
+ Y as铆 sucesivamente
247
+ hasta que llegamos a 29.
248
+
249
+ 04:04.640 --> 04:06.175
250
+ 驴Qu茅 hicimos aqu铆?
251
+
252
+ 04:06.328 --> 04:07.000
253
+ 驴Qu茅 hicimos?
254
+
255
+ 04:07.153 --> 04:08.753
256
+ Pues fuimos del 0 al 29.
257
+
258
+ 04:09.148 --> 04:12.309
259
+ Lo que ocurri贸 es que recorrimos 30
260
+ posiciones.
261
+
262
+ 04:12.435 --> 04:15.400
263
+ Ya esto es lo 煤nico que quiero
264
+ que te quedes con el for.
265
+
266
+ 04:15.400 --> 04:21.600
267
+ El for se va a utilizar cuando sepamos el
268
+ tama帽o del elemento que queremos analizar.
269
+
270
+ 04:21.600 --> 04:24.080
271
+ Y nos va a servir para en cada uno
272
+ de los elementos.
273
+
274
+ 04:24.080 --> 04:29.080
275
+ Y un array, en resumen, es como lo que ves
276
+ en un vector, 驴no?
277
+
278
+ 04:29.080 --> 04:30.080
279
+ Con varios elementos.
280
+
281
+ 04:30.080 --> 04:33.040
282
+ Una matriz de una dimensi贸n.
283
+
284
+ 04:33.040 --> 04:35.000
285
+ Y esto lo debiste ver en 谩lgebra lineal.
286
+
287
+ 04:35.000 --> 04:38.120
288
+ Entonces vamos a tener que en una matriz
289
+ de una dimensi贸n vas a guardar
290
+
291
+ 04:38.120 --> 04:43.040
292
+ tus valores, 1, 2, 3, 4, 5.
293
+
294
+ 04:43.040 --> 04:46.345
295
+ Esos valores, aqu铆 nosotros, imag铆nate
296
+ que recorri茅ramos
297
+
298
+ 04:46.471 --> 04:47.878
299
+ un array de 30 posiciones.
300
+
301
+ 04:48.160 --> 04:52.320
302
+ En cada una de esas posiciones t煤 podr铆as
303
+ hacer diferentes operaciones.
304
+
305
+ 04:52.320 --> 04:54.640
306
+ Un caso de uso es un robot
307
+ seguidor de l铆neas.
308
+
309
+ 04:54.640 --> 04:58.080
310
+ Te voy a dejar un enlace en la secci贸n
311
+ de comentarios para que veas uno que,
312
+
313
+ 04:58.080 --> 04:59.560
314
+ de hecho, yo trabaj茅.
315
+
316
+ 04:59.560 --> 05:04.560
317
+ Un robot seguidor de l铆neas te va a
318
+ permitir que t煤 tengas varios sensores
319
+
320
+ 05:04.560 --> 05:09.560
321
+ y un array de, si tienes 15 sensores,
322
+ te podr铆as crear un array que recorra
323
+
324
+ 05:09.560 --> 05:12.610
325
+ esos, un ciclo for que recorra
326
+ esos 15 sensores
327
+
328
+ 05:12.736 --> 05:14.724
329
+ y que lea cada uno de los sensores.
330
+
331
+ 05:14.920 --> 05:17.880
332
+ Una vez terminas de leer los 15 sensores,
333
+ entonces dices, ah, OK,
334
+
335
+ 05:17.880 --> 05:20.077
336
+ el robot est谩 en tal posici贸n
337
+ sobre la l铆nea.
338
+
339
+ 05:20.203 --> 05:20.920
340
+ Y ya.
341
+
342
+ 05:20.920 --> 05:23.400
343
+ Le dices a los motores, oye,
344
+ ajustense tantito.
345
+
346
+ 05:23.400 --> 05:26.480
347
+ Ese es un claro uso de c贸mo puedes hacer
348
+ los arrays en cada uno de los
349
+
350
+ 05:26.480 --> 05:27.520
351
+ elementos del array.
352
+
353
+ 05:27.520 --> 05:29.280
354
+ Puedes hacer una operaci贸n diferente.
355
+
356
+ 05:29.280 --> 05:33.960
357
+ Y para eso es uno de los principales usos
358
+ del ciclo o bucle for.
359
+
360
+ 05:33.960 --> 05:37.266
361
+ Cuando nosotros sabemos
362
+ la cantidad total de elementos
363
+
364
+ 05:37.392 --> 05:39.240
365
+ que tenemos que analizar.
366
+
367
+ 05:39.240 --> 05:43.080
368
+ Una 煤ltima cosa es atacar este error
369
+ que nos sali贸 en la terminal,
370
+
371
+ 05:43.080 --> 05:47.480
372
+ en la salida de nuestra compilaci贸n,
373
+ que dec铆a que esto que hicimos
374
+
375
+ 05:47.480 --> 05:50.680
376
+ de declarar int aqu铆, mira,
377
+ s铆gueme, por favor.
378
+
379
+ 05:50.680 --> 05:53.880
380
+ En la pantalla yo hab铆a declarado int i
381
+ igual a 0,
382
+
383
+ 05:53.880 --> 05:58.040
384
+ porque esto se pod铆a
385
+ en las versiones 99 y 11 de C.
386
+
387
+ 05:58.040 --> 06:02.880
388
+ Ahorita estamos trabajando en la versi贸n
389
+ 2018 o la versi贸n 18 de C.
390
+
391
+ 06:02.880 --> 06:04.400
392
+ As铆 que ya no se puede.
393
+
394
+ 06:04.400 --> 06:08.280
395
+ Tiene ciertos detallitos y el mismo
396
+ compilador te los indica.
397
+
398
+ 06:08.280 --> 06:09.120
399
+ Es genial.
400
+
401
+ 06:09.120 --> 06:13.560
402
+ Por eso lo borr茅 de aqu铆 y declar茅
403
+ mi variable i arribita.
404
+
405
+ 06:13.560 --> 06:15.640
406
+ Eso es absolutamente todo lo que hice.
407
+
408
+ 06:15.640 --> 06:20.600
409
+ Y con eso se compuso nuestro c贸digo
410
+ y logramos hacer que funcionara.
411
+
412
+ 06:20.600 --> 06:22.640
413
+ Bueno, eso ser铆a todo por esta clase.
414
+
415
+ 06:22.640 --> 06:28.640
416
+ Sin m谩s, nos vemos en la siguiente.
subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-for_53ab0088-8c9a-4daf-b43d-4b6b92f44274.c ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include<stdio.h>
2
+
3
+ int main()
4
+ {
5
+ int n = 30;
6
+ int i;
7
+ for( i=0; i < n; i++){
8
+ printf("el valor actual de i es %d \n", i);
9
+ }
10
+ printf("el valor actual de i es %d \n", i);
11
+
12
+ }
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/01-Uso de la Instrucci贸n Break en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:480514929180213503a0c875a934fa0aa19e08f00a313462a33d17e2734b01f5
3
+ size 37329390
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Uso del Continue en Bucles de Programaci贸n.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27b050628b136158fff42d3b381ffe665ad9d73b51dd55233142ed63dbdeeb7b
3
+ size 52016548
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Uso del Continue en Bucles de Programaci贸n.vtt ADDED
@@ -0,0 +1,380 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.406 --> 00:06.320
4
+ Ahora tenemos que hablar
5
+ de la instrucci贸n continue.
6
+
7
+ 00:06.446 --> 00:08.310
8
+ Esta se relaciona a la instrucci贸n break
9
+
10
+ 00:08.436 --> 00:10.881
11
+ pero hace lo opuesto,
12
+ simple y sencillamente
13
+
14
+ 00:11.007 --> 00:15.001
15
+ forza que se ejecute
16
+ la pr贸xima iteraci贸n del bucle.
17
+
18
+ 00:15.234 --> 00:17.958
19
+ Entonces, en lugar
20
+ de que te salgas del bucle,
21
+
22
+ 00:18.084 --> 00:22.170
23
+ si t煤 utilizas un continue,
24
+ forzas una iteraci贸n m谩s en tu bucle.
25
+
26
+ 00:22.663 --> 00:25.791
27
+ 驴Qu茅 pasa con esto o cu谩ndo se utilizar铆a?
28
+
29
+ 00:25.917 --> 00:27.135
30
+ Bueno, primero que nada,
31
+
32
+ 00:27.261 --> 00:30.523
33
+ a diferencia del break
34
+ que se puede utilizar en while,
35
+
36
+ 00:30.648 --> 00:33.370
37
+ en do while, en for, en switch,
38
+
39
+ 00:33.658 --> 00:38.963
40
+ el continue solamente se puede
41
+ utilizar en ciclos for, while y do while,
42
+
43
+ 00:39.089 --> 00:41.520
44
+ no se puede utilizar en switch.
45
+
46
+ 00:41.520 --> 00:44.339
47
+ 驴Lo puedes utilizar adentro
48
+ de un while que est茅 dentro de un switch?
49
+
50
+ 00:44.365 --> 00:45.445
51
+ S铆, eso s铆.
52
+
53
+ 00:45.571 --> 00:47.869
54
+ 驴Lo puedes utilizar dentro de un for
55
+ que est茅 dentro de un switch?
56
+
57
+ 00:47.995 --> 00:48.828
58
+ Claro que s铆.
59
+
60
+ 00:48.954 --> 00:52.387
61
+ Recuerda que son cosas diferentes,
62
+ cada uno tiene sus llavecitas
63
+
64
+ 00:52.513 --> 00:57.028
65
+ y cada uno tiene el c贸digo
66
+ que va a estar adentro de esa instrucci贸n.
67
+
68
+ 00:57.368 --> 01:00.045
69
+ Con esto dicho, vamos a ver
70
+ un ejemplo de esta instrucci贸n.
71
+
72
+ 01:00.825 --> 01:01.942
73
+ Para este ejemplo,
74
+
75
+ 01:02.068 --> 01:06.243
76
+ y vamos a irnos a nuestro ciclo for
77
+ que ya ten铆amos previamente,
78
+
79
+ 01:06.410 --> 01:09.371
80
+ voy a agregar aqu铆
81
+ unas peque帽as llavecitas,
82
+
83
+ 01:10.371 --> 01:12.997
84
+ control x y la cierro aqu铆 abajo
85
+
86
+ 01:13.123 --> 01:14.356
87
+ para que est茅 todo bien.
88
+
89
+ 01:14.482 --> 01:17.615
90
+ Vamos a identar para que se sepa
91
+ que esto pertenece al for
92
+
93
+ 01:17.741 --> 01:19.833
94
+ y vamos a dejar un espacio.
95
+
96
+ 01:20.676 --> 01:22.587
97
+ Quiero que primero veas qu茅 pasa
98
+
99
+ 01:22.713 --> 01:24.913
100
+ cuando ponemos
101
+ la instrucci贸n continue,
102
+
103
+ 01:25.039 --> 01:29.159
104
+ la voy a poner comentada
105
+ para empezar, continue,
106
+
107
+ 01:29.873 --> 01:33.136
108
+ punto y coma, muy bien,
109
+ guardamos y vamos a ver
110
+
111
+ 01:33.262 --> 01:36.262
112
+ c贸mo funciona nuestro
113
+ bucle for de forma normal,
114
+
115
+ 01:36.388 --> 01:38.833
116
+ c贸mo lo hab铆amos dejado
117
+ funcionando en clases anteriores.
118
+
119
+ 01:38.959 --> 01:43.251
120
+ Se imprim铆a todo bonito del 0 al 29,
121
+
122
+ 01:43.377 --> 01:46.585
123
+ 30 impresiones, que era
124
+ lo que nosotros quer铆amos hacer.
125
+
126
+ 01:46.731 --> 01:49.039
127
+ Ahora, 驴qu茅 pasa
128
+ si yo agrego continue aqu铆?
129
+
130
+ 01:49.506 --> 01:53.610
131
+ Guardo y ejecuto mi c贸digo.
132
+ 驴Qu茅 cambia con la instrucci贸n continue?
133
+
134
+ 01:53.736 --> 01:54.993
135
+ Quiero que vayas pensando,
136
+
137
+ 01:55.083 --> 01:58.454
138
+ con base a lo que ya te expliqu茅,
139
+ qu茅 es lo que va a pasar.
140
+
141
+ 01:58.981 --> 02:01.060
142
+ Y mira, ya vimos la salida,
143
+
144
+ 02:01.353 --> 02:06.428
145
+ b谩sicamente la salida fue nula,
146
+ no nos imprimi贸 absolutamente nada.
147
+
148
+ 02:06.781 --> 02:09.618
149
+ 驴Y por qu茅 es esto?
150
+ 驴Por qu茅 ocurre esto?
151
+
152
+ 02:10.051 --> 02:12.389
153
+ Bueno, pues simple y sencillamente
154
+
155
+ 02:12.515 --> 02:15.812
156
+ porque lo que hace el ciclo continue,
157
+ como te lo expliqu茅 previamente,
158
+
159
+ 02:15.938 --> 02:19.433
160
+ es forzar la ejecuci贸n del siguiente bucle
161
+
162
+ 02:19.559 --> 02:21.597
163
+ y se va al siguiente y se va al siguiente
164
+
165
+ 02:21.723 --> 02:27.349
166
+ sin tomar en cuenta la parte
167
+ de imprimir nuestros valores.
168
+
169
+ 02:27.475 --> 02:28.714
170
+ Veamos aqu铆 ya una comparaci贸n
171
+
172
+ 02:28.840 --> 02:31.576
173
+ m谩s clara con break, 驴qu茅
174
+ pasa si ponemos un break?
175
+
176
+ 02:33.236 --> 02:35.132
177
+ Bueno, vamos a ejecutar este c贸digo
178
+
179
+ 02:35.258 --> 02:37.696
180
+ y ahorita te voy a mostrar un caso
181
+ de uso del continue,
182
+
183
+ 02:37.922 --> 02:41.102
184
+ pero quiero decirte una realidad
185
+ y es que el break nos saca
186
+
187
+ 02:41.228 --> 02:42.376
188
+ del ciclo for directamente,
189
+
190
+ 02:42.502 --> 02:46.185
191
+ el continue ejecut贸 30 veces el bucle
192
+ y despu茅s nos sac贸,
193
+
194
+ 02:46.318 --> 02:47.884
195
+ quiero que tengas eso claro.
196
+
197
+ 02:48.010 --> 02:50.794
198
+ Ahora quiero que hagamos un 煤ltimo
199
+ experimento en c贸digo y vamos
200
+
201
+ 02:50.920 --> 02:53.989
202
+ a poner otra vez nuestrocontinue,
203
+ vamos a ponerle punto y coma
204
+
205
+ 02:54.889 --> 02:57.164
206
+ y este print, que es el valor actual de i,
207
+
208
+ 02:57.290 --> 02:59.138
209
+ que obviamente
210
+ nos lo estamos saltando,
211
+
212
+ 02:59.263 --> 03:02.350
213
+ lo voy a imprimir afuera
214
+ del bucle para que sepamos
215
+
216
+ 03:02.476 --> 03:05.471
217
+ esta diferencia entre
218
+ continue y entre break,
219
+
220
+ 03:05.597 --> 03:08.832
221
+ para que no te quede tan abstracta.
222
+ Entonces voy a ejecutar
223
+
224
+ 03:08.958 --> 03:14.220
225
+ este c贸digo que tengo aqu铆,
226
+ fn f6 en mi computador,
227
+
228
+ 03:14.346 --> 03:16.258
229
+ f6 si est谩s en una compu normal
230
+
231
+ 03:16.384 --> 03:21.231
232
+ y mira que aqu铆 el continue
233
+ simplemente evit贸 que se imprimiera
234
+
235
+ 03:21.357 --> 03:23.240
236
+ uno a uno lo que ten铆amos en el bucle,
237
+
238
+ 03:23.240 --> 03:26.333
239
+ pero cuando nos salimos del bucle
240
+ s铆 que se imprime
241
+
242
+ 03:26.459 --> 03:28.824
243
+ y nos muestra
244
+ que el valor de i es 30,
245
+
246
+ 03:28.950 --> 03:32.838
247
+ 驴por qu茅? porque se
248
+ hicieron las 30 iteraciones,
249
+
250
+ 03:32.963 --> 03:37.901
251
+ el continue nos forza
252
+ a que se itere en nuestro ciclo for,
253
+
254
+ 03:38.027 --> 03:40.825
255
+ como deber铆a hacerlo,
256
+ solamente que nos saltamos
257
+
258
+ 03:40.951 --> 03:42.535
259
+ todo el c贸digo que ten铆amos ah铆,
260
+
261
+ 03:42.661 --> 03:44.838
262
+ porque el continue le dice
263
+ vete al siguiente bucle,
264
+
265
+ 03:44.963 --> 03:47.560
266
+ vete al siguiente ciclo de este bucle.
267
+
268
+ 03:48.089 --> 03:51.758
269
+ Ahora vamos a ir a nuestro
270
+ break para que veas la diferencia,
271
+
272
+ 03:53.050 --> 03:57.015
273
+ muy bien, vamos a guardar
274
+ y vamos a compilar,
275
+
276
+ 03:58.055 --> 04:00.138
277
+ esperamos el resultado en nuestra terminal
278
+
279
+ 04:00.305 --> 04:02.360
280
+ y mira el valor actual de i es 0,
281
+
282
+ 04:02.360 --> 04:04.926
283
+ 驴what? claro porque entramos al for,
284
+
285
+ 04:05.052 --> 04:09.216
286
+ llega el break y se rompe el for
287
+ y luego se imprime 0,
288
+
289
+ 04:09.609 --> 04:13.182
290
+ con esto estoy seguro que ya
291
+ te qued贸 s煤per clara la diferencia,
292
+
293
+ 04:13.308 --> 04:14.801
294
+ ya nada m谩s te quiero contar
295
+
296
+ 04:14.927 --> 04:18.097
297
+ que la instrucci贸n continue
298
+ de verdad yo llevo mucho tiempo
299
+
300
+ 04:18.223 --> 04:22.530
301
+ programando en c a帽os
302
+ y es muy raro utilizarla,
303
+
304
+ 04:22.656 --> 04:26.460
305
+ pero en caso de que digas,
306
+ profe, entonces para qu茅 me las ense帽as,
307
+
308
+ 04:26.586 --> 04:28.686
309
+ imag铆nate que tienes un programa
310
+
311
+ 04:28.812 --> 04:32.611
312
+ en donde no necesitas que se impriman
313
+ n煤meros negativos,
314
+
315
+ 04:33.184 --> 04:35.115
316
+ ah铆 puedes poner un peque帽o if
317
+
318
+ 04:35.375 --> 04:37.825
319
+ que detecte si el valor
320
+ va a ser negativo
321
+
322
+ 04:38.005 --> 04:40.736
323
+ y si el valor va a ser negativo
324
+ le pones un continue,
325
+
326
+ 04:41.069 --> 04:43.918
327
+ ese continue se va
328
+ a encargar de que te saltes
329
+
330
+ 04:44.043 --> 04:48.192
331
+ esa impresi贸n y no hagas
332
+ la impresi贸n del n煤mero negativo,
333
+
334
+ 04:48.318 --> 04:50.218
335
+ esto te servir铆a
336
+ en muchas ocasiones,
337
+
338
+ 04:50.344 --> 04:53.160
339
+ por ejemplo si tienes
340
+ un while infinito en donde
341
+
342
+ 04:53.286 --> 04:55.714
343
+ t煤 no quieras hacer
344
+ operaciones con n煤meros negativos,
345
+
346
+ 04:55.840 --> 04:57.957
347
+ bueno siempre que detectes un negativo
348
+
349
+ 04:58.083 --> 05:01.018
350
+ le metes un continue
351
+ y eso hace que hagas el skip
352
+
353
+ 05:01.143 --> 05:05.502
354
+ solamente de un ciclo,
355
+ de una ejecuci贸n de tu bucle
356
+
357
+ 05:05.628 --> 05:07.292
358
+ sin necesidad de que te salgas
359
+
360
+ 05:07.418 --> 05:09.804
361
+ y tengas que hacer much铆simo
362
+ c贸digo para manejarlo,
363
+
364
+ 05:09.930 --> 05:14.514
365
+ esa es la verdad uno de los
366
+ casos de uso m谩s reales del continue,
367
+
368
+ 05:14.808 --> 05:17.200
369
+ cuando quieres que algo muy espec铆fico
370
+
371
+ 05:17.200 --> 05:20.618
372
+ que est谩s detectando
373
+ con un if dentro de un bucle while,
374
+
375
+ 05:20.743 --> 05:22.986
376
+ for o do while se salte,
377
+
378
+ 05:23.173 --> 05:26.613
379
+ con esto dicho
380
+ nos vemos en la pr贸xima clase.
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-Uso seguro de GOTO en manejo de errores en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:50705e4638946a962113a399dd9b1bb22865de4fb6acad7cbdbd54b8e9bc0384
3
+ size 52691944
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-Uso seguro de GOTO en manejo de errores en C.vtt ADDED
@@ -0,0 +1,371 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:03.459 --> 00:08.000
4
+ Hablemos de la instrucci贸n GOTO
5
+ y de las etiquetas o labels.
6
+
7
+ 00:08.387 --> 00:10.022
8
+ Esta instrucci贸n a m铆 me parece bien
9
+
10
+ 00:10.148 --> 00:14.365
11
+ curiosa y te voy a hacer 100% honesto,
12
+ innecesaria.
13
+
14
+ 00:14.589 --> 00:18.414
15
+ Yo en mi vida programando en
16
+ este lenguaje nunca la he utilizado,
17
+
18
+ 00:18.540 --> 00:21.286
19
+ ya que puede inducirte
20
+ muy malas pr谩cticas,
21
+
22
+ 00:21.412 --> 00:23.754
23
+ pero a煤n as铆 debo mencionarte que existe,
24
+
25
+ 00:24.176 --> 00:28.000
26
+ y hay un caso de uso que podr铆amos
27
+ considerar apropiado para la misma.
28
+
29
+ 00:28.562 --> 00:31.914
30
+ De hecho, el autor del lenguaje
31
+ en el libro de lenguaje C,
32
+
33
+ 00:32.040 --> 00:34.926
34
+ de C Programming Language, Dennis Ritchie,
35
+
36
+ 00:35.720 --> 00:40.834
37
+ nos comenta que esta es una instrucci贸n
38
+ altamente abusable, y es verdad,
39
+
40
+ 00:40.960 --> 00:44.204
41
+ los programadores
42
+ y las programadoras pueden caer
43
+
44
+ 00:44.330 --> 00:46.917
45
+ en malas pr谩cticas al utilizar GOTO,
46
+
47
+ 00:47.043 --> 00:48.468
48
+ porque esto te permite irte
49
+
50
+ 00:48.594 --> 00:51.837
51
+ a cualquier parte de tu c贸digo,
52
+ no importa d贸nde est茅s.
53
+
54
+ 00:52.357 --> 00:55.393
55
+ Pero eso no es tan bueno como suena.
56
+
57
+ 00:55.607 --> 00:59.253
58
+ Idealmente tu c贸digo deber铆a
59
+ de funcionar por principios,
60
+
61
+ 00:59.379 --> 01:03.998
62
+ sin utilizar GOTO, y toda la l贸gica
63
+ y toda la direcci贸n que vamos a tener,
64
+
65
+ 01:04.124 --> 01:07.282
66
+ la debes de manejar
67
+ ya sea por m谩quinas de estados,
68
+
69
+ 01:07.408 --> 01:10.185
70
+ la debes de manejar por bucles y ciclos,
71
+
72
+ 01:10.311 --> 01:14.613
73
+ todo lo que son estructuras de secuencia
74
+ y control, ciclos if, ciclos while,
75
+
76
+ 01:14.739 --> 01:17.854
77
+ y con eso tienes suficiente
78
+ para que tu programa
79
+
80
+ 01:17.980 --> 01:21.078
81
+ tambi茅n siempre llegue
82
+ a donde debe de llegar.
83
+
84
+ 01:21.204 --> 01:24.123
85
+ Es mil veces mejor
86
+ que hagas una estructura
87
+
88
+ 01:24.249 --> 01:26.407
89
+ de muchos ifs a que utilices GOTO,
90
+
91
+ 01:26.533 --> 01:28.801
92
+ y no es la mejor pr谩ctica hacer 100 ifs,
93
+
94
+ 01:28.926 --> 01:31.654
95
+ recuerda que tienes que ser
96
+ inteligente al programar,
97
+
98
+ 01:31.780 --> 01:34.629
99
+ y bueno, eso es lo que vamos a ir
100
+ aprendiendo a lo largo de estos cursos,
101
+
102
+ 01:34.755 --> 01:36.789
103
+ conforme se vaya poniendo m谩s complejo.
104
+
105
+ 01:36.915 --> 01:39.078
106
+ Primero, necesitas
107
+ entender una a una todas
108
+
109
+ 01:39.203 --> 01:41.720
110
+ las herramientas
111
+ que componen este lenguaje,
112
+
113
+ 01:42.080 --> 01:45.274
114
+ as铆 que vamos a ver el 煤nico caso de uso
115
+ que yo recomiendo para GOTO.
116
+
117
+ 01:46.337 --> 01:50.724
118
+ Vamos a nuestro editor de c贸digo,
119
+ vamos a abrir una nueva pesta帽a,
120
+
121
+ 01:51.237 --> 01:55.357
122
+ y la vamos a guardar, recuerda que para
123
+ abrir una nueva pesta帽a es control N,
124
+
125
+ 01:55.483 --> 01:59.000
126
+ y para guardar es control S, goto.c.
127
+
128
+ 02:00.139 --> 02:04.440
129
+ Excelente, ya la tenemos aqu铆 lista,
130
+ ahora vamos a escribir el c贸digo,
131
+
132
+ 02:04.440 --> 02:06.080
133
+ y aqu铆 te voy a poner un ejemplo.
134
+
135
+ 02:06.473 --> 02:09.563
136
+ Imag铆nate que t煤 entras a un ciclo for,
137
+
138
+ 02:11.887 --> 02:13.778
139
+ vamos a ponerle aqu铆 cualquier cosa,
140
+
141
+ 02:13.903 --> 02:16.160
142
+ lo voy a dejar vac铆o de hecho,
143
+ no hace falta esto,
144
+
145
+ 02:17.628 --> 02:21.347
146
+ la buena pr谩ctica
147
+ es que cuando dejas un for vac铆o,
148
+
149
+ 02:21.473 --> 02:23.810
150
+ como para ejemplificar en una especie de,
151
+
152
+ 02:23.936 --> 02:27.262
153
+ obviamente esto no va a compilar,
154
+ pero solo quiero que tengan el ejemplo,
155
+
156
+ 02:28.215 --> 02:30.679
157
+ hay que ponerle puntos adentro.
158
+
159
+ 02:34.838 --> 02:38.739
160
+ Ok, vamos a usar los code snippets,
161
+ me gusta m谩s la idea.
162
+
163
+ 02:40.746 --> 02:41.765
164
+ Muy bien.
165
+
166
+ 02:41.891 --> 02:43.899
167
+ Cuando tenemos varias estructuras,
168
+
169
+ 02:44.025 --> 02:46.200
170
+ o estamos en una estructura anidada
171
+ como esta,
172
+
173
+ 02:46.200 --> 02:48.120
174
+ en donde hay tres niveles adentro,
175
+
176
+ 02:48.382 --> 02:49.960
177
+ en donde estar铆a nuestro c贸digo,
178
+
179
+ 02:50.422 --> 02:51.840
180
+ eso puede ser peligroso,
181
+
182
+ 02:51.840 --> 02:53.600
183
+ y un break no te va a servir,
184
+
185
+ 02:53.600 --> 02:55.080
186
+ y no te va a sacar de esta,
187
+
188
+ 02:55.307 --> 02:57.600
189
+ porque un break solo te sacar铆a un nivel.
190
+
191
+ 02:58.106 --> 03:01.720
192
+ 驴Qu茅 pasa si entras a una parte
193
+ de tu c贸digo donde no deber铆as entrar,
194
+
195
+ 03:01.943 --> 03:05.880
196
+ y entonces simple y sencillamente tienes
197
+ que salirte de ah铆 lo m谩s r谩pido posible,
198
+
199
+ 03:06.224 --> 03:08.080
200
+ a la parte inicial de tu programa?
201
+
202
+ 03:08.080 --> 03:10.240
203
+ Velo como un reset o un reinicio.
204
+
205
+ 03:10.540 --> 03:12.840
206
+ Cuando llegas a una parte anidada
207
+ de tu c贸digo,
208
+
209
+ 03:13.144 --> 03:14.440
210
+ y encuentras un error,
211
+
212
+ 03:14.684 --> 03:17.520
213
+ ah, bueno, entonces
214
+ puedes utilizar goto ah铆,
215
+
216
+ 03:17.520 --> 03:19.480
217
+ y justo ese es el ejemplo
218
+ que tengo para ti.
219
+
220
+ 03:19.873 --> 03:21.600
221
+ Ah铆 podr铆amos poner,
222
+
223
+ 03:21.600 --> 03:28.080
224
+ si panic, por ejemplo, o desastre,
225
+ lo que t煤 quieras,
226
+
227
+ 03:28.742 --> 03:35.169
228
+ lo que pasar铆a aqu铆 es que nosotros
229
+ ir铆amos goto error handler.
230
+
231
+ 03:37.872 --> 03:40.600
232
+ Y esto ser铆a la instrucci贸n goto,
233
+
234
+ 03:40.726 --> 03:43.000
235
+ y esto ser铆a nuestra etiqueta.
236
+
237
+ 03:43.150 --> 03:46.720
238
+ Obviamente, la etiqueta,
239
+ simple y sencillamente,
240
+
241
+ 03:46.720 --> 03:49.440
242
+ la tendr铆amos que poner afuera del c贸digo.
243
+
244
+ 03:49.440 --> 03:51.840
245
+ Entonces ir铆a afuera del bucle for,
246
+
247
+ 03:51.840 --> 03:54.520
248
+ tendr铆as un mensaje como error handler,
249
+
250
+ 03:55.488 --> 03:56.960
251
+ o manejador de errores,
252
+
253
+ 03:57.388 --> 03:58.520
254
+ dos puntos,
255
+
256
+ 03:58.520 --> 04:01.000
257
+ y aqu铆 pondr铆as todo el c贸digo,
258
+
259
+ 04:04.259 --> 04:05.699
260
+ todo el c贸digo,
261
+
262
+ 04:07.013 --> 04:11.960
263
+ todo el c贸digo para componer tu desastre.
264
+
265
+ 04:14.228 --> 04:15.260
266
+ 驴Qu茅 pasa aqu铆?
267
+
268
+ 04:15.693 --> 04:17.960
269
+ Si en alguna situaci贸n de tu programa
270
+
271
+ 04:17.960 --> 04:19.680
272
+ llegas a tener una condici贸n,
273
+
274
+ 04:19.806 --> 04:22.160
275
+ digamos, tienes un programa de rob贸tica,
276
+
277
+ 04:22.160 --> 04:23.840
278
+ o algo que maneja sensores,
279
+
280
+ 04:23.840 --> 04:25.800
281
+ detectas que un sensor dej贸 de funcionar,
282
+
283
+ 04:25.950 --> 04:28.880
284
+ ah铆 puedes utilizar
285
+ una etiqueta y un goto,
286
+
287
+ 04:29.067 --> 04:32.240
288
+ que simple y sencillamente te saque
289
+ de todo peligro,
290
+
291
+ 04:32.240 --> 04:35.520
292
+ y te mande a una rutina o subrutina
293
+
294
+ 04:35.520 --> 04:37.520
295
+ que se encargue de manejar el error,
296
+
297
+ 04:37.520 --> 04:39.720
298
+ digamos, de recalibrar el sensor,
299
+
300
+ 04:39.720 --> 04:42.520
301
+ que se encargue de apagar el robot
302
+ de forma segura,
303
+
304
+ 04:42.520 --> 04:45.240
305
+ 驴por qu茅? Porque un robot que tiene
306
+ los sensores descompuestos
307
+
308
+ 04:45.240 --> 04:47.640
309
+ es un robot peligroso,
310
+ porque no se dar铆a cuenta
311
+
312
+ 04:47.640 --> 04:49.840
313
+ si est谩 por chocar con un humano,
314
+
315
+ 04:49.840 --> 04:52.440
316
+ si est谩 por chocar con alguna cosa
317
+ que no deber铆a.
318
+
319
+ 04:52.440 --> 04:55.640
320
+ 驴Ok? Los sensores, recuerda,
321
+ son los ojos de un robot.
322
+
323
+ 04:55.770 --> 04:58.040
324
+ Ese es un caso de uso que se me ocurre.
325
+
326
+ 04:58.040 --> 05:00.040
327
+ O en un driver, por ejemplo,
328
+
329
+ 05:00.040 --> 05:01.920
330
+ como en un teclado o algo as铆,
331
+
332
+ 05:01.920 --> 05:04.240
333
+ 驴ok? Que simple y sencillamente,
334
+
335
+ 05:04.240 --> 05:06.240
336
+ si detectas que algo est谩 mal,
337
+
338
+ 05:06.240 --> 05:10.440
339
+ le metes alg煤n tipo de mecanismo
340
+ de autodetecci贸n de errores,
341
+
342
+ 05:10.440 --> 05:11.840
343
+ de mal funcionamiento,
344
+
345
+ 05:11.840 --> 05:13.840
346
+ y detectas que algo est谩 mal,
347
+
348
+ 05:13.840 --> 05:16.640
349
+ lo puedes mandar a esta rutina de manejo
350
+ de errores,
351
+
352
+ 05:16.640 --> 05:17.640
353
+ y ya.
354
+
355
+ 05:17.640 --> 05:20.040
356
+ Eso es el superpoder de Gotoo,
357
+
358
+ 05:20.040 --> 05:22.640
359
+ es el 煤nico caso de uso que puedo pensar,
360
+
361
+ 05:22.640 --> 05:25.240
362
+ y la verdad es que es muy raro que tengas
363
+ que escribirlo,
364
+
365
+ 05:25.240 --> 05:27.640
366
+ solo te lo quiero ense帽ar
367
+ para que lo conozcas,
368
+
369
+ 05:27.640 --> 05:32.040
370
+ y bueno, con esto dicho,
371
+ nos vemos en la pr贸xima clase.
subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/03-goto_f20fa5d7-3cec-42f3-ba42-44d528ccb729.c ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ for (size_t i = 0; i < count; i++)
2
+ {
3
+ for (size_t i = 0; i < count; i++)
4
+ {
5
+ for (size_t i = 0; i < count; i++)
6
+ {
7
+ if (panic)
8
+ goto errorHandler;
9
+ }
10
+ }
11
+ }
12
+ errorHandler: //todo el codigo para componer tu desastre
13
+
14
+
15
+
subir/Curso de Control de Flujo en C/presentation.mhtml ADDED
The diff for this file is too large to render. See raw diff
 
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ https://platzi.com/cursos/deeplearning/
2
+ https://platzi.com/cursos/algebra-ml/
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Qu茅 es una red neuronal.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f6cbc6dce7a5e9618632bc712446bb4a248b85cc7ffabeffccf2fc32a8609044
3
+ size 334399745
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Qu茅 es una red neuronal.vtt ADDED
@@ -0,0 +1,763 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:00.160 --> 00:00:02.320
4
+ Para entender qu茅 es una red neuronal, vamos
5
+
6
+ 00:00:02.320 --> 00:00:06.480
7
+ a convertir n煤meros dibujados a mano a n煤meros
8
+
9
+ 00:00:06.480 --> 00:00:09.040
10
+ digitales, como un sistema de reconocimiento 贸ptico de
11
+
12
+ 00:00:09.040 --> 00:00:12.400
13
+ caracteres. As铆 que primero imagina que dibujas a
14
+
15
+ 00:00:12.400 --> 00:00:15.315
16
+ mano un n煤mero 3 y ese n煤mero lo
17
+
18
+ 00:00:15.315 --> 00:00:19.315
19
+ conviertes a una imagen digital. Para efectos de
20
+
21
+ 00:00:19.315 --> 00:00:21.795
22
+ este ejercicio, imagina que lo convertimos a una
23
+
24
+ 00:00:21.795 --> 00:00:25.235
25
+ imagen de 20 p铆xeles por 20 p铆xeles. Como
26
+
27
+ 00:00:25.235 --> 00:00:27.474
28
+ tenemos 20 p铆xeles por 20 p铆xeles, tenemos en
29
+
30
+ 00:00:27.474 --> 00:00:31.540
31
+ total 400 p铆xeles, y cada p铆xel es b谩sicamente
32
+
33
+ 00:00:31.540 --> 00:00:34.180
34
+ una representaci贸n de un porcentaje de 0 a
35
+
36
+ 00:00:34.180 --> 00:00:37.140
37
+ 100 por 100 que determina la cantidad de
38
+
39
+ 00:00:37.140 --> 00:00:39.780
40
+ brillo de cada 1 de estos puntos. As铆
41
+
42
+ 00:00:39.780 --> 00:00:43.535
43
+ que, para poder representar matem谩ticamente este n煤mero 3
44
+
45
+ 00:00:43.535 --> 00:00:46.035
46
+ en una cuadricula de 20 por 20, necesitamos
47
+
48
+ 00:00:46.175 --> 00:00:49.775
49
+ 400 n煤meros, y esos 400 n煤meros son un
50
+
51
+ 00:00:49.775 --> 00:00:52.655
52
+ porcentaje de brillo en cada n煤mero. Creamos una
53
+
54
+ 00:00:52.655 --> 00:00:56.840
55
+ matriz de esos 400 n煤meros y esa matriz
56
+
57
+ 00:00:56.840 --> 00:01:00.200
58
+ ser铆an mis neuronas de entrada. Las neuronas de
59
+
60
+ 00:01:00.200 --> 00:01:02.520
61
+ entrada son los datos de input que yo
62
+
63
+ 00:01:02.520 --> 00:01:04.920
64
+ le doy a una red neuronal. En este
65
+
66
+ 00:01:04.920 --> 00:01:07.552
67
+ momento, una neurona no es m谩s que un
68
+
69
+ 00:01:07.552 --> 00:01:10.105
70
+ dato. En las neuronas de entrada, la neurona
71
+
72
+ 00:01:10.105 --> 00:01:11.945
73
+ es un n煤mero, un dato. En este caso,
74
+
75
+ 00:01:11.945 --> 00:01:14.665
76
+ el dato representa cada 1 de los pixeles
77
+
78
+ 00:01:14.665 --> 00:01:17.225
79
+ que componen esas im谩genes que pueden ser un
80
+
81
+ 00:01:17.225 --> 00:01:21.145
82
+ n煤mero cualquiera dibujado a mano alzada. Las otras
83
+
84
+ 00:01:21.145 --> 00:01:23.810
85
+ neuronas que est谩n al final de mi red
86
+
87
+ 00:01:23.810 --> 00:01:26.530
88
+ neuronal son la capa de salida. La capa
89
+
90
+ 00:01:26.530 --> 00:01:29.810
91
+ de salida tambi茅n son simplemente datos. En este
92
+
93
+ 00:01:29.810 --> 00:01:32.530
94
+ caso, estoy construyendo una red neuronal que me
95
+
96
+ 00:01:32.530 --> 00:01:35.955
97
+ va a generar al final del proceso la
98
+
99
+ 00:01:35.955 --> 00:01:38.535
100
+ probabilidad de cu谩l es el n煤mero digital de
101
+
102
+ 00:01:38.535 --> 00:01:40.695
103
+ 0 a 9 que corresponde al n煤mero que
104
+
105
+ 00:01:40.695 --> 00:01:43.335
106
+ yo dibuj茅 a mano alzada. Como solamente hay
107
+
108
+ 00:01:43.335 --> 00:01:46.535
109
+ 10 n煤meros del 0 al 9, necesito 10
110
+
111
+ 00:01:46.535 --> 00:01:48.255
112
+ neuronas, y cada una de ellas me va
113
+
114
+ 00:01:48.255 --> 00:01:50.535
115
+ a representar un n煤mero entre el 0 al
116
+
117
+ 00:01:50.535 --> 00:01:52.560
118
+ 9. Las neuronas que se van a prender
119
+
120
+ 00:01:52.560 --> 00:01:54.479
121
+ son las neuronas que corresponden al n煤mero y
122
+
123
+ 00:01:54.479 --> 00:01:56.280
124
+ se van a prender con una probabilidad. 驴Esto
125
+
126
+ 00:01:56.280 --> 00:01:58.320
127
+ en la pr谩ctica qu茅 significa? Que estas neuronas
128
+
129
+ 00:01:58.320 --> 00:02:00.000
130
+ no van a decir simplemente este es un
131
+
132
+ 00:02:00.000 --> 00:02:01.280
133
+ 3 o esto es un 5 o esto
134
+
135
+ 00:02:01.280 --> 00:02:03.280
136
+ es un 8, porque, por ejemplo, el 3
137
+
138
+ 00:02:03.280 --> 00:02:05.494
139
+ y el 8 se parecen. 驴Qu茅 tal que
140
+
141
+ 00:02:05.494 --> 00:02:07.255
142
+ yo dibuje un 3 que est茅 muy cerca
143
+
144
+ 00:02:07.255 --> 00:02:09.574
145
+ al 8? Entonces, el 3 tiene que tener
146
+
147
+ 00:02:09.574 --> 00:02:11.415
148
+ una probabilidad muy alta, de pronto se prende
149
+
150
+ 00:02:11.415 --> 00:02:13.655
151
+ un 90 por 100, y el 8 un
152
+
153
+ 00:02:13.655 --> 00:02:17.495
154
+ 84 por 100. Estos son probabilidades que se
155
+
156
+ 00:02:17.495 --> 00:02:19.500
157
+ colocan en n煤meros decimales entre 0 y 1.
158
+
159
+ 00:02:19.580 --> 00:02:22.540
160
+ 0.5 es el 50 por 100.7 es el
161
+
162
+ 00:02:22.540 --> 00:02:25.120
163
+ 70 por 100. Y esa generaci贸n de probabilidad
164
+
165
+ 00:02:25.340 --> 00:02:28.060
166
+ es c贸mo funciona tanto la inteligencia humana como
167
+
168
+ 00:02:28.060 --> 00:02:30.860
169
+ la inteligencia artificial, y se expresa en esta
170
+
171
+ 00:02:30.860 --> 00:02:33.580
172
+ capa de salida, en estos n煤meros de probabilidad
173
+
174
+ 00:02:33.580 --> 00:02:36.144
175
+ de las neuronas finales. Pero 驴c贸mo la capa
176
+
177
+ 00:02:36.144 --> 00:02:39.424
178
+ de entrada, que tiene estos 400 n煤meros, que
179
+
180
+ 00:02:39.424 --> 00:02:41.905
181
+ son los pixeles, correlaciona con la capa de
182
+
183
+ 00:02:41.905 --> 00:02:43.864
184
+ salida, que tiene estos 10 n煤meros, que son
185
+
186
+ 00:02:43.864 --> 00:02:47.265
187
+ el output, la salida? Pues tenemos internamente una
188
+
189
+ 00:02:47.265 --> 00:02:49.765
190
+ serie de neuronas que no son simplemente n煤meros,
191
+
192
+ 00:02:50.010 --> 00:02:53.850
193
+ son unas operaciones matem谩ticas que emergen los patrones
194
+
195
+ 00:02:53.850 --> 00:02:55.930
196
+ de los datos, los patrones a trav茅s de
197
+
198
+ 00:02:55.930 --> 00:02:59.050
199
+ los cuales se interpreta la informaci贸n. Esas neuronas
200
+
201
+ 00:02:59.050 --> 00:03:02.090
202
+ intermedias se conocen como la capa oculta y
203
+
204
+ 00:03:02.090 --> 00:03:04.250
205
+ usan una serie de operaciones matem谩ticas que vamos
206
+
207
+ 00:03:04.250 --> 00:03:08.935
208
+ a entender brevemente para extrapolar esos patrones de
209
+
210
+ 00:03:08.935 --> 00:03:11.095
211
+ la informaci贸n que al final del d铆a son
212
+
213
+ 00:03:11.095 --> 00:03:13.974
214
+ la inteligencia. En esta red neuronal eleg铆 crear
215
+
216
+ 00:03:13.974 --> 00:03:16.215
217
+ 3 capas ocultas y en cada una de
218
+
219
+ 00:03:16.215 --> 00:03:19.290
220
+ estas capas ocultas tengo 15 neuronas. La verdad
221
+
222
+ 00:03:19.290 --> 00:03:21.209
223
+ es que el n煤mero es arbitrario, pueden ser
224
+
225
+ 00:03:21.209 --> 00:03:22.970
226
+ 2 capas ocultas o pueden ser 5, pueden
227
+
228
+ 00:03:22.970 --> 00:03:24.890
229
+ ser 10 o pueden ser 100 y pueden
230
+
231
+ 00:03:24.890 --> 00:03:27.370
232
+ ser 15 neuronas o 20 o 30. 驴C贸mo
233
+
234
+ 00:03:27.370 --> 00:03:31.050
235
+ sabes cu谩ntas poner? Cada problema matem谩tico y cada
236
+
237
+ 00:03:31.050 --> 00:03:34.250
238
+ problema de neuronas de inteligencia artificial, dependiendo de
239
+
240
+ 00:03:34.250 --> 00:03:37.345
241
+ los datos que quieras entrenar, va a ser
242
+
243
+ 00:03:37.345 --> 00:03:40.065
244
+ distinta la cantidad de neuronas que necesites. Por
245
+
246
+ 00:03:40.065 --> 00:03:41.985
247
+ ejemplo, para un gran modelo de lenguaje vas
248
+
249
+ 00:03:41.985 --> 00:03:44.065
250
+ a usar una cantidad de capas ocultas distinta
251
+
252
+ 00:03:44.065 --> 00:03:46.865
253
+ y una cantidad de neuronas distinta. A mayor
254
+
255
+ 00:03:46.865 --> 00:03:48.705
256
+ cantidad de neuronas y a mayor cantidad de
257
+
258
+ 00:03:48.705 --> 00:03:52.340
259
+ capas, m谩s uso de procesador y de memoria,
260
+
261
+ 00:03:52.340 --> 00:03:53.700
262
+ y como esto va a usar una cantidad
263
+
264
+ 00:03:53.700 --> 00:03:57.380
265
+ de datos masivos, necesitas la menor cantidad de
266
+
267
+ 00:03:57.380 --> 00:03:59.860
268
+ neuronas y la menor cantidad de capas para
269
+
270
+ 00:03:59.860 --> 00:04:03.605
271
+ generar los mejores resultados. Y estad铆sticamente, a veces,
272
+
273
+ 00:04:03.605 --> 00:04:07.445
274
+ demasiadas capas generan menos inteligencia, as铆 como cuando
275
+
276
+ 00:04:07.445 --> 00:04:10.985
277
+ las personas est谩n demasiado especializadas en un conocimiento,
278
+
279
+ 00:04:12.165 --> 00:04:14.245
280
+ es muy dif铆cil para ellos aprender cosas nuevas
281
+
282
+ 00:04:14.245 --> 00:04:17.009
283
+ porque est谩n demasiado metidos en la caja. En
284
+
285
+ 00:04:17.009 --> 00:04:19.589
286
+ esencia, lo que estas capas van a hacer
287
+
288
+ 00:04:19.690 --> 00:04:24.129
289
+ es encontrar los patrones estad铆sticos que tiene un
290
+
291
+ 00:04:24.129 --> 00:04:27.409
292
+ dato. Por ejemplo, los n煤meros tienden a tener
293
+
294
+ 00:04:27.409 --> 00:04:29.490
295
+ l铆neas, el 9 tiene una l铆nea, el 1
296
+
297
+ 00:04:29.490 --> 00:04:31.490
298
+ tiene una l铆nea, el 7 tiene una serie
299
+
300
+ 00:04:31.490 --> 00:04:34.555
301
+ de l铆neas, pero tambi茅n tienen c铆rculos. El 9
302
+
303
+ 00:04:34.555 --> 00:04:36.395
304
+ es un c铆rculo, el 6 es un c铆rculo
305
+
306
+ 00:04:36.395 --> 00:04:39.354
307
+ en otra posici贸n, el 3 es medio, 2
308
+
309
+ 00:04:39.354 --> 00:04:42.395
310
+ medios c铆rculos, el 4 son 3 l铆neas en
311
+
312
+ 00:04:42.395 --> 00:04:46.495
313
+ ciertos 贸rdenes diagonales. Esos patrones tienden a emerger,
314
+
315
+ 00:04:46.650 --> 00:04:50.090
316
+ pero en programaci贸n cl谩sica nosotros sabemos programado una
317
+
318
+ 00:04:50.090 --> 00:04:52.970
319
+ serie de condiciones preagreg谩ndole cada 1 de esos
320
+
321
+ 00:04:52.970 --> 00:04:56.410
322
+ patrones. Sin embargo, nuestros cerebros aprenden a partir
323
+
324
+ 00:04:56.410 --> 00:04:59.545
325
+ de observar masivas cantidades de informaci贸n e inferir
326
+
327
+ 00:04:59.545 --> 00:05:03.005
328
+ de una manera casi inconsciente en nuestro entrenamiento
329
+
330
+ 00:05:03.305 --> 00:05:05.145
331
+ de observar el mundo, cada 1 de sus
332
+
333
+ 00:05:05.145 --> 00:05:07.705
334
+ patrones, encontrar los bordes y las formas. La
335
+
336
+ 00:05:07.705 --> 00:05:09.945
337
+ idea es que en estas capas creamos un
338
+
339
+ 00:05:09.945 --> 00:05:14.470
340
+ procedimiento estad铆stico donde les mostramos estas diferentes capas
341
+
342
+ 00:05:14.930 --> 00:05:17.250
343
+ muchos, muchos, muchos de estos patrones y ellos
344
+
345
+ 00:05:17.250 --> 00:05:20.450
346
+ van ajustando la relaci贸n matem谩tica entre cada una
347
+
348
+ 00:05:20.450 --> 00:05:22.130
349
+ de las capas para que, a medida que
350
+
351
+ 00:05:22.130 --> 00:05:24.610
352
+ los 400 n煤meros de entrada que pasan por
353
+
354
+ 00:05:24.610 --> 00:05:27.355
355
+ la capa de entrada vayan atravesando capa por
356
+
357
+ 00:05:27.355 --> 00:05:31.275
358
+ capa, terminen generando a nivel num茅rico los porcentajes
359
+
360
+ 00:05:31.275 --> 00:05:33.435
361
+ de probabilidad de la capa de salida que
362
+
363
+ 00:05:33.435 --> 00:05:36.955
364
+ genere el n煤mero correcto. Las ecuaciones matem谩ticas son
365
+
366
+ 00:05:36.955 --> 00:05:39.515
367
+ b谩sicamente unos n煤meros que cada una de estas
368
+
369
+ 00:05:39.515 --> 00:05:42.290
370
+ capas tienen, y esos n煤meros son la fuerza
371
+
372
+ 00:05:42.290 --> 00:05:44.690
373
+ de la relaci贸n entre la neurona de una
374
+
375
+ 00:05:44.690 --> 00:05:46.850
376
+ capa y todas las neuronas de la otra
377
+
378
+ 00:05:46.850 --> 00:05:49.490
379
+ capa. Entonces, ciertas capas se conectan de una
380
+
381
+ 00:05:49.490 --> 00:05:51.250
382
+ manera muy fuerte o muy d茅bil con otras
383
+
384
+ 00:05:51.250 --> 00:05:54.130
385
+ neuronas, y esos n煤meros se les conoce como
386
+
387
+ 00:05:54.130 --> 00:05:57.435
388
+ pesos. Suena muy extra帽o y muy arbitrario, pero
389
+
390
+ 00:05:57.435 --> 00:06:01.275
391
+ es simplemente un mecanismo matem谩tico. Inicialmente, las conexiones
392
+
393
+ 00:06:01.275 --> 00:06:03.615
394
+ entre las diferentes neuronas en una red neuronal
395
+
396
+ 00:06:03.995 --> 00:06:06.795
397
+ se arrancan de manera aleatoria. Es un n煤mero
398
+
399
+ 00:06:06.795 --> 00:06:08.659
400
+ aleatorio que t煤 colocas como quieras. Y luego,
401
+
402
+ 00:06:08.659 --> 00:06:11.460
403
+ a medida que vas entrenando el sistema, vamos
404
+
405
+ 00:06:11.460 --> 00:06:13.860
406
+ a hablar del entrenamiento en un minuto, el
407
+
408
+ 00:06:13.860 --> 00:06:16.820
409
+ n煤mero se va ajustando para eventualmente corresponder a
410
+
411
+ 00:06:16.820 --> 00:06:19.860
412
+ esos patrones que hablamos antes. Hablemos del entrenamiento.
413
+
414
+ 00:06:19.860 --> 00:06:19.935
415
+ Lo primero es inicializar todos los pesos, todas
416
+
417
+ 00:06:19.935 --> 00:06:20.010
418
+ las conexiones entre neuronas en n煤meros aleatorios. Y
419
+
420
+ 00:06:20.010 --> 00:06:25.255
421
+ lo que haces, conexiones entre neuronas en n煤meros
422
+
423
+ 00:06:25.255 --> 00:06:27.895
424
+ aleatorios, y lo que haces es que tienes
425
+
426
+ 00:06:27.895 --> 00:06:30.935
427
+ una gran cantidad de datos de entrenamiento, es
428
+
429
+ 00:06:30.935 --> 00:06:34.735
430
+ decir, tendr铆amos que tener una gran cantidad de
431
+
432
+ 00:06:34.735 --> 00:06:37.335
433
+ im谩genes de n煤meros dibujados a mano alzada entre
434
+
435
+ 00:06:37.335 --> 00:06:39.630
436
+ el 0 y el 9 que corresponden a
437
+
438
+ 00:06:39.630 --> 00:06:42.270
439
+ su n煤mero correcto, y los empiezas a pasar
440
+
441
+ 00:06:42.270 --> 00:06:44.350
442
+ por la red. Como son n煤meros aleatorios, te
443
+
444
+ 00:06:44.350 --> 00:06:47.389
445
+ va a dar errores constantemente. Los los errores
446
+
447
+ 00:06:47.389 --> 00:06:49.070
448
+ es que la red neuronal va a decir
449
+
450
+ 00:06:49.070 --> 00:06:50.750
451
+ que un 4 es un 5, que un
452
+
453
+ 00:06:50.750 --> 00:06:53.155
454
+ 1 es un 0, no importa. Cada vez
455
+
456
+ 00:06:53.155 --> 00:06:56.115
457
+ que genere un error, le reportas el error
458
+
459
+ 00:06:56.115 --> 00:06:58.515
460
+ a la neurona y la neurona empieza a
461
+
462
+ 00:06:58.515 --> 00:07:02.435
463
+ revisar matem谩ticamente cu谩les fueron las neuronas que estaban
464
+
465
+ 00:07:02.435 --> 00:07:04.920
466
+ mal ajustadas porque dieron el error mal. Y
467
+
468
+ 00:07:05.160 --> 00:07:07.880
469
+ usando una serie de ecuaciones matem谩ticas que para
470
+
471
+ 00:07:07.880 --> 00:07:09.480
472
+ efectos de este curso no te tienes que
473
+
474
+ 00:07:09.480 --> 00:07:11.480
475
+ preocupar, pero cuando tomes alguno de nuestros cursos
476
+
477
+ 00:07:11.480 --> 00:07:13.560
478
+ de inteligencia artificial, vas a aprender que es
479
+
480
+ 00:07:13.560 --> 00:07:16.280
481
+ una funci贸n que se llama sigmoide o otra
482
+
483
+ 00:07:16.280 --> 00:07:17.971
484
+ funci贸n que se llama relu, y la derivada
485
+
486
+ 00:07:17.971 --> 00:07:21.945
487
+ de esas funciones, esto es c谩lculo vectorial muy
488
+
489
+ 00:07:21.945 --> 00:07:25.785
490
+ sencillo, c谩lculo diferencial realmente. Encuentran la distancia de
491
+
492
+ 00:07:25.785 --> 00:07:28.185
493
+ diferencia entre cada 1 de estos pesos y
494
+
495
+ 00:07:28.185 --> 00:07:30.949
496
+ lo van corrigiendo. Eso se hace en una
497
+
498
+ 00:07:31.090 --> 00:07:34.930
499
+ retropropagaci贸n, generas el error y luego regresas para
500
+
501
+ 00:07:34.930 --> 00:07:37.650
502
+ entender d贸nde cometiste el error y ajustar las
503
+
504
+ 00:07:37.650 --> 00:07:40.050
505
+ conexiones entre las neuronas a partir de los
506
+
507
+ 00:07:40.050 --> 00:07:41.970
508
+ datos con los que entrenaste. A medida que
509
+
510
+ 00:07:41.970 --> 00:07:45.335
511
+ ajustas los pesos mostr谩ndole los diferentes ejemplos en
512
+
513
+ 00:07:45.335 --> 00:07:49.255
514
+ el entrenamiento y los devuelves ese proceso, eso
515
+
516
+ 00:07:49.255 --> 00:07:52.135
517
+ es el entrenamiento. Cuando tienes una base de
518
+
519
+ 00:07:52.135 --> 00:07:55.815
520
+ datos de entrenamiento, digamos que 10000 n煤meros, el
521
+
522
+ 00:07:55.815 --> 00:07:58.215
523
+ completar el entrenamiento con esos 10000 n煤meros se
524
+
525
+ 00:07:58.215 --> 00:08:01.500
526
+ conoce como una 茅poca o epoc. Y no
527
+
528
+ 00:08:01.500 --> 00:08:04.319
529
+ solamente completar el entrenamiento una vez es suficiente.
530
+
531
+ 00:08:04.780 --> 00:08:07.020
532
+ Como la red neuronal empieza de manera aleatoria,
533
+
534
+ 00:08:07.020 --> 00:08:09.180
535
+ es posible que incluso con una sola 茅poca
536
+
537
+ 00:08:09.180 --> 00:08:11.259
538
+ no sea suficiente para entrenar por completo la
539
+
540
+ 00:08:11.259 --> 00:08:14.854
541
+ red neuronal. Probablemente necesitas entrenarla m煤ltiples veces hasta
542
+
543
+ 00:08:14.854 --> 00:08:17.335
544
+ que tu red quede muy ajustada. Y luego
545
+
546
+ 00:08:17.335 --> 00:08:20.055
547
+ tienes que probar con una base de esa
548
+
549
+ 00:08:20.055 --> 00:08:22.775
550
+ red de entrenamiento que te guardaste para probar,
551
+
552
+ 00:08:22.775 --> 00:08:24.715
553
+ a ver si est谩 dando los resultados correctos.
554
+
555
+ 00:08:25.050 --> 00:08:26.730
556
+ Y de esa manera sabes si tu red
557
+
558
+ 00:08:26.730 --> 00:08:29.050
559
+ neuronal qued贸 bien entrenada o no. El resultado
560
+
561
+ 00:08:29.050 --> 00:08:31.210
562
+ final del entrenamiento es que, de pronto, la
563
+
564
+ 00:08:31.210 --> 00:08:33.929
565
+ capa oculta n煤mero 1 detecta las formas que
566
+
567
+ 00:08:33.929 --> 00:08:36.169
568
+ son una rayita, la capa oculta n煤mero 2
569
+
570
+ 00:08:36.169 --> 00:08:38.250
571
+ detecta las formas que son una curvita, y
572
+
573
+ 00:08:38.250 --> 00:08:40.490
574
+ la capa oculta n煤mero 3 detecta la conexi贸n
575
+
576
+ 00:08:40.490 --> 00:08:42.848
577
+ entre ambas, y eso termina siendo que la
578
+
579
+ 00:08:42.848 --> 00:08:45.345
580
+ capa de salida final me genere una serie
581
+
582
+ 00:08:45.345 --> 00:08:47.904
583
+ de n煤meros de probabilidad, una matriz de 10
584
+
585
+ 00:08:47.904 --> 00:08:50.225
586
+ n煤meros de probabilidad desde el 100 por 100
587
+
588
+ 00:08:50.225 --> 00:08:52.964
589
+ hasta el 0 por 100, donde, a mayor
590
+
591
+ 00:08:53.345 --> 00:08:55.620
592
+ probabilidad de que un n煤mero espec铆fico corresponda a
593
+
594
+ 00:08:55.620 --> 00:08:58.060
595
+ una de esas neuronas, esa neurona tiene un
596
+
597
+ 00:08:58.060 --> 00:09:00.860
598
+ porcentaje m谩s alto, una activaci贸n m谩s grande. Lo
599
+
600
+ 00:09:00.860 --> 00:09:02.720
601
+ que significa que en una red bien entrenada,
602
+
603
+ 00:09:03.100 --> 00:09:05.340
604
+ los 400 p铆xeles de entrada que equivalen al
605
+
606
+ 00:09:05.340 --> 00:09:09.100
607
+ n煤mero 3 me deber铆a generar una activaci贸n de
608
+
609
+ 00:09:09.100 --> 00:09:12.025
610
+ muy alto porcentaje comparado a otras neuronas en
611
+
612
+ 00:09:12.025 --> 00:09:14.944
613
+ el n煤mero correspondiente al n煤mero 3. En este
614
+
615
+ 00:09:14.944 --> 00:09:17.325
616
+ ejemplo, en la capa de entrada, creamos 400
617
+
618
+ 00:09:17.785 --> 00:09:19.225
619
+ neuronas que equivalen a cada 1 de los
620
+
621
+ 00:09:19.225 --> 00:09:22.205
622
+ pixeles, pero imagina que, en vez de usar
623
+
624
+ 00:09:22.745 --> 00:09:25.465
625
+ pixeles, usamos tokens. Un token es una forma
626
+
627
+ 00:09:25.465 --> 00:09:28.010
628
+ de expresar texto. El texto se puede romper
629
+
630
+ 00:09:28.070 --> 00:09:31.610
631
+ en palabras, s铆labas o letras, eso ser铆a tokenizar
632
+
633
+ 00:09:31.910 --> 00:09:35.370
634
+ el lenguaje. Y, por ejemplo, el lenguaje ingl茅s
635
+
636
+ 00:09:35.510 --> 00:09:39.510
637
+ tiene en total 50000 tokens, 50000 permutaciones de
638
+
639
+ 00:09:39.510 --> 00:09:42.895
640
+ palabras, s铆labas y letras para expresar lenguaje, incluyendo
641
+
642
+ 00:09:42.895 --> 00:09:46.415
643
+ puntuaci贸n, etc茅tera. Si agreg谩ramos esos 50000 neuronas y
644
+
645
+ 00:09:46.415 --> 00:09:48.654
646
+ las pusi茅ramos en la entrada y pusi茅ramos otras
647
+
648
+ 00:09:48.654 --> 00:09:51.774
649
+ 50000 neuronas en la salida, podr铆amos crear la
650
+
651
+ 00:09:51.774 --> 00:09:54.090
652
+ estructura de la red neuronal para un gran
653
+
654
+ 00:09:54.090 --> 00:09:56.890
655
+ modelo de lenguaje, como ChatGPT o como un
656
+
657
+ 00:09:56.890 --> 00:09:59.690
658
+ traductor. Una red neuronal no es suficiente para
659
+
660
+ 00:09:59.690 --> 00:10:02.670
661
+ generar un traductor o para generar un autocompletador
662
+
663
+ 00:10:03.050 --> 00:10:06.650
664
+ como ChatGPT. Necesitar铆amos una arquitectura matem谩tica que se
665
+
666
+ 00:10:06.650 --> 00:10:09.785
667
+ conoce como transformador y un modelo especial o
668
+
669
+ 00:10:09.785 --> 00:10:13.385
670
+ mecanismo llamado atenci贸n para generar ese resultado, lo
671
+
672
+ 00:10:13.385 --> 00:10:15.625
673
+ cual pueden aprender en el curso de fundamentos
674
+
675
+ 00:10:15.625 --> 00:10:18.585
676
+ de LLMs. Pero esta es la base fundamental,
677
+
678
+ 00:10:18.585 --> 00:10:20.745
679
+ las redes neuronales. Platzi tiene un curso que
680
+
681
+ 00:10:20.745 --> 00:10:22.265
682
+ encuentras en los recursos de esta clase, que
683
+
684
+ 00:10:22.265 --> 00:10:24.640
685
+ es de matem谩ticas para inteligencia artificial. Pero no
686
+
687
+ 00:10:24.640 --> 00:10:28.020
688
+ es matem谩tica compleja, todo esto es, b谩sicamente, 谩lgebra
689
+
690
+ 00:10:28.720 --> 00:10:31.680
691
+ lineal, vectores, matrices y un poquito de c谩lculo
692
+
693
+ 00:10:31.680 --> 00:10:34.399
694
+ diferencial. Realmente, no es tan dif铆cil. As铆 como
695
+
696
+ 00:10:34.399 --> 00:10:36.560
697
+ las matem谩ticas no son tan dif铆ciles, el c贸digo
698
+
699
+ 00:10:36.560 --> 00:10:39.014
700
+ tampoco. Estas matrices se expresan en una estructura
701
+
702
+ 00:10:39.014 --> 00:10:41.334
703
+ de datos que se conocen como vectores, hay
704
+
705
+ 00:10:41.334 --> 00:10:44.875
706
+ mucha multiplicaci贸n de vectores, y tambi茅n existe un
707
+
708
+ 00:10:45.014 --> 00:10:47.415
709
+ tipo de dato especial llamado tensor, para hacer
710
+
711
+ 00:10:47.415 --> 00:10:50.860
712
+ m谩s f谩cil estas multiplicaciones, sumas, etc茅tera. Y, por
713
+
714
+ 00:10:50.860 --> 00:10:53.360
715
+ 煤ltimo, mucho de esto ya est谩 expresado en
716
+
717
+ 00:10:53.820 --> 00:10:57.120
718
+ librer铆as existentes que hacen relativamente sencilla su implementaci贸n.
719
+
720
+ 00:10:57.420 --> 00:11:00.060
721
+ En la siguiente clase, vamos a entender c贸mo
722
+
723
+ 00:11:00.060 --> 00:11:03.060
724
+ funciona un gran modelo de lenguaje por dentro
725
+
726
+ 00:11:03.060 --> 00:11:04.860
727
+ sobre lo que acabamos de aprender de redes
728
+
729
+ 00:11:04.860 --> 00:11:06.885
730
+ neuronales. Pero Platzi tambi茅n tiene un curso de
731
+
732
+ 00:11:06.885 --> 00:11:09.245
733
+ fundamentos de LLMs que est谩 aqu铆 abajo en
734
+
735
+ 00:11:09.245 --> 00:11:11.605
736
+ los recursos y deber铆as tomar, junto con un
737
+
738
+ 00:11:11.605 --> 00:11:15.045
739
+ curso de algebra lineal aplicada al machine learning
740
+
741
+ 00:11:15.045 --> 00:11:17.125
742
+ y, por supuesto, un curso de deep learning
743
+
744
+ 00:11:17.125 --> 00:11:19.300
745
+ con TensorFlow, que es una de las librer铆as
746
+
747
+ 00:11:19.300 --> 00:11:21.560
748
+ m谩s usadas para construir este tipo de mecanismos.
749
+
750
+ 00:11:21.860 --> 00:11:24.680
751
+ Y, por cierto, la inmensa mayor铆a de programadores
752
+
753
+ 00:11:25.060 --> 00:11:27.120
754
+ no saben que es una red neuronal. 驴Por
755
+
756
+ 00:11:27.120 --> 00:11:29.280
757
+ qu茅 llegaste a esta clase? Est谩s en un
758
+
759
+ 00:11:29.280 --> 00:11:31.760
760
+ porcentaje muy selecto de la gente que lo
761
+
762
+ 00:11:31.760 --> 00:11:32.260
763
+ entiende.
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/03-C贸mo funcionan los LLMs.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cde6761ea6d2ca7627919bef1c23ea47922dbe2ed08614c5e6ee026420baaa84
3
+ size 324637685
subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/03-C贸mo funcionan los LLMs.vtt ADDED
@@ -0,0 +1,928 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:00.080 --> 00:00:01.920
4
+ Te digo que el gato ma煤lla y el
5
+
6
+ 00:00:01.920 --> 00:00:04.120
7
+ perro, 驴el perro qu茅 hace? La gran mayor铆a
8
+
9
+ 00:00:04.120 --> 00:00:05.520
10
+ de ustedes va a decir que el perro
11
+
12
+ 00:00:05.520 --> 00:00:07.120
13
+ ladra, pero de pronto no, de pronto el
14
+
15
+ 00:00:07.120 --> 00:00:09.200
16
+ gato ma煤lla y el perro se asusta, de
17
+
18
+ 00:00:09.200 --> 00:00:11.200
19
+ pronto el gato ma煤lla y el perro no
20
+
21
+ 00:00:11.200 --> 00:00:14.275
22
+ ma煤lla. Todas son opciones completamente v谩lidas, pero nuestra
23
+
24
+ 00:00:14.275 --> 00:00:16.114
25
+ inteligencia nos dice que la forma en la
26
+
27
+ 00:00:16.114 --> 00:00:17.715
28
+ que este acertijo se resuelve es que el
29
+
30
+ 00:00:17.715 --> 00:00:20.435
31
+ gato ma煤lla y el perro ladra. 驴C贸mo hicimos
32
+
33
+ 00:00:20.435 --> 00:00:22.435
34
+ esto? Esto lo hacemos a trav茅s de algo
35
+
36
+ 00:00:22.435 --> 00:00:25.555
37
+ que se llama la atenci贸n. Le ponemos atenci贸n
38
+
39
+ 00:00:25.555 --> 00:00:28.090
40
+ a ciertas palabras y a otras no. Esto
41
+
42
+ 00:00:28.090 --> 00:00:30.570
43
+ se puede expresar matem谩ticamente en la ecuaci贸n que
44
+
45
+ 00:00:30.570 --> 00:00:32.409
46
+ ustedes est谩n viendo en este momento en pantalla.
47
+
48
+ 00:00:32.409 --> 00:00:34.170
49
+ Lo que vamos a hacer es entender los
50
+
51
+ 00:00:34.170 --> 00:00:36.010
52
+ componentes de esa ecuaci贸n porque es la forma
53
+
54
+ 00:00:36.010 --> 00:00:38.090
55
+ en la que funcionan los grandes modelos de
56
+
57
+ 00:00:38.090 --> 00:00:41.085
58
+ lenguaje, la inteligencia artificial moderna. Lo primero que
59
+
60
+ 00:00:41.085 --> 00:00:43.885
61
+ tenemos que hacer es agarrar todo el cuerpo
62
+
63
+ 00:00:43.885 --> 00:00:46.204
64
+ del lenguaje de la cultura humana y romperlo
65
+
66
+ 00:00:46.204 --> 00:00:49.585
67
+ en pedacitos. Vamos a romper todas las palabras,
68
+
69
+ 00:00:49.725 --> 00:00:51.565
70
+ todas las letras, todo lo que existe en
71
+
72
+ 00:00:51.565 --> 00:00:56.360
73
+ la cultura humana en letras, s铆labas y palabras.
74
+
75
+ 00:00:56.739 --> 00:00:59.060
76
+ Ustedes dir谩n que estos son una cantidad de
77
+
78
+ 00:00:59.060 --> 00:01:01.960
79
+ variaciones infinita, pero el lenguaje no es infinito.
80
+
81
+ 00:01:02.020 --> 00:01:04.900
82
+ Efectivamente, existen permutaciones casi infinitas de las letras,
83
+
84
+ 00:01:04.900 --> 00:01:06.420
85
+ pero la realidad es que cuando 1 toma
86
+
87
+ 00:01:06.420 --> 00:01:08.765
88
+ todos los libros escritos, todo el Internet, todos
89
+
90
+ 00:01:08.765 --> 00:01:10.565
91
+ los emails, todo lo que est谩 en Google,
92
+
93
+ 00:01:10.565 --> 00:01:11.965
94
+ todo lo que est谩 en la Wikipedia, todo
95
+
96
+ 00:01:11.965 --> 00:01:14.365
97
+ lo que est谩 en redes, foros, etc茅tera, 1
98
+
99
+ 00:01:14.365 --> 00:01:16.125
100
+ se da cuenta que, por ejemplo, en el
101
+
102
+ 00:01:16.125 --> 00:01:18.685
103
+ caso del lenguaje ingl茅s, hay una, m谩s o
104
+
105
+ 00:01:18.685 --> 00:01:22.370
106
+ menos, cantidad de 50000 tokens. Si le agregamos
107
+
108
+ 00:01:22.390 --> 00:01:25.650
109
+ otros lenguajes, si le agregamos lenguajes de programaci贸n
110
+
111
+ 00:01:25.790 --> 00:01:28.210
112
+ u otros tipos de texto, el n煤mero aumenta
113
+
114
+ 00:01:28.510 --> 00:01:31.970
115
+ bastante. T铆picamente, los sistemas de traducci贸n, por ejemplo,
116
+
117
+ 00:01:32.030 --> 00:01:35.205
118
+ usan entre 40000 a 50000 tokens, Y los
119
+
120
+ 00:01:35.205 --> 00:01:38.965
121
+ grandes modelos de lenguaje, como GPT 4, Lama
122
+
123
+ 00:01:38.965 --> 00:01:41.205
124
+ y los otros grandes modelos que existen, pueden
125
+
126
+ 00:01:41.205 --> 00:01:45.765
127
+ usar hasta 256000 tokens en sus tokens del
128
+
129
+ 00:01:45.765 --> 00:01:47.925
130
+ vocabulario del lenguaje. Pero por ahora, ten en
131
+
132
+ 00:01:47.925 --> 00:01:49.525
133
+ mente que lo que hacemos es que agarramos
134
+
135
+ 00:01:49.525 --> 00:01:52.700
136
+ las palabras y las dividimos en pedacitos. Entonces,
137
+
138
+ 00:01:52.700 --> 00:01:55.820
139
+ por ejemplo, la palabra satisfacci贸n tiene la palabra
140
+
141
+ 00:01:55.820 --> 00:01:58.300
142
+ acci贸n y acci贸n es un token, pero la
143
+
144
+ 00:01:58.300 --> 00:02:01.260
145
+ letra f puede ser otro token, el is
146
+
147
+ 00:02:01.260 --> 00:02:03.665
148
+ de satisfacci贸n es un token y el SAT
149
+
150
+ 00:02:03.665 --> 00:02:05.345
151
+ es otro token. Y ahora que tengo cada
152
+
153
+ 00:02:05.345 --> 00:02:07.145
154
+ 1 de esos tokens, lo siguiente que tengo
155
+
156
+ 00:02:07.145 --> 00:02:10.565
157
+ que hacer es evaluar la correlaci贸n que existe
158
+
159
+ 00:02:10.864 --> 00:02:14.145
160
+ entre token y token. Entonces, imagina que tengo
161
+
162
+ 00:02:14.145 --> 00:02:16.860
163
+ el token gato, es la palabra gato, y
164
+
165
+ 00:02:16.860 --> 00:02:20.220
166
+ quiero buscar la palabra gato qu茅 tan cercana
167
+
168
+ 00:02:20.220 --> 00:02:22.640
169
+ en todo el lenguaje est谩 a otros conceptos.
170
+
171
+ 00:02:23.099 --> 00:02:25.500
172
+ Entonces, por ejemplo, imaginen que esto fuera un
173
+
174
+ 00:02:25.500 --> 00:02:27.260
175
+ plano cartesiano con un eje x que va
176
+
177
+ 00:02:27.260 --> 00:02:30.459
178
+ de 0 hasta n, donde n es el
179
+
180
+ 00:02:30.459 --> 00:02:32.955
181
+ n煤mero de tokens que existen. Entonces la palabra
182
+
183
+ 00:02:32.955 --> 00:02:37.155
184
+ gato en el eje animal estar铆a muy cerca
185
+
186
+ 00:02:37.155 --> 00:02:39.515
187
+ al 0. Entonces yo pongo que gato con
188
+
189
+ 00:02:39.515 --> 00:02:42.155
190
+ su correlaci贸n animal es un 0. Imagina que
191
+
192
+ 00:02:42.155 --> 00:02:44.555
193
+ tengo una segunda dimensi贸n, como si fuera un
194
+
195
+ 00:02:44.555 --> 00:02:48.870
196
+ eje XYY estuviera la palabra autom贸vil. Gato respecto
197
+
198
+ 00:02:49.090 --> 00:02:51.250
199
+ a autom贸vil muy probablemente est谩 tan arriba como
200
+
201
+ 00:02:51.250 --> 00:02:52.850
202
+ sea posible, porque gato no est谩 cerca de
203
+
204
+ 00:02:52.850 --> 00:02:55.010
205
+ la palabra autom贸vil. Y ahora imagina que tengo
206
+
207
+ 00:02:55.010 --> 00:02:58.755
208
+ una tercera dimensi贸n y tengo el eje amor,
209
+
210
+ 00:02:58.995 --> 00:03:00.595
211
+ no ama a los gatos. Pero 1 no
212
+
213
+ 00:03:00.595 --> 00:03:01.875
214
+ ama a los gatos m谩s que a los
215
+
216
+ 00:03:01.875 --> 00:03:03.635
217
+ beb茅s. Entonces, gato no va a estar en
218
+
219
+ 00:03:03.635 --> 00:03:05.795
220
+ el 0 de la palabra amor, pero de
221
+
222
+ 00:03:05.795 --> 00:03:07.255
223
+ pronto s铆 va a estar en el 10.
224
+
225
+ 00:03:07.315 --> 00:03:11.255
226
+ Y as铆 lo hago para todas las palabras
227
+
228
+ 00:03:11.475 --> 00:03:15.160
229
+ que existen, para todos los tokens, a partir
230
+
231
+ 00:03:15.380 --> 00:03:18.020
232
+ de qu茅 tan cercanas est谩n las palabras con
233
+
234
+ 00:03:18.020 --> 00:03:21.560
235
+ otras palabras en el lenguaje. Esto es ubicarlo
236
+
237
+ 00:03:21.620 --> 00:03:25.515
238
+ en un espacio nidimensional. Visualmente, los humanos solamente
239
+
240
+ 00:03:25.515 --> 00:03:28.234
241
+ podemos ver 3 dimensiones, pero un computador no
242
+
243
+ 00:03:28.234 --> 00:03:32.075
244
+ tiene problemas en guardar las 300000000000 de dimensiones
245
+
246
+ 00:03:32.075 --> 00:03:35.114
247
+ de GPT 3 o las 50000 dimensiones de
248
+
249
+ 00:03:35.114 --> 00:03:38.200
250
+ todos los tokens que requiere un traductor. Entonces,
251
+
252
+ 00:03:38.420 --> 00:03:41.620
253
+ cada palabra tiene un vector o un n煤mero
254
+
255
+ 00:03:41.620 --> 00:03:44.500
256
+ de n煤meros que me muestra la cercan铆a, entre
257
+
258
+ 00:03:44.500 --> 00:03:47.160
259
+ otras palabras, y se ubican de manera multidimensional,
260
+
261
+ 00:03:47.780 --> 00:03:50.340
262
+ y eso es tokenizar el lenguaje. Esto crea
263
+
264
+ 00:03:50.340 --> 00:03:53.155
265
+ un efecto muy interesante, y es que palabras
266
+
267
+ 00:03:54.255 --> 00:03:57.155
268
+ similares van a estar en estos espacios multidimensionales
269
+
270
+ 00:03:58.015 --> 00:04:00.575
271
+ muy cerca de otras palabras similares. Entonces, por
272
+
273
+ 00:04:00.575 --> 00:04:03.535
274
+ ejemplo, la palabra gato, perro y lobo van
275
+
276
+ 00:04:03.535 --> 00:04:05.875
277
+ a estar muy cerca entre s铆, porque son
278
+
279
+ 00:04:06.015 --> 00:04:09.450
280
+ mam铆feros, porque est谩n en espa帽ol, porque son animales
281
+
282
+ 00:04:09.550 --> 00:04:12.030
283
+ y la palabra banano o manzana tambi茅n va
284
+
285
+ 00:04:12.030 --> 00:04:14.110
286
+ a estar muy cerca entre s铆. El otro
287
+
288
+ 00:04:14.110 --> 00:04:17.070
289
+ fen贸meno interesante que tiene esto es que las
290
+
291
+ 00:04:17.070 --> 00:04:20.367
292
+ palabras pueden tener vectores, un vector es una
293
+
294
+ 00:04:20.367 --> 00:04:20.680
295
+ direcci贸n en ese plano cartesiano multidimensional que se
296
+
297
+ 00:04:20.680 --> 00:04:24.455
298
+ parecen direcci贸n en ese plano cartesiano multidimensional que
299
+
300
+ 00:04:24.455 --> 00:04:27.015
301
+ se parecen mucho una con la otra. Entonces,
302
+
303
+ 00:04:27.015 --> 00:04:30.715
304
+ por ejemplo, rey y reina tienen una conexi贸n
305
+
306
+ 00:04:30.775 --> 00:04:34.535
307
+ muy similar a hombre mujer. Ese vector muy
308
+
309
+ 00:04:34.535 --> 00:04:36.875
310
+ probablemente es el vector de la palabra g茅nero.
311
+
312
+ 00:04:37.120 --> 00:04:40.000
313
+ O, por ejemplo, la palabra camin茅 y caminar
314
+
315
+ 00:04:40.000 --> 00:04:43.120
316
+ va a estar muy similar a nad茅 y
317
+
318
+ 00:04:43.120 --> 00:04:46.160
319
+ nadar, porque el vector de tiempo presente o
320
+
321
+ 00:04:46.160 --> 00:04:49.699
322
+ pasado los hace estar muy cerca. O diferentes
323
+
324
+ 00:04:49.839 --> 00:04:54.115
325
+ pa铆ses y sus capitales, el vector, la coordenada,
326
+
327
+ 00:04:54.294 --> 00:04:57.255
328
+ la serie de coordenadas que apuntan entre pa铆s
329
+
330
+ 00:04:57.255 --> 00:04:59.675
331
+ y ciudad capital van a ser muy similares.
332
+
333
+ 00:04:59.815 --> 00:05:02.395
334
+ Y si yo agarro los n煤meros que corresponden
335
+
336
+ 00:05:02.935 --> 00:05:06.220
337
+ al vector entre Italia y Roma y los
338
+
339
+ 00:05:06.220 --> 00:05:08.880
340
+ llevo a Colombia, muy probablemente me va a
341
+
342
+ 00:05:09.340 --> 00:05:13.180
343
+ apuntar muy cerca o exactamente hacia Bogot谩. Esto
344
+
345
+ 00:05:13.180 --> 00:05:17.900
346
+ es convertir las palabras en expresiones matem谩ticas que
347
+
348
+ 00:05:17.900 --> 00:05:19.875
349
+ se pueden sumar o restar. Eso nos permite
350
+
351
+ 00:05:19.875 --> 00:05:23.335
352
+ hacer cosas incre铆bles, por ejemplo, mam谩 menos g茅nero
353
+
354
+ 00:05:23.795 --> 00:05:27.075
355
+ probablemente me da pariente, pariente m谩s masculino probablemente
356
+
357
+ 00:05:27.075 --> 00:05:30.294
358
+ me da padre, o la palabra regente m谩s
359
+
360
+ 00:05:30.435 --> 00:05:32.435
361
+ mujer probablemente me da igual a reina, y
362
+
363
+ 00:05:32.435 --> 00:05:35.160
364
+ regente m谩s hombre rey. Lo siguiente que tengo
365
+
366
+ 00:05:35.160 --> 00:05:39.660
367
+ que hacer es crear una red de pesos,
368
+
369
+ 00:05:40.040 --> 00:05:44.380
370
+ de probabilidad estad铆stica, donde las palabras est茅n estad铆sticamente
371
+
372
+ 00:05:44.600 --> 00:05:47.960
373
+ conectadas entre s铆, los tokens realmente. Siempre que
374
+
375
+ 00:05:47.960 --> 00:05:50.115
376
+ yo diga palabras me refiero a los tokens,
377
+
378
+ 00:05:50.115 --> 00:05:52.995
379
+ y los tokens son palabras, s铆labas o letras
380
+
381
+ 00:05:52.995 --> 00:05:54.775
382
+ de todo el lenguaje de la cultura humana.
383
+
384
+ 00:05:54.835 --> 00:05:56.995
385
+ As铆 como usamos todo el lenguaje de la
386
+
387
+ 00:05:56.995 --> 00:06:00.034
388
+ cultura humana para crear nuestros tokens, ahora necesitamos
389
+
390
+ 00:06:00.034 --> 00:06:01.974
391
+ usar todo el lenguaje de la cultura humana
392
+
393
+ 00:06:02.060 --> 00:06:04.780
394
+ para agregar la probabilidad de conexi贸n entre cada
395
+
396
+ 00:06:04.780 --> 00:06:07.180
397
+ 1 de ellos. Con el lenguaje tokenizado, el
398
+
399
+ 00:06:07.180 --> 00:06:10.160
400
+ siguiente paso es tratar de encontrar la probabilidad
401
+
402
+ 00:06:10.300 --> 00:06:12.620
403
+ en la que una palabra ocurre despu茅s de
404
+
405
+ 00:06:12.620 --> 00:06:15.420
406
+ otra. Como nosotros tenemos todo el lenguaje de
407
+
408
+ 00:06:15.420 --> 00:06:18.215
409
+ la cultura humana en libros, en Internet, en
410
+
411
+ 00:06:18.215 --> 00:06:21.015
412
+ las redes, en la Wikipedia, en tantos otros
413
+
414
+ 00:06:21.015 --> 00:06:24.835
415
+ lugares. Las empresas de inteligencia artificial toman esta
416
+
417
+ 00:06:24.935 --> 00:06:27.254
418
+ fuente de datos, la cultura humana, los textos
419
+
420
+ 00:06:27.254 --> 00:06:29.574
421
+ que hemos escrito, y buscan expresar de una
422
+
423
+ 00:06:29.574 --> 00:06:32.470
424
+ manera matem谩tica la probabilidad de que una letra
425
+
426
+ 00:06:32.470 --> 00:06:34.230
427
+ vaya despu茅s de cierta otra letra, que una
428
+
429
+ 00:06:34.230 --> 00:06:36.790
430
+ palabra vaya despu茅s de cierta otra palabra. Esto
431
+
432
+ 00:06:36.790 --> 00:06:39.830
433
+ se conoce como el corpus del lenguaje o
434
+
435
+ 00:06:39.830 --> 00:06:41.910
436
+ los datos de entrenamiento con el que los
437
+
438
+ 00:06:41.910 --> 00:06:45.075
439
+ voy a entrenar. Y divido esto en 2
440
+
441
+ 00:06:45.075 --> 00:06:47.475
442
+ pedazos. Un 70 por 100 lo uso para
443
+
444
+ 00:06:47.475 --> 00:06:49.715
445
+ entrenar y otro 30 por 100, el 30
446
+
447
+ 00:06:49.715 --> 00:06:52.355
448
+ por 100 restante, lo uso para probar, de
449
+
450
+ 00:06:52.355 --> 00:06:54.755
451
+ tal manera que este primer 70 por 100
452
+
453
+ 00:06:54.755 --> 00:06:56.940
454
+ entrena mi red neuronal y luego esa red
455
+
456
+ 00:06:56.940 --> 00:06:58.780
457
+ neuronal le hago pruebas con el 30 por
458
+
459
+ 00:06:58.780 --> 00:07:01.100
460
+ 100 restante. Y si me da lo mismo
461
+
462
+ 00:07:01.100 --> 00:07:02.940
463
+ y se comporta igual, es que el entrenamiento
464
+
465
+ 00:07:02.940 --> 00:07:06.060
466
+ qued贸 bien. Una red neuronal es un mecanismo
467
+
468
+ 00:07:06.060 --> 00:07:10.540
469
+ estad铆stico para encontrar los patrones escondidos entre los
470
+
471
+ 00:07:10.540 --> 00:07:13.705
472
+ datos. En el lenguaje, por ejemplo, nosotros sabemos
473
+
474
+ 00:07:13.705 --> 00:07:17.965
475
+ que hay una conexi贸n entre adverbios, s铆labas, adjetivos,
476
+
477
+ 00:07:18.425 --> 00:07:22.925
478
+ sustantivos y muchos otros patrones que emergen simplemente
479
+
480
+ 00:07:22.985 --> 00:07:25.240
481
+ de la posici贸n de las letras, las s铆labas
482
+
483
+ 00:07:25.240 --> 00:07:27.500
484
+ y las palabras, lo que nosotros llamamos tokens.
485
+
486
+ 00:07:27.880 --> 00:07:29.960
487
+ As铆 que una red neuronal es un proceso
488
+
489
+ 00:07:29.960 --> 00:07:32.360
490
+ que tiene una capa de entrada, unas capas
491
+
492
+ 00:07:32.360 --> 00:07:35.070
493
+ escondidas y una capa de salida. La capa
494
+
495
+ 00:07:35.070 --> 00:07:38.775
496
+ de entrada son todos los tokens que corresponden
497
+
498
+ 00:07:39.235 --> 00:07:43.414
499
+ al vocabulario de entrenamiento, a nuestros vectores de
500
+
501
+ 00:07:43.875 --> 00:07:45.955
502
+ lenguaje que aprendimos en el paso anterior. Y
503
+
504
+ 00:07:45.955 --> 00:07:48.354
505
+ la capa de salida es exactamente lo mismo.
506
+
507
+ 00:07:48.354 --> 00:07:50.595
508
+ La idea es predecir a partir de unas
509
+
510
+ 00:07:50.595 --> 00:07:53.280
511
+ palabras de entrada cu谩l ser铆a la palabra de
512
+
513
+ 00:07:53.280 --> 00:07:57.920
514
+ salida. Las capas intermedias o capas escondidas son
515
+
516
+ 00:07:57.920 --> 00:08:02.740
517
+ funciones matem谩ticas de interconexi贸n que detectan estos patrones
518
+
519
+ 00:08:02.880 --> 00:08:06.745
520
+ y que van modificando unos n煤meros estad铆sticos para
521
+
522
+ 00:08:06.745 --> 00:08:09.625
523
+ cambiar la capa de salida. Estos patrones se
524
+
525
+ 00:08:09.625 --> 00:08:12.745
526
+ van ajustando en el per铆odo de entrenamiento. A
527
+
528
+ 00:08:12.745 --> 00:08:16.185
529
+ medida que nuestra red neuronal lee todo el
530
+
531
+ 00:08:16.185 --> 00:08:18.520
532
+ cuerpo del lenguaje de la cultura humana, va
533
+
534
+ 00:08:18.520 --> 00:08:21.740
535
+ entendiendo que muy probablemente despu茅s de la palabra
536
+
537
+ 00:08:21.880 --> 00:08:24.199
538
+ yo puede seguir la palabra amo, que muy
539
+
540
+ 00:08:24.199 --> 00:08:27.080
541
+ probablemente despu茅s de la palabra mi mam谩 sigue
542
+
543
+ 00:08:27.080 --> 00:08:30.575
544
+ la palabra me. Y todo ese ajuste de
545
+
546
+ 00:08:30.575 --> 00:08:32.975
547
+ entendimiento de patrones del lenguaje, como el patr贸n
548
+
549
+ 00:08:32.975 --> 00:08:36.294
550
+ de rimar, el patr贸n de programar, el patr贸n
551
+
552
+ 00:08:36.294 --> 00:08:39.835
553
+ de escribir lenguaje de marketing, se va expresando
554
+
555
+ 00:08:39.895 --> 00:08:43.335
556
+ matem谩ticamente para generar esta estructura final que se
557
+
558
+ 00:08:43.335 --> 00:08:45.415
559
+ vuelve la red neuronal de un gran modelo
560
+
561
+ 00:08:45.415 --> 00:08:48.690
562
+ de lenguaje. Estos son 1000 de 1000000 de
563
+
564
+ 00:08:48.690 --> 00:08:51.010
565
+ par谩metros, que son los pesos de cada una
566
+
567
+ 00:08:51.010 --> 00:08:53.990
568
+ de estas letras que nosotros llamamos neuronas. Estos
569
+
570
+ 00:08:54.050 --> 00:08:57.410
571
+ 1000 de 1000000 de par谩metros toman much铆simo tiempo
572
+
573
+ 00:08:57.410 --> 00:08:58.529
574
+ y es parte de la raz贸n por la
575
+
576
+ 00:08:58.529 --> 00:09:00.450
577
+ que la inteligencia artificial se demor贸 tanto en
578
+
579
+ 00:09:00.450 --> 00:09:03.935
580
+ llegar, porque aunque estos algoritmos son viejos, nacieron
581
+
582
+ 00:09:03.935 --> 00:09:05.935
583
+ en los a帽os 50, se fueron optimizando en
584
+
585
+ 00:09:05.935 --> 00:09:08.415
586
+ los noventas, no es hasta ahora que tenemos
587
+
588
+ 00:09:08.415 --> 00:09:11.454
589
+ suficientes chips y suficiente memoria RAM para entrenar
590
+
591
+ 00:09:11.454 --> 00:09:13.295
592
+ una red neuronal de este estilo. Esto es
593
+
594
+ 00:09:13.295 --> 00:09:15.795
595
+ mucho m谩s complejo y tiene otras ecuaciones matem谩ticas
596
+
597
+ 00:09:15.930 --> 00:09:18.830
598
+ por dentro en las que ahondamos con m谩s
599
+
600
+ 00:09:19.290 --> 00:09:21.450
601
+ detalle en la clase de redes neuronales del
602
+
603
+ 00:09:21.450 --> 00:09:23.770
604
+ curso de fundamentos de ingenier铆a de software. Y,
605
+
606
+ 00:09:23.770 --> 00:09:26.089
607
+ por supuesto, lo podemos ver en nivel c贸digo
608
+
609
+ 00:09:26.089 --> 00:09:28.463
610
+ y matem谩tico en los cursos de redes neuronales
611
+
612
+ 00:09:28.463 --> 00:09:30.649
613
+ y machine learning de Platzi. Pero esto no
614
+
615
+ 00:09:30.649 --> 00:09:33.475
616
+ es suficiente. Con solo entrenar una red neuronal
617
+
618
+ 00:09:33.475 --> 00:09:36.035
619
+ y tener todos los tokens puedo programar, por
620
+
621
+ 00:09:36.035 --> 00:09:38.995
622
+ ejemplo, un traductor, pero no puedo hacer que
623
+
624
+ 00:09:38.995 --> 00:09:41.575
625
+ el gato mahuye o que el perro ladre.
626
+
627
+ 00:09:41.875 --> 00:09:44.515
628
+ Todav铆a no he logrado completar todos los datos
629
+
630
+ 00:09:44.515 --> 00:09:47.510
631
+ que necesito para generar un sistema de predicci贸n
632
+
633
+ 00:09:47.890 --> 00:09:49.810
634
+ efectivo. En general, la raz贸n por la que
635
+
636
+ 00:09:49.810 --> 00:09:51.830
637
+ no se puede es porque tendr铆a que multiplicar
638
+
639
+ 00:09:52.130 --> 00:09:53.490
640
+ por cada una de las letras, por cada
641
+
642
+ 00:09:53.490 --> 00:09:54.610
643
+ 1 de los tokens, por cada una de
644
+
645
+ 00:09:54.610 --> 00:09:57.030
646
+ las palabras y s铆labas que tengo ac谩 expresadas,
647
+
648
+ 00:09:57.410 --> 00:09:59.570
649
+ todas las variaciones. Y esto es un problema
650
+
651
+ 00:09:59.570 --> 00:10:01.925
652
+ n a la n, que tomar铆a una cantidad
653
+
654
+ 00:10:01.925 --> 00:10:04.565
655
+ de memoria RAM, de CPU, de GPU y
656
+
657
+ 00:10:04.565 --> 00:10:08.085
658
+ de chips ingente. Pero no necesito hacerlo para
659
+
660
+ 00:10:08.085 --> 00:10:11.845
661
+ todas, solamente necesito hacerlo para las palabras m谩s
662
+
663
+ 00:10:11.845 --> 00:10:14.635
664
+ importantes. Cuando t煤 dices que el gato ma煤lla
665
+
666
+ 00:10:14.635 --> 00:10:17.740
667
+ y el perro hay una palabra particular a
668
+
669
+ 00:10:17.740 --> 00:10:19.660
670
+ la que le pones m谩s atenci贸n. Probablemente es
671
+
672
+ 00:10:19.660 --> 00:10:21.900
673
+ la palabra ma煤lla y hay otra palabra a
674
+
675
+ 00:10:21.900 --> 00:10:23.580
676
+ la que le pones atenci贸n, probablemente es la
677
+
678
+ 00:10:23.580 --> 00:10:26.540
679
+ palabra gato. As铆 funciona tu mente. T煤 no
680
+
681
+ 00:10:26.540 --> 00:10:28.380
682
+ le铆ste todo el texto, solo te enfocas en
683
+
684
+ 00:10:28.380 --> 00:10:31.655
685
+ los elementos m谩s importantes para predecir la siguiente
686
+
687
+ 00:10:31.655 --> 00:10:33.835
688
+ palabra y de esta manera completar el texto.
689
+
690
+ 00:10:34.215 --> 00:10:36.055
691
+ Esto se le conoce como el modelo de
692
+
693
+ 00:10:36.055 --> 00:10:39.115
694
+ atenci贸n y funciona de la siguiente manera. Existe
695
+
696
+ 00:10:39.175 --> 00:10:41.575
697
+ un query, un key y un value, una
698
+
699
+ 00:10:41.575 --> 00:10:44.490
700
+ consulta, una llave y un valor. Esto que
701
+
702
+ 00:10:44.490 --> 00:10:46.910
703
+ tenemos ac谩, el gato Maura y el perro,
704
+
705
+ 00:10:47.050 --> 00:10:49.450
706
+ esto es un prompt, el prompt que t煤
707
+
708
+ 00:10:49.450 --> 00:10:52.410
709
+ escribes en ChatGPT o en donde sea. El
710
+
711
+ 00:10:52.410 --> 00:10:55.150
712
+ prompt lo que hace es ver el 煤ltimo
713
+
714
+ 00:10:55.290 --> 00:10:57.770
715
+ token, la 煤ltima palabra, en este caso es
716
+
717
+ 00:10:57.770 --> 00:11:00.474
718
+ perro, Y de ese 煤ltimo token va a
719
+
720
+ 00:11:00.474 --> 00:11:02.925
721
+ evaluar a lo largo de todo el resto
722
+
723
+ 00:11:02.925 --> 00:11:05.805
724
+ del prompt, todo lo que ha escrito, cu谩les
725
+
726
+ 00:11:05.805 --> 00:11:10.205
727
+ son los tokens de mayor significancia, que est谩n
728
+
729
+ 00:11:10.205 --> 00:11:13.330
730
+ m谩s cerca del 煤ltimo. 驴C贸mo saben que est谩
731
+
732
+ 00:11:13.330 --> 00:11:15.670
733
+ m谩s cerca? Porque est谩n en el plano cartesiano
734
+
735
+ 00:11:15.730 --> 00:11:19.590
736
+ del espacio enidimensional de tokens. Entonces, la palabra
737
+
738
+ 00:11:19.970 --> 00:11:22.310
739
+ perro est谩 muy cerca de la palabra ma煤lla
740
+
741
+ 00:11:22.530 --> 00:11:25.270
742
+ y est谩 definitivamente cerca de la palabra gato.
743
+
744
+ 00:11:25.890 --> 00:11:27.970
745
+ Estas palabras que son cercanas a la palabra
746
+
747
+ 00:11:27.970 --> 00:11:32.105
748
+ perro las volvemos la llave. Y luego la
749
+
750
+ 00:11:32.105 --> 00:11:35.785
751
+ b es el valor. Ese valor es una
752
+
753
+ 00:11:35.785 --> 00:11:40.125
754
+ ecuaci贸n matem谩tica que multiplica y mueve las matrices
755
+
756
+ 00:11:40.505 --> 00:11:42.800
757
+ de los n煤meros de punter铆a de la palabra
758
+
759
+ 00:11:42.800 --> 00:11:45.280
760
+ perro y de la palabra ma煤lla y gato,
761
+
762
+ 00:11:45.280 --> 00:11:47.840
763
+ a trav茅s de una funci贸n de activaci贸n. Lo
764
+
765
+ 00:11:47.840 --> 00:11:50.400
766
+ importante es que esa v termina siendo un
767
+
768
+ 00:11:50.400 --> 00:11:53.280
769
+ vector que usando la palabra ma煤lla y la
770
+
771
+ 00:11:53.280 --> 00:11:55.211
772
+ palabra gato junto con la palabra perro, que
773
+
774
+ 00:11:55.211 --> 00:11:58.305
775
+ es la 煤ltima palabra del prompt, apunta a
776
+
777
+ 00:11:58.305 --> 00:12:01.584
778
+ la probabilidad m谩s alta de una palabra que
779
+
780
+ 00:12:01.584 --> 00:12:05.425
781
+ contin煤e. Esto genera otro vector de probabilidades que
782
+
783
+ 00:12:05.425 --> 00:12:07.505
784
+ genera una serie de palabras. Puede que el
785
+
786
+ 00:12:07.505 --> 00:12:09.265
787
+ perro ladre, que el perro es, que el
788
+
789
+ 00:12:09.265 --> 00:12:11.670
790
+ perro llora o que el perro no. Esta
791
+
792
+ 00:12:11.670 --> 00:12:14.230
793
+ probabilidad es lo que termina siendo que eventualmente
794
+
795
+ 00:12:14.230 --> 00:12:16.890
796
+ elijamos la palabra ladra, porque tiene el mayor
797
+
798
+ 00:12:17.029 --> 00:12:19.589
799
+ porcentaje. Pero los grandes modelos de lenguaje no
800
+
801
+ 00:12:19.589 --> 00:12:22.630
802
+ eligen solamente la palabra de mayor probabilidad. Los
803
+
804
+ 00:12:22.630 --> 00:12:24.149
805
+ modelos de lenguaje tienen algo que se llama
806
+
807
+ 00:12:24.149 --> 00:12:27.755
808
+ temperatura, porque la creatividad no funciona siendo siempre
809
+
810
+ 00:12:27.755 --> 00:12:29.755
811
+ lo mismo. Para que haya un nivel de
812
+
813
+ 00:12:29.755 --> 00:12:31.514
814
+ inteligencia tiene que haber un cierto nivel de
815
+
816
+ 00:12:31.514 --> 00:12:33.675
817
+ creatividad, por ende, a veces tengo que elegir
818
+
819
+ 00:12:33.675 --> 00:12:36.315
820
+ la segunda o la tercera opci贸n. Los grandes
821
+
822
+ 00:12:36.315 --> 00:12:39.274
823
+ m贸dulos de lenguaje, a veces, de manera aleatoria,
824
+
825
+ 00:12:39.274 --> 00:12:40.770
826
+ eligen la segunda o la tercera opci贸n. Y
827
+
828
+ 00:12:40.770 --> 00:12:42.930
829
+ es por esto que no son deterministas, que
830
+
831
+ 00:12:42.930 --> 00:12:45.430
832
+ no generan el mismo texto todo el tiempo,
833
+
834
+ 00:12:45.490 --> 00:12:48.610
835
+ pero generan textos muy similares. Sin embargo, esto
836
+
837
+ 00:12:48.610 --> 00:12:52.210
838
+ solamente sirve para autocompletar los primeros GPTs o
839
+
840
+ 00:12:52.210 --> 00:12:55.575
841
+ Generative Pretrain Transformers, que son estos modelos que
842
+
843
+ 00:12:55.575 --> 00:12:58.135
844
+ integran la red neuronal, los tokens, el espacio
845
+
846
+ 00:12:58.135 --> 00:13:00.855
847
+ en el dimensional, la atenci贸n, 1 les colocaba
848
+
849
+ 00:13:00.855 --> 00:13:03.975
850
+ un texto y ten铆an que completarlo. No se
851
+
852
+ 00:13:03.975 --> 00:13:06.055
853
+ comportaban como un chat. Lo que hizo Pen
854
+
855
+ 00:13:06.055 --> 00:13:08.855
856
+ AI es que contrat贸 a 6000 personas en
857
+
858
+ 00:13:08.855 --> 00:13:12.680
859
+ 脕frica para hablar con el modelo y rega帽arlo
860
+
861
+ 00:13:12.740 --> 00:13:14.340
862
+ cuando el modelo no se comportaba como un
863
+
864
+ 00:13:14.340 --> 00:13:17.620
865
+ chat y recompensarlo cuando el modelo se comportaba
866
+
867
+ 00:13:17.620 --> 00:13:20.100
868
+ como un chat. Esto recalibr贸 las neuronas del
869
+
870
+ 00:13:20.100 --> 00:13:23.940
871
+ modelo para ense帽arle al modelo a responder como
872
+
873
+ 00:13:23.940 --> 00:13:26.725
874
+ un chat o como no un chat. Esto
875
+
876
+ 00:13:26.725 --> 00:13:31.285
877
+ se conoce como RLHF, Remeforcement Learning with Human
878
+
879
+ 00:13:31.285 --> 00:13:33.205
880
+ Feedback, y es la forma en la que
881
+
882
+ 00:13:33.205 --> 00:13:36.265
883
+ los modelos aprenden a hablar como un chat.
884
+
885
+ 00:13:36.565 --> 00:13:40.310
886
+ Esto incluye aprender cu谩ndo dejar de hablar, cu谩ndo
887
+
888
+ 00:13:40.310 --> 00:13:43.270
889
+ dejar de generar resultados. Esta es la raz贸n
890
+
891
+ 00:13:43.270 --> 00:13:46.470
892
+ por la que ChatGPT responde muchas veces en
893
+
894
+ 00:13:46.470 --> 00:13:48.970
895
+ listas de vi帽etas, o por la que Anthropic
896
+
897
+ 00:13:49.190 --> 00:13:52.470
898
+ Kloth y Gemini tienen respuestas tan diferentes en
899
+
900
+ 00:13:52.470 --> 00:13:55.050
901
+ su personalidad a la personalidad que tiene Kloth.
902
+
903
+ 00:13:55.375 --> 00:13:57.695
904
+ Hay varios cursos de Platzi de procesamiento de
905
+
906
+ 00:13:57.695 --> 00:13:59.215
907
+ lenguaje natural que te lo explican m谩s a
908
+
909
+ 00:13:59.215 --> 00:14:01.375
910
+ fondo, pero el curso m谩s importante es el
911
+
912
+ 00:14:01.375 --> 00:14:04.575
913
+ curso de fundamentos de LLMs, que te ense帽a
914
+
915
+ 00:14:04.575 --> 00:14:07.087
916
+ de punta a punta c贸mo construir esto, c贸mo
917
+
918
+ 00:14:07.407 --> 00:14:09.487
919
+ instalarlo en tu computadora y c贸mo ser un
920
+
921
+ 00:14:09.487 --> 00:14:12.126
922
+ ingeniero que est谩 construyendo la frontera del conocimiento,
923
+
924
+ 00:14:12.126 --> 00:14:14.047
925
+ que hoy en d铆a es la inteligencia artificial
926
+
927
+ 00:14:14.047 --> 00:14:16.066
928
+ generativa con grandes modelos de lenguaje.