Aprenda a trabalhar com conjuntos de dados homogêneos utilizando os vetores e matrizes, arrays, em C. Veja como é fácil trabalhar com múltiplos valores em uma mesma variável indexada.
Size: 422.44 KB
Language: pt
Added: Jul 05, 2023
Slides: 31 pages
Slide Content
Linguagens de Programação
Linguagem de programação C
Trabalhando com Arrays
Colecionando dados.
Definição geral
Vetor unidimensional
Declarando um vetor unidimensional
Referenciando um elemento
Inicializando um vetor unidimensional (Parte I)
Exemplo 01
Exemplo 02
Inicializando um vetor unidimensional (Parte II)
Exemplo 03 –Uso de vetores inteiros e de caracteres
A diretiva #define
Matriz –Vetor multidimensional
Exemplo 01
Inicialização de matrizes
Referências bibliográficas
05/07/2023Professor Paulo Nunes 3
Sumário
Umamatrizéumacoleçãodedadosdomesmotipoqueé
referenciadaporumnomecomum;
Seus elementos são acessados por meio de um índice;
O endereçomais baixo desse índicecorresponde ao primeiro
elemento e o mais alto ao último;
As matrizes ocupam posiçõescontíguasna memória;
As “strings” são o tipo de matriz mais comum em C;
Matrizes podem ser:
Unidimensionaisou;
Multidimensionais.
05/07/2023Professor Paulo Nunes 4
Definição geral
Vetores
ArraysUnidimensionais
A declaração de um vetor é dada da seguinte forma:
tipo nome[tamanho]
Onde:
tipodefine o tipo de dado que será armazenado;
nomeé o nome da variável que armazenará os dados;
[tamanho]entrecolchetesvemotamanhodovetorounúmerode
elementosqueomesmopoderáconter.
Comoqualquervariável,asmatrizesdevemserdeclaradasantesda
suautilização;
EmC,oíndicedeumamatrizinicia-seem0(zero).Então,se
declararmosumamatrizde10elementos,teremosumíndicede0a
9.
05/07/2023Professor Paulo Nunes 6
Unidimensional ou Vetor
A declaração de um vetor é feita da seguinte forma:
05/07/2023Professor Paulo Nunes 7
Declarando um vetor unidimensional
Tipo de dado
“inteiro”.
“notas” é o nome
da variável.
5 é o tamanho do
vetor.
Na memória teremos:
05/07/2023Professor Paulo Nunes 8
Declarando um vetor
notas[0]
notas[1]
notas[2]
notas[3]
notas[4]
5 espaços alocados
na memória,
referenciados pelos
índices de 0 a 4.
Oselementossãoreferenciadospeloseunúmerodeíndice,
queindicaasuaposiçãodentrodovetor.
No exemplo a seguir, utilizamos um laço “for” para preencher
os elementos do vetor:
05/07/2023Professor Paulo Nunes 9
Referenciando um elemento
Laço para
preenchimento
do vetor.
O índice vai variar de 0 a 4, permitindo
assim que as notas sejam inseridas no
vetor em posições diferentes.
Na memória teremos:
05/07/2023Professor Paulo Nunes 10
Referenciando um elemento
5.7
6.7
9.6
7.3
5.5
notas[0]
notas[1]
notas[2]
notas[3]
notas[4]
As notas são
inseridas cada uma
em sua posição.
Comoumavariávelcomum,osvetorespodemserinicializadosjádurantea
declaração;
Exemplo:
intcontador[5] = {0, 0, 0, 0,0};
Intinteiros[5] = {0, 1, 2, 3, 4};
Vetores do tipo caractere são inicializados de maneira similar:
char vogais[5] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’};
Um vetor não precisa ser inicializado por completo:
floatdados[500] = {20.5, 10, 111.7};
Ostrêsprimeiroselementosforamdeclarados,orestanteserápreenchidocom
zeros.
Umaposiçãodeumvetorpodeserinicializadaespecificamente:
floatdados[500] = { [2] = 500.5, [1] = 300.0, [0] = 100.0 };
A inicialização também pode ser através de uma expressão:
intx = 123;
inta[10] = {[9] = x + 1, [2] = 2, [1] = 0, [0] = 10};
05/07/2023Professor Paulo Nunes 11
Inicializando um vetor
unidimensional
Exemplo 01 –Inicializando um vetor
05/07/2023Professor Paulo Nunes 12
Vetor com 10
posições.
As 5 primeiras posições são
inicializadas na declaração.
Laço “for” para inicialização dos
outros elementos do vetor.
Saída do programa.
Exemplo 02 –Média de notas
05/07/2023Professor Paulo Nunes 13
Entrada de
notas no vetor,
posição “i”.
Variável “soma”
recebe o somatório
das notas.Exibe o resultado
da média das
notas.
A linguagem C permite que um vetor seja declarado sem que
determinemos de imediato seu tamanho. Veja o exemplo:
05/07/2023Professor Paulo Nunes 14
Inicializando um vetor
unidimensional
Declaração do vetor.
Seu tamanho será determinado
pelo maior índice inicializado.
O laço vai até o tamanho do
índice do vetor, que é 6.
Saída do programa.
Outro exemplo de inicialização de vetores:
floatdados[] = { [0] = 1.0, [49] = 100.0, [99] = 200.0 };
No exemplo acima o tamanho do vetor é 100, pois 99 é o
maior índice declarado no vetor.
05/07/2023Professor Paulo Nunes 15
Inicializando um vetor
unidimensional
Atarefaéadedesenvolverumprogramaqueconverteumnúmero
inteiropositivodesuarepresentaçãobase10nasuarepresentação
equivalenteemoutrabase.
Comoentradasparaoprograma,vocêespecificaonúmeroaser
convertidoetambémabaseparaoqualdesejaqueonúmeroseja
convertido.
Oprimeiropassonodesenvolvimentodetalprogramaéconceber
umalgoritmoparaconverterumnúmerodebase10paraoutra
base.
Umalgoritmoparagerarosdígitosdonúmeroconvertidopodeser
informalmenteindicadocomosesegue:
Umdígitodonúmeroconvertidoéobtidotomandoomodulodo
númeropelonúmerodabase;
Onúmeroéentãodivididopelabase,comqualquerrestofracionário
descartado,eoprocessoérepetidoatéqueonúmerochegarazero.
05/07/2023Professor Paulo Nunes 16
Exemplo 03 –uso de vetores inteiros
e de caracteres
Número Número % 2 Número / 2
10 0 5
5 1 2
2 0 1
1 1 0
05/07/2023Professor Paulo Nunes 17
Exemplo 03 –uso de vetores inteiros
e de caracteres
Para escrever um programa que executa o processo de conversão anterior,
você deve levar algumas coisas em consideração:
Em primeiro lugar, o fato do algoritmo gerar os dígitos do número convertido em
ordem inversa. Não podemos esperar que o usuário leia o resultado da direita para a
esquerda, ou a partir de baixo da página para cima. Portanto, você deve corrigir esse
problema.
Ao invés de simplesmente exibir cada dígito como ele é gerado, você pode fazer o
programa armazenar cada dígito dentro de uma matriz. Então, quando você terminar
de converter o número, você pode exibir o conteúdo do arrayna ordem correta.
Em segundo lugar, você deve perceber que o programa deve ser especificado para
lidar com a conversão de números em bases até 16. Isto significa que quaisquer
dígitos do número convertido que estão entre 10 e 15 deve ser exibido usando as
letras correspondentes, de A aF. É ai que nossa matriz de caracteres entra em cena.
Examine o a seguir para ver como estas duas questões são tratadas. Este
programa também introduz o qualificador de tipo const, que é usado para as
variáveis cujo valor não mudam durante a execução do programa.
05/07/2023Professor Paulo Nunes 18
Exemplo 03 –uso de vetores inteiros
e de caracteres
Exemplo 03 –uso de vetores inteiros
e de caracteres
05/07/2023Professor Paulo Nunes 19
Define estes valores como
“constantes” dentro do programa.
Vetor para receber o número
convertido.
Exemplo 03 –uso de vetores inteiros
e de caracteres
05/07/2023Professor Paulo Nunes 20
Rotina para converter
o número para a base
indicada.
Rotina para exibir o
número na ordem
correta.
Observe o seguinte programa:
05/07/2023Professor Paulo Nunes 21
Diretiva #define
Nalinha6doprogramaanterior,temosaseguintedefinição:
#defineLIM6.Issofazcomqueoprogramasubstituaa
constanteLIMpor6ondeamesmaforencontrada.
Algumas diferenças entre o uso de #definee const:
#defineé um pré-processador , por isso deve ser definido no
cabeçalho do programa;
Uma constante definida por #define, não existe fisicamente na
memória;
consté uma palavra reservada em C;
05/07/2023Professor Paulo Nunes 22
Diretiva #define
05/07/2023Professor Paulo Nunes 23
Exemplo #define
Matrizes
ArraysMultidimensionais
É uma matrizdematrizes, pois os elementos de uma matriz
multidimensional são matrizes de uma dimensão;
A declaração pode ser feita da seguinte forma:
tipo nome[indice_1][indice_2];
A matriz bidimensional, duas dimensões, é a mais comum;
Onde:
tipoé o tipo de dado armazenado na matriz;
nomeé o nome identificador da matriz;
[indice_1][indice_2]...[indice_n] são os índices da matriz. O
número de elementos é conseguido multiplicando-se os índices
da matriz.
05/07/2023Professor Paulo Nunes 25
Matriz Multidimensional
Exemplo 01
05/07/2023Professor Paulo Nunes 26
Matriz bidimensional do tipo
“inteiro” de nome “num”
com 12 elementos (3x4).
A matriz possui 03 linhas e
04 colunas ([3][4])
Laço para variar a posição
das linhas da matriz, “t”.Laço para variar a posição
das colunas da matriz, “i”.
elemento [t][i] da matriz
Expressão para preencher a
posição [t][i] com seu elemento.
Imprime os elementos da
matriz.
Saída em tela.
Matrizes bidimensionais podem ser inicializadas de forma análoga
aos seus homólogos unidimensionais;
Elementos quando listados para a inicialização, os valores são
listados por linha.
Pares de chaves são utilizados para separar a lista de inicializadores
para uma linha, linha por linha;
Assim, podemos definir os elementos da seguinte forma:
05/07/2023Professor Paulo Nunes 27
Inicialização de matrizes
multidimensionais
Preste especial atençãoà sintaxeda declaraçãoanterior;
Note-se quevírgulas são necessáriasdepois de cadachave
quefechauma linha,excetono casoda linhafinal;
A utilizaçãodos pares de chavesé realmente opcional.Assim,
a declaraçãoanteriortambém poderia ter sidoescrita como
segue:
05/07/2023Professor Paulo Nunes 28
Inicialização de matrizes
multidimensionais
Tal como acontece com matrizes unidimensionais, não é necessário que
toda a matriz seja inicializada.
Uma declaração como:
inicializa apenas os primeiros três elementos de cada linha da matriz com
os valores indicados. Os demais valores são definidos como 0.
Note-se que, neste caso, os pares de chaves interiores são necessários para
forçar a inicialização correta. Sem elas, as duas primeiras linhas e os
primeiros dois elementos da linha 3 teriam sido inicializados em vez disso.
05/07/2023Professor Paulo Nunes 29
Inicialização de matrizes
multidimensionais