Desenvolvimento de
Jogos e Entretenimento
Digital
Oficina temática:
Algoritmos e Programação
Aula 8: Array
Professores: Sandro Rigo
Túlio Bender
Roteiro




Array bidimensional
Funções
Parâmetros
Exercícios
Array multidimensional

Array bidimensional == matriz

Duas dimensões: linha e coluna
<tipo> <nome> [<linha>] [<coluna>] ;
<tipo> <nome> [<linha>] [<coluna>] = { <valores> };
Exemplo: char P[3][4];
Coluna 0
Coluna 1
Coluna 2
Coluna 3
Linha 0
P[0][0]
P[0][1]
P[0][2]
P[0][3]
Linha 1
P[1][0]
P[1][1]
P[1][2]
P[1][3]
Linha 2
P[2][0]
P[2][1]
P[2][2]
P[2][3]
Array multidimensional
C++: suporte
Array unidimensional == vetor
para no mínimo
 Array tridimensional == ?
12 níveis
Exemplo: char P[2][3][4];
Coluna 0 Coluna 1 Coluna 2 Coluna 3

Linha 0
P[1][0][0]
P[1] [0][1] P[1] [0][2] P[1] [0][3]
Linha 1
P[1][0]
Linha 2
P[2][0]
Linha 0
P[1][1]
Coluna 0
P[2][1]
P[0][0][0]
Linha 1
P[0] [1][0] P[0] [1][1] P[0] [1][2] P[0] [1][3]
Linha 2
P[0] [2][0] P[0] [2][1] P[0] [2][2] P[0] [2][3]
Nível 1
Nível 0
P[1][2]
P[1][3]
Coluna 1 Coluna 2 Coluna 3
P[2][2]
P[2][3]
P[0] [0][1] P[0] [0][2] P[0] [0][3]
Array multidimensional


Array bidimensional: Inicialização
Identificação dos níveis com chaves
<tipo> <nome> [<linha>] [<coluna>] = { {<valores>}, ... , {<valores>} };
Exemplo: char P[3][4] ={ {1, 2, 3, 0}, {4, 5, 6, 0}, {7} };
Coluna 0
Coluna 1
Coluna 2
Coluna 3
Linha 0
1
2
3
0
Linha 1
4
5
6
0
Linha 2
7
0
0
0
Array multidimensional


Array bidimensional: Inicialização
Identificação dos níveis com chaves
<tipo> <nome> [<linha>] [<coluna>] = { {<valores>}, ... , {<valores>} };
Exemplo: char P[3][4] ={ {1, 2, 3, 0}, {4, 5, 6, 0}, {7} };
Coluna 0
Coluna 1
Coluna 2
Coluna 3
Linha 0
1
2
3
0
Linha 1
4
5
6
0
Linha 2
7
0
0
0
Array multidimensional


Array bidimensional: Inicialização
Identificação dos níveis com chaves
<tipo> <nome> [<linha>] [<coluna>] = { {<valores>}, ... , {<valores>} };
<tipo> <nome> [<linha>] [<coluna>] = { <valor>, ... , <valor> };
Exemplos equivalentes:
char P[3][4] ={ {1, 2, 3, 0}, {4, 5, 6, 0}, {7} };
char P2[3][4] ={ 1, 2, 3, 0, 4, 5, 6, 0, 7 };
Array multidimensional
Array bidimensional: exemplo
 Problema: armazenar 4 notas, para 3 estudantes
#define NRO_ESTUDANTES 3
#define NRO_NOTAS 4
......
char dados[NRO_ESTUDANTES][NRO_NOTAS] ={ 0 };
int estudante, nota, valor;
.......
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
for (nota=0; nota < NRO_NOTAS; nota++){
cout <<"Digite nota ["<<nota<<"] :";
cin>>valor;
dados[estudante][nota]=valor;
}
}

Array multidimensional
Array bidimensional: exemplo
 Problema: armazenar 4 notas, para 3 estudantes
#define NRO_ESTUDANTES 3
#define NRO_NOTAS 4
......
char dados[NRO_ESTUDANTES][NRO_NOTAS] ={ 0 };
int estudante, nota, valor;
.......
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
for (nota=0; nota < NRO_NOTAS; nota++){
cout <<"Digite nota ["<<nota<<"] :";
cin>>valor;
dados[estudante][nota]=valor;
}
}

