Você está na página 1de 13

Prof.

Luís Amaral
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas

Arrays unidimensionais ou vetores

Trata-se de uma estrutura de dados em que estes são todos do mesmo tipo,
agrupados num mesmo nome e identificados por esse nome e um índice.

Ex:
int notas[10] - declaração de um array com 10 elementos do tipo inteiro

notas
10 8 10 20 5 17 17 6 9 11

notas[0] notas[1] notas[…] notas[8] notas[9]


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais
notas

notas[0] notas[1] notas[…] notas[8] notas[9]

Instruções com arrays unidimensionais:

notas[3] = 100 -> coloca o valor 100 na posição 3 do array notas

cout << notas[4] -> imprime o valor que está na posição 4

cin >> notas[0] -> lê um valor para o índice 0 do array notas


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Ex1:

O programa armazena valores aleatórios entre 0 e 99 no array valores


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Mostrar os valores anteriormente armazenados no array


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Ex2:

O programa armazena valores introduzidos pelo utilizador, no array notas


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Mostrar os valores anteriormente armazenados no array


Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Ex3:
Somar os valores armazenados no array notas

- Implementar e analisar os exemplos anteriores (dar os nomes -> Array_Ex_1 e Array_Ex_2;


- Fazer os exercícios: 1 a 8 da ficha de trabalho.
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais
Ordenação de Arrays (algoritmo)
Considerando o seguinte array desordenado:
notas
12 7 17 6 18 13 14 9 13 15

- Para ordenar, tem que comparar o valor que está na 1ª


posição com o que está na segunda e se este for maior,
trocar de posição. Para isso tem que se utilizar uma variável
como “auxiliar”.
- Esta comparação terá que ser feita em todas as posições do
array.
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais
Ordenação de Arrays (algoritmo)
Considerando apenas as duas primeiras posições:
notas
12 7 17 6 18 13 14 9 13 15

Se notas[0] > notas[1] então


Aux = notas[0]
notas[0] = notas[1]
notas[1] = Aux

2
notas
12 7 17 6 18 13 14 9 13 15

1 3 notas
7 12 17 6 …
Aux
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais
Ordenação de Arrays (algoritmo)

notas
7 12 17 6 …

- De seguida, o algoritmo irá comparar a primeira posição do array notas[0]


com a terceira posição do array notas[2] e assim sucessivamente.

notas
6 12 17 7 …

- Depois, o algoritmo compara a segunda posição do array notas[1] com


a terceira posição do array notas[2]e assim sucessivamente.
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais
Ordenação de Arrays (algoritmo)
Ex. para ordenar o array notas em C++
(...)

for (i =0;i<10; i++)


{
for (j = i + 1; j < 10; j++)
{
if (notas[i] > notas[j])
{
Aux = notas[i];
notas[i] = notas[j];
notas[j] = Aux;
}
}
}
Sistemas Digitais e Arquitetura de Computadores Prof. Luís Amaral

Estruturas de dados estáticas


Arrays, vetores ou matrizes unidimensionais

Como os ciclos “for” estão “intercalados” terão o seguinte comportamento:

Valor do i Valor do j
0 1, 2, 3, 4, 5, 6, 7, 8, 9 if (notas[0] > notas[1]) ...
if (notas[0] > notas[2]) ...
if (notas[0] > notas[3]) ...
1 2, 3, 4, 5, 6, 7, 8, 9 …
2 3, 4, 5, 6, 7, 8, 9 …
3 4, 5, 6, 7, 8, 9 …
4 5, 6, 7, 8, 9 …
5 6, 7, 8, 9 …
6 7, 8, 9 …
7 8, 9 …
8 9 if (notas[8] > notas[9]) ...

9 Interrompe o ciclo

Você também pode gostar