35
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.

UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

Embed Size (px)

Citation preview

Page 1: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

UNIVERSIDADE FEDERAL DE UBERLÂNDIA

ENGENHARIA MECÂNICA

INTRODUÇÃO À ALGORITMOS

Professora: Fabíola Gonçalves.

Page 2: 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

Page 3: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

INTRODUÇÃO 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

3

Page 4: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

INTRODUÇÃO

A alternativa para atendermos a esta demanda seria criar novos tipos que suportem outras informações.

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.

4

Page 5: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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

Page 6: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

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.

6

Page 7: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

7

Page 8: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

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

Page 9: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

Os comandos que serão utilizados para de declarar um vetor são:

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.

9

Page 10: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

10

Page 11: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR 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;ouvet1, vet2,..., vetn: vetor [1..10] de inteiro;

ouvet = [1, 23, 44, 67, 95, 12, 34, 74, 76, 89];

11

Page 12: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

Operações via acessos no vetor:

tipo v = vetor [1:10] de real; v: nota;

Pode-se somar as notas:

Ex.:

X<-nota[1] + nota[2]+ nota[3]

X é igual a 22.5

elementos do vetor

12

Page 13: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR -EXEMPLOSAlgoritmo 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

fimalgoritm

Page 14: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

Acessando elementos do vetor: Operações com índices:

14

Page 15: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR

Podemos construir vetor de palavrasmes = ["jan" "fev" "mar" "abr“ “maio” "jun" "jul"

"ago" "set" “out” "nov" "dez"];

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

Page 16: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

EXEMPLO

Imagine o seguinte problema: Crie um algoritmo que calcule a média de

dez aluno que possuem apenas duas notas cada um.

Page 17: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETOR -EXEMPLOSAlgoritmo MediaTurma;

VAR //algoritmo sem vetor

NOME: caracter;

N1, N2, MEDIA: real;

I: inteiro; {CONTADOR}

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

Page 18: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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??

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:

18

Page 19: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

VETORAlgoritmo 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;

I: INTEGER; {contador}

inicio

para i <-1 ate 10 facaEscreva (“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

fimalgoritmo

19

Page 20: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

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

Page 21: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

Um algoritmo para esse problema poderia ser o seguinte:Leia(nome1,nota1,nome2,nota2,nome3,nota3,nome4,nota

4,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);

21

Page 22: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

O algoritmo anterior apresenta uma solução possível;

Porém, essa solução é inviável para uma lista de 100 alunos; Uma variável para cada nome => 100 variáveis; Uma variável para cada nota => 100 variáveis; 100 testes.

22

Page 23: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

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);

23

Page 24: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

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.

0 1 2 ... 99

24

Page 25: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

Voltando ao problema anterior: Dada uma relação de 5 estudantes, imprimir o

nome de cada estudante, cuja nota é maior do que a média da classe.

25

Page 26: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

Um algoritmo para esse problema usando vetor: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

26

Page 27: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

Se ao invés de 5, fossem 100 alunos?

27

Page 28: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

ESTRUTURA DE DADOS HOMOGÊNEAVETOR

Se ao invés de 5, fossem 100 alunos?

para i = 1 até 100 façaleia(nome[i],nota[i])

soma = 0para i = 1 até 100 faça

soma = soma + nota[i]media = soma/ 100para i = 1 até 100 faça

se nota[i] > media então escrever (nome[i])

28

Page 29: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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]]

Page 30: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

EXERCÍCIOS2. 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

Page 31: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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.

Page 32: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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.

Page 33: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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.

Page 34: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves

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.

Page 35: UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves