Matrizes Unidimensionais. Definição Matrizes unidimensionais ou arrays são áreas contíguas de...
Embed Size (px)
Transcript of Matrizes Unidimensionais. Definição Matrizes unidimensionais ou arrays são áreas contíguas de...

Matrizes Unidimensionais

Definição
Matrizes unidimensionais ou arrays são áreas contíguas de memória que possuem o mesmo nome e o mesmo tipo
Para referir-se a uma localização ou elemento particular no array, são necessários o nome do array e o número da posição

Declaração de Arrays
Arrays possuem um número fixo de variáveis do mesmo tipo
A declaração e a alocação de arrays são operações distintas (em alguns casos)
Exemplos de declaração:Inteiro[] contadoresReal[] resultadosTexto[] nomes tipo[] identificador

Alocação
Sintaxe:
tipo[tamanho]; Exemplos:
contadores = Inteiro[10]
Resultados = Real[15]
nomes = Texto[10]

Organização
0 1 2 3 4 5 6 7 8 9
contadores
Cada caixa é uma variável do tipo Inteiro Os números acima são os índices das
variáveis Um array de tamanho 10 tem índices de 0 a
9 (em grande parte dos casos)

Índices de Arrays
Arrays podem conter qualquer tipo de valor Índices são usados para acessar valores
específicos do array Exemplos:
contadores[0] /* primeira variável em contadores*/contadores[1] /* segunda variável em contadores*/contadores[9] /* última variável em contadores */contadores[10] /* erro */

Expressões como índices
Índices de array não precisam ser constantes Índices de Array necessitam ser expressões
inteiras que resultam em um índice válido para o array
Exemplos:contadores[i]
contadores[2*i]
contadores[I/2]

Inicialização
Arrays podem ser inicializados por uma lista de elementos dados
Se a lista possui n elementos os índices serão de 0 a n – 1
Exemplo:Inteiro[] primos = {2, 3, 5, 7, 11, 13, 17, 19}

Inicializando Arrays de Texto
Texto[] NAME = { “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}


Repetição e Processamento
Inicializa contadores com 0, 10, 20, … , 90Inteiro i=0para(i < 10; i=i+1) faça contadores[i] = i * 10fimpara
Imprime o conteúdoInteiro i=0para (i < 10;i=i+1) faça imprimir contadores[i]fimpara

Capacidade
Arrays não podem crescer uma vez que eles foram alocados
Você pode alocar mais espaço do que você acredita que vai precisar
Se você escolher um valor baixo, ainda ficará sem espaço
Não é necessário usar todos os elementos de um array (mas a memória total de um computador não é infinita)

Busca
Esta repetição termina logo que encontra o valor 90 armazenado em resuladosLógico found = falso
Inteiro i = 0
Enquanto (i < size & !found) faça
se (resultados[i] == x)então
found = verdadeiro
senão
i=i+1
fimse
fimenquanto

Busca
Quando procurar por valores inteiros comparações exatas podem ser feitas
(A[i] == key) Comparar dois valores Reais para igualdade
nem sempre será uma operação correta Um modo melhor para Reais é ((A[i]–key) < epsilon) Epsilon deve ser um valor pequeno aceitável
para a aplicação

Processando Arrays simultaneamente Esta repetição conta quantos de estudantes
melhoraram o rendimento no segundo exameinteiro melhorou = 0
Inteiro i=0
para (i < size;i=i+1) faça
se (grades1[i] < grades2[i]) então
melhorou = melhorou+1
fimse
fimpara


Ordenação por seleção
Encontrar o menor elemento entre A[0]..A[n-1] e chamá-lo A[min]
trocar A[0] e A[min] fazendo com que A[0] contenha o menor elemento e A[1]..A[n-1] sejam não ordenados
Agora, encontrar o menor elemento entre A[1]..A[n-1] e chamá-lo A[min]
trocar A[1] e A[min] de modo que A[1] contenha o segundo menor elemento A[2]..A[n-1] sejam não ordenados
Faça de maneira similar para o restante dos elementos

SelectionSort – parte 1
Algoritmo selectionSort () Início /*inserir a criação/leitura do array A*/ Inteiro i=0 para ( i < size; i=i+1) faça inteiro j=i+1 inteiro min = i para(j < size; j=j+1)faça se (A[j] < A[min]) então min =j fimse fimpara

SelectionSort – parte 2
Real temp = A[i]
A[i] = A[min]
A[min] = temp
fimpara
fim

Bubble SortProcedimento bubbleSort (Inteiro[] &vet)Início Inteiro i=0 para ( i < size; i=i+1) faça inteiro j=i+1 para(j < size; j=j+1)faça se (vet[j] < vet[i]) então inteiro aux =vet[i] vet[i]=vet[j] vet[j]=aux fimse fimpara fimparafim

Arrays multidimensionais
Arrays podem ter mais do que uma dimensão
As chamadas matrizes podem ser vistas como arrays de arrays
Sintaxe
Inteiro[][] matriz = Inteiro[10][10]

Exercício 1
Completar o algoritmo selectioSort com a parte que está faltando

Exercício 2
Faça um algoritmo que leia 20 números entre 10 e 100, inclusive. O algoritmo deve imprimir o número somente se ele não for uma duplicata de um número lido anteriormente

Exercício 3
Utilize uma matriz bidimensional para resolver o seguinte problema: Uma empresa tem 4 vendedores que vendem 5 produtos. Uma vez por dia, cada vendedor entrega uma nota de cada tipo de produto diferente vendido. Cada nota contém 1) número do vendedor, 2) número do produto e 3) valor total vendido deste produto em reais.

Exercício 3
Faça um programa que leia o total de notas para cada produto para cada vendedor e calcule a comissão de cada vendedor. A comissão é calculada pela seguinte equação:
Comissão = 10%*(totalProd1)+ 20%*(totalProd2)+ 10%*(totalProd3)+ 20%*(totalProd4)+ 10%*(totalProd5)