Post on 05-Jul-2015
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/˜chaveschaves@feg.unesp.br
Aula baseada no material do Prof. Rafael Sfair (FEG/UNESP)
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
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
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
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;
}
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.
Otimização Evolutiva Apresentação Fabiano Luis de Sousa
Estrutura de Dados (Vetores)
Vetores
Sumário
Introdução
Vetores
Exercícios Resolvidos
Exercícios
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.
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).
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
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];
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.
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]
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.
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.
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
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.
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;
}
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.
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);
}
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.
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);
}
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
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).
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.
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.
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
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).
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.