Prévia do material em texto
•
=i·
INSTITUTO FEDERAL
SANTA. CATARINA
Nomes, Identificadores e
Tipagem de Dados
Linguagens e Paradigmas de Programação
Prof. Vilson Heck Junior
Material: Prof. Wilson Castello Branco Neto
INSTITUTO FEDERAL
SAHTA CATARINA Conteúdo
Nomes ou identificadores
Tipagem estática e dinâmica
Tipagem forte e fraca
Objetivos:
• Entender sobre nomes e identificadores em linguagens;
• Conhecer os conceitos de tipagem estática e dinâmica;
• Diferenciar tipagem forte de fraca;
• Relacionar tipos primitivos e compostos;
• Praticar exemplos de tipagem estática, dinâmica, forte e
fraca em diferentes linguagens de programação;
INSTITUTO FEDERAL
s.on~ CATARINA Leituras
• Leitura Obrigatória:
TUCKER, A. B.; NOONAN, R. E.; Linguagens de
programação: principios e paradigmas. 2. ed. São Paulo:
McGrall-Hill, 2009. Capítulo 2 (Exceto 2.5). Capítulo 5 (5.1 ao
5.4).
SEBESTA, R. W.; Conceitos de linguagens de
programação. 9. ed. Porto Alegre: Bookman, 2011. Capítulo
5. Capítulo 6 (Entrevista LUA páginas 302 e 303).
• Leitura Complementar:
TUCKER, A. B.; NOONAN, R. E.; Linguagens de
programação: princípios e paradigmas. 2. ed. São Paulo:
McGrall-Hill, 2009. Capítulo 2, (2.5) e Capítulo 3.
SEBESTA, R. W.; Conceitos de linguagens de
programação. 9. ed. Porto Alegre: Bookman, 2011. Capítulo
3. Capítulo 6.
·s:
• INSTITUTO FEDERAL
SAHTA CATARINA
101010
Nomes ou Identificadores
Nomes, Identificadores e Tipagem de Dados
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
int quantidade;
int sorna(int a, int b)
{
return a + b;
}
••• • ••
• INSTITUTO FEDERAL
SANTA CATARINA
10 ~ª
Nomes ou Identificadores
Para criar os identificadores, todas as linguagens
devem responder às perguntas abaixo:
1. Quais as regras para formação dos nomes?
2. Os nomes são sensíveis à capitalização?
3. Os termos especiais são palavras reservadas?
~-·
·=· INSTITUTO FEDERAL SANTA CATARINA. Nomes ou Identificadores
como os nomes podem ser
permitem o uso de símbolos
especiais na definição dos nomes dos
identificadores e outras não;
• PHP - nomes de variáveis iniciam com $:
• $nome = "IFSC";
• e c h o $nome;
•
••• •• INSTITUTO FEDERAL
SANTA CATA.ftlt4A Nomes ou Identificadores
• Perl - $ (escalar}, @ (vetor) ou % (hash) no início do
nome especificam o seu tipo:
• @cidades = ( "Lages", "Florianópoli s",
''Correi a Pi nt o'' ) ;
• p rint "$cid ades [ O] \ n";
• p rint "$cid ades [ l ] \ n";
• p rint "$cid ades [ 2] \ n";
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
Regras léxicas definem como os nomes podem ser
• formados:
• Ruby - @ ou @@ indicam se é uma variável de
instância ou variável de classe;
• As primeiras linguagens só usavam letras maiúsculas e
possuíam restrição quanto ao tamanho do nome - Seis
caracteres no caso do FORTRAN.
• O FORTRAN95 restringe a 31 caracteres seus nomes;
• C não tem restrição para os nomes internos, mas
apenas os 63 primeiros caracteres são significativos e
nomes externos também são restritos a 31 caracteres;
Java, C# e Ada não tem limitação de tamanho;
INSTITUTO FEDERAL
SAN TA CATARINA Nomes ou Identificadores
• Pascal e Ada não diferenciam entre maiúsculas e
minúsculas, C, C++ e Java sim;
• Quais as vantagens de fazer ou não esta
diferenciação?
• Prejudica a legibilidade;
• Dificulta a escrita (Ex. parselnt);
• Força a padronização;
• Permite a associação de nomes semelhantes
com diferentes capitalizações;
INSTITUTO FEDERAL
SANTA CATAR HA Nomes ou Identificadores
identificadores definidos como palavras
Exemplo.
•••
==· INSTITUTO FEDERAL
SAllTA CATARINA Nomes ou Identificadores
mais
células de memória que possui:
• Nome;
• Endereço;
• Valor;
• Tipo;
• Escopo;
• Tempo de vida.
11:
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
• Indica o local da memória da máquina ao qual a
variável está associada;
• Uma mesma variável pode representar diferentes
posições de memória em diferentes partes da
execução;
• Diferentes variáveis podem indicar o mesmo
u.:~ ;j! endereço de memória.
ft • !•
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
Valor de uma variável (r-value)?
~ • Conteúdos da(s) célula{s) de memória associadas
à variável;
• Células abstratas são diferentes de células físicas
(1 byte);
Tipo de uma variável?
• Define a faixa de valores que a variável pode
armazenar, o número de células de memória que
ela utiliza e o conjunto de operadores que podem
ser aplicados sobre ela. Exemplo em C++:
• • Nomes ou Identificadores
int *numeres= NULL;
int qtd = O;
cout << "Informe a quantidade de numeres : 11 ;
cin >> qtd;
cin . ignore () ;
numeras = new int [qtd] ;
for (int i = O; i < qtd; i++J
numeros [ i ] = 1.;
cout << 11 End . de numeres : " << (long) numeros << endl;
cout << "End . de numeros[ l ] : " << (long) &numeros [ l] << endl;
cout << "Pressio ne enter para f i nalizar" ;
cin . get () ;
return O;
~-·
·=· INSTITUTO FEDERAL SANTA CATARINA. Nomes ou Identificadores
comandos) se ela for declarada dentro dele;
• Uma variável é não local a um escopo se ela for
acessível aos comandos, mesmo não sendo
declarada dentro dele.
• Em linguagens de programação, o escopo de
variáveis pode ser estático ou dinâmico.
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
encontrada em seu ancestral, até o bloco de código
mais abrangente Caso não seja encontrada em
nenhum deles, um erro é gerado;
• Esta avaliação é mais complicada em linguagens que
permitem subprogramas aninhados (Pascal, Ada
Javascript, PHP, etc).
INSTITUTO FEDERAL
SIIHTA CATARIH•
Program Su b p r og ramasAni nhado s (out put) ;
var
x : integer;
procedure Sub l ;
var
x: i n teger;
begin
X := 5;
end;
procedure Sub2;
var
x: i n teger;
begin
X := 8 ;
end;
begin
X:= 10 ;
Subl;
Sub 2 ;
writeln( 'Resul tad o:
end.
x ) ;
INSTITUTO FEDERAL
SAHTA CATARINA Nomes ou Identificadores
de blocos
• C e C++ permitem a redeclaração de variáveis nos
blocos com os mesmos nomes das variáveis dos
blocos que os englobam;
• Java e C# não?
• Algumas linguagens exigem que a declaração seja feita
no início dos módulos e outras, como C99, C++, Java e
C# não.
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
sendo acessível a todas elas (C, C++, PHP e Python).
• Seu valor é acessível a todas as funções, exceto
aquelas que declaram uma variável local com o mesmo
nome;
• Em C++ pode-se utilizar o operador de escopo : para
acessar variáveis globais em funções com variáveis
locais homônimas.
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
chamada dos subprogramas, o que pode variar entre
uma execução e outra;
• APL e as primeiras versões de LISP utilizavam escopo
dinâmico;
• Perl e Common LISP permitem a declaração de
variáveis com escopo dinâmico, embora o padrão seja
estático.
• No próximo slide é apresentado um exemplo utilizando
Perl:
INSTITUTO FEDERAL
SIIHTA CATARIH•
!%-=-
$nome = "IFSC";
&mostraNome () ;
&myFuncao( ) ;
&localFuncao () ;
s ub mostraNome {
prin t "Nome : Snome\ n" ;
sub myFuncao (
my $nome = "UFSC";
print "Nome myFuncao : $nome\ n";
&mostraNome () ;
sub local Funca o {
local $nome = "UDESC";
print "Nome localFuncao: $n ome \ n ";
&mostraNome () ;
r=~~--------------------------~
INSTITUTO FEDERAL
SANTA CATARINA Nomes ou Identificadores
são menos
parâmetros entre subprogramas;
• Erro no livro do SEBESTA, página 255, parágrafo 4,
linha 2.Onde está
• "os programas em linguagens com escopo
dinâmico são mais fáceis de ler. . .", deveria ser
estático.
• • 1!•
INSTITUTO FEDERAL
SAHTA CATAIUNA Nomes ou Identificadores
ser definido
como o tempo de sua existência em memória.
• De maneira geral o escopo e o tempo de vida de uma
variável estão relacionados;
• A chamada a funções modifica esta relação;
• Modificadores em C, C++ e PHP, como a palavra
static, também alteram esta relação.
• Exemplo de uso de static para variáveis no próximo
slide, para a linguagem C++:
• ••
•••
•• INSTITUTO FEDERAL
S.\NTA CATAfllHA
~
1C.::. !'il-'5-~
#include <iostream>
using namespace std ;
int con t ()
{
static int X - O;
x++;
return x;
}
int ma in ()
{
cout << c ont () <<
cout << c ont () <<
cout << c ont () <<
return O;
}
e nd l;
e nd l;
e nd l;
Tente também
removendo static
INSTITUTO FEDERAL
SAtlTA CATARINA Nomes ou Identificadores
• É um nome vinculado a um valor apenas uma vez;
• Possibilitam a parametrização do programa, facilitando
a sua manutenção e melhorando sua legibil idade e
confiabilidade;
• Algumas linguagens (como Pascal e Fortran} permitem
apenas a utilização de valores constantes, enquanto
outras (como C++ e Ada) permitem expressões;
#include <iostream>
INSTITUTOFEDERAL using namespace std ;
SANTA CATAR HA
!!ti
int X = 5;
const int y = x + 2;
int main ()
{
}
X = 10 ;
cout << "Resulta d o : "<< y << endl;
return O;
~ ~-----------------------~
•
••• •• INSTITUTO FEDERAL
SANTA CATA.ftlt4A Nomes ou Identificadores
Em dife rentes linguagens:
• C/C++ - const·
'
• Pascal - const;
• Java - final;
• C# - conste readonly;
• Ada - constant;
·s:
• INSTITUTO FEDERAL
SAHTA CATARINA
101010
Tipagem de Dados
Nomes, Identificadores e Tipagem de Dados
~-·
·=· INSTITUTO FEDERAL SANTA CATARINA. Tipagem de Dados
• Tipo de dado:
• Um tipo é um conjunto de valores e um
conjunto de operações sobre estes valores.
.1:
•• INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
• Erro de tipo:
• Qualquer erro que surja porque uma operação
é tentada sobre um tipo de dado para o qual
ela não está definida.
• Sistema de tipos:
• Definição precisa das associações entre o tipo
de uma variável, seus valores e as operações
possíveis sobre esses valores.
••• • ••
• INSTITUTO FEDERAL
SANTA CATARINA
10 ~ª
Tipagem de Dados
representar todas as
informações (Primeiras versões do Fortran);
• COBOL permitiu a definição da precisão de dados
decimais e criou os registros;
• PUI melhorou a flexibilidade dada pelo COBOL e
apresentou diversos novos tipos;
• ALGOL 68 fornece alguns tipos básicos e
operadores para a definição de novos tipos (novas
estruturas - POO).
:1:
•• INSTITUTO FEDERAL
S.\NTA CATAfllHA Tipagem de Dados
Toda linguagem de programação implementa um
dos formatos de tipagem abaixo:
• Tipagem estática;
• Tipagem dinâmica;
INSTITUTO FEDERAL
SAtlTA CATARINA Tipagem de Dados
mudam durante a execução do programa. Exemplos
de linguagens:
• e
• Java
• Ada
INSTITUTO FEDERAL
SANTA CATAfl!N.\ Tipagem de Dados
• Perl
• Python
• PHP
• Javascript
•
••
==· INSTITUTO FEDERAL
SIINTA CATARINA Tipagem de Dados
Tipagem dinâmica:
·~~ A tipagern dinâmica também é conhecida corno
rit:. "Duck Typing" , ou a tipagern do pato. Este nome é
atribuído a James Whitcornb Riley, que certa vez
exemplificou da seguinte forma:
• "Quando eu vejo um pássaro que caminha como
um pato, nada como um pato e grasna como um
pato, eu chamo aquele pássaro de pato."
•••
=··
Tipagem de Dados
INSTIT
SAH Tipagem dinâmica • Exemplo JavaScript:
<p i d = "said a 11 > </ p>
<s c ript>
var x ; //undefined
x = 1 0.5; //nwrber
x = º Instituto Federal de Santa Catarina" ; //string
x = true; //bool ean
x = function () {} ; //function
x = null ; //object
document . g e t El ementBy l d("saida" ) . innerHTML = x ;
//ver typeof
</ script>
••• • ••
• INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
Comparação:
Quesito lipagem estática 1ipagem dinâmica
Velocidade de execução Maior Menor
Verificação por erros Compilação Execução
Simplicidade de escrita Menor Maior
Maior Menor
10 ~ª
•
•••
•• INSTITUTO FEDERAL
SAHTA CATARINA Tipagem de Dados
ou estática, ela pode ter diferentes níveis de exigência
no que diz respeito ás operações realizadas nos tipos
dos dados envolvidos.
Quanto mais exigente a linguagem for, em relação
às regras das operações que envolvam diferentes
tipos de dados, mais fortemente tipada será esta
linguagem.
INSTITUTO FEDERAL
SANTA CATAfl!N.\
~ !-S
'~
Tipagem de Dados
double x = 2 . 5;
i nt y = 3;
int res = x + y;
cout << res << endl; //Para C++
System.out.println(res); //Para Java
Este código já foi implementado em aula anterior.
• 11•
INSTITUTO FEDERAL
S.A.NTA CATARINA Tipagem de Dados
id=11 s aida 11 > </ p>
<script>
var x = 1110" ;
var z = -x;
document . g e tElementByid( 11saida11 ) . innerHTML = z;
</ script>
INSTITUTO FEDERAL
SANTA CATAfl!N.\ Tipagem de Dados
10;
Sy = "20 11 ;
echo "x eh " gettype (Sx ) PHP_EOL;
echo "y eh " gettype(Sy) PHP_ EOL;
Sz = Sx + Sy;
echo "Resultado(x+y): Sz" . PKP EOL;
Como fazer para concatenar, ao invés de somar?
;1:
INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
Força de tipagem:
É importante observar que não há 100% de consenso
entre diferentes autores no momento de comparar todas as
linguagens de programação e dizer qual é mais fortemente
tipada que outra.
Os principais critérios para tornar uma linguagem
"fracamente tipada", são
• Conversão implícita;
• Exposição de ponteiros como valores numéricos;
• Unions sem marcação;
• Falta de verificações de erros (tipagem estática);
lil
i.:::::. !;-!';! • Tipagem dinâmica;
~
•
·=· •• INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
doub1e y = 2. 6 ;
int x = y; //Conversão imp1ícita
• Java:
doub1e y = 2. 6 ;
int x = (doub1e)y; //Conv. exp1ícita
••• • ••
• INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
Força de Tipagem • Ponteiros numéricos • exemplo:
• C++:
int *ptr = new int [lO J;
int *atual = ptr, *fim =
~ while {atual<= fim) {
&ptr[9 ] ;
~ cout << "End: " <<atual<< " '' <<*atual << endl;
atual++;
~'-------------------------------'
10 ~ª
·s:
• INSTITUTO FEDERAL
SAHTA CATARINA Tipagem de Dados
Cada linguagem de programação é livre para escolher
os nomes e tamanhos de dados que julgar adequado
Independente das escolhas, um conjunto mínimo de tipos
primitivos deve existir. Exemplo C e Java:
• Inteiro: short (2), int (4) e long(8);
• Real: float(4) e double(8);
• Caractere char(1 em C++ e 2 em Java);
• Booleano boolean(1 em Java) bool(1 em C++);
Em Java os tamanhos são fixos. Em algumas
linguagens, como C, C++ e Pascal, os tamanhos podem
R::~ ~ ser definidos pelo compilador.
INSTITUTO FEDERAL
SANTA CATARINA Tipagem de Dados
Quanto é 2.147.483.647 + 1?
• Algumas linguagens geram interrupção, outras não.
• Este problema se agrava em números de ponto
flutuante que são armazenados em notação científica:
• Ex 1432 = 1,432 X 103
A representação de dados numéricos e os erros associados a elas
são abordados com maiores detalhes em cálculo numérico.
:1:
•• INSTITUTO FEDERAL
S.\NTA CATAfllHA Tipagem de Dados
descrever que um determinado símbolo, comando, função
ou operador pode ser uti lizado para tarefas diferentes.Um operador é dito sobrecarregado quando o seu
significado varia conforme o tipo dos seus operandos ou
resultado.
Operadores que aceitam números inteiros ou reais e
retornam números inteiros ou reais
• + • I
·s:
• INSTITUTO FEDERAL
SAHTA CATARINA Tipagem de Dados
realizar uma operação aritmética.
É responsabilidade da linguagem de programação
converter "seja lá o que o programador escreveu' para algo
executável pelo processador
Então, a verificação de tipos consiste em anal isar se os
tipos de operandos são aceitos pelos operadores.
INSTITUTO FEDERAL
s.on~ CATARINA Tipagem de Dados
registradores.
registradores
compatíveis podem ser utilizados para realizar uma operação
aritmética.
É responsabilidade da linguagem de programação converter
"seja lá o que o programador escreveu' para algo executável pelo
processador.
Então, a verificação de tipos consiste em analisar se os tipos
dos operandos são aceitos pelos operadores:
int a;
float b, e;
e= a+ b;
·s:
• INSTITUTO FEDERAL
SAHTA CATARINA Tipagem de Dados
e usavam a tabela
que ocupa 1 byte e
• Linguagens mais atuais, como o Java, usa
UNICODE (UTF-16). Atualmente existe a UTF-32
que representa mais de 100 mil símbolos
diferentes.
•
11:
INSTITUTO FEDERAL
SAHTA rATA.RINA Tipagem de Dados
• Enumerações: possibilitam a associação de
nomes a uma série de valores inteiros;
• Facilitam a legibilidade do código e reduzem a
chance de erro.
No próximo slide é exibido um exemplo de enum na
linguagem C++ .
IN
••• ••• Tipagem de Dados
enum Cor {vermelh o = 1, verde, azul};
int main () {
Cor escolh i d a = azul;
switch (escolhida) {
case vermelho:
cout << "Pintar de vermelho: " <<escolhida<< endl;
break;
case verde :
cout << ºPintar de verde: " <<escolhida<< endl;
break;
case azul:
cout << ºPintar de azul: 11 <<escolhi da << endl;
break;
default :
cout << "Cor não reconhecida\n" ;
break;
return O;
11:
INSTITUTO FEDERAL
SANTA CATAR NA Tipagem de Dados
Vetores/Arrays: ~ Todas as linguagens oferecem mecanismos, com
trabalhar com conjuntos de dados variações, para
indexados:
• C/C++ os índices variam de O até N-1;
• Fortran de 1 até N;
• Em Pascal e Ada o programador é quem define.
• Algumas linguagens como Java e C permitem a definição do
tamanho do vetor em tempo de execução, mas uma vez
criado, este tamanho não pode ser mudado.
• C/C++ o vetor é acessível através de ponteiros.
INSTITUTO FEDERAL
SA>lTA CATAR NA Tipagem de Dados
• Em C string é tratado como vetor de caractere:
• char c;
• char nome(10];
• Em C++ há uma classe string.
•
11:
INSTITUTO FEDERAL
SAHTA rATA.RINA Tipagem de Dados
quais são acessados pelos seus nomes (campos);
• Java não suporta estruturas diretamente,
tratando-os como uma classe;
• Diferem das classes pois possuem apenas os
campos (atributos) mas não possuem métodos e
outras características inerentes das classes na
POO:
• Exceção: C# permite a implementação de
funções em estruturas;
Tipagem de Dados
---·-- ·- ----------------------------,
struct pessoa {
string nome;
int idade;
main ()
pessoa p;
cou t << "Digite o nome: 11 ;
cin >> p.nome;
cou t << "Digite a idade : 11 ;
cin >> p . i dade;
Exemplo de
estrutura em C++
cou t << "Você cadastrou: " << p.nome;
cou t << 11 Idade : " << p . i dad e << endl;
return O;
Tipagem de Dados
.,,,._.,., .. _""_"" _______________________________ ~
Program Cadastro (output ) ;
type
var
pessoa= Record
nome: string;
idade: i nteger;
End;
p : pessoa;
begin
write ( ' Digite o nome: ' );
read (p . nome ) ;
write ( ' Digite a idade : 1 ) ;
read (p . i dad e ) ;
write ( 'Você cadastrou: p . nome ) ;
writeln ( '. Idade : ' , p . idade) ;
end.
Exemplo de
registro em Pascal
INSTITUTO FEDERAL
Si\HT,\ CATARINA Conclusão
Em essência, na computação tudo se resume a
números em bits;
A flexibilidade dada ao programador, durante o
desenvolvimento, é implementada sempre pela
linguagem de programação;
• Diferentes linguagens implementam diferentes
tipos de dados;
O tipo de dado de uma variável pode ser estático
ou dinâmico;
• As linguagens implementam características que as
ll:::~ ~!'! definem como fortemente ou fracamente tipadas.
Nome Identificadores e Tipagens (1)
Nome Identificadores e Tipagens (2)
Nome Identificadores e Tipagens (3)
Nome Identificadores e Tipagens (4)
Nome Identificadores e Tipagens (5)
Nome Identificadores e Tipagens (6)
Nome Identificadores e Tipagens (7)
Nome Identificadores e Tipagens (8)
Nome Identificadores e Tipagens (9)
Nome Identificadores e Tipagens (10)
Nome Identificadores e Tipagens (11)
Nome Identificadores e Tipagens (12)
Nome Identificadores e Tipagens (13)
Nome Identificadores e Tipagens (14)
Nome Identificadores e Tipagens (15)
Nome Identificadores e Tipagens (16)
Nome Identificadores e Tipagens (17)
Nome Identificadores e Tipagens (18)
Nome Identificadores e Tipagens (19)
Nome Identificadores e Tipagens (20)
Nome Identificadores e Tipagens (21)
Nome Identificadores e Tipagens (22)
Nome Identificadores e Tipagens (23)
Nome Identificadores e Tipagens (24)
Nome Identificadores e Tipagens (25)
Nome Identificadores e Tipagens (26)
Nome Identificadores e Tipagens (27)
Nome Identificadores e Tipagens (28)
Nome Identificadores e Tipagens (29)
Nome Identificadores e Tipagens (30)
Nome Identificadores e Tipagens (31)
Nome Identificadores e Tipagens (32)
Nome Identificadores e Tipagens (33)
Nome Identificadores e Tipagens (34)
Nome Identificadores e Tipagens (35)
Nome Identificadores e Tipagens (36)
Nome Identificadores e Tipagens (37)
Nome Identificadores e Tipagens (38)
Nome Identificadores e Tipagens (39)
Nome Identificadores e Tipagens (40)
Nome Identificadores e Tipagens (41)
Nome Identificadores e Tipagens (42)
Nome Identificadores e Tipagens (43)
Nome Identificadores e Tipagens (44)
Nome Identificadores e Tipagens (45)
Nome Identificadores e Tipagens (46)
Nome Identificadores e Tipagens (47)
Nome Identificadores e Tipagens (48)
Nome Identificadores e Tipagens (49)
Nome Identificadores e Tipagens (50)
Nome Identificadores e Tipagens (51)
Nome Identificadores e Tipagens (52)
Nome Identificadores e Tipagens (53)
Nome Identificadores e Tipagens (54)
Nome Identificadores e Tipagens (55)
Nome Identificadores e Tipagens (56)
Nome Identificadores e Tipagens (57)
Nome Identificadores e Tipagens (58)
Nome Identificadores e Tipagens (59)