3.
3.1

Arrays

(o

nome

mais

aproximado

em

português

é

conjunto de

variáveis, do mesmo tipo, indexadas)

Na linguagem de programação, os arrays podem ser considerados como as
estruturas de dados mais simples.
São variáveis, identificados por um nome, que contêm um conjunto de
elementos do mesmo tipo (e geralmente do mesmo tamanho). Estes são acessíveis
através do respectivo nome e da variável de índice correspondente à sua posição
no array.
Os arrays simplificam a utilização de muitas variáveis do mesmo tipo a
guardar em memória, com designações diferentes, agrupando-as numa só variável.
Entre as suas limitações, a mais notável é o facto de ter um tamanho fixo:
a dimensão é determinada no momento em que é criada, e não pode ser alterada
mais tarde.

Os arrays podem ter mais do que uma dimensão. Os mais utilizados são os
arrays unidimensionais (vectores) e os arrays bidimensionais (matrizes).

3.2

Vectores

Um vector (array unidimensional) é uma estrutura de dados que armazena uma
sequência de objectos, todos do mesmo tipo. Têm uma dimensão, utilizando, por
isso, apenas uma variável de índice para o acesso aos elementos.
Exemplo:

Legenda: o quadro acima apresenta o exemplo do vector nome que guarda, neste
caso, quatro valores, correspondendo a quatro nomes. Para tal, é utilizado um
índice (variável n) para aceder a cada um dos elementos do vector (nome[n]).

3.2.1 Operações com vectores
A declaração de vectores é feita na parte declarativa do programa, em
Pascal.

Sintaxe: para declarar um vector é utilizada a palavra Var, seguida do
nome da variável (nome), a seguir o tipo de variável (array) o intervalo dos
seus elementos ou índices ([1..n]) e o tipo de dado dos elementos do vector (of
<tipo de dado>).
Exemplo: é declarada uma variável com o nome km, do tipo array e com o
intervalo de índices de 1 a 10, cujos dados são do tipo real.
Sintaxe das instruções de leitura, de escrita e de atribuição de um vector:

3.2.2 Algoritmos de Ordenação
Os algoritmos de ordenação têm por finalidade organizar sequências de
elementos, do mesmo tipo, por ordem crescente ou decrescente dos seus valores.
Na maioria das vezes, estes algoritmos são criados para serem aplicados aos
elementos de um array, uma vez que, como já foi dito, este tipo de dados permite
guardar, numa mesma variável, um conjunto de elementos do mesmo tipo.
Existem inúmeros algoritmos de ordenação com maior ou menor grau de
dificuldade de implementação, de utilização da memória, entre outros aspectos.
Neste trabalho, vamos abordar os algoritmos de ordenação por: inserção
(Insertion Sort), selecção (Selection Sort) e bolha (Bubble Sort).
O algoritmo de ordenação por inserção (Insertion Sort) assemelha-se ao
processo de organização das cartas existentes na mão de um jogador.
Permite
ordenar os elementos de um vector, percorrendo-os da esquerda para a direita,
comparando-os dois a dois. Numa ordenação crescente, sempre que o elemento da
direita for menor que o anterior, irá,
por comparações sucessivas, ser
posicionado mais à esquerda na ordem correcta.
O algoritmo de ordenação por selecção (Selection Sort) permite ordenar os
elementos de um vector, realizando passagens sucessivas nos elementos, para
identificar o valor mínimo ou
máximo em cada uma delas.

O algoritmo de ordenação por bolha (Bubble Sort) permite ordenar os
elementos de um vector, percorrendo os seus valores da direita para a esquerda,
comparando-os com os das posições adjacentes. Neste processo de ordenação, é
sempre encontrado o valor mais baixo em cada passagem e colocado na posição mais
à esquerda possível de forma ordenada. Esta ordenação é obtida por comparação
dois a dois entre elementos adjacentes, ainda não ordenados, efectuando permutas
de posição sucessivas sempre que o valor da direita for menor que o da esquerda.
3.2.3 Algoritmos de pesquisa
Os algoritmos de pesquisa permitem determinar se um elemento existe num
vector e, caso exista, podem indicar a posição deste. Este tipo de algoritmos
pode ser aplicado em vectores desordenados ou ordenados e com elementos
repetidos (ou não).
Quando se aplica a um vector com elementos repetidos, pode-se efectuar a
pesquisa de forma a obter apenas a posição do primeiro elemento, apenas a
posição do último elemento ou a todas as posições em que o elemento repetido se
encontra. De seguida, abordam-se os algoritmos de pesquisa sequencial e de
pesquisa binária.
O algoritmo de pesquisa sequencial percorre todos os elementos de um
vector (da esquerda para a direita ou da direita para a esquerda). Esta pesquisa
termina quando se encontra o elemento ou, caso contrário, percorre todos os
elementos do vector.

