Você está na página 1de 17

Estrutura de Dados 28/09/2020

ESTRUTURA DE DADOS
Vetor de Strings e
Registros em Java

profa. Divani Barbosa Gavinier divani.gavinier@fatec.sp.gov.br

Dia Aula

05/out Prova 1

12/out Feriado (não haverá aula)

19/out Registros em Java

Pilha (assíncrona) –
24/out
atividade valendo presença
sábado
na data de 28/set

26/out Fila

12- Feriado Nacional -FERIADO NACIONAL -


NOSSA SENHORA APARECIDA

profa. Divani Barbosa 1


Estrutura de Dados 28/09/2020

Strings

A linguagem Java implementa o tipo String.

Declaração e Atribuição de Strings


// Declaração
String nome_var;

// Atribuição
nome_var = “Nome Completo”;

Leitura de Strings do teclado


Para ler Strings e evitar erros de “buffer do teclado”, use a função
abaixo:
// Importe o pacote java.io.*;
public static String lerStr() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
} // fim função lerStr

Exemplo de uso da função:


public static void main(String[] args) throws IOException {
String nome;
nome = lerStr(); // lendo String do teclado
// lista de comandos do programa principal
}

profa. Divani Barbosa 2


Estrutura de Dados 28/09/2020

Leitura de Char do teclado


Para ler caracteres e evitar erros de “buffer do teclado”, use a
função abaixo:

// Importe o pacote java.io.*;


public static char lerchar() throws IOException {
String s = lerStr();
return s.charAt(0);
} // fim função lerchar

Exemplo de uso da função:


public static void main(String[] args) throws IOException {
char var;
car = lerchar(); // lendo char do teclado
// lista de comandos do programa principal
}

Exemplo completo:
Programa que lê do usuário ficha de cadastro de 3 empregados,
contendo 2 strings referentes ao nome e o departamento, um double
referente a salario e um caractere referente a sexo.
import java.util.*;
import java.io.*;
public class lerStringChar { // Classe principal
public static void main(String[] args) throws IOException {
Scanner le = new Scanner(System.in);
String nome, depart;
double sal;
char sexo;
int i;
System.out.println("Preencha cadastro:");
for (i=0; i<3; i++) {
System.out.print("Nome: "); nome = lerStr();
System.out.print("Departamento: "); depart = lerStr();
System.out.print("Sexo: "); sexo = lerchar();
System.out.print("Salário: "); sal = le.nextDouble();
}
} // fim programa principal Continua...

profa. Divani Barbosa 3


Estrutura de Dados 28/09/2020

// continuação...

public static String lerStr() throws IOException {


InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
} // fim função lerStr

public static char lerchar() throws IOException {


String s = lerStr();
return s.charAt(0);
} // fim função lerchar

} // fim Classe principal

Comparação de Strings em Java


String str1, str2;

// Comparação (idêntico)
if (str1.equals(str2)) // true
else // false

// Comparação sem considerar maiúsculas e


// minúsculas
if (str1.equalsIgnoreCase(str2)) // true
else // false

profa. Divani Barbosa 4


Estrutura de Dados 28/09/2020

// Se str1 igual str2 (idêntico)


if (str1.compareTo(str2) == 0) // true
else // false

// Se str1 maior que str2


if (str1.compareTo(str2) > 0) // true
else // false

// Se str1 menor que str2


if (str1.compareTo(str2) < 0) // true
else // false

Atividade 1
Transforme a classe Vetor abaixo em uma Classe de Vetor de
String chame-a de VetorStr.
class Vetor {

private long[] v;
private int n; // numero de elementos adicionados

public Vetor(int tam) { // construtor


v = new long[tam];
n = 0;
}

public void inserir(long valor) {


v[n] = valor;
n++;
}
// continua...

10

profa. Divani Barbosa 5


Estrutura de Dados 28/09/2020

public int buscar(long chave) {


for(int i=0; i<n; i++)
if( v[i] == chave ) return i;
return -1;
}

public boolean remover(long chave) {


int i = buscar(chave);
if ( i == -1 ) return false;
if ( i != (n-1) ) { // Se NAO for o ultimo item
for(int k=i; k<(n-1); k++)
v[k] = v[k+1]; // Vetor caminha
}
n--;
return true;
}

public void exibir() {


for(int i=0; i<n; i++) System.out.println(v[i]);
}
} // fim Classe Vetor

