Buscar

Aula ICC Variaveis indexadas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ALGORITMOS
Variáveis Indexadas
Vetores e Matrizes
Variáveis Indexadas
VARIÁVEIS INDEXADAS ESTRUTURAS DE DADOS HOMOGÊNEAS 
•Nem sempre os dados do tipo primitivo são suficientes para representar todas e
quaisquer informações que possam surgir.
• Em muitas aplicações os dados a serem processados precisam ser organizados em
estruturas de dados mais elaboradas como, por exemplo, vetores, matrizes e registros.
•Os vetores e matrizes esses dados são representados pelos arrays.
•Array é um nome genérico para definir um vetor de qualquer dimensão.
•Uma variável pode ser interpretada como um elemento e uma estrutura de dados, como
um conjunto.
•Quando uma determinada Estrutura de Dados é composta de variáveis com o mesmo
tipo primitivo, temos um conjunto homogêneo de dados.
•Podemos considerar que uma variável composta homogênea seja como uma alcateia, e
seus elementos (variáveis) sejam como os lobos (que são da mesma espécie).
Variáveis Indexadas ARRAYS UNIDIMENSIONAIS - VETORES
VETORES
•As estruturas unidimensionais homogêneas são os chamados vetores.
• O array unidimensional é o array mais simples (é uma matriz constituída por uma única
linha ou por uma única coluna).
•Ele é apenas uma sequência linear de elementos guardados consecutivamente na
memória.
•Imagine um edifício com um número finito de andares, representado uma estrutura de
dados e seus andares, partições dessa estrutura.
•Visto que os andares são uma segmentação direta do prédio, estes serão chamados de
estrutura composta unidimensional (ou seja, uma dimensão).
Imagine o trabalho de um entregador, que tem que
entregar uma encomenda em determinado andar de
um edifício, por exemplo, do INSS.
Cada andar do edifício é um departamento.
Para realizar a entrega, é necessário que ele saiba
primeiramente o nome do edifício e depois se
preocupar com o número do andar.
Variáveis Indexadas ARRAYS UNIDIMENSIONAIS - VETORES
VETORES
O mesmo acontece com os vetores, visto que são compostos por diversos dados e, 
como podem existir muitos vetores, torna-se necessário determinar primeiro qual vetor 
contém o dado desejado e depois especificar em qual posição este se encontra.
Considere outro exemplo o conjunto de meses do ano. Os meses janeiro,
fevereiro,......, dezembro recebem o mesmo tipo de nome: mês.
MÊS(1) MÊS(2) MÊS(3) .... MÊS(7) .... MÊS(12)
Logo, a palavra MÊS pode representar 12 elementos diferentes, dependendo do
valor indicado dentro dos parênteses que é o índice do conjunto MÊS.
Por exemplo, julho se encontra na sétima posição do vetor MÊS.
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
MATRIZES
• Considere agora que o entregador tenha que entregar uma encomenda em um
determinado andar de um edifício residencial.
• Cada andar do edifício tem vários apartamentos.
• Para realizar a entrega, é necessário que ele saiba primeiramente o nome do edifício,
o número do andar e o número do apartamento
Considere que o entregador tenha
uma entrega para o Edifício Boa
Morada, terceiro andar,
apartamento 4.
Endereço: Boa Morada, andar 3,
apartamento 4.
Que poderia ser resumido para a
forma matricial:
Boa_Morada(3,4)
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
MATRIZES
•Neste exemplo, para identificar cada endereço do edifício, seria necessário utilizar uma
matriz 4x4, uma vez que o edifício tem 4 andares e cada andar tem 4 apartamentos
(Boa_Morada (I),(J), I=1,...,4 e J=1,...,4).
• O índice I representa os andares e o índice J representa o número dos apartamentos
•Exemplos:
Boa_Morada (1,J) J=1,..4 representa todos os apartamentos do primeiro andar
Boa_Morada (2,3)� segundo andar, apartamento 3
•Matrizes são estruturas de dados homogêneas que, para a identificação completa de
cada um dos seus elementos, necessita que seja especificado: o nome da matriz
seguido de dois índices que identificam os elementos da matriz.
• O primeiro índice indica a linha e o segundo elemento indica a coluna.
Variáveis Indexadas ARRAYS UNIDIMENSIONAIS - VETOR
DECLARAÇÃO DE UMA ARRAY UNIDIMENSIONAL - VETOR
•Para usarmos um vetor (ou uma matriz) precisamos primeiramente definir em detalhes
como é constituído o tipo e, depois, declarar uma variável, associando um identificador
de variável ao identificador do tipo vetor.
•O que diferencia a declaração de uma matriz da declaração de qualquer outra variável é
a parte que segue o nome, isto é, os pares de colchetes ([ e ]) ou de parênteses ( ),
dependendo da linguagem, que envolvem um número inteiro e indica ao compilador a
dimensão da array.
Sintaxe
Tipo nome[qtd] 
Ex:
Real a[ 10]
• declara a como um array do tipo real de dimensão 10.
Inteiro s[20]
• declara s como um array do tipo inteiro de dimensão 20.
Caracter m[10][15]
• declara m como um array do tipo caracter de dimensão 10 com
15 dígitos em cada elemento.
•qtd é a dimensão do vetor.
•É um valor inteiro.
•Indica a quantidade de
elementos do vetor.
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
DECLARAÇÃO DE UMA ARRAY UNIDIMENSIONAL - VETOR
CONVENÇÃO
•Seja o vetor a de n elementos:
a [ i ]
Nome do vetor índice do elemento 
O caso do prédio, o nome dado ao vetor é INSS e cada andar recebe um índice.
Para o primeiro andar è INSS(1), segundo andar è INSS(2), para o j-ésimo andar è INSS(j),
j=1,...,4.
Todos os elementos do vetor recebem o mesmo nome “INSS”, o que varia é o índice.
Os elementos dos arrays podem ser qualquer um dos tipos de dados básicos, podem ser
inteiro, real, caractere, lógico, complexo.
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
DECLARAÇÃO DE UMA MATRIZ BIDIMENSIONAL - MATRIZ
•Considere uma matriz A de L linhas e C colunas.
Sintaxe
Tipo nome[5] [10] 
Ex:
Real a[4][3]
•declara a como um array do tipo real com 4 linhas e 3 colunas
Inteiro s[5][5]
•declara s como um array do tipo real com 5 linhas e 5bcolunas
Caracter m[10][2][15]
•declara m como um array do tipo caracter com 10 linhas,
2 colunas e 15 dígitos em cada em.
• qtdL é a dimensão da linha da matriz.
• qtdC é a dimensão da coluna da matriz
• qtdL e qtdC são valores inteiros.
• qtdL*qtLC indica a quantidade de elementos da matriz
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
DECLARAÇÃO DE UMA MATRIZ BIDIMENSIONAL - MATRIZ
•Considere uma matriz A de L linhas e C colunas.
Sintaxe
Tipo nome[qtdL] [qtdC] 
Ex:
Real a[L][C]
•declara a como um array do tipo real com L linhas e C colunas
Inteiro s[L1][C1]
•declara s como um array do tipo real com L1 linhas e C21colunas
Caracter m[L2][C2][q]
•declara m como um array do tipo caracter com L2 linhas, C
colunas e q dígitos em cada em.
• qtdL é a dimensão da linha da matriz.
• qtdC é a dimensão da coluna da matriz
• qtdL e qtdC são valores inteiros.
• qtdL*qtLC indica a quantidade de elementos da matriz
Variáveis Indexadas ARRAYS BIDIMENSIONAIS - MATRIZES
DECLARAÇÃO DE UMA MATRIZ BIDIMENSIONAL - MATRIZ
M(1,1) M(1,2) M(1,3) M(1,4)
M(2,1) M(2,2) M(2,3) M(2,4)
M(3,1) M(3,2) M(3,3) M(3,4)
M(4,1) M(4,2) M(4,3) M(4,4)
M(5,1) M(5,2) M(5,3) M(5,4)
CONVENÇÃO
•os arrays começam na posição (1,1) até aos números que declaramos, sendo neste caso (l,c).
Seja a matriz M5x4 de 20 elementos (5 linhas e 4 colunas):
i para linha j para colunas
M[i][j]
Nome da Matriz
ÍNDICES: O índice de um elemento de uma array pode ser:
• Constante inteira a(p), m(p,p)� p=1
• Variável inteira a(p), m(p,p)� p=1,....,n
• Expressão tipo inteira a(p+2+p2), m(p,p)� p=1,....,n ALPHA(I, J-5, 2*I+7)
Variáveis Indexadas LEITURA E IMPRESSÃO DE VETORES
Algoritmo que lê a quantidade M de elementos de um vetor e em
seguida leia os elementos deste vetor. Depois imprima o vetor lido.
Algoritmo
Inteiras N[10],M,K
Início
Escreva ‘Digite quantidade de elementos <10’
Leia M
Escreva “Digite os ”, M, “ elementos do vetor”
Para k de 1 até M faça
Ler N(k)
Fim_Para
Escreva “ Elementos lidos “
Para k de 1 até M faça
Escreva N[k]
Fim_Para
Fim_Algoritmo
Variáveis Indexadas LEITURA E IMPRESSÃO DE MATRIZES
Algoritmo que lê as quantidades L e C de elementos de uma matriz e em
seguida leia os elementos desta matriz. Depois imprima o matriz lida.
Algoritmo
Inteiro X[10][10],i,j,L,C
Inicio
Escreva ‘Digite as dimensoes da matriz (L e C)’
Leia L, C
Escreva ‘Digite os elementos da matriz’
Para i de 1 até L passo 1
Para j de 1 até C passo 1
Leia X[i][j]
Fim_Para
Fim_Para
Escreva ‘A matriz lida eh'
Para i de 1 até L passo 1
Escreva (X[i][j], j=1,C,1)
Fim_Para
Fim
Variáveis Indexadas LEITURA E IMPRESSÃO DE MATRIZES
Algoritmo que lê as quantidades L e C de elementos de uma matriz e em
seguida leia os elementos desta matriz. Depois imprima o matriz lida.
A linha i é fixada em 1, i=1 e são lidos os valores de todas as colunas (j=1,...C), ou seja, são lidos os valores a1j.
Em seguida a linha i é fixada em 2, i=2 e novamente são e são lidos os valores de todas as colunas (j=1,...,C),
ou seja, são lidos os valores a2j e assim sucessivamente até que sejam lidas os elementos da linha L, aLj
Teste de mesa
i =1 j=1 � ler X(1,1) i=1, j=2� ler X(1,2) i=1, j=3� ler X(1,3) ........ i=1,j=C� ler X(1,C)
i =2 j=1 � ler X(2,1) i=2, j=2� ler X(2,2) i=2, j=3� ler X(2,3) ........ i=2,j=C� ler X(2,C)
i =L j=1 � ler X(L,1) i=L, j=2 � ler X(L,2) i=L, j=3 � ler X(L,3) ........ i=L,j=C � ler X(L,C)
M
Variáveis Indexadas OPERAÇÃO COM ARRAYS
M
,,
4
3
2
1
4
3
2
1












