Vous êtes sur la page 1sur 22

Introduo Programao

Prof. Andr Cypriano M. Costa


amonteiro@catolica-es.edu.br
acostaprofessor@gmail.com
Faa um programa em C que receba como entrada duas
notas (N1 e N2) de uma turma de 50 alunos. Aps ler
todas as notas, seu programa deve calcular a mdia
aritmtica de cada aluno e exibir o resultado na tela.

Como armazenar todos os dados de entrada?
R: Vamos precisar de uma estrutura de dados chamada vetor
2
um tipo especial de matriz, ou seja, uma matriz que
possui apenas uma dimenso.

O vetor uma estrutura capaz de armazenar vrios
dados... TODOS DO MESMO TIPO.
Ao declarar o vetor, seu tipo j definido. Logo, o vetor
uma estrutura de dados homognea.

Os vetores consistem de posies contnuas de memria,
e seus elementos so acessados por meio de um ndice.
O ndice mais baixo corresponde ao primeiro elemento e o
mais alto ao ltimo elemento.
3
A sintaxe para a declarao de um vetor a seguinte:

tipo nome_vetor[tam];

tipo declara o tipo de cada elemento do vetor.
tam define quantos elementos o vetor capaz de
armazenar.
Uma vez declarado o tamanho de um vetor, ele no pode
mais ser alterado.
SEMPRE um valor inteiro!
Colchetes obrigatrios
4
O tamanho de um vetor determinado em sua
declarao, antes da execuo do programa.
Isto significa que o tamanho de um vetor NO poder ser lido
ou alterado durante a execuo do programa.
Verifica-se ento que para armazenar dados em vetores
necessrio conhecer antecipadamente a quantidade
mxima de elementos a serem processados.
Quando este nmero no for conhecido, deve-se
maximizar o tamanho do vetor baseado em critrios
intuitivos (bom senso) relacionado ao problema em
questo.
5
EXEMPLO: Declarar um vetor de 100 elementos,
chamado pontos, e do tipo int.
int pontos[100];





O ndice inicial de todo vetor sempre 0 (zero).
O ndice final sempre o tamanho do vetor menos 1 (tam
1), ou seja, neste caso 99.
6
Outros exemplos:
float dados[30];
Declara um vetor de float de 30 posies
ndice inicial = 0 ndice final = 29
char nome[18];
Declara um vetor de caracteres de 18 posies
ndice inicial = 0 ndice final = 17
int media[n];
Declara um vetor de inteiros de n posies
ndice inicial = 0 ndice final = n 1
double vet[3*x];
Declara um vetor de double de 3*x posies
ndice inicial = 0 ndice final = 3*x 1
7
Os elementos do vetor so acessados atravs do nome do
vetor e de um ndice (que determina qual elemento
queremos acessar).
nome_do_vetor[ndice]

Exemplo:
dados[3] = 987;
nome[6] = m;

Este ndice precisa ser um valor maior ou igual a zero (0)
e menor que o tamanho do vetor (< tam).

8
Outros exemplos
printf(%f, media[0]);
Exibe o valor armazenado no ndice 0.
scanf(%d, &dados[n]);
Ler um valor digitado pelo usurio e armazena no ndice n.
vetor[idx+1] = vetor[2];
O ndice idx+1 do vetor recebe o valor armazenado no ndice 2.
nome1[m] = nome2[2*s+1];
O ndice m do vetor nome1 recebe o valor do ndice 2*s+1 do
vetor nome2.
x = (2*vet[m] + n*vet[n]) / vet[m+n];

9
Outros exemplos
media[0]++;
Incrementa o valor armazenado no ndice 0.

--vet[3];
Decrementa o valor armazenado no ndice 3.

if(vetor[idx] > 0)
Verifica se o valor do ndice idx maior do que 0.
10
ATENO:
C no tem verificao de limites em vetores. Voc pode
ultrapassar o fim de um vetor e escrever nos dados de
outra varivel ou at mesmo de outro programa, SE tiver
permisso Segmentation Fault (Falha de segmentao)

EXEMPLO:
int vet[10];
vet[15] = 100;

No d erro de compilao, mas d erro de execuo
11
Em C no possvel passar por valor um vetor inteiro
como parmetro para uma funo.
Voc pode declarar o parmetro como um vetor
dimensionado ou como um vetor no-dimensionado.
EXEMPLO:
void func(int vet[10])
ou
void func(int vet[ ])

O comprimento do vetor no importa para a funo porque
C no faz verificao de limites.
12
Leitura e Escrita:
Um exemplo de uma funo que preenche os elementos de
um vetor de inteiros.

void preenche_vetor (int vetor[ ], int tamanho)
{
int i;
for (i = 0; i < tamanho; i++) {
scanf(%d, &vetor[i]);
}
}
13
Leitura e Escrita:
Agora mostraremos uma funo que imprime os elementos
de um vetor de inteiros.

void imprime_vetor (int vetor[ ], int tamanho)
{
int i;
for (i = 0; i < tamanho; i++){
printf(%d ,. vetor[i]);
}
}
14
Insero em uma Posio Pr-determinada do Vetor:
Na insero necessrio ter posies disponveis para
que o vetor possa crescer.
O que devemos fazer para no perdermos nenhum valor?
Resp: Deslocar os elementos para a direita.

15
Insero em uma Posio Pr-determinada do Vetor:

void inserir (int vetor[], int elem, int pos, int tam)
{
int i;

for (i = tam 2; i > pos 1; i--)
vetor[i + 1] = vetor[i];

vetor[pos] = elem;
}

16
Excluso de um Elemento do Vetor:
Na excluso necessrio diminuir o vetor a fim de
eliminar buracos no vetor.
O que devemos fazer para eliminar os buracos?
Resp: Deslocar os elementos para a esquerda.

17
Excluso de um Elemento do Vetor:
void excluir (int vetor[], int elem, int tam) {
int i, pos, encontrou;
encontrou = pos = 0;
while ((pos < tam) && (!encontrou)) {
if (vetor[pos] == elem) {
encontrou = 1;
for (i = pos; i < tam 1; i++ )
vetor[i] = vetor[i + 1];
}
pos = pos + 1;
}
}
18
Pesquisa Sequencial em um Vetor:
int pesquisa_sequencial(int vetor[], int tam, int elem ) {
int i, encontrou, pesq_seq;
encontrou = 0;
pesq_seq = -1;
for (i = 0; i < tam && !encontrou; i++){
if (vetor[i] == elem){
pesq_seq = i;
encontrou = 1;
}
}
return pesq_seq;
}
19
int main ( void ) {
int qtd ;
printf ("Digite a qtde de elementos: ");
scanf ("%d", &qtd);
int vetnum [ qtd ];
for (int i = 0; i < qtd ; i++) {
printf (Digite o elemento %d: ", i);
scanf ("%d", &vetnum[i]);
}
for (int i = 0; i < qtd ; i++) {
printf ("%d", vetnum[i]);
}
return 0;
}
20
Faa um programa que calcule a soma de todos os
elementos de um vetor.

Faa um programa que soma os elementos
correspondentes de dois vetores gerando um novo vetor.
Imprimir todos os elementos deste novo vetor.

21
SCHILDT, Herbert. C Completo e Total. 3 ed. So Paulo:
Pearson Makron Books, 2006, Cap. 4.
22

Vous aimerez peut-être aussi