| | | | |

2.3 Dados

Compre o e-book deste material aqui!

Informação é resultante do processamento, manipulação e organização de dados (altura, quantidade, volume, intensidade, densidade, etc.). Programas de computadores processam, manipulam e organizam dados computacionais. Os dados computacionais são representações em máquina de dados “reais”. De certa forma, todo dado é uma abstração e, para ser utilizado em um programa de computador, precisa ser representado em máquina.

Cada dado manipulado em um programa é identificado por um nome, chamado de identificador. Podem ser variáveis, constantes, funções/métodos, entre outros.

  • Variável

    Objetos de um programa que armazenam dados que podem mudar de valor durante a sua execução.

  • Constantes

    Objetos de um programa que não mudam de valor durante a sua execução.

  • Funções e métodos

    Subprogramas definidos e executados em um programa.

2.3.1 Identificadores

Um identificador é um nome atribuído para a identificação inequívoca de dados que são manipulados em um programa.

Exemplo 2.3.1.

Vamos desenvolver um programa que computa o ponto de interseção da reta de equação

y=ax+b (2.8)

com o eixo x (consulte a Figura 2.3).

Refer to caption
Figura 2.3: Esboço da reta de equação y=ax+b, com a=2 e b=1.

O ponto x em que a reta intercepta o eixo das abscissas é

x=ba (2.9)

Assumindo que a=2 e b=1, segue um algoritmo para a computação.

  1. 1.

    Atribuir o valor do coeficiente angular

    a2. (2.10)
  2. 2.

    Atribuir o valor do coeficiente linear

    b1. (2.11)
  3. 3.

    Computar e armazenar o valor do ponto de interseção com o eixo x

    xba. (2.12)
  4. 4.

    Imprimir o valor de x.

No algoritmo acima, os identificadores utilizados foram: a para o coeficiente angular, b para o coeficiente linear e x para o ponto de interseção com o eixo x.

Em Python, os identificadores são sensíveis a letras maiúsculas e minúsculas (em inglês, case sensitive), i.e. o identificador nome é diferente dos Nome, NoMe e NOME. Por exemplo:

1>>> a = 7
2>>> print(A)
3Traceback (most recent call last):
4  File "<stdin>", line 1, in <module>
5NameError: name 'A' is not defined. Did you mean: 'a'?

Para melhorar a legibilidade de seus códigos, recomenda-se utilizar identificadores com nomes compostos que ajudem a lembrar o significado do dado a que se referem. No exemplo acima (Exemplo 2.3.1), a representa o coeficiente angular da reta e um identificar apropriado seria coefAngular ou coef_angular.

Identificadores não podem conter caracteres especiais (*, &, %, @, etc.), espaços em branco e começar com número. As seguintes convenções para identificadores com nomes compostos são recomendadas:

  • lowerCamelCase: nomeComposto

  • UpperCamelCase: NomeComposto

  • snake: nome_composto

Observação 2.3.1.

(Identificadores Reservados.) As seguintes palavras-chave (keywords) são identificadores pré-definidos e reservados:

  False   await     else     import    pass
  None    break     except   in        raise
  True    class     finally  is        return
  and     continue  for      lambda    try
  as      def       from     nonlocal  while
  assert  del       global   not       with
  async   elif      if       or        yield
Exemplo 2.3.2.

O algoritmo construído no Exemplo 2.3.1 pode ser implementado como segue:

1coefAngular = 2
2coefLinear = -1
3intercepEixoX = -coefLinear/coefAngular
4print(intercepEixoX)

2.3.2 Alocação de Dados

Como estudamos acima, alocamos e referenciamos dados na memória do computador usando identificadores. Em Python, ao executarmos a instrução

1x = 1

estamos alocando, na memória do computador, um objeto com valor 1 e x é uma referência para este dado. Pode-se imaginar a memória computacional como um sequência de caixinhas, de forma que x será a identificação da caixinha onde o valor 1 foi alocado.

[Uncaptioned image]

