Isto não é exequível!... B[8][6] A[10] Slides_Java_4

Documentos relacionados
Tabelas e Matrizes. Arrays e Matrizes em Java. Arrays. Isto não é exequível!... Exemplo. Elementos dos Arrays. Necessidade de usarmos Tabelas B[8][6]

Variáveis Compostas. Vanessa Braganholo

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

CURSO DE POO COM JAVA

AULA 6 - ARRAYS. Array de 10 elementos

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Simulado de Linguagem de Programação Java

Lição 7 Array em Java

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

LINGUAGEM JAVA - RESUMO

Orientação a Objetos

Vetores Unimensionais

Tipos de dados e comandos POO

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

Aula 3/4: Vetores/Matrizes e Ponteiros

Conversão de Tipos e Arrays

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

Lógica de Programação e Algoritmos

EXERCICIO DE JAVA PARA FIXAÇÃO DE CONTEÚDO - Introdução a Prática de Programação Docente Pedro F. Carvalho /

Java Variáveis e Controle Fluxo

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

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

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

BC-0505 Processamento da Informação

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

Análise de Programação

Vetores Unimensionais

Programação Orientada a Objeto Java

Aula 15 Variáveis Indexadas (vetores)

Reader e Writer para streams de caracteres (texto).

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

Técnicas de Programação

ção a Objetos em Java

Linguagem de Programação III

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

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

Arrays (Vetores) Arrays (Vetores) 28/04/ Índices. profs. } Ex1: Se eu preciso manipular 100 nomes de pessoas ao mesmo tempo... é melhor...

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

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

Vetores Unimensionais

Matrizes (Vetores Bidimensionais)

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

Prof. Rogério Rocha 1

Revisão da Java Ex1 equilátero isóscele escaleno Ponto, Triangulo, Ex2 Ex3 Nota Ex4 TabelaUtil preenchetab imprimetab somadiv5 TabelaUtil

Algoritmos II prof. Daniel Oliveira

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Algoritmos II Aula 2 Vetores

Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204

Java - Estruturas de Decisão, Repetição e Arrays

Programação: Vetores

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

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

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Sintaxe Básica do Java. João Paulo Q. dos Santos

Algoritmos I Aula 13 Linguagem de Programação Java

LINGUAGEM C: ARRAY: VETORES E MATRIZES

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

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Comando Portugol (Visualg) Java

1. Estrutura de Dados

Vetores Unimensionais

Exercícios: Vetores e Matrizes

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Vetores, Matrizes e String

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

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

MC Teste de Mesa e Comandos Repetitivos

Folha Prática Tipos de dados estruturados (vetores e marizes) 1. Tipos de dados estruturados (vetores e matrizes)

Estrutura de repetição do/while

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

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

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

Estruturas de Repetição e String

Variáveis primitivas e Controle de fluxo

Algoritmos APRENDENDO A PROGRAMAR COM C#

Estruturas de Repetição

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Arrays em Java. Introdução à Programação. Bruno Cartaxo

AULA 3 Alocação dinâmica de memória: Ponteiros

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

UNIVERSIDADE DE AVEIRO PROGRAMAÇÃO I EXAME PRÁTICO

Transcrição:

A[10] B[8][6] Slides_Java_4 Sistemas Informáticos I 2005-2006 Imaginemos que é necessário escrever um programa que: leia uma lista de 50 alunos e as respectivas notas. calcule a nota média. escreva a diferença da nota de cada aluno para a nota média. Seria necessário declarar variáveis separadas para cada um dos 50 alunos: String nome1 nome2 nome3 nome50 int nota1 nota2 nota3 nota50 Isto não é exequível!... Solução: utilizar tabelas (arrays) Uma tabela é um objecto que contém uma lista ordenada de elementos todos do mesmo tipo. Os elementos são indexados por um índice que pode variar entre 0 e n-1 sendo n a dimensão da tabela. -1 n 1