=












=
b
b
b
b
B
a
a
a
a
A
,
4
3
2
1
4
3
2
1
4
3
2
1












+
+
+
+
=












=
b
b
b
b
a
a
a
a
s
s
s
s
s
para i=1,L faça
s[i]� A[i]+B[i]
fim_para
SOMA DE DOIS VETORES
Condição de soma: as arrays devem ter mesma dimensão
Faça um algoritmo que leia dois vetores e realize a soma entre eles.
Ex: Considere dois vetores A e B de dimensão L=4.
Variáveis Indexadas OPERAÇÃO COM ARRAYS










=










=
333231
232221
131211
333231
232221
131211
,
bbb
bbb
bbb
B
aaa
aaa
aaa
A
ijijij baR
baR
baR
baR
bababa
bababa
bababa
BAR
+=
+=
+=
+=










+++
+++
+++
=+=
323232
121212
111111
333332323131
232322221121
131312121111
,
para i=1,L faça
para j=1,C faça
R[i][j]�A[i][j]+B[i][j]
fim_para
fim_para
SOMA DE DUAS MATRIZES
Condição de soma: as arrays devem ter mesma dimensão
Faça um algoritmo que leia duas matrizes e realize a soma entre elas. 
Ex: Considere matrizes ALxC e BLxC
Variáveis Indexadas OPERAÇÃO COM ARRAYS
,
333231
232221
131211










