Matrizes Unidimensionais. Definição Matrizes unidimensionais ou arrays são áreas contíguas de...

Post on 16-Apr-2015

118 views 0 download

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)