Olá e bem-vindo.
Nesta palestra, eu quero falar sobre como inicializar uma matriz.
Nós sabemos como usar um array, sabemos como criar um array.
Mas especificamente, e se você quiser para atribuir valores iniciais específicos ao array, como
você faz isso?
Então você vai querer atribuir valores para os elementos de sua matriz na
maioria das vezes.
A razão pela qual você deseja atribuir valores iniciais a uma
matriz ou mesmo a variáveis é porque torna mais fácil detectar quando as
coisas estão dando errado.
Quando você não tem dados iniciais e você tenta fazer algo, você pode
causar problemas em seu programa.
Portanto, a inicialização é uma ótima coisa e você sempre quer fazer.
E usando uma matriz, há muitos, muitos elementos no array.
E então há uma maneira específica de você pode inicializar esses elementos.
Há diferente sintaxe que você pode usar.
Mas a inicialização é uma coisa boa e você sempre quer fazer isso.
Eu queria falar rapidamente como você pode fazer um array porque há
diferentes maneiras de fazer isso.
Assim como você pode atribuir valores para variáveis, quando eles são
declarados, você também pode atribuir valores iniciais para os elementos
de um array, quando ele é declarado.
Para inicializar os valores de uma matriz, você simplesmente forneça os valores em uma lista.
A lista é separada por vírgulas e a lista
inteira está entre chaves.
Parece algo assim.
Aqui estamos criando um array chamado contadores.
É do tipo int, tem 5 elementos.
E então o que estamos fazendo é tem as chaves e
não estamos usando nenhum índice aqui.
Você notará que acabamos de ter números separados por vírgulas.
O que isso está fazendo é definindo todos os 5 elementos na matriz de contadores
para 0, cada um dos elementos é 0.
Se tivermos outro array e nomearmos esta matriz de inteiros e também de tamanho 5
e então temos em nosso colchetes após o operador de atribuição
0 vírgula 1 vírgula 2 vírgula 3 vírgula 4, o que isso está fazendo?
Ele está atribuindo um inteiro primeiro array de inteiros do elemento para
0, o segundo elemento para 1, o terceiro elemento para 2, o quarto elemento para 3 e
o quinto elemento para 4.
É uma boa sintaxe onde você pode inicializar imediatamente a matriz
ao declará-la, apenas fornecendo números separados por vírgulas entre colchetes e
você deseja fazer isso.
Também não é necessário completamente inicialize todo o array.
Então, nos 2 anteriores exemplos, inicializamos todos os 5 elementos
de uma matriz de tamanho 5.
E se você só quiser inicializar alguns dos valores?
Se você fornecer valores iniciais que não são iguais ao número, o tamanho da matriz, então o os valores restantes são definidos como 0.
Então, se você fizer algo como onde você tem
uma matriz chamada dados de amostra do tipo fluxo, contém 500 elementos.
Mas nas chaves, todos você vê aqui estão os nossos 3 elementos.
O que isso vai fazer é vai inicializar
os 3 primeiros valores da amostra matriz de dados para 100 300 500. 5
E então os restantes 5 497 os elementos serão 0.
Então você não precisa especificar tudo.
Também existe este conceito de um inicializador designado.
Isso foi introduzido, acredito, no C99.
É um pequeno recurso agradável onde você pode escolher os elementos
que deseja inicializar.
Acho que em C99, eles adicionaram e em seguida, em C11, eles o tornaram opcional.
Então, dependendo de qual compilador você tem, você pode ou não ser
capaz de fazer isso.
Mas eu quero mencionar isso porque é um tanto comum.
Alguns compiladores não permitem você deve fazer isso após C99.
Mas é legal porque você pode na verdade, basta escolher e escolher.
Então você pode incluir um elemento número em um par de colchetes e, em seguida, especifique os
elementos da matriz que pode ser inicializado e você pode fazer
isso em qualquer ordem.
Então aqui está um exemplo.
Novamente, temos nosso array de dados de amostra.
É do tipo float.
Vai ter 500 de tamanho.
Mas aqui dentro do nosso cacheado chaves, temos índices adicionais.
Temos nossos colchetes em 2, diz colchetes 2 sub-2 é igual a 500. 5, sub-1 é igual a
300. 0 e sub-0 é igual a 100. 0
Eles são separados por vírgulas.
Tudo o que isso está fazendo é especificando a mesma coisa que tínhamos no
exemplo anterior, mas é fazendo isso em uma ordem diferente.
Mas você ainda vai têm elementos 0 ou o primeiro elemento igual a
100, o segundo elemento igual a 300 e o terceiro álbum igual
a 500. 5
Mas estamos especificando o qual índice inicializar bem entre
as chaves.
Outro exemplo aqui, temos um int array chamado arr, tem tamanho 6.
E quando o declaramos, estamos inicializar o quinto elemento
que é o último elemento para 212, todos os elementos serão 0.
Então aqui está um exemplo de tradicional inicialização onde você apenas declara
o nome do seu array e você fornece muitos números diferentes.
Neste exemplo, estamos declarando uma matriz e vai armazenar
todos os dias em cada mês.
E então, quando passamos por isso array e nós
o imprimimos, o que é muito comum, você normalmente usa loops para imprimir elementos em array
ou pelo menos iterar sobre eles.
O que estamos fazendo aqui é que estamos vou imprimir a cada
mês e quantos dias ele tem.
Então, vamos examinar isso em código blocos para mostrar a saída.
Então aqui está nosso exemplo.
Temos dias e meses e estamos inicializando o array.
O primeiro elemento a ser 31, próximo 28, próximo 31.
Você também percebe na linha 10, estamos usando um define para criar uma constante.
E a propósito em c, você também pode usar uma palavra-chave constante, sobre a qual falaremos
e outras coisas, que é outra maneira de criar constantes.
Mas agora estamos apenas conversando sobre
arrays e inicializá-los, muito fácil de fazer, separados por vírgulas entre chaves.
Então, o que isso vai mostrar
vai percorrer o array e vai olhar índice mais 1 e, em seguida, índice de dias.
Então vai dizer mês 1 tem quantos dias dependendo de quais são os
valores.
Então, estamos acessando o índice pelo nome da matriz e, em seguida, o valor
do subscrito, o índice valor e estamos usando uma matriz.
Portanto, é uma variável que muda em cada iteração.
Então, tentamos executar isso.
A saída para a qual você está indo veja se o mês um tem 31 dias, o mês 2 tem
28 dias meio que representa Janeiro fevereiro março abril, mas passa apenas
pelo array e imprime os dias.
Então, isso prova que o inicialização funciona.
E de novo, você vai querer para inicializar seus dados.
Agora vamos falar sobre outro exemplo e fale sobre a repetição de
elementos de inicialização.
Então aqui estaria outro exemplo, mas, neste exemplo,
usaremos um inicializador designado.
Vamos especificar o exato elementos que queremos inicializar.
Portanto, a linha principal que você deve aviso aqui é
aquele que diz em dias e meses onde estamos fazendo nossa inicialização.
Você notará dentro do encaracolado
colchetes que o primeiro elemento obtém 31, o segundo 28, mas então
há algo entre colchetes que diz 4, terá o valor 31.
Então temos uma vírgula, o elemento 5 terá 30, o
elemento 6 terá 31.
E então temos 1.
Isso significa que agora vamos sobrescrever o 28 e, na verdade, vamos
colocar um 29, colocá-lo como 29.
Portanto, é meio redundante aqui.
Nós realmente não precisamos fazer isso, mas você
realmente removeria o sub-1 porque 31 e 28, sub-1 já está atribuído aqui.
Mas parece que estamos dizendo sub-1 também pode ser o valor 29.
Então, isso é apenas usar o inicializadores designados.
E se quisermos repita o mesmo valor.
Agora em c, você sempre pode inicializar a matriz inteira com
o mesmo valor se você especificar 0.
Você sempre pode inicializar é como o parâmetro nulo.
Mas fora isso, c não fornecer quaisquer mecanismos de atalho para
inicializar o array elementos, pelo menos não em C89.
Você pode ver no C11, novamente, onde você pode inicializar o mesmo valor para todo
o array apenas usando os colchetes sem subscrito apenas o número.
Mas agora em C89 e C99, há nenhuma maneira de especificar uma contagem de repetição.
Não há como dizer todos os elementos deste raio deve ser 55, por exemplo.
Então, se fosse desejado inicialmente definir todos os 500 valores dos
dados de amostra para 1, todos os 500 teriam ser explicitamente atribuído, o que seria um
grande pé no saco.
Então, o que você vai acabar fazendo é basta colocá-los dentro de um loop.
Maneira mais fácil de iterar através de uma matriz, use um loop.
Bem, aqui está um exemplo rápido de como você pode inicializar todos os
elementos com o mesmo valor.
Neste caso, porém, estamos inicializar os primeiros
elementos para 0 1 4 9 e 16.
Isso é apenas inicializar todos os elementos restantes em um valor.
Essencialmente o 6º elemento do 10º elemento usando o índice 5 a 9.
Então é isso que este loop for está fazendo.
O primeiro loop for está dizendo que vamos inicializar elementos de 5
a 9 para ser I vezes I.
E então o segundo para loop aqui, deve ser
indentado, é mais difícil de ler.
O segundo loop for é, na verdade, passando por
toda a matriz e apenas exibindo os dados para mostram que os últimos
5 valores foram realmente inicializados.
Então, sempre que você quiser repetir o mesmo valor ou inicialize
com valores diferentes, basta usar um loop.
Novamente, a inicialização é importante.
Você vai querer inicializar, então certifique-se de que esta sintaxe é natural para
você, porque nós iremos estar usando arrays bastante em c.