Aula 07 (FT5): Estrutura de Dados (Array)

Propaganda
Linguagens de Programação Orientadas a Objetos
Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa
Marco Fagundes
[email protected]
Colaboração: Prof. Ricardo Santos
Aula 07 - Manipulação de Arrays
http://www.ufpa.br/sampaio/bd2003/lpoo
 Marco Fagundes
1 de 32
Roteiro



Revisão dos Objetos e Meta do Módulo de Fundamentos
Revisão do Básico de Java e Delphi
• Estrutura de Programas
• Tratamento de Operações
• Declaração de Variáveis
• Tipos de Dados e Estruturas de Controle
Declarando e Construindo Arrays
2 de 32
Módulo de Fundamentos

Módulo de Fundamentos
• Objetivo: Apresentar conceitos básicos e avançados da orientação a
objetos, os ambientes Java e Delphi e sua utilização no
desenvolvimento de GUIs
• Meta: Desenvolver uma aplicação (Java ou Delphi) com uma
GUI oferecendo as operações básicas de cadastro (incluir,
excluir, alterar e consultar) utilizando uma estrutura de dados
para armazenar objetos
3 de 32
Módulo de Fundamentos

Conteúdo
O que foi visto??
• Conceitos da Orientação a Objetos
• Ambiente JDK e Delphi
• Construção de GUI em Java e Delphi
• Programação Orientada a Eventos
• Estrutura de Dados (Array) e Tipo String
• Classe, Objeto, Atributos e Métodos
• Compartilhamento de Recursos (Dados e Operações) entre
Classes
• Recursos Avançados de GUI e Criação de Objetos
4 de 32
Módulo de Fundamentos


Duração: 13 Aulas
• Início: 01/04/2003
• Término: 29/04/2003
Datas Importantes
• Entrega do 1º Exercício: 23/04/2003
• Exame Escrito:29/04/2003
• Entrega da 1ª Etapa do Projeto Final: 06/05/2003
5 de 32
Destaques da Aula 1



Qualidade de Software
• Atributos de qualidade: Corretude, Eficiência, Manutenibilidade
Portabilidade, Reusabilidade, Robustez, Extensibilidade,
Integridade e Usabilidade
• Os fatores extensibilidade e reusabilidade estão diretamente
relacionados à manutenção de sistemas. Estima-se que 70% do
custo de software corresponde à manutenção
Paradigmas de Programação
• Imperativo
• Orientado a Objetos
• Funcional
• Lógico
Linguagens OO: Formalmente, para ser considerada uma
linguagem OO, esta precisa implementar quatro conceitos
importantes: abstração, encapsulamento, herança e polimorfismo
6 de 32
Destaques da Aula 2 - Estrutura de Programas

Java

Unit Delphi
class <nome> {
<declarações>;
public static void main (<parametro>)
{
<declarações>;
<instruções>;
}//fim main
interface
uses | const | type | var
}// fim class
end.
implementation
uses | const | type | var
initialization
<instruções>;
finalization
<instruções>;
Somente se a
classe for
executável
7 de 32
Destaques da Aula 2 - Operações

Java
class <nome> {
<declarações>;
Tipo_Retorno Nome_Método (<param>)
{
<declarações>;
<instruções>;
}// fim Nome_Método

Unit Delphi
interface
uses | const | type | var
public
procedure <nome>(<param>);
function <nome>(<param>): tipo;
implementation
uses | const | type | var
<definição_procedure>;
...(main - caso deseje execução)
}// fim class
Se o Tipo_Retorno for void então o
método é similar a um procedimento.
Caso contrário o método se parece com
uma função, necessitando do valor de
retorno. Assim uma instrução
obrigatória é:
return <resultado>;
<definição_function>;
...(initialization, Finalization)
end.
Shift+ Ctrl + C constroi o corpo
do procedimento/função.
8 de 32
Destaques da Aula 2 - Operações

Java
class <nome> {
<declarações>;

Variáveis de
Instância
Tipo_Retorno Nome_Método (<param>)
{
<declarações>;
Variáveis de
Locais
<instruções>;
}// fim Nome_Método
...(main - caso deseje execução)
}// fim class
Unit Delphi
interface
uses | const | type | var
Variáveis
public
Globais
...;
implementation
uses | const | type | var
procedure
<nome_classe>.<nome>(<param>);
var ...
begin
Variáveis
<instruções>;
Locais
end;
function
<nome_classe>.<nome>(<param>): tipo;
var ...
begin
<instruções>;
result:= <resultado>;
end;
...
9 de 32
end.
Destaques da Aula 2 - Exemplo de Operações

