Code 2: Data and Variables

Unidade de Programação 2: Dados e Variáveis

 

Ao final deste módulo, você deverá…

  • Entender o que são dados e diferentes tipos de dados
  • Ser capaz de usar variáveis e bases de dados
  • Saber organizar dados em listas
  • Criar um aplicativo de lista de tarefas que se conecta a uma base de dados

Como esta unidade contém muitas informações, não tem problema se você não entender tudo neste momento. A melhor maneira de entender conceitos de programação é solucionando os desafios para vê-los na prática! Você pode voltar para esta unidade sempre que não souber como continuar o desenvolvimento do seu aplicativo.

Dados

Em algum ponto da sua vida, você já deve ter ouvido falar em dados. Dados podem ser muitas coisas, mas na ciência da computação, dados são as informações de que seu aplicativo precisa para funcionar. Para entender melhor, pense em alguns aplicativos e na informação de que eles precisam para funcionar.

WhatsApp

Angry Birds

Apresentação de slides

Troca mensagens com amigos e faz ligações Derrota porcos atirando pássaros Este é o aplicativo que você fez na unidade passada
  • Seu nome de usuário/li>
  • Nomes de usuário dos seus amigos
  • Mensagem que você quer enviar
  • Horário atual
  • Sua localização
  • Sua pontuação
  • Quantos pontos vale cada objeto
  • Que níveis você já completou
  • Quantos pássaros você tem em cada nível
  • Suas imagens favoritas

O programador precisa desenvolver maneiras para o aplicativo coletar todas as informações necessárias. Lembre-se, computadores não conseguem fazer nada sem suas instruções. Aqui estão algumas maneiras com as quais os aplicativos do App Inventor obtêm dados para funcionar:

  1. O programador insere as informações
  2. O usuário digita as informações
  3. O aplicativo se conecta a outro lugar para coletar informações

Exemplos do que isso significa

Método

Exemplo

O programador insere as informações
  • No aplicativo da apresentação de slides, você (a programadora) colocou as suas imagens favoritas
  • No Angry Birds, o programador informou quantos pássaros o jogador tem em cada nível
O usuário digita as informações
  • No WhatsApp, o usuário deve informar ao aplicativo o que ele quer enviar e para quem
O aplicativo se conecta a outro lugar para coletar informações
  • O WhatsApp se conecta ao seu celular para obter a hora exata em que você enviou uma mensagem

Algumas vezes, um aplicativo salva as informações fornecidas pelo usuário. Por exemplo, o WhatsApp salva um histórico de mensagens para que você consiga ver a última mensagem enviada a um amigo. Para isso, programadores usam bases de dados, que você conhecerá nesta aula. Mais tarde, você aprenderá como se conectar a outros lugares para obter informações.

Atividade

Em um aplicativo que ajuda a encontrar o mercado mais próximo, que tipo de coisas você acha que o aplicativo precisa saber?

Tipos de dados

Como visto na seção anterior, dados podem ser muitas coisas! Para facilitar o entendimento dos computadores sobre o que fazer com os dados fornecidos, eles são organizados em categorias. Essa organização em categorias resulta em tipos de dado. Linguagens de programação giram em torno de três tipos principais de dados: números, strings (cadeias de caracteres) e booleanos. O App Inventor também permite usar dados mais complexos, como cores e imagens. Não será necessário fazer nada com os tipos de dados nesta seção, mas é bom se lembrar deles conforme você aprende mais.

Números

Dados numéricos são exatamente aquilo que você está pensando! No App Inventor, você pode usar números clicando na sessão Math, ou Matemática, em blocks.

Esses blocos de Matemática serão utilizados quando você precisar de números. Aqui estão alguns exemplos de como você pode usar dados numéricos no seu aplicativo.

  • Calcular a pontuação de um jogador
  • Contar as tentativas de acesso de um usuário
  • Contar quantas vezes você quer que seu aplicativo faça algo
  • Verificar a idade do seu usuário

Para saber mais sobre o que pode ser feitos com blocos de Matemática, visite o site do MIT: Blocos de Matemática

Strings

Dados do tipo string são textos. Para criar um string no App Inventor, vá para “Text”, ou Texto, em Blocks. Estes são blocos de texto que você pode usar.

Use strings toda vez que quiser adicionar um campo de texto ao código. Aqui estão alguns exemplos de como você pode usar dados string no seu aplicativo.

  • Verificar se a senha do usuário está correta
  • Comandar o aplicativo a falar palavras para o usuário
  • Mostrar uma mensagem ao usuário

Antes de continuar, acesse o site do MIT para saber o que pode ser feito com dados textuais: Blocos de texto

Booleanos

Um dado booleano pode ter apenas um de dois valores: “true”, verdadeiro, ou “false”, falso. True é basicamente “sim” e false é basicamente “não”. Para escolher um booleano, vá para “logic”, lógica, na parte de funções e escolha um destes blocos:

Por enquanto, não faremos muito com esses dados booleanos, apenas mantê-los em mente. Veremos mais sobre booleanos e lógica na Unidade de Programação 3: Lógica, loops e condicionais.

Variáveis

Um dos conceitos mais importantes da programação é a variável. Variável é o nome de um dado que pode mudar de valor. Uma maneira fácil de lembrar isso é que variáveis variam, ou seja, mudam de valor. Há muitas informações importantes no dia a dia que mudam de valor. Alguns exemplos:

  • Sua idade
  • Sua altura
  • Sua localização
  • A data de hoje

Para entender variáveis e como usá-las no App Inventor, vamos ver um exemplo. Imagine que você está desenvolvendo um jogo em que o jogador pode ganhar e perder pontos. Você quer que ele consiga ver sua pontuação em uma caixa. No início do jogo, o jogador possui zero pontos, então você adiciona um bloco como este ao jogo.

O jogador vê zero na caixa de pontuação. Mas a pontuação do jogador muda conforme ele joga. Cada vez que ele ganha ou perde pontos, você deve atualizar o que diz na caixa. Quando ele ganha pontos, você adiciona um bloco assim:

Isso funciona, mas e na próxima vez que o jogador ganhar 10 pontos? Você tem que atualizar o texto para mostrar 20. E se ele perder pontos? Você tem que mudar para 15. E se ele ganhar de novo? Isso pode acabar ficando confuso bem rápido.

Em situações como essa, você pode criar uma variável para acompanhar a pontuação do jogador. Você pode criar uma variável chamada score, ou pontuação, que vai ter sempre o valor da pontuação atual do jogador. Conforme ele joga, você pode adicionar ou subtrair pontos do score e não precisa se preocupar em realmente acompanhar qual é a pontuação atual dele. Veja como ficaria no App Inventor. Primeiro, você pega este bloco da seção “variables”, variáveis.

Esse bloco diz ao aplicativo que existe uma variável e pede que ela seja nomeada. Em um jogo em que o score começa em zero, o bloco fica assim:

Com esse bloco, você diz para o aplicativo que um dado, chamado score, mudará de valor conforme o jogo é jogado. Toda vez que o aplicativo for executado, ele criará uma variável chamada score e atribuirá a ela o valor zero. Agora você pode fazer o chamado “set” (definir) e “get” (obter) para a sua variável de pontuação. “Get” permite ver qual é o valor da pontuação atual. Para seu aplicativo exibir a pontuação em uma caixa de texto, faça assim:

“Set” permite atribuir um novo valor à pontuação do usuário. Toda vez que o jogador receber pontos, você pode pedir para o aplicativo fazer isso.

Isso diz para o aplicativo mudar o valor do score para o valor atual mais dez. Se a pontuação atual for zero, a nova será 10 Se a pontuação atual for 25, a nova será 35 Não precisa se preocupar em mudar a pontuação toda vez que o jogador ganhar ou perder pontos. O aplicativo simplesmente adicionará 10 ao valor atual.

Não tem problema você ainda achar variáveis confusas! Elas são complicadas de entender, mas a melhor maneira de fazer isso é na prática. Elas serão usadas no desafio de programação ao fim desta atividade e novamente nas outras unidades de programação.

 Atividade

Escolha um dos seus aplicativos favoritos e identifique pelo menos três locais em que acha que o programador usou variáveis.

Variáveis locais e globais

É possível perceber que a variável score na seção anterior dizia “global”. O App Inventor fornece dois tipos de variáveis: variáveis locais e variáveis globais. Ao criar variáveis, você precisa pensar se quer utilizá-la em várias situações no seu código, como a variável score da seção anterior, ou em apenas um local.

Variáveis globais podem ser usadas em qualquer local do código. Como você viu acima, a variável score precisou ser usada várias vezes. Você precisou usá-la quando o jogador ganha pontos, quando ele perde e para exibir na caixa de texto. Ele também pode ser utilizado em uma tabela de recordes. Não é possível repetir um nome quando estiver usando uma variável global. Se fizesse isso, seu aplicativo não saberia qual variável usar. Por sorte, o App Inventor não deixa você criar duas variáveis com nomes repetidos. Se estiver com dúvidas sobre qual variável utilizar, a global é a melhor alternativa.

Variáveis locais só podem ser utilizadas em um único local no seu aplicativo. Se precisar de uma variável para acompanhar algo em apenas uma situação, utilize uma variável local. A variável local pode ser utilizada apenas dentro do bloco “local variable”, pois o App Inventor não deixa ela ser utilizada fora dele. Diferentes de variáveis globais, variáveis locais podem ter nomes repetidos.