Para criar uma tabela: Declarar a tabela double [] notas; double notas[]; // declara uma tabela de floats // o mesmo efeito... Um elemento de uma tabela é um espaço onde se pode armazenar um valor do tipo declarado. Os elementos de uma tabela podem ser usados em qualquer ponto de um programa onde possa ser usado um elemento desse tipo. Instanciar a tabela (é necessário usar new para criar a tabela porque as tabelas são objectos) notas = new double [50]; // cria uma tabela com 50 doubles Ex: notas [1] pode ser usado nas mesmas circunstâncias em que uma variável do tipo double pode ser usada (podemos atribuir-lhe um valor imprimi-la utilizá-la em expressões ) Inicializar e aceder aos elementos notas [0] = 14.7; notas [1] = 10.2; notas[49] = 20.0;... soma = notas [0] + notas [1]; System.out.println(notas [0]); Declarar um array: int r[]; double nums[]; String nomes[]; Criar um array r = new int[10]; nums = new double[100]; int s[] = new int[20]; char c[] = new char[20]; Indexar os elementos de um array: r[0] = 20; r[9] = 100; nums[99] = 3.2; s[0] = 5; s[1] = r[0]; class Notas { public static void main(string arg[]) { final int MAX = 50; float [] notas = new float [MAX]; int conta = 0; float n media; // leitura das notas (termina com nº negativo) do { System.out.print ("Nota do aluno "+conta+" "); n = Keyboard.readFloat(); if (n >=0) { notas [conta] = n; conta ++; while (n >= 0 conta < MAX); 2

// cálculo da média float soma=0; for (int i=0; i<conta; i++) soma = soma + notas[i]; if (conta > 0) media = soma / conta; else media = 0; System.out.println (media); // Diferenças para a média System.out.println ("Diferenças para a média:"); for (int i=0; i<conta; i++) System.out.println ("Aluno "+i+" "+(notas[i]-media)); É possível criar e inicializar uma tabela de forma semelhante aos tipos simples: int diasmes[] = {31 28 31 30 31 30 31 31 30 31 30 31; A tabela é criada com o espaço suficiente para os dados fornecidos na inicialização (12 neste caso). Assim a instrução anterior é equivalente a: int diasmes[] = new int [12]; diasmes [0] = 31; diasmes [1] = 28; diasmes [11] = 31;! int n[ ] = {103448355738612; Alternativamente: int n[] = new int[10]; n[0] = 10; n[1] = 34;... n[9] = 12; "!"! # $ % " ' * *++*)* 3