O algoritmo de pesquisa binária permite efectuar a pesquisa de um elemento
nos elementos de um vector com ou sem elementos repetidos, obrigatoriamente
ordenados.
Neste processo de pesquisa são efectuadas divisões inteiras sucessivas por
dois (pesquisa binária) no número de elementos do vector, encontrando-se, desta
forma, a posição do elemento do meio. Este elemento vai ser comparado com o
elemento a pesquisar. Considerando que o vector está ordenado por ordem
crescente, dará origem a uma de três situações:
1. se o elemento do meio for igual ao elemento a procurar, a pesquisa
termina;
2. se o elemento do meio for menor que o elemento a procurar, a
pesquisa continua, repetindo-se o processo nos elementos da metade
direita do vector;
3. em último caso, se o elemento do meio for maior que o elemento a
procurar, a pesquisa continua, repetindo-se o processo nos elementos
da metade esquerda do vector.
Bibliografia
FONSECA, Dalila; PACHECO, Deolinda; MARQUES, Fernando; SOARES, Ricardo.
Aplicações Informáticas B 12º Ano. 1ª edição. Porto: Porto Editora, 2013;
http://pt.wikipedia.org/wiki/Array;
http://www.inf.unibz.it/~calvanese/teaching/ip/lecturenotes/uni12/node2.html;
http://www.ime.usp.br/~pf/algoritmos/aulas/array.html;
http://www.dicasdeprogramacao.com.br/o-que-sao-vetores-e-matrizes-arrays/;
http://www.cise.ufl.edu/~mssz/DatStrucAlg/DSAintro.html;
http://www.arnerobotics.com.br/eletronica/metodos_pesquisa_ordenacao.htm.

