© m@nso 2003 introdução à programaçãocomputadores e programação i 1 estruturas de dados...

29
1 © M@nso 2003 Introdução à programação Computadores e programação I Estruturas de dados Estruturas de dados homogéneas homogéneas “Três classes de pessoas são infelizes: as que não sabem e não perguntam, as que sabem e não ensinam, as que ensinam e não fazem.” V.Beda

Upload: internet

Post on 18-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

1© M@nso 2003

Introdução à programação Computadores e programação I

Estruturas de dados Estruturas de dados homogéneashomogéneas

“Três classes de pessoas são infelizes:as que não sabem e não perguntam,

as que sabem e não ensinam,as que ensinam e não fazem.”

V.Beda

Page 2: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

2

Introdução à programação Computadores e programação I

© M@nso 2003

Dados de um alunoDados de um aluno

1 byte1 byteinteiro idade <-24caracter sexo <-‘m’real peso <- 74.32 real altura <- 1.75inteiro nota1 <- 10inteiro nota2 <- 5inteiro nota3 <- 15inteiro nota4 <- 17inteiro nota5 <- 16inteiro nota6 <- 3inteiro nota7 <- 14

inteiro idade <-24caracter sexo <-‘m’real peso <- 74.32 real altura <- 1.75inteiro nota1 <- 10inteiro nota2 <- 5inteiro nota3 <- 15inteiro nota4 <- 17inteiro nota5 <- 16inteiro nota6 <- 3inteiro nota7 <- 14

Calcular•Media das notas•Nota máxima•Numero de negativas

Calcular•Media das notas•Nota máxima•Numero de negativas

Page 3: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

3

Introdução à programação Computadores e programação I

© M@nso 2003

Calcular a média das notasCalcular a média das notas

MediaMedia

media <- ( nota1 + nota2 + nota3 + nota4 +media <- ( nota1 + nota2 + nota3 + nota4 + nota5 + nota6 + nota7 ) / 7.0;nota5 + nota6 + nota7 ) / 7.0;

media <- ( nota1 + nota2 + nota3 + nota4 +media <- ( nota1 + nota2 + nota3 + nota4 + nota5 + nota6 + nota7 ) / 7.0;nota5 + nota6 + nota7 ) / 7.0;

Nota máximaNota máxima

inteiro nota_maxima <- nota1;inteiro nota_maxima <- nota1;

sese nota2 > nota_maxima nota2 > nota_maxima entãoentão nota_maxima = nota2;nota_maxima = nota2;

FimseFimse sese nota3 > nota_maxima nota3 > nota_maxima entãoentão nota_maxima = nota3;nota_maxima = nota3;

FimseFimsesese nota4 > nota_maxima nota4 > nota_maxima entãoentão nota_maxima = nota4;nota_maxima = nota4;

FimseFimse sese nota5 > nota_maxima nota5 > nota_maxima entãoentão nota_maxima = nota5;nota_maxima = nota5;

FimseFimse sese nota6 > nota_maxima nota6 > nota_maxima entãoentão nota_maxima = nota6;nota_maxima = nota6;

FimseFimse sese nota7 > nota_maxima nota7 > nota_maxima entãoentão nota_maxima = nota7;nota_maxima = nota7;

FimseFimse

inteiro nota_maxima <- nota1;inteiro nota_maxima <- nota1;

sese nota2 > nota_maxima nota2 > nota_maxima entãoentão nota_maxima = nota2;nota_maxima = nota2;

FimseFimse sese nota3 > nota_maxima nota3 > nota_maxima entãoentão nota_maxima = nota3;nota_maxima = nota3;

FimseFimsesese nota4 > nota_maxima nota4 > nota_maxima entãoentão nota_maxima = nota4;nota_maxima = nota4;

FimseFimse sese nota5 > nota_maxima nota5 > nota_maxima entãoentão nota_maxima = nota5;nota_maxima = nota5;

FimseFimse sese nota6 > nota_maxima nota6 > nota_maxima entãoentão nota_maxima = nota6;nota_maxima = nota6;

FimseFimse sese nota7 > nota_maxima nota7 > nota_maxima entãoentão nota_maxima = nota7;nota_maxima = nota7;