11

Exemplo de uso da Classe Vetor


public class Ativ1Long {
public static void main(String[] args) {
Vetor v = new Vetor(10);
Scanner le = new Scanner(System.in);
long valor;
int i;
System.out.print("Forneça 3 valores inteiros: ");
for(i=0;i<3;i++) {
valor=le.nextLong();
v.inserir(valor);
}
System.out.println("Exibindo itens: "); v.exibir();
System.out.print("Forneca um valor para remoção: ");
valor = le.nextLong();
v.remover(valor);
System.out.println("Exibindo itens: "); v.exibir();
}
}

12

profa. Divani Barbosa 6


Estrutura de Dados 28/09/2020

Atividade 2
Crie um programa que instancie a classe VetorStr e:

a) Leia 5 strings do usuário e as armazene no vetor criado na classe


VetorSrt;

b) Imprima na tela o conteúdo do vetor;

c) Leia do usuário uma chave e faça uma busca dessa chave dentro da
classe vetor (faça a comparação sem diferenciar caracteres
maiúsculos de minúsculos);

d) Leia do usuário uma chave e remova-a do vetor;

e) Imprima novamente na tela o conteúdo do vetor.

13

Atividade 3
Escreva o método de ordenação QuickSort dentro da classe
VetorStr. E no programa principal:

a) Leia 10 strings do usuário e as armazene no vetor criado na classe


VetorSrt;

b) Imprima na tela o conteúdo do vetor;

c) Ordene o vetor através do algoritmo de ordenação QuickSort;

d) Imprima novamente na tela o conteúdo do vetor.

14

profa. Divani Barbosa 7


Estrutura de Dados 28/09/2020

INTERVALO

15

Registros

Um registro é um conjunto de uma ou mais variáveis agrupadas


sob um único nome.

Então os registros podem conter elementos de qualquer tipo de


dados tais como int, char, String, double, vetores, matrizes ou
mesmo outros registros.

Os Registros (Estruturas) são chamadas de variáveis compostas


heterogêneas, pois elas são compostas de vários campos e cada
campo pode ser de um tipo diferente de dados.

16

profa. Divani Barbosa 8


Estrutura de Dados 28/09/2020

Exemplo: Registro de Funcionário

Tipo String
Tipo String
Tipo double

Em Java esse registro deve ser declarado como uma classe

class Funcionario {
public String nome;
public String depart;
public double salario;
}

17

Vamos desenvolver um programa que leia o conteúdo do


registro abaixo do usuário e depois o imprima na tela

Sendo assim, a primeira classe que deveremos declarar no


programa será a classe que represente esse registro de
Funcionários na memoria do computador.

Logo após teremos a classe principal que deverá conter o


programa principal e as funções.

18

profa. Divani Barbosa 9


Estrutura de Dados 28/09/2020

import java.util.*; Exemplo 1:


import java.io.*;
class Funcionario {
public String nome, depart;
public double sal;
} // fim classe Funcionario
public class CadastroFuncApp {
public static void main(String[] args) throws IOException {
Scanner le = new Scanner(System.in);
Funcionario reg = new Funcionario();
System.out.println("Preencha a ficha cadastral");
System.out.print("Nome: "); reg.nome = lerStr();
System.out.print("Departamento: "); reg.depart = lerStr();
System.out.print("Salário: "); reg.sal = le.nextDouble();
System.out.println("\nImprimindo Conteudo");
System.out.println("Nome: " + reg.nome);
System.out.println("Departamento: " + reg.depart);
System.out.println("Salário: " + reg.sal + "\n");
} // fim programa principal
public static String lerStr() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
} // fim função lerStr
} // fim classe CadastroFunc

19

import java.util.*; Exemplo 1:


