Você está na página 1de 53

PR

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Estruturas de dados homogêneos:


vetores, strings e matrizes

Disciplina: Fundamentos de Programação


Curso: Engenharia de Computação

Professora: Mariza Miola Dosciatti


mariza@utfpr.edu.br
Objetivos
• Compreender o que é uma estrutura de dados homogêneos.
• Entender o conceito e a manipulação de índices.
• Saber utilizar estruturas de dados homogêneos na
implementação de algoritmos computacionais.

• Item da ementa (Plano de Ensino):


– Estruturas de dados homogêneos: vetores.

UTFPR – Fundamentos de Programação 2


Sumário
1. Classificação dos tipos de dados
2. Ilustração do conceito de variável
3. Ilustração do conceito de vetor
4. Ilustração do conceito de matriz
5. Dados estruturados
6. Vetor
6.1. Inicialização de Vetores
6.2. Armazenamento em um vetor
6.3. Exemplo de vetor
7. Vetores de caracteres: strings
7.1. Declaração de tipos caractere
7.2. Conceito de vetor de caracteres
7.3. Leitura de strings
7.4. Saída de strings
7.5. Declaração de strings
7.6. Funções com strings
8. Vetores multidimensionais: matrizes
8.1. Declaração de matrizes
8.2. Atribuição de matrizes
8.3. Leitura e escrita de matrizes
UTFPR – Fundamentos de Programação 3
Problema
• Calcular a média aritmética de 5 alunos (sem usar vetor):
#include <stdio.h>
int main()
{
int nota0, nota1, nota2, nota3, nota4;
float media;
printf("Digite a nota do aluno 1: ");
scanf("%d",&nota0);
printf("Digite a nota do aluno 2: ");
scanf("%d",&nota1);
printf("Digite a nota do aluno 3: ");
scanf("%d",&nota2);
printf("Digite a nota do aluno 4: ");
scanf("%d",&nota3);
printf("Digite a nota do aluno 5: ");
scanf("%d",&nota4);
media = (nota0 + nota1 + nota2 + nota3 + nota4)/5.0;
printf("\nMedia das notas: %.2f\n", media);
return 0;
}
UTFPR – Fundamentos de Programação 4
Problema (cont.)
• Calcular a média aritmética de 5 alunos (usando vetor):
#include <stdio.h>
int main()
{
int notas[5], i;
float media=0;
for(i=0; i<5; i++)
{
printf("Digite a nota do aluno %d: ", i);
scanf("%d",&notas[i]);
media = media + notas[i];
}
media = media / 5.0;
printf("\nMedia das notas: %.2f\n", media);
return 0;
}
UTFPR – Fundamentos de Programação 5
Problema (cont.)
• Para calcular a média de 50 alunos (usando vetor):
#include <stdio.h>
int main()
{
int notas[50], i;
float media=0;
for(i=0; i<50; i++)
{
printf("Digite a nota do aluno %d: ", i);
scanf("%d",&notas[i]);
media = media + notas[i];
}
media = media / 50.0;
printf("\nMedia das notas: %.2f\n", media);
return 0;
}
UTFPR – Fundamentos de Programação 6
1. Classificação dos tipos de dados
• Tipos de Dados Simples (primitivos)
– inteiros: int
– reais: float e double
– caracteres: char
• Tipos de Dados Estruturados (abstratos)
– Homogêneos
• vetores e matrizes (array)
• cadeia de caracteres (string)
– Heterogêneos
• registros (struct)
• arquivos em disco
• classes e objetos (orientação a objetos)

UTFPR – Fundamentos de Programação 7


2. Ilustração do conceito de variável
• Declarar uma variável equivale a reservar espaço na memória para
armazenar temporariamente os dados manipulados durante a execução
do programa.
• A instrução int Mes; declara uma variável Mes do tipo inteira.

Memória - Uma variável se refere a um


endereço em qualquer lugar
Mes disponível da memória;
- Sua identificação ocorre pelo nome
da variável, neste caso o
identificador Mes;
- Esse espaço da memória somente
poderá armazenar valores inteiros.
Esses valores serão acessados por
meio do identificador Mes.

