A maior rede de estudos do Brasil

Grátis
8 pág.
Aula03 - Rev_Array_Estruturas

Pré-visualização | Página 1 de 2

8/26/2011
1
Arrays e Estruturas em C
Prof. André Backes
Array
� Array ou “Vetor” é a forma mais familiar 
de dados estruturados.
� Um array é um conjunto de 
componentes do mesmo tipo.
Array - Problema
� Imagine o seguinte problema
� Dada uma relação de 5 estudantes, 
imprimir o nome de cada estudante, cuja 
nota é maior do que a média da classe.
Array - Solução
� Um algoritmo para esse problema poderia ser o 
seguinte:
Leia(nome1,nota1,nome2,nota2,nome3,nota3,nome4,
nota4,nome5,nota5);
media = (nota1+nota2+nota3+nota4+nota5) / 5,0;
Se nota1 > media então escreva (nome1)
Se nota2 > media então escreva (nome2)
Se nota3 > media então escreva (nome3)
Se nota4 > media então escreva (nome4)
Se nota5 > media então escreva (nome5)
Array
� O algoritmo anterior apresenta uma solução 
possível.
� Porém, essa solução é inviável para uma 
lista de 100 alunos.
� Uma variável para cada nome => 100 variáveis
� Uma variável para cada nota => 100 variáveis
� 100 testes
Array
Leia(nome1,nota1,nome2,nota2,...,nome100,
nota100);
media = (nota1+nota2+...+nota100) / 100,0;
Se nota1 > media então escreva (nome1)
Se nota2 > media então escreva (nome2)
...
Se nota100 > media então escreva 
(nome100)
8/26/2011
2
Array - Definição
� Como estes dados têm uma relação 
entre si, podemos declará-los usando 
um ÚNICO nome para todos os 100 
elementos.
� Lista = conjunto de 100 números 
acessados por um índice.
0 1 ... 99
Lista
Array - Definição
� Na linguagem C a numeração começa 
sempre em zero.
� Isto significa que, no exemplo anterior, 
os dados serão indexados de 0 a 99.
� Lista[0], Lista[1], ..., Lista[99]
0 1 ... 99
LISTA
Array - Definição
� Observação
� Se o usuário digitar mais de 100 elementos 
em um array de 100 elementos, o programa 
tentará ler normalmente.
� Porém, o programa os armazenará em uma 
parte não alocada de memória, pois o 
espaço alocado foi para somente 100 
elementos. 
� Isto pode resultar nos mais variados erros 
no instante da execução do programa.
Array = varíavel
� O elemento do array tem todas as 
características de uma variável e pode 
aparecer em expressões e atribuições.
� Lista[2] = Lista[3] + Lista[20]
� Ex: somar todos os elementos da Lista:
int soma = 0;
for(i=0;i < 100; i++) 
soma = soma + Lista[i];
Array - Características
� Características básicas de um Array
� Estrutura homogênea, isto é, formada de 
elementos do mesmo tipo.
� todos os elementos da estrutura são 
igualmente acessíveis, isto é, o tempo e o 
tipo de procedimento para acessar qualquer 
um dos elementos do Array são iguais.
� cada elemento componente desta estrutura 
tem um índice próprio segundo sua posição 
no conjunto
Array - Problema
� Voltando ao problema anterior
� Dada uma relação de 5 estudantes, 
imprimir o nome de cada estudante, cuja 
nota é maior do que a média da classe.
8/26/2011
3
Array - Solução
� Um algoritmo para esse problema usando 
array:
Para i = 1 até 5 faça
Leia(nome[i],nota[i])
soma = 0
Para i = 1 até 5 faça
soma = soma + nota[i]
media = soma/5
Para i = 1 até 5 faça
Se nota[i] > media então escrever (nome[i])
Array - Solução
� Se ao invés de 5, fossem 100 alunos?
Para i = 1 até 100 faça
Leia(nome[i],nota[i])
soma = 0
Para i = 1 até 100 faça
soma = soma + nota[i]
media = soma/ 100
Para i = 1 até 100 faça
Se nota[i] > media então escrever (nome[i])
Array - Declaração
� arrays são agrupamentos de dados 
adjacentes na memória
� declaração:
� tipo_dado nome_array[tamanho];
� define um arranjo de tamanho
elementos adjacentes na memória do 
tipo tipo_dado
� Ex: int nota[5];
Relembrando Strings
� Strings são arrays de chars
� Seqüência de caracteres adjacentes na 
memória. 
� O caracter ‘\0’ (= valor inteiro 0) indica o fim 
da seqüência
� Ex: char str[6] = “Teste”;
Relembrando Strings
� A biblioteca padrão do C possui diversas 
funções que manipulam strings. 
� header “string.h”
� Estas funções são úteis pois não se 
pode, por exemplo, igualar duas strings:
� string1 = string2;
Relembrando Strings
� Exemplo de funções para manipulação de 
strings
� strlen(str); //retorna o tamanho de str
� strcpy(dest, fonte); //copia fonte em dest
� strcat(dest, fonte); //concatena fonte no fim de 
dest
� gets(s); // lê uma string do teclado e coloca em 
s
� fflush(stdin) ou setbuf(stdin, NULL): limpam o 
buffer to teclado. Devem ser usadas antes da 
função gets
8/26/2011
4
Arrays bidimensionais
� Também chamados de “matrizes”, 
contém:
� um número fixo de elementos;
� todos são do mesmo tipo;
� arranjados na forma de tabela de 2 
dimensões;
� Declaração
� tipo_da_variável nome_da_variável 
[linhas][colunas];
Arrays bidimensionais
� Ex.: um array que tenha 100 linhas por 
50 colunas
� int mat[100][50];
0 1 ... 49
0
1
...
99
mat[0][1]
Arrays Multidimensionais
� Arrays podem ter diversas dimensões, 
cada uma identificada por um par de 
colchetes na declaração
� int vet[5]; // 1 dimensão
� float mat[5][5]; // 2 dimensões
� double cub[5][5][5]; // 3 dimensões
� int X[5][5][5][5]; // 4 dimensões
Arrays Multidimensionais
� Apesar de terem o comportamento de 
estruturas com mais de uma dimensão, 
na memória os dados são armazenados 
linearmente:
� int mat[5][5];
0,0
4,4
0,0 1,0 2,0 3,0 4,0 4,4
Arrays Multidimensionais
� Um array N-dimensional funciona 
basicamente como outros tipos de array. 
Basta lembrar que o índice que varia 
mais rapidamente é o índice mais à 
direita.
� int vet[5]; // 1 dimensão
� float mat[5][5]; // 2 dimensões
� double cub[5][5][5]; // 3 dimensões
� int X[5][5][5][5]; // 4 dimensões
Inicialização
� Arrays podem ser inicializados com 
certos valores durante sua declaração. A 
forma geral de um array com 
inicialização é:
� tipo_da_variável nome_da_variável 
[tam1][tam2] ... [tamN] = {lista_de_valores};
8/26/2011
5
Inicialização
� A lista de valores é composta por valores (do 
mesmo tipo da variável) separados por 
vírgula. Os valores devem ser dados na 
ordem em que serão colocados na matriz.
� float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
� int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 
};
� char str [10] = { 'J', 'o', 'a', 'o', '\0' };
� char str [10] = "Joao";
� char str_vect [3][10] = { "Joao", "Maria", "Jose" };
Inicialização sem tamanho
� Inicialização sem especificação de 
tamanho
� char mess [] = "Linguagem C: 
flexibilidade e poder."; //A string mess terá 
tamanho 36.
� int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 }; //O 
número de linhas de matrx será 5.
Inicialização sem tamanho
� Nesse tipo de inicialização, o compilador C vai 
considerar o tamanho do dado declarado 
como sendo o tamanho do array.
� Isto ocorre durante a compilação e não poderá 
mais ser mudado durante o programa.
� Isto é útil quando não queremos contar 
quantos caracteres serão necessários para 
inicializarmos uma string.
Estruturas
� Uma estruturas pode ser vista como um novo 
tipo de dados, que é formado por variáveis de 
outros tipos.
� Pode ser declarada em qualquer escopo.
� Ela é declarada da seguinte forma:
struct nomestruct{
tipo1 campo1;
tipo2 campo2;
...
tipon campon;
};
Estruturas
� Uma estrutura pode ser vista como um 
agrupamento de dados. Ex.: cadastro.
struct cadastro{
char nome[50];
int idade;
char rua[50]
int numero;
};
char nome[50];
int idade;
char rua[50];
int numero;
cadastro
Estruturas - declaração
� Uma vez definida a estrutura, uma 
variável pode ser declarada de modo 
similar aos tipos já existente:
� struct cadastro c;
� Obs: por ser um tipo definido pelo 
programador, usa-se a palavra struct
antes do tipo da nova variável
8/26/2011
6
Estruturas
� O uso de estruturas facilita na manipulação 
dos dados do programa. Imagine ter que 
declarar 4 cadastros, para 4 diferentes 
pessoas:
char nome1[50], nome2[50], nome3[50], 
nome4[50];
int idade1, idade2, idade3, idade4;
char rua1[50], rua2[50], rua3[50], rua4[50]
int numero1, numero2, numero3, numero4;
Estruturas
� Utilizando uma estrutura, o mesmo pode 
ser feito da seguinte maneira:
� struct