Vous êtes sur la page 1sur 25

12 - Dados Estruturados

Vetores , Matrizes e Strings


Unesp Campus de Guaratinguet

Curso de Programao Computadores


Prof. Anbal Tavares
Profa. Cassilda Ribeiro
Ministrado por: Prof. Andr Amarante
Vetores, Matrizes e Strings 1
12.1 Dados Estruturados: Array

Array - Definio

Vetor ou Array a forma mais familiar de


dados estruturados.

Um array um conjunto de componentes do


mesmo tipo, que podem ser acessados
individualmente a partir de um nico nome.
Vetores, Matrizes e Strings 2
12.1 Array - Problema

Dada uma relao de 5


estudantes, imprimir o
nmero de matrcula de cada
estudante, cuja nota maior
do que a mdia da classe.

Vetores, Matrizes e Strings 3


12.1 Array - Problema

1o. Algoritmo

Incio algoritmo
Leia(num1,nota1,num2,nota2,num3,nota3,num4,
nota4,num5,nota5)

media (nota1+nota2+nota3+nota4+nota5) / 5.0


Se nota1 > media ento escreva (num1)
Se nota2 > media ento escreva (num2)
Se nota3 > media ento escreva (num3)
Se nota4 > media ento escreva (num4)
Se nota5 > media ento escreva (num5)
Fim algoritmo Vetores, Matrizes e Strings 4
12.1 Array - Soluo 1

1. Uma varivel para cada


nmero de matrcula 100 variveis

2. Uma varivel para cada nota + 100 variveis

3. 100 testes

Vetores, Matrizes e Strings 5


12.1 Array - Definio

Como estes dados tm uma relao entre si, podemos


declar-los com um nome NICO para todos os 100
elementos.
Seja, por ex, um conjunto de 100 nmeros = Lista

1 2 3 4 100

Lista[0] Lista[99]
Lista[3]

Vetores, Matrizes e Strings 6


12.1 Array - Definio

O elemento do vetor tem todas as caractersticas


de uma varivel e pode aparecer em expresses e
atribuies.
Lista[2] Lista[3] + Lista[20]

Para somar todos os elementos da Lista:


soma 0
para i 0 at 99 faa
soma soma + Lista[i]
Vetores, Matrizes e Strings 7
12.1Array - Caractersticas

As caractersticas bsicas de um Array so:

uma estrutura homognea, isto , formada de


elementos do mesmo tipo
todos os elementos da estrutura so igualmente
acessveis, isto , o tempo e o tipo de
procedimento para acessar qualquer um dos
elementos do Array so iguais
cada elemento componente desta estrutura tem
um nome prprio segundo sua posio no
conjunto
Vetores, Matrizes e Strings 8
Array - Soluo 2
2o. Algoritmo
Incio algoritmo
Para i 0 at 4 faa
Leia(num[i],nota[i])
soma 0,0
Para i 0 at 4 faa
soma soma + nota[i]
media soma/5
Para i 0 at 4 faa
Se (nota[i] > media)
ento escrever (num[i])
Fim algoritmo Vetores, Matrizes e Strings 9
12.1 Dados Estruturados: Declarao de Vetores
Na linguagem C a declarao do array feita
juntamente com as demais variveis, e preciso dizer
qual o tipo de dado que ser armazenado no array.

A declarao de um vetor com uma nica dimenso


feita do seguinte modo:

tipo nome_variavel[no. de elementos]

Exemplo 1: int val[ 5 ]; val[0]


val[1] Os ndices
variam de
Cria um vetor de nome val, de val[2] 0 at 4
tamanho 5 e cujos elementos so val[3]
do tipo int. Vetores, Matrizes eval[4]
Strings 10
12.1 Dados Estruturados: Declarao de Vetores

Observaes:
1) O acesso a cada elemento do vetor feito atravs de
uma indexao da varivel val.
2) Em C, a indexao de um vetor varia de zero a n-1,
onde n representa a dimenso do vetor. Assim:
val [0] acessa o primeiro elemento de val
val [1] acessa o segundo elemento de val
...
val [4] acessa o ltimo elemento de v
Mas:
val[5] est ERRADO (invaso de memria)
Vetores, Matrizes e Strings 11
12.1 Dados Estruturados: Declarao de Vetores
Exemplo 2: Para declarar um vetor com 50 nmeros reais
float custo[50];
float - Tipo de cada elemento do vetor
50 - No. de elementos do vetor
custo - Nome do vetor
custo[i] Aquilo que est na posio ndice i do vetor custo
Exemplo 3: Coloque o valor 34.6 na primeira posio do vetor
custo e o valor 56.7 na ltima posio:
custo[0] = 34.6;
custo[49] = 56.7;
Exemplo 4:Coloque no quarto elemento do vetor o dobro do valor
do segundo elemento:
custo[3] = 2* custo[1];
Vetores, Matrizes e Strings 12
12.1 Dados Estruturados: Declarao de Vetores
A Linguagem C permite que se faa a declarao do vetor ao
mesmo tempo que atribuio de valores iniciais.
Exemplo 5:
int val[5] = {3, 2, 6, 4, 5}; 3 2 6 4 5
aqui foi declarado um vetor de inteiros
com 5 elementos e atribudo a ele os val[0] val[1]val[2] val[3] val[4]
valores entre chaves

