# 3.6. Aplicacións

## Glosario

## Subprograma

Definición:

  Un programa que está dentro doutro programa máis grande ou complexo. Crear subprogramas permite que os programas sexan mais sinxelos.

Exemplo:

  Cada bloque de Microblocks é un subprograma.

# Programas e aplicacións

Ata o de agora fixeches programas de proba. Servíronche para aprender a usar instrucións, variables e sensores. Agora o obxectivo é dar un paso máis: crear unha aplicación para un dispositivo, como unha placa Adafruit PCE ou micro:bit.

Programa

Programa

- Fai unha tarefa concreta.
- Resolve unha acción puntual.
- Pode ler un sensor, acender unha luz ou mostrar unha mensaxe.
- É máis pequeno e máis sinxelo.

Aplicación

Aplicación

- É un conxunto de programas que traballan xuntos.
- Resolve unha función máis completa.
- Combina variables, condicións e subprogramas.
- Adáptase ao dispositivo no que vai funcionar.

Por iso, ao crear unha aplicación, o grupo debe poñerse de acordo no nome das variables, nos subprogramas e na estrutura do programa principal. Así, todas as partes encaixan e a aplicación funciona como un único sistema.

## Lectura facilitada

Ata agora fixeches programas de proba.

Eses programas servíronche para practicar.

Agora toca dar un paso máis.

Agora vas crear unha aplicación.

Será para unha placa Adafruit PCE ou micro:bit.

Observa a diferenza entre un programa e unha aplicación:

Programa

Programa

- Fai unha tarefa concreta.
- É máis pequeno e máis sinxelo.

Aplicación

Aplicación

- É un conxunto de programas.
- As partes traballan xuntas.
- Resolve unha función máis completa.

Para crear a aplicación, o grupo ten que organizarse.

Hai que poñerse de acordo nas variables.

Hai que poñerse de acordo nos subprogramas.

Hai que poñerse de acordo na estrutura do programa principal.

Así, todo funcionará como un único sistema.

## Audio

audio/mpeg

# Como crear unha aplicación con subprogramas

Para que o entendas, velaquí tes un exemplo que podes usar no teu xogo cando teñas que unir os teus programas cos do resto do teu grupo.

## Creación de bloques

Para crear subprogramas podes usar o menú Os meus bloques. Neste menú podes definir bloques propios que funcionarán como subprogramas da aplicación. Podes crear tantos bloques como subprogramas teña a túa aplicación.

## Variables

Algunhas linguaxes de programación permiten definir variables que só existen dentro dun programa concreto (variables locais) e outras que poden usarse en toda a aplicación (variables globais). Non é o caso de MicroBlocks. Neste sistema as variables compártense en toda a aplicación. Por iso debes ter coidado ao escoller o nome das variables.

Nunha mesma aplicación podes ter varios contadores ou variables diferentes. Por exemplo, un contador para os saltos e outro para os pasos. Acorda co teu equipo o nome de cada variable antes de programar. Evita usar nomes pouco claros como "contador". É mellor empregar nomes máis específicos, como "contador_pasos", "contador_saltos" ou "contador_pulsacions".

## Programa principal

Para que a aplicación funcione tes que crear un programa principal que chame aos diferentes subprogramas. Este programa ten que incluír:

- Unha orde "por sempre". Deste xeito aseguramos que, desde o momento en que se acende, a placa comproba que botóns estás a premer (A, B, A+B...).
- Unha orde "deter esta tarefa" antes de pechar o bucle condicional que avalía se os botóns dos subprogramas están ou non activados. Deste xeito, unha vez que comeza un subprograma, xa non se poderán executar o resto dos subprogramas.

## Lectura facilitada

Aquí tes un exemplo para unir varios programas.

Este exemplo pode servir para o teu xogo.

## Creación de bloques

Podes crear subprogramas no menú Os meus bloques.

Cada bloque pode ser un subprograma.

Podes crear varios bloques.

## Variables

En MicroBlocks, as variables compártense en toda a aplicación.