# $% -!"- -- -- - -- -- * *++*)* int tab[] = new int[100]; Escreva umas linhas de código para: (a) colocar os 100 primeiros inteiros (12...100) na tabela tab[0]...tab[99]; (b) colocar os 50 primeiros números pares (24...100) na tabela tab[0]...tab[49]; (a) colocar os 100 primeiros inteiros em ordem inversa (100 99...1) na tabela tab[0]...tab[99]; ' ()length int tab[] = new int[100]; for(int i=0; i < 100; i++) tab[i] = i+1; for(int i=0; i < 50; i++) tab[i] = 2*(i+1); for(int i=0; i < 100 ; i++) tab[i] = 100-i; for(int i=100; i > 0 ; i--) tab[100-i] = i; Quando se cria uma tabela com n elementos esse é o número máximo que a tabela pode armazenar. Uma vez criada não é possível alterar o seu tamanho. O campo length guarda o número máximo de elementos que a tabela pode armazenar. Este campo apenas pode ser lido:. /)( Isto não implica que a tabela deva estar sempre cheia: Em cada momento poderá conter entre 0 e n elementos Um cuidado importante quando se usam tabelas é respeitar os limites para os índices (0 a n-1) A utilização de índices fora dos limites leva o Compilador de Java a gerar uma excepção: Java.lang.ArrayIndexOutOfBoundsException 4

)* ( (()0 1 /(2 / java.lang.arrayindexoutofboundsexception at ArrayBound.main(ArrayBound.java:7) Exception in thread "main" Finished executing 556 (((((() 7( (2! -$-- -"-''-##-8 #--!- *( 3 *+ )( *( 3!*+!)( *( 3*+)( 55 551 559+1 :(( (2 1 -!--#-$-%--"-'- * Uma tabela tanto pode conter elementos de um tipo simples como referências para outros objectos como Strings por exemplo. String [] frases = new String [25]; reserva espaço para 25 referências para objectos String. No entanto esta instrução não cria as Strings propriamente ditas mas apenas as referências respectivas. 9(2 55; :( for(int i=0; i < 10; i++){ C[i] = A[i] + B[i]; System.out.println("C["+i+"]= "+ C[i]); As Strings têm que ser criadas explicitamente: frases [0] = new String ( Bom dia ); ou frases [1] = Bom dia ;... 5

(()0 6 *< ( ( * =()(> *><?@ 6A A B * 6(2 55 (C ( 3 4++ *< ( *++*D* 6=()(7(55 ( *< B. E * 3 4++ *< ( *++*D*+6 Uma tabela bi-dimensional representa uma matriz com linhas e colunas. Cada elemento de uma tabela bi-dimensional é referenciado usando dois índices: um para as linhas e outro para as colunas. Na realidade uma tabela bi-dimensional é uma tabela de tabelas ou seja é uma tabela uni-dimensional em que cada elemento é uma referência para um objecto tabela. Exemplo: 2 A (2 $ Por exemplo imaginemos que precisamos de armazenar as classificações de 200 alunos em 4 testes. Poderíamos usar: float [][] notas = new float [200][4]; Neste caso os índices podem variar entre 0 e 199 e entre 0 e 3 sendo errado tentar aceder a índices fora destas gamas. Para aceder a um dado elemento usam-se 2 índices: notas [0][0] = 14.3; notas [199][3] = 10.2; Para saber a dimensão da tabela: int numlinhas = notas.length; int numcolunas = notas [0].length; 6

+ + 1 3 2 4 -!- -# É possível criar e inicializar uma tabela bidimensional numa única instrução: 1 0 1 0 1 0 ( -- - - - Esta instrução cria uma tabela de inteiros com duas linhas e três colunas inicializada com os valores dados Alternativa: (2 34++ 3FF4F++ F+F ' # 3 4++ 3 FF4$F++ 2 A F++ ". / ( (2 (##!! +**+ +**+!+**+ +**+ +**+!+**+!+**+! +**+!!+**+! +**+ +**+!+**+ 7

# +. / ( ---- - -!-- -!-#-%- --%-'- +**+ +**+!+**+ +**+ +**+!+**+!+**+! +**+!!+**+! +**+ +**+!+**+ >A. / (>A >A (2 (## 3224#2++ 3 4#++ 32G >A 2) (( >A 2 ) 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Como somar duas matrizes: A[n][m] B[n][m] C=A+B. ;( (2 1(2 9(2 55(HI);. ; DF 55(HI);. ; 1D1F! 3 FF4F++ F 1F! *. 6J>K 9* 3 FF4F++ 9FF+1F 9F+** 8

% Escreva um programa em Java para calcular o mínimo e o máximo valor numa matriz. % L. ;(2!! -/- -F *. ; >D* 34!++ 3FF4!F++ ;F. )3. )0 ;F+** 553 ; 55 M ; /8 55/( ( 8 55( (( 34!++ 3FF4!F++ 3;F4 ;F / F *. >< >. @. :7@ E*++*( ( *+/+*-*++** $ // Determinar qual a classificação mais alta da tabela. // Assume-se que as notas já foram introduzidas na tabela. float tabela[][] = new float[40][4]; // 40 alunos 4 testes Declaração de uma matriz tri-dimensional 10x10x10: int Mat3D [][][] = new int[10][10][10]; float notamax = tabela [0][0]; int lin = 0 col = 0; for (int i=0; i < tabela.length; i++) for (int j=0; j < tabela [0].length; j++) if (tabela [i][j] > notamax) { notamax = tabela [i][j]; lin = i; col = j System.out.println ("Nota máxima "+notamax); System.out.println ("Obtida pelo aluno "+lin); System.out.println ("No teste "+col); 9

((A. / ((A (2 #$ -F-N 34++ 3FF4#F++ 3NN4$N++ ((A FN0F0N 9 (2 $ 1(2 $ 9(2 $ 3 FF4F++ 3 NN4$N++ FN 1FN! 34++ 3FF4#F++ 3NN4$N++ ((A FN+** *9@ 1B 9* 3 4 ++ 3 FF4F++ 3 NN4$N++ 9FNFN+1FN 9FN+** -. - (()0 % L(L. (! *>; $O(D* /(2$55( ( ($ 3 4/)(++ 55P $( ( /=()(> +/ ((5(/)(55 M * M *+( ((. )( 8 / ( 3 4/)(++ (. )( 8 / 3Q( ( ( *< O( ( MD*+/( 10

/ Uma empresa de betão tem 3 fábricas (F1 F2 F3) que devem fornecer 3 obras de construção (O1 O2 O3). Os custos por transporte de uma carga de cada fábrica para cada obra são os representados na seguinte matriz: F1 F2 F3 O1 O2 O3 3 17 7 12 18 10 10 35 24 / Calcule o custo do esquema proposto. Escreva um programa em Java para calcular o custo deste cenário de transporte. Considere agora que as 3 fábricas podem produzir 4 12 e 8 cargas por dia e as obras precisam de 10 9 e 5 cargas por dia respectivamente. Suponha agora que o gestor das fábricas propõe o seguinte esquema de transporte representado na matriz seguinte: O1 O2 O3 F14 0 0 F2 6 6 0 F3 0 3 5 %" (()0 (( -!- - - "-$- - -!# ((R( #--- %-%-- --$ 3 4()(++ 3 FF4()(F++ +(F0(R(F *9 ( *+ Escreva um programa em Java que leia uma matriz de um ficheiro em disco matriz.txt. O programa deve indicar se é uma matriz identidade ou não. 4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 11

%"0 Escreva um programa em Java que leia duas matrizes de dois ficheiros em disco mat_a.txt e mat_b.txt. O programa deve indicar se as duas matrizes são iguais ou diferentes. Se forem diferentes deve indicar quantos são os valores 4 diferentes. 4 4 1 2 3 4 4 5 6 7 7 8 9 0 0 1 2 3 1 2 3 4 4 5 6 7 7 8 9 0 0 1 2 3 1 2 3 4 4 5 5 7 7 1 9 0 0 1 2 3 %# Escreva um programa em Java que verifique se uma matriz A[N][N] é ou não uma matriz simétrica. 1 2 3 4 2 5 6 7 3 6 9 0 4 7 0 3 Caso não seja uma matriz simétrica deve inverter a matriz da seguinte forma: 1 2 2 2 5 4 2 2 5 5 4 2 5 5 5 4 1 5 5 5 2 4 5 5 2 2 4 5 2 2 2 4 x1 x3 x2 x4 A = B = y1 y3 y2 y4 ( -!- -# (1 $-%- -8 C = A x B = x1* y1 + x2 * y3 x3* y1 + x4* y3 x1* y2 + x2* y4 x3* y2 + x4 * y4 )(55O( ( ; )(55O( ( ; (( ( O( ( (1 1)(55O( ( (1 (:(2( C ij = m k = 1 A ik x B kj com m igual ao número de colunas de A. 1 2 3 4 x = 5 0 6 1 5 4 15 14 5 = 1x5 + 2x0 3 4++ 3 FF4F++ 9F 3 NN4N++ 9F+N01NF 3 49)(++ 3 FF49)(F++ 9F+*S* 12

1/2 1 Será que cada número par é igual à soma de dois números primos? Verifique com a tabela de primos em baixo (N >= 8 até 52) Exemplos: 12 = 5 + 7 28 =... +... 40 =... +... 52 =... +... (!--$-- - - - '-!-!'- --# -# public class prime_even{ public static void main(string args[]){ int primes[] = {2357111317192329313739414346; int ijsoma; boolean found=false; for(int N=8; N < 54; N=N+2){ //testa os primeiros 50 pares found = false; i = 0; while((!found) (i < primes.length)){ j = 0; while((!found) (j < primes.length)){ if(i!= j){ soma = primes[i] + primes[j]; if(soma == N){ found = true; System.out.println(N+" = "+primes[i]+" + "+primes[j]); j++; // 2o while i ++; // 1o while 3 Considere que tem uma tabela de 10 inteiros que é inicializada com valores aleatórios: (2 55;(( 3 4 ++. )0 Escreva um programa para ordenar esta tabela. 3 (2 55;((. )0 55(T( *1(3( D* **++**+ ( (3( 55( 2(G( (( 3 4'++ 3Q+ ( + + ( (3( 55(( *3( D* **++**+ 13