apostila vetores UNESP

Post on 05-Jul-2015

256 views 0 download

Transcript of 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/˜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 ”, &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);

}

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 ”, &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);

}

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.