UTFPR – Fundamentos de Programação 8


3. Ilustração do conceito de vetor
• Declarar um vetor equivale a reservar um espaço na memória para armazenar
temporariamente dados. Esse espaço será dividido de acordo com o tipo de
dado que o vetor armazena. Assim, podem ser armazenados vários valores do
mesmo tipo, acessados por um mesmo nome de variável e individualizados
por um índice.
• A instrução int Meses[12]; declara um vetor identificado como Meses
do tipo inteiro com 12 posições, para armazenar 12 variáveis do tipo inteiro.

Memória - Na declaração da variável de


vetor é definido o tipo de dado, o
Meses identificador e a quantidade de
posições.

- Este vetor tem 12 posições,


0 1 2 3 4 5 6 7 8 9 10 11 cada uma indicada por um índice
0, 1, 2 ... 11 que será utilizado
para especificar o conteúdo
alocado em cada posição de
memória.
UTFPR – Fundamentos de Programação 9
4. Ilustração do conceito de matriz
• Declarar uma matriz é o mesmo que um vetor, porém a variável
é dividida em linhas e colunas.
• A instrução int Trimestres[4][3]; declara uma matriz
meses do tipo inteiro com 4 linhas e 3 colunas.
Memória
- Na declaração de uma variável
Trimestres tipo matriz bidimensional é
definido o tipo de dado, o
0,0 0,1 0,2 identificador e a quantidade de
posições na horizontal (linhas) e
na vertical (colunas).
1,0 1,1 1,2
- A matriz Trimestres tem 12
posições, cada uma indicada por
2,0 2,1 2,2
um índice que indica a linha e a
coluna, utilizado para
3,0 3,1 3,2
especificar o endereço do
conteúdo alocado nesta posição.

UTFPR – Fundamentos de Programação 10


5. Dados estruturados
• Em uma mesma estrutura de dados, é possível ter diversas variáveis de tipos
de dados simples agrupadas:

– Dados estruturados homogêneos: Os dados armazenados são do mesmo


tipo.
• Exemplo: int[10];
Para armazenar 10 valores inteiros.

– Dados estruturados heterogêneos: Os dados armazenados são de tipos


distintos.
• Exemplo:
struct Aluno
{
char Nome[100];
float GastosMensais;
int AnoNascimento;
};

UTFPR – Fundamentos de Programação 11


6. Conceito de vetor
• Vetores são listas indexadas de dados do mesmo tipo. Indexadas significa
que os valores desse conjunto são individualizados por meio de um índice.

• Um vetor representa um conjunto de valores do mesmo tipo (estrutura


homogênea) referenciáveis pelo mesmo nome e individualizados entre si
pela sua posição dentro desse conjunto (índice no vetor).

• Cada elemento do vetor pode ser acessado individualmente, lido ou


escrito sem regra ou ordem preestabelecida. Assim, os vetores são
estruturas de dados de acesso aleatório.

• Sinônimos: variáveis indexadas, variáveis compostas, variáveis subscritas,


arranjos, matrizes unidimensionais, tabelas em memória, arrays.

UTFPR – Fundamentos de Programação 12


6. Conceito de vetor (cont.)
• Vetores são também denominados de variáveis indexadas.
Indexada se refere à maneira como é feita a individualização
dos elementos do conjunto de dados: por meio de índice.
• Uma variável indexada pode ser definida como tendo um ou
mais índices.
– vetor, um único índice (unidimensional).
– matriz, dois índices (bidimensionais).
– matriz, com mais de dois índices (multidimensionais).

UTFPR – Fundamentos de Programação 13


6. Conceito de vetor (cont.)
• Declaração de um vetor
– Sintaxe
Tipo_de_dado Nome_vetor[Tamanho_vetor];