Arrays e Vetores

  • 1.
    3. 3.1 Arrays (o nome mais aproximado em português é conjunto de variáveis, domesmo tipo, indexadas) Na linguagem de programação, os arrays podem ser considerados como as estruturas de dados mais simples. São variáveis, identificados por um nome, que contêm um conjunto de elementos do mesmo tipo (e geralmente do mesmo tamanho). Estes são acessíveis através do respectivo nome e da variável de índice correspondente à sua posição no array. Os arrays simplificam a utilização de muitas variáveis do mesmo tipo a guardar em memória, com designações diferentes, agrupando-as numa só variável. Entre as suas limitações, a mais notável é o facto de ter um tamanho fixo: a dimensão é determinada no momento em que é criada, e não pode ser alterada mais tarde. Os arrays podem ter mais do que uma dimensão. Os mais utilizados são os arrays unidimensionais (vectores) e os arrays bidimensionais (matrizes). 3.2 Vectores Um vector (array unidimensional) é uma estrutura de dados que armazena uma sequência de objectos, todos do mesmo tipo. Têm uma dimensão, utilizando, por isso, apenas uma variável de índice para o acesso aos elementos. Exemplo: Legenda: o quadro acima apresenta o exemplo do vector nome que guarda, neste caso, quatro valores, correspondendo a quatro nomes. Para tal, é utilizado um
  • 2.
    índice (variável n)para aceder a cada um dos elementos do vector (nome[n]). 3.2.1 Operações com vectores A declaração de vectores é feita na parte declarativa do programa, em Pascal. Sintaxe: para declarar um vector é utilizada a palavra Var, seguida do nome da variável (nome), a seguir o tipo de variável (array) o intervalo dos seus elementos ou índices ([1..n]) e o tipo de dado dos elementos do vector (of <tipo de dado>). Exemplo: é declarada uma variável com o nome km, do tipo array e com o intervalo de índices de 1 a 10, cujos dados são do tipo real. Sintaxe das instruções de leitura, de escrita e de atribuição de um vector: 3.2.2 Algoritmos de Ordenação Os algoritmos de ordenação têm por finalidade organizar sequências de elementos, do mesmo tipo, por ordem crescente ou decrescente dos seus valores. Na maioria das vezes, estes algoritmos são criados para serem aplicados aos elementos de um array, uma vez que, como já foi dito, este tipo de dados permite guardar, numa mesma variável, um conjunto de elementos do mesmo tipo. Existem inúmeros algoritmos de ordenação com maior ou menor grau de dificuldade de implementação, de utilização da memória, entre outros aspectos. Neste trabalho, vamos abordar os algoritmos de ordenação por: inserção (Insertion Sort), selecção (Selection Sort) e bolha (Bubble Sort). O algoritmo de ordenação por inserção (Insertion Sort) assemelha-se ao processo de organização das cartas existentes na mão de um jogador. Permite ordenar os elementos de um vector, percorrendo-os da esquerda para a direita, comparando-os dois a dois. Numa ordenação crescente, sempre que o elemento da direita for menor que o anterior, irá, por comparações sucessivas, ser posicionado mais à esquerda na ordem correcta.
  • 3.
    O algoritmo deordenação por selecção (Selection Sort) permite ordenar os elementos de um vector, realizando passagens sucessivas nos elementos, para identificar o valor mínimo ou máximo em cada uma delas. O algoritmo de ordenação por bolha (Bubble Sort) permite ordenar os elementos de um vector, percorrendo os seus valores da direita para a esquerda, comparando-os com os das posições adjacentes. Neste processo de ordenação, é sempre encontrado o valor mais baixo em cada passagem e colocado na posição mais à esquerda possível de forma ordenada. Esta ordenação é obtida por comparação dois a dois entre elementos adjacentes, ainda não ordenados, efectuando permutas de posição sucessivas sempre que o valor da direita for menor que o da esquerda.
  • 4.
    3.2.3 Algoritmos depesquisa Os algoritmos de pesquisa permitem determinar se um elemento existe num vector e, caso exista, podem indicar a posição deste. Este tipo de algoritmos pode ser aplicado em vectores desordenados ou ordenados e com elementos repetidos (ou não). Quando se aplica a um vector com elementos repetidos, pode-se efectuar a pesquisa de forma a obter apenas a posição do primeiro elemento, apenas a posição do último elemento ou a todas as posições em que o elemento repetido se encontra. De seguida, abordam-se os algoritmos de pesquisa sequencial e de pesquisa binária. O algoritmo de pesquisa sequencial percorre todos os elementos de um vector (da esquerda para a direita ou da direita para a esquerda). Esta pesquisa termina quando se encontra o elemento ou, caso contrário, percorre todos os elementos do vector. O algoritmo de pesquisa binária permite efectuar a pesquisa de um elemento nos elementos de um vector com ou sem elementos repetidos, obrigatoriamente ordenados. Neste processo de pesquisa são efectuadas divisões inteiras sucessivas por dois (pesquisa binária) no número de elementos do vector, encontrando-se, desta forma, a posição do elemento do meio. Este elemento vai ser comparado com o elemento a pesquisar. Considerando que o vector está ordenado por ordem crescente, dará origem a uma de três situações: 1. se o elemento do meio for igual ao elemento a procurar, a pesquisa termina; 2. se o elemento do meio for menor que o elemento a procurar, a pesquisa continua, repetindo-se o processo nos elementos da metade direita do vector; 3. em último caso, se o elemento do meio for maior que o elemento a procurar, a pesquisa continua, repetindo-se o processo nos elementos da metade esquerda do vector.
  • 5.
    Bibliografia FONSECA, Dalila; PACHECO,Deolinda; MARQUES, Fernando; SOARES, Ricardo. Aplicações Informáticas B 12º Ano. 1ª edição. Porto: Porto Editora, 2013; http://pt.wikipedia.org/wiki/Array; http://www.inf.unibz.it/~calvanese/teaching/ip/lecturenotes/uni12/node2.html; http://www.ime.usp.br/~pf/algoritmos/aulas/array.html; http://www.dicasdeprogramacao.com.br/o-que-sao-vetores-e-matrizes-arrays/; http://www.cise.ufl.edu/~mssz/DatStrucAlg/DSAintro.html; http://www.arnerobotics.com.br/eletronica/metodos_pesquisa_ordenacao.htm.