Tipos - Programa de Pós-Graduação em Sistemas e Computação

Propaganda
Luiza Miranda Guterres
Agosto de 2013
Existem milhares de linguagens de
programação e novas linguagens
surgem frequentemente.
 As linguagens de programação podem
ser classificadas de acordo com o tipo
de sistema que elas usam. O tipo de
sistema define como são os métodos e
as variáveis da linguagem . Podendo ser
estática
(compilada),
dinâmica
(interpretada), ou híbrida.

Em uma linguagem de tipo estático, o
compilador deve conhecer o tipo de uma
variável ou método antes da execução do
programa.
 Na linguagem compilada todo o texto do
programa é traduzido (compilado) de
maneira que as instruções possam ser
realizadas pelo computador. A linguagem
compilada
geralmente
gera
um
executável (como os famosos ".exe")


...ou
compiladas,
usualmente
fortemente tipificadas, geram um
código binário, específico para cada
máquina, aumentando a eficiência e
auxiliando
a
remover
erros
de
programação.

Ex.: C, Pascal

Normalmente não necessita de um passo
específico de compilação para executar
um programa. O código fonte escrito pelo
programador
pode
ser
executado
diretamente por um interpretador. Esse
interpretador lê trechos do código fonte
em tempo de execução, converte em um
formato que o computador consegue ler
(compilação em tempo de execução) e
realiza sua execução.

...ou interpretadas, normalmente são
fracamente
tipificadas,
fazem
a
verificação de tipo durante a execução
do
algoritmo,
aumentando
a
portabilidade e a usabilidade.

Ex.: PHP, Ruby, Javascript

Exemplo prático de declaração de uma
variável inteira com valor 10:
› C (tipo estático):
 int a = 10;
› Ruby (tipo dinâmico):
 a = 10;

Tem características únicas, como o
Java, por exemplo, que é compilado,
mas roda em uma máquina virtual C, ou
seja, o código binário pode ser
interpretado por qualquer dispositivo
que tenha a máquina virtual.

Ex.: Java e C#.

A
definição
de
fortemente
ou
fracamente tipada tem relação com
quão profundamente um sistema
verifica as operações que podem ser
feitas sobre uma estrutura de dados.
As operações são aplicadas para
estruturas de dados bem definidas e
cada operação define os tipos de
dados que deve receber.
 O sistema tem garantias sobre o
comportamento do programa.
 Ex.: Java, Pascal, C, C++

As operações são aplicadas para
qualquer estrutura de dados; porém,
essas operações podem falhar em
tempo de execução caso a estrutura
não suporte a operação.
 O sistema não tem garantias sobre o
funcionamento do programa.
 Ex.: Perl e Ruby


Exemplo de uma função que realiza a
soma de dois números, um inteiro e um
ponto flutuante, e devolve um resultado
em ponto flutuante:
› C (Fortemente tipada):
 float soma(float a, int b){
return a + b;
}
› Ruby (Fracamente tipada):
 def soma (a, b)
return a + b
end

São aquelas em que existe apenas um
tipo genérico ou mesmo nenhum tipo
de dados.

Não
existe
a
necessidade
transformação de tipos.

Ex.: Assembly
de
Capacidade que a linguagem tem para
determinar os tipos das variáveis tendo
em consideração o contexto em que
encontram-se. Desta forma não é
necessário especificar todos os tipos das
variáveis.
 Dependendo da linguagem, ela pode
ser automática, ou necessitar de
comandos.

public class InferenciaDeTipo {
public static void Main(String[] args) {
int valor1 = 10;
String valor2 = "Valor";
var permitido1 = 1;
var permitido2 = "Permitido";
}
}
Download