Java
class <nome> {
<declarações>;
void exibeMsg ( )
{
System.out.println (‘Exemplo Msg’);
}// fim
int somarVal (int v1, int v2);
{
return v1 + v2;
}// fim

Unit Delphi
interface
uses | const | type | var
implementation
uses | const | type | var
procedure <nome_classe>.exibeMsg;
begin
showMessage(‘Exemplo Msg’);
end;
function <nome-classe>
somarVal(v1,v2:integer):integer;
begin
result:=v1+v2;
end;
...(initialization, Finalization)
...(main - caso deseje execução)
}// fim class
end.
10 de 32
Destaque da Aula 2 - Testando Operações em Java

Compilando
class Teste {
void exibeMsg (String pMsg )
{
System.out.println (pMsg);
}
int somarVal (int v1, int v2)
 Executando
{
return v1 + v2;
}/
public static void main(String[ ] args)
{
Teste t = new Teste();
 Resultado
t.exibeMsg(‘Exemplo Msg’);
System.out.println (t.somarVal(50,70));
} //fim main Crie um diretório para
}// fim class
aplicação
Salve a aplicação para o
diretório criado

11 de 32
Destaques da Aula 2 - Testando Operações em Delphi





Crie um novo projeto no Delphi
Adicione um TButton ao Form
Altere as propriedades Name e Caption do Botão
Crie um diretório para a aplicação
Salve o projeto/units para o diretório criado
12 de 32
Destaques da Aula 2 - Testando Operações em Delphi

Definindo Procedures/Functions
interface
...
public
procedure exibeMsg (pMsg:String);
function somarVal (v1,v2: integer): integer;
implementation
...
procedure TForm1.exibeMsg(pMsg:String);
begin
showMessage(‘Exemplo Msg’);
end;
function TForm1.somarVal(v1,v2:integer): integer;
begin
result:=v1+v2;
end;
end.
13 de 32
Destaques da Aula 2 - Testando Operações em Delphi
Programando o Manipulador de eventos do Botão
Dar um duplo clique em cima do componente Botão


...
procedure TForm1.btnTesteMsgClick(Sender: TObject);
begin
exibeMsg(‘Exemplo Msg’);
showMessage(intToStr(somarVal(1,2)));
end;
end.

Resultado da Execução
14 de 32
Destaques da Aula 2 - Declaração de Variáveis

Variáveis Java
class <nome> {
<Tipo_Variável> <Nome_Variável>;
Tipo_Ret Nome_Método (<param>)
{
<Tipo_Variável> <Nome_Variável>;
<instruções>;
}
}// fim class

Exemplo Java
Variáveis Delphi

Variável de
class <nome> {
Instância
String codTurma;
public static void main (<parametro>)
{
int contador;
Variável
<instruções>;
Local
}//fim main
}// fim class
interface
uses | const | type | var
implementation
uses | const | type
var
<Nome_Variável>:<Tipo_Variável>;
...
end.

Exemplo Delphi
interface
uses | const | type | var
implementation
uses | const | type
var
contador: integer;
Variável
Global
...
end.
15 de 32
Destaques da Aula 2 - Tipos de Dados

Tipos Primitivos Java
•Numéricos (byte, short, int, long,
double e float)
obs: Não confundir com as Classes
Integer, Double, Long ...
•boolean (true e false)
•Char (‘ ...’ )
•Caracteres sem representação
visual
Ex: \n \t \’ \”
\\
• Estrutura de Dados (Array)
int a[ ]; (declarando)
a = new int[10]; (definindo)

Tipos Primitivos Delphi
•Numéricos (Integer,Longint,Byte, Real,
Double)
•Boolean (true e false)
•Char(‘.’) e String (‘...’)
•Operações: Length(String)
• Estrutura de Dados (Array)
Type (declarando tipo)
TintList = array[1..100] of integer;
Var (declarando variável)
arList: TintList;
16 de 32
Destaques da Aula 2 - Estruturas de Controle

Estruturas de Decisão Java
• if(condição)
<instrução>;
else --->opcional
<instrução>;
Exemplo:
if (i==5)
System.out.println(“i = 5”);
if (s.equals(“Teste”))
{
Instrução
i=3;
Composta ou
a=“OK”;
em Bloco
}
else
i=0;

Estruturas de Decisão Delphi
• if (condição) then
<instrução>
else
<instrução>;
Diferente do
Java, o “;” fecha
o comando if
Exemplo:
if (i=5) then
showMessage(“i = 5”);
if (s = ‘Teste’)
begin
i=3;
a=“OK”;
end
else
i=0;
Instrução
Composta ou
em Bloco
17 de 32
Destaques da Aula 2 - Estruturas de Controle

Estruturas de Decisão Java
• switch(variável)...case(valor)
Exemplo:
switch(i) {
case 0: System.out.println(“zero”);
break;
case 1: System.out.println(“um”);
break;
default:System.out.println(“pad”);
}