=
aaa
aaa
aaa
A
[ ]
[ ] 1Nji condição secundaria diagonal
ji condição principal diagonal
+=+=⇒
==⇒
312213
332211
aaads
aaadp
DIAGONAIS DE UMA MATRIZ DE ORDEM N
Variáveis Indexadas OPERAÇÃO COM ARRAYS










=










=
333231
232221
131211
333231
232221
131211
,
bbb
bbb
bbb
B
aaa
aaa
aaa
A
BAR *=



=
=
= ∑
=
cbj
lai
BAR kj
ca
k
ikij
,....,
,....,
*
1
1
1
33132312131113
32132212121112
31132112111111
***
***
***
bababar
bababar
bababar
++=
++=
++=
33332332133133
32332232123132
31332132113131
***
***
***
bababar
bababar
bababar
++=
++=
++=
Para i=1,la,1 faça
Para j=1,cb,1 faça
R[i][j]=0
Para k=1,ca,1 faça
R[i][j]=A[i][k]*B[k][j]+R[i][j]
Fim_para
Fim_para
Fim_para
PRODUTO DE DUAS MATRIZES 
Faça um algoritmo que leia duas matrizes Anxm e B pxq e realize a multiplicação entre elas.
Para poder multiplicar as matrizes � m=p 
ca�colunas de A, la� linhas de a, cb�colunas de b, lb�linhas de b.
Exemplo: considere n=la=3, m=ca=3 , p=lb=ca e q=cb=3. 
Variáveis Indexadas OPERAÇÃO COM ARRAYS
TRANSPOSTA DE UMA MATRIZ
Faça um algoritmo que leia uma matriz ALxC e obtenha a usa transposta (AT).