– Semântica
• Tipo_de_dado – determina o tipo de dado que será
armazenado no vetor. Pode ser qualquer um dos tipos de dados
simples da linguagem C.
• Nome_vetor – identificador (nome da variável) pelo qual os
dados do vetor serão acessados.
• Tamanho_vetor – quantidade de dados que podem ser
armazenados. Determina a faixa dos índices do vetor:
– 0 até Tamanho_vetor - 1

UTFPR – Fundamentos de Programação 14


6. Conceito de vetor (cont.)
• A instrução int Vet[5]; declara um vetor identificado como Vet do
tipo inteiro com 5 posições que permite armazenar 5 valores do tipo inteiro
que são individualizadas pelo índice, a posição desse valor no vetor.
• Como são 5 posições, o índice vai de 0 a 4.

Endereço Conteúdo Índice Vet Nome da variável


0022FF74 3 0 Vet[0] Referência à variável
0022FF76 5 1 Vet[1] em determinado índice
0022FF78 13 2 Vet[2]
0022FF80 10 3 Vet[3]
0022FF82 50 4 Vet[4]

Localização na memória

UTFPR – Fundamentos de Programação 15


6. Conceito de vetor (cont.)
• Na declaração de vetores devem ser definidos:
– O tipo de dado que será armazenado no vetor.
– O nome do vetor (identificador).
– O número de posições do vetor (seu tamanho).

• A declaração de um vetor para inteiros, de nome “vetor” e tamanho igual a 10:


int n = 10; // tamanho do vetor
int vetor[n]; // declaração do vetor

• A declaração de um vetor para reais, de nome “salarios” e tamanho igual a 20:


float salarios[20]; //declaração do vetor com definição de
tamanho

UTFPR – Fundamentos de Programação 16


6. Conceito de vetor (cont.)
• O número de posições de um vetor corresponde ao seu tamanho. Um vetor
de tamanho 10, pode armazenar até dez elementos distintos.
• Cada um dos elementos de um vetor é individualizado pela posição que ele
ocupa no vetor, que é identificada por um valor inteiro positivo (o índice).
• vetor[i] - “i-ésimo” elemento do vetor, sendo que o valor da variável “i”, o
índice, deve pertencer ao intervalo do índice do vetor, ou seja, 0  i  (n-1),
sendo n o tamanho do vetor.
• Na linguagem C, o primeiro índice de um vetor é “0”, portanto, um vetor de
tamanho 6 terá índices de 0 a 5.
Exemplo: vet[6] → vet[0], vet[1], vet[2], vet[3], vet[4], vet[5]

UTFPR – Fundamentos de Programação 17


6.1. Inicialização de Vetores
• A linguagem C permite a inicialização de vetores no momento
da sua declaração:
int vetor[10] = {17, 33, 21, 67, 81, 10, 45, 29, 79, 98};
Isso significa que vetor[0] terá o valor 17 e vetor[9] terá o valor 98.
#include <stdio.h>
int main()
{
int vetor[10] = {17, 33, 21, 67, 81, 10, 45, 29, 79, 98};
int i;
for(i=0; i<10; i++)
{
printf("%d\t", vetor[i]);
}
return 0;
}

UTFPR – Fundamentos de Programação 18


6.1. Inicialização de Vetores (cont.)
//Imprime o número de dias do ano até a data especificada
#include <stdio.h>
int main()
{
int dmes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int dia, mes, ano, total, i;
printf("Digite a data no formato DD/MM/AAAA: ");
scanf("%d%*c%d%*c%d",&dia,&mes,&ano);
//%*c lê caractere do teclado e não atribui a nada
if(((ano%4 == 0) && (ano%100 != 0)) || (ano%400 == 0))
{
dmes[1] = 29; //ano bisexto
}
total = dia;
for(i=0; i<mes-1; i++)
{
total = total + dmes[i];
}
printf("\nTotal de dias desde o inicio do ano: %d\n", total);
return 0;
} UTFPR – Fundamentos de Programação 19
6.2. Armazenamento em um vetor
int main()
{
int n = 5;
int a[n];

a[0] = 17;
a[1] = 33;
a[2] = 21;
a[3] = 67;
a[4] = 81;
}
a[índice]