Por iso hai que escoller ben o nome.

É mellor usar nomes claros.

Por exemplo: contador_pasos ou contador_saltos.

## Programa principal

A aplicación necesita un programa principal.

Ese programa chama aos subprogramas.

Debe levar unha orde por sempre.

Debe levar tamén a orde deter esta tarefa.

Así, cando empeza un subprograma, os demais non se executan.

## Audio

audio/mpeg

## Transcrición das infografías

## Creación de bloques

No menú "Os meus bloques" crea tres bloques de orde novos.

Dálle a cada bloque un nome:

- casa_vermella
- casa_maxenta
- casa_azul

Despois define o que fai cada subprograma.

### Exemplo coa placa Adafruit (placa redonda negra)

No caso da placa Adafruit, cada subprograma acende os NeoPíxeles cunha cor.

- O bloque "casa_vermella" acende todos os NeoPíxeles en vermello durante 2000 milisegundos e despois apágaos.
- O bloque "casa_azul" acende todos os NeoPíxeles en azul durante 2000 milisegundos e despois apágaos.
- O bloque "casa_maxenta" acende todos os NeoPíxeles en maxenta durante 2000 milisegundos e despois apágaos.

Despois destas instrucións podes engadir as instrucións do xogo dentro de cada subprograma.

### Exemplo coa placa micro:bit (placa rectangular negra)

No caso da placa micro:bit, os subprogramas mostran un texto animado na pantalla.

- O bloque "casa_vermella" anima o texto VERMELLO.
- O bloque "casa_azul" anima o texto AZUL.
- O bloque "casa_maxenta" anima o texto MAXENTA.

A partir deste punto tamén podes engadir as instrucións do xogo dentro de cada subprograma.

## Variables

No menú "Variábeis" crea tres variábeis para gardar os resultados do xogo.

- contador_pasos
- contador_saltos
- contador_tapar

Cada vez que o xogador realiza unha acción, o programa aumenta o valor da variábel correspondente.

### Exemplo coa placa Adafruit (placa redonda negra)

Cada casa do xogo está definida nun subprograma.

Primeiro acéndense os NeoPíxeles coa cor da casa durante 2000 milisegundos. Despois apáganse.

- "casa_vermella" acende os NeoPíxeles en vermello.
- "casa_azul" acende os NeoPíxeles en azul.
- "casa_maxenta" acende os NeoPíxeles en maxenta.

Despois compróbase o contador correspondente.

- Se "contador_pasos" é maior que 5, acéndense os NeoPíxeles en vermello.
- Se "contador_saltos" é maior que 5, acéndense os NeoPíxeles en azul.
- Se "contador_tapar" é maior que 5, acéndense os NeoPíxeles en maxenta.

### Exemplo coa placa micro:bit (placa rectangular negra)

Nesta placa o funcionamento é o mesmo, pero o resultado móstrase na pantalla LED.

- "casa_vermella" mostra o texto VERMELLO.
- "casa_azul" mostra o texto AZUL.
- "casa_maxenta" mostra o texto MAXENTA.

Despois compróbase o contador correspondente.

- Se "contador_pasos" é maior que 5, aparece o texto BEN.
- Se "contador_saltos" é maior que 5, aparece o texto BEN.
- Se "contador_tapar" é maior que 5, aparece o texto BEN.

## Programa principal

Agora crea o programa principal que controla o xogo.

O programa comeza cun bloque "ao comezar" e execútase "por sempre".

Dentro deste bucle compróbase que botóns están premidos.

### Exemplo coa placa Adafruit (placa redonda negra)

Se se preme o botón A e non o botón B, execútase o subprograma "casa_vermella".

Se se preme o botón B e non o botón A, execútase o subprograma "casa_maxenta".

Se se premen os dous botóns ao mesmo tempo, execútase o subprograma "casa_azul".

Despois de executar cada subprograma úsase o bloque "deter esta tarefa". Así o programa non continúa executando outras condicións.

Cada subprograma acende os NeoPíxeles coa cor correspondente, espera 2000 milisegundos e despois apágaos.

