UNIVERSIDADE FEDERAL DE
UBERLÂNDIA
ENGENHARIA MECÂNICA
INTRODUÇÃO À ALGORITMOS
Professora: Fabíola Gonçalves.
AGENDA
Estrutura de dados homogênea
 Declaração de Vetores
 Exemplos

2
INTRODUÇÃO


3

Algoritmos precisam de dados e informações para exercer as
suas funções.
Informações simples atendem a uma pequena parcela dos
algoritmos.
A maioria dos algoritmos utilizam uma grande carga de
informações estas quando utilizadas com tipos primitivos
precisam ser criadas com inúmeras variáveis..
 tornando o algoritmo carregado de variáveis, já que
uma variável contém apenas uma informação (exemplo:
a1, a2, a3, a4)Difícil gerenciamento
 Como prever o número de informações que serão
necessárias
INTRODUÇÃO

A alternativa para atendermos a esta demanda seria
criar novos tipos que suportem outras informações.
4

Utilizando os armários como demonstração,
uma gaveta só pode conter
um objeto, uma variável
tem somente uma informação,
no tipo primitivo.

quando se trata de tipos construídos, uma gaveta, ou
melhor, uma variável pode conter inúmeras informações.
VETOR
A partir daí, iremos trabalhar com um tipo construído,
denominado:
 Variáveis Compostas Homogêneas.

Tem este nome porque é formado por variáveis que aceitam
um número indeterminado de informações a partir de um
tipo primitivo.
Dividido em duas partes:
 Variáveis compostas Unidimensionais,



conhecido como Vetor
Variáveis compostas Multidimensionais,

conhecido como Matriz.
5

VETOR

6
Para entendermos um vetor iremos utilizar o
cenário de um edifício. Digamos que um edifício
contém apenas um apartamento por andar.
 Um edifício corresponde a um vetor e cada
apartamento corresponde a um elemento deste
vetor.
7
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR
Suporta N posições;
 Mesmo tipo de dado;
 Todos os elementos da estrutura são igualmente
acessíveis, isto é, o tempo e o tipo de procedimento
para acessar qualquer um dos elementos do vetor são
iguais;
 cada elemento tem um índice próprio segundo sua
posição;
 Ex.:

inteiro vet[100]; // vetor de números inteiros
8

VETOR

Os comandos que serão utilizados para de declarar
um vetor são:
9
tipo v = vetor [li:lf]<tipo básico>
 v: nomeVetor;


Observações: li e lf são obrigatoriamente constantes
inteiras e li é menor do que lf (li < lf).

A quantidade de elementos de um vetor é dada pela fórmula
lf –li + 1. Isto significa que o vetor inicia a partir de li e é
incrementado um a um, até lf.
VETOR
10
VETOR

11
Um vetor é uma variável composta formada por uma
sequência de variáveis, todas do mesmo tipo, com o mesmo
identificador (mesmo nome) alocadas sequencialmente na
memória.

Declaração de um vetor

tipo v = vetor [1:10] de caracter;
v: vet;
ou
 vet1, vet2,..., vetn: vetor [1..10] de inteiro;
ou
 vet = [1, 23, 44, 67, 95, 12, 34, 74, 76, 89];
VETOR

Operações via acessos no vetor:

Pode-se somar as notas:
Ex.:
X<-nota[1] + nota[2]+ nota[3]
X é igual a 22.5
elementos do vetor
12
tipo v = vetor [1:10] de real;
v: nota;
VETOR -EXEMPLOS
Algoritmo Vetor
{ Função : uso de Vetor}
Var // Seção de Declarações
tipo v = vetor [1:10] de inteiro;
v: vet;
i, num: inteiro
inicio // Abaixo é a seção de Comandos
para i <-1 ate 10 faca
escreval (“Digite um numero para ser armazenado no Vetor:”);
leia (num);
vet[i] <-num;
fimpara
para i <-1 ate 10 faca
escreva (vet[i], “ ”);
fim_pata
fim
VETOR

Acessando elementos do vetor:

Operações com índices:
14
VETOR
 Podemos
construir vetor de palavras


O vetor mês foi construído de tal modo que há uma
correspondência entre o número do mês e o índice do
elemento.