No desafio de programação, você verá exemplos de quando usar variáveis globais e quando usar variáveis locais: Para aprender mais sobre variáveis locais e globias, visite o site do MIT: Variáveis globais e locais

Organização de dados

É fácil ficar confusa com tantas informações que temos no mundo! Por sorte, temos maneiras de organizar dados para encontrá-los e usá-los facilmente. Você consegue pensar em algum exemplo que mostre como você organiza informações e objetos na sua vida? Exemplos de coisas que talvez você faça para organizar coisas:

  • Números de amigos em uma lista de contatos
  • Lápis em estojos
  • Roupas em um armário

Programadores usam listas para organizar dados em programas. Listas podem armazenar vários pedaços de dados e facilitar o acesso a eles. Se algum dia você fez uma lista de mercado ou uma lista de tarefas, você perceberá que listas de programação são muito similares. No App Inventor, vá para a parte blocks e selecione as listas em “lists”. Listas são assim:

makealist itemlist

number-list

Elas são úteis para armazenar muitas informações. Cada item em uma lista possui um índice, que é um número que diz onde cada coisa está na lista. O primeiro item em uma lista possui índice 1, o segundo possui índice 2, e assim por diante.

Observe esta lista de frutas:fruit list

O seu aplicativo vê as informações desta forma:

Nome da lista: Frutas

  • Maçãs (Índice = 1)
  • Bananas (Índice = 2)
  • Laranjas (Índice = 3)

É possível obter uma coisa da lista em vez de usar toda a lista. Caso você quisesse colocar o string “bananas” em uma caixa de texto em vez da lista inteira, você só precisaria falar para o aplicativo ver o índice 2 dessa lista. Para colocar “bananas” em uma caixa de texto do App Inventor, você pode fazer assim:

Também é possível adicionar, remover e substituir coisas em listas. Digamos que você se esqueceu de adicionar “kiwis” e “uvas” na sua lista de frutas. Você pode adicioná-los assim:

add to list

Agora, seu aplicativo os verá assim:

Nome da lista: Frutas

  • Maçãs (Índice = 1)
  • Bananas (Índice = 2)
  • Laranjas (Índice = 3)
  • Kiwis (Índice = 4)
  • Uvas (Índice = 5)

Listas podem ser utilizadas sempre que você quiser incluir várias tipos de informações no mesmo nome de variável. Por exemplo, se quiser exibir os recordes para um jogo, você pode fazer dez variáveis com nomes como HighScore1, HighScore2, HighScore3 e assim em diante, até HighScore10. A maneira mais simples de se fazer isso seria criando uma lista chamada “HighScores” que tivesse os dez recordes e, depois, exibi-los através dos índices. Usar uma lista também permite substituir valores e adicionar recordes mais facilmente, o que poupa muito tempo!

highscore1

стає:

highscore2

Confira no site do MIT mais informações sobre listas: Listas

Bases de dados

Variáveis são ótimas para armazenar informações enquanto o usuário está no aplicativo, mas e se você quiser armazenar informações entre as vezes em que o usuário abre e fecha o aplicativo? Isso pode ser feito com uma base de dados. Bases de dados podem armazenar informações para serem usadas mais tarde, até com o aplicativo fechado! Pense em bases de dados como um lugar para guardar informações que você pode pesquisar depois. Exemplos de bases de dados que usadas no dia a dia:

  • Lista de contatos – guarda números de amigos para ligar depois
  • Aplicativo de mensagem – armazena o histórico de mensagens
  • Bloco de notas – escreve coisas para ler depois

TinyDB

O componente Tiny DB permite salvar dados no celular do usuário que estarão lá todas as vezes em que ele entrar no aplicativo. É importante saber que o Tiny DB permite apenas o armazenamento local de dados. Isso significa que dois usuários não podem compartilhar dados com o Tiny DB. Quando um usuário armazena dados no Tiny DB, eles ficam disponíveis apenas no seu próprio celular. Na Unidade de programação 5, você aprenderá a compartilhar informações entre celulares.

Para usar o Tiny DB, arraste-o para sua tela do lado designer no App Inventor. Ele aparecerá como um componente não visível desta forma:

TinyDB

A maneira de conversar com seu Tiny DB é por meio de calls, ou chamadas. Ao fazer uma call, você pode tanto armazenar quanto obter coisas da base de dados. Para armazenar dados na TinyDB, associe uma tag, ou etiqueta, a ela. Tag é um nome que será utilizado para recuperar dados. É como um nome de variável. Se utilizar o mesmo nome de tag para armazenar dados mais de uma vez, a base de dados vai sobrescrever ou apagar os dados antigos com os novos. Isso é útil para atualizar sua base de dados, mas, do contrário, tome cuidado para não repetir nomes!

