Você está na página 1de 8

Conceito

Variáveis Compostas Homogêneas


São conhecidas na linguagem C como matrizes.

Matriz
Vetores e Matrizes É um conjunto de variáveis do mesmo tipo,
acessíveis com um único nome e armazenadas
de forma contínua na memória.
Individualização dos elementos deste conjunto de
variáveis é feita através da associação de índices.

Material cedido pelo prof. Daniel Callegari e pela profa. Letícia Lopes Leite

Conceito Conceito
Nome de uma matriz
É um identificador que obedece as mesmas regras de
As matrizes podem ter de uma a muitas dimensões
formação de identificadores de variáveis simples. Vetor = 1 dimensão
Refere-se a todos os elementos da matriz. Matriz = mais do que uma dimensão
Para referência a um elemento é necessário colocar o
nome da variável seguido de um ou mais índices Podemos ter vetores de int, double, etc
entre colchetes.
Vetores são utilizados para
Todas as matrizes
Manter os valores em memória.
Consistem em localizações contínuas de memória.
Menor endereço corresponde ao primeiro elemento. Reduzir a quantidade de variáveis.
Maior endereço corresponde ao último elemento.

Conceito Conceito
Índices são usados para acessar cada um dos Por exemplo: um conjunto A de 5 elementos é
elementos de um vetor representado como:
A0 A1 A2 A3 A4
O índice define a posição da variável dentro do
vetor. A é o nome de cada um dos 5 elementos.
Na linguagem de programação C, o primeiro
elemento fica na posição 0 (zero). Identificação de cada elemento é feita pelo nome
seguido do índice.
Assim, se tomarmos "K" como sendo o tamanho do
vetor, a última posição é a de índice "K-1". A0 é o primeiro elemento do conjunto.

A4 é o último elemento do conjunto.

1
Conceito Conceito
Agora, supondo que as notas de 10 alunos Para referenciar o terceiro elemento desta
estejam armazenadas em um vetor variável:
identificado por “nota”, a representação seria nota[2]
a seguinte: o conteúdo armazenado nesta posição é 9.0 e o
índice é a constante inteira 2.
Tipo Homogêneo

nota 6.0 7.0 9.0 6.0 7.5 9.1 10 5.0 7.8 8.0
nota 6.0 7.0 9.0 6.0 7.5 9.1 10 5.0 7.8 8.0
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

Conceito Declaração e Utilização


Utilizando-se uma variável “i” como índice de Declaração:
nota pode-se ter acesso a qualquer uma das <tipo> <identificadorVetor> [<tamanhoVetor>];

notas armazenadas, através da notação


Exemplo:
nota[i]
// declaração de um vetor de 100 posições
seja o valor de i = 5 em um determinado instante, float VetReais[100];
nota [i] seria substituída por nota[5], cujo valor é 9.1. // declaração de um vetor de 5 posições
int Vetor[5];

Vetor Vetor[0] = 60;


nota 6.0 7.0 9.0 6.0 7.5 9.1 10 5.0 7.8 8.0
Vetor[1] = 70;
0 1 2 3 4 5 6 7 8 9 60 70 90 60 75 Vetor[2] = 90;
Vetor[3] = 60;
0 1 2 3 4 Vetor[4] = 75;

Declaração e Utilização Exemplos


Acesso aos elementos do vetor: Colocar os números de 1 a 5 em Vetor:
Vetor[0]=8;//Coloca 8 na primeira posição de "Vetor" for(i=0; i<5; i++)
Vetor[4]=2;//Coloca 2 na última posição de "Vetor" Vetor[i]=i+1;

Preenchimento de um vetor com um dado: Colocar os números de 5 a 1 em Vetor:


for(i=0; i<5; i++) for(i=0; i<5; i++)
Vetor[i]=30; Vetor[i]=5-i;
for(i=0; i<=4; i++)
Vetor[i]=30;

2
Exemplos Exemplos
Uso de constantes para definir o tamanho de um Leitura dos dados de um vetor:
vetor: #define TAM_MAX 10
#define TAM_MAX 10
:
... int i;
double VetReais[TAM_MAX]; float Vet[TAM_MAX], val;
// coloca 5,4,3,2,1 no vetor
for(i=0; i<TAM_MAX; i++) for (i=0; i<TAM_MAX; i++)
VetReais[i]=TAM_MAX-i; {
printf("Digite um número: ");
Copiar os dados de um vetor para outro: scanf("%f", &val);
ou scanf("%f", &Vet[i]);
#define TAM_MAX 10 Vet[i] = val;
double VetReais[TAM_MAX], VetCopia[TAM_MAX]; }
for(i=0; i<TAM_MAX; i++)
VetCopia[i]=VetReais[i];

