Teoria

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Nesse tópico nós iremos conversar um pouquinho sobre dados computacionais. Nós devemos entender o que são dados para podermos criar programas que sejam capazes de manipular de forma correta toda informação disponível para processamento.

Dados

Para entendermos o que são dados, vamos criar um contexto:

Imagine que a sua internet não para de cair e você precisa estudar para a prova de amanhã. Então, você decide ligar para a sua operadora de internet e ao ser atendido se depara com uma voz robotizada pedindo para discar uma das seguintes opções:

  1. Falar com o suporte técnico;
  2. Ver outros planos de internet;
  3. Cancelar o plano de internet atual.

Ainda bem que usamos a plataforma do Responde Aí! e podemos baixar o conteúdo da prova para estudar offline, não é mesmo?

Voltando a ligação, a primeira coisa que vem em nossas cabeças é discar o número 1, pois para nós isso significa falar com um dos técnicos da operadora de internet. No entanto, essa voz robotizada nada mais é do que um programa, que processará o número 1 recebido como um dado de entrada e terá como resultado o redirecionamento da chamada para um técnico (solucionando o seu problema de internet).

Por esse motivo, um dado nada mais é do que aquilo que é fornecido para o programa processar com o objetivo de resolver algum problema.

Tipos de dado

Da mesmo forma que nós classificamos os números em conjuntos numéricos, o computador classifica os seus dados em tipos. Existem três principais tipos de dados (chamados tipos primitivos) na linguagem C, são eles:

  • Inteiro (int);
  • Ponto flutuante (float);
  • Caractere (char).

Os nomes entre parênteses são a forma com que eles são chamados dentro de um código.

Para ficar mais fácil, vamos criar algumas assimilações:

O tipo int é correspondente ao nosso conjunto Z (números inteiros), são exemplos de dados inclusos nesse tipo os números presentes no subconjunto A:

A = 17 ,   90 ,   - 1 ,   - 58 ,   1001 ,   2020 ,   900

O tipo float é correspondente ao nosso conjunto R (números reais), são exemplos de dados inclusos nesse tipo os números presentes no subconjunto B:

B = { 3,14 ; 9,9 ; 2,67581 ; 0,00 ;   - 7,23 }

Já o tipo char é correspondente ao que chamamos de conjunto de caracteres alfanuméricos, que unem letras, números e símbolos especiais. São exemplos de dados inclusos nesse tipo os elementos presentes no subconjunto C:

C = A ,   C ,   @ ,   ? ,   0 ,   8 ,   H ,   % ,   # ,   !

A verdade é que esse último tipo surgiu como uma solução para entendermos aquilo que um computador gera como resultado ao processar um conjunto de dados. Isso porque esse resultado é fornecido por ele apenas em números (que lá no fundo é a única coisa que o computador entende, um monte de 0 e 1).

Talvez você não saiba, mas se esse tipo não existisse, você nunca conseguiria ler esse texto a partir do seu dispositivo. Isso aconteceria, pois tudo o que você conseguiria ver seria números e mais números (que é a maneira com que o computador se comunica).

É por esse motivo que todos os elementos do tipo char também podem ser tratados como como elementos do tipo int (o inverso não ocorre), pois o tipo char funciona como uma tradução de números inteiros em caracteres. Essa tradução é definida por uma tabela chamada ASCII, dá uma olhadinha nessa versão simplificada dela que eu fiz para você:

Nela nós podemos ver a tradução de números do tipo int para caracteres do tipo char. Então, lembre-se de que essa tabela (ASCII) existe e que os elementos do tipo char no fundo são apenas números do tipo int traduzidos para que nós humanos possamos entender de forma mais simples as informações fornecidas pelo computador.

Vale lembrar que os caracteres de números presentes no tipo char são apenas imprimíveis e para o programa não possuem nenhum valor, como por exemplo para fazer contas. Por esse motivo, não podemos substituir o tipo int, que trabalha com números inteiros de valor calculável.

Tamanho de tipos e variações

Nós já falamos um pouco sobre dados e os seus tipos, mas devemos lembrar que tudo isso está contextualizado em um computador.

O que isso quer dizer?

Que todo dado precisa de uma memória para ser armazenado, essa que é disponibilizada em diferentes quantidades dependendo do tipo do dado (aqui tudo é muito bem organizado).

Isso quer dizer que o tipo int é capaz de suportar números no seguinte intervalo: - 2.147.483.648 a 2.147.483.647 .

Mas o que acontece se um número inteiro estiver fora desse intervalo, ele não poderia ser do tipo int?

É um baita número esse, hein!?

Mas voltando a pergunta, sua resposta é não! Nós teríamos que utilizar uma variação do tipo int chamada long long int, que em relação ao tipo int dobraria a capacidade de números.

O mesmo acontece para o tipo float, que possui uma variação chamada double capaz de aumentar a quantidade de números inclusos do tipo primitivo significativamente.

Na prática não é muito comum utilizarmos números tão grandes assim como dados de programas da faculdade, mas em alguns casos isso acaba acontecendo (professor carrasco). Por esse motivo, é importante conhecermos a sua existência.

Agora que já sabemos quais são os principais tipos da linguagem C e suas variações, está na hora de resolvermos alguns exercícios de fixação!

Nos vemos em breve.

Tamanho de tipos e variações

Exercícios Resolvidos