SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
JavaScript: Arrays
Carlos Santos

LabMM 3 - NTC - DeCA - UA

Aula 12, 24-10-2013
Lembram-se do Nelo e da Idália?

“Resmas de gajas”
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 considerado 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.
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.
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 às 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 respetiva 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.
Arrays: estrutura
Identificador

meuArray
0

Índice

“nome”

1

4324

2

1.54324

3

false

Elementos
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”);!

“a”

5

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

“b”

23

“c”

13
12
Arrays: operações base: escrita
• Escrita

• nomeArray[índice] = valor;!
• Exemplos
• arrayLetras[1] = “x”;!

“a”

!

“x”

!

“c”

• arrayLetras[3] = “d”;

“a”
“x”
“c”
“d”
Arrays: operações base: escrita
• Exemplos
• arrayLetras[5] = “z”;

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

“z”
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”
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”);!
0

“Porfirio”

2

!

“Asdrubal”

1

!

“Zacarias”

• O Nelo chateou-se com o Asdrubal e arranjou logo o “Jair” para o substituir.
Pelo meio ainda ficou com o “Marcão”:

gajasNelo[0] = “Jair”;!
gajasNelo[3] = “Marcão”;

0

“Jair”

1

“Porfirio”

2

“Zacarias”

3

“Marcão”
De volta às resmas de gajas do Nelo
• O Nelo é muito esquecido e por isso temos de 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] + “, “;!

0

“Jair”

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

1

“Porfirio”

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

2

“Zacarias”

msg = msg + gajasNelo[3];!

3

“Marcão”

alert (msg); //??!
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?
Estrutura de repetição: for-in
variável que no decorrer da
execução do ciclo vai tomar
todos os valores dos índices
do objeto

array que se pretende iterar
todos os elementos

for ( index in nomeArray )!
{!
// código a executar!
}!
Estrutura de repetição: for-in (exemplo)
var msg = “Nelo, mulher, as tuas gajas são: “;!
for (cont = 0; cont <= gajasNelo.length - 1; cont++) {!
msg = msg + gajasNelo[cont] + “, “;!
}!
alert (msg);!
!

// versão com for-in!
var gajasNelo = new Array("Jair", "Marcolino", "Marco");!
for (var indexGaja in gajasNelo) {!
msg = msg + gajasNelo[indexGaja] + ", ";!
}!
alert (msg);
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 do array e não deixar um espaço vazio?

• ...
Objetos
no 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)
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.
Operador new
• Instanciação de um array

• var nomeArray = new Array();

classe Array()

objeto nomeArray

!

!

propriedades Array

new

propriedades Array

!

!

métodos Array

métodos Array
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

“Jair”

1

“Porfirio”

2

“Zacarias”

3

“Marcão”

gajasNelo.length -> 4
JavaScript: objeto Array: métodos
• Os mais comuns... mas existem mais!
Método
concat()
join()
pop()
push()
reverse()

Descrição
Joins two or more arrays, and returns a copy of the joined arrays
Joins all elements of an array into a string
Removes the last element of an array, and returns that element
Adds new elements to the end of an array, and returns the new length
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()
unshift()

Converts an array to a string, and returns the result
Adds new elements to the beginning of an array, and returns the new length
http://www.w3schools.com/jsref/jsref_obj_array.asp
Array: métodos: concat()
var parents = ["Jani", "Tove"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat(children);!
document.write(family);!
// ??!
!

var parents = ["Jani", "Tove"];!
var brothers = ["Stale", "Kai Jim", "Borge"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat(brothers, children);!
document.write(family);!
// ??

Os exemplos desta secção são retirados do w3schools
Array: métodos: concat()
var parents = ["Jani", "Tove"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat(children);!
document.write(family);!
// Jani,Tove,Cecilie,Lone!
!

var parents = ["Jani", "Tove"];!
var brothers = ["Stale", "Kai Jim", "Borge"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat(brothers, children);!
document.write(family);!
// Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone
Array: métodos: join()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.join() + "<br />");!
document.write(fruits.join("+") + "<br />");!
document.write(fruits.join(" and "));!
!

// ??!
// ??!
// ??
Array: métodos: join()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.join() + "<br />");!
document.write(fruits.join("+") + "<br />");!
document.write(fruits.join(" and "));!
!

// Banana,Orange,Apple,Mango!
// Banana+Orange+Apple+Mango!
// Banana and Orange and Apple and Mango
Array: métodos: pop()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.pop() + "<br />");!
document.write(fruits + "<br />");!
document.write(fruits.pop() + "<br />");!
document.write(fruits);!
!

// ??!
// ??!
// ??!
// ??
Array: métodos: pop()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.pop() + "<br />");!
document.write(fruits + "<br />");!
document.write(fruits.pop() + "<br />");!
document.write(fruits);!
!

// Mango!
// Banana,Orange,Apple!
// Apple!
// Banana,Orange
Array: métodos: push()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.push("Kiwi") + "<br />");!
document.write(fruits.push("Lemon","Pineapple")+"<br />");!
document.write(fruits);!
!

// ??!
// ??!
// ??
Array: métodos: push()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.push("Kiwi") + "<br />");!
document.write(fruits.push("Lemon","Pineapple")+"<br />");!
document.write(fruits);!
!

// 5!
// 7!
// Banana,Orange,Apple,Mango,Kiwi,Lemon,Pineapple
Array: métodos: reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.reverse());!
!

// ??
Array: métodos: reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.reverse());!
!

// Mango,Apple,Orange,Banana
Array: métodos: shift()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.shift() + "<br />");!
document.write(fruits + "<br />");!
document.write(fruits.shift() + "<br />");!
document.write(fruits);!
!

// ??!
// ??!
// ??!
// ??
Array: métodos: shift()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.shift() + "<br />");!
document.write(fruits + "<br />");!
document.write(fruits.shift() + "<br />");!
document.write(fruits);!
!

// Banana!
// Orange,Apple,Mango!
// Orange!
// Apple,Mango!

Mais conteúdo relacionado

Mais procurados

Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2garux
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyMarcel Caraciolo
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaFabrício Rissetto
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Luciano Ramalho
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Alan Justino da Silva
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4garux
 

Mais procurados (15)

Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2
 
Meta-programacao em python
Meta-programacao em pythonMeta-programacao em python
Meta-programacao em python
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e Scipy
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem moderna
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015
 
Floggy-IIBoot-2008-09-25
Floggy-IIBoot-2008-09-25Floggy-IIBoot-2008-09-25
Floggy-IIBoot-2008-09-25
 
String e IO
String e IOString e IO
String e IO
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
 

Semelhante a JavaScript Arrays - Uma introdução aos arrays em JavaScript