Exemplos Exemplos
Escrita dos dados de um vetor: Que valores são impressos na tela?
#define TAM_MAX 10
:
int i;
float Vet[TAM_MAX];
:
printf("Elementos do vetor: \n“);
for (i=0; i<TAM_MAX; i++)
printf("Vet[%d]=%.2f \n", i, Vet[i]);
:

Matriz Matriz
E qual a diferença entre um vetor e uma Leitura de Dados para uma Matriz:
matriz?
int i, j, notas [ 4 ] [ 40 ];
O vetor apresenta apenas uma dimensão for ( i = 0 ; i < 4; i++ )
enquanto a matriz apresenta mais de uma. {
printf (“Entre com as notas da disciplina %d”, i+1);
Exemplo de Declaração: for ( j = 0; j < 40; j++)
… {
printf (“Entre com a nota do aluno %d”, j+1);
int notas [4] [40];
scanf (“%d”, &notas [ i ] [ j ]);
… }
}

3
Matriz Matriz
Leitura de Dados para uma Matriz for ( i = 0 ; i < 4; i++ )
{
Controla as linhas da matriz
printf (“entre com as notas da disciplina%d”, i+1);
Controla as colunas da matriz
for ( i = 0 ; i < 4; i++ )
{
for ( j = 0; j < 40; j++)
printf (“entre com as notas da disciplina%d”, i+1);
{
for ( j = 0; j < 40; j++) printf (“entre com a nota do aluno %d”, j+1);
{ scanf (“%d”, &notas [ i ] [ j ]);
printf (“entre com a nota do aluno %d”, j+1); }
scanf (“%d”, &notas [ i ] [ j ]); }
}
}

Matriz
for ( i = 0 ; i < 4; i++ )
{
printf (“entre com as notas da disciplina%d”, i+1);
for ( j = 0; j < 40; j++)
{
printf (“entre com a nota do aluno %d”, j+1);
Strings
scanf (“%d”, &notas [ i ] [ j ]);
}
} Leitura dos dados para a matriz [linha] [coluna]

String String
Um caracter é uma letra, um numeral, uma Char
pontuação ou um símbolo. Declaração: char c;
Atribuição: char opcao = ‘A’;
Um string consiste em um conjunto de c = ‘n’;
caracteres, sendo, portanto, utilizado para
armazenar textos em geral. Como um char armazena apenas um
caracter, é necessário ter uma maneira de
armazenar uma seqüência de caracteres.

4
String String
String em C consiste em um conjunto de caracteres
terminado por nulo (‘\0’). Definição de uma string:
char str[21]; // string de 20 caracteres char nome[6]
char palavra[9] = “PUCRS”; //string de 8 caracteres nome da variável número de posições - 0 à 5
Cuidado!! Este tipo de atribuiç
atribuição para string é última posição ocupada pelo ‘\0’
válido apenas no momento da sua declaraç
declaração!!
Atribuição entre strings:
Constantes string Uma das maneiras de fazer atribuição é de posição
por posição.
Lista de caracteres entre aspas.
strings sempre começam na posição zero (0).
Exemplo: “Alo Mundo!”
nome[0] =‘M’;
Não é necessário adicionar nulo no final das constantes nome[1] = ‘A’;
string (compilador C faz isso automaticamente).

String String
Variável Conteúdo Endereço de memória Exemplo
#include<stdio.h>
nome [0] M 10 void main(){
char nome1[6];
[1] A 11 nome1[0] = ‘M’;
nome1[1] = ‘A’;
Declaração: nome1[2] = ‘R’;
[2] R 12 nome1[3] = ‘I’;
char nome[6];
nome1[4] = ‘A’;
[3] I 13 nome1[5] = ‘\0’;
printf(“O nome é %s\n”, nome1);
[4] 14 printf(“A terceira letra da string é %c\n”, nome1[2]);
A
}

[5] \0 15

String String
Leitura de strings do teclado: C suporta uma ampla gama de funções de
Função gets() manipulação de strings
Lê string até o primeiro enter É necessário incluir a biblioteca string.h
Função scanf() #include <string.h>
Lê string até o primeiro espaço em branco Algumas funções
Exemplo: strcpy(str1, str2)
... Copia str2 em str1
char palavra[20]; strcat(str1, str2)
gets(palavra); Concatena str2 ao final de str1
scanf(“%s”, palavra); int tam = strlen(str1)
... Retorna o tamanho de str1
int valor = strcmp(str1, str2)
Retorna 0 se str1 e str2 são iguais; < que 0 se str1<str2; > que 0
se str1>str2

5
String String
Exemplos Exemplo
#include<stdio.h>
#include<stdio.h>
#include<string.h>
main() { #include<string.h>
char nome1[12], nome2[12], nome3[15]; void main(){
strcpy(nome1, “Carolina”); char nome1[5], nome2[6], nome12[12]={'\0'};
strcpy(nome2, “Rodrigo”); strcpy(nome1, “Zeze”);
strcpy(nome3, “Ana Julia”);
strcpy(nome2, “Maria”);
printf(“Nome1 é %s\n”, nome1);
printf(“Nome2 é %s\n”, nome2); strcat(nome12, nome2);
printf(“Nome3 é %s\n”, nome3); strcat(nome12, “ ”);
} strcat(nome12, nome1);
#include<stdio.h> printf(“Concatenação de nomes é %\n”, nome12);
#include<string.h>
}
main(){
char s1[30];
strcpy(s1, “Marcia”);
printf(“%d\n”, strlen(s1));
}

String String
Exemplo Exemplo
#include <stdio.h>
#include<stdio.h>
#include <string.h>
#include<string.h> main()
main(){ {
char str1[5], str2[5]; char s1[80], s2[80];
gets(s1);
strcpy(str1, “aaaa”); gets(s2);
strcpy(str2, “aabb”); printf(“Comprimentos: %d %d\n”, strlen(s1), strlen(s2));
if(strcmp(str1,str2) == 0) if(!strcmp(s1, s2))
printf(“Strings iguais”); printf(“Strings iguais \n”);
strcat(s1, s2);
else printf(“Strings diferentes”); printf(“%s \n”, s1);
} strcpy(s1, “Isto eh um teste.\n”);
printf(“%s \n”, s1);
}

String
Execução se for digitado “alo” e “alo” no
exemplo anterior Passagem de
comprimentos: 3 3 Parâmetro de
As string são iguais
aloalo
Isto eh um teste.
Vetor

6
Passagem de Parâmetro de Vetor Passagem de Parâmetro de Vetor
Não é possível passar um vetor inteiro como um Passagem de um vetor como parâmetro:
argumento para uma função. Declarar o parâmetro da mesma forma que o vetor foi declarado.
O comprimento do vetor não importa à função (C não faz
verificação de limites).
É passado apenas o endereço, ou seja, um vetor é
sempre passado por referência A passagem dos elementos de um vetor como
Qualquer alteração em seus elementos altera a variável
parâmetro:
Idêntica à passagem de uma variável.
usada como parâmetro na chamada da rotina.
Passagem por valor: elemVet (no protótipo da função)
Passagem por referência &elemVet

Passagem de Parâmetro de Vetor Passagem de Parâmetro de Vetor


Exemplo Exemplo
#define TAM 10
void funcao1(int x[TAM]) // Vetor dimensionado #define TAM_MAX 10
{
int i; void ImprimeVet(int tam, int Vet[TAM_MAX])
for (i=0; i<TAM; i++)
x[i] = i; {
} int i;
for (i=0; i<tam; i++)
void funcao2(int x[]) // Vetor nao-dimensionado printf("%d", Vet[i]);
{
int i; }
for (i=0; i<TAM; i++)
printf("vetor[%d] = %d \n", i, x[i]); main()
} {
main() { int Notas[TAM_MAX];
int v[TAM]; :
funcao1(v); ImprimeVet(TAM_MAX, Notas); // Passa o vetor
funcao2(v); //'Notas' como parâmetro
}
}

Exercícios Exercícios
5) Implemente um programa que tenha as seguintes funções:
1) Declarar um vetor chamado “Vet” para armazenar 6 elementos do tipo a) Função que recebe por parâmetro um vetor de números inteiros e um
inteiro e inicializá-lo com o valor 0.
número inteiro indicando o número de elementos armazenados neste
2) Foi realizada uma pesquisa entre 100 habitantes de uma certa região. De vetor. Esta função deverá retornar o maior valor armazenado neste
cada habitante foi coletado o valor do salário. Faça um programa que vetor.
leia esses dados e armazene-os em um vetor. Depois, os valores b) Função que recebe por parâmetro um vetor de números inteiros e um
armazenados em cada posição do vetor devem ser exibidos na tela. número inteiro indicando o número de elementos armazenados neste
3) Implemente um programa que leia a nota de vinte alunos, armazenando- vetor. Esta função deverá retornar a média dos valores armazenados
as em um vetor. Depois, este programa deve percorrer o vetor para neste vetor.
apresentar a média das notas, qual é a nota mais alta e a sua posição Na função main deverá ser declarado um vetor de 100 posições para
no vetor, e qual é a nota mais baixa e a sua posição no vetor. armazenar a idade dos alunos do primeiro semestre do curso de
4) Elabore um programa que declare um vetor de caracteres e inicialize este Análise de Sistemas. Peça para o usuário digitar as idades e armazene-
vetor com os caracteres contendo o seu nome. Em seguida, usando um as no vetor até que seja digitado uma idade negativa ou até que o vetor
laço, apresente o conteúdo do vetor na tela do computador. seja totalmente preenchido. Depois apresente a média das idades e a
idade do aluno mais velhor chamando as funções implementadas.

7
Exercícios
6) Implemente um programa que verifique em uma matriz 3x3 qual o
maior valor e qual o menor armazenados.
7) Implemente um programa que leia uma matriz 6x6 e um valor A e
calcule o resultado da multiplicação do valor fornecido por cada
elemento da matriz, substituindo o valor original.

Você também pode gostar