construcao de algoritmos - aula 10

52
Disciplina: Constr. de Algoritmos e Prog. de Sistemas Professor: Jeovane Reges Caxias – MA 2016 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO

Upload: facema-faculdade-de-ciencias-e-tecnologia-do-maranhao

Post on 16-Feb-2017

46 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Construcao de Algoritmos - Aula 10

Disciplina: Constr. de Algoritmos e Prog. de SistemasProfessor: Jeovane Reges

Caxias – MA2016

ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO

Page 2: Construcao de Algoritmos - Aula 10

2

Link Drive

bit.ly/ads-algoritmos

Page 3: Construcao de Algoritmos - Aula 10

3

Algoritmos

Page 4: Construcao de Algoritmos - Aula 10

4

Estruturas Homogêneas<Vetores>

Page 5: Construcao de Algoritmos - Aula 10

5

• Algoritmos• Estruturas Homogêneas• Introdução• Para resolução dos problemas propostos

até então, utilizamos: Tipos de dados básicos;

• <real, inteiro, literal, caractere e lógico>

Comandos de controle;• <decisão e repetição>

Variáveis simples, que "armazenam um único" valor por vez.

Page 6: Construcao de Algoritmos - Aula 10

6

• Algoritmos• Estruturas Homogêneas• Sempre que atribuímos um novo valor a

uma variável simples, o valor anterior é perdido.

algoritmo "Problema 01"var x: inteiroinicio x ← 10 escreval("Valor de x: ", x)

x ← 20 escreval("Valor de x: ", x)fimalgoritmo

Page 7: Construcao de Algoritmos - Aula 10

7

• Algoritmos• Estruturas Homogêneas• Vetores• Representação da memória ao criar uma

variável simples.

X

Page 8: Construcao de Algoritmos - Aula 10

8

• Algoritmos• Estruturas Homogêneas• Vetores• Representação da memória ao criar uma

variável simples. Atribuição do valor 10 a variável x.

XX ← 10

Page 9: Construcao de Algoritmos - Aula 10

9

• Algoritmos• Estruturas Homogêneas• Vetores• Representação da memória ao criar uma

variável simples. Atribuição do valor 20 a variável x.

// O valor 20 sobescreve o valor anterior que era 10.

X ← 10X ← 20

Page 10: Construcao de Algoritmos - Aula 10

10

Isso ocorre porque cada variável está associada a uma única posição de memória, e dentro dela é possível armazenar apenas um único valor.

Page 11: Construcao de Algoritmos - Aula 10

11

• Algoritmos• Estruturas Homogêneas• Vetores• Existem problemas em que as variáveis

simples NÃO são suficientes.

• Para atingir a solução de tais problemas, utilizamos as estruturas de dados homogêneas. Armazenam diversos dados de um mesmo

tipo em uma única variável. Vetores (unidimensionais); e Matrizes (bidimensionais).

Page 12: Construcao de Algoritmos - Aula 10

12

• Algoritmos• Estruturas Homogêneas• Exemplo:

Solicitar ao usuário as notas de 5 alunos de uma turma e no "final" apresentar as notas digitadas.

algoritmo "Notas"var notas: real i: inteiroinicio para i de 1 ate 5 faca escreva(i, "a. nota: ") leia(notas) fimpara escreval("Notas: ", notas)fimalgoritmo

Page 13: Construcao de Algoritmos - Aula 10

13

• Algoritmos• Estruturas Homogêneas• Saída:

Page 14: Construcao de Algoritmos - Aula 10

14

• Algoritmos• Estruturas Homogêneas• Vetores• Mas, se quisermos "armazenar" todos as

notas em uma única variável?

• Se quiséssemos acessar tais valores individualmente a qualquer momento?

• Com o que foi visto até então, não é possível "alcançar" esse comportamento.

Page 15: Construcao de Algoritmos - Aula 10

15

• Algoritmos• Estruturas Homogêneas• Vetores• Em casos como esse que é útil a utilização

das estruturas de dados homogêneas (vetores).

• Vetores são variáveis que permitem armazenar vários valores do mesmo tipo.

• Funciona como uma caixa, na qual você pode guardar o conteúdo que desejar.

Page 16: Construcao de Algoritmos - Aula 10

16

Estruturas de dados homogêneas são estruturas que permitem armazenar um conjuntos de dados do mesmo tipo

em uma única variável.

Page 17: Construcao de Algoritmos - Aula 10

17

Vetores

Page 18: Construcao de Algoritmos - Aula 10

18

• Algoritmos• Estruturas Homogêneas• Vetores• Tal como as variáveis simples, os vetores

precisam ser declarados antes de utilizados.

• Por se tratar de uma variável indexada a maneira como a declaramos é diferente.