FimseFimse

E se E se fossem fossem

50 notas50 notas

Page 4: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

4

Introdução à programação Computadores e programação I

© M@nso 2003

Estruturas homogéneas de dados (arrays)Estruturas homogéneas de dados (arrays)

Usam-se arrays para representar variáveis que são Elementos do mesmo tipo Relacionados entre si Sobre os quais pretendemos fazer operações

semelhantes Que pretendemos representar por um nome comum

Cada componente de um array é uma variável individual

Possui um nome (derivado do nome do array) Possui um tipo (o do tipo base do array) Possui um valor (manipulado como qualquer variável)

Os arrays podem ser: Unidimensionais (chamados de vectores) Multidimensionais (chamados de matrizes)

Page 5: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

5

Introdução à programação Computadores e programação I

© M@nso 2003

VectoresVectores Declaração

tipo nome_variável [numero de elementos] inteiro nota[7]

Acesso Indexado pelo operador [ ]

nota[2] Index <- 2 Nota [ index ]

Leitura e escrita Uma variável de cada vez

Page 6: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

6

Introdução à programação Computadores e programação I

© M@nso 2003

Ler VectorLer Vector

inicioinicio inteiro nota [ 7 ]inteiro nota [ 7 ] inteiro index <- 0inteiro index <- 0 enquanto index <= 6 enquanto index <= 6 fazfaz ler nota [ index ]ler nota [ index ] index <- index + 1index <- index + 1 fimenquantofimenquantofimfim

inicioinicio inteiro nota [ 7 ]inteiro nota [ 7 ] inteiro index <- 0inteiro index <- 0 enquanto index <= 6 enquanto index <= 6 fazfaz ler nota [ index ]ler nota [ index ] index <- index + 1index <- index + 1 fimenquantofimenquantofimfim

Ler um vectorLer um vector

Ler VectorLer Vector

inicioinicio inteiro nota [ 7 ]inteiro nota [ 7 ] inteiro index inteiro index para index de 0 ate 6para index de 0 ate 6 ler nota[index]ler nota[index] proximo proximo fimfim

inicioinicio inteiro nota [ 7 ]inteiro nota [ 7 ] inteiro index inteiro index para index de 0 ate 6para index de 0 ate 6 ler nota[index]ler nota[index] proximo proximo fimfim

9 5 2 1 3 5 6 8

Page 7: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

7

Introdução à programação Computadores e programação I

© M@nso 2003

Inicializar um vectorInicializar um vector

Construa um programa que Inicialize o vector com notas aleatórias

inicializarinicializar

para index de 0 ate 6para index de 0 ate 6 nota[index] <- aleatorio() * 20 + 1nota[index] <- aleatorio() * 20 + 1 proximo proximo

para index de 0 ate 6para index de 0 ate 6 nota[index] <- aleatorio() * 20 + 1nota[index] <- aleatorio() * 20 + 1 proximo proximo

9 5 2 1 3 5 6 8

Page 8: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

8

Introdução à programação Computadores e programação I

© M@nso 2003

escrever um vectorescrever um vector

escreverescrever

para index de 0 ate 6para index de 0 ate 6 escrever “\nnota[“,index, “] = escrever “\nnota[“,index, “] = “ ,nota[index]“ ,nota[index] proximo proximo

para index de 0 ate 6para index de 0 ate 6 escrever “\nnota[“,index, “] = escrever “\nnota[“,index, “] = “ ,nota[index]“ ,nota[index] proximo proximo

9 5 2 1 3 5 6 8

Page 9: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

9

Introdução à programação Computadores e programação I

© M@nso 2003

Máximo de um vectorMáximo de um vector

Calcular o máximoCalcular o máximo

inteiro notamaxima <- nota [ 0 ]inteiro notamaxima <- nota [ 0 ]

para index de para index de 11 ate ate 66 se nota [ index ] > notamaxima entaose nota [ index ] > notamaxima entao notamaxima <- nota [ index ]notamaxima <- nota [ index ] fimsefimse proximoproximo escrever "\nnota máxima :" , notaMaximaescrever "\nnota máxima :" , notaMaxima

inteiro notamaxima <- nota [ 0 ]inteiro notamaxima <- nota [ 0 ]

