Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
LIC 2020
© Julio ArakakiCiência da Computação
1
Tipos de dados, Variáveis e Escopo
Prof. Julio Arakaki
Ciência da Computação
LIC 2020
© Julio ArakakiCiência da Computação
2
Tipos de dados X Linguagem de programação
25/02/2020 11:28
• Uma linguagem de programação é fortemente
tipada se erros de tipos são sempre detectados.
• Isso requer que os tipos de todos os operandos
possam ser determinados em tempo de
compilação ou em tempo de execução.
• A importância da tipagem forte está na habilidade
de detectar usos incorretos de variáveis que
resultam em erros de tipo.
LIC 2020
© Julio ArakakiCiência da Computação
3
Tipos de dados X Linguagem de programação
25/02/2020 11:28
• C e C++ não são linguagens fortemente tipadas,
porque ambas incluem tipos união que não são
verificados em relação a tipos.
• Java e C#, embora sejam baseadas em C++, são
quase fortemente tipadas. Os tipos podem ser
convertidos explicitamente, resultando em erros de
tipos.
LIC 2020
© Julio ArakakiCiência da Computação
4
Tipos de dados X Linguagem de programação
25/02/2020 11:28
• Tipos de dados não definidos em termos de outros
tipos, são chamados de tipos de dados primitivos.
• Praticamente todas as linguagens de programação
fornecem um conjunto de tipos de dados
primitivos.
LIC 2020
© Julio ArakakiCiência da Computação
5
Representação dos dados no computador
25/02/2020 11:28
• Exemplo: tipos primitivos da linguagem java:
LIC 2020
© Julio ArakakiCiência da Computação
6
Representação dos dados no computador
25/02/2020 11:28
• 1 bit pode ter valores simbólicos: 0 ou 1
• 1 byte equivale a 8 bits, ou seja, combinação de
valores entre: 00000000 a 11111111
LIC 2020
© Julio ArakakiCiência da Computação
7
Representação dos dados no computador
25/02/2020 11:28
• Tipos primitivos:
– Numéricos: inteiro, ponto flutuante, complexo
(Fortran, Python), decimais.
– Booleanos: em C utiliza-se numérico onde, valores
diferentes de zero são verdadeiros e igual a zero
são falsos. Na linguagem java existe o tipo
boolean,
– Caracteres: utilizam tabela ASCII e mais
recentemente o Unicode (neste caso, os primeiros
128 caracteres são os mesmos do ASCII). Permite
gerar cadeias de caracteres (“string”).
LIC 2020
© Julio ArakakiCiência da Computação
8
Representação dos dados no computador
25/02/2020 11:28
• Programas não “manipulam” somente números e
textos. Eles podem também utilizar dados
complexos (compostos) como registros, contas
bancárias, formas gráficas, ...
• As linguagens de programação oferecem meios de
representar (ou criar novos tipos) estes dado.
Como estruturas (C, C++) e classes (C++, Java, C#)
LIC 2020
© Julio ArakakiCiência da Computação
9
Variáveis x Tipos
25/02/2020 11:28
• Uma variável é uma abstração de uma célula de
memória
– Abstração é a ação ou efeito de abstrair, ou seja, de isolar
mentalmente um elemento ou uma propriedade de um todo,
para considerar individualmente. Do latim “abstracione”, que
significa “separação”.
– Abstração é a habilidade de concentrar nos aspectos
essenciais de um contexto qualquer, ignorando características
menos importantes ou acidentais. Em modelagem orientada a
objetos, uma classe é uma abstração de entidades existentes
no domínio do sistema de software. (Wikipedia)
LIC 2020
© Julio ArakakiCiência da Computação
10
Variáveis x Tipos
25/02/2020 11:28
• Num programa, as variáveis são utilizadas para
armazenar valores na memória do computador.
• As variáveis são caracterizados por atributos:
– um tipo, um nome e um conteúdo. Este conteúdo pode
ser alterado.
LIC 2020
© Julio ArakakiCiência da Computação
11
Variáveis x Tipos
25/02/2020 11:28
• Utiliza-se variáveis para armazenar dados que
poderão ser utilizados posteriormente (em outro
ponto do programa)
• O programador é responsável pela decisão sobre o
tipo e o nome da variável (identificador). O
conteúdo depende da aplicação.
LIC 2020
© Julio ArakakiCiência da Computação
12
Variáveis x Tipos (sintaxe)
25/02/2020 11:28
• Cada linguagem de programação possui a sua
própria sintaxe para a criação da variáveis.
Exemplo: em C, C++, Java e C#
<tipo> <nome1>, <nome2>, <nome3>, ...;
• Exemplo:
int x, y, z;
float mediaFinal, porcentagemLucro;
char opcao;
LIC 2020
© Julio ArakakiCiência da Computação
13
Variáveis x Tipos (sintaxe)
25/02/2020 11:28
• O nome (identificador) de uma variável, pode ter
letras, dígitos, caractere de sublinhado. Não podem
iniciar com dígitos.
• O programador deve decidir o nome de acordo
com o propósito da variável (mnemônico).
• O nome da variável não pode ter caracteres como
?,*,%, espaço e acentuação.
LIC 2020
© Julio ArakakiCiência da Computação
14
Variáveis x Tipos (sintaxe)
25/02/2020 11:28
• Por convenção, linguagens como java, os nomes
de variáveis sempre iniciam com minúsculas.
• Não pode ser utilizadas palavras reservadas da
linguagem para nomes de variáveis:
• Exemplos de palavras reservadas:
if, while, main, struct, class, print,
for, int, char, ...
LIC 2020
© Julio ArakakiCiência da Computação
15
Variáveis x Tipos (atribuição)
25/02/2020 11:28
• O operador (=) é utilizada para atribuir (alterar) o
valor da variável (C, C++, Java, C#).
int i = 10;
float areaCampo = 34.67f;
double pi = 3.1415;
...
i = 22; // altera o valor da variável i
• Algumas linguagens utilizam outros caracteres.
Por exemplo: x := 19 (em Pascal)
LIC 2020
© Julio ArakakiCiência da Computação
16
Variáveis x Tipos (coerção/”typecasting”)
25/02/2020 11:28
• Um tipo compatível ou é válido para o operador, ou
pode, dentro das regras da linguagem, ser
implicitamente convertido pelo código gerado pelo
compilador (ou pelo interpretador) em um tipo
válido.
• Essa conversão automática é chamada de coerção.
• Por exemplo, se uma variável int e uma variável
float são adicionadas em Java, o valor da variável
int sofre uma coerção para float e uma adição de
ponto flutuante é efetuada.
LIC 2020
© Julio ArakakiCiência da Computação
17
Variáveis x Tipos (coerção/”typecasting”)
25/02/2020 11:28
• Em Java, é válido atribuir um valor do tipo inteiro a
uma variável de ponto flutuante:
int dollars = 100;
double balance = dollars; // OK
double balance = 13.75;
int dollars = balance; // Erro
int dollars = (int) balance;
• Por exemplo, se balance for 13.75, então dollars
receberá o valor 13.
LIC 2020
© Julio ArakakiCiência da Computação
18
Variáveis x Tipos (vinculação)
25/02/2020 11:28
• Vinculação (“binding”): é a associação entre um
atributo e uma entidade, como entre uma variável e
seu tipo ou valor, ou entre uma operação e um
símbolo.
– O momento no qual uma vinculação ocorre é chamado de
tempo de vinculação.
LIC 2020
© Julio ArakakiCiência da Computação
19
Variáveis x Tipos (tempo de vinculação)
25/02/2020 11:28
Seja a atribuição: count = count + 5;
• O tipo de count é vinculado em tempo de
compilação.
• O conjunto dos valores possíveis de count é
vinculado em tempo de projeto do compilador.
• O significado do símbolo de operador + é vinculado
em tempo de compilação, quando os tipos dos
operandos tiverem sido determinados.
• O valor de count é vinculado em tempo de
execução dessa sentença.
LIC 2020
© Julio ArakakiCiência da Computação
20
Variáveis x Tipos (escopo)
25/02/2020 11:28
• O escopo de uma variável é a faixa de sentenças
nas quais ela é visível. Uma variável é visível em
uma sentença se ela pode ser referenciada ou
atribuída nessa sentença.
LIC 2020
© Julio ArakakiCiência da Computação
21
Variáveis x Tipos (escopo – exemplo java)
25/02/2020 11:28
public class TesteEscopo{
int y = 10;
public void metodo1() {
int y = -9;
System.out.println(y);
}
public void metodo2() {
y = 999;
System.out.println(y);
}
public static void main(String args[]){
TesteEscopo te = new TesteEscopo();
te.metodo1();
te.metodo2();
}
}
LIC 2020
© Julio ArakakiCiência da Computação
22
Exercícios/discussão
25/02/2020 11:28
• Por que utilizar variáveis na programação?
• Defina uma linguagem fortemente tipada.
• O que são tipos primitivos em uma linguagem de programação?
• Explique:
➢ Coerção;
➢ Vinculação;
➢ Tempo de vinculação e;
➢ Escopo.
LIC 2020
© Julio ArakakiCiência da Computação
23
Exercícios/discussão
25/02/2020 11:28
• Qual a resposta do código abaixo?...
void testeDouble(){
float x = 3.14f;
double y = 3.14;
if (x == y) {
System.out.printf("%f e %f Sao iguais!!", x, y);
} else {
System.out.printf("%f e %f Nao sao iguais!!", x, y);
}
}
...
LIC 2020
© Julio ArakakiCiência da Computação
24
Referência Bibliográfica
1. Sebesta, Robert. “Conceitos de Linguagem de Programação”, 11a.
Ed. Porto Alegre, Bookman, 2018.
2. Horstmann, Cay, “Conceitos de Computação com Java”. 5a. Ed. –
Dados eletrônicos – Porto Alegre, Bookman, 2009.
25/02/2020 11:28