Programação Funcional - Tipos de Dados
Um tipo de dados define o tipo de valor que um objeto pode ter e quais operações podem ser executadas nele. Um tipo de dados deve ser declarado antes de ser usado. Diferentes linguagens de programação oferecem suporte a diferentes tipos de dados. Por exemplo,
- C suporta char, int, float, long, etc.
- Python suporta String, List, Tuple, etc.
Em um sentido amplo, existem três tipos de tipos de dados -
Fundamental data types- Esses são os tipos de dados predefinidos que são usados pelo programador diretamente para armazenar apenas um valor de acordo com o requisito, ou seja, tipo inteiro, tipo de caractere ou tipo flutuante. Por exemplo - int, char, float, etc.
Derived data types- Esses tipos de dados são derivados usando tipo de dados embutido que são projetados pelo programador para armazenar vários valores do mesmo tipo de acordo com seus requisitos. Por exemplo - Array, Pointer, function, list, etc.
User-defined data types- Esses tipos de dados são derivados usando tipos de dados integrados que são agrupados em um único tipo de dados para armazenar vários valores do mesmo tipo ou de tipo diferente, ou ambos, conforme o requisito. Por exemplo - Classe, Estrutura, etc.
Tipos de dados suportados por C ++
A tabela a seguir lista os tipos de dados suportados por C ++ -
Tipo de dados | Tamanho | Alcance |
---|---|---|
Caracteres | 1 byte | -128 a 127 ou 0 a 255 |
caracter não identifcado | 1 byte | 0 a 255 |
char assinado | 1 byte | -128 a 127 |
int | 4 bytes | -2147483648 a 2147483647 |
int sem sinal | 4 bytes | 0 a 4294967295 |
int assinado | 4 bytes | -2147483648 a 2147483647 |
curto int | 2 bytes | -32768 a 32767 |
int curto sem sinal | 2 bytes | 0 a 65.535 |
int curto assinado | 2 bytes | -32768 a 32767 |
longo int | 4 bytes | -2.147.483.648 a 2.147.483.647 |
assinado longo int | 4 bytes | -2.147.483.648 a 2.147.483.647 |
int longo sem sinal | 4 bytes | 0 a 4.294.967.295 |
flutuador | 4 bytes | +/- 3,4e +/- 38 (~ 7 dígitos) |
em dobro | 8 bytes | +/- 1,7e +/- 308 (~ 15 dígitos) |
longo duplo | 8 bytes | +/- 1,7e +/- 308 (~ 15 dígitos) |
Tipos de dados suportados por Java
Os seguintes tipos de dados são suportados por Java -
Tipo de dados | Tamanho | Alcance |
---|---|---|
byte | 1 byte | -128 a 127 |
Caracteres | 2 bytes | 0 a 65.536 |
baixo | 2 bytes | -32.7688 a 32.767 |
int | 4 bytes | -2.147.483.648 a 2.147.483.647 |
longo | 8 bytes | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |
flutuador | 4 bytes | -2147483648 a 2147483647 |
em dobro | 8 bytes | + 9,223 * 1018 |
boleano | 1 bit | Verdadeiro ou falso |
Tipos de dados suportados por Erlang
Nesta seção, discutiremos os tipos de dados suportados por Erlang, que é uma linguagem de programação funcional.
Número
Erlang suporta dois tipos de literais numéricos, ou seja, integer e float. Dê uma olhada no exemplo a seguir que mostra como adicionar dois valores inteiros -
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("~w",[5+4]).
Ele produzirá a seguinte saída -
9
Átomo
A atomé uma string cujo valor não pode ser alterado. Deve começar com uma letra minúscula e pode conter quaisquer caracteres alfanuméricos e especiais. Quando um átomo contém caracteres especiais, ele deve ser colocado entre aspas simples ('). Dê uma olhada no exemplo a seguir para entender melhor.
-module(helloworld).
-export([start/0]).
start()->
io:fwrite(monday).
Ele produzirá a seguinte saída -
monday
Note- Tente mudar o átomo para "segunda-feira" com "M" maiúsculo. O programa produzirá um erro.
boleano
Este tipo de dados é usado para exibir o resultado como true ou false. Dê uma olhada no exemplo a seguir. Mostra como comparar dois inteiros.
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite(5 =< 9).
Ele produzirá a seguinte saída -
true
String de bits
Uma string de bits é usada para armazenar uma área de memória não digitada. Dê uma olhada no exemplo a seguir. Mostra como converter 2 bits de uma string de bits em uma lista.
-module(helloworld).
-export([start/0]).
start() ->
Bin2 = <<15,25>>,
P = binary_to_list(Bin2),
io:fwrite("~w",[P]).
Ele produzirá a seguinte saída -
[15,25]
Tupla
Uma tupla é um tipo de dados composto com um número fixo de termos. Cada termo de uma tupla é conhecido como umelement. O número de elementos é o tamanho da tupla. O exemplo a seguir mostra como definir uma tupla de 5 termos e imprime seu tamanho.
-module(helloworld).
-export([start/0]).
start() ->
K = {abc,50,pqr,60,{xyz,75}} ,
io:fwrite("~w",[tuple_size(K)]).
Ele produzirá a seguinte saída -
5
Mapa
Um mapa é um tipo de dados composto com um número variável de associações de valores-chave. Cada associação de valor-chave no mapa é conhecida como umassociation-pair. okey e value partes do par são chamadas elements. O número de pares de associação é o tamanho do mapa. O exemplo a seguir mostra como definir um mapa de 3 mapeamentos e imprimir seu tamanho.
-module(helloworld).
-export([start/0]).
start() ->
Map1 = #{name => 'abc',age => 40, gender => 'M'},
io:fwrite("~w",[map_size(Map1)]).
Ele produzirá a seguinte saída -
3
Lista
Uma lista é um tipo de dados composto com um número variável de termos. Cada termo da lista é chamado de elemento. Diz-se que o número de elementos é o comprimento da lista. O exemplo a seguir mostra como definir uma lista de 5 itens e imprimir seu tamanho.
-module(helloworld).
-export([start/0]).
start() ->
List1 = [10,15,20,25,30] ,
io:fwrite("~w",[length(List1)]).
Ele produzirá a seguinte saída -
5
Note - O tipo de dados 'String' não está definido em Erlang.