Baixe o app para aproveitar ainda mais
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
Compartilhar