Prof. Rogério Rocha 1

Documentos relacionados
Arrays e Marizes. João Paulo Q. dos Santos

Algoritmos II prof. Daniel Oliveira

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Técnicas de Programação II

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Lógica de Programação e Algoritmos

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Linguagem de Programação II Implementação

AULA 6 - ARRAYS. Array de 10 elementos

Linguagem de Programação III

È um tipo estruturado homogêneo

Tratamento de Exceções

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Programação de Computadores II TCC /Turma A 1

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Vetores Unimensionais

Análise de Programação

Definição de Matrizes em Linguagem C. Matrizes unidimensionais

insfcanceof new public switch transient while byte continue extends for int null

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação: Vetores

Vetores Unimensionais

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação de Computadores II

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Variáveis primitivas e Controle de fluxo

Aula 2 POO 1 Prática. Profa. Elaine Faria UFU

Vetores Unimensionais

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Introdução à Linguagem de Programação Java 1 INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO JAVA

Instituto Superior de Engenharia de Lisboa

Programação Estruturada e Orientada a Objetos

Array em Java. Figura 1 - Exemplo de um array de inteiros

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Variáveis Compostas. Vanessa Braganholo

Tipos de dados e comandos POO

Arrays. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

ALOCAÇÃO DINÂMICA DE MEMÓRIA

(Conceito de Variável Indexada, Funções e Procedimentos)

Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de Introdução

Sintaxe Básica de Java Parte 2

CURSO DE POO COM JAVA

Variáveis Compostas. Leonardo Gresta Paulino Murta.

Arrays. int idade1; int idade2; int idade3; int idade4; int[] idades;

Simulado de Linguagem de Programação Java

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas

Tratamento de Exceções. Prof. Marcelo Roberto Zorzan

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

double x; x = enigmab1(100);

Arrays em Java. Prof. Renato Pimentel. GGI030 Programação Orientada a Objetos. Universidade Federal de Uberlândia Faculdade de Computação

Lição 7 Array em Java

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?

MsC. João Maria MsC. Liviane Melo

Interfaces POO. Prof. Marcio Delamaro

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Java Standard Edition (JSE)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

" # $ % & ' ( ) 1/6 29/11/2004 : : : A1 (Custódio) A2 (Custódio) B2 (Dirceu) A3 (Dirceu) B3( Dirceu) B1 (Marcus) B4 (Marcus) PARTE TEÓRICA

Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

Algoritmos I Aula 13 Linguagem de Programação Java

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Algoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018

Seleção Múltipla Laços (while, do-while, for) AULA 05

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Programação Orientada a Objetos

Paradigmas de Linguagens

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Lógica de Programação. Lógica de Programação com Java

Algoritmos I Aula 14 Java: estruturas de seleção e repetição

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Orientação a Objetos e Java

Palavras Reservadas da Linguagem Java

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

A R R A Y S E E X C E P T I O N S P R O F. M E. H É L I O E S P E R I D I Ã O

Atribuições: Valores, Ponteiros e Referências

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Introdução à Computação

Além de digitar e rodar os exemplos para ver seu funcionamento, deve-se ler atentamente e entender o que cada linha do código está fazendo.

Fundamentos de Programação 1

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Entrada e Saída de dados por JOptionPane

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Lição 4 Fundamentos da programação

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Transcrição:

Uma estrutura de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. Diferentes tipos de estrutura de dados são adequados a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Estruturas de dados e algoritmos são temas fundamentais da ciência da computação, sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados. A organização e os métodos para manipular essa estrutura é que lhe conferem singularidade. A escolha de uma estrutura de dados apropriada pode tornar um problema complicado em um de solução relativamente simples. O estudo das estruturas de dados está em constante desenvolvimento (assim como o de algoritmos), mas, apesar disso, existem certas estruturas clássicas que se comportam como padrões. As estruturas de dados são chamadas tipos de dados compostos que se dividem em homogêneos (vetores e matrizes) e heterogêneos (registros). As estruturas homogêneas são conjuntos de dados formados pelo mesmo tipo de dado primitivo. As estruturas heterogêneas são conjuntos de dados formados por tipos de dados primitivos diferentes (campos do registro) em uma mesma estrutura. I - Estruturas homogêneas um array, também conhecido como vetor (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição. O índice geralmente utiliza uma sequência de números inteiros, mas o índex pode ter qualquer valor ordinal. Os arrays podem ser considerados como as estruturas de dados mais simples. Têm a vantagem de que os seus elementos são acessíveis de forma rápida, mas têm uma notável limitação: são de tamanho fixo. A) Vetores Declaramos vetores de maneira muito semelhante à declaração de variáveis normais. A única diferença é que depois do nome da variável deve ser informada a quantidade de elementos do vetor. Para declarar um vetor chamado vetor, com cinco elementos inteiros, escrevemos: int vetor[5]; Note que a quantidade de elementos de um vetor não pode ser alterada depois que o vetor for declarado. Para criar vetores de tamanho dinâmico, podemos usar ponteiros, que serão abordados mais adiante. Da mesma maneira que podemos inicializar uma variável junto com sua declaração, podemos usar as chaves () para inicializar um array. int vetor[5] = 17, 42, 9, 33, 12; rozerorocha@gmail.com http:www.rozero.host22.com 1