Para fazer calls ao TinyDB:

TinyDB store global fruits screen-shot-2016-09-23-at-3-24-29-pm

O primeiro bloco mostra como armazenar valores no TinyDB. Neste caso, armazenamos a lista de frutas do exemplo anterior com a tag “Comida”. O segundo bloco mostra como recuperar a lista de frutas da base de dados. A tag deve ser digitada exatamente como foi quando os dados foram armazenados, inclusive as letras maiúsculas.

Vamos ver um exemplo para entender melhor. Vamos supor que você precisa armazenar três coisas na base de dados para utilizar depois. Uma delas é a lista de Frutas da seção anterior, outra é a sua idade e a última é uma lista das suas atividades favoritas. Você deve fazer três calls para a base de dados, assim:

Agora, você tem três entradas na base de dados e elas devem estar assim:

TinyDB store global fruits

Nome da tag: “Comida”

Dados:

  • “Maçãs”
  • “Bananas”
  • “Laranjas”
Tiny DB my age

Nome da tag: “Minha idade”

Dados: 16

TinyDB store favorites list

Nome da tag: “Favoritos”

Dados:

  • “Aprender a programar”
  • “Visitar a família”
  • “Ouvir música”

Para recuperar as suas atividades favoritas, faça um call assim:

TinyDB favorites value not tagged

Usando esse bloco, você receberá as informações “Aprender a programar Visitar a família Ouvir música”. Agora você quer recuperar sua idade, então faça um call assim:

TinyDB my age value tag if not there

Ao utilizar esse bloco, você receberá apenas uma string vazia: “ “. Isso aconteceu porque a tag “minha idade” não existe na base de dados! Mas a tag “Minha idade”, com letra maiúscula, existe. Como a base de dados não reconheceu essa tag, ela respondeu com o padrão “valueIfTagNotThere”, ou seja, o valor caso a tag não exista, que neste caso é uma string vazia. É possível alterar o que diz essa string. Pode ser uma mensagem de erro para o usuário.

Se criar um aplicativo com várias telas, componentes, dados e variáveis não conseguirão se comunicar entre si nas telas. Uma TinyDB é necessária para transferir informações de uma tela do aplicativo para outra. Para mais informações, visite esta página: Telas MIT

Parabéns! Você completou todo o conteúdo desta unidade. Foram muitas informações, então não tem problema se você ainda não entender tudo! Você pode voltar para esta unidade enquanto estiver desenvolvendo seu aplicativo. O desafio de programação vai integrar tudo que vimos até agora, então é hora de tentar!

Desafio de programação #2: Como fazer um aplicativo de lista de tarefas

Descrição: Faça uma lista de tarefas que permita que o usuário adicione e remova itens. Seu aplicativo deve lembrar os itens toda vez que o usuário abrir o aplicativo. Pode ser necessário aprender a usar uma ListView antes de tentar o desafio!

Veja nosso aplicativo de exemplo aqui: Desafio Technovation #2

Tente fazer o desafio sozinha antes de ler as instruções. Lembre-se, as instruções são apenas uma maneira de solucionar o desafio!

 

Ainda está com dificuldades? Baixe o código-fonte do exemplo aqui

Instruções sobre como baixar e usar códigos-fonte: Instruções para código-fonte 

 

Reflexão

Fizemos muita coisa nesta aula! Você aprendeu tudo sobre diferentes tipos de dados, além de maneiras de armazená-los e organizá-los. Questões para discutir com o mentor:

Q1: De qual forma as informações aprendidas hoje alteram a maneira de ver aplicativos que usamos todos os dias?
Q2: O que você aprendeu de importante para ajudar a desenvolver seu aplicativo?

Você aprendeu as seguintes palavras-chave nesta seção:

  • Dados – Informações usadas pelo aplicativo
  • Tipos de dados – Categorização de dados
  • Número – Tipo de dado numérico
  • String – Tipo de dado textual
  • Booleano – Tipo de dado verdadeiro ou falso
  • Variável – Nome de um dado que pode mudar de valor
  • Variável global – Variável que pode ser usada em qualquer lugar no código
  • Variável local – Variável usada apenas em um certo local do código
  • Lista – Maneira de organizar vários dados
  • Índice de lista – Número que representa onde um dado está em uma certa lista
  • Base de dados – Local de armazenamento e organização de informações

Recursos adicionais

Recursos adicionais sobre bases de dados. Você pode usá-los agora ou quando for desenvolver seu próprio aplicativo!