Continuando
Vimos até agora que os arrays é o mesmo que matrizes, que os vetores do Portugol agora são chamados de matrizes ou arrays unidimensionais, que essas matrizes são como variáveis compostas porque armazenam mais de uma informação e que esses dados precisam ser do mesmo tipo.
Também vimos que a linguagem C não possui o tipo de dado string ou cadeia de caracteres, mas podemos caracteres em um array unidimensional do tipo char. Relembrou? Pois bem, agora esta na hora de ver que as matrizes podem ter mais de uma dimensão.
Arrays ou Matrizes Multidimensionais
Se o array unidimensional é um bloco contínuo de memória para armazenamento, uma matriz multidimensional são vários blocos contínuos de memória armazenando uma mesma variável composta. Você pode imaginá-la como uma tabela como apresentamos no curso de algoritmos, mas essa alegoria é apenas para fins didáticos.
Para termos uma visualização, podemos dizer que se um array unidimensional pode ser declarado assim:
int x[5]={1,3,5,7,9};
O 5 seria o número de colunas e sua representado alegórica seria algo assim:
Como já dissemos x[0] seria o 1, x[1] seria o 3 e assim por diante até x[4] que seria 9.
No caso de uma matriz multidimensional ela é declarada de forma semelhante, porém além do número de colunas temos que definir também o número de linhas. Assim são necessários dois abre e fecha colchetes. Onde o primeiro é o número de linhas e o segundo o número de colunas. Exemplo:
int x[2][5]={{1,3,5,7,9},{0,2,4,6,8}};
Seria alegoricamente representado assim:
Onde x[0][0] seria o 1, x[0][1] seria o 3, ... até o x[0][4] que seria o 9 e depois na linha de baixo teríamos o x[1][0] que seria o 0, ... assim sucessivamente até chegar o x[1][4] que seria o 8.
Usando o for() para ler matrizes multidimensionais
De forma semelhante aos arrays unidimensionais, as matrizes multidimensionais também podem ser lidas com laços do tipo for(), porém como temos linhas e colunas, são necessários dois laços para a leitura completa: Um para ler as linhas e dentro desse laço vai outro for() para ler as colunas. Exemplo:
- #include <stdio.h>
- int main() {
- int x[2][5]={{1,3,5,7,9},{0,2,4,6,8}};
- int linha, coluna;
- for (linha = 0; linha < 2; linha++) {
- for (coluna = 0; coluna < 5; coluna++) {
- printf("%d\n", x[linha][coluna]);
- }
- }
- return 0;
- }
Neste exemplo que você pode copiar e colar no GDB Online para testar eu usei uma variável inteira chamada linha e outra chamada coluna, mas na maioria dos exemplos desse tipo de situação você verá o uso de uma variável "i" para linhas e "j" para colunas. Assim nosso programa seria escrito dessa forma:
- #include <stdio.h>
- int main() {
- int x[2][5]={{1,3,5,7,9},{0,2,4,6,8}};
- int i, j;
- for (i = 0; i < 2; i++) {
- for (j = 0; j < 5; j++) {
- printf("%d\n", x[i][j]);
- }
- }
- return 0;
- }
Você também pode usar o scanf() para entrar com dados na matriz multidimensional. Exemplo:
- #include <stdio.h>
- int main() {
- int x[2][3];
- int linha, coluna;
- printf("Preencha os elementos da matriz:\n");
- for (linha = 0; linha < 2; linha++) {
- for (coluna = 0; coluna < 3; coluna++) {
- printf("x[%d][%d]:", linha,coluna);
- scanf("%d", &x[linha][coluna]);
- }
- }
- printf("Imprimindo os elementos da matriz:\n");
- for (linha = 0; linha < 2; linha++) {
- for (coluna = 0; coluna < 3; coluna++) {
- printf("x[%d][%d]:", linha,coluna);
- printf("%d\n", x[linha][coluna]);
- }
- }
- return 0;
- }
Referências
DAMAS, L. Linguagem C. Rio de Janeiro: LTC Editora, 2007.
GBD ONLINE. C for Beginners. Disponível em: <https://learn.onlinegdb.com/c_for_beginners> Acesso em 05 ago. 2024.
GBD ONLINE. C Programming Examples Disponível em: <https://learn.onlinegdb.com/c_program_examples> Acesso em 05 ago. 2024.
W3SCHOOLS. C Tutorial. Disponível em: <https://www.w3schools.com/c/index.php> Acesso em 05 ago. 2024.