Projeto Atual:

Programando Aplicativos com Javascript

28/07/2020

Tipos de Dados



Tipos de Dados

Agora que você já aprendeu a criar seus primeiros programas, é hora de saber um pouco mais sobre tipos de dados.

O que são dados?

Quando você faz sua matrícula em uma escola, ou quando faz uma consulta médica pela primeira vez, é preciso fornecer algumas informações sobre você, para que os profissionais que vão atendê-lo possam entender melhor as suas necessidades. Essas informações que você fornece, e outras que são acumuladas no processo de atendê-lo, são dados.

Nesse exemplo, dados típicos que você deve fornecer são seu nome, data de nascimento, escolaridade, ou, para o caso médico, problemas de saúde que já conhece.

Os dados que são acumulados a seu respeito, no caso da escola, podem ser suas notas em cada matéria, dados sobre seu comportamento, frequência às aulas, etc. No caso médico, podem ser resultados de exames, como sua pressão sanguínea, taxa de açúcar no sangue, etc.

Dados em Computação

No contexto da computação , dados são as informações guardadas e manipuladas em um computador.

Os computadores que utilizamos são construídos com circuitos eletrônicos digitais, e qualquer dado armazenado, lá no fundo, é armazenado como sequências de zeros e uns (desligado/ligado, falso/verdadeiro). Esses valores que só podem ter dois estados, estão associados aos dígitos 0 e 1 (dígitos binários), ou, em jargão da informática, bits.

A organização code.org criou uma boa série de vídeos explicando o funcionamento dos computadores. Se você deseja assistir, siga o link abaixo:

Pode parecer que não se pode fazer muita coisa com zeros e uns, mas quando são agrupados em conjuntos maiores, podem representar de tudo, desde números maiores, letras, textos inteiros, imagens, vídeos, etc.