0 1 2 3 4
a 17 33 21 67 81
UTFPR – Fundamentos de Programação 20
6.3. Características de um vetor
• Características do tipo vetor:
– Alocação estática de memória – as dimensões da estrutura
devem ser conhecidas no momento da sua declaração.
– Estrutura homogênea – dados armazenados são do
mesmo tipo.
– Alocação sequencial de memória – bytes contíguos.

UTFPR – Fundamentos de Programação 21


6.4. Exemplo de vetor
#include <stdio.h>
int main()
{
int i;
//declaração
int A[10], B[10];
//atribuição por entrada de dados
for (i=0; i<10; i++)
{
printf("Informe um valor para a posicao %d do vetor: ", i);
scanf("%d", &A[i]);
}
//atribuição por operação de valor de outro vetor
for (i=0; i<10; i++)
{
B[i] = A[i] * 2;
}
//saída de dados
for (i=0; i<10; i++)
{
printf("%d\t", B[i]);
}
return 0;
} UTFPR – Fundamentos de Programação 22
6.4. Exemplo de vetor (cont.)
//Média de 10 números. Imprimir os números menores que 7.
#include <stdio.h>
int main(void)
{
int i, numeros[10], soma=0;
float media;
for(i=0; i<10; i++)
{
printf("Informe o valor para a posicao %d do vetor: ", i);
scanf("%d",&numeros[i]);
}
printf("\nValores menores que 7: ");
for(i=0; i<10; i++)
{
soma = soma + numeros[i];
if (numeros[i] < 7)
{
printf("%d\t", numeros[i]);
}
}
media = soma / 10.0;
printf("\nMedia dos valores do vetor: %.2f\n", media);
return 0;
}

UTFPR – Fundamentos de Programação 23


6.4. Exemplo de vetor (cont.)
//Criar um vetor com 10 elementos inteiros e fornecer a
quantidade de elementos armazenados neste vetor que são pares.
#include <stdio.h>
int main()
{
int i, numeros[10];
for(i=0; i<10; i++)
{
printf("Informe o valor para a posicao %d do vetor: ", i);
scanf("%d",&numeros[i]);
}
printf("\nValores pares: ");
for(i=0; i<10; i++)
{
if (numeros[i]%2 ==0)
{
printf("%d\t", numeros[i]);
}
}
return 0;
}

UTFPR – Fundamentos de Programação 24


6.4. Exemplo de vetor (cont.)
//Criar um vetor chamado números com 10 elementos inteiros.
Implementar um programa para apresentar a seguinte saída:

Código fonte

UTFPR – Fundamentos de Programação 25


7. Vetores de caracteres: strings
• String - sequência de caracteres ASCII: letras, dígitos e
símbolos especiais.
– Cadeia, array, vetor, matriz de caracteres.
– Coleção de bytes terminada por um caractere NULL (‘\0’).
– Como nos vetores, os caracteres de uma cadeia podem ser
individualizados por meio de um índice que indica a
posição do caractere na string.

UTFPR – Fundamentos de Programação 26


7.1. Declaração de tipos caractere
Exemplo:
char Genero;
char Nome[35];
char Texto[256];

• Genero é uma variável que armazenará apenas um caractere denotado por


