Construcao de Algoritmos - Aula 10

  • View
    36

  • Download
    1

Embed Size (px)

Transcript

Slide 1

Disciplina: Constr. de Algoritmos e Prog. de SistemasProfessor: Jeovane RegesCaxias MA2016ACULDADE DE CINCIAS E TECNOLOGIA DO MARANHO

1

Link Drive

bit.ly/ads-algoritmos

2

3Algoritmos

4

Estruturas Homogneas

AlgoritmosEstruturas HomogneasIntroduoPara resoluo dos problemas propostos at ento, utilizamos: Tipos de dados bsicos;

Comandos de controle;

Variveis simples, que "armazenam um nico" valor por vez.

5

AlgoritmosEstruturas HomogneasSempre que atribumos um novo valor a uma varivel simples, o valor anterior perdido.

6

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

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

AlgoritmosEstruturas HomogneasVetoresRepresentao da memria ao criar uma varivel simples.

7

X

AlgoritmosEstruturas HomogneasVetoresRepresentao da memria ao criar uma varivel simples.Atribuio do valor 10 a varivel x.

8

X

X 10

AlgoritmosEstruturas HomogneasVetoresRepresentao da memria ao criar uma varivel simples.Atribuio do valor 20 a varivel x.

// O valor 20 sobescreve o valor anterior que era 10.9

X 10

X 20

10Isso ocorre porque cada varivel est associada a uma nica posio de memria, e dentro dela possvel armazenar apenas um nico valor.

AlgoritmosEstruturas HomogneasVetoresExistem problemas em que as variveis simples NO so suficientes.

Para atingir a soluo de tais problemas, utilizamos as estruturas de dados homogneas.Armazenam diversos dados de um mesmo tipo em uma nica varivel.Vetores (unidimensionais); e Matrizes (bidimensionais).

11

AlgoritmosEstruturas HomogneasExemplo: Solicitar ao usurio as notas de 5 alunos de uma turma e no "final" apresentar as notas digitadas.

12

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

AlgoritmosEstruturas HomogneasSada:

13

AlgoritmosEstruturas HomogneasVetoresMas, se quisermos "armazenar" todos as notas em uma nica varivel?

Se quisssemos acessar tais valores individualmente a qualquer momento?

Com o que foi visto at ento, no possvel "alcanar" esse comportamento.14

AlgoritmosEstruturas HomogneasVetoresEm casos como esse que til a utilizao das estruturas de dados homogneas (vetores).

Vetores so variveis que permitem armazenar vrios valores do mesmo tipo.

Funciona como uma caixa, na qual voc pode guardar o contedo que desejar.15

16Estruturas de dados homogneas so estruturas que permitem armazenar um conjuntos de dados do mesmo tipo em uma nica varivel.

17Vetores

AlgoritmosEstruturas HomogneasVetoresTal como as variveis simples, os vetores precisam ser declarados antes de utilizados.

Por se tratar de uma varivel indexada a maneira como a declaramos diferente.

A ideia geral que estamos declarando diversas variveis dentro de uma s. Diferenciadas por um ndice.18

AlgoritmosEstruturas HomogneasVetoresEstruturas que armazenam os dados em uma nica linha e vrias colunas.

19

12345

ndexesV[1..5] =

AlgoritmosEstruturas HomogneasVetoresEstruturas que armazenam os dados em uma nica linha e vrias colunas.

20

12345

ndexesV[1..5] =

78.57.29.27.1

AlgoritmosEstruturas HomogneasVetoresSintaxe:

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

21

: vetor [tamanho] de

AlgoritmosEstruturas HomogneasVetoresExemplo:Declarao de um vetor com 10 posies.

Devem ser declarados dentro da sesso var.

22

notas : vetor [1..10] de realNome do vetorTipo de dadosTamanho do vetor (note que so apenas DOIS PONTOS!)

23Vetores (Atribuio de valores)

AlgoritmosEstruturas HomogneasVetoresVimos que vetores so "variveis".

A declarao de um vetor apenas reserva espao na memria e no associa valores a ele.

Porm, em algumas situaes necessrio iniciar os vetores com algum valor predefinido.Ou iniciar todo o vetor, dependendo do problema.24

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresAssim como as variveis comuns, os valores de um vetor tambm podem ser inicializados.

Sintaxe:

25

[posio] [posio] := ndice

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {1}

26

algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] 7 notas[2] 8.5 notas[3] 7.2fimalgoritmo7

1234

5

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {1}

27

algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] 7 notas[2] 8.5 notas[3] 7.2fimalgoritmo78.5

1234

5

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {1}

28

algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] 7 notas[2] 8.5 notas[3] 7.2fimalgoritmo78.57.2

1234

5

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {1}

29

algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] 7 notas[2] 8.5 notas[3] 7.2fimalgoritmo78.57.20012345

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {2}

30

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

AlgoritmosEstruturas HomogneasVetores Atribuio de valoresExemplo: {3}

31

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

32Vetores (Acessando valores)

AlgoritmosEstruturas HomogneasVetores Acessando valoresExemplo: {1}

33

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

AlgoritmosEstruturas HomogneasVetores Acessando valoresExemplo: {2}

34

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

AlgoritmosEstruturas HomogneasVetores Acessando valoresSada: {2}

35

36Exemplos Resolvidos

37Problema IFaa um algoritmo que leia 5 nmeros inteiro fornecidos pelo teclado e "armazene-os" em um vetor. Em seguida, imprima-os na ordem em que foram "digitados".

AlgoritmosResoluo do Problema I

38

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

39Problema IIFaa um algoritmo que dado um vetor inicializado com 5 valores, some estes valores e em seguida imprima a soma.

Algoritmos

40

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)fimalgoritmoResoluo do Problema II

41Problema IIIFaa um algoritmo que dado um vetor inicializado com 5 valores, apresente a mdia dos valores contidos no vetor.

Algoritmos

42

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)fimalgoritmoResoluo do Problema III

43Problema IVFaa um algoritmo que leia 5 nmeros inteiros e "armazene-os" em um vetor. Em seguida, "imprima" somente os nmeros pares que se encontram no vetor.

Algoritmos

44

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 fimparafimalgoritmoResoluo do Problema IV

45Problema VFaa um algoritmo que leia um vetor com 5 posies de nmeros inteiros. Em seguida, "imprima" a quantidade de nmeros pares existentes no vetor.

Algoritmos

46

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)fimalgoritmoResoluo do Problema V

47Problema VIFaa um algoritmo que dado um vetor de inteiro com 10 elementos, retorne o "maior" valor que se encontra no vetor.

AlgoritmosResoluo do Problema VI

48

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 nmeros[i] fimse fimpara escreval(mv)fimalgoritmo

49Problema VIIFaa um algoritmo que dado um vetor de nmeros inteiros e positivos com 10 elementos,