LabMM3 - Aula teórica 10

19
JavaScript: Arrays Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 10, 27-10-2011

Transcript of LabMM3 - Aula teórica 10

Page 1: LabMM3 - Aula teórica 10

JavaScript: Arrays

Carlos SantosLabMM 3 - NTC - DeCA - UAAula 10, 27-10-2011

Page 2: LabMM3 - Aula teórica 10

Lembram-se do Nelo e da Idália?

“Resmas de gajas”

Page 3: LabMM3 - Aula teórica 10

Se o Nelo tiver que armazenar o nome da esposa?

var esposa = “Idália”;

• Limitações:

• uma variável só permite armazenar uma unidade de informação;

• por unidade de informação entende-se um conjunto de dados que, por si só, constituem uma unidade lógica. Por exemplo:

• “Herman José” é uma string cujo conteúdo pode ser considerada uma unidade de informação;

• “Herman José, Nilton, Nuno Markl, Bruno Nogueira” também é uma string mas o seu conteúdo não é uma unidade de informação.

Page 4: LabMM3 - Aula teórica 10

Como é que o Nelo pode armazenar o nome das resmas de gajas?

var gaja1 = “Asdrubal”;

var gaja2 = “Porfírio”;

...

var gajaN = “Zacarias”; // Não é uma solução adequada!

• Problemas com esta solução:

• o acesso sistemático à informação pode ser muito complexo;

• adicionar e/ou eliminar elementos implica alterações na própria estrutura de dados do algoritmo;

• por vezes, esta solução pode parecer a mais simples mas, na maioria dos casos, acaba por implicar problemas complexos.

Page 5: LabMM3 - Aula teórica 10

Arrays em Javascript

• Um array é uma estrutura de dados complexa onde podemos armazenar múltiplas unidades de informação de um modo lógico e acessível.

• um array é identificado por um nome/identificador com características semelhantes ao de uma variável;

• cada unidade de informação, um elemento, é armazenada num espaço próprio, acessível através de um índice que indica a posição no array;

• os elementos podem ser de qualquer tipo de dados, inclusivamente tipos de dados complexos;

• o número de elementos de um array é gerido dinamicamente permitindo aumentar ou diminuir a sua capacidade durante a execução do algoritmo.

Page 6: LabMM3 - Aula teórica 10

Arrays: estrutura

meuArray

0

1

2

3

“nome”

4324

1.54324

false

Identificador

Índice Elementos

Page 7: LabMM3 - Aula teórica 10

Arrays: operações base: declaração

• Declaração de um array vazio (sem elementos)

• var nomeArray = new Array();

• var nomeArray = [];

• var nomeArray = new Array(5); //declara um array inicialmente dimensionado para 5 elementos

• Declaração de um array com elementos iniciais

• var arrayLetras = new Array(“a”, ”b”, ”c”);

• var arrayNumeros = [5, 23, 13, 12];

“a”“b”“c”

5231312

Page 8: LabMM3 - Aula teórica 10

Arrays: operações base: escrita

• Escrita

• nomeArray[índice] = valor;

• Exemplos

• arrayLetras[1] = “x”;

• arrayLetras[3] = “d”;

“a”“x”“c”

“a”“x”“c”“d”

Page 9: LabMM3 - Aula teórica 10

Arrays: operações base: escrita

• Exemplos

• arrayLetras[5] = “z”; “a”“x”“c”“d”

undefined

“z”

Page 10: LabMM3 - Aula teórica 10

Arrays: operações base: leitura

• Escrita

• var elemento = nomeArray[índice];

• Exemplos

• var letraEscolhida = arrayLetras[1]; //??

• alert(arrayLetras[0]); //??

• arrayLetras[1] = arrayLetras[2]; //??

“a”“x”“c”“d”

undefined

“z”

Page 11: LabMM3 - Aula teórica 10

De regresso às resmas de gajas do Nelo

• Criar um array para ajudar o Nelo a guardar o nome das gajas atuais: Asdrubal, Porfirio e Zacarias:

var gajasNelo = new Array(“Asdrubal”,“Porfirio”,“Zacarias”);