(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - ArraysCarlos Santos
 
(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionais(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionaisCarlos Santos
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05Carlos Santos
 
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de PerformanceAmélia Pessoa
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03wammendes
 
LabMM3 - Aula teórica 12
LabMM3 - Aula teórica 12LabMM3 - Aula teórica 12
LabMM3 - Aula teórica 12Carlos Santos
 
T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)Carlos Santos
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em JavaDaniel Brandão
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XMLiMasters
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 

Semelhante a JavaScript Arrays - Uma introdução aos arrays em JavaScript (20)

(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays
 
(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionais(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionais
 
Programação aula002
Programação aula002Programação aula002
Programação aula002
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de Performance
 
Java 06 Strings Arrays
Java 06 Strings ArraysJava 06 Strings Arrays
Java 06 Strings Arrays
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
LabMM3 - Aula teórica 12
LabMM3 - Aula teórica 12LabMM3 - Aula teórica 12
LabMM3 - Aula teórica 12
 
T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em Java
 
Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XML
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 

Mais de Carlos Santos

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?Carlos Santos
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialCarlos Santos
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosCarlos Santos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosCarlos Santos
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Carlos Santos
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoCarlos Santos
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Carlos Santos
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentCarlos Santos
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusCarlos Santos
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoCarlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)Carlos Santos
 

Mais de Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

JavaScript Arrays - Uma introdução aos arrays em JavaScript

  • 1. JavaScript: Arrays Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 12, 24-10-2013
  • 2. Lembram-se do Nelo e da Idália? “Resmas de gajas”
  • 3. 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 considerado 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.
  • 4. 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.
  • 5. 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 às 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 respetiva 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.
  • 7. 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”);! “a” 5 • var arrayNumeros = [5, 23, 13, 12]; “b” 23 “c” 13 12
  • 8. Arrays: operações base: escrita • Escrita • nomeArray[índice] = valor;! • Exemplos • arrayLetras[1] = “x”;! “a” ! “x” ! “c” • arrayLetras[3] = “d”; “a” “x” “c” “d”
  • 9. Arrays: operações base: escrita • Exemplos • arrayLetras[5] = “z”; “a” “x” “c” “d” undefined “z”
  • 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”
  • 11. 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”);! 0 “Porfirio” 2 ! “Asdrubal” 1 ! “Zacarias” • O Nelo chateou-se com o Asdrubal e arranjou logo o “Jair” para o substituir. Pelo meio ainda ficou com o “Marcão”: gajasNelo[0] = “Jair”;! gajasNelo[3] = “Marcão”; 0 “Jair” 1 “Porfirio” 2 “Zacarias” 3 “Marcão”
  • 12. De volta às resmas de gajas do Nelo • O Nelo é muito esquecido e por isso temos de 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] + “, “;! 0 “Jair” msg = msg + gajasNelo[1] + “, “;! 1 “Porfirio” msg = msg + gajasNelo[2] + “, “;! 2 “Zacarias” msg = msg + gajasNelo[3];! 3 “Marcão” alert (msg); //??!
  • 13. 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?
  • 14. Estrutura de repetição: for-in variável que no decorrer da execução do ciclo vai tomar todos os valores dos índices do objeto array que se pretende iterar todos os elementos for ( index in nomeArray )! {! // código a executar! }!
  • 15. Estrutura de repetição: for-in (exemplo) var msg = “Nelo, mulher, as tuas gajas são: “;! for (cont = 0; cont <= gajasNelo.length - 1; cont++) {! msg = msg + gajasNelo[cont] + “, “;! }! alert (msg);! ! // versão com for-in! var gajasNelo = new Array("Jair", "Marcolino", "Marco");! for (var indexGaja in gajasNelo) {! msg = msg + gajasNelo[indexGaja] + ", ";! }! alert (msg);
  • 16. 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 do array e não deixar um espaço vazio? • ...
  • 17. Objetos no 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)
  • 18. 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.
  • 19. Operador new • Instanciação de um array • var nomeArray = new Array(); classe Array() objeto nomeArray ! ! propriedades Array new propriedades Array ! ! métodos Array métodos Array
  • 20. 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 “Jair” 1 “Porfirio” 2 “Zacarias” 3 “Marcão” gajasNelo.length -> 4
  • 21. JavaScript: objeto Array: métodos • Os mais comuns... mas existem mais! Método concat() join() pop() push() reverse() Descrição Joins two or more arrays, and returns a copy of the joined arrays Joins all elements of an array into a string Removes the last element of an array, and returns that element Adds new elements to the end of an array, and returns the new length 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() unshift() Converts an array to a string, and returns the result Adds new elements to the beginning of an array, and returns the new length http://www.w3schools.com/jsref/jsref_obj_array.asp
  • 22. Array: métodos: concat() var parents = ["Jani", "Tove"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(children);! document.write(family);! // ??! ! var parents = ["Jani", "Tove"];! var brothers = ["Stale", "Kai Jim", "Borge"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(brothers, children);! document.write(family);! // ?? Os exemplos desta secção são retirados do w3schools
  • 23. Array: métodos: concat() var parents = ["Jani", "Tove"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(children);! document.write(family);! // Jani,Tove,Cecilie,Lone! ! var parents = ["Jani", "Tove"];! var brothers = ["Stale", "Kai Jim", "Borge"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(brothers, children);! document.write(family);! // Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone
  • 24. Array: métodos: join() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.join() + "<br />");! document.write(fruits.join("+") + "<br />");! document.write(fruits.join(" and "));! ! // ??! // ??! // ??
  • 25. Array: métodos: join() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.join() + "<br />");! document.write(fruits.join("+") + "<br />");! document.write(fruits.join(" and "));! ! // Banana,Orange,Apple,Mango! // Banana+Orange+Apple+Mango! // Banana and Orange and Apple and Mango
  • 26. Array: métodos: pop() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.pop() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.pop() + "<br />");! document.write(fruits);! ! // ??! // ??! // ??! // ??
  • 27. Array: métodos: pop() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.pop() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.pop() + "<br />");! document.write(fruits);! ! // Mango! // Banana,Orange,Apple! // Apple! // Banana,Orange
  • 28. Array: métodos: push() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.push("Kiwi") + "<br />");! document.write(fruits.push("Lemon","Pineapple")+"<br />");! document.write(fruits);! ! // ??! // ??! // ??
  • 29. Array: métodos: push() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.push("Kiwi") + "<br />");! document.write(fruits.push("Lemon","Pineapple")+"<br />");! document.write(fruits);! ! // 5! // 7! // Banana,Orange,Apple,Mango,Kiwi,Lemon,Pineapple
  • 30. Array: métodos: reverse() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.reverse());! ! // ??
  • 31. Array: métodos: reverse() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.reverse());! ! // Mango,Apple,Orange,Banana
  • 32. Array: métodos: shift() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.shift() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.shift() + "<br />");! document.write(fruits);! ! // ??! // ??! // ??! // ??
  • 33. Array: métodos: shift() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.shift() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.shift() + "<br />");! document.write(fruits);! ! // Banana! // Orange,Apple,Mango! // Orange! // Apple,Mango!