[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.00,Default,,0000,0000,0000,,Desafortunadamente, no estamos completamente listos para estar sonrientes. Dialogue: 0,0:00:04.00,0:00:07.00,Default,,0000,0000,0000,,Sebastian me dijo que van a pasar algunos años antes de que tenga Dialogue: 0,0:00:07.00,0:00:11.00,Default,,0000,0000,0000,,mi propio auto que se conduce solo, pero el mayor problema es que todavía no hemos hablado realmente de Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0000,0000,0000,,como usar un procedimiento. Dialogue: 0,0:00:13.00,0:00:17.00,Default,,0000,0000,0000,,Todo lo que hemos hecho es crearlos, hasta que no podamos usarlos Dialogue: 0,0:00:17.00,0:00:19.00,Default,,0000,0000,0000,,no tenemos ninguna razon para estar felices. Dialogue: 0,0:00:19.00,0:00:22.00,Default,,0000,0000,0000,,Enseguida vamos a aprender a usarlos, luego estaremos nuevamente sonrientes. Dialogue: 0,0:00:22.00,0:00:25.00,Default,,0000,0000,0000,,Ahora vamos a aprender a usar un procedimiento. Dialogue: 0,0:00:25.00,0:00:32.00,Default,,0000,0000,0000,,La forma de usar un procedimiento- necesitamos el nombre del procedimiento, seguido de Dialogue: 0,0:00:32.00,0:00:36.00,Default,,0000,0000,0000,,un parentesis izquierdo, seguido de una lista de entradas. Dialogue: 0,0:00:36.00,0:00:40.00,Default,,0000,0000,0000,,Podría ser cualquier cantidad de entradas, pero tiene que coincidir con el número de entradas Dialogue: 0,0:00:40.00,0:00:42.00,Default,,0000,0000,0000,,que espera el procedimiento. Dialogue: 0,0:00:42.00,0:00:44.00,Default,,0000,0000,0000,,Estas entradas son algunas veces llamadas operandos, Dialogue: 0,0:00:44.00,0:00:46.00,Default,,0000,0000,0000,,algunas veces son llamadas argumentos. Dialogue: 0,0:00:46.00,0:00:48.00,Default,,0000,0000,0000,,No vamos a debatir al respecto. Dialogue: 0,0:00:48.00,0:00:50.00,Default,,0000,0000,0000,,Nosotros simplemente las llamaremos entradas. Dialogue: 0,0:00:50.00,0:00:52.00,Default,,0000,0000,0000,,Ustedes ya hicieron algo parecido a esto. Dialogue: 0,0:00:52.00,0:00:57.00,Default,,0000,0000,0000,,En la unidad 1, aprendieron a usar find con las cadenas. Dialogue: 0,0:00:57.00,0:00:59.00,Default,,0000,0000,0000,,con find podían pasar una o dos entradas. Dialogue: 0,0:00:59.00,0:01:01.00,Default,,0000,0000,0000,,La primera entrada era una cadena. Dialogue: 0,0:01:01.00,0:01:04.00,Default,,0000,0000,0000,,Esa fue la cadena en la que estaban buscando, esa fue la primera entrada, Dialogue: 0,0:01:04.00,0:01:07.00,Default,,0000,0000,0000,,y la segunda entrada podía ser la posición desde donde empezar a Dialogue: 0,0:01:07.00,0:01:09.00,Default,,0000,0000,0000,,buscar dentro esa cadena. Dialogue: 0,0:01:09.00,0:01:13.00,Default,,0000,0000,0000,,Usamos find en varias formas en la unidad 1, así como ustedes Dialogue: 0,0:01:13.00,0:01:15.00,Default,,0000,0000,0000,,la usaron por su cuenta en la tarea de la unidad 1. Dialogue: 0,0:01:15.00,0:01:17.00,Default,,0000,0000,0000,,Find es un poco diferente del procedimiento que define uno por su cuenta. Dialogue: 0,0:01:17.00,0:01:19.00,Default,,0000,0000,0000,,Antes que nada, es interno. Dialogue: 0,0:01:19.00,0:01:22.00,Default,,0000,0000,0000,,La otra cosa que era diferente es que en lugar de tener simplemente find tuvimos Dialogue: 0,0:01:22.00,0:01:25.00,Default,,0000,0000,0000,,otra entrada que estaba por aquí. Dialogue: 0,0:01:25.00,0:01:31.00,Default,,0000,0000,0000,,Tenemos la cadena en la que estamos haciendo la busqueda, digamos Dialogue: 0,0:01:31.00,0:01:34.00,Default,,0000,0000,0000,,que era la variable page- esa fue otra entrada a buscar. Dialogue: 0,0:01:34.00,0:01:38.00,Default,,0000,0000,0000,,En una clase posterior hablaremos porque está hecha diferente, pero es Dialogue: 0,0:01:38.00,0:01:41.00,Default,,0000,0000,0000,,muy similar llamar un procedimiento donde una de las entradas esta por aquí. Dialogue: 0,0:01:41.00,0:01:43.00,Default,,0000,0000,0000,,y la otra por aquí. Dialogue: 0,0:01:43.00,0:01:46.00,Default,,0000,0000,0000,,Esto es un poco diferente de eso y no trataremos más en este curso, pero Dialogue: 0,0:01:46.00,0:01:50.00,Default,,0000,0000,0000,,en un curso posterior aprenderás más acerca de que significa esto realmente. Dialogue: 0,0:01:50.00,0:01:55.00,Default,,0000,0000,0000,,En todos los procedimientos que definan por su cuenta, no tendremos ningun Dialogue: 0,0:01:55.00,0:01:56.00,Default,,0000,0000,0000,,objeto sobre el cual invocarlos. Dialogue: 0,0:01:56.00,0:02:00.00,Default,,0000,0000,0000,,Simplemente tendremos el procedimiento a llamar y los argumentos, operandos o entradas, Dialogue: 0,0:02:00.00,0:02:03.00,Default,,0000,0000,0000,,como quieran llamarlos, para pasarlos. Dialogue: 0,0:02:03.00,0:02:06.00,Default,,0000,0000,0000,,Veamos como funciona con un simple procedimiento. Dialogue: 0,0:02:06.00,0:02:10.00,Default,,0000,0000,0000,,voy a definir el procedimiento rest_of_string y le daremos el Dialogue: 0,0:02:10.00,0:02:13.00,Default,,0000,0000,0000,,parámetro s, eso significa que toma una entrada y vamos a usar el Dialogue: 0,0:02:13.00,0:02:16.00,Default,,0000,0000,0000,,nombre s para referirnos al valor de esa entrada. Dialogue: 0,0:02:16.00,0:02:21.00,Default,,0000,0000,0000,,Haremos que retorne la cadena desde el primer caracter hasta final. Dialogue: 0,0:02:21.00,0:02:25.00,Default,,0000,0000,0000,,usaremos la operador indexado return s[1:] Dialogue: 0,0:02:25.00,0:02:31.00,Default,,0000,0000,0000,,Esto evaluará la cadena con la primera letra removida, es decir toda la cadena desde Dialogue: 0,0:02:31.00,0:02:33.00,Default,,0000,0000,0000,,la posición uno hasta el final de la cadena. Dialogue: 0,0:02:33.00,0:02:35.00,Default,,0000,0000,0000,,Eso es lo que retornamos. Dialogue: 0,0:02:35.00,0:02:39.00,Default,,0000,0000,0000,,Entonces, la salida de rest_of_string es la nueva cadena que empieza desde Dialogue: 0,0:02:39.00,0:02:42.00,Default,,0000,0000,0000,,la segunda letra de la cadena de entrada. Dialogue: 0,0:02:42.00,0:02:45.00,Default,,0000,0000,0000,,Aqui tienen un ejemplo de como usar este procedimiento. Dialogue: 0,0:02:45.00,0:02:47.00,Default,,0000,0000,0000,,Podríamos llamarlo directamente. Dialogue: 0,0:02:47.00,0:02:51.00,Default,,0000,0000,0000,,podríamos decir print rest_of_string Dialogue: 0,0:02:51.00,0:02:53.00,Default,,0000,0000,0000,,ese es nuestro procedimiento. Dialogue: 0,0:02:53.00,0:02:56.00,Default,,0000,0000,0000,,Ahora vamos a tener nuestro parentesis y vamos a pasar la entrada. Dialogue: 0,0:02:56.00,0:02:59.00,Default,,0000,0000,0000,,Hay un parámetro de rest_of_string, entonces necesitamos una entrada Dialogue: 0,0:02:59.00,0:03:02.00,Default,,0000,0000,0000,,y esa sería string Dialogue: 0,0:03:02.00,0:03:05.00,Default,,0000,0000,0000,,pasaremos la cadena audacity. Dialogue: 0,0:03:05.00,0:03:07.81,Default,,0000,0000,0000,,Lo que sucede cuando llamamos a un procedimiento como este, es que la ejecución Dialogue: 0,0:03:07.81,0:03:10.00,Default,,0000,0000,0000,,salta al cuerpo de procedimiento. Dialogue: 0,0:03:10.00,0:03:10.57,Default,,0000,0000,0000,,podemos pensar acerca de lo que el intérprete está haciendo ahora. Dialogue: 0,0:03:10.57,0:03:17.00,Default,,0000,0000,0000,,En lugar de ejecutar el código aquí, el intérprete se moverá Dialogue: 0,0:03:17.00,0:03:21.00,Default,,0000,0000,0000,,cuando llama al procedimiento, y saltará para ejecutar el código dentro del procedimiento. Dialogue: 0,0:03:21.00,0:03:26.00,Default,,0000,0000,0000,,Asignará los valores a los parámetros pasados como entradas. Dialogue: 0,0:03:26.00,0:03:30.00,Default,,0000,0000,0000,,podemos concebir esto como una asignación que dice ahora el valor de Dialogue: 0,0:03:30.00,0:03:31.97,Default,,0000,0000,0000,,s es el valor de esta entrada que fue pasada. Dialogue: 0,0:03:31.97,0:03:36.00,Default,,0000,0000,0000,,Ahora vamos a evaluar el cuerpo del procedimiento. Dialogue: 0,0:03:36.00,0:03:39.00,Default,,0000,0000,0000,,En este caso hay una sola sentecia, la sentencia return, Dialogue: 0,0:03:39.00,0:03:43.00,Default,,0000,0000,0000,,vamos a encontrar este valor, así s[1:] Dialogue: 0,0:03:43.00,0:03:47.00,Default,,0000,0000,0000,,El resultado de esto va a ser la cadena udacity. Dialogue: 0,0:03:47.00,0:03:49.00,Default,,0000,0000,0000,,Luego tendremos la sentencia return. Dialogue: 0,0:03:49.00,0:03:51.00,Default,,0000,0000,0000,,Lo que return significa es que vamos a saltar de regreso, Dialogue: 0,0:03:51.00,0:03:56.00,Default,,0000,0000,0000,,de regreso a donde llamamos al procedimiento, pero ahora de verdad Dialogue: 0,0:03:56.00,0:03:58.00,Default,,0000,0000,0000,,tenemos un resultado. Dialogue: 0,0:03:58.00,0:04:03.00,Default,,0000,0000,0000,,Cuando saltamos de regreso, el valor que es evaluado es cualquier valor que Dialogue: 0,0:04:03.00,0:04:04.00,Default,,0000,0000,0000,,retornamos. Dialogue: 0,0:04:04.00,0:04:07.00,Default,,0000,0000,0000,,En este caso, es la cadena udacity. Dialogue: 0,0:04:07.05,0:04:08.56,Default,,0000,0000,0000,,Entonces no tenemos nuestro auto que se conduce solo, Dialogue: 0,0:04:08.56,0:04:10.87,Default,,0000,0000,0000,,pero ahora podemos definir y usar procedimientos. Dialogue: 0,0:04:10.87,0:04:12.74,Default,,0000,0000,0000,,Este es de verdad un concepto poderoso. Dialogue: 0,0:04:12.90,0:04:14.99,Default,,0000,0000,0000,,Cualquier cosa que hagamos en lo que queda del curso y cualquier cosa Dialogue: 0,0:04:14.99,0:04:18.53,Default,,0000,0000,0000,,que casi cualquiera hace en la programación de computadoras está relacionado con definir Dialogue: 0,0:04:18.53,0:04:20.70,Default,,0000,0000,0000,,y usar procedimientos. Dialogue: 0,0:04:20.70,0:04:22.78,Default,,0000,0000,0000,,Ahora deberíamos tener una gran sonrisa. Dialogue: 0,0:04:22.78,0:04:26.78,Default,,0000,0000,0000,,Podemos pensar acerca de los procedimientos como el mapeo de entradas a salidas. Dialogue: 0,0:04:26.78,0:04:30.40,Default,,0000,0000,0000,,Podemos pensar acerca de los humanos que también mapean entradas a salidas. Dialogue: 0,0:04:30.40,0:04:33.06,Default,,0000,0000,0000,,Tenemos entradas viniendo a través de nuestros ojos, de Dialogue: 0,0:04:33.06,0:04:35.69,Default,,0000,0000,0000,,nuestra boca, quizá incluso a través de nuestra nariz. Dialogue: 0,0:04:35.69,0:04:39.08,Default,,0000,0000,0000,,No intentaré mencionar ninguna de las salidas de nuestro procedimiento humano, pero dado que Dialogue: 0,0:04:39.08,0:04:41.50,Default,,0000,0000,0000,,el procedimiento es un concepto importante, vamos a tener varias Dialogue: 0,0:04:41.50,0:04:44.50,Default,,0000,0000,0000,,pruebas para verificar que los entendimos bien.