import java.io.*;
class Funcionario { Descrição de como deve ser o
public String nome, depart; registro de nome Funcionario
public double sal;
Registro carregado na memória do
} // fim classe Funcionario
computador para uso
public class CadastroFuncApp {
public static void main(String[] args) throws IOException {
Scanner le = new Scanner(System.in);
Funcionario reg = new Funcionario();
System.out.println("Preencha a ficha cadastral");
System.out.print("Nome: "); reg.nome = lerStr();
System.out.print("Departamento: "); reg.depart = lerStr();
System.out.print("Salário: "); reg.sal = le.nextDouble();
System.out.println("\nImprimindo Conteudo");
System.out.println("Nome: " + reg.nome); Saída
System.out.println("Departamento: " + reg.depart);
System.out.println("Salário: " + reg.sal + "\n");
} // fim programa principal
public static String lerStr() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
} // fim função lerStr
} // fim classe CadastroFunc

20

profa. Divani Barbosa 10


Estrutura de Dados 28/09/2020

import java.util.*; Exemplo 2: Refazendo o Exemplo


import java.io.*; 1 com a impressão sendo realizada
class Funcionario {
public String nome, depart;
por uma função:
public double sal;
}
public class CadastroFuncApp { // inicio classe principal
public static void main(String[] args) {
Scanner le = new Scanner(System.in);
Funcionario reg = new Funcionario();
System.out.println("Preencha a ficha cadastral");
System.out.print("Nome: "); reg.nome = lerStr();
System.out.print("Departamento: "); reg.depart = lerStr();
System.out.print("Salário: "); reg.sal = le.nextDouble();
impressao(reg);
} // fim programa principal
public static void impressao(Funcionario dados) {
System.out.println("\nImprimindo Conteudo");
System.out.println("Nome: " + dados.nome);
System.out.println("Departamento: " + dados.depart);
System.out.println("Salário: " + dados.sal + "\n");
} // fim função impressão

// Continua ...

21

// Continuação...

public static String lerStr() throws IOException {


InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
} // fim função lerStr
} // fim classe CadastroFunc

22

profa. Divani Barbosa 11


Estrutura de Dados 28/09/2020

Conjunto de Registros
Agora vamos declarar o registro dentro do programa principal
como um vetor, para termos um conjunto de Registros.

23

import java.util.*; Exemplo 3: Cadastrando


import java.io.*;
2 funcionários (Vetor).
class Funcionario {
public String nome, depart;
public double sal;
}

