apostila vetores UNESP

29
Estrutura de Dados (Vetores) Programação de Computadores I Estrutura de Dados (Vetores) Prof. Antônio Augusto Chaves Departamento de Matemática Bloco VI - sala 23 http://www.feg.unesp.br/˜chaves [email protected] Aula baseada no material do Prof. Rafael Sfair (FEG/UNESP)

Transcript of apostila vetores UNESP

Page 1: apostila vetores UNESP

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]

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

Page 2: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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 ”, &notas[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: apostila vetores UNESP

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: apostila vetores UNESP

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 ”, &notas[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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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: apostila vetores UNESP

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.