• A ideia geral é que estamos declarando diversas variáveis dentro de uma só. Diferenciadas por um índice.

Page 19: Construcao de Algoritmos - Aula 10

19

• Algoritmos• Estruturas Homogêneas• Vetores

Estruturas que armazenam os dados em uma única linha e várias colunas.

1 2 3 4 5

índexes

V[1..5] =

Page 20: Construcao de Algoritmos - Aula 10

20

• Algoritmos• Estruturas Homogêneas• Vetores

Estruturas que armazenam os dados em uma única linha e várias colunas.

1 2 3 4 5

índexes

V[1..5] =

7 8.5 7.2 9.2 7.1

Page 21: Construcao de Algoritmos - Aula 10

21

• Algoritmos• Estruturas Homogêneas• Vetores

Sintaxe:

• Tamanho = [Vi..Vf], Vi = valor inicial; e Vf = valor final.

<identificador> : vetor [tamanho] de <tipo>

Page 22: Construcao de Algoritmos - Aula 10

22

• Algoritmos• Estruturas Homogêneas• Vetores

Exemplo:• Declaração de um vetor com 10 posições.

Devem ser declarados dentro da sessão var.

notas : vetor [1..10] de real

Nome do vetor Tipo de dados

Tamanho do vetor (note que são apenas DOIS PONTOS!)

Page 23: Construcao de Algoritmos - Aula 10

23

Vetores (Atribuição de valores)

Page 24: Construcao de Algoritmos - Aula 10

24

• Algoritmos• Estruturas Homogêneas• Vetores• Vimos que vetores são "variáveis".

• A declaração de um vetor apenas reserva espaço na memória e não associa valores a ele.

• Porém, em algumas situações é necessário iniciar os vetores com algum valor predefinido. Ou iniciar todo o vetor, dependendo do

problema.

Page 25: Construcao de Algoritmos - Aula 10

25

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores• Assim como as variáveis comuns, os

valores de um vetor também podem ser inicializados.

• Sintaxe:<identificador>[posição] ← <valor><identificador>[posição] := <valor>

Índice

Page 26: Construcao de Algoritmos - Aula 10

26

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo

7

1 2 3 4 5

Page 27: Construcao de Algoritmos - Aula 10

27

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo

7 8.5

1 2 3 4 5

Page 28: Construcao de Algoritmos - Aula 10

28

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo

7 8.5 7.2

1 2 3 4 5

Page 29: Construcao de Algoritmos - Aula 10

29

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo

7 8.5 7.2 0 0

1 2 3 4 5

Page 30: Construcao de Algoritmos - Aula 10

30

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {2}

algoritmo "ExVetores"var notas: vetor [1..5] de realinicio escreva("Nota do 1o. Aluno: ") leia(notas[1]) escreva("Nota do 2o. Aluno: ") leia(notas[2]) escreva("Nota do 3o. Aluno: ") leia(notas[3])fimalgoritmo

Page 31: Construcao de Algoritmos - Aula 10

31

• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores

Exemplo: {3}

algoritmo "ExVetores"var notas: vetor [1..5] de real i: inteiroinicio para i de 1 ate 5 faca escreva("Notas: ") leia(notas[i]) fimparafimalgoritmo

Page 32: Construcao de Algoritmos - Aula 10

32

Vetores (Acessando valores)

Page 33: Construcao de Algoritmos - Aula 10

33

• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores

Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2

escreval("1a. nota: ", notas[1]) escreval("2a. nota: ", notas[2]) escreval("3a. nota: ", notas[3])fimalgoritmo

Page 34: Construcao de Algoritmos - Aula 10

34

• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores

Exemplo: {2}

algoritmo "ExVetores"var notas: vetor [1..5] de real i: inteiroinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2 para i de 1 ate 5 faca escreval(i, "a. nota: ", notas[i]) fimparafimalgoritmo

Page 35: Construcao de Algoritmos - Aula 10

35

• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores

Saída: {2}

Page 36: Construcao de Algoritmos - Aula 10

36

Exemplos Resolvidos

<Vetores>

Page 37: Construcao de Algoritmos - Aula 10

37

Problema IFaça um algoritmo que leia 5 números

inteiro fornecidos pelo teclado e "armazene-os" em um vetor. Em seguida,

imprima-os na ordem em que foram "digitados".

Page 38: Construcao de Algoritmos - Aula 10

38

• Algoritmos

Resolução do Problema I

algoritmo "Problema 01"var numeros: vetor [1..5] de inteiro i, j: inteiroinicio para i de 1 ate 5 faca escreva("Digite um valor: ") leia(numeros[i]) fimpara

para j de 1 ate 5 faca escreva(numeros[j]) fimparafimalgoritmo

Page 39: Construcao de Algoritmos - Aula 10

39