Em Python, dados têm identidades próprias. Assim, quando executamos a instrução

1y = x

o identificador y passa a referenciar o mesmo local de memória de x.

[Uncaptioned image]

Na sequência, se atribuirmos um novo valor para x

1x = 2

este será alocado em um novo local na memória e x passa a referenciar este novo local.

[Uncaptioned image]

Ainda, se atribuirmos um novo valor para y

1y = 3

este será alocado em um novo local na memória e y passa a referenciar este novo local. O local de memória antigo, em que o valor 1 está alocado, passa a ficar novamente disponível para o sistema operacional.

[Uncaptioned image]
Observação 2.3.2.

O método Python id retorna a identidade de um objeto, seu registro único e constante durante sua alocação no código.

1x = 1
2print('id(x) =', id(x))
id(x) = 139779845161200
1y = x
2print('id(y) =', id(y))
id(y) = 139779845161200
1x = 2
2print('id(x) =', id(x))
3print('id(y) =', id(y))
id(x) = 139779845161232
id(y) = 139779845161200
1y = 3
2print('id(y) =', id(y))
id(y) = 139779845161264
Exemplo 2.3.3.

(Permutação de Variáveis/Identificadores.) Em várias situações, faz-se necessário permutar dados entre dois identificadores. Sejam

1x = 1
2y = 2

Agora, queremos permutar os dados, ou seja, queremos que y tenha o valor 1 e x o valor 2. Podemos fazer isso utilizando uma variável auxiliar (em inglês, buffer).

1z = x
2x = y
3y = z

Verifique!

2.3.3 Exercícios

E. 2.3.1.

Complete as lacunas.

  1. a)

    Programas de computadores processam, manipulam e organizam dados.

  2. b)

    Um identificador é o nome atribuído para a identificação inequívoca de dados em um código computacional.

  3. c)

    Objetos de um programa que armazenam dados que podem mudar de valor durante a execução do código são chamados de variáveis.

  4. d)

    Objetos que não mudam de valor durante a execução do código são chamados de constantes.

  5. e)

    Função/método é um subprograma definido e executado em um programa.

Resposta.

a) dados. b) identificador. c) variáveis. d) constantes. e) função/método.

E. 2.3.2.

Proponha identificadores adequados à linguagem Python baseados nos seguintes nomes:

  1. a)

    Área

  2. b)

    Perímetro do quadrado

  3. c)

    Cateto+Cateto

  4. d)

    Número de elementos do conjunto A

  5. e)

    77 lados

  6. f)

    f(x)

  7. g)

    x2

  8. h)

    13x

Resposta.

a) area; b) perimetroQuad; c) somaCatetos; d) numElemA; e) lados77; f) fx; g) x2; h) xv13

E. 2.3.3.

No Exemplo 2.2.1, apresentamos um código Python para o cálculo da área de um triângulo. Reescreva o código trocando seus identificadores por nomes mais adequados.

Resposta.
1base = float(input('Informe o valor da base.\n'))
2altura = float(input('Informe o valor da altura.\n'))
3# cálculo da área
4area = base * altura /2
5print(f'Área = {area}')
E. 2.3.4.

O seguinte código Python tem um erro/bug:

1x = 1
2y = X + 1

Identifique-o e apresente uma nova versão do código corrigido.

Resposta.

Erro: variável X não foi definida.

1x = 1
2y = x + 1
E. 2.3.5.

Faça uma representação gráfica da alocação de memória que ocorre para cada uma das instruções Python que seguem:

1x = 1
2y = 2
3z = x
4x = y
5y = z
Resposta.
[Uncaptioned image]
E. 2.3.6.

No Exemplo 2.3.3 fazemos a permutação entre as variáveis x e y usando um buffer z para guardar o valor de x. Se, ao contrário, usarmos o buffer para guardar o valor de y, como fica o código de permutação entre as variáveis?

Resposta.
1x = 1
2y = 2
3z = y
4y = x
5x = z

Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!