Aula01 - Vetores

30
Aula 01 - Vetores Prof.ª Luciana UNIFAE

description

Aula vetores

Transcript of Aula01 - Vetores

Page 1: Aula01 - Vetores

Aula 01 - Vetores Prof.ª Luciana

UNIFAE

Page 2: Aula01 - Vetores

Motivação

Page 3: Aula01 - Vetores

Estruturas homogêneasEstruturas homogêneas unidimensionais

VETORESEstruturas homogêneas multidimensionais

MATRIZES

Page 4: Aula01 - Vetores

Vetores

Page 5: Aula01 - Vetores

Ilustração de um vetor

Page 6: Aula01 - Vetores

Declaração de um vetor

Page 7: Aula01 - Vetores

Declaração de um vetor

Page 8: Aula01 - Vetores

Acesso aos elementos de um vetor

Page 9: Aula01 - Vetores

Acesso aos elementos de um vetor

Page 10: Aula01 - Vetores

Acesso aos elementos de um vetor

Page 11: Aula01 - Vetores

Vetores: exemplo 1

Page 12: Aula01 - Vetores

Vetores: exemplo 2

Page 13: Aula01 - Vetores

Vetores: considerações

Page 14: Aula01 - Vetores

Vetores: considerações

Page 15: Aula01 - Vetores

Constantes• Em C podemos declarar constantes de duas

formas: por meio do comando const e da diretiva de pré-processamento #define.

• Sintaxes:

const tipo identificador = valor;

#define identificador valor

Page 16: Aula01 - Vetores

Constantes - exemplo#include <stdio.h>

const int TAM = 50;

int main() { int faltas[TAM], i; for(i=0; i<TAM; i++) { printf(“falta do aluno %d: ”, i+1); scanf(“%d”, &faltas[i]); } for(i=0; i<TAM; i++) { printf(“\nfalta do aluno %d: %d”, i+1, faltas[i]); }

return 0;}

}

Page 17: Aula01 - Vetores

Constantes - exemplo#include <stdio.h>

#define TAM 50

int main() { int faltas[TAM], i; for(i=0; i<TAM; i++) { printf(“falta do aluno %d: ”, i+1); scanf(“%d”, &faltas[i]); } for(i=0; i<TAM; i++) { printf(“\nfalta do aluno %d: %d”, i+1, faltas[i]); }

return 0;}

}

Page 18: Aula01 - Vetores

Vetores são estruturas estáticas#include <stdio.h>#define TAM 50int main() { int faltas[TAM], i; for(i=0; i<TAM; i++) { printf(“falta do aluno %d: ”, i+1); scanf(“%d”, &faltas[i]); } for(i=0; i<TAM; i++) { printf(“\nfalta do aluno %d: %d”, i+1, faltas[i]); }

return 0;}

}

Page 19: Aula01 - Vetores

Vetores são estruturas estáticasVamos modificar o exemplo que lê as faltas

dos alunos para que o usuário entre com um número não previamente definido de faltas.

Por exemplo, o usuário pode fornecer as faltas até que um valor especial, por exemplo -1, seja fornecido.

O valor especial diz que o usuário deseja parar de fornecer as faltas, e quer que o programa as imprima na tela.

Qual deve ser o tamanho do vetor?

Page 20: Aula01 - Vetores

Vetores são estruturas estáticasOs vetores são chamados de estruturas

estáticas, pois têm o seu tamanho definido durante a codificação do programa.

Durante a execução do programa, o tamanho do vetor não pode ser alterado, ou seja, não pode ser aumentado nem diminuído.

Uma vez que nós não sabemos quantas faltas serão fornecidas pelo usuário, é difícil estipular previamente um tamanho para o vetor

Page 21: Aula01 - Vetores

Vetores são estruturas estáticasTudo isso pode acarretar dois problemas para o

programa:

1. Durante a codificação, o programador especificou um tamanho para o vetor que é muito maior do que o necessário. Nesse caso, tem-se memória alocada para o vetor que está sendo desperdiçada;

2. Também, o programador pode especificar um tamanho para o vetor que é menor do que o necessário. Nesse caso, o vetor não será suficiente para armazenar todos os valores que o usuário deseja fornecer.

Page 22: Aula01 - Vetores