apóstrofos ou aspas simples (ex. ‘A').

• Nome é uma variável string que pode conter no máximo 34 caracteres,


indexados de Nome[0] até Nome[34]. Sendo que S[34] conterá o caractere
NULL (‘\0’) para representar o final da string.
– A validação do limite do vetor é responsabilidade do programador.

• Texto é uma string capaz de armazenar 256 caracteres, indexados de S[0] até
S[255]. Em S[255], ou após o último caractere armazendo, conterá o caractere
NULL (‘\0’) para representar o final da string.

UTFPR – Fundamentos de Programação 27


7.2. Conceito de vetor de caracteres
• A instrução char Texto[5]; declara um vetor de caracteres (string)
identificado como Texto do tipo char com 5 posições que permite
armazenar 4 valores do tipo caractere que são individualizadas pelo
índice, a posição desse caractere no vetor. Como são 5 posições, o índice
vai de 0 a 4. E o índice 4, ou menor, caso não seja armazenada uma string
de tamanho 4, terá o caractere ‘\0’ que indica final de string.

Endereço Conteúdo Índice Texto Nome da variável


0022FF74 A 0 Texto[0] Referência à variável
0022FF75 B 1 Texto[1] em determinado índice
0022FF76 C 2 Texto[2]
0022FF77 D 3 Texto[3]
0022FF78 \0 4 Texto[4]

Localização na memória
UTFPR – Fundamentos de Programação 28
7.3 Leitura de strings
• Para usar a função scanf() para leitura de strings (textos) que
contenham espaços é necessário indicar que a leitura prosseguirá até
ser encontrado o caractere enter. A leitura pára somente quando
pressinada a tecla <ENTER>.
• Exemplo:
#include <stdio.h>

int main()
{
char nome[35];

printf("Digite o seu nome: ");


scanf("%[^\n]s",&nome); //[^\n] indica para ler todos os caracteres até ser digitado enter

printf("\nNome informado: %s\n", nome);

return 0;
}
UTFPR – Fundamentos de Programação 29
7.3. Leitura de strings (cont.)
• A função gets() tem o objetivo de efetuar a leitura de dados do tipo string.
• A função gets() aceita caracteres em branco e coloca o caractere de
controle ’\0' somente quando for pressionada a tecla <ENTER>.
Exemplo:

#include <stdio.h>
int main()
{
char nome[35];
printf("Digite o seu nome: ");
gets(nome);
printf("\nNome informado: %s\n", nome);
return 0;
}

UTFPR – Fundamentos de Programação 30


7.4. Saída de strings
• A função puts() é o complemento de gets() . Imprime uma string e pula
linha.

Exemplo:

#include <stdio.h>
int main()
{
char nome[35];
printf("Digite o seu nome: ");
gets(nome);
printf("\nNome informado: ");
puts(nome);
return 0;
}

UTFPR – Fundamentos de Programação 31


7.5. Declaração de strings
• Para declarar um vetor de strings, usa-se uma matriz bidimensional de caracteres.
• Na declaração, o tamanho do índice esquerdo indica o número de strings e o tamanho
do índice direito especifica o comprimento máximo de cada string.
#include <stdio.h>

int main()
{
int i;
//12 meses com três caracteres cada
char nomeMes[12][4] = {"jan", "fev", "mar", "abr", "mai",
"jun", "jul", "ago", "set", "out", "nov", "dez"};

for (i=0; i<12; i++)


{
printf("%2d - %s\n", i+1, nomeMes[i]);
}
}

UTFPR – Fundamentos de Programação 32


7.6. Funções com strings
• Da biblioteca <string.h>
strlen (s1) – Retorna o tamanho de s1.

#include <stdio.h>
#include <string.h>

int main()
{
char nome[100];

printf("Informe o seu nome: ");


gets(nome);

printf("Seu nome tem %d caracteres.\n", strlen(nome));

return 0;
}

UTFPR – Fundamentos de Programação 33


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strcpy(s1, s2) – Copia s2 em s1.
#include <stdio.h>
#include <string.h>

int main()
{
char nome[20];

//strcpy(string_destino, string_origem);
strcpy(nome, "Fulano de Tal");

printf("Nome = %s", nome);


}

UTFPR – Fundamentos de Programação 34


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strcmp(s1, s2) – Utilizada para comparar o conteúdo de uma string.
Retorna 0 se s1 e s2 são iguais; menor que 0 se s1 < s2; maior eu 0 se s1 > s2.
#include <stdio.h>
#include <string.h>

int main()
{
int a, b, c;

a = strcmp("aaa", "bbb");
b = strcmp("bbb", "aaa");
c = strcmp("ccc", "ccc");

printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}

UTFPR – Fundamentos de Programação 35


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strcat (s1, s2) – Concatena duas strings, adicionando o conteúdo de S2 ao final de
S1, além do terminador (\0).
A primeira string deve ter espaço suficiente para conter a segunda, para que não
ocorra um "estouro de buffer".
#include <stdio.h>
#include <string.h>

int main()
{
char nome[20] = "Mariza ", sobrenome[20]= "Dosciatti";

strcat(nome, sobrenome);

printf("Nome completo: %s\n", nome);

return 0;
}

UTFPR – Fundamentos de Programação 36


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strchr(s1, ch) – Retorna um ponteiro para a primeira ocorrência de ch
(char) em s1.

#include <stdio.h>
#include <string.h>

int main()
{
char str1[40]="Eu adoro programar em C";
char *ptr;

ptr = strchr(str1, 'C');

printf("O caracter procurado no texto eh %s\n", ptr);


}

UTFPR – Fundamentos de Programação 37


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strstr(s1, s2) – Retorna um ponteiro para a primeira ocorrência de s2 em s1.

#include <stdio.h>
#include <string.h>

int main()
{
char str1[40]= "Eu adoro programar em C";
char str2[15] = "programar";
char *ptr;

ptr = strstr(str1, str2);

printf("A substring eh: %s\n", ptr);


}

UTFPR – Fundamentos de Programação 38


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strupr (S1) – Converte uma string para maiúsculas.

#include <stdio.h>
#include <string.h> //para strupr
#include <stdlib.h> //para gets

int main()
{
char str[20];

printf("Entre com a string: ");


gets(str);

printf("Convertendo para maiusculas: %s\n", strupr(str));

return 0;
}

UTFPR – Fundamentos de Programação 39


7.6. Funções com strings (cont.)
• Da biblioteca <string.h>
strlwr(S1) – Converte uma string para minúsculas.

#include <stdio.h>
#include <string.h> //para strlwr
#include <stdlib.h> //para gets

int main()
{
char str[20];

printf("Entre com a string: ");


gets(str);

printf("Convertendo para maiusculas: %s\n", strlwr(str));

return 0;
}

UTFPR – Fundamentos de Programação 40


7.6. Funções com strings (cont.)
• Da biblioteca <stdlib.h>
gets() – Para ler strings.

#include <stdio.h>

int main()
{
char nome[20];

printf("Informe o seu nome: ");


gets(nome);

printf("O nome eh: %s\n", nome);

return 0;
}

UTFPR – Fundamentos de Programação 41


7.6. Funções com strings (cont.)
• Da biblioteca <stdlib.h>
atof (s1) – Transforma uma string para float ou double.

#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[8]= "1234.99";
float x;

x = atof(str);

printf("A string %s convertida para float fica %.2f\n", str, x);

return 0;
}

