Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 6-11-23 - 2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 6 de noviembre de 2023 por Raquel G.

5 visualizaciones

Descargar la transcripción

Vale, pues vamos a hacerlo en una clase aparte, más ejemplos, no son los de la hoja, con esos de la hoja vamos mañana, o luego si nos da tiempo. 00:00:00
Venga, pues a ver, voy a llamar a esta clase, ejemplos con funciones. 00:00:14
Vale, pues venga, vamos a hacer ejercicios sueltos, así más sencillos que estos que quedan de la hoja, más tipo examen, pero no tipo examen, no son los del examen obviamente. 00:00:44
Bueno, para ejemplificar esto, pues venga, vamos a hacer, por ejemplo, vamos a suponer que queremos hacer un código, un código de, que haga lo siguiente. 00:01:04
Vale, pues un programa para recibir, para leer cadenas de texto, hasta que, hasta que se introduzca un enter sin más, 00:01:17
una cadena vacía. Vale, pues cuando ya se ha terminado la introducción de cadenas, el programa deberá mostrar cuántas vocales ha habido en el total de cadenas, por ejemplo, o cuántos espacios, bueno venga, cuántas vocales. 00:01:46
Entonces aquí ya vemos que habrá que contar, aquí hay que contar, porque el resultado del programa es decir cuántas veces ha pasado algo. 00:02:06
En el total de cadenas. Vale, pues un código para hacer esto, código que va leyendo cadenas hasta que, no sé qué, patatín, patatín, hasta que se introduzca un enter, 00:02:17
es decir, la cadena vacía, un enter. Una vez que ha terminado ese bucle, tendrá que mostrar cuántas vocales ha habido. Luego ya la primera estructura ya la vemos, un bucle gordo de lectura de cadenas. 00:02:46
Lee cadena, lee cadena, lee cadena, eso es un bucle grande. La condición de finalización, cuando la cadena sea vacía, cuando no, vale, porque el enter, yo no he metido nada, cadena vacía. 00:03:00
Bueno, condición de finalización, medio rara, pero bueno, la hacemos, cadena vacía, no es cadena igual a fin, no es cadena igual a nada, cadena vacía. 00:03:13
Bueno, pues, y luego dentro de ese bucle, qué hay que hacer, leer cadena, ya lo sabemos. Luego tendrá que contar las vocales que tiene esa cadena, para ir incrementando un contador. 00:03:20
Luego ese programa tiene un contador, tiene un contador que se va incrementando dentro del bucle. Luego esa es la estructura de nuestro código. 00:03:38
Como vamos a leer con el teclado, le vamos a poner ya el escáner. 00:03:46
Bueno, voy a cambiar la cadena vacía, porque esto ya mete null y es un poco lioso. La vamos a poner la cadena fin, ya está. Y así no lo liamos, lo dejamos más parecido como hemos hecho siempre. 00:03:49
Para no meter cosas raras. Vale, pues entonces hemos dicho, con un primer análisis de nuestro enunciado, ya hemos llegado a la conclusión de que este programa será un bucle grande, que está leer cadena, cuenta para incrementar un contador, leer cadena, cuenta para incrementar un contador. 00:04:18
Cuando el programa termine, mostrará el resultado del contador. Esa es la estructura que ya visualizamos. Luego ya habrá que irla depurando. 00:04:41
Pues venga, que el programa cuenta lo tenemos clarísimo, porque ese es el resultado. Entonces las cuentas empiezan a cero, siempre. Las cuentas empiezan a cero. El resultado final del programa, ya sabemos, será el total de vocales ha sido, y aquí concatenamos con cont. 00:04:49
Ahora, aquí dentro, el bucle, en el cual vamos, pide cadena, cuenta, pide cadena, cuenta, pide cadena, cuenta. Pues venga, un bucle, un bucle, este no es un bucle for, este no es un bucle for, porque el bucle for, yo sé, antes de entrar, tengo que saber, bueno, no es que 00:05:13
con un bucle for, yo puedo emular un while si de la condición que pongo entre medias es la misma que el while, pero claro, lo que se trata es de hacer una sintaxis bonita. Pues la sintaxis del for bonita, la habitual, la que se usa, que es esta, esta, la sintaxis del for bonita, que es la que se usa, la usamos cuando ya sabemos la cantidad de veces de partida que se va a ejecutar el bucle, y entonces ponemos una sintaxis como esta, es el uso habitual. 00:05:43
Entonces, yo sé que este bucle se va a ejecutar en un menos una veces, pues mi for empieza desde un, incrementando i, mientras que esa menor igual que en un menos uno, y además tengo esa i aquí dentro para hacer cosas con ella si quiero. 00:06:09
Entonces, la sintaxis esta del for, que es la habitual y la bonita, se adapta a la situación en la que yo quiero un bucle que ya sé de partida, antes de entrar en él, antes de entrar ahí, ya sé cuantas veces se va a ejecutar. 00:06:22
No es esta situación, en esta situación, siga introduciendo cadenas hasta que me introduzca la cadena fin, pero yo de partida no sé, a lo mejor la primera ejecución tarda tres veces en introducir la fin, la siguiente ejecución tarda quince veces, de partida no lo sé. 00:06:36
Entonces hombre, poner ahí un for no, porque si, claro yo puedo poner ahí un for, porque recordad que un for, esta es la condición en la que cambio, esta la inicialización y esta no se que, entonces ya dijimos en su momento, 00:06:53
que un for es igual que un while, con esto vacío, y aquí poniendo la condición que sea, esto es lo que dijimos del for, esto es exactamente igual que esto, es lo mismo, esto y esto es lo mismo, 00:07:07
pero hombre, yo no uso el for con esta sintaxis tan horrible, para eso ya pongo el while, lo entiendo mejor, el for lo solemos usar con esta sintaxis y aplica sobre todo a esta situación, 00:07:30
cuando yo quiero que algo se ejecute un número exacto de veces, que ya sé de partida, etc, todo este rollo ya lo contamos en su momento. 00:07:50
Vale, pues esta no es mi situación, yo de partida no sé cuantas veces va a ejecutar, pues aquí le pega un while. 00:07:58
Bueno, ahora que es lo que voy a hacer varias veces, leer número, perdón leer número no, leer cadena y contar las vocales que tiene esa cadena para sumarlas al contador, 00:08:04
entonces la primera parte de leer cadena, vale, pues podría ser esta, ala, leo cadena, y ahora, aquí que tenemos que hacer, 00:08:20
bueno, pues tenemos que ver esta cadena cuantas vocales tiene, entonces tenemos que coger la cadena y coger su primer carácter, ver si cumple la condición de ser vocal, 00:08:45
luego coger su segundo carácter, ver si cumple la condición de ser vocal, luego coger su tercero, ver si cumple la condición de ser vocal, 00:08:58
y cada vez que cumple esa condición incrementa el contador, ¿verdad? 00:09:05
Entonces, para eso tenemos que usar esos métodos, esas funciones que vimos de String que podíamos usar, que eran esta de aquí, 00:09:10
esto que me devolvía, esto devuelve el número de caracteres de una cadena, vale, y aprovechamos este ejercicio para recordarlo, 00:09:22
y charAt era otra función que vimos, que si yo le paso una posición cualquiera, ya hemos leído, devuelve el char de cat en, 00:09:38
posición i, vale, bueno, pues tengamos presente estas dos funcionalidades de las cadenas, que es, obtener su número de caracteres con esto, y obtener el carácter en la posición i con esto, 00:10:08
vale, no lo olvidemos, porque nos permite hacer cosas con cadenas, bueno, vale, pues aquí que queremos hacer en este código, 00:10:30
queremos recorrer la cadena desde su posición 0 a la última, para cada posición quedarme con el carácter en esa posición, 00:10:38
y si cumple la condición de ser vocal, incrementar el contador, ¿verdad?, incrementar el contador, eso es lo que queremos hacer, 00:10:50
vale, pues entonces tengo que hacer otro bucle ahí dentro, la condición del while ya la pondremos, que está en relación con que la cadena sea diferente de fin, 00:10:58
¿verdad?, esa ya la completamos, vale, entonces aquí tenemos que hacer otro bucle, porque aquí ya tenemos el subproblema de, 00:11:07
ahora aquí tenemos un subproblema pequeño, que es, recorrer todos, eso es lo que tenemos que hacer ahora, todos los caracteres de K, para contar todos los que sean vocal, 00:11:13
eso es lo que tenemos que hacer ahora, recorrer todos los caracteres de K, para ver si son vocal, entonces eso de nuevo es un bucle, no hay tutía, 00:11:33
tengo que recorrer el primero, y el segundo, y el tercero, y el cuarto, así hasta el último, ¿y cómo sé cuál es el último?, porque tengo aquí el total de caracteres que tiene, 00:11:43
tengo aquí el total de caracteres que tiene, vale, pues ese bucle, ahora ya sí que lo puedo hacer con un for, porque este bucle se va a ejecutar tantas veces como medida, eso, 00:11:54
se va a ejecutar tantas veces como caracteres tenga, ¿y cuántos caracteres tiene?, me lo devuelve eso de ahí, entonces esto ya sí que puede ser un for, 00:12:05
esto ya sí que puede ser un for que sea, desde i igual a cero, mientras i sea menor que cat.length, incrementando i, 00:12:15
ala, estupendo, este bucle de aquí se ejecuta para i igual a cero, para i igual a uno, para i igual a dos, y así hasta para i igual a length menos uno, 00:12:27
menos uno, vamos a entender bien esto de las longitudes de las cadenas, vamos a entenderlo bien, a ver, si yo tengo aquí una cadena con caracteres, 00:12:40
vale, aquí va un carácter, aquí va otro, aquí va otro, aquí va otro, otro, otro y otro, vamos a suponer que esta es la cadena, 00:12:58
esta es la cadena y cada casilla, cada celdilla de aquí es cada uno de los caracteres, vale, esto podría ser, pues nada, vale, pues cualquier cosa, vale, 00:13:25
bueno y así todos los caracteres, esta podría ser una cadena, todo esto sería una cadena, la cadena cat, por ejemplo, vale, esta sería la cadena cat, toda ella, cada celdilla es cada uno de sus caracteres, vale, esto es un stream, un stream, una cadena, 00:13:49
vale, pues entonces cada posición, la puedo yo, me puedo referir a ella por un numerito, entonces esta de aquí sería la posición cero, vale, esta sería la posición cero, esta de aquí sería la posición uno, vale, 00:14:07
esta sería, no voy a hacer todas, la posición dos y así si el tamaño de la cadena, si el tamaño de la cadena es cat punto length, 00:14:35
si este es el tamaño, vale, si el tamaño de la cadena es este, es cat punto length, entonces las posiciones van a ir desde cero hasta cat punto length menos uno, verdad, 00:14:51
esta última, esta última será cat punto length menos uno, verdad, lo entendéis, es decir, si la cadena tuviera siete caracteres, es decir, si cat punto length fuera siete, las posiciones irían de la cero a la seis, verdad, 00:15:11
si cat punto length tuviera once, si esto fuera once, las posiciones irían de la cero a la diez, luego en general las posiciones van de la cero a la cat punto length menos uno, a esta, vale, de la cero a la cat punto length menos uno irían, 00:15:37
eso está claro, no, si tengo ocho voy de la cero a la siete, vale, pues entonces el for que estamos haciendo es un for que se ejecuta desde la vez cero hasta la cat punto length menos uno, que es lo que queremos, es este for el que estamos haciendo, 00:15:55
el for va desde cero hasta cat punto length menos uno, porque este es un menor, me da igual poner menor de cat punto length menos uno o poner menor o igual, perdón, me da igual poner menor que cat punto length o poner menor o igual que cat punto length menos uno, es lo mismo, es exactamente la misma condición si hablamos de enteros, es la misma, me da igual decir menor que ocho que decir menor o igual que siete, 00:16:12
si hablo de enteros es lo mismo, menor que ocho, menor o igual que siete es lo mismo, normalmente lo vais a encontrar más así en el bucle for, vale, entonces este bucle va desde la posición cero hasta la length menos uno, que es justo lo que yo quiero, desde la cero hasta la length menos uno, y ahora, que queremos hacer con cada posición de esta, ver si el carácter de la cadena en esa posición es vocal, 00:16:40
bueno, pues entonces ver si es vocal es una condición muy compleja, es decir, si es igual a cero, perdón, si es igual a a o si es igual a e o si es igual a i o, es una condición un poco rollo, entonces, pues podríamos ponerla, si cat punto char at i, si la posición i de la cadena resulta que es igual a al char a, 00:17:10
o lo pongo a la línea de abajo para que sea más claro, o es igual a b, 00:17:40
o ahora lo arreglo los tabuladores, 00:18:03
y me falta uno, vale, a, e, i, o, u, pues esta condición tan larga, o es igual a a, o es igual a e, o es igual a i, o es igual a o, es igual a u, no hay otra, no hay otra, para ver si este carácter es una vocal, 00:18:15
no hay otra, no hay otra forma de ponerlo, vale, bueno, pues entonces ya tengo lo que quería, si es vocal, entonces que hago, incremento el contador, vale, incremento el contador, que para eso estaba, para contar cuantas vocales había en cada cadena, 00:18:44
y esta es la llave del if, y esta es la llave que cierra el for, y esta es la llave que cierra el while, que todavía no le he puesto la condición, 00:19:09
vale, entonces el bucle de fuera es el que lee cadena, y ahora tiene que recorrer todas y cada una de las posiciones, para ver si cumple una condición, pues de nuevo tiene que hacer un bucle dentro, porque para cadena necesita un bucle para recorrer las posiciones, 00:19:37
entonces ese bucle como se ejecuta exactamente un número de veces que es igual a la longitud de la cadena, lo puedo hacer con un for, y me es muy útil, porque este for va desde cero hasta el menos uno, y aprovecho esa variable i, aprovecho esa variable ya directamente para meterla ahí dentro, está indicando las posiciones, vale, la aprovecho ya y estupendo, 00:20:04
bueno, este código, entendido lo que hace, tanto con el length como con el charab, porque recorrer cadenas uno va a necesitar recorrer muy a menudo, muy a menudo, pues para sacar patrones, para ver si tiene un patrón de no sé qué, para un montón de funciones de cadenas, va a ver que sabe recorrer la línea, 00:20:25
de aquí, bueno porque en cada iteración tú tienes que ir avanzando una posición de la cadena, en la primera iteración quieres ver la posición cero de la cadena, a ver como es, entonces i ya se te queda incrementado, en la siguiente quieres ver la uno, por eso pones i, porque aprovechas y como i tiene ese funcionamiento, porque lo hemos puesto aquí, como lo tiene, pues lo aprovechamos, vale, 00:20:47
esa es la ventaja del bucle for, que si usamos la sintaxis esa de arriba, nos ofrece ya una variable i, que es la que suele llamar índice, que va pasando por todos los valores de ese rango, y la puedo utilizar yo dentro si quiero, a lo mejor no me interesa usarla dentro de esa variable, pero si me interesa, me viene muy bien, y aquí me interesa, porque efectivamente quiero una variable que pase primero por el cero, luego por el uno, luego por el dos, pues me viene muy bien a mí la i, 00:21:14
en los ejercicios de los asteriscos y eso que haremos luego mañana, lo haremos con un for y ahí en ese caso la variable i no nos evita nada, pero aquí si que me viene muy bien, para marcarme las posiciones de la cadena, vale, bueno pues este ejercicio estaría, ah no, bueno estaría, nos falta la condición del while, claro, este bucle de aquí es el que lee la cadena, va contando las vocales de esa cadena y luego termina, 00:21:40
entonces nos falta, oye cuando acaba eso, acaba cuando la cadena leída es igual a, mientras sea diferente de fin, entonces yo ahora ya me pongo a hacer esto, mientras cat, no sea, recordad que para comparar una cadena con otra, no es el doble igual, sino el este, entonces mientras cadena igual a fin, no, o sea mientras no, la admiración era el no, mientras la cadena no sea igual a fin, 00:22:09
entras y pides una, vale, aquí lo de siempre, este error ya nos podemos imaginar porque viene, viene porque no he declarado cadena antes, claro, porque la tengo declarada aquí dentro, ah vale, no pasa nada, la declaramos fuera y así ya el compilador no se queja, venga, la declaramos fuera, con lo cual aquí ya no la vuelvo a declarar, vale, 00:22:37
vale, aún así me sigue saliendo otro error, otro error que de nuevo también ya podemos imaginarnos antes de mirarlo, porque, este error, porque nos daría, porque no es, la primera vez que entra en el while no puede comparar cat con fin porque no tiene valor, entonces aquí ya pensamos, que funcionamiento quiero yo, quiero que una primera vez entre seguro, pues le vamos a dar a cat cualquier valor diferente de fin, por ejemplo este, vale, le damos cualquier valor diferente de fin, 00:23:07
entonces entra seguro, vale, entra seguro, lee la cadena, cuenta los caracteres recorriéndolos con este for, no hay otra, los recorre con este for, y una vez que ya ha terminado el bucle sale, vale, aquí lo único, el matiz de este programa es que cuando metemos fin, cuando metemos fin, la i de fin también la está contando, la i de fin la cuenta, 00:23:37
porque no se da cuenta de que ha entrado en fin hasta que no ha vuelto arriba, entonces, que la i de fin no queremos contarla, bueno, pues ponemos con menos uno y ya está, no pasa nada, ponemos con menos uno y así no contamos la i de fin, pero eso depende de lo que me digan, yo tendría, con este enunciado tendría que decir, la cadena fin quieres que cuente también como cadena de entrada para contar sus vocales o la cadena fin quieres que sea solo para marcar el fin y no la tengas en cuenta, 00:24:04
pues dependiendo de lo que te digan, pues haces una cosa u otra, si te dicen, no quiero que la tengas en cuenta, pues quitas la vocal i, si quiero que la tengas en cuenta, pues no la quitas, no estás con directamente, no con menos uno, vale, pues entra seguro, vale, importante que este código esté entendido para no olvidarnos y familiarizarnos con el uso de estos dos métodos, 00:24:33
entonces cuando yo recorro una cadena, la vamos a recorrer siempre así, con un for, porque el for me viene que mi pintado para ir pasando por todas las posiciones de la cadena, por la cero, por la uno, por la dos, así hasta la i menos uno, y luego aquí dentro, con cada carácter, hago lo que me dé la gana, cada carácter lo puedo sacar en esto, y con cada carácter hago lo que a mí me dé la gana, en este caso lo que hemos hecho ha sido, si cumplía la condición de ser vocal minúscula, 00:25:03
en este caso, porque si no había que hacer, o calchar a ti igual a mayúscula, o entonces, bueno, no hacerla muy grande, asumimos que es minúscula, vale, en este caso yo he hecho esta condición muy larga, pero es que no hay otra forma de hacerla, vale, claro, si la condición fuera otra, vamos a acordarnos de la tabla así, esta famosa, para que no os olvidéis de ella, 00:25:33
vale, a ver, donde están las vocales minúsculas, ah, están aquí, son estas de aquí, vale, imaginaos que me hubieran dicho, cuenta cuantos caracteres están comprendidos, son de los seis primeros del alfabeto, en este caso la condición sería muy fácil, 00:26:03
porque recordad que los caracteres también funcionan como enteros, el carácter A y el número entre 97 son lo mismo, para Java, entonces si la condición fuera, cuantos caracteres de esas cadenas están comprendidos alfabéticamente entre A y F, pues la condición sería más fácil, porque podríamos hacer, si calchar a ti es mayor o igual que 97, y calchar a ti es menor o igual que 102, me quedaría más corta, mayor o igual que 97, pero igual que 102, me quedaría más corta, 00:26:27
la condición, pero ser vocal es que no hay manera, porque las vocales están por ahí sueltas, la esta aquí, la esta aquí, la y esta por ahí, la condición de ser vocal la tengo que hacer con los or, ser igual a A, o ser igual a E, o ser igual a Y, no la puedo simplificar de otra manera, tiene que ser esa, vale, 00:26:57
vale, bueno, pues entonces, a lo que íbamos, este código está entendido y está claro, ¿verdad?, ¿si?, bueno, pues uno podría decir, jolín, que feo ver aquí esta condición, ahí si cada vez que tenga que contar vocales en mi programa, que a lo mejor el programa luego sigue y hace más cosas y más cosas, tengo que poner todo eso, es un rollo, 00:27:14
pues uno podría pensar, vamos a sacar eso a una función que me cuente vocales de una cadena, y ya está, y así mete toda esa cosa tan fea dentro, y cuando yo quiera contar vocales, llamo a la función y se acabó, vale, bueno, pues entonces, uno identifica el problema que quiere resolver como método aparte, o función aparte, que es, dada una cadena, contar las vocales que tiene y devolverme el número de vocales, 00:27:42
identifica que ese problema le interesa hacerlo aparte, vale, primero tiene que tener muy claro que problema quiere sacar, pues el problema que queremos sacar es, dada una cadena de entrada, contar las vocales que tiene y devolver el número de vocales con valor de retorno, vale, es el problema que queremos sacar aparte, pues estupendo, uno se hace una función aparte, vale, entonces, vamos a hacer aquí esta función, 00:28:10
recordad que la función se hace después de la llave del main, que se cierra aquí, pero antes de cerrarla de la clase, antes de cerrar esta, ahí se hace la función, o las que uno quiera, todos las que quiera, vale, la función hemos dicho que tiene que empezar con static, es obligatorio, 00:28:40
ya entendemos porque tiene que empezar con static, ahora lo que ponemos ahí es, bueno, vamos a poner primero el nombre de la función que yo quiero hacer, hemos dicho en la función contar vocales, pues venga, contar vocales, me falta esto de aquí y esto de aquí, y aquí dentro el código, vale, esta será mi función, 00:29:08
esto es obligatorio, lo tengo que poner, y esto es obligatorio, lo tengo que poner, y aquí el código, claro, vale, que es lo que ponemos aquí, el dato de entrada, esta función que hemos dicho que tiene que hacer, dada una cadena, un string, dada una cadena, contar vocales, luego, el dato de entrada es una cadena, es un string, pues lo tengo que poner ahí, como si declarara una variable cualquiera, cadena, y lo llamo como me dé la gana, 00:29:35
ahora ya me olvido de quien me va a llamar, estoy pensando solo en hacer una función que recibe un string de entrada, pues lo pongo ahí, string cadena, igual que en el ejemplo anterior puse int i, pero porque esta trabajaba con un número entero, esta trabajaba con un número entero, esta función, pero esta otra no, esta nueva que estamos haciendo, ahora trabaja con un string, string cadena es lo que trabaja, le doy el nombre que quiera, me da igual, 00:30:05
ahora, que es lo que va a devolver, pues vamos a pensar, hemos dicho que esta función yo la voy a hacer para que cuente las vocales, y lo que me interesa es el número de vocales, luego el valor de resultado que me interesa es un número entero, como es un número entero, pongo ahí el tipo de dato, int, y nada más, el tipo de dato, sin ningún nombre ni sin nada, el tipo de dato, y ya tengo la primera línea perfectamente hecha, me falta el código de dentro, claro, igual que aquí, esta, 00:30:31
recibía como dato de entrada un entero, por eso ponía int i, y devolvía como salida un boolean, por eso ponía ahí boolean, pero esta no, esta es otra función, que recibe una cadena, y devuelve como resultado un número, que es el número de vocales, vale, pues ahora ya me hago aquí el método que sea, el código que sea, vale, entonces, 00:31:01
aquí, esta es la cadena con la que trabajo, ojo, la he llamado cadena aquí, como la he llamado cadena aquí, aquí se tiene que llamar cadena también, es mi dato de entrada, que yo, vale, la llamo con, no, ese es el programa de arriba, de eso olvídate, la función es independiente, 00:31:31
si, se puede volver a llamar cad, pero lo que quiero es que veáis que no es necesario, vale, se puede volver a llamar cad, pero tiene que quedar muy claro que la función es algo independiente del programa, se la puede llamar, pero es independiente, con lo cual a esta función, este llama a este parámetro, que sea parámetro como le dé la gana, como le dé la gana, no tiene que llamarlo igual que luego el programa que le llama, vale, tenemos que empezar a ver, la función, como un código independiente, 00:31:51
que sirve para hacer eso, y luego esa función se puede llamar desde mil sitios, desde mil sitios, es un código independiente, que sirve para hacer una cosa, y luego ya la llamará quien quiera, entonces, como es un código independiente, aquí le pone el nombre que quiera, vamos a ver que le pongo cadena, vale, pues si yo le pongo cadena, aquí la tengo que llamar cadena, claro, vale, aquí, claro, me falta declarar el contador, que es el valor de vuelta, este contador, que es el valor de vuelta, 00:32:21
me falta aquí, vale, entonces este contador que empieza variando cero, este recorre la cadena a cadena, para cada carácter que cumpla la condición, incrementa cont, y una vez que ha terminado el for, que es lo que le falta a esta función, devolver el valor que ya lo tiene en cont, es lo que le falta, esto le falta, retun con, eso le falta, y ya está, mi función ya está hecha, 00:32:50
y es una función que puede ser llamada desde cualquier sitio, cualquiera que quiera contar vocales de una cadena, le pasa la cadena y devuelve el valor, ya está, entonces ya con esto he hecho un código reutilizable, reutilizable desde cualquier sitio, reutilizable, 00:33:19
entonces es importante entender que esto es el dato de entrada, que se le suele llamar parámetro, parámetro, tengo que especificar el tipo, este es el tipo de la salida, el tipo de la salida, vale, y la variable que yo devuelva en retun, la variable que yo devuelva, su tipo de dato tiene que ser este, 00:33:39
el compilador me va a decir, oye, tiene que ser este, 00:34:04
¿Esto lo has sacado de arriba para hacerle función? 00:34:07
Claro, lo he hecho función, y ahora arriba voy a llamarlo, entonces en lugar de borrar esto, voy a poner aquí, hacerlo de arriba llamando a función, 00:34:11
bueno, este es este programa hecho sin llamar a la función, sin llamar a la función lo tengo que calcar así, y ahora vamos a hacer este mismo programa, este mismo ejercicio, pero llamando a la función, que quedaría mucho más corto, 00:34:20
pero lo importante es entender la función, entenderla, le pongo el nombre que yo quiera, tratando de respetar que empiece con minúscula, y sobre todo que sea muy explicativo, me da igual que sea larguísimo, me da lo mismo, 00:34:36
pero que sea explicativo, aquí le digo el dato de entrada, que puede ser más de uno, luego hacemos un ejemplo con más de uno, si es más de uno separados por comas, el dato de entrada y el tipo de dato de salida, 00:34:50
y ahora ya hago mi código, hago mi código, y este código usará este parámetro para hacer cosas, si necesita variables para operar las usa, aquí ha entrado para contar, la ha necesitado, 00:35:04
pues la declara, la va incrementando y cuando ya ha terminado la devuelve, porque es la salida, la devuelve, esto es como una cajita aparte, una cajita, esto es como una dispensadora, 00:35:16
tú le metes la moneda que te pide y te da la Coca-Cola, todo lo que ha hecho dentro para que la Coca-Cola salga por la esa, nos da igual, pero cada vez que tenemos una Coca-Cola, vamos, metemos moneda y sacamos la Coca-Cola, 00:35:30
pues esto es lo mismo, ahora ya, cada vez que uno quiera en cualquier sitio contar las vocales de una cadena, mete la cadena y saca el numerito, y ya está, como esté hecho por dentro, nos da igual, 00:35:46
pero claro, mucho mejor así que tener que cascar el código cada vez que hay que hacer eso, mucho mejor si yo me voy a un sitio, le meto la cadena y saco el número, que tener que hacer todo el proceso de la dispensadora cada vez que yo quiera, 00:35:58
bueno, pues entonces, función entendida, ahora vamos a usarla, vamos a usarla para hacer este mismo programa, pero llamando a función, 00:36:15
¿vale?, la función es esta, bueno, le falta la llave de abajo, pero vamos, sería esta, vale, pues entonces, 00:36:27
a ver, ¿cómo lo pongo yo aquí para que no sea un lío?, este sería el main, sin llamar a la función, y ahora me quiero yo hacer un ejemplos con funciones, vale, vamos a poner aquí, 00:36:46
vamos a hacer el programa de arriba, pero llamando a la función ahora, vamos a hacer el programa de arriba, el programa de arriba, el while de las cadenas era impepinable, ¿verdad?, 00:37:08
todo este while es impepinable, voy a poner aquí un este para que cuando lo ejecutemos, vale, este while de aquí, 00:37:35
este while de aquí, sigue igual, ¿vale?, mientras la cadena no sea igual a fin, la leo, pero ahora todo este rollo de aquí, todo este for, todo esto, mi while es este ahora mismo, 00:38:01
¿vale?, mi while tiene leer la cadena, y ahora en lugar de hacer yo el for para contar las vocales, llamo a la función, ¿vale?, y la función, ¿cómo se llamaba?, la función se llamaba contar vocales, 00:38:16
a la función ¿qué hay que pasarle?, hay que pasarle un string, porque es lo que te pide, te pide un string, ¿vale?, ¿qué string le quiero pasar?, pues le voy a pasar cat, le voy a pasar cat, le puedo pasar el string que me dé la gana, como si le paso esto, 00:38:31
la función está aquí abajo, no, está arriba, he dicho voy a hacer lo mismo de arriba, pero llamando a la función, he copiado y pegado lo de arriba, vale, entonces otra vez repito el bucle while que va leyendo cadenas, otra vez repito el while que va leyendo cadenas, vale, 00:38:48
ahora cuando ya tengo la cadena cat, voy a llamar a la función para que me cuente las vocales, y ya todo este rollo lo tengo que hacer yo, ya me lo hace la función, entonces a contar vocales lo que sí que tengo que hacer obligatoriamente es pasar un string, eso sí que no me lo puedo saltar, porque yo esta función la he hecho para pasarle una cadena, 00:39:13
pero con que le pase una cadena ya le vale, yo le paso la que me interesa, claro, no me interesa pasarle esa, ¿qué cadena me interesa pasarle?, la que acabo de leer, vale, pues entonces esta función contará las vocales de cat, porque está programada para hacer eso, contará las vocales de cat, y me devolverá, que me devuelve en el return un valor entero que yo ahora decido que hago con él, 00:39:32
vamos a suponer que lo guardamos aquí en esta variable, vale, las vocales que me ha devuelto la función, que son las vocales de cat, las he guardado aquí, y ahora para que he querido esas vocales, para incrementar el contador, verdad, contador, que no se me ha olvidado que lo he puesto a cero, porque voy a resetear la cuenta otra vez, claro, este es mi contador, 00:39:58
lo vuelvo a poner a cero, porque como tengo arriba la otra versión, ya cont se ha incrementado, vale, pues para que quería yo las vocales, pues para sumárselas a cont, cont más igual, no un vocales, ala, ya está, voy a, mucho más bonito este while, mucho más bonito este while que el de arriba con ese for, con esa condición tan horrible, 00:40:27
vale, mucho mejor este while, este while, lee la cadena, llama la función para contar las vocales, pasándole yo esa cadena que acabo de leer, lo que me devuelve lo guardo en una variable del mismo tipo, y ahora decido que hago con ella, pues lo que yo quería hacer en mi programa era sumar esas vocales a la cuenta, y ya está, 00:40:58
entonces mejor un while que tenga esto dentro, que mejor un while que tenga todo eso dentro de antes, entonces lo de las funciones es una posibilidad para organizar código, luego el programa va a hacer lo mismo, va a ejecutar lo mismo, pero el código está más organizado, 00:41:25
vale, vamos simplemente a probarlo por si alguna cosa no lo hubiéramos hecho bien, darnos cuenta con la prueba, entonces, leemos cadena, esta era la primera versión, fin, vale, el total de vocales ha sido, 00:41:42
vale, y aquí no me ha pedido más cadenas, porque ya, que alguien me diga rapidísimo, a ver si alguien me dice rapidísimo este efecto, porque ha pasado esto, claro, porque la cadena cat ya se había quedado como fin, 00:42:13
entonces al haberse quedado como fin en la ejecución de arriba, en la ejecución de arriba se había quedado como fin, entonces al haberse quedado como fin ya no entraba en el while, no entraba en este while, y luego me decía con menos uno, cero menos uno, menos uno, 00:42:31
entonces tengo que volver a resetear cat a esto otra vez, para que me haga el código de abajo, claro, un segundito, un momento, vamos a hacer la prueba, porque haciendo una prueba, cosas que se nos han escapado como esta, las dejamos, a ver ahora, leer cadena, hola, adiós y fin, vale, ha sido 5, ahora ejecución de abajo, hecha llamada función, leer cadena, 00:42:46
hola, adiós y fin, 5, vale, a ver, es solo una prueba, pero bueno, tiene pinta de que hacen lo mismo los dos, María, que decías tú, el código de la función o del while de abajo, la función esta, falta el retune, claro, aquí acabaría la función contar vocales, 00:43:16
claro, falta el retune para devolver ese numerito, vale, vale, pues importante de aquí, aparte de ir entendiendo el concepto de función, por si viene bien usarlo, para arreglar un código, que reviséis y recordéis, si no lo tenéis ya grabado en la cabeza, lo vais a grabar, 00:43:46
esto de lenz y charad, y un uso muy habitual del fork, pues va a ser precisamente recorrer cadenas, un uso que viene que ni pintado el fork, viene que ni pintado para recorrer cadenas, vale, vamos a parar un momento, 00:44:14
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
5
Fecha:
6 de noviembre de 2023 - 13:00
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
848.99 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid