Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivo da Unidade:
📄 Contextualização
📄 Material Teórico
📄 Material Complementar
📄 Referências
📄 Contextualização
Página 1 de 4
Imagine que precisamos implementar um jogo de nave espacial. E queremos que ao movimentar
a nave, nuvens de fumaça saiam de trás da nave.
As nuvens são objetos que têm tamanhos, cores e sombras diferentes, porém possuem a mesma
característica.
Figura 1
Fonte: Getty Images
Reflita
Que tipo de dados podemos usar para representar a nuvem?
Podemos usar uma lista linear para criar as nuvens? Que tipos de
instruções podemos usar para simular as nuvens?
📄 Material Teórico
Página 2 de 4
Introdução
O que é um jogo digital? Um jogo não passa de um programa. E o que é um programa? Entrando
em um nível mais baixo, um programa está dividido em dados e nas instruções que manipulam
esses dados.
Para organizar os dados temos a Estrutura de Dados e para a manipulação deles, temos os
Algoritmos.
Todo programa que você escreve trabalha com dados de alguma forma. A unidade básica de
informação dentro da memória do computador é o bit (binary digit), que são representados por 0
ou 1. Obviamente que com um único bit não poderíamos representar muita informação, porém,
agrupados podem representar uma enorme quantidade e variedade de informações. Surge o
conceito de byte, que é o conjunto de 8 bits.
Como regra geral, são necessários n bits para representar 2^n estados. Os dígitos 0 e 1 são
utilizados para cada estado possível de um bit. Assim, vários bits são indicados por uma
sequência de 0s e 1s. No entanto, nenhum elemento da sequência indica que esta representa um
dado em particular. Por exemplo, pode-se representar um inteiro ou um caractere com um
conjunto de bits, mas a interpretação depende do criador do conjunto e não dos seus elementos.
Tipos de Dados
É um conjunto de valores que uma constante, variável ou expressão podem assumir, ou então, a
um conjunto de valores que possam ser gerados por uma função. Um tipo de dados pode ser
entendido também como um método para interpretar os padrões de bits em memória. No
entanto, pode ser visto de uma perspectiva totalmente diferente, não mais em relação às funções
implementadas eletronicamente no computador, mas em relação ao ponto de vista do usuário e
das suas expectativas
processador. Os tipos de dados primitivos ou básicos são aqueles a partir dos quais podemos
definir os demais tipos ou organizações de informações, quase sempre mais complexas. Estes
tipos de dados primitivos ou básicos são implementados e manipulados pelos compiladores: o
compilador é o responsável do armazenamento e processamento (operações) destes tipos de
Tabela 1
Soma, subtração,
multiplicação, divisão,
Idade, ano, dia,
Inteiro igualdade, etc. Usado para
número de filhos
representar valores que não
podem ter casas decimais.
Igualdade, concatenação,
etc. Usado para
Nome, endereço,
informações armazenadas
Caracteres cargo
como uma sequência de
ocupacional.
caracteres contáveis de
objetos
Igualdade, soma,
FrenteFila,
subtração, etc. Armazenam
Ponteiro primeiro,
um endereço da memória
próximo.
do computador.
Um exemplo de vetor (unidimensional), pode ser escrito em C, BASIC ou Pascal sobre a base dos
tipos de dados primitivos (Ex. tipos primitivos: integer em Pascal ou BASIC, int na linguagem C):
Abstração
Um computador é uma máquina fantástica. Com sua ajuda foi possível ao homem pousar na lua,
iniciar expedições exploratórias interplanetárias, mapear o genoma humano, etc. Entretanto, o
computador por si só não é onipotente. Ele ainda tem sérias limitações físicas para a
complexidade do mundo real. De fato, nosso mundo está cheio de sutilezas e de ricos detalhes
que não podem ser inseridos ou representados em computador.
Devido a essas limitações é necessário que utilizemos a abstração. É abstraindo nossa realidade
que podemos capturar o que existe de mais relevante em uma situação real, tornando possível a
construção de modelos que podem ser implementados nos computadores por meio de uma
linguagem de programação.
Utilizamos os tipos de dados quando precisamos declarar variáveis ou objetos para os nossos
programas. Variáveis podem ser tanto tipos primitivos, tipos estruturados ou abstratos.
Variáveis são sempre declaradas dentro de classes, mas o seu escopo pode estar associado com
toda a classe ou apenas com um método ou com um bloco de instruções.
nome escolhido pelo programador para representar variáveis, objetos, constantes, classes,
métodos ou rótulos. Depois que um identificador é criado ele representa o mesmo objeto em
qualquer lugar onde ele for usado no mesmo bloco de código.
ak , 1 < k < n, é precedido pelo elemento ak-1 e seguido por ak+1 na lista L.
inicia-se e onde termina, sem possibilidade de dúvida. Temos alguns casos especiais de Listas
Lineares que são frequentemente utilizadas na modelagem de problemas a serem resolvidos
computacionalmente, que são: pilha, fila e lista.
Entre as diversas operações que podemos realizar sobre listas lineares temos:
Ao codificar um programa que utiliza listas, dificilmente iremos usar todas as operações que
podem ser feitas com listas lineares. Na prática, apenas um subconjunto bastante reduzido
destas operações será necessário numa certa aplicação, como veremos posteriormente.
Estática Sequencial;
Estática Encadeada;
Dinâmica Sequencial;
Dinâmica Encadeada.
Dizemos que a alocação é estática quando, durante toda a execução, a quantidade de memória
utilizada pelo programa não varia, ou seja, a área de memória alocada já foi prevista no código do
programa, por outro lado, se o programa é capaz de criar novas variáveis enquanto executa, isto
é, se áreas de memória que não foram declaradas no programa passam a existir durante a sua
execução, então dizemos que a alocação é dinâmica.
A alocação sequencial consiste em dispor os elementos de uma lista em células de memória
consecutivas, uma após a outra. Assim, se um elemento está na posição de memória & e cada
elemento possui o mesmo tipo e ocupa k bytes, o elemento posterior da lista estará na posição
(&+k) e o anterior em (&-k). Essa é uma grande vantagem da alocação sequencial, pois dado o
endereço inicial & e o índice i de um elemento qualquer da lista, podemos acessá-lo
imediatamente, com um simples cálculo. O ponto fraco deste tipo de alocação encontra-se
quando precisamos inserir ou deletar elementos no meio de uma lista, quando será mais
complicado pois devemos mover os elementos de modo a abrir um espaço para inserção ou
ocupar um espaço de um elemento excluído.
manter uma ordem, cada elemento da lista carrega consigo a posição de memória do próximo
elemento da lista. A grande vantagem na alocação encadeada e a facilidade de inserção e
remoção de elementos, pois não precisamos movimentar os dados, somente precisamos
atualizar o campo de ligação do elemento antecessor àquele que será inserido ou removido. A
desvantagem surge quando desejamos acessar uma posição específica da lista, já que
conhecemos inicialmente somente o endereço do primeiro elemento e precisamos varrer a lista
até encontrar o elemento desejado. É claro que para listas muito extensas está operação pode ser
bastante desvantajosa em relação ao tempo.
📄 Material Complementar
Página 3 de 4
Livros
PENTON, R, Data Structures for Game Programmers, Ohio, USA, Focal Press, 2003
PEREIRA, S. L. Estruturas de Dados Fundamentais: Conceitos e Aplicações. 8. ed. São Paulo: Erica,
1996.