Para fazer referência a um valor a um elemento de um vetor, usamos a notação vetor[índice], que serve tanto para obter quanto para definir o valor de um elemento específico, dada sua posição. Note que os elementos são numerados a começar do zero, e, portanto, se o número de elementos é N, o índice ou posição do último elemento será N 1. vetor[0] = 3; int x = vetor[2]; int y = vetor[5]; ERRO! Repare em que a última linha contém um erro: ela referencia um elemento do vetor que não existe. No entanto, o compilador não se recusará a compilar esse código; dará apenas um aviso. Se essa linha for executada, a variável y receberá um valor que não tem nada a ver com o vetor. O código abaixo é de um programa que declara uma vetor de inteiros de 5 ocorrências, popula e exibe. public class Vet01 public static void main(string args[]) int vetor[]; vetor = new int[10]; for (int i = 0; i < vetor.length; i++) vetor[i] = i; System.out.println("vetor["+i+"] = "+i); rozerorocha@gmail.com http:www.rozero.host22.com 2

B) Strings import javax.swing.joptionpane; public class Ex public static String le_frase(string msg,int piso,int teto) String entrada=""; while ((entrada.length() < piso) (entrada.length() > teto)) entrada = JOptionPane.showInputDialog(msg+"\n[ mínimo "+piso+" máximo "+teto+" ]"); Se pressione "cancel" if ( entrada == null ) entrada = ""; return entrada.trim(); public static String vertical(string entrada) String ret=""; int x =0; for (x = 0; x < entrada.length(); x++) ret += entrada.charat(x)+"\n"; return ret; public static String invertida(string entrada) String ret=""; int x =0; for (x = entrada.length()-1; x >= 0; x--) ret += entrada.charat(x); return ret; rozerorocha@gmail.com http:www.rozero.host22.com 3

public static String vogais(string entrada) String ret = ""; String vogais = "AaÁáÃãÂâEeÉéÊêIiÍíÎîOoÓóÔôUuÚúÛû"; int x = 0; int y = 0; for (x = 0; x < entrada.length(); x++) for (y = 0; y < vogais.length(); y++) if ( entrada.charat(x) == vogais.charat(y)) ret += entrada.charat(x); return ret; public static String consoantes(string entrada) String ret = ""; String vogais = "AaÁáÃãÂâEeÉéÊêIiÍíÎîOoÓóÔôUuÚúÛû"; int x = 0; int y = 0; boolean consoante = false; for (x = 0; x < entrada.length(); x++) consoante = true; for (y = 0; y < vogais.length(); y++) if ( entrada.charat(x) == vogais.charat(y)) consoante = false; break; if ( consoante ) ret += entrada.charat(x); return ret; rozerorocha@gmail.com http:www.rozero.host22.com 4

public static void main(string args[]) String frase = "", aux=""; int metade = 0; frase = le_frase("digite uma frase",5,25); JOptionPane.showMessageDialog(null,"Frase = ["+frase+"]","tratamento de Strings",JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(null,"Quantidade de caracteres = "+frase.length(),"tratamento de Strings",JOptionPane.WARNING_MESSAGE); aux = vertical(frase); JOptionPane.showMessageDialog(null,aux,"Frase na vertical",joptionpane.warning_message); aux = invertida(frase); JOptionPane.showMessageDialog(null,aux,"Frase invertida",joptionpane.warning_message); aux = vogais(frase); JOptionPane.showMessageDialog(null,aux,"Somente as vogais",joptionpane.warning_message); aux = consoantes(frase); JOptionPane.showMessageDialog(null,aux,"Somente as consoantes",joptionpane.warning_message); aux = frase.touppercase(); JOptionPane.showMessageDialog(null,aux,"Maiúsculas",JOptionPane.WARNING_MESSAGE); aux = frase.tolowercase(); JOptionPane.showMessageDialog(null,aux,"Maiúsculas",JOptionPane.WARNING_MESSAGE); metade = (int) frase.length() / 2; aux = frase.substring(0, metade); JOptionPane.showMessageDialog(null,aux,"1a metade",joptionpane.warning_message); aux = frase.substring(metade); JOptionPane.showMessageDialog(null,aux,"2a metade",joptionpane.warning_message); System.exit(0); Saída do programa: rozerorocha@gmail.com http:www.rozero.host22.com 5

rozerorocha@gmail.com http:www.rozero.host22.com 6

rozerorocha@gmail.com http:www.rozero.host22.com 7

C) Matrizes São matrizes linha-coluna, onde o primeiro índice indica a linha e o segundo a coluna. Esse tipo de matriz é considerado o caso mais simples de matrizes multidimensionais. import javax.swing.joptionpane; import java.text.*; public class Mat01 public static void main(string args[]) int mat[][]; int linhas = 0,colunas=0; double x = 0; String aux = ""; DecimalFormat Mk3 = new DecimalFormat("000"); DecimalFormat Mk2 = new DecimalFormat("00"); while ( linhas < 5 ) x = Math.random()*20; linhas = (int) x; while ( colunas < 5 ) x = Math.random()*8; colunas = (int) x; mat = new int[linhas][colunas]; for (int l = 0; l < mat.length; l++) for (int c = 0; c < mat[l].length; c++) x = Math.random()*1000; mat[l][c] = (int) x; aux += "mat["+mk2.format(l)+"]["+mk2.format(c)+"] = "+Mk3.format(mat[l][c])+" "; aux += "\n"; JOptionPane.showMessageDialog(null,aux,"Matriz",JOptionPane.INFORMATION_MESSAGE); System.exit(0); Esse exemplo calcula a determinante de uma matriz de ordem 2 e através dele podemos ver como deve ser feita a declaração de uma matriz bidimensional. mat = new int[linhas][colunas]; Que a forma geral é: tipo nome_matriz[numero_linhas][numero_colunas]; Observe na formula que calcula a determinante que os valores são acessados através de seus índices (linhas e colunas). rozerorocha@gmail.com http:www.rozero.host22.com 8

