Aula sobre vetores
Transcript of Aula sobre vetores
![Page 1: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/1.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Programação de Computadores IEstrutura de Dados (Vetores)
Prof. Antônio Augusto Chaves
Departamento de MatemáticaBloco VI - sala 23
http://www.feg.unesp.br/˜[email protected]
![Page 2: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/2.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
![Page 3: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/3.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Introdução
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
![Page 4: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/4.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Introdução
Introdução
I Exercício:
Escreva um programa em linguagem C que lê palavrascom 4 letras e as imprime de trás para frente.
Ex.:I casa – asacI lata – atalI sapo – opas
![Page 5: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/5.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Introdução
Introdução
I Solução:
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;
}
![Page 6: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/6.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Introdução
Introdução
I Problema:
Refaça o programa anterior para palavras ou frases com20, 30, e 50 caracteres.
![Page 7: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/7.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
![Page 8: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/8.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Definição
I Um vetor é um tipo de dado utilizado para representaruma certa quantidade de variáveis.
I Todas as variáveis são do mesmo tipo.
![Page 9: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/9.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Definição
I Para se declarar um vetor podemos utilizar a seguinteforma geral:
tipo_da_variavel nome_da_variavel [tamanho];
I no qual:I tipo_da_variavel: é o tipo das variáveis que devem ser
criadas. Ex.: int, char, float, entre outros;
I nome_da_variavel: é o nome que será utilizado parareferenciar o conjunto de variáveis;
I tamanho: é o número de variáveis que será criado(tamanho do vetor).
![Page 10: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/10.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Exemplos - Declaração
I int notas[10];
0 1 2 3 4 5 6 7 8 9
9 10 10 8 7 4 5 8 10 9
I char letras[20];
0 1 2 3 4 5 6 7 8 9
9 10 10 8 7 4 5 8 10 9
0 1 2 3 4 5 6 ... 19
U N E S P /0 /0 /0
I float pesos[40];
0 1 2 3 4 5 6 7 8 9
9 10 10 8 7 4 5 8 10 9
0 1 2 3 4 5 6 ... 19
U N E S P /0 /0 /0
0 1 2 3 4 5 6 ... 39
59.50 72.25 64.70 88.30 71.25 45.45 98.60 67.90
0 1 2 3 4 5 6 ... 99
19.90 25.00 12.10 11.99 1.25 0.99 10.00 12.50
I double preco[100];
0 1 2 3 4 5 6 7 8 9
9 10 10 8 7 4 5 8 10 9
0 1 2 3 4 5 6 ... 19
U N E S P /0 /0 /0
0 1 2 3 4 5 6 ... 39
59.50 72.25 64.70 88.30 71.25 45.45 98.60 67.90
0 1 2 3 4 5 6 ... 99
19.90 25.00 12.10 11.99 1.25 0.99 10.00 12.50
![Page 11: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/11.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Exemplos - Inicialização
I int notas[10] = {9,10,10,8,7,4,5,8,10,9}
I notas[0] = 9; notas[1] = 10; · · · notas[9] = 9;
I char letras[20] = “UNESP”
I scanf (“%c”, &letras[6]);
I for (i = 0; i < N; i++)pesos[ i ] = 1.0;
I preco[5+2] = preco[5] ∗ preco[2];
![Page 12: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/12.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Alocação de memória
I Quando o C vê uma declaração de vetor ele reserva umespaço na memória suficientemente grande paraarmazenar o número de células especificadas.
I Por exemplo, se declararmos:
float exemplo [20];
será reservado 4 ∗ 20 = 80 bytes. Estes bytes sãoreservados de maneira contígua.
![Page 13: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/13.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Como acessar um vetor?
I Para acessar o vetor declarado anteriormente vamosescrever:
exemplo[0]exemplo[1]...exemplo[19]
I Mas ninguém o impede de escrever:exemplo[30]exemplo[103]
![Page 14: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/14.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Por quê?
I Porque o C não verifica se o índice que você usou estádentro dos limites válidos. Este é um cuidado que vocêdeve tomar. Se o programador não tiver atenção com oslimites de validade para os índices ele corre o risco de tervariáveis sobrescritas ou de ver o computador travar.
Bugs terríveis podem surgir.
![Page 15: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/15.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
IMPORTANTE!!!
I O primeiro elemento de um vetor é o de índice 0 (zero).
I Num vetor de 100 elementos o último elemento é o deíndice 99.
I Acessar uma posição inválida de um vetor pode fazer seuprograma “Abortar”.
I Atenção: o elemento entre colchetes [ ] (quandodeclarando um vertor) deve ser um valor constante, já quevetores são blocos de memória estática de umdeterminado tamanho.
![Page 16: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/16.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
![Page 17: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/17.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Exercício 1
I Escreva um programa em linguagem C que lê palavrascom 10 letras e as imprime de trás para frente. Utilizevetores e laços.
![Page 18: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/18.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Solução
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;
} #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;
}
![Page 19: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/19.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Exercício 2
I Escreva um programa em linguagem C que lê asmatriculas e as notas de no máximo 100 alunos. Oprograma deve ler e armazenar uma nova matrícula e umanova nota até que o usuário digite uma matrícula negativa.
![Page 20: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/20.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Solução #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;
} 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);
}
![Page 21: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/21.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Exercício 3
I Utilizando o código do programa anterior, escreva um novoprograma que permite ao usuário consultar a nota de umaluno digitando a sua matrícula, o programa deve rodaraté que o usuário digite uma matrícula negativa.
Obs.: O trecho de código que lê as matrículas e as notas éo mesmo do programa anterior.
![Page 22: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/22.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios Resolvidos
Solução
#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;
} 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);
}
![Page 23: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/23.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
![Page 24: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/24.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Exercício 1
I Escreva um programa que conta as ocorrências de vogais,consoantes e espaços em branco da cadeia de caracterescorrespondente ao seu nome completo (sem acentuação).
![Page 25: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/25.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Exercício 2
I Crie um programa que armazene os 20 primeiros termosda Seqüência de Fibonacci em um vetor e imprima essesnúmeros na tela.
![Page 26: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/26.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Exercício 3
I Elabore um programa para ler as notas dos 40 alunos daturma, calcule a média da turma, e calcule tambémquantos alunos tiveram notas abaixo da média, e quantostiveram notas acima da média.
![Page 27: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/27.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Exercício 4
I Faça um programa que dado o vetor [2; 4; 35; 50; 23; 17;9; 12; 27; 5] retorne:
a) maior valorb) média dos valoresc) os valores dispostos em ordem crescente
![Page 28: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/28.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Exercícios
Exercício 5
I Fazer um programa para:a) receber 3 notas parciais do aluno em um vetor e a nota do
exame em uma variável separada (-1 se o aluno não fezexame).
b) executar as seguintes operações:i. Imprimir vetor de notas parciais e nota do exameii. Retornar 0 se o aluno está reprovado direto, 1 se o aluno
está reprovado em exame, 2 se o aluno está aprovado emexame e 3 se ele está aprovado direto (considere a média7.0).
![Page 29: Aula sobre vetores](https://reader035.fdocuments.net/reader035/viewer/2022081720/5571f8b649795991698ded8b/html5/thumbnails/29.jpg)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Referências Bibliográficas
Referências Bibliográficas
Carboni, I.F. Lógica de programação. São Paulo: Pioneira ThomsonLearning, 2003.
Souza, M.A.F. e outros. Algoritmos e lógica de programação. São Paulo:Pioneira Thomson Learning, 2005.
Damas, L. Linguagem C - 10a ed. Rio de Janeiro: LTC, 2007.
Mizrahi, V.V. Treinamento em linguagem C - módulos I e II. São Paulo:McGraw-Hill, 1990.
Senne, E.L.F. Primeiro curso de programação em C - 3a ed. Florianópolis:Visual Books, 2009.