Sei sulla pagina 1di 29

Estrutura de Dados (Vetores)

Programao de Computadores I
Estrutura de Dados (Vetores)

Prof. Antnio Augusto Chaves


Departamento de Matemtica Bloco VI - sala 23

http://www.feg.unesp.br/chaves chaves@feg.unesp.br

Aula baseada no material do Prof. Rafael Sfair (FEG/UNESP)

Estrutura de Dados (Vetores)

Sumrio

Introduo Vetores Exerccios Resolvidos Exerccios

Estrutura de Dados (Vetores) Introduo

Sumrio

Introduo Vetores Exerccios Resolvidos Exerccios

Estrutura de Dados (Vetores) Introduo

Introduo

Exerccio: Escreva um programa em linguagem C que l palavras com 4 letras e as imprime de trs para frente. Ex.:
casa asac lata atal sapo opas

Estrutura de Dados (Vetores) Introduo

Introduo
Soluo:
int main( ) { char L1, L2, L3, L4; printf (Entre com palavras de 4 letras: ); scanf (%c %c %c %c, &L1, &L2, &L3, &L4); printf (%c %c %c %c, L4, L3, L2, L1); return 0; }

Estrutura de Dados (Vetores) Introduo

Introduo

Problema: Refaa o programa anterior para palavras ou frases com 20, 30, e 50 caracteres.

Estrutura de Dados (Vetores) Vetores

Sumrio

Introduo Vetores Exerccios Resolvidos Exerccios

Estrutura de Dados (Vetores) Vetores

Denio

Um vetor um tipo de dado utilizado para representar uma certa quantidade de variveis. Todas as variveis so do mesmo tipo.

Estrutura de Dados (Vetores) Vetores

Denio
Para se declarar um vetor podemos utilizar a seguinte forma geral: tipo_da_variavel nome_da_variavel [tamanho]; no qual:
tipo_da_variavel: o tipo das variveis que devem ser criadas. Ex.: int, char, oat, entre outros; nome_da_variavel: o nome que ser utilizado para referenciar o conjunto de variveis; tamanho: o nmero de variveis que ser criado (tamanho do vetor).

Estrutura de Dados (Vetores) Vetores

Exemplos - Declarao
int notas[10];
0 1 2 3 4 5 6 7 8 9

9 char letras[20];

0 9 0 9

1 10 1 10

110

10
1 1 N 1 N

10 10

2 10 2 10 2

8 8

3 8 3 8 3

4 7 4 7

4 7

5 4

7
4 4 P 4 P

4 5 4 4
5

56

5 6 5 5
6

8 7 10 8 9

8 7 8 8
...

10 9 8 9 10 9 10 9
19

0 0U 0 U

2 2 E 2 E

3 3 S 3 S

oat pesos[40];
0 1

N
2

E
3

P
4

5 /0 5 /0 /0

6 /0 6 /0 /0

... ...

19 /0 19 /0 /0

0 59.50 59.50

1 72.25 72.25

2 64.70 64.70

3 88.30 88.30

4 71.25 71.25

5 45.45 45.45

6 98.60 98.60

... ...

39

39 67.90 67.90

double preco[100];
0 1 2

0 19.90 19.90

1 25.00 25.00

2 12.10 12.10

3 11.99 11.99

4 1.25 1.25

5 0.99 0.99

6 10.00 10.00

... ...

99

99 12.50 12.50

Estrutura de Dados (Vetores) Vetores

Exemplos - Inicializao
int notas[10] = {9,10,10,8,7,4,5,8,10,9} notas[0] = 9; notas[1] = 10; notas[9] = 9;

char letras[20] = UNESP scanf (%c, &letras[6]); for (i = 0; i < N; i++)


pesos[ i ] = 1.0;

preco[5+2] = preco[5] preco[2];

Estrutura de Dados (Vetores) Vetores

Alocao de memria

Quando o C v uma declarao de vetor ele reserva um espao na memria sucientemente grande para armazenar o nmero de clulas especicadas. Por exemplo, se declararmos: oat exemplo [20]; ser reservado 4 20 = 80 bytes. Estes bytes so reservados de maneira contgua.

Estrutura de Dados (Vetores) Vetores

Como acessar um vetor?


Para acessar o vetor declarado anteriormente vamos escrever:
exemplo[0] exemplo[1] . . . exemplo[19]

Mas ningum o impede de escrever:


exemplo[30] exemplo[103]

Estrutura de Dados (Vetores) Vetores

Por qu?

Porque o C no verica se o ndice que voc usou est dentro dos limites vlidos. Este um cuidado que voc deve tomar. Se o programador no tiver ateno com os limites de validade para os ndices ele corre o risco de ter variveis sobrescritas ou de ver o computador travar. Bugs terrveis podem surgir.

Estrutura de Dados (Vetores) Vetores

IMPORTANTE!!!
O primeiro elemento de um vetor o de ndice 0 (zero). Num vetor de 100 elementos o ltimo elemento o de ndice 99. Acessar uma posio invlida de um vetor pode fazer seu programa Abortar. Ateno: o elemento entre colchetes [ ] (quando declarando um vertor) deve ser um valor constante, j que vetores so blocos de memria esttica de um determinado tamanho.