Array multidimensional
Array bidimensional: exemplo
 Problema: armazenar 4 notas, para 3 estudantes
 Continuação: calcular as médias de cada estudante
cout<<endl<<"Médias:"<<endl;
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
valor = 0;
for (nota=0; nota < NRO_NOTAS; nota++){
valor = valor + dados[estudante][nota];
}
valor = valor / NRO_NOTAS;
cout<<"média = "<<valor;
}

Array multidimensional
Array bidimensional: exemplo
 Problema: armazenar 4 notas, para 3 estudantes
 Continuação: calcular as médias de cada estudante
cout<<endl<<"Médias:"<<endl;
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
valor = 0;
for (nota=0; nota < NRO_NOTAS; nota++){
valor = valor + dados[estudante][nota];
}
valor = valor / NRO_NOTAS;
cout<<"média = "<<valor;
}

Array multidimensional


Array bidimensional: exemplo
Novo Problema: armazenar 44 notas, para 300 estudantes e
calcular as médias
#define NRO_ESTUDANTES 300
#define NRO_NOTAS 44
......
char dados[NRO_ESTUDANTES][NRO_NOTAS] ={ 0 };
int estudante, nota, valor;
.......
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
for (nota=0; nota < NRO_NOTAS; nota++){
cout <<"Digite nota ["<<nota<<"] :";
cin>>valor;
dados[estudante][nota]=valor;
}
}
cout<<endl<<"Médias:"<<endl;
for (estudante=0; estudante < NRO_ESTUDANTES; estudante++){
cout<<endl<<"Estudante número "<<estudante<<endl;
valor = 0;
for (nota=0; nota < NRO_NOTAS; nota++){
valor = valor + dados[estudante][nota];
}
valor = valor / NRO_NOTAS;
cout<<"média = "<<valor;
}
Exercícios

Definir array para armazenar:




idade de alunos (5 turmas de 30 alunos cada)
dados para batalha naval
15 palavras de 40 caracteres
temperatura por hora, para 7 dias
Exercícios
idade de alunos (5 turmas de 30 alunos cada)
int idade[5][30];
dados para batalha naval
char tabuleiro[30][30];
15 palavras de 40 caracteres
char palavras[15][40];
temperatura por hora, para 7 dias
int temperatura[7][24];
Exercícios
Implementação do jogo da velha, utilizando uma
matriz para dados do desenho e outra matriz
para dados de controle
Etapas: (grupos de DUAS pessoas)
1 – elaboração do algoritmo e estrutura de dados
(17/3)
2 – implementação do programa (17/3 e 19/3)
3 – Documentação e entrega (19/3)

Código ASCII
(American Standard Code for Information Interchange)
http://www.asciitable.com
char palavra[100] =
{ 32, 32, 32, 32, 32, 32, 13, 10,
32, 32, 201, 205, 187, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
205, 205, 202, 205, 205, 32, 13, 10};
.........
cout <<letra;
resultado na tela:

Jogo da Velha: Estrutura de dados
a) Matriz para armazenar jogadas
char jogadas [3] [3] = { 0, 0, 0,
0, 0, 0
0, 0, 0};
Legenda: 0 - Vazio
1 - Jogador 1
2 - Jogador 2
b) Matriz para armazenar Layout de tela
char tela[5] [7] =
{ 32, 186, 32, 186, 32, 13, 10,
205, 216, 205, 216, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10,
205, 216, 205, 216, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10};

Jogo da Velha: Estrutura de dados
a) Matriz para armazenar jogadas
char jogadas [3] [3] = { 0, 0, 0,
0, 0, 0
0, 0, 0};
Legenda: 0 - Vazio
1 - Jogador 1
2 - Jogador 2
b) Matriz para armazenar Layout de tela
char tela[5] [7] =
{ 32, 186, 32, 186, 32, 13, 10,
205, 216, 205, 216, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10,
205, 216, 205, 216, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10};
Download

aula_08 - sandrorigo.pro.br