Despois comproba o contador correspondente. Se o contador é maior que 5, acéndense de novo os NeoPíxeles coa mesma cor.

- "casa_vermella" usa o contador "contador_pasos".
- "casa_azul" usa o contador "contador_saltos".
- "casa_maxenta" usa o contador "contador_tapar".

### Exemplo coa placa micro:bit (placa rectangular negra)

Nesta placa o funcionamento é o mesmo. A diferenza está na forma de mostrar o resultado.

En lugar de acender NeoPíxeles, móstrase un texto na pantalla LED.

- "casa_vermella" mostra o texto VERMELLO.
- "casa_azul" mostra o texto AZUL.
- "casa_maxenta" mostra o texto MAXENTA.

Despois compróbase o contador correspondente. Se o valor é maior que 5, aparece o texto "BEN".

## Audio

audio/mpeg audio/mpeg

# Corrixe os erros

2

A continuación, tes unha serie de programas con erros. As frechas sinalan os puntos onde é necesario facer cambios para corrixilos.

Indica, para cada erro, a frecha correspondente.

{"typeGame":"Mapa","instructions":"","showMinimize":false,"showActiveAreas":false,"author":"","url":"resources/xogo_completo_con_erros.png","authorImage":"","altImage":"Programa principal con erros","itinerary":{"showClue":false,"clueGame":"","percentageClue":40,"showCodeAccess":false,"codeAccess":"","messageCodeAccess":""},"points":[{"id":"p266607907236","title":"Deter esta tarefa","type":2,"url":"","video":"","x":0.675625,"y":0.5108658035080155,"x1":0.2625,"y1":0.37662337662337664,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":11,"question":"Ao premer botón A pode que se execute máis dunha acción desexada.","question_audio":"","toolTip":"","link":"","color":"#000000","fontSize":"14","map":{"id":"a266607907236","pts":[{"id":"p696644580622","title":"","type":0,"url":"","video":"","x":0,"y":0,"x1":0,"y1":0,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":0,"question":"","question_audio":"","toolTip":"","link":"","color":"#000000","fontSize":"14","map":{"id":"a696644580622","url":"","alt":"","author":"","pts":[]},"slides":[{"id":"s696644580622","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0}],"url":"","alt":"","author":"","active":0},"slides":[{"id":"s266607907236","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0,"audio":""},{"id":"p1325166673578","title":"Variable repetida","type":2,"url":"","video":"","x":0.77625,"y":0.6343723049411526,"x1":0.7775,"y1":0.6519480519480519,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":11,"question":"Pode que algunha variable funcione en diferentes subprogramas","question_audio":"","toolTip":" \n","link":"","color":"#000000","fontSize":"14","map":{"id":"a1325166673578","pts":[{"id":"p323314102049","title":"","type":0,"url":"","video":"","x":0,"y":0,"x1":0,"y1":0,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":0,"question":"","question_audio":"","toolTip":"","link":"","color":"#000000","fontSize":"14","map":{"id":"a323314102049","url":"","alt":"","author":"","pts":[]},"slides":[{"id":"s323314102049","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0}],"url":"","alt":"","author":"","active":0},"slides":[{"id":"s1325166673578","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0,"audio":""},{"id":"p1452504255378","title":"Bloque incompleto","type":2,"url":"","video":"","x":0.10125,"y":0.7486579399604302,"x1":0.1475,"y1":0.7714285714285715,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":11,"question":"Algún dos subprogramas non está definido","question_audio":"","toolTip":" \n","link":"","color":"#000000","fontSize":"14","map":{"id":"a1452504255378","pts":[{"id":"p172879770973","title":"","type":0,"url":"","video":"","x":0,"y":0,"x1":0,"y1":0,"footer":"","author":"","alt":"","iVideo":0,"fVideo":0,"eText":"","iconType":0,"question":"","question_audio":"","toolTip":"","link":"","color":"#000000","fontSize":"14","map":{"id":"a172879770973","url":"","alt":"","author":"","pts":[]},"slides":[{"id":"s172879770973","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0}],"url":"","alt":"","author":"","active":0},"slides":[{"id":"s1452504255378","title":"","url":"","author":"","alt":"","footer":""}],"activeSlide":0,"audio":""}],"isScorm":1,"textButtonScorm":"Gardar a puntuación","repeatActivity":true,"textAfter":"","evaluation":2,"selectsGame":[{"typeSelect":0,"numberOptions":4,"quextion":"","options":["","","",""],"solution":"","solutionWord":"","percentageShow":35,"msgError":"","msgHit":""}],"isNavigable":true,"showSolution":true,"timeShowSolution":3,"version":2,"percentajeIdentify":100,"percentajeShowQ":100,"percentajeQuestions":100,"autoShow":false,"autoAudio":true,"optionsNumber":0,"evaluationF":false,"evaluationIDF":"","id":"20263884830-60","order":"","msgs":{"msgSubmit":"Enviar","msgIndicateWord":"Proporciona unha palabra ou expresión","msgClue":"Xenial! A pista é:","msgErrors":"Erros","msgHits":"Acertos","msgScore":"Puntuación","msgMinimize":"Minimizar","msgMaximize":"Maximizar","msgFullScreen":"Pantalla Completa","msgNoImage":"Pregunta sen imaxes","msgSuccesses":"Correcto! | Excelente! | Xenial! | Moi ben! | Perfecto!","msgFailures":"Non era iso! | Incorrecto! | Non é correcto! | Sentímolo! | Erro!","msgTryAgain":"Necesitas polo menos un %s% de respostas correctas para conseguir a información. Volve tentalo.","msgEndGameScore":"Antes de gardar a puntuación comeza a partida.","msgScoreScorm":"A puntuación non se pode gardar porque esta páxina non forma parte dun paquete SCORM.","msgPoint":"Punto","msgAnswer":"Resposta","msgOnlySaveScore":"Só se pode gardar a puntuación unha vez!","msgOnlySave":"Só se pode gardar unha vez","msgInformation":"Información","msgYouScore":"A puntuación","msgOnlySaveAuto":"A puntuación gardarase despois de cada pregunta. Só se pode xogar unha vez.","msgSaveAuto":"A puntuación gardarase automaticamente despois de cada pregunta.","msgSeveralScore":"Pódese gardar a puntuación tantas veces como se queira","msgYouLastScore":"A última puntuación gardada é","msgActityComply":"Xa realizaches esta actividade.","msgPlaySeveralTimes":"Pódese realizar esta actividade tantas veces como se queira","msgClose":"Pechar","msgPoints":"puntos","msgPointsA":"Puntos","msgQuestions":"Preguntas","msgAudio":"Audio","msgAccept":"Aceptar","msgYes":"Si","msgNo":"Non","msgShowAreas":"Amosar áreas activas","msgShowTest":"Amosar cuestionario","msgGoActivity":"Preme aquí para realizar esta actividade","msgSelectAnswers":"Selecciona as opcións correctas e prema no botón ","msgCheksOptions":"Marca tódalas opcións na orde axeitada e preme no botón ","msgWriteAnswer":"Escribe a palabra ou frase correcta e preme no botón ","msgIdentify":"Identifica","msgSearch":"Buscar","msgClickOn":"Preme sobre","msgReviewContents":"Debes repasar o %s% dos contidos da actividade antes de completar o cuestionario.","msgScore10":"Todo perfecto! Parabéns! Desexas repetir esta actividade?","msgScore4":"Non superaches esta proba. Repasa os seus contidos e téntao de novo. Desexas repetir a actividade?","msgScore6":"Moi ben! Superaches a proba, pero seguro que o podes mellorar. Desexas repetir esta actividade?","msgScore8":"Case perfecto! Aínda podes facelo mellor. Desexas repetir esta actividade?","msgNotCorrect":"Non é correcto! Premiches sobre","msgNotCorrect1":"Non é correcto! Premiches sobre","msgNotCorrect2":"e a resposta correcta é","msgNotCorrect3":"Téntao outra vez!","msgAllVisited":"Xenial! Visitaches os puntos necesarios.","msgCompleteTest":"Podes facer o test.","msgPlayStart":"Preme aquí para comezar","msgSubtitles":"Subtítulos","msgSelectSubtitles":"Selecciona un ficheiro de subtítulos. Formatos admitidos:","msgNumQuestions":"Número de preguntas","msgHome":"Inicio","msgReturn":"Volver","msgCheck":"Comprobar","msgUncompletedActivity":"Actividade non completada","msgSuccessfulActivity":"Actividade superada. Puntuación: %s","msgUnsuccessfulActivity":"Actividade non superada. Puntuación: %s","msgTypeGame":"Mapa"}}

Falta engadir DETER ESTA TAREFA. Se non o fas, a tarefa podería volver executarse cando dentro do subprograma "casa_maxenta" se prema o botón A.

A variable contador repítese en varios programas. Debemos chamar a cada variable dos subprogramas con nomes diferentes, salvo que signifiquen o mesmo.

Deberías incluír unha definición do bloque casa_azul, por exemplo:

O navegador non é compatible con esta ferramenta.

# Programa máis de 3 xogos nunha única placa

Crea os seis subprogramas necesarios para activar 6 casas: 3 para as cores RGB, como se explicou no exemplo anterior, e 3 para as cores CMY. Para iso terás que ter en conta un novo botón:

- O interruptor I, se utilizas a placa Adafruit PCE.
- O sensor "TouchPin", se empregas a placa micro:bit.

## Audio

audio/mpeg

## Transcrición da infografía

A imaxe mostra as combinacións de condicións que se poden usar no programa principal coas dúas placas.

### Combinacións coa placa Adafruit (placa redonda negra)

- Botón A e non botón B e interruptor da Circuit Playground.
- Botón A e non botón B e non interruptor da Circuit Playground.
- Botón B e non botón A e interruptor da Circuit Playground.
- Botón B e non botón A e non interruptor da Circuit Playground.
- Botón A e botón B e interruptor da Circuit Playground.
- Botón A e botón B e non interruptor da Circuit Playground.

### Combinacións coa placa micro:bit (placa rectangular negra)

- Botón A e non botón B e logo touched.
- Botón A e non botón B e non logo touched.
- Botón B e non botón A e logo touched.
- Botón B e non botón A e non logo touched.
- Botón A e botón B e logo touched.
- Botón A e botón B e non logo touched.

## Audio

audio/mpeg

# Momento de reflexión

Ao longo desta fase practicaches a creación de programas con diferentes niveis de dificultade. O uso de variables e listas permitiuche elaborar aplicacións máis completas, aínda que tamén fixo máis complexo detectar e corrixir erros.

Realiza unha reflexión sobre esta experiencia respondendo as seguintes cuestións no apartado da fase 3 do teu diario de aprendizaxe.

- Que diferenza notas entre facer programas sinxelos como os de anos anteriores e os que es capaz de facer agora?
- Lembras algún erro que che custou moito atopar? Como o solucionaches?
- Que importancia cres que ten probar e corrixir os programas varias veces?
- Se tiveras que explicar a alguén que empeza agora, que é o máis importante en programación, que lle dirías?

Diario común: realiza unha posta en común co resto da clase para coñecer outras experiencias e reflexións. Atopas algunha coincidencia coas túas?

## Lectura facilitada

Agora pensa na túa experiencia.

Responde no apartado da fase 3 do teu diario de aprendizaxe.

- Que diferenza ves entre os programas sinxelos e os de agora?
- Lembras algún erro difícil? Como o solucionaches?
- Por que é importante probar e corrixir varias veces?
- Que lle dirías a unha persoa que empeza a programar?

Diario común: comenta as túas ideas coa clase. Mira se hai coincidencias coas túas.

## Audio

audio/mpeg

Licenciado baixo a Licenza Creative Commons Atribución Non-comercial Compartir igual 4.0

Feito con eXeLearning (Nova xanela)