A seguir são apresentadas as saídas do programa: D) Matrizes multidimensionais A linguagem Java permite também utilizar matriz de três ou mais dimensões, porém não é frequentemente usada, pois requer uma quantidade grande de memória e os acessos aos seus elementos são mais lentos. Declaração de matrizes multidimensionais: Tipo nome [tamanho1][tamanho2][tamanho3]...[tamanho n] rozerorocha@gmail.com http:www.rozero.host22.com 9

import javax.swing.joptionpane; import java.text.*; public class BolhaMat FACULDADE BATISTA MINEIRA - CST Banco de Dados static int le_int(string msg, int piso, int teto) int x; String aux; boolean repete; x = 0; repete = true; while ( repete ) aux = JOptionPane.showInputDialog(msg+" entre "+piso+" e "+teto); try x = Integer.parseInt(aux); return x; if (( x < piso ) ( x > teto)) throw new NumberFormatException(); else repete = false; catch (NumberFormatException nfe) JOptionPane.showMessageDialog(null,"Valor incorreto. Digite novamente.", "Erro",JOptionPane.ERROR_MESSAGE); static void popula(int m[][]) for (int l=0;l<m.length;l++) for (int c=0;c<m[l].length;c++) m[l][c] = le_int("digite o valor da linha "+(l+1)+" e da coluna "+(c+1),-100,100); public static void exibe(int m[][],string tit) DecimalFormat Mk = new DecimalFormat("000 "); String msg="",aux=""; System.out.println("\n"+tit); for (int l=0;l<m.length;l++) for (int c=0;c<m[l].length;c++) aux = Mk.format(m[l][c]); System.out.print(aux); msg = msg+aux; System.out.print("\n"); msg = msg+"\n"; JOptionPane.showMessageDialog(null,msg,tit,JOptionPane.PLAIN_MESSAGE); System.out.println(); rozerorocha@gmail.com http:www.rozero.host22.com 10

public static void ordena(int mat[][]) int tam; tam = qtd_ocorrencias(mat); int vet[] = new int [tam]; popula_vet(vet,mat); bolha(vet); popula_mat(mat,vet); public static int qtd_ocorrencias(int mat[][]) int t=0; for (int l=0;l<mat.length;l++) for (int c=0;c<mat[l].length;c++) t++; return t; public static void popula_vet(int v[],int m[][]) int i=0; for (int l=0;l<m.length;l++) for (int c=0;c<m[l].length;c++) i = ((l*m[l].length)+c); v[i] = m[l][c]; public static void popula_mat(int m[][],int v[]) int i=0; for (int l=0;l<m.length;l++) for (int c=0;c<m[l].length;c++) i = ((l*m[l].length)+c); m[l][c] = v[i]; FACULDADE BATISTA MINEIRA - CST Banco de Dados rozerorocha@gmail.com http:www.rozero.host22.com 11

FACULDADE BATISTA MINEIRA - CST Banco de Dados public static void bolha(int vet[]) int limite = vet.length-1; int bolha = 0; int atual = 0; int proximo = 0; int temp = 0; for (bolha = limite; bolha >= 0; bolha-- ) for (atual=0,proximo=1; atual < bolha; atual++,proximo++) if (vet[atual] > vet[proximo]) temp = vet[atual]; vet[atual] = vet[proximo]; vet[proximo] = temp; public static void main(string args[]) int linhas = 0; int colunas = 0; System.out.println("(C) 2005 Prof. Rogerio Rocha"); Define a qtd de linhas linhas = le_int("digite a qtd de linhas",2,10); Define a qtd de colunas colunas = le_int("digite a qtd de colunas",2,10); Define a matriz int mat[][] = new int[linhas][colunas]; Popula a matriz popula(mat); Exibe a matriz exibe(mat,"desordenada"); Ordena a matriz pelo metodo da bolha ordena(mat); Exibe a matriz exibe(mat,"ordenada"); System.exit(0); rozerorocha@gmail.com http:www.rozero.host22.com 12