==










=
332313
322212
312111
333231
232221
131211
,
aaa
aaa
aaa
AR
aaa
aaa
aaa
A T
Rij= Aji
-
as posições das linhas e colunas se invertem.
-Uma vez lida a matriz A, (aij), para obter a transposta basta imprimir os elementos aji.
para i=1,L faça
para j=1,C faça
R[i][j] = A[j][i]
fim_para
fim_para
Variáveis Indexadas OPERAÇÃO COM ARRAYS
ORDENAÇÃO DE VETORES: Considere um vetor com os elementos 4 7 3 1 2
A filosofia adotada na construção desse algoritmo é a
seguinte:
�comparam-se os números 2 a 2, isto é, o
primeiro com o segundo, o primeiro com o
terceiro, e assim sucessivamente.
�Sempre que o seguinte for maior que o
anterior, troca-se a posição dos mesmos
Um processo semelhante é utilizado para realizar a
ordenação em ordem decrescente, bastando trocar o
sinal de maior para menor.
Variáveis Indexadas OPERAÇÃO COM ARRAYS
ORDENAÇÃO DE VETORES: Considere um vetor com os elementos 4 7 3 1 2
Dado um vetor, comparar todos os seus elementos um a um e ordena-los em ordem crescente e decrescente.
Algoritmo ordenacao
Início
Inteiras V[100],J,N,K,AUX
Escreva ‘DIGITE O COMPRIMENTO DO VETOR’
Leia N
Escreva ‘DIGITE OS ELEMENTOS INTEIROS DO VETOR’
Para k de 1 até N faça 
Leia V[k])
Fim_Para
Escreva ‘ VETOR ORIGINAL’
Para k de 1 até N faça 
Escreva V[k]
Fim_Para
Escreva ‘ ORDEM CRESCENTE’
Para k de 1 até N-1 faça 
Para J de k+1 até N faça 
Se (V[k] > V[J]) 
AUX=V[k]
V[k]=V[J] 
V[J]=AUX
Fim_Se
Fim_Para
Fim_Para
Para k de 1 até N faça 
Escreva V[k]
Fim_para
Escreva ‘ORDEM DECRESCENTE’
Para k de 1 até N-1 faça 
Para J de k+1 até N faça 
Se (V[k] < V[J]) 
AUX=V[k]
V[k]=V[J] 
V[J]=AUX
Fim_Se
Fim_Para
Fim_Para
Para k de 1 até N faça 
Escreva V[k]
Fim_Para
Fim
Variáveis Indexadas OPERAÇÃO COM ARRAYS
ORDENAÇÃO DE VETORES:
Fazer um algoritmo que construa dois vetores: o primeiro com o nome dos alunos e o segundo como as
notas dos alunos.
Ordene os dois vetores pela ordem crescente de notas e imprima os dois vetores ordenados.
Lógica:
Para resolver este problema é necessário ler dois vetores, ordenar um e o outro deve acompanhar a
ordenação.
Neste caso, deve-se utilizar duas variáveis auxiliares e cada uma delas deve ser do mesmo tipo da
variável do vetor que será ordenado. O critério de ordenação é feito apenas para um vetor, os demais
apenas acompanham o ordenamento.
Exemplo:
Aux é real, pois o vetor nota é real.
Aux2 é caracter, pois o vetor nome é caracter.
O critério de ordenação é feito com o vetor nota, o vetor nome apenas acompanha a ordenação.
Se nota[i]>nota[j] então
AUX=nota[i]
nota[i]=nota[j]
nota[J]=AUX
AUX2=nome[i]
nome[i]=nome[j]
nome[j]=AUX2
Fim se
Variáveis Indexadas OPERAÇÃO COM ARRAYS
ORDENAÇÃO DE MATRIZES E VETORES SIMULTANEAMENTE
Considere o problema de ordenar uma matriz e um vetor simultaneamente, sendo que a
matriz e o vetor têm tipos de dados diferentes ( por exemplo: matriz real e vetor caracter).
Para ordenar uma matriz, deve-se estabelecer qual a linha ou coluna que comandará a
ordenação.
As demais linhasou colunas acompanharão a ordenação.
Na prática será realizada uma ordenação de vetor (linha ou coluna).
Variáveis Indexadas OPERAÇÃO COM ARRAYS
ORDENAÇÃO DE MATRIZES E VETORES SIMULTÂNEAMENTE
Fazer um algoritmo que leia o nome de N alunos e as notas de 3 provas de cada um
deles. Calcule as médias de cada um.
As notas deverão ser lidas por meio de uma matriz 3x3 e depois a média deverá ser
acrescentada gerando uma nova matriz 4x4.
Ordene a matriz de acordo com a ordem decrescente de médias e ordene
simultaneamente o vetor nome. Imprima um relatório com o nome, as notas e as médias
ordenadas de cada aluno em ordem decrescente de médias.
Variáveis Indexadas OPERAÇÃO COM ARRAYS
Algoritmo ordenacao_matrizes_vetores
real aluno [20][4],aux
caracter nome[20][10] ,aux2[10]
Inteiro i,j,k,n
Escreva ‘Digite a quantidade de alunos <=20’
Leia n
//LEITURA DOS DADOS
Para i de 1 até n passo 1 faça
Escreva'Digite o nome do aluno ',i
Leia nome[i]
Escreva'Digite as tres notas do aluno',i
Para j de 1 até 3 passo 1 faça
Leia aluno[i][j]
fim para
aluno[i][4]=(aluno[i][1]+aluno[i][2]+aluno[i][3])/3
Fim_para
Como o tipos de dados são diferentes (caractere e
real) não podem ser lidos uma única matriz.
Deve-se utilizar um vetor para o nome e uma
matriz para as notas.
Como as notas e a média são todas locais, elas
podem ser alocadas em uma matriz.
Ordenação da coluna das médias.
A ordenação é feita como um vetor
convencional, já que a coluna é fixa (
coluna 4)
Variáveis Indexadas OPERAÇÃO COM ARRAYS
// Continuação
!ORDENAÇÃO DA COLUNA 4 DA MATRIZ, COLUNA 
DAS MÉDIAS
Para i de 1 até n-1 passo 1 faça
Para j de i até n passo 1 faça
Se(aluno[i][4] < aluno[j][4] ) então
AUX=aluno[i][4]
aluno[i][4]=aluno[j][4] 
aluno[j][4]=AUX
// Ajuste do vetor nome
AUX2=nome[i]
nome[i]=nome[j] 
nome[j]=AUX2
!ORDENAÇÃO DAS DEMAIS COLUNAS DA MATRIZ
Para k de 1 até n passo 1 faça
aux=aluno[i][k]
aluno[i][k]=aluno[j][k]
aluno[j][k]=aux
Fim_para
Fim_se
Fim_para
Fim_para
Ordenação do vetor nome acompanha a ordenação
da coluna 4.
Ordenação das demais colunas acompanha a
ordenação da coluna 4 através dos índices i e j.
O loop k indica que cada uma das demais colunas
serão ordenadas acompanhando a ordenação das
médias.
Variáveis Indexadas OPERAÇÃO COM ARRAYS
!IMPRESSÃO DOS DADOS
Escreva 'Nome Notas Media'
Para i de 1 até n 
Escreva nome[i]
Para j de 1 até 4 
Escreva aluno[i][j]
Fim_para
Fim_para
Fim Algoritmo

Continue navegando