UTFPR – Fundamentos de Programação 42


7.6. Funções com strings (cont.)
• Da biblioteca <stdlib.h>
– atoi(s1) – Transforma uma string para inteiro.

#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[8]= "1234.99";
int x;

x = atoi(str);

printf("A string %s convertida para inteiro fica %d\n", str, x);

return 0;
}

UTFPR – Fundamentos de Programação 43


7.6. Funções com strings (cont.)
• Da biblioteca <stdlib.h>
itoa(s1) – Transforma um inteiro para string.
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str[20];
int num = 65;

itoa(num, str, 2); //converte o numero em uma string, com base 2


printf("O valor da string eh: %s\n", str);
itoa(num, str, 8); //converte o numero em uma string, com base 8
printf("O valor da string eh: %s\n", str);
itoa(num, str, 10); //converte o numero em uma string, com base 10
printf("O valor da string eh: %s\n", str);
itoa(num, str, 16); //converte o numero em uma string, com base 16
printf("O valor da string eh: %s\n", str);
}

UTFPR – Fundamentos de Programação 44


8. Vetores multidimensionais: matrizes
• Matriz é um conjunto de variáveis do mesmo tipo referenciado por um
nome comum. Um elemento específico desse conjunto é acessado por
meio do nome da matriz e dos seus índices.

• Matrizes
– São tabelas de linhas e colunas ou de mais dimensões.
– Armazenam vetores dentro de vetores.