O acesso e a modificao dos elementos do vetor feito


diretamente sobre a varivel.
Exemplo 6: val[1] = val[1] + 1;
3 3 6 7 5
val[3] = val[1]+ val[3];

val[0]
Vetores, Matrizes e Strings val[1] val[2] val[3] val[4]13
12.1 Dados Estruturados: Declarao de Vetores
OBS:Se um vetor for declarado com n elementos e forem
atribudos inicialmente ao vetor, apenas k valores (k<n), ento
os primeiros k elementos do vetor sero iniciados com os
respectivos valores e os restantes sero inicializados com ZERO.

Exemplo 7: Suponha a seguinte declarao:


int v3[10] = {10,33,45};
Neste caso os trs primeiros elementos do vetor v3 (ndices 0, 1 e 2)
recebem os valores 10, 33 e 45 respectivamente. e todos os
demais elementos recebem o valor ZERO
Assim a declarao acima equivalentes :
int v3[10] = {10,33,45,0,0,0,0,0,0,0};
Vetores, Matrizes e Strings 14
12.1 Dados Estruturados: Vetor - Problemas
Programa 1: Criar um programa com um vetor de 10 inteiros
tal que seus elementos so da forma v[i] = i+1. Imprimir o vetor.
Programa 1 Usando vetores
main() // incluir <stdio.h> e <stdlib.h> V [ i ] = i + 1;
{ int i;
int v[10];
// Colocando valores em v. 1 2 9 10
for(i=0; i < 10; i++)
v[i] = i + 1;
v[0] v[1] v[8] v[9]
// Mostra os elementos de v -> v[i].
for(i=0; i < 10; i++)
printf( %d ", v[i]); puts(); printf( %d ,v[i]);
// Mostra os indices i de v[i].
for(i=0; i < 10; i++)
printf( v[%d] ", i); printf( v[%d] ,i);
Vetores, Matrizes e Strings 15
} // fim programa
12.1 Dados Estruturados: Vetor - Problemas
Programa 2 : Fazer um programa que leia um conjunto de 10 elementos
numricos,a partir do teclado, armazene-os no vetor A e depois os
imprima.
#include <stdlib.h>
#include <stdio.h>
main()
{
int A[10];
int I;
// inicio
printf("Digite os 10 elementos do vetor; sendo um em cada
linha\n");
for (I=0; I< 10;I++)// ler o vetor
scanf("%d",&A[I]);
printf("Vetor lido\n");
for (I=0; I<10;I++) // imprimir vetor
printf("A[%d] = %d\n", I, A[I]);
system("pause");
Vetores, Matrizes e Strings 16
}
12.1 Dados Estruturados: Vetor - Problemas
Programa 2 Exemplo de Execuo

Vetores, Matrizes e Strings 17


12.1 Dados Estruturados: Vetor - Problemas
Programa 3: Criar um programa que armazene em um vetor os
10 primeiros termos da seqncia de Fibonacci. Imprimir o vetor.
Programa 3 Fibonacci
F(n)=F(n-1)+F(n-2)
main() // incluir <stdio.h> e <stdlib.h>
E { int i;
onde: n=0,1,2, 3,... int v[10]; v[1] = v[0] = 1; I
// Colocando valores em v.
e F(0) = F(1) = 1 I for(i=2; i < 10; i++)
v[i] = v[i-1] + v[i-2]; E
// Mostra os elementos de v -> v[i].
for(i=0; i < 10; i++)
printf( %d ", v[i]); puts();
// Mostra os indices i de v[i].
for(i=0; i < 10; i++)
printf( v[%d] ", i);
Vetores, Matrizes e Strings 18
Espiral de Fibonacci } // fim programa
12.1 Dados Estruturados: Vetor - Problemas
Programa 4 : Dada uma relao de 5 estudantes, imprimir a a nota
do estudante cuja nota maior que a mdia da classe.

Etapas de Resoluo //Programa 4 Notas Maiores


main() // incluir <stdio.h> e <stdlib.h>
1. Ler e armazenar notas. {int i; float v[5], media = 0.0;
// Colocar valores em v.
2. Calcular a mdia. for(i=0; i < 5; i++) {
3. Exibir notas > mdia. 1 printf( Insira Nota %d: ,i+1);
scanf(%f,&v[i]); }
for(i=0; i < 5; i++) // Clculo mdia.
O programa ao lado pode 2 media=media+v[i];
media=media/5;
ser melhorado com o uso printf(Media = %f \n, media);
dos comandos const ou for(i=0; i < 5; i++) // Ver v[i]>media.
if (v[i] > media)
ainda define. 3 printf( v[%d] = %f \n", i+1,v[i]);19
Vetores, Matrizes e Strings
} // fim programa
12.1 Dados Estruturados: Vetor - Problemas

Programa 4 Exemplo de Execuo

Vetores, Matrizes e Strings 20


12.1 Vetor: Definio de Constantes

Ao se escrever um programa, deve-se faz-lo de modo que


uma pequena alterao nos dados no provoque grandes
transformaes no cdigo.
O programa 4, por exemplo, foi escrito para rodar com um vetor
de 5 elementos. Para que ele possa ser executado para um
vetor de 40 elementos (40 alunos), preciso alterar todas as
ocorrncias do nmero 5 pelo nmero 40.
A soluo para esse problema a utilizao de constantes,
que uma vez alteradas, propagam o novo valor por todas as
ocorrncias.
Uma constante nada mais que um nome correspondendo a
um valor fixo, isto que no pode ser alterado ao longo da
execuo do programa.
Vetores, Matrizes e Strings 21
12.1 Vetor: Definio de Constantes
A definio de constantes pode ser feita de duas maneiras distintas:
Atravs da palavra reservada const
const tipo simbolo =valor;
Atravs da diretiva de pr processamento #define
#define simbolo valor

OBS: As constantes declaradas com o #define devem ser feitas


imediatamente aps as linhas dos #includes.
As constantes declaradas com o const podem ser feitas aps
os #includes ou aps o main().

Pode-se ento, reescrever o programa 4, usando constantes.


Vetores, Matrizes e Strings 22
12.1 Vetor - Constantes - Uso do comando #define
//Problema 4 Notas Maiores Quando o define
#include <stdio.h> utilizado,o compilador
#define n 5 //sem ponto e virgula substitui todas as
main() ocorrncias do
{ smbolo pelo valor
int i; definido.
float v[n], media = 0.0; s constantes definidas
// Colocar valores em v. com o smbolo #define
for(i=0; i < n; i++) { chamam-se constantes
printf( Insira Nota %d: ,i+1);
scanf(%f,&v[i]); }
simblicas.
for(i=0; i < n; i++)// Clculo mdia. Com a declarao:
media=media + v[i]; #define n 5
media=media/n;
for(i=0; i < n; i++) // Ver v[i]>media.
Em todo lugar onde
if (v[i] > media) aparecer a varivel n, ela
printf( v[%d] = %f \n", i+1,v[i]); ter o valor constante
} // fim programa
Vetores, Matrizes eigual
Strings a 5 23
12.1 Vetor- Constantes - Uso do comando const
O qualificador const //Problema 4 Notas Maiores
//usando const
permite ao programador #include <stdio.h>
informar que o valor de uma main()
{
varivel particular no deve const int n = 5;
ser modificado. int i;
Ou seja, a constante obtida float v[n], media = 0.0;
com const existe fisicamente // Colocar valores em v.
for(i=0; i < n; i++) {
em uma dada posio de printf( Insira Nota %d: ,i+1);
memria. scanf(%f,&v[i]); }
for(i=0; i < n; i++)// Clculo mdia.
media=media+v[i];
Exemplo de declarao: media=media/n;
const int n=5; for(i=0; i < n; i++) //Ver v[i]>media.
if (v[i] > media)
printf( v[%d] = %f \n", i+1,v[i]);
// fimeprograma
Vetores,}Matrizes Strings 24
Unesp-Campus de Guaratinguet

12 - Vetores

FIM
Aula 12 Referncias dos slides
Curso de Programao de Computadores
Prof. Anbal Tavares
Profa. Cassilda Ribeiro
Prof. Dcio Mouro
Vetores, Matrizes e Strings Prof. Galeno Sena 25