Por exemplo, para representar cada letra desse texto que você está lendo, um computador moderno utiliza um código com 16 bits, chamado de UNICODE (https://pt.wikipedia.org/wiki/Unicode). Com 16 bits, podem-se representar cerca de 64 mil símbolos diferentes. Para o português, não seriam necessários tantos, mas pense em todos os símbolos possíveis, em todas as línguas, incluindo Coreano, Mandarim, etc.

Veja abaixo um fragmento da tabela de caracteres UNICODE.



Os códigos acima de cada símbolo são valores associados aos mesmos, em notação hexadecimal (em hexadecimal, os algarismos vão de 0 a F, sendo que 9 + 1 = A).

Já para a tela colorida do dispositivo onde você deve estar lendo o texto, cada ponto da tela pode ter uma de 64 mil cores, o que nos leva, novamente, a 64 bits por ponto.

Veja abaixo o código de algumas cores no sistema RGB (vermelho, verde, azul), que usa 8 bits para cada cor:




Vamos voltar aos nossos programas, e explorar os tipos de dados que utilizamos.

Tipos de dados em uma Linguagem de Programação

Você já aprendeu que para criar um programa você precisa armazenar informações em variáveis. Essas variáveis são espaços na memória do computador. O tipo de informação que você pode armazenar em uma variável é um tipo de dado. Veja os tipos mais simples, que você já utilizou:

Valores lógicos
O tipo de dado mais simples que se pode manipular pode ser guardado em apenas 1 bit da memória, e representa um de dois valores: verdadeiro ou falso.



Toda vez que você testa uma condição, por exemplo, para saber se o número de perguntas é maior que 10, o resultado pode ser apenas verdadeiro ou falso. Estes valores são utilizados nos comandos se/senão, para decidir que parte do programa o computador vai executar.



Números
O próximo tipo de dado são valores numéricos. Com eles, você pode, por exemplo, contar os pontos em um jogo, representar uma distância, etc.

Um computador é capaz de realizar diversas operações matemáticas utilizando valores numéricos.

A linguagem de programação do AppInventor é de alto nível, e os valores numéricos armazenados podem representar números inteiros e números decimais em uma gama muito grande de valores (mas não infinita). Em cada linguagem de computador, é estipulada a faixa de valores numéricos que podem ser representados.



Em outras linguagens de computador, pode haver mais de um tipo de dado utilizado para armazenar números. Por exemplo, para armazenar valores de zero a 255 apenas, podem-se utilizar apenas 8 bits. Esse tipo de dado é denominado byte. Também pode haver tipos diferentes para representar números inteiros e números decimais.

Texto
Outro tipo de dado bastante útil é o texto (em algumas linguagens, chamado de string). Com ele, você pode armazenar nomes de pessoas, mensagens, perguntas, etc.

As linguagens de programação moderna também são capazes de realizar diversas operações com texto, como concatenação, extrair segmentos ou buscar uma palavra em um texto maior.



Esses três tipos de dados vistos até aqui são os tipos de dados simples.


Listas
Em alguns programas, você precisa armazenar diversas informações em uma lista, como por exemplo, as mensagens no aplicativo do Biscoito da Sorte. Para isso, você pode utilizar o tipo de dados lista. Ao criar uma lista, na verdade você cria diversas variáveis ao mesmo tempo. Só que, ao invés de dar um nome separado a cada variável, você dá um nome à lista, e se refere a cada variável individual por sua posição na lista.

A posição de um elemento da lista é um número inteiro, e é denominado índice, ou, de forma mais geral, chave de acesso.

Listas podem ser utilizadas, por exemplo, para armazenar os nomes dos alunos em uma turma, as notas de um aluno, etc.

Em algumas linguagens de programação, os dados que podem ser armazenados em uma lista têm que ser todos de um mesmo tipo (por exemplo, uma lista só com números). No AppInventor, você pode armazenar em cada posição da lista qualquer tipo de dado, inclusive uma outra lista.

Veja um exemplo de uso de lista no aplicativo Trívia, que você já deve ter visto através do tutorial neste blog.

Para recuperar uma pergunta da lista:



A vantagem do uso de listas é poder tratar os dados um a um, percorrendo a lista do início ao fim, ou poder escolher um elemento da lista utilizando simplesmente um número.
As operações com listas são semelhantes às operações possíveis com texto. Você também pode acrescentar ou remover elementos de uma lista.


Dicionários
Em uma lista, os dados são armazenados de forma compacta, ou seja, se você tem uma lista com dez elementos, você pode recuperá-los utilizando índices que vão de 1 a 10 (ou de 0 a 9 em algumas linguagens). Algumas linguagens permitem que você utilize índices esparsos, mas, na verdade, preenchem os espaços não utilizados com valores nulos.

Quando você precisa armazenar dados em que a chave de acesso é esparsa (exemplo, número de telefone), ou mesmo não numérica (por exemplo, nome de pessoa, ou nome de uma cor), é necessário utilizar um outro tipo de dado, chamado dicionário ou mapa.

Como exemplo de uso, imagine uma agenda com nomes e telefones. Quando você precisa ligar para alguém, você procura na agenda o nome da pessoa, e tem acesso ao telefone. Nesse caso, a chave de acesso é um nome, e o dado armazenado é o telefone.



Você também pode utilizar dicionários em cada posição de uma lista, para guardar informações semelhantes, e depois, recuperá-las de forma genérica.

Como exemplo, vamos melhorar nossa agenda, guardando também o telefone e outras informações sobre cada pessoa. Você vai ter dicionários aninhados. No nível mais externo, a chave de acesso é o nome de uma pessoa. No nível secundário, cada posição é um dicionário, em que as chaves de acesso são ‘telefone’, ‘e-mail’, ‘idade’, etc. Veja como ficaria utilizando o AppInventor.


Para acessar um telefone, você vai precisar de duas chaves: o nome da pessoa e o texto fixo ‘telefone’. Veja como ficaria o uso da agenda em um programa:


Note que em um dicionário, por os dados serem esparsos, não há garantia de que haverá um valor armazenado para uma chave específica. No nosso exemplo, se procurarmos o telefone de “Maria”, não acharemos nada. Para isso, os blocos que recuperam dados em um dicionário têm um terceiro encaixe, com um valor a ser utilizado caso não seja encontrado um valor para a chave de acesso utilizada.

Dados temporários e dados permanentes

Quando você utiliza variáveis em um programa, elas estão disponíveis durante a execução, mas quando o programa termina, seus valores são perdidos. Isso pode ser bom em jogos ou calculadoras, onde você vai usar valores novos, ou começar do início, a cada uso. Para a maioria das aplicações, no entanto, é importante armazenar esses dados de forma permanente.

Nos computadores, os dados temporários são armazenados na memória principal. Os dados permanentes são armazenados em componentes capazes de reter a informação por muitos anos. O preço a pagar pelo tempo maior de armazenamento é a velocidade de acesso. Assim, o computador utiliza a memória principal, que é rápida, para tratar os dados, e, ao final, armazena os resultados nos meios de armazenamento permanente, mais lentos, para que possam ser utilizados mais tarde.

No AppInventor, você pode utilizar o componente TinyDB para armazenar dados permanentes. A forma de uso é semelhante à de uso de um dicionário. Você usa uma chave de acesso para armazenar um dado. Você pode, por exemplo, armazenar o registro mais recente utilizado em uma agenda de telefone, ou a maior pontuação de um jogador em um aplicativo de jogo.

Veja um uso de TinyDB para armazenar de forma permanente uma agenda, e depois recuperar o registro para uma pessoa:


Nota: Num programa completo, você provavelmente iria armazenar toda a agenda em uma única chave de TinyDB.

Outro componente capaz de armazenar dados permanentes é o Arquivo. Este componente cria arquivos no sistema de arquivos do computador, e armazena ou recupera as informações armazenadas nesses arquivos.

Como exemplo, você poderia criar um arquivo para o aplicativo do Biscoito da Sorte onde cada linha é uma mensagem. No início do aplicativo, o arquivo com as mensagens é lido e armazenado em uma lista. Com isso, fica mais fácil alterar as mensagens que serão apresentadas. A mesma técnica poderia ser utilizada no aplicativo de Trívia.

Veja os blocos mais importantes para manipular arquivos no AppInventor:



Abstração e Modelagem

Você já aprendeu que para criar um bom programa, um dos primeiros passos é entender o problema e criar um algoritmo. Como parte desse processo, é necessário entender que dados você vai precisar, e como organizá-los em variáveis, escolhendo o tipo de dados das mesmas e bons nomes que vão ajudar a documentar seu programa. Um computador não “vê” o mundo como você. Ele só conhece os dados que recebe para resolver um problema. Esses dados são uma simplificação de uma situação real, que chamamos de um modelo.

Para entender o que é um modelo, imagine um brinquedo. Pode ser uma boneca, ou um carrinho de plástico. Esse brinquedo tem algumas características semelhantes às daquilo que representa, mas nem todas. A boneca é o modelo de uma criança, e se parece com uma, mas não tem carne, sangue, etc. O carro de brinquedo tem rodas, mas pode não ter um motor, e o tamanho é reduzido.

Por compromissos com relação a espaço de armazenamento, dificuldade de aquisição de dados, etc, os modelos devem ter os dados necessários ao funcionamento do aplicativo, mas não mais do que isso.


Nenhum comentário:

Postar um comentário