– Declarar um vetor bidimensional de inteiros denominado “matriz” de


tamanho 2 x 4, ou seja, 2 linhas por 4 colunas:

int matriz[2][4];

UTFPR – Fundamentos de Programação 45


8.1. Declaração de matrizes
Declarando um vetor bidimensional, ou matriz:
int A[2][4];
Referenciando as posições (índices) da matriz:
1ª Linha 2ª Linha
----------------------- ------------------------
A[0][0] = 17; A[1][0] = 13;
A[0][1] = 33; A[1][1] = 81;
A[0][2] = 21; A[1][2] = 97;
A[0][3] = 15; A[1][3] = 67;

0 1 2 3 j, coluna

A[i][j] 0 17 33 21 15
1 13 81 97 67

i, linha
UTFPR – Fundamentos de Programação 46
Exemplo de matriz de duas dimensões
//Imprime 50 combinações de jogos para a megasena
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int matriz[50][6], i, j;

srand(time(NULL));

for(i=0; i<50; i++)


{
for(j=0; j<6; j++)
{
matriz[i][j] = rand() % 60 + 1; //numero aleatório entre 1 e 60.
// O "+1" é para não ir de 0 a 59.
}
}
for(i=0; i<50; i++)
{
printf("Combinacao de %2d: ", i + 1);
for(j=0; j<6; j++)
{
printf("%2d ", matriz[i][j]);
}
printf("\n");
}
return 0;
} UTFPR – Fundamentos de Programação 47
8.1. Declaração de matrizes (cont.)
• A forma geral da declaração de uma matriz multidimensional segue a
seguinte sintaxe:

tipo nome[Tamanho1][Tamanho2][Tamanho3]...[TamanhoN];

• Exemplo: int tres[3][2][4];


• Onde cada um dos seus três elementos é uma matriz de duas dimensões.

UTFPR – Fundamentos de Programação 48


8.2. Atribuição de valores em matrizes
• A linguagem C permite a atribuição conjunta de valores
para uma matriz, o que pode ser feito pela inicialização
no momento da sua declaração.

• Exemplo:
int matriz[2][4] = {

{17, 33, 21, 15},

{13, 81, 97, 67}

};

UTFPR – Fundamentos de Programação 49


8.2. Atribuição de valores em matrizes
(cont.)
• Exemplo: int tres[3][2][4]; onde cada um dos seus três
elementos é uma matriz de duas dimensões.
int tres[3][2][4] = {
{
{1,2,3,4},
{5,6,7,8}
},
{
{9,3,5,7},
{4,2,1,6}
},
{
{9,3,5,7},
{4,2,1,6}
}
};
UTFPR – Fundamentos de Programação 50
8.3. Leitura e escrita de matrizes
//Exemplo: Ler e imprimir 3 notas de 5 alunos
#include <stdio.h>

int main(void)
{
int alunos=5, notas=3, matriz[alunos][notas], i, j;

for (i=0; i<alunos; i++)


{
for (j=0; j<notas; j++)
{
printf("Informe a nota %d do aluno %d: ", j+1, i+1);
scanf("%d",&matriz[i][j]);
}
}
for (i=0; i<alunos; i++)
{
for (j=0; j<notas; j++)
{
printf("%4d", matriz[i][j]);
}
printf("\n");
}
return 0;
}
UTFPR – Fundamentos de Programação 51
Referências
• SCHILDT, H. C Completo e total, 3ª ed. São Paulo:
Makron Books, 1996.
• MIZRAHI, V. V. Treinamento em linguagem C: curso
completo - módulo 1. São Paulo: McGraw-Hill, 1990.
• Materiais obtidos na Internet
• Slides baseados no material fornecido pela prof.ª
Beatriz Borsoi.
• Bibliotecas e funções:
http://www.liv.ic.unicamp.br/~bergo/mc102e/libc.php
?f=atof

UTFPR – Fundamentos de Programação 52


Dúvidas

• ???

UTFPR – Fundamentos de Programação 53

Você também pode gostar