Upload via hfc (batch)
Browse filesUploaded using hfc tool
This view is limited to 50 files because it contains too many changes. 聽
See raw diff
- .gitattributes +13 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/01-Bienvenida/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Control de Flujo en C/01-Bienvenida/01-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-Resumen.html +0 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/01-if_c58ef3ef-a775-44e3-a585-fbd6c1932976.c +9 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Lecturas recomendadas.txt +1 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.mp4 +3 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Manejo de Condicionales IfElse en Lenguaje C.vtt +753 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/02-demoif_72993f29-e31b-4df7-8b00-add49844084a.c +17 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/03-nestedif_e6d6f354-6111-4e0b-9802-2aa3a6d9a99e.c +38 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/02-Toma de decisiones/04-switch_26ee0200-c773-4d19-a0d9-ba7fc5b5f686.c +40 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/01-while_189ccca7-d3a5-4d0c-8408-4fc807afdccd.c +14 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-Resumen.html +0 -0
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/02-dowhile_093e5362-d724-4dea-b1c3-7269ab208dd6.c +4 -0
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Lecturas recomendadas.txt +3 -0
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-Resumen.html +0 -0
- 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
- 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
- subir/Curso de Control de Flujo en C/03-Control de Bucles en C/03-for_53ab0088-8c9a-4daf-b43d-4b6b92f44274.c +12 -0
- subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/01-Resumen.html +0 -0
- 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
- subir/Curso de Control de Flujo en C/04-Uso de las instrucciones break y continue/02-Resumen.html +0 -0
- 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
- 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
- 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
- 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
- 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
- subir/Curso de Control de Flujo en C/presentation.mhtml +0 -0
- subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt +2 -0
- 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
- 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
- subir/fixed/Curso de Fundamentos de Ingenier铆a de Software/05-Introducci贸n a Blockchain e Inteligencia Artificial/02-Resumen.html +0 -0
- 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
- 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.
|