Buscar

Aula 06 Arrays Multidimensionais

Prévia do material em texto

25/09/2014
1
LÓGICA DE PROGRAMAÇÃO
Arrays
Multidimensionais
LÓGICA DE PROGRAMAÇÃO
Prof. Msc. Luan Carlos Nesi
luan_nesi@uniritter.edu.br
25/09/2014
2
LÓGICA DE PROGRAMAÇÃO
Como sortear um número?
Problema complexo em computação
• Geração de números pseudoaleatórios
• Por que pseudo?
• Aleatório de verdade não obedece a nenhum padrão ou função pré-estabelecida
• Como codificar isso num algoritmo?
25/09/2014
3
LÓGICA DE PROGRAMAÇÃO
Como sortear um número?
C/C++
Inicialização por uma semente
Função vai gerando números, iniciando pela semente, no intervalo de 0 e RAND_MAX
� No Visual Studio, o tamanho de RAND_MAX é 32.767 (máximo de positivos inteiros 
em 16 bits)
� Essa função sempre vai gerar a mesma seqüência de números de acordo com a 
semente 
25/09/2014
4
LÓGICA DE PROGRAMAÇÃO
Como sortear um número?
Uma maneira comum de gerar números aleatórios, sem precisar pensar uma semente 
cada vez, é pegando o tempo do sistema
Para produzir inteiros no invervalo de 0 a nnnn, utilizamos o operador módulo (%) com o 
rand()
Para determinar um intervalo de valores, usamos fatores de escalonamento e 
adicionamos o valor x x x x que desejamos ser o início do intervalo 
rand() % n
rand() % n + x
srand( time(0));
25/09/2014
5
LÓGICA DE PROGRAMAÇÃO
Como sortear um número?
Exemplo: jogar um dado (1 a 6)
25/09/2014
6
LÓGICA DE PROGRAMAÇÃO
EXERCÍCIO
Faça um programa que simule um “dado virtual”. O programa pede ao 
usuário para digitar o número de vezes que o dado será jogado e deve 
imprimir, para cada vez, a mensagem “O valor sorteado foi” seguido do 
número sorteado.
6
25/09/2014
7
LÓGICA DE PROGRAMAÇÃO
Uso de flags
São valores que determinamos para indicar o “final da final da final da final da entrada de dadosentrada de dadosentrada de dadosentrada de dados”
Por exemplo, um programa que deve ler notas de alunos até que o usuário digite um 
valor especial (indicado no programa, -1) que indique que acabou
25/09/2014
8
LÓGICA DE PROGRAMAÇÃO
Uso de flags
• Flags podem indicar também estados de um programa, 
para serem comparados e disparar eventos
• Podem ser de qualquer tipo de dados, sendo os mais 
comuns
• int
• bool
• char
25/09/2014
9
LÓGICA DE PROGRAMAÇÃO
EXERCÍCIO
• Urna eletrônica
• Menu de opções
� (V)otar(candidatos 1, 2, 3; 0 é branco; -1 é nulo)
� (T)erminaro programa
• Se for escolhida a opção votar, obter o voto usuário (até ele digitar uma opção 
válida). Se ele digitar uma opção inválida, imprimir aviso na tela e solicitar novo 
número. Se ele digitar uma opção válida, agradecer e mostrar novamente o 
menu de opções
• Se for escolhida a opção terminar o programa
� Exibir a contagem dos votos para cada candidato
� Determinar o vencedor
� Sair do programa
• Se o usuário digitou uma opção inválida (diferente de V ou T), então dar um 
aviso e solicitar novamente uma opção, até ser válida
25/09/2014
10
LÓGICA DE PROGRAMAÇÃO
Arrays...
Como vimos até agora
1 dimensão (vetor) = “1 1 1 1 linha x n n n n colunas”
Armazena n n n n elementos de um determinado tipo de dados
É indexado SEMPRE começando por 0, indo até n-1
Exemplo
25/09/2014
11
LÓGICA DE PROGRAMAÇÃO
Arraymultidimensional
ArrayArrayArrayArray bidimensional bidimensional bidimensional bidimensional (matriz)(matriz)(matriz)(matriz)
Duas dimensões: n n n n linhas e m m m m colunas
Exemplo:Exemplo:Exemplo:Exemplo:
25/09/2014
12
LÓGICA DE PROGRAMAÇÃO
Arraymultidimensional
ArrayArrayArrayArray tridimensionaltridimensionaltridimensionaltridimensional
Ainda podemos pensar em termos de largura, altura e profundidade
25/09/2014
13
LÓGICA DE PROGRAMAÇÃO
Arraymultidimensional
Array n-dimensional...
<tipo> <nome> [<dim1>] [<dim2>] [<dim3>] ... [ <dimN>];
Com n n n n a partir de 4, fica difícil visualizar (no espaço), mas funciona como os de menor 
dimensão
� Exemplo
Quantos elementos?
� int threeD[3][3][3]?
� char fourD[2][3][4][5]?
25/09/2014
14
LÓGICA DE PROGRAMAÇÃO
Inicialização
ArrayArrayArrayArray bidimensional bidimensional bidimensional bidimensional (matriz)(matriz)(matriz)(matriz)
Forma geral
<tipo> <nome> [<linha>] [<coluna>] = { {<valores>}, ..., { <valores>} };
Exemplo
25/09/2014
15
LÓGICA DE PROGRAMAÇÃO
Percorrendo...
Array bidimensional
25/09/2014
16
LÓGICA DE PROGRAMAÇÃO
Percorrendo...
Array tridimensional
25/09/2014
17
LÓGICA DE PROGRAMAÇÃO
Percorrendo...
Exemplo
Um array bidimensional que armazena 3 notas de 5 alunos
#define NRO_ESTUDANTES 5
#define NRO_NOTAS 3
...
int dados[NRO_ESTUDANTES][NRO_NOTAS];
for(int estudante=0;estudante<NRO_ESTUDANTES;estudante++)
{
std::cout<<"Estudante "<<estudante <<"\n";
for(int nota=0;nota<NRO_NOTAS;nota++)
{
std::cout<<"Digite a nota ["<<nota <<"]:";
std::cin>>dados[estudante][nota];
}
std::cout<<std::endl
}
ANOTAR
ao enviar e-mail, sempre 
coloque o seguinte 
prefixo no assunto
Prof. Msc.Prof. Msc.Prof. Msc.Prof. Msc.
Luan Carlos NesiLuan Carlos NesiLuan Carlos NesiLuan Carlos Nesi
[lp[lp[lp[lp----anoanoanoano----semestre] semestre] semestre] semestre] –––– nome do alunonome do alunonome do alunonome do aluno

Continue navegando