Академический Документы
Профессиональный Документы
Культура Документы
Programao de Computadores I
Estrutura de Dados (Vetores)
http://www.feg.unesp.br/chaves chaves@feg.unesp.br
Sumrio
Sumrio
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
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; }
Introduo
Problema: Refaa o programa anterior para palavras ou frases com 20, 30, e 50 caracteres.
Sumrio
Denio
Um vetor um tipo de dado utilizado para representar uma certa quantidade de variveis. Todas as variveis so do mesmo tipo.
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).
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
Exemplos - Inicializao
int notas[10] = {9,10,10,8,7,4,5,8,10,9} notas[0] = 9; notas[1] = 10; notas[9] = 9;
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.
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.
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.
Sumrio
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.
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; }
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.
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 , ¬as[indice]); printf (Entre com a Matricula (ou negativo para sair): ); scanf (%d, &aux); indice++; } return 0; }
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.
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); }
Sumrio
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).
Exerccio 2
Crie um programa que armazene os 20 primeiros termos da Seqncia de Fibonacci em um vetor e imprima esses nmeros na tela.
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.
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
Exerccio 5
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.