Por exemplo, o mês de número 11 (novembro) é acessado pelo
elemento mes[11].
A seguir alguns exemplos de Algoritmos sem o uso de
Vetor e com o uso de Vetor
15
mes = ["jan" "fev" "mar" "abr“ “maio” "jun" "jul" "ago"
"set" “out” "nov" "dez"];
EXEMPLO
Imagine o seguinte problema:
 Crie um algoritmo que calcule a média de dez
aluno que possuem apenas duas notas cada um.

VETOR -EXEMPLOS
Algoritmo MediaTurma;
VAR //algoritmo sem vetor
NOME: caracter;
N1, N2, MEDIA: real;
inicio
para i <-1 ate 10 faca
Escreva (“Digite o nome do”,i,“º aluno:”);
Leia (NOME);
Escreva (“Digite a sua 1ª nota:”);
Leia (N1);
Escreva (“Digite a sua 2ª nota:”);
Leia (N2);
MEDIA <-(N1 + N2) / 2;
Escreva NOME, “teve média igual a”, MEDIA);
fim_para;
fim
fimalgoritmo.
17
I: inteiro; {CONTADOR}
VETOR
O algoritmo fornece a média da turma, mas não pode
imprimir os dez alunos com suas respectivas médias na
ordem inversa, pois foi utilizada somente uma variável
para os dez alunos e dez médias e quando um é fornecida
a anterior é apagada.
 Então, se utilizarmos um variável para cada média:
10 nomes, 10 médias, 20 notas??

18

Imagine calcular a média de 300 alunos desta forma?
Totalmente inviável.
 Uma proposta de algoritmo para atender a esta necessidade
vem a seguir:

VETOR
Algoritmo MediaTurma;
VAR //algoritmo com vetor
tipo v = vetor [1:10] de caracter;
v: NOME;
tipo c= vetor [1:10] de real;
c: N1, N2, MEDIA;
inicio
para i <-1 ate 10 faca
Escreva (“Digite o nome do”,i,“º aluno:”);
Leia (NOME[i]);
Escreva (“Digite a sua 1ª nota:”);
Leia (N1[i]);
Escreva (“Digite a sua 2ª nota:”);
Leia (N2[i]);
MEDIA [i]<-(N1[i] + N2[i]) / 2;
Escreva (NOME[i], “teve média igual a”, MEDIA[i]);
fimpara;
para i <-10 ate 1 passo -1 faca
Escreva(NOME[i],' teve média igual a ', media[i]);
fimpara;
fim
19
I: INTEGER; {contador}
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR
Imagine o seguinte problema:

Dada uma relação de 5 estudantes, imprimir o nome
de cada estudante, cuja nota é maior do que a média
da classe.
20

ESTRUTURA DE DADOS HOMOGÊNEA
VETOR

Um algoritmo para esse problema poderia ser o
seguinte:
21
Leia(nome1,nota1,nome2,nota2,nome3,nota3,nome4,nota4,
nome5,nota5);
media = (nota1+nota2+nota3+nota4+nota5) / 5,0;
se nota1 > media então escreva (nome1);
se nota2 > media então escreva (nome2);
se nota3 > media então escreva (nome3);
se nota4 > media então escreva (nome4);
se nota5 > media então escreva (nome5);
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR
O algoritmo anterior apresenta uma solução
possível;
 Porém, essa solução é inviável para uma lista de
100 alunos;

22
Uma variável para cada nome => 100 variáveis;
 Uma variável para cada nota => 100 variáveis;
 100 testes.

ESTRUTURA DE DADOS HOMOGÊNEA
VETOR
23
Leia(nome1,nota1,nome2,nota2,...,nome100,
nota100);
media = (nota1+nota2+...+nota100) / 100,0;
se nota1 > media então escreva (nome1);
se nota2 > media então escreva (nome2);
...
se nota100 > media então escreva (nome100);
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR
Como estes dados têm uma relação entre si,
podemos declará-los usando um ÚNICO nome para
todos os 100 elementos;
 Lista(vetor) = conjunto de 100 números acessados
por um índice.

1
2
...
99
24
0
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR

Voltando ao problema anterior:

