Peregrinación
Se o tema anterior era unha transición, este será unha peregrinación, na que aprenderemos uns conpceptos que precisamos para avanzar e sen os cales no poderiamos facer grandes cousas nos futuros temas. E por eso estudaremos parialmente dous novos bloques de operacións que nos serán de utilidade.
Eses marabillosos espazos de memoria
Dentro de programas ou "tipo de programas", iremos sobre o bloque de "Datos y bloques".Sección de "datos y bloques" |
Para seguir deixando cousas a medias, desta sección imos a traballar con datos (de aquí para adiante nos chamarémoslle variables), os bloques deixarémolos para bastante máis adiante.
Pero qué é unha variable? Unha variable non e máis que unha posición de memoria (unha caixiña como lle digo eu aos meus alumnos) que ten un nome e que pode conter algún tipo de dato (números, datas, caracteres...)
Co mBlock podemos xerar dun xeito rápido unha variable premendo en crear nova variable, tras cubrir o nome da varaible (ímoslle permitir a visibilidade a todos os obxetos do proxecto) prememos en ok. Ollo, tenta de poñer nomes a esas "caixiñas" ou variables que describan que e o que van a gardar, neste caso imos gardar uns valores de velocidade.
Fiestra emerxente que solicita o nome da variable e a súa visibilidade dentro do programa |
Sección de "datos y bloques" tras crear unha variable. |
Unha vez que temos a variable creada, aparécennos 5 opcións sobre a mesma, unha en formato "redondo" que ao igual que os sensores/encoders, permite recoller un valor, no caso da variable, o valor que ten a mesma (o número que hai dentro da caixiña).
Bloque para asignar o valor da variable velocidade |
Bloques de xestión de valores da variable |
Seguro que te sona o bloque de mover o robot a unha velocidade, esa velocidade ven predefinida nunha caixa de selección (e decir, podes escoller 255, 100, 50...). Ainda que tamén se lle pode dar valor "a pelo"
Bloque de "correr adelante" co valor de velocidade despregado |
Bloque de "correr adelante" con valor introducido dende teclado |
Ese mesmo valor se lle pode dar mediante unha variable deste xeito
Bloque de "correr adelante" xestionado polo valor dunha variable |
Seguro que estás pensando "bueno, vale, consigo facer o de antes pero cunha sentenza máis..", a potencia das variables poderemos velas despois ao combinalas con estruturas de control, pero aínda así podemos refacer uns retos e comprobaremos que ten as súas ventaxas (neste punto pido perdón aos programadores puros xa que estamos ausar as variables como constantes, pero para o exemplo vale...):
Por exemplo no seguinte programa temos 3 variables (vermello, verde e azul) que son as que lle dan os valores ós leds.
Adaptación do programa do reto 1.1 no que se poñen todos os leds pares en cor azul e os impares en vermello. |
A primeira vista non resulta moi eficiente, pero tan só a primeira vista, esto trátase dun pequeno baile e iremos bailando lentamente co fin de realizar o reto 1.1 de maneira óptima. Podemos ver que no primeiro paso asignamos á caixiña "vermello" o valor 0, e a caixiña "verde" o valor da de vermello (e decir un 0). Por último azul toma o valor 255 (Lembra que podes consultar a entrada de Xogando coas luces neste mesmo blogue, de momento quedamos en que o 255 e o valor máis alto de azul).
Os distintos leds encéndense cos valores que teñen as caixiñas variables, o que fai que un cambio nas mesmas automáticamente muda a cor da luz de cada led.
No medio do código veremos que vermello toma o valor 255 (tomando o valor de azul) e o azul pasa a valer 0.
Reto 3.1 |
Operadores
Si, claro, teño uns valores en caixiñas, pero igual era interesante o poder sumalos, restalos, dividilos,, comparalos, traballar con conxunto de caracteres.. e para todo eso están os operadores, benvidos a unha clase de matemáticas de primaria ;)Para estudar este apartado de operadores, teremos que ir o bloque de operacións de operadores, que e o seguinte:
Bloque de operadores do mBlock |
Operadores que devolven un valor numérico
Podemos ver que os operadores están agrupados segundo a función (bueno, mais ou menos), os catro primeiros seguro que os sabedes recoñecer á primeira, e son os aritméticos, nos que ben podemos operar con variables, números, sensores ou enconders. (habería que meter dentro do círculo redondo un bloque que sexa redondeado). O seguinte operador sería o de número aleatorio, que permite xerar un valor entre dous indicados.A continuación temos uns exemplos de uso de operadores e variables.
No primeiro conxunto de bloques vemos que lle asignamos á variable azul o valor que tiña máis 5.
Na segunda non temos unha orde final propiamente dita (fíxate que acabamos obtendo un valor xa que o bloque que engloba todo é redondeado nas beiras). O que obteríamos sería o valor resultante de restarte un número ao azar entre 1 e 10 ao valor que devolve o sensor de temperatura que ten a placa.
Na terceira podemos ver o resultado de sumarlle a 5 o valor da variable azul, e todo eso dividilo entre o valor que devolve o valor de sonido.
Por último estamos a apagar ao azar un dos leds do anel de leds.
Agora imos a empezar a traballar un pouco..
Reto 3.2 |
Reto 3.3 |
Reto 3.4 |
Resto de operadores que devolven valor |
Os primeiros 5 traballan con cadeas de texto (palabras), básicamente servirán para unir caracteres, averiguar a posición dun determinado caracter dentro dun conxunto deles, o número de caracteres que ten unha frase ou palabra....
De tólolos xeitos estes operadores non son moi útiles se traballamos co robot como autónomo, a utilidade pasa a ser maior cando se usa como un "laboratorio electrónico". Sería posible se mercamos ao robot unha pantalla de leds que si lle permitirá amosar texto por ela, pero non e o caso do kit que arestora temos nos centros.
O derradeiro permitiranos realizar unha operación máis complexa sobre o número que lle pasemos, podemos ver a continuación as operacións que poderemos realizar.
Operacións que pode realizar este operador |
Operadores que devolven valor positivo ou negativo
Outro tipo de operadores son os de compraración e os lóxicos, que devolven un valor positivo ou negativo tras realizar unha operación, como se pode observar o formato do bloque remata cun vértice en cada un dos laterais (ao igual que os sensores/encoders que tiñan ese mesmo formato).
Operadores de comparación e lóxicos |
Conxunto de bloques de operadores de comparación e lóxicos |
Descarga os retos deste tema na seguinte ligazón.
No hay comentarios:
Publicar un comentario