© m@nso 2003 introdução à programaçãocomputadores e programação i 1 estruturas de dados...
TRANSCRIPT
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
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
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
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)
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
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
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
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
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
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
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
12
Introdução à programação Computadores e programação I
© M@nso 2003
Desvio padrãoDesvio padrão
N
mediaixdp
2)][(
13© M@nso 2003
Introdução à programação Computadores e programação I
MatrizesMatrizes
Várias dimensões
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
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
16
Introdução à programação Computadores e programação I
© M@nso 2003
Inicializar o jogoInicializar o jogo
17
Introdução à programação Computadores e programação I
© M@nso 2003
Apresentar o JogoApresentar o Jogo
18
Introdução à programação Computadores e programação I
© M@nso 2003
JogarJogar
19© M@nso 2003
Introdução à programação Computadores e programação I
Pesquisa e OrdenaçãoPesquisa e Ordenação
20
Introdução à programação Computadores e programação I
© M@nso 2003
Pesquisa sequencialPesquisa sequencial
9 5 2 1 3 5 6 8
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
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
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
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
25
Introdução à programação Computadores e programação I
© M@nso 2003
Troca de valores dentro de arraysTroca de valores dentro de arrays
26
Introdução à programação Computadores e programação I
© M@nso 2003
Bubble SortBubble Sort
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
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
29
Introdução à programação Computadores e programação I
© M@nso 2003
DúvidasDúvidas