para index de para index de 11 ate ate 66 se nota [ index ] > notamaxima entaose nota [ index ] > notamaxima entao notamaxima <- nota [ index ]notamaxima <- nota [ index ] fimsefimse proximoproximo escrever "\nnota máxima :" , notaMaximaescrever "\nnota máxima :" , notaMaxima

9 5 2 1 3 5 6 8

Page 10: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

10

Introdução à programação Computadores e programação I

© M@nso 2003

Média de um vectorMédia de um vector

Calcular a médiaCalcular a média

real soma <- 0real soma <- 0 para index de 0 ate 6para index de 0 ate 6 soma <- soma + nota [ index ]soma <- soma + nota [ index ] proximoproximo escrever "\nmédia :" , soma / 7.0escrever "\nmédia :" , soma / 7.0

real soma <- 0real soma <- 0 para index de 0 ate 6para index de 0 ate 6 soma <- soma + nota [ index ]soma <- soma + nota [ index ] proximoproximo escrever "\nmédia :" , soma / 7.0escrever "\nmédia :" , soma / 7.0

9 5 2 1 3 5 6 8

Page 11: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

11

Introdução à programação Computadores e programação I

© M@nso 2003

ExercícioExercício

Pretende-se uma aplicação que avalie a regularidade de vendas dos trabalhadores de uma empresa.

Escreva um programa que realize a leitura as comissões pagas a um trabalhador durante um ano, calcule a média de comissões pagas e o seus desvio padrão.

N

mediaixdp

2)][(

9 5 2 1 3 5 6 8

Page 12: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

12

Introdução à programação Computadores e programação I

© M@nso 2003

Desvio padrãoDesvio padrão

N

mediaixdp

2)][(

Page 13: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

13© M@nso 2003

Introdução à programação Computadores e programação I

MatrizesMatrizes

Várias dimensões

Page 14: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

14

Introdução à programação Computadores e programação I

© M@nso 2003

Matrizes (vectores multidimensionais)Matrizes (vectores multidimensionais)

Não existe limite para o número de dimensões de um vector

Sintaxe tipo nome_variavel[dim_1][dim_2]…[dim_n]

Exemplos inteiro notas[20][3] caracter galo[3][3]

ox

o x

Page 15: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

15

Introdução à programação Computadores e programação I

© M@nso 2003

Jogo do GaloJogo do Galo

Construa uma aplicação que permita jogar o jogo do galo

Declarar o Jogo Caracter galo[3][3]

Inicializar o jogo Apresentar o jogo Jogar

Mudar de marca Pedir a linha Pedir a coluna

ox

o x

Page 16: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

16

Introdução à programação Computadores e programação I

© M@nso 2003

Inicializar o jogoInicializar o jogo

Page 17: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

17

Introdução à programação Computadores e programação I

© M@nso 2003

Apresentar o JogoApresentar o Jogo

Page 18: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

18

Introdução à programação Computadores e programação I

© M@nso 2003

JogarJogar

Page 19: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

19© M@nso 2003

Introdução à programação Computadores e programação I

Pesquisa e OrdenaçãoPesquisa e Ordenação

Page 20: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

20

Introdução à programação Computadores e programação I

© M@nso 2003

Pesquisa sequencialPesquisa sequencial

9 5 2 1 3 5 6 8

Page 21: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

21

Introdução à programação Computadores e programação I

© M@nso 2003

Pesquisa sequencialPesquisa sequencial

9 5 2 1 3 5 6 8

pesquisarpesquisar

ler numler num logico encontrei <- falsologico encontrei <- falso index <- 0index <- 0 enquanto enquanto index < 8 index < 8 e e encontrei = falsoencontrei = falso faz faz se vetor [ index ] = num entaose vetor [ index ] = num entao encontrei <- verdadeiroencontrei <- verdadeiro fimsefimse index <- index + 1index <- index + 1 fimenquantofimenquanto se encontrei entaose encontrei entao escrever "encontrei"escrever "encontrei" senaosenao escrever " não encontrei"escrever " não encontrei" fimsefimse

ler numler num logico encontrei <- falsologico encontrei <- falso index <- 0index <- 0 enquanto enquanto index < 8 index < 8 e e encontrei = falsoencontrei = falso faz faz se vetor [ index ] = num entaose vetor [ index ] = num entao encontrei <- verdadeiroencontrei <- verdadeiro fimsefimse index <- index + 1index <- index + 1 fimenquantofimenquanto se encontrei entaose encontrei entao escrever "encontrei"escrever "encontrei" senaosenao escrever " não encontrei"escrever " não encontrei" fimsefimse

Page 22: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

22

Introdução à programação Computadores e programação I

© M@nso 2003

Troca de valores dentro de arraysTroca de valores dentro de arrays

Construir um programa que troque os valores das duas primeiras posição de um vector

9 5 2 1 3 5 6 8

aux

9

5 5 2 1 3 5 6 8

5 9 2 1 3 5 6 8

Page 23: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

23

Introdução à programação Computadores e programação I

© M@nso 2003

Troca de valores dentro de arraysTroca de valores dentro de arrays

Construir um programa que ordene os valores das duas primeiras posição de um vector 9 5 2 1 3 5 6 8

aux

9

5 5 2 1 3 5 6 8

5 9 2 1 3 5 6 8

Page 24: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

24

Introdução à programação Computadores e programação I

© M@nso 2003

Troca de valores dentro de arraysTroca de valores dentro de arrays

9 5 2 1 3 5 6 0

5 9 2 1 3 5 6 0

5 9 2 1 3 5 6 0

5 2 9 1 3 5 6 0

5 2 1 9 3 5 6 0

5 2 1 3 9 5 6 0

5 2 1 3 5 9 6 0

5 2 1 3 5 6 9 0

5 2 1 3 5 6 0 9

Page 25: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

25

Introdução à programação Computadores e programação I

© M@nso 2003

Troca de valores dentro de arraysTroca de valores dentro de arrays

Page 26: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

26

Introdução à programação Computadores e programação I

© M@nso 2003

Bubble SortBubble Sort

Page 27: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

27

Introdução à programação Computadores e programação I

© M@nso 2003

Bubble SortBubble SortBubble SortBubble Sort

para j de 0 ate 9para j de 0 ate 9

para i de 0 ate 8 para i de 0 ate 8

se vetor [ i ] > vetor [ i + 1 ] se vetor [ i ] > vetor [ i + 1 ] entaoentao aux <- vetor [ i ]aux <- vetor [ i ] vetor [ i ] <- vetor [ i + 1 ]vetor [ i ] <- vetor [ i + 1 ] vetor [ i + 1 ] <- auxvetor [ i + 1 ] <- aux fimsefimse

proximoproximo

proximoproximo

para j de 0 ate 9para j de 0 ate 9

para i de 0 ate 8 para i de 0 ate 8

se vetor [ i ] > vetor [ i + 1 ] se vetor [ i ] > vetor [ i + 1 ] entaoentao aux <- vetor [ i ]aux <- vetor [ i ] vetor [ i ] <- vetor [ i + 1 ]vetor [ i ] <- vetor [ i + 1 ] vetor [ i + 1 ] <- auxvetor [ i + 1 ] <- aux fimsefimse

proximoproximo

proximoproximo

Page 28: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

28

Introdução à programação Computadores e programação I

© M@nso 2003

ResumoResumo

Arrays são conjunto de dados todos do mesmo tipo que são acedidos através da indexação do mesmo nome

É possível definir arrays de qualquer tipo de dados Os elementos dos arrays comportam-se como variáveis

simples Os arrays têm uma ou mais dimensões Os indexes começam em ZERO O processamento de todos os elementos do Array

envolve ciclos através da iteração dos indices A instrução LER le apenas uma variável

Os arrays representam muitas variáveis Não é possível ler o array de uma só vez

A instrução Escrever escreve uma variável ou expressão

Os arrays representam muitas variáveis Não é possível escrever o array de uma só vez

Page 29: © M@nso 2003 Introdução à programaçãoComputadores e programação I 1 Estruturas de dados homogéneas Três classes de pessoas são infelizes: as que não sabem

29

Introdução à programação Computadores e programação I

© M@nso 2003

DúvidasDúvidas