25
Dada uma relação de 5 estudantes, imprimir o nome
de cada estudante, cuja nota é maior do que a média
da classe.
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR

Um algoritmo para esse problema usando vetor:
26
para i = 1 até 5 faça
escreva(“Entre com o nome e a nota do aluno);
leia(nome[i],nota[i]);
soma = 0;
para i = 1 até 5 faça
soma = soma + nota[i];
fim_para
media = soma/5;
para i = 1 até 5 faça
se nota[i] > media então escrever (nome[i]);
fim_para
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR

Se ao invés de 5, fossem 100 alunos?
27
ESTRUTURA DE DADOS HOMOGÊNEA
VETOR

Se ao invés de 5, fossem 100 alunos?
28
para i = 1 até 100 faça
leia(nome[i],nota[i])
soma = 0
para i = 1 até 100 faça
soma = soma + nota[i]
media = soma/ 100
para i = 1 até 100 faça
se nota[i] > media então escrever (nome[i])
EXERCÍCIOS
1)
Sendo o vetor V igual ao que está descrito abaixo e as
variáveis X=2 e Y=4, escreva o valor:
a) V[X+1]
b) V[X+2]
c) V[X+4]
d) V[X*1]
e) V[X*3]
f) V[Y+3]
g) V[Y+4]
h) V[Y*2]
i) V[Y+X]
j) V[X*Y]
k) V[V[4]]
l) V[V[2*X+Y]]
m) V[V[2]*V[7]]
EXERCÍCIOS
2. Elabore um algoritmo que leia um vetor A de 30 números
inteiros e imprima o maior valor.
3. Elabore um algoritmo que, dados dois vetores inteiros de 10
posições, leia os dois vetores, some os valores da mesma posição
e armazene em um terceiro vetor inteiro de 10 posições. No
final imprima este terceiro vetor.
4. Um time de basquete possui 12 jogadores. Elabore um
algoritmo que, dados dois vetores NOME e ALTURA, calcule e
imprima o nome do jogador mais alto e a sua altura. Por fim,
elabore um algoritmo que calcule a média de altura do time.
5. Faça um algoritmo que copie o conteúdo de um vetor em um
segundo vetor
EXERCÍCIOS
6. Faça um algoritmo que some o conteúdo de dois vetores e
armazene o resultado em um terceiro vetor
7. Faça um algoritmo que faça a união de dois vetores de
mesmo tamanho e mesmo tipo em um terceiro vetor com dobro
do tamanho
8. Escreva um algoritmo que armazene em um vetor todos os
números inteiros de 0 a 50. O algoritmo deve imprimir todos
os valores armazenados.
9. Escreva um algoritmo que armazene em um vetor todos os
números inteiros do intervalo de 1 a 100 (1 e 100 não entram).
O algoritmo deve imprimir todos os valores armazenados.
EXERCÍCIOS
10. Escreva um algoritmo que armazene em um vetor todos os
números inteiros de 100 a 1 (em ordem decrescente). O
algoritmo deve imprimir todos os valores armazenados.
11. Elabore um algoritmo que leia os vetores A e B de números
reais de 4 posições (usando uma estrutura de repetição),
calcule a média ponderada. Armazene a média em um terceiro
vetor e, no final, imprima, na ordem inversa, este terceiro
vetor, com duas casas decimais. Fórmula: MEDIA = (A[?] * 4 +
B[?] * 6) / 10.
EXERCÍCIOS
12. Escreva um algoritmo que armazene em um vetor os 10
primeiros números ímpares. Começando do número 1.
13. Escreva um algoritmo que receba dez números do
usuário e armazene em um vetor a metade de cada número.
O algoritmo deve imprimir todos os valores armazenados.
14. Escreva um algoritmo que receba a altura de 10 atletas.
15. Esse algoritmo deve imprimir a altura daqueles atletas
que tem altura maior que a média.
EXERCÍCIOS
DESAFIO:

Numa corrida há 10 corredores, de número de inscrição de 1
a 10. Faça um algoritmo que leia os valores do número do
corredor e o seu respectivo tempo na corrida. Além disso, o
algoritmo deve imprimir o vencedor e o vice-vencedor e seus
tempos de corrida.
Download

Vetor02.08 - Facom - Universidade Federal de Uberlândia