Estrutura de Dados (Vetores) Exerccios Resolvidos

Sumrio

Introduo Vetores Exerccios Resolvidos Exerccios

Estrutura de Dados (Vetores) Exerccios Resolvidos

Exerccio 1

Escreva um programa em linguagem C que l palavras com 10 letras e as imprime de trs para frente. Utilize vetores e laos.

Estrutura de Dados (Vetores) Exerccios Resolvidos

scanf (%c %c %c %c, &L1, &L2, &L3, &L4); printf (%c %c %c %c, L4, L3, L2, L1); return 0; }

Soluo

#define TAM 10 int main( ) { char letras[TAM]; int i; printf (Entre com a frase: ); for (i = 0; i < TAM; i++) scanf (%c, &letras[i]); for (i = TAM 1; i >= 0; i-- ) printf(%c, letras[i]); return 0; }

Estrutura de Dados (Vetores) Exerccios Resolvidos

Exerccio 2

Escreva um programa em linguagem C que l as matriculas e as notas de no mximo 100 alunos. O programa deve ler e armazenar uma nova matrcula e uma nova nota at que o usurio digite uma matrcula negativa.

Estrutura de Dados (Vetores) Exerccios Resolvidos

Soluo
#define TAM 100 int main( ) { float notas[TAM]; int mat[TAM], aux, indice = 0, total; printf(Entre com a Matricula (ou negativo para sair): ); scanf(%d, &aux); while (aux > 0) { mat[indice] = aux; printf (Entre com a nota: ); scanf (%f , &notas[indice]); printf (Entre com a Matricula (ou negativo para sair): ); scanf (%d, &aux); indice++; } return 0; }

Estrutura de Dados (Vetores) Exerccios Resolvidos

Exerccio 3

Utilizando o cdigo do programa anterior, escreva um novo programa que permite ao usurio consultar a nota de um aluno digitando a sua matrcula, o programa deve rodar at que o usurio digite uma matrcula negativa. Obs.: O trecho de cdigo que l as matrculas e as notas o mesmo do programa anterior.

Estrutura de Dados (Vetores) Exerccios Resolvidos

indice++; } return 0;

Soluo
total = indice; printf (Entre com a Matricula (ou negativo para sair): ); scanf (%d, &aux); while ( aux > 0) { for (indice = 0; indice < total; indice++ ) if ( mat[indice] == aux) break; if ( indice < total) printf (A nota eh: %.2f \n, notas[indice]); else printf (Matricula nao encontrada\n); printf (Entre com a Matricula (ou negativo para sair): ); scanf (%d, &aux); }

Estrutura de Dados (Vetores) Exerccios

Sumrio

Introduo Vetores Exerccios Resolvidos Exerccios

Estrutura de Dados (Vetores) Exerccios

Exerccio 1

Escreva um programa que conta as ocorrncias de vogais, consoantes e espaos em branco da cadeia de caracteres correspondente ao seu nome completo (sem acentuao).

Estrutura de Dados (Vetores) Exerccios

Exerccio 2

Crie um programa que armazene os 20 primeiros termos da Seqncia de Fibonacci em um vetor e imprima esses nmeros na tela.

Estrutura de Dados (Vetores) Exerccios

Exerccio 3

Elabore um programa para ler as notas dos 40 alunos da turma, calcule a mdia da turma, e calcule tambm quantos alunos tiveram notas abaixo da mdia, e quantos tiveram notas acima da mdia.

Estrutura de Dados (Vetores) Exerccios

Exerccio 4

Faa um programa que dado o vetor [2; 4; 35; 50; 23; 17; 9; 12; 27; 5] retorne:
a) maior valor b) mdia dos valores c) os valores dispostos em ordem crescente

Estrutura de Dados (Vetores) Exerccios

Exerccio 5

Fazer um programa para:


a) receber 3 notas parciais do aluno em um vetor e a nota do exame em uma varivel separada (-1 se o aluno no fez exame). b) executar as seguintes operaes:
i. Imprimir vetor de notas parciais e nota do exame ii. Retornar 0 se o aluno est reprovado direto, 1 se o aluno est reprovado em exame, 2 se o aluno est aprovado em exame e 3 se ele est aprovado direto (considere a mdia 7.0).

Estrutura de Dados (Vetores) Referncias Bibliogrcas

Referncias Bibliogrcas
Carboni, I.F. Lgica de programao. So Paulo: Pioneira Thomson Learning, 2003. Souza, M.A.F. e outros. Algoritmos e lgica de programao. So Paulo: Pioneira Thomson Learning, 2005. Damas, L. Linguagem C - 10a ed. Rio de Janeiro: LTC, 2007. Mizrahi, V.V. Treinamento em linguagem C - mdulos I e II. So Paulo: McGraw-Hill, 1990. Senne, E.L.F. Primeiro curso de programao em C - 3a ed. Florianpolis: Visual Books, 2009.

Potrebbero piacerti anche