INSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
BAHIA
Estrutura de Dados
Prf. Msc. Igor de Oliveira Costa
INSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
Introdução a Estrutura de Dados
• Podemos definir uma estrutura de dados como um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente, facilitando sua busca e modificação;
• Uma estrutura de dados mantém os
dados organizados seguindo alguma lógica e disponibiliza operações para o usuário manipular
os dados;
• Algoritmo e Implementação
– Um algoritmo é uma sequência de passos que resolve algum problema ou alcança algum
objetivo;
– O Algoritmo diz o que deve ser feito;
– Implementação é definição de como os passos do algoritmo serão executados;
Exercícios
• Construa um algoritmo que escreva “Olá IFBA”. • Determine qual é a idade que o usuário faz no
ano atual. Para isso solicite o ano de nascimento do usuário e o ano atual.
• A partir de 3 notas fornecidas de um aluno, informe se ele foi aprovado, ficou de
recuperação ou foi reprovado.
– a média de aprovação é >= 7.0;
– a média de recuperação é >= 5.0 e < 7.0; e – a média do reprovado é < 5.0
Exercícios
• Faça um algoritmo que calcule a velocidade média de um carro, para isso informa a
distância e o tempo para percorrer a distância informada.
• A loja tabajara está vendendo seus produtos em 5 (cinco) prestações sem juros. Faça um programa em Java que receba um valor de uma compra e mostre o valor das prestações.
O que é Orientação a Objetos?
Orientação a Objetos é um paradigma de programação baseado na composição e interação entre diversas unidade de software chamadas objetos.
Esse paradigma foi introduzido com o objetivo de reduzir o grande problema em modelar o mundo real na área computacional.
Principais conceitos
• Na programação orientada a objetos existem alguns pilares que são primordiais, são eles:
– Encapsulamento – Herança
O que seria uma classe?
• É um molde ou especificação de um possível objeto
O que seria um objeto?
• Um objeto é uma construção de software que encapsula estado e comportamento. Os
objetos permitem que você modele seu software em termos reais e abstração.
Analogia
ClasseTipos primitivos da linguagem Java
• Tipos lógicos: boolean
– Em Java um tipo lógico é definido pela palavra boolean, e pode assumir dois valores: true ou false.
• Tipos textuais: char e String
– Caracteres simples são representados pelo tipo char;
– Palavras são representadas por uma sequência de dados do tipo char, agrupadas em um tipo
• Os números inteiros são divididos em quatro tipos: byte, short, int e long;
– O tipo byte é o de menor alcance entre os inteiros. Ele consome apenas um byte (8 bits) e pode guardar valores entre -128 e 127;
– O tipo short guarda inteiros de 2 bytes (16 bits) e pode guardar números entre -32.768 a 32.767;
– O tipo int é o tipo de dado mais comum. Ele consome 4 bytes (32 bits) e guarda valores entre -2.147.483.648 e 2.147.483.647.
– Long é o tipo de dado com maior alcance entre os inteiros. Consequentemente, também é o que ocupa mais espaço (8 bytes ou 64 bits).
Tipos primitivos da linguagem Java
• Tipos numéricos de ponto flutuante: float e
double
– Um valor fracionário pode ser representado em Java através dos tipos float e double;
– A diferença entre os dois está no tamanho de cada um:
• float: 32 bits; • double: 64 bits;
Convenções de codificação
• Classes e interfaces: A primeira letra deve ser maiúscula e, se várias palavras forem escritas juntas para formar o nome, a primeira letra de cada palavra interna deve ser maiúscula. Um padrão conhecido como (camelCase).
• Métodos: A primeira letra deve ser minúscula, e depois as primeiras letras das outras
palavras devem ser maiúsculas.
• Variáveis: Como nos métodos, começando
com a letra minúscula. Utilizar nomes curtos e representativos.
• Constantes – constantes devem ter todas as suas letras em maiúsculo, com o símbolo de underline para separa as palavras
Operadores Lógicos e Aritiméticos
Operador Função++ Incrementa o valor da variável em uma unidade. Exemplo: i++; contador++;
- - Diminui o valor da variável em uma unidade. Exemplo: i--; contador--;
+ - Operadores aritméticos * / % Multiplicação, divisão, resto == != Igualdade e desigualdade
^ Potência
&& AND
Promoção e Casting
• A linguagem Java não suporta atribuições
arbitrárias entre variáveis de tipos diferentes; • Ou seja, Java é fortemente tipada;
• Quando atribuímos um valor a uma variável, e esse valor é incompatível com o tipo de dado
definido para a variável, ocorrerá uma conversão; • Quando o processo de conversão for automático,
• Exemplo de Promoção
• Exemplo de Casting
• Para transformar uma String em Int, double ou Float, utilizamos o método parse.
• Ex:
Métodos
• Os métodos determinam o comportamento dos objetos de um classe. Quando um método é
invocado, se diz que o objeto está recebendo uma mensagem (para executar uma ação).
• O método pode ter ou um retorno, no caso de não ter um retorno o método é declarado como
void:
– public void inserirNome(String nome){
• Caso tenha retorno o método deve ser declarado com o tipo do retorno:
• A chamada do método é feita através de instanciação do objeto:
Modificadores
• Quando trabalhamos com encapsulamento em orientação a objetos temos que verificar como os atributos e métodos de uma
determinada classe ficará visível a outras classes do programa, para isso existem os modificares, são eles:
– Public – Private – Protected
Construtores
• Os construtores são uma espécie de método que são responsáveis por criar o objeto em memória, ou seja, instanciar a classe que foi definida;
• Esses construtores podem ter parâmetros ou não;
• Por padrão o Java já cria esse construtor sem parâmetros para todas as Classes, então você não precisa fazer isso se irá utilizar apenas
construtores sem parâmetros;
• Os construtores podem ser inicializado com parâmetros, assim quando se cria o objeto ele já terá os atributos definidos;
Get e Set - Métodos Acessores
• O encapsulamento "protege" os atributos ou métodos dentro de uma classe, portanto,
devemos prover meios para acessar tais
membros quando eles são particulares, ou seja, quando possuem o modificador private. • Esses métodos são a criação de métodos
• Nomeamos um método acessor com set toda vez que este método for modificar algum
campo ou atributo de uma classe, ou seja, se não criarmos um método acessor set para
algum atributo, isso quer dizer que este atributo não deve ser modificado;
• Nomeamos um método acessor com get toda vez que este método for verificar algum
campo ou atributo de uma classe.
Estrutura de dados (Vetores)
• Vetores são estruturas de dados que
armazenam usualmente uma quantidade fixa de dados de um certo tipo;
• Os vetores em Java, assim como em outras linguagens é inicializado por 0;
• Internamente, um vetor armazena diversos valores, cada um associado a um número que se refere à posição de armazenamento, e é
• Os vetores são estruturas indexadas, em que cada valor que pode ser armazenado em uma certa posição (índice) é chamado de elemento do vetor;
• Cada elemento do vetor pode ser utilizado individualmente de forma direta, ou seja, pode ser lido ou escrito diretamente, sem nenhuma regra ou ordem preestabelecida;
• Cada posição de um vetor é unicamente identificada por um valor inteiro positivo, linear e sequencialmente numerado;
• Ex.: a[i], corresponde ao i-ésimo elemento do vetor a, sendo que o valor da variável i deve pertencer ao intervalo dos índices do vetor: ((i >= 0) && (i < a.length)).
• Declaração de Vetores
• Representação
• Podemos também armazenar um objeto em nosso vetor, no entanto, este seria limitado pelo tamanho do vetor.