Escolar Documentos
Profissional Documentos
Cultura Documentos
i = 0;
int i, j, n; j = 5;
n = 50;
Memória Principal
i j n
0 5 50
Utilizando variáveis de Tipos de Dados Simples:
#include "stdio.h"
void main() {
int nota0 = 80;
int nota1 = 70;
int nota2 = 90;
int nota3 = 85;
int nota4 = 100;
• isto significa:
– em uma mesma estrutura de dados, é possível
ter diversas variáveis de tipos de dados simples
agrupadas
Utilizando variáveis de Tipos de Dados
Estruturados:
#include "stdio.h"
void main() {
const n = 100;
float salarios[n];
x [ expressão ]
onde:
x nome da variável do tipo vetor
const n = 10;
int a[n];
0 1 2 3 4 5 6 7 8 9
17 33 21 67 81 10 45 29 79 98
Operações básicas com vetores ou array’s:
Certo: Errado:
for (int i=0; i<10; i++) c = a + b;
c[i] = a[i] + b[i];
NomeDaVariávelVetor[posição] = Expressão;
void main() {
int nota[5];
nota[0] = 80;
nota[1] = 70;
nota[2] = 90;
nota[3] = 85;
nota[4] = 100;
...
}
Leitura
A leitura de um conjunto é feita passo a passo,
um componente por vez, usando a mesma sintaxe da
instrução primitiva de entrada de dados (scanf).
Mais uma vez, além do nome do conjunto, deve ser
explicitada a posição do elemento no vetor que
receberá o valor lido.
#include "stdio.h"
void main() {
int nota[5];
int i ;
for (i=0; i<5; i++) {
printf("\nInforme o valor da %i a. Nota:", i);
scanf("%i", ¬a[i]);
}
... // processo de saída ou escrita
}
Escrita
A escrita de um conjunto obedece à mesma sintaxe
da instrução primitiva de saída de dados
(printf). Mais uma vez, convém lembrar que,
além do nome do conjunto, deve-se também
especificar por meio de seu(s) índice(s) qual o
elemento do vetor será escrito.
#include "stdio.h"
void main() {
int nota[5];
• randomize();
– inicializa, ou prepara, a semente do gerador de
números aleatórios
• random(n);
– neste caso, o gerador de números aleatórios
sorteia um número inteiro aleatoriamente entre
0 e n-1
// Gerar aleatoriamente 8 elementos para uma matriz A
// tipo vetor. Construir uma matriz B de mesma dimensão
// com os elementos da matriz A multiplicados por 2.
#include "stdio.h"
declaração da estrtura de
#include "stdlib.h"
dados, vetores “a” e “b”
void main() { entrada- gera nros aleatórios
const n = 8; para armazenar no vetor
int i, a[n], b[n];
processamento- percorre o
randomize(); vetor realizando algum
for (i=0; i<n; i++) tipo de processamento
a[i] = random(10); com os itens armazenados
#include "stdio.h"
#include "stdlib.h"
void main() {
const n = 10; // tamanho do vetor
int i; // índice ou posição
int a[n]; // declaração do vetor "a"
randomize();
for (i=0; i<n; i++) {
a[i] = random(50);
}
#include "stdio.h"
#include "stdlib.h"
void main() {
const n = 10; // tamanho do vetor
int i; // índice ou posição
int a[n]; // declaração do vetor "a"
randomize();
for (i=0; i<n; i++) {
a[i] = random(50);
}
#include "stdio.h"
#include "stdlib.h"
void main() {
const n = 10; // tamanho do vetor
int i; // índice ou posição
int a[n]; // declaração do vetor "a"
randomize();
for (i=0; i<n; i++) {
a[i] = random(50);
}
// exibe os resultados
printf("\n\nSoma dos pares = %3d\n", sm);
printf("Qtd. de pares = %3d\n", ct);
printf("Média dos pares = %6.2f", media);
}
Percentuais- calcular valores percentuais:
% de funcionários do sexo masculino
% de números pares
percentual = (valor parcial / valor total) * 100;
#include "stdio.h"
#include "stdlib.h"
void main() {
const n = 10; // tamanho do vetor
int i; // índice ou posição
int a[n]; // declaração do vetor "a"
randomize();
for (i=0; i<n; i++) {
a[i] = random(50);
}
// exibe o resultado
printf("\n\nExistem %d pares, ou seja, %.2f%%\n", ct, p);
}
Aplicações com Vetores
• Classificação, organizar um conjunto de
elementos em uma determinada ordem
(alfabética, numérica ou cronológica)
– Método da Bolha, mais popular
• Pesquisa, verificar a existência de um valor
dentro de um conjunto
– Método de Pesquisa Sequencial
– Método de Pesquisa Binária
Ordenação por Troca (Método da Bolha)
Na Prática
1º passo: procura a posição do menor elemento do vetor (min)
e em seguida realiza a troca deste elemento com
aquele que está na primeira posição (a[i]);
...
if (encontrou == 0)
printf("%d não está armazenado no vetor.\n", x);
else
printf("%d está armazenado na posição %d.\n", x, p); 3
}
Método de Pesquisa Binária
Quando os elementos de um vetor estão previamente
classificados segundo algum critério, então pesquisas
muito mais eficientes podem ser conduzidas. Entre estas
destaca-se o método de pesquisa binária.
Esta técnica consiste:
1. inicialmente o vetor é classificado
2. o elemento que divide o vetor ao meio com relação ao
seu número de componentes é localizado e comparado ao
valor procurado.
3. Se ele for igual ao valor procurado a pesquisa é dita
bem-sucedida e é interrompida.
4. no caso dele ser maior que o valor procurado, repete-se
o processo na primeira metade do vetor.
5. no caso do elemento central do vetor ser menor que o
valor procurado, repete-se o processo na segunda metade
do vetor.
6. Este procedimento é continuado até que o elemento
desejado seja localizado (pesquisa bem-sucedida), ou
então, até que não reste mais nenhum trecho do vetor
a ser pesquisado (pesquisa malsucedida).
void main() {
... // classificar o vetor 1
int x;
printf("Informe o valor a ser procurado no vetor: ");
scanf("%d", &x);
// processamento: Método de Pesquisa Binária
int encontrou = 0; // flag, 0- pesquisa “mal” sucedida
// 1- pesquisa “bem” sucedida
int meio, inicio = 0, fim = (n – 1);
while ((inicio <= fim) && (encontrou == 0)) { 6
meio = (inicio + fim) / 2;
2 if (a[meio] == x)
encontrou = 1; 3 // o elemento foi encontrado
else
if (a[meio] > x)
fim = meio – 1; 4 // primeira metade do vetor
else
inicio = meio + 1; 5 // segunda metade do vetor
}
if (encontrou == 0)
printf("%d não está armazenado no vetor.\n", x);
else
printf("%d está armazenado na posição %d.\n", x, meio);
}
Vetores Bidimensionais, ou Matrizes
C suporta vetores multidimensionais. A forma mais simples de
vetor multidimensional é o vetor bidimensional, ou matriz (Ai,j).
– tabela de linhas e colunas
– armazenam vetores dentro de vetores
int matriz[2][4];
i, linha
Lendo e escrenvendo um vetor bidimensional, ou matriz
A leitura de um conjunto bidimensional é feita, como nos vetores
unidimensionais, passo a passo, um componente por vez, usando a
mesma sintaxe das instruções primitivas de entrada (scanf) e
saída (printf) informando o nome da matriz as posições da linha
e da coluna como mostra o exemplo a seguir:
#include "stdio.h"
#include "conio.h"
void main() {
const n = 3;
int matriz[n][n], i, j;
for (i=0; i<n; i++)
for (j=0; j<n; j++) {
printf("Informe o valor da linha %d, coluna %d.\n", i, j);
scanf("%d", &matriz[i][j]);
}
system(“cls”);
for (i=0; i<n; i++) {
for (j=0; j<n; j++)
printf("%4d ", matriz[i][j]);
printf("\n");
}
}
Inicialização de Vetores
C permite a inicialização de vetores no momento da declaração,
como é demonstrado nos exemplos a seguir:
int vetor[10] = {17, 33, 21, 67, 81, 10, 45, 29, 79, 98};
void main() {
printf("\n");
}
}
Vetores Multidimensionais
C permite vetores com mais de duas dimensões. O limite exato, se
existe, é determinado pelo compilador usado.
tipo nome[Tamanho1][Tamanho2][Tamanho3]...[TamanhoN];
• Matriz quadrada
– número de linhas igual ao número de colunas
• Diagonal principal
– Ai,j para todo i == j
• Diagonal secundária
– Ai,j para todo (i + j) == (n - 1)
• Matriz esparsa
– a maioria dos elementos da matriz é zero
Exemplo de Matriz Quadrada
const n = 4;
int A[n][n] = {17, 33, 21, 15, 13, 81, 97, 67,
13, 31, 24, 5, 3, 8, 92, 63};
i, linha
0 1 2 3 j, coluna
A[i][j] 0 17 33 21 15
1 13 81 97 67
2 13 31 24 5
3 3 8 92 63