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 |
As outras ordes son para actualizar o valor da mesma ou ben para amosala ou ocultala, de momento as que imos usar xunto co a anterior, serán a de "fijar" e "cambiar" xa que as outras dúas non funcionan con robots (serían para traballar directamente co monitor do ordenador). A primeira permitirá asignarlle un valor determinado á variable e a de cambiar permitiranos actualizalo.
Bloques de xestión de valores da variable |
Vale, teño unha caixiña na que podo meter números, pero para que serve? Pois de momento e mentras non leamos valores de sensores, nin realicemos operacións, nin usemos estruturas de control... pois igual non de moito, pero eso non nos librará de realizar un exemplo e un par de retos asociados.
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 |
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. |
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.
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 |
De tólolos xeitos estes operadores non son nada útiles co kit que veu co robot, xa que non temos forma de amosar caracteres por ningunha pantalla ou de reproducilos en formato audio. Lémbrovos que sí que se lle pode mercar ao robot unha pantalla de leds que si permitirá amosar texto por ela, pero non e o caso do kit que arestora temos nos centros.
Os tres últimos serán o de operacíón de módulo (mod) que permitirá saber o valor do resto dunha división (moi útil para divisións enteiras ou averiguar se un número e múltiplo doutro), por outro lado temos a opción de redondear un número no que queda o valor númerico no número enteiro máis próximo.
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 |
Ao igual que os operadores aritméticos, pódense aniñar e formar grupos de bloques máis complexos.
Conxunto de bloques de operadores de comparación e lóxicos |