Vetores são estruturas estáticasPrecisamos ler um determinado número de

faltas até que seja fornecido o valor -1. O trecho de código para ler valores e

armazená-los em um vetor faltas até que um valor –1 seja fornecido é:

num_faltas = 0;do {scanf(“%d”, &faltas[num_faltas]);num_faltas++;} while (faltas[num_faltas-1] != -1);

Page 23: Aula01 - Vetores

Vetores são estruturas estáticasRepare que foi necessário utilizar a variável

num_faltas. O laço do-while termina quando uma nota com

valor -1 é fornecida. Note que ao sair do laço do-while a variável

num_faltas terá o número de faltas fornecidas pelo usuário mais uma falta.

Na realidade a última falta fornecida é a falta especial -1. Nós não queremos armazenar essa falta. Por isso, é necessário decrementar a variável num_faltas.

Page 24: Aula01 - Vetores

Vetores são estruturas estáticasPodemos fazer mais um melhoramento. O que ocorrerá se o usuário fornecer mais

que 250 faltas? Isso pode ser perigoso já que o usuário

conseguirá ler e armazenar a falta 251, mas isso poderá provocar erros.

Para evitar que erros ocorram, o laço do-while pode ser interrompido sempre que num_faltas atinja o valor 250.

Page 25: Aula01 - Vetores

Vetores são estruturas estáticasPortanto, o trecho de código referente a

leitura dos dados ficaria assim:

num_faltas = 0;do {

scanf(“%d”, &faltas[num_faltas]); num_faltas++;

} while (faltas[num_faltas-1] != -1 && num_faltas < 250);

Page 26: Aula01 - Vetores

Vetores são estruturas estáticasO laço do-while será executado até que uma falta -1 seja

fornecida, ou que o valor de num_faltas atinja o valor 250, o qual é uma posição além do máximo permitido pelo vetor faltas declarado.

Note que a variável num_faltas só será decrementada caso o usuário digite o valor -1. Se o usuário fornecer as 250 faltas, então a variável num_faltas não precisa ser decrementada, pois todas as faltas fornecidas serão válidas.

Para decrementar num_faltas precisamos agora fazer um teste e verificar se foi digitado o valor -1. O trecho de código referente ao teste ficaria assim:

if (faltas[num_faltas - 1] == -1) { num_faltas--;

}

Page 27: Aula01 - Vetores

Vetores são estruturas estáticasSuponha que o usuário logo na primeira vez digite o

valor -1. Se isto acontecer não teremos nenhuma falta para mostrar.

Precisamos portanto verificar se o usuário digitou alguma falta válida. Isto pode ser feito verificando se a variável num_faltas é diferente de 0.

Se a variável num_faltas for diferente de 0 significa que existem faltas e portanto podemos imprimi-las. Caso contrário, ou seja, se num_faltas for igual a 0, então não há faltas e enviaremos uma mensagem ao usuário dizendo que nenhuma falta foi fornecida.

Devemos lembrar que o número de faltas fornecido pelo usuário está na variável num_faltas.

Page 28: Aula01 - Vetores

Vetores são estruturas estáticas

Page 29: Aula01 - Vetores

Exercícios1. Faça um programa que leia N valores inteiros (0

< N ≤ 100) e armazena‐os em um vetor. Em seguida, mostre os valores lidos em ordem inversa à leitura.

2. Faça um programa que leia 8 valores inteiros e armazena‐os em um vetor. Em seguida, calcule e mostre a soma dos valores pares lidos.

3. Faça um programa que leia 10 valores que representam notas e armazene‐as em um vetor. Em seguida, calcule e imprima a média das notas e as notas que estão acima da média.

Page 30: Aula01 - Vetores

Exercícios 4. Faça um programa que leia 200 números inteiros

e armazene‐os em um vetor V. Em seguida separe os elementos de V em dois vetores A e B, de forma que o vetor A contenha os elementos pares de V e B contenha os elementos ímpares de V. Imprima na tela os números dos vetores A e B.

5. Faça um programa que leia 30 valores inteiros positivos e armazene‐os em um vetor, calcule e imprima:

O menor valor do vetor.A quantidade de elementos do vetor que são

divisíveis pelo menor valor.