Estruturas de Decisão Delphi
• case<variável> of
valores:<instrução>;
else
<instrução>;
end;
Exemplo:
case (i) of
case 0: showMessage(“zero”);
case 1: showMessage(“um”);
else
showMessage(“padrão”);
end;
18 de 32
Destaques da Aula 2 - Estruturas de Controle

Estruturas de Repetição

Estruturas de Decisão Delphi
• while (condição)
<instrução>;
• while (condição) do
<instrução>
Exemplo:
int i=0, s=10;
Exemplo:
while (i<10)
{
Instrução
s = s + i;
Composta ou
i++;
em Bloco
}
System.out.println(i+s);
i=0; s=10;
while (i<10) do
begin
s = s + i;
i++;
end;
Instrução
Composta ou
em Bloco
showMessage(IntToStr (i+s));
19 de 32
Arrays



Arrays são objetos que armazenam variáveis do mesmo
tipo.
Pode armazenar tanto variáveis de tipos primitivos
quanto referências a objetos.
Os arrays são sempre tratados como objetos, mesmo
que eles sejam utilizados para armazenar tipos
primitivos.
20 de 32
Arrays



Todos os arrays Java são tecnicamente unimensionais.
Arrays bidimensionais são implementados como arrays
de arrays.
A declaração de um array não cria um objeto array ou
aloca espaço em memória. Na verdade, ela cria uma
variável de referência a um array.
21 de 32
Declarando Arrays

Existem diversas formas de declaração:
String[]s;
String []s;
String [] s;
String [ ] s;
String[] s;
String[
] s;
String s[];
String s [];
String s [
];
String[][]s;
String []s[];
String[][] [] s;
String [ ] [ ]s;
String[] s[][];
String[
] s[][ ];
String s[][];
String s [][][];
String[][] s [
];
22 de 32
Declarando Arrays

Existem diversas formas de declaração:
String[]s;
String []s;
String [] s;
String [ ] s;
String[] s;
String[
] s;
String s[];
String s [];
String s [
];
String[] s[];
String[][]s;
String s [] [
];
// extra white space ignored
// extra white space ignored
// extra white space ignored
// extra white space ignored
23 de 32
Construindo Arrays

Não inclua o tamanho do array nas declarações:
int[5] testArray; // Errado!

Todos os arrays são zero-based.

Arrays devem ser indexados por valores inteiros.

Ao acessarmos um array com um índice menor que 0 ou
maior que o comprimento do array gera uma exceção
ArrayIndexOutOfBoundsException em tempo de
execução.
24 de 32
Construindo Arrays


Uma vez que os arrays são Objetos, eles podem ser
inicializados com a palavra reservada new.
Os arrays são automaticamente inicializados com o valor
padrão do tipo em questão.
String[] s = new String[100];
boolean[] b = new boolean[4];
int[] i = new int[10][10];
25 de 32
Construindo Arrays
int[] testScores;
testScores = new int[4];
testScores
0 0 0 0
0
1
2
3
Valores
objeto array int [ ]
Índices
26 de 32
Construindo Arrays

Em Java, os arrays são alocados em tempo de execução,
de forma que podemos utilizar o seguinte código:
int arrSize = 100;
String[] myArray = new String[arrSize];
27 de 32
Construindo Arrays

No caso de “Arrays de Objetos”, o que temos na verdade
é um array de Referências a Objetos.
arrayObjs
Objeto
-
-
-
0
1
2
Objeto
Objeto
28 de 32
Inicializando Arrays

Inicializando com chaves.
String[] oneDimArray = {
"abc","def","xyz" };
int[] arr = new int[] {1,2,3};
int[][] twoDimArray = { {1,2,3}, {4,5,6},
{7,8,9} };
int[][] myArray = new int[5][];

Inicializando por elemento.
int[] arr = new int[2];
arr[0] = 2;
arr[1] = 1;
29 de 32
Inicializando Arrays

Inicializando por elemento.
int[][] scores = new int[3][];
scores[0] = new int[4];
scores[1] = new int[6];
scores[2] = new int[1];
30 de 32
Inicializando Arrays

Inicializando com loop.
int [] myArray = new int[3]
for(int i=0; i<(myArray.length); i++){
myArray[i] = i;
}
31 de 32
Inicializando Arrays

No caso de Arrays Dimensionais temos:
myArray
array int[][]
-
- null
0
1
array int[][]
2
myArray[0] myArray[1]
int [][] myArray = new int[3][];
myArray[0] = new int[2];
myArray[0][0] = 6;
myArray[0][1] = 7;
myArray[1] = new int[3];
myArray[1][0] = 9;
myArray[1][1] = 8;
myArray[1][2] = 5;.
6 7
9 8 5
0
0
1
int[]
1
2
int[]
32 de 32
Download