Problema IIFaça um algoritmo que dado um vetor inicializado com 5 valores, some estes valores e em seguida

imprima a soma.

Page 40: Construcao de Algoritmos - Aula 10

40

• Algoritmos

algoritmo "Problema 02"var numeros: vetor [1..5] de inteiro i, soma: inteiroinicio numeros[1] ← 7 numeros[2] ← 8 numeros[3] ← 2 numeros[4] ← 5 numeros[5] ← 3

para i de 1 ate 5 faca soma ← soma + numeros[i] fimpara escreval("Soma: ", soma)fimalgoritmo

Reso

luçã

o do

Pro

blem

a II

Page 41: Construcao de Algoritmos - Aula 10

41

Problema IIIFaça um algoritmo que dado um vetor inicializado com 5 valores, apresente a média dos valores

contidos no vetor.

Page 42: Construcao de Algoritmos - Aula 10

42

• Algoritmos

algoritmo "Problema 03"var numeros: vetor [1..5] de inteiro i, soma: inteiro media: realinicio numeros[1] ← 7 numeros[2] ← 8 numeros[3] ← 2 numeros[4] ← 5 numeros[5] ← 3

para i de 1 ate 5 faca soma ← soma + numeros[i] fimpara media ← soma / 5 escreval("Media: ", media)fimalgoritmoRe

solu

ção

do P

robl

ema

III

Page 43: Construcao de Algoritmos - Aula 10

43

Problema IVFaça um algoritmo que leia 5

números inteiros e "armazene-os" em um vetor. Em seguida, "imprima" somente os números pares que se

encontram no vetor.

Page 44: Construcao de Algoritmos - Aula 10

44

• Algoritmos

algoritmo "Problema 04"var numeros: vetor [1..5] de inteiro i, j: inteiroinicio para i de 1 ate 5 faca escreva("Digite um valor: ") leia(numeros[i]) fimpara

para j de 1 ate 5 faca se (numeros[j] % 2 = 0) entao escreval(numeros[j]) fimse fimparafimalgoritmo

Reso

luçã

o do

Pro

blem

a IV

Page 45: Construcao de Algoritmos - Aula 10

45

Problema VFaça um algoritmo que leia um vetor com 5 posições de números inteiros. Em seguida, "imprima" a quantidade

de números pares existentes no vetor.

Page 46: Construcao de Algoritmos - Aula 10

46

• Algoritmos

algoritmo "Problema 05"var numeros: vetor [1..5] de inteiro i, j, conta_par: inteiroinicio para i de 1 ate 5 faca escreva("Digite um valor: ") leia(numeros[i]) fimpara

para j de 1 ate 5 faca se (numeros[j] % 2 = 0) entao conta_par ← conta_par + 1 fimse fimpara escreval(conta_par)fimalgoritmo

Reso

luçã

o do

Pro

blem

a V

Page 47: Construcao de Algoritmos - Aula 10

47

Problema VIFaça um algoritmo que dado um vetor de inteiro com 10 elementos, retorne o

"maior" valor que se encontra no vetor.

Page 48: Construcao de Algoritmos - Aula 10

48

• Algoritmos

Resolução do Problema VI

algoritmo "Problema 06"var numeros: vetor [1..10] de inteiro i, mv: inteiroinicio // Suponha que o vetor já preenchido mv ← numeros[1]

para i de 2 ate 10 faca se (numeros[i] > mv) entao mv ← números[i] fimse fimpara escreval(mv)fimalgoritmo

Page 49: Construcao de Algoritmos - Aula 10

49

Problema VIIFaça um algoritmo que dado um

vetor de números inteiros e positivos com 10 elementos,

apresente os índices dos "números ímpares".

Page 50: Construcao de Algoritmos - Aula 10

50

• Algoritmos

Resolução do Problema VIIalgoritmo "Problema 07"var numeros: vetor [1..10] de inteiro i, j: inteiroinicio para i de 1 ate 10 faca escreva("Digite um valor: ") leia(numeros[i]) fimpara

para j de 1 ate 10 faca se (numeros[j] % 2 <> 0) entao escreval("Valor ímpar na posição: ", i) fimse fimparafimalgoritmo

Page 51: Construcao de Algoritmos - Aula 10

51

Problema VIIIFaça um algoritmo que dados um conjunto

de valores inteiros armazene os seis primeiros números maiores do que

ZERO em um vetor.

Page 52: Construcao de Algoritmos - Aula 10

52

• Algoritmos

Resolução do Problema VIII

algoritmo "Problema 08"var numeros: vetor [1..6] de inteiro i, valor: inteiroinicio repita escreva("Digite um valor: ") leia(valor)

se (valor > 0) entao numeros[i] ← valor i ← i + 1 fimse ate(i > 6)fimalgoritmo