public class CadastroFuncApp {

public static void main(String[] args) throws IOException {


Scanner le = new Scanner(System.in);
Funcionario[] reg = new Funcionario[2];
System.out.println("Preencha a ficha para 2 funcionarios");
for(int i=0; i<2; i++) {
reg[i] = new Funcionario();
System.out.print("Nome: "); reg[i].nome = lerStr();
System.out.print("Departamento: "); reg[i].depart = lerStr();
System.out.print("Salário: "); reg[i].sal = le.nextDouble();
}
impressao(reg);
} // fim programa principal

// Continua…

24

profa. Divani Barbosa 12


Estrutura de Dados 28/09/2020

import java.util.*; Exemplo 3: Cadastrando


import java.io.*;
2 funcionários (Vetor).
class Funcionario { Descrição de como deve ser o
public String nome, depart; registro de nome Funcionario
public double sal; Registro carregado na memória do
} computador como um vetor de duas
posições
public class CadastroFuncApp {
Usa-se notação de vetores
public static void main(String[] args) throws IOException {
Scanner le = new Scanner(System.in);
Funcionario[] reg = new Funcionario[2];
System.out.println("Preencha a ficha para 2 funcionarios");
for(int i=0; i<2; i++) {
reg[i] = new Funcionario();
System.out.print("Nome: "); reg[i].nome = lerStr();
System.out.print("Departamento: "); reg[i].depart = lerStr();
System.out.print("Salário: "); reg[i].sal = le.nextDouble();
}
impressao(reg);
} // fim programa principal

// Continua…

25

// Continuação …
public static void impressao(Funcionario[] dados) {
System.out.println("\nImprimindo Conteudo");
for(int i=0; i<2; i++) {
System.out.println("Nome: " + dados[i].nome);
System.out.println("Departamento: " + dados[i].depart);
System.out.println("Salário: " + dados[i].sal);
}
} // fim função impressao

public static String lerStr() throws IOException {


InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
} // fim função lerStr

} // fim classe CadastroFunc

No Exemplo 3 a variável reg trata-se de um vetor de objeto em Java.


Agora vamos implementar a classe Vetor como um vetor de objetos...

26

profa. Divani Barbosa 13


Estrutura de Dados 28/09/2020

Ao invés de armazenamos um tipo String na classe


Vetor, como fizemos na Atividade 1, agora vamos
armazenar um array do tipo Objeto Funcionário.

27

Exemplo 4: Implementação
class Funcionario {
public String nome; // chave da Classe VetorObj (vetor de
public String depart; objetos).
public double sal;
}
//*********************************************************
class VetorObj {
private Funcionario[] v;
private int n; // numero de elementos adicionados
public VetorObj(int tam) { // construtor
v = new Funcionario[tam];
n = 0;
}
public void inserir(String nome, String dep, double sal) {
v[n] = new Funcionario();
v[n].nome = nome;
v[n].depart = dep;
v[n].sal = sal;
n++;
} // Continua...

28

profa. Divani Barbosa 14


Estrutura de Dados 28/09/2020

// Continuação
public int buscar(String chave) {
for(int i=0; i<n; i++)
if( v[i].nome.equalsIgnoreCase(chave) ) return i;
return -1;
}
public boolean remover(String chave) {
int i = buscar(chave);
if ( i == -1 ) return false;
if ( i != (n-1) ) { // Se NAO for o ultimo item
for(int k=i; k<(n-1); k++)
v[k] = v[k+1]; // Vetor caminha
}
n--; return true;
}
public void exibir() {
System.out.println("\nImprimindo Conteudo:");
for(int i=0; i<n; i++) {
System.out.println("Nome: " + v[i].nome);
System.out.println("Departamento: " + v[i].depart);
System.out.println("Salário: " + v[i].sal + "\n");
}
}
} // fim Classe VetorObj Continua...

29

Exemplo de uso da classe VetorObj


(cadastro de 2 registros)
class VetorObjApp {
public static void main(String[] args) throws IOException {
Scanner le = new Scanner(System.in);
VetorObj reg = new VetorObj(2);
String nome, ddd;
double sal;
for (int i=0; i<2; i++) {
System.out.print("Nome: "); nome=lerStr();
System.out.print("Departamento: "); ddd=lerStr();
System.out.print("Salario: "); sal=le.nextDouble();
reg.inserir(nome, ddd, sal);
}
}
public static String lerStr() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
return br.readLine();
}
}

30

profa. Divani Barbosa 15


Estrutura de Dados 28/09/2020

Atividade 4
Faça um programa em Java que leia do usuário e imprima o
seguinte registro demonstrado abaixo:

Atividade 5
Leia do usuário 4 entradas do registro que foi criado no exercício
anterior, imprima o resultado na tela.

31

Videoaula
Para que você possa melhorar seus estudos, consulte também a vídeo
aula:

Vídeo aula que explica os registros (estruturas) em Java e em C:


 Univesp TV: Criação de uma primeira estrutura (21 min) Disponível
em: https://youtu.be/x2DwllnUZDg Acesso em: maio 2020

32

profa. Divani Barbosa 16


Estrutura de Dados 28/09/2020

Questionários

O questionário da aula de hoje, Aula 6 – Estruturas em Java,


encontra-se na aba Tarefas do canal Geral do Teams.

Note que existe um prazo para responde-lo (5 dias), caso não


cumpra o prazo o questionário ficará inativo (não aceitará mais
respostas).

Muito importante que você responda esse questionário pois a


nota dele irá compor a nota de sua avaliação.

33

Fim
Aula Estruturas em Java

34

profa. Divani Barbosa 17

Você também pode gostar