Linguagem C vetores -...
Transcript of Linguagem C vetores -...
Linguagem C – vetores
IF61A/IF71A - Computação 1
Prof. Leonelo Almeida
Universidade Tecnológica Federal do Paraná
Até agora ...
• Introdução à linguagem C
▫ Estrutura de um programa
▫ Escrita e execução do primeiro programa em C
▫ Declaração de variáveis
▫ Tipos de dados
▫ Operadores aritméticos, de comparação e lógicos
▫ Entrada e saída de dados
▫ Estruturas condicionais
• Estruturas de repetição
Aula de hoje
• Um programa que ordena 3 números inteiros
• E se eu quisesse um programa que ...
ordena 100 números inteiros
• Ou, ainda, um programa que ...
armazena o nome de uma pessoa
Vetores
• Coleção de variáveis do mesmo tipo referenciada por um nome comum (Herbert Schildt):
• Características:
▫ Acesso por meio de um índice inteiro
▫ Posições contíguas na memoria
▫ Tamanho pré-definido
▫ Índices fora dos limites podem causar comportamento anômalo do programa
Declaração de vetores
<tipo> identificador [<tamanho do vetor>];
• Exemplo: float notas [100];
int medias [50];
0 1 2 ... tamanho-1
Declaração de vetores
<tipo> identificador [<tamanho do vetor>];
• Exemplo:
float notas [100];
int medias [50];
0 1 2 ... tamanho-1
0 1 2 ... 49
medias
Usando vetores
• Para acessar o valor de uma certa posição do vetor
▫ identificador [<posição>];
• Exemplo int nota[10];
int a;
nota[5] = 95;
a = nota[5];
Usando vetores - Exemplo
int cont, vet[10];
for (cont = 0; cont<10; cont++) {
vet[cont] = 5*cont;
printf(“%d”, vet[cont]);
}
O que esse programa imprimirá quando for executado?
Tamanho pré-definido
float nota[100];
int n, i;
printf("Número de alunos: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Nota do aluno %d: ", i+1);
scanf("%f", ¬a[i]);
}
Este programa está correto?
Tamanho pré-definido
float nota[100];
int n, i;
printf("Número de alunos: ");
scanf("%d", &n);
if(n>100){
n=100;
printf("\n Número máximo alterado para 100");
}
for (i = 0; i < n; i++) {
printf("Nota do aluno %d: ", i+1);
scanf("%f", ¬a[i]);
}
Precisamos testar o valor
informado pelo usuário
Inicialização de um vetor
• Para quando é desejado atribuir um valor inicial a um vetor
<tipo> identificador [] =
{elem. separados por vírgula};
• Exemplos: ▫ double vet1[] = {2.3, 5.6, 9.10};
▫ int vet 2[] = {5, 4, 6, -1}
Strings
• Em algoritmos utilizamos variáveis do tipo caractere para armazenar conjuntos de caracteres como, por exemplo, “tigre dente de sabre”
• Na linguagem C o tipo char armazena somente um caractere
• Logo, precisamos de cadeias de caracteres, chamadas de strings.
Strings • Em C são vetores de caracteres
• Toda string é terminada pelo caractere especial ‘\0’
• Portanto, declare strings com um caractere a mais do que é necessário
• Exemplo:
• Uma sigla de quatro caracteres: ▫ char sigla[5];
▫ sigla[0] = ‘I’;
▫ sigla[1] = ‘B’;
▫ sigla[2] = ‘G’;
▫ sigla[3] = ‘E’;
▫ sigla[4] = ‘\0’;
Para imprimir strings
...
printf(“informe a sigla:”);
scanf(“%s”, sigla);
printf(“Sigla %s”, sigla);
...
Para ler strings
• Para ler strings que contenham espaços
...
char nome[80];
scanf(“%[^\n]”, nome);
printf(“%s”, nome);
...
Atividades
• Ler dois vetores de tamanho 5 e calcular o produto interno deles.
▫ Obs.: o produto interno entre dois vetores a e b de tamanho n é dado por: a[0]*b[0]+a[1]*b[1]...a[n]*b[n]
• Ler dois vetores de 5 inteiros cada e informar quais elementos do segundo vetor são iguais a algum elemento do primeiro.
Atividades
• Ler o nome de uma pessoa de, no máximo 80 caracteres, salvar o nome invertido em outro vetor e imprimir o nome invertido.
• Exemplo:
▫ Ler: João Silva
▫ Imprimir: avliS oãoJ
• Agora leia um nome. Inverta-o no mesmo vetor (e sem usar um vetor adicional) e imprima o nome invertido.
Exercícios complementares
• Dado um vetor VET declarado como:
▫ int VET[5];
a) preenchê-lo (todas as posições) com o valor 30;
b) preenchê-lo com os inteiros 1,2,3 ...;
c) preenchê-lo com 1 se a posição é par e com 0 se a posição é impar
d) refazer a declaração e o os itens a), b) e c) considerando-se agora um vetor de 100 elementos
Exercícios complementares
• Escreva um programa que calcule e escreva o somatório dos valores armazenados num vetor V de 100 elementos informados pelo usuário
• Fazer um programa que leia dois vetores contendo, cada um, 25 elementos numéricos.
▫ Intercale os elementos destes dois conjuntos formando um novo vetor de 50 elementos
▫ Imprima o novo vetor obtido
Exercícios complementares
• Faça um algoritmo que receba um vetor X de 10 elementos e calcule a média dos valores de X.
• Agora, em seguida o programa deve receber um outro vetor Y de 10 elementos e calcular quais os valores de Y, estão acima da média calculada sobre os elementos de X.