matrizes.tex 3.82 KB
Newer Older
1 2 3 4
\documentclass[apostila.tex]{subfiles}


\begin{document}
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
5 6 7
\chapter{Matrizes}

Uma matriz é uma coleção de localizações para armazenamento de dados, todas contendo o mesmo tipo
8
de dados e acessadas pelo mesmo nome. Cada localização de armazenamento da matriz é chamada de
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
9 10 11
elemento da matriz.

\section{Matrizes Unidimensionais}
12

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
13 14
Uma matriz unidimensional é uma matriz que possui um único subscrito. Um subscrito é um número
entre colchetes colocado após o nome da matriz. Esse número é usado para identificar os elementos
15 16 17
individuais de uma matriz.

Quando uma matriz é declarada, o compilador reserva um bloco de memória com tamanho suficiente
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
18
para conter todos os seus elementos. Os elementos individuais da matriz são armazenados sequencialmente
19 20
na memória.

André Machado's avatar
André Machado committed
21 22
Matrizes unidimensionais são também chamadas de vetores.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
23 24
\section{Matrizes Multidimensionais}

25
Uma matriz multidimensional tem mais de um subscrito. Uma matriz bidimensional tem dois subscritos,
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
26
uma matriz tridimensional tem três subscritos e assim por diante. Não há qualquer limite ao número de
27 28
dimensões que uma matriz pode ter em C.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
29 30
\section{Inicialização de Matrizes}

31 32
Uma matriz pode ser total ou parcialmente inicializada no momento em que é declarada. Para fazer isto,
basta colocar um sinal de igualdade após a declaração da matriz e acrescentar uma lista de valores entre
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
33
chaves, separados por vírgulas. Estes valores serão atribuídos pela ordem aos elementos da matriz.
34

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
35
exemplos:
36 37


Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
38 39
\begin{lstlisting}
int matriz[4] = { 100, 200, 300, 400 }
40 41 42 43 44 45 46

//// equivale a:
// matriz[0] = 100; 
// matriz[1] = 200;
// matriz[2] = 300, 
// matriz[3] = 400;

47

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
48
int matriz[ ] = { 100, 200, 300, 400 }
49

50 51 52 53 54
//// equivale a:
// matriz[0] = 100; 
// matriz[1] = 200;
// matriz[2] = 300, 
// matriz[3] = 400;
55 56


57 58 59 60 61 62 63 64 65 66 67
int matriz[3][2] = { 1, 2, 3, 4, 5, 6 }

//// equivale a:
// matriz[0][0] = 1; 
// matriz[0][1] = 2;
//
// matriz[1][0] = 3;
// matriz[1][1] = 4;
//
// matriz[2][0] = 5;
// matriz[2][1] = 6;
68 69


70
// O que também seria equivalente a:
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
71 72 73 74 75
int matriz[3][2] = { {1, 2}, {3, 4}, {5, 6} }
\end{lstlisting}


\section{Referenciando um elemento na matriz}
76 77 78 79

Quando referenciamos um elemento da matriz, o subscrito (número que colocamos entre colchetes seguindo
o nome da matriz) irá especificar a posição do elemento na mesma.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
80 81 82
Os elementos da matriz são sempre numerados por índices iniciados em 0 (zero). Então, o elemento
referenciado pelo número 2 não será o segundo elemento da matriz, mas sim o terceiro. Assim, o último
elemento de uma matriz de tamanho N é referenciado por N-1.
83

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
84 85 86
\section{Lendo um número desconhecido de elementos}

Quando não sabemos de antemão quantos itens entrarão em nossa matriz, podemos usar uma constante
87 88 89
simbólica para definir o tamanho da matriz na declaração. Assim o tamanho da matriz poderá ser
facilmente modificado.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
90
exemplo:
91

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
92
\lstinputlisting{exemplos/matriz_com_define.c}
93 94


Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
95
\section{Exercício}
96

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
97 98
1. Crie uma função que receba como parâmetros um vetor e o seu tamanho, e que ordene esse vetor.
A função não deverá retornar nenhum valor.
99

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
100 101
2. Crie uma função que recebe como parâmetros um vetor, o seu tamanho e um valor X e que retorne
a primeira posição do vetor cujo valor é igual ao de X. Se a função não encontrar o elemento
102 103 104
procurado, ela deve retornar -1.

3. Escreva um programa em C para gerar cartões de loteria. Ele recebe como entrada o número de
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
105
cartões e a quantidade de números por cartão, além do limite inferior e superior destes números.
106 107 108
Ao final, o programa deve imprimir estes cartões. (DICA: para gerar números aleatórios, utilize a
função random() da biblioteca stdlib.h).

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
109
4. Escreva um programa em C que calcula a determinante de uma matriz 3x3.
110

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
111
5. Escreva um programa em C que calcula a multiplicação entre duas matrizes $R$ e $S$, sendo $R$ de
112
dimensão $i \times  j$, e $S$ de dimensão $j \times  k$.
113
\end{document}