• O Nelo chateou-se com a Asdrubal e arranjou logo a “Jair” para a substituir e ainda ficou com a sua amiga “Marcão”:

gajasNelo[0] = “Jair”;

gajasNelo[3] = “Marcão”;

“Asdrubal”“Porfirio”

“Zacarias”

“Jair”“Porfirio”

“Zacarias”“Marcão”

0

1

2

0

1

2

3

Page 12: LabMM3 - Aula teórica 10

De volta às resmas de gajas do Nelo

• O Nelo é muito esquecido e por isso temos que gerar uma mensagem de alerta que diga:

• “Nelo, mulher, as tuas gajas são: ..., ..., ..., ...”

var msg = “Nelo, mulher, as tuas gajas são: “;

msg = msg + gajasNelo[0] + “, “;

msg = msg + gajasNelo[1] + “, “;

msg = msg + gajasNelo[2] + “, “;

msg = msg + gajasNelo[3];

alert (msg); //??

“Jair”“Porfirio”

“Zacarias”“Marcão”

0

1

2

3

Page 13: LabMM3 - Aula teórica 10

Sistematizar o acesso a um array

var msg = “Nelo, mulher, as tuas gajas são: “;

msg = msg + gajasNelo[0] + “, “;

msg = msg + gajasNelo[1] + “, “;

msg = msg + gajasNelo[2] + “, “;

msg = msg + gajasNelo[3];

alert (msg); //??

// Versão com ciclo for

var msg = “Nelo, mulher, as tuas gajas são: “;

for (cont = 0; cont <=3; cont++) {

msg = msg + gajasNelo[cont] + “, “;

}

alert (msg); // Será que o resultado final é exatamente igual?

Page 14: LabMM3 - Aula teórica 10

Objetosno dia-a-dia

Um objeto é uma “coisa” definida por um conjunto de: propriedades- modelo- espaçoDeArmazenamento

métodos/funções- ligar(nr. telefone)- play(album)

Page 15: LabMM3 - Aula teórica 10

Objetos em programação (versão light)

• são também uma “coisa” definida por um conjunto de propriedades e métodos que podem ser reutilizados livremente na execução de um programa.

• as características de um objeto são definidas pela sua classe, que podem ser:

• built-in

• user defined

• a instanciação de um novo objeto é conseguida através da invocação do operador new.

Page 16: LabMM3 - Aula teórica 10

Operador new

• Instanciação de um array

• var nomeArray = new Array();

classe Array()

propriedades Array

métodos Array

objeto nomeArray

propriedades Array

métodos Array

new

Page 17: LabMM3 - Aula teórica 10

Informação e métodos úteis num Array()

• Quantos elementos tem o array neste momento?

• Como adicionar um elemento no final de um array?

• Como adicionar um elemento no início de um array?

• Como apagar um elemento qualquer do array e não deixar um espaço vazio?

• ...

Page 18: LabMM3 - Aula teórica 10

JavaScript: objeto Array: propriedades

• length: devolve o número atual de elementos de um array

// Exemplo: Versão alterada com ciclo for

var msg = “Nelo, mulher, as tuas gajas são: “;

for (cont = 0; cont <= gajasNelo.length - 1; cont++) {

msg = msg + gajasNelo[cont] + “, “;

}

alert (msg);

0

1

2

3

gajasNelo.length => 4

“Jair”“Porfirio”

“Zacarias”“Marcão”

Page 19: LabMM3 - Aula teórica 10

JavaScript: objeto Array: métodos

• Os mais comuns... mas existem mais!Método Descriçãoconcat() Joins two or more arrays, and returns a copy of the joined arrays

join() Joins all elements of an array into a string

pop() Removes the last element of an array, and returns that element

push() Adds new elements to the end of an array, and returns the new length

reverse() Reverses the order of the elements in an array

shift() Removes the first element of an array, and returns that element

slice() Selects a part of an array, and returns the new array

sort() Sorts the elements of an array

splice Adds/Removes elements from an array

toString() Converts an array to a string, and returns the result

unshift() Adds new elements to the beginning of an array, and returns the new lengthhttp://www.w3schools.com/jsref/jsref_obj_array.asp