Movendo Média Java Exemplo


Introdução O artigo anterior analisou o que são médias móveis e como calculá-las. Este artigo agora examina como implementá-los no Web Intelligence. A fórmula usada aqui é compatível com a versão XIr3 do SAP BOE no entanto alguma fórmula pode funcionar em versões anteriores, se disponível. Vamos começar por olhar para como calcular uma média móvel simples antes de olhar para formas ponderadas e exponenciais. Exemplos Trabalhados Os exemplos abaixo usam o mesmo conjunto de dados que é de dados de preço de ações em um arquivo do Excel que você pode baixar. A primeira coluna no arquivo é o dia do preço da ação e, em seguida, as colunas do preço de abertura, preço mais alto no dia, preço mais baixo, preço de fechamento, volume e preço de fechamento ajustado. We8217ll usar preço de fechamento em nossa análise abaixo juntamente com o objeto Date. Média Móvel Simples Existem algumas maneiras pelas quais podemos calcular médias móveis simples. Uma opção é usar a função anterior para obter o valor de uma linha anterior. Por exemplo, a seguinte fórmula calcula uma média móvel no nosso preço de fechamento de ações para um conjunto de dados de média móvel de tamanho 3, Esta é uma fórmula bastante simples, no entanto, é óbvio que não é prático quando temos um grande número de períodos aqui podemos fazer Uso de fórmula de corrida e para um conjunto de dados de tamanho N temos Finalmente temos uma terceira técnica, que embora mais complicado ele pode ter melhor desempenho como ele está calculando o novo valor com base no valor anterior em vez de duas somas em execução sobre os dados completos conjunto. No entanto, esta fórmula só funciona após o ponto Nth no conjunto de dados globais e uma vez que se refere a um valor anterior, devemos também definir um valor inicial. Abaixo está a fórmula completa utilizada para a nossa análise de preços de ações, onde a nossa média móvel período é de 15 dias, A data 1252010 é o 15 º ponto de dados em nosso conjunto de dados e, portanto, para este ponto, calcular uma média normal usando o RunningSum. Para todas as datas além desse valor, usamos nossa fórmula SMA e deixamos em branco todas as datas anteriores a essa data. A Figura 1 abaixo é um gráfico na Web Intelligence exibindo nossos dados de preço de ações com uma média móvel simples. Figura 1. Documento da Web Intelligence exibindo uma Média Móvel Moderada Média Móvel Simples Uma fórmula de média móvel ponderada com um período de 3 é, Como com nossa primeira fórmula de média móvel simples acima, isso é apenas prático para um pequeno número de períodos. Eu ainda não fui capaz de encontrar uma fórmula simples que pode ser usado para maiores períodos de média móvel. Matematicamente é possível, mas as limitações com Web Intelligence significa que essas fórmulas don8217t converter. Se alguém é capaz de fazer isso eu adoraria ouvir A figura abaixo é um WMA de período 6 implementado em Web Intelligence. Figura 2. Documento da Web Intelligence de uma Média Móvel Ponderada Média Móvel Exponencial Uma média móvel exponencial é bastante direta para implementar na Web Intelligence e por isso é uma alternativa adequada a uma Média Móvel Ponderada. A fórmula básica é Aqui we8217ve codificado 0,3 como nosso valor para alfa. Aplicamos apenas esta fórmula para períodos maiores do que o nosso segundo período, para que possamos usar uma instrução if para filtrar esses resultados. Para o nosso primeiro e segundo período, podemos usar o valor anterior e, portanto, a nossa fórmula final para EMA é, Abaixo está um exemplo de um EMA aplicado aos nossos dados de estoque. Figura 3. Exibição de documentos da Web Intelligence com controles de entrada de média móvel exponencial Como nossa fórmula de EMA não depende do tamanho do período de média móvel e nossa única variável é alfa, podemos usar controles de entrada para permitir que o usuário ajuste o valor de alfa. Para fazer isso, crie uma nova variável chamada 8216alpha8217 e defina a fórmula como 8282, Atualize nossa fórmula EMA para, Crie um novo controle de entrada selecionando nossa variável alfa como o objeto de relatório de controle de entrada Use um controle deslizante simples e defina as seguintes propriedades, Deve ser capaz de mover o controle deslizante e imediatamente ver as mudanças para a linha de tendência no gráfico Conclusão Nós olhamos como implementar três tipos de média móvel na Web Intelligence e, embora todos eram possíveis a média móvel exponencial é provavelmente o mais fácil e mais flexível . Eu espero que você encontrou este artigo interessante e como sempre todo o feedback é muito bem-vindo. Post navigation Deixe uma resposta Cancelar resposta Você deve ser logado para postar um comentário. O truque para a média móvel ponderada (WMA) é que você tem que criar uma variável que representa os numeradores de WMA (veja Wikipedia para referência.) Isso deve se parecer com o seguinte: Anterior (Self) (n Close) 8211 (Previous (RunningSum ( Close)) 8211 Anterior (RunningSum (Close) n1) onde n é o número de períodos. Em seguida, a fórmula real WMA8217s seria assim: Numerator (n (n 1) 2) onde Numerator é a variável que você criou anteriormente.1.2 Built Tipos de dados Um tipo de dados é um conjunto de valores e um conjunto de operações definidas sobre eles. Por exemplo, estamos familiarizados com os números e com as operações definidas sobre eles, tais como adição e multiplicação. Há oito diferentes built-in tipos De dados em Java, principalmente diferentes tipos de números. Nós usamos o tipo de sistema para strings de caracteres tão freqüentemente que nós também considerá-lo aqui. Consultoria. Nós usamos o seguinte fragmento de código para introduzir alguma terminologia: A primeira linha é uma declaração declaração que Declara os nomes de três Variáveis ​​usando os identificadores a. B) E c e seu tipo para ser int. As próximas três linhas são instruções de atribuição que alteram os valores das variáveis, usando os literais 1234 e 99. E a expressão a b. Com o resultado final que c tem o valor 1333. Caracteres e strings. Um char é um caractere alfanumérico ou símbolo, como os que você digita. Normalmente, não realizamos operações em caracteres diferentes de atribuir valores a variáveis. Um String é uma seqüência de caracteres. A operação mais comum que executamos em strings é conhecida como concatenação. Dado duas cordas, cadeia-los juntos para fazer uma nova corda. Por exemplo, considere o seguinte fragmento de programa Java: A primeira declaração declara três variáveis ​​para serem do tipo String. As próximas três instruções atribuem valores a elas, com o resultado final que c tem o valor Olá, Bob. Usando a concatenação de string, Ruler. java imprime os comprimentos relativos das subdivisões em uma régua. Inteiros. Um int é um inteiro (número inteiro) entre menos2 31 e 2 31 menos 1 (menos 2.147.483.648 para 2.147.483.647). Usamos int s freqüentemente não só porque ocorrem com freqüência no mundo real, mas também surgem naturalmente ao expressar algoritmos. Operadores aritméticos padrão para adição, multiplicação e divisão, para inteiros são construídos em Java, como ilustrado em IntOps. java e na tabela a seguir: Números de ponto flutuante. O tipo duplo é para representar números de ponto flutuante, e. Para aplicações científicas. A representação interna é como a notação científica, de modo que nós podemos computar com números reais em uma escala enorme. Podemos especificar um número de ponto flutuante usando uma seqüência de dígitos com um ponto decimal, p. 3.14159 para uma aproximação de seis dígitos à constante matemática pi, ou com uma notação como notação científica, p. 6.022E23 para Avogadros constante 6.022 vezes 10 23. Operadores aritméticos padrão para adição, multiplicação e divisão, para dobros são construídos em Java, como ilustrado em DoubleOps. java e na tabela a seguir: Quadratic. java mostra o uso de duplas em computação As duas raízes de uma equação quadrática usando a fórmula quadrática. Booleanos O tipo booleano tem apenas dois valores: true ou false. A aparente simplicidade é mentira enganadora, os dhobooleanos estão na base da ciência da computação. Os operadores mais importantes definidos para o booleano são para e. Ou. e não . E. A b é verdadeiro se tanto a como b forem verdadeiras, e false caso contrário. Ou. A b é verdadeiro se a ou b é verdadeiro (ou ambos são verdadeiros), e false caso contrário não. A é verdadeira se a for falsa e falsa caso contrário. Embora essas definições sejam intuitivas e fáceis de entender, vale a pena especificar totalmente cada possibilidade para cada operação em uma tabela de verdade. Comparações. Os operadores de comparação são operações de tipo misto que levam operandos de um tipo (por exemplo, int ou double) e produzem um resultado de tipo booleano. Estas operações desempenham um papel crítico no processo de desenvolvimento de programas mais sofisticados. LeapYear. java testa se um número inteiro corresponde a um ano bissexto no calendário gregoriano. Métodos de biblioteca e APIs. Muitas tarefas de programação envolvem o uso de métodos de biblioteca Java além dos operadores internos. Uma interface de programação de aplicativo é uma tabela resumindo os métodos em uma biblioteca. Imprimir strings para a janela do terminal. Conversão de strings para tipos primitivos. Funções matemáticas. Você pode chamar um método digitando seu nome seguido por argumentos. Entre parênteses e separados por vírgulas. Aqui estão alguns exemplos: Muitas vezes nos encontramos convertendo dados de um tipo para outro usando uma das seguintes abordagens. Conversão de tipo. Muitas vezes nos encontramos convertendo dados de um tipo para outro usando uma das seguintes abordagens. Conversão de tipo explícita. Métodos de chamada como Math. round (). Integer. parseInt (). E Double. parseDouble (). Conversão automática de tipos. Para tipos numéricos primitivos, o sistema executa automaticamente conversão de tipo quando usamos um valor cujo tipo tem um intervalo maior de valores do que o esperado. Moldes explícitos. O Java também possui alguns métodos de conversão de tipos embutidos para tipos primitivos que você pode usar quando estiver ciente de que pode perder informações, mas você precisa fazer sua intenção usando algo chamado um elenco. RandomInt. java lê um argumento inteiro de linha de comando n e imprime um número inteiro aleatório entre 0 e n menos1. Conversões automáticas para strings. O tipo incorporado string obedece regras especiais. Uma dessas regras especiais é que você pode facilmente converter qualquer tipo de dados para um String usando o operador. Suponha que a e b são valores int. O que faz a seqüência de instruções a seguir Solução. Define a. B. E t igual ao valor original de a. Suponha que a e b são valores int. Simplifique a seguinte expressão: ((a b)) Solução. (A b) O exclusivo ou operador para operandos booleanos é definido como verdadeiro se eles forem diferentes, false se forem iguais. Dê uma tabela de verdade para esta função. Por que 103 dão 3 e não 3.33333333. Solução. Como 10 e 3 são literais inteiros, o Java não vê necessidade de conversão de tipo e usa divisão inteira. Você deve escrever 10.03.0 se você quer dizer que os números são literais duplos. Se você escrever 103.0 ou 10.03. Java faz conversão implícita para obter o mesmo resultado. O que cada uma das seguintes impressões System. out. println (2 bc) imprime: 2bc System. out. println (2 3 bc) imprime: 5bc System. out. println ((23) bc) imprime: 5bc System. out. Println (bc (23)) imprime: bc5 System. out. println (bc 2 3) imprime: bc23 Explique cada resultado. Explique como usar Quadratic. java para localizar a raiz quadrada de um número. Solução. Para encontrar a raiz quadrada de c, encontre as raízes de x2 0x - c. Um estudante de física obtém resultados inesperados ao usar o código para calcular valores de acordo com a fórmula F G m 1 m 2 r 2. Explique o problema e corrija o código. Solução. Ele divide por r. Então multiplica por r (em vez de dividir por r r). Use parênteses: Escreva um programa Distance. java que tome dois argumentos de linha de comando inteiros xey, e imprima a distância euclidiana do ponto (x. Y) à origem (0, 0). Escreva um programa SumOfTwoDice. java que imprime a soma de dois números inteiros aleatórios entre 1 e 6 (como você pode obter ao rolar dados). Escreva um programa SpringSeason. java que leva dois valores int me da linha de comando e imprime true se o dia d do mês m estiver entre 20 de março (m 3, d 20) e 20 de junho (m 6, d 20), falso de outra forma. Exercícios criativos Chill vento. Dada a temperatura t (em Fahrenheit) ea velocidade do vento v (em milhas por hora), o Serviço Meteorológico Nacional define a temperatura efetiva (o frio do vento) como sendo: w 35.74 0.6215 t (0.4275 t - 35.75) v 0.16 Escreva a Programa WindChill. java que leva dois argumentos de linha de comando duplos t e v e imprime o frio do vento. Use Math. pow (a, b) para calcular a b. Nota: a fórmula não é válida se t for maior que 50 em valor absoluto ou se v for maior que 120 ou menor que 3 (você pode assumir que os valores obtidos estão nessa faixa). Coordenadas polares. Escreva um programa CartesianToPolar. java que converte de cartesiano para coordenadas polares. Seu programa deve levar dois números reais xey na linha de comando e imprimir as coordenadas polares r e theta. Use o método Java Math. atan2 (y, x). Que calcula o valor arctangente de yx que está na faixa de - pi para pi. Dia da semana. Escrever um programa DayOfWeek. java que leva uma data como entrada e imprime o dia da semana em que a data cai. Seu programa deve ter três argumentos de linha de comando: m (mês), d (dia) e y (ano). Para m use 1 para janeiro, 2 para fevereiro, e assim por diante. Para impressão de saída 0 para domingo, 1 para segunda-feira, 2 para terça-feira, e assim por diante. Utilize as seguintes fórmulas para o calendário gregoriano (onde denota divisão inteira): y 0 y menos (14 menos m) 12 xy 0 y 0 4 menos y 0 100 y 0 400 m 0 m 12 vezes ((14 menos m) 12 ) Menos 2 d 0 (dx 31 m 0 12) mod 7 Por exemplo, em que dia da semana era 2 de agosto de 1953 números aleatórios uniformes. Escreva um programa Stats5.java que imprima cinco valores aleatórios uniformes entre 0 e 1, seu valor médio e seu valor mínimo e máximo. Use Math. random (). Math. min (). E Math. max (). Três-classificar. Escreva um programa ThreeSort. java que leva três valores int da linha de comando e os imprime em ordem crescente. Use Math. min () e Math. max (). Curvas de dragão. Escreva um programa Dragon. java para imprimir as instruções para desenhar as curvas do dragão de ordem 0 a 5. As instruções são strings dos caracteres F. EU . E R. Onde F significa desenhar linha ao mover 1 unidade para a frente, L significa vire à esquerda e R significa virar à direita. Uma curva de dragão de ordem n é formada quando você dobra uma tira de papel em meia n vezes, então desdobrar para ângulos retos. A chave para resolver este problema é observar que uma curva de ordem n é uma curva de ordem n menos1 seguida por uma L seguida por uma curva de ordem n menos1 percorrida em ordem inversa e, em seguida, descobrir uma descrição semelhante do inverso curva. Exercícios da Web Escreva um programa Swap. java que toma dois argumentos de linha de comando inteiros a e b e troca seus valores usando o idioma de troca descrito na p. 17. Após cada instrução de atribuição, utilize System. out. println () para imprimir um rastreio das variáveis. O que a seguinte instrução faz quando grade é uma variável do tipo int. Solução. Erro de sintaxe desde Código fonte T sua página contém links para o código-fonte para exemplos que aparecem no livre, livro on-line Introdução à programação usando Java, sétima edição. A página de índice tem links para baixar o site inteiro. Se você fizer isso, você encontrará os arquivos de código-fonte em um diretório chamado fontes. Há também um link para baixar apenas o código-fonte. O arquivo README do download inclui algumas instruções para compilar e executar os programas. No entanto, observe que alguns desses exemplos dependem de outros arquivos de origem, como TextIO. java. Que não são construídos em Java. Estas são as classes que eu escrevi. Todos os arquivos necessários estão incluídos nos downloads, e links para os arquivos individuais são fornecidos abaixo. As soluções para exercícios de fim de capítulo não estão listadas nesta página. Cada exercício de fim de capítulo tem sua própria página da Web, que discute sua solução. O código fonte de uma solução de amostra de cada exercício é dado na página da solução para esse exercício. Se você quiser compilar a solução, você deve ser capaz de cortar e colar a solução de uma janela do navegador da Web e em um programa de edição de texto. (Você não pode cortar e colar a partir da fonte HTML da página de solução, uma vez que contém comandos de marcação HTML extra que o compilador Java não entender a marcação HTML não aparece quando a página é exibida em um navegador da Web.) Soluções de exercícios são Também disponível como um download na primeira página do site. O arquivo README do download tem mais informações. Muitos dos programas de exemplo no texto são baseados no inputoutput do console-estilo, onde o computador e o usuário datilografam linhas do texto para a frente e para trás um ao outro. Alguns desses programas usam o objeto de saída padrão, System. out. Para saída. Muitos deles usam minha classe não-padrão, TextIO. Para entrada. Para os programas que utilizam TextIO. Um dos arquivos TextIO. java ou TextIO. class deve estar disponível quando você compilar o programa e TextIO. class deve estar disponível quando você executar o programa. Há também uma versão GUI do TextIO você pode encontrar informações sobre ele no final desta página da web. HelloWorld. java. Da Secção 2.1. Um programa trivial que não faz nada, mas imprimir a mensagem, Hello World. Um programa Hello World é tipicamente o primeiro programa para alguém aprender uma nova linguagem de programação. Interest. java. Da secção 2.2. Calcula os juros sobre um montante específico de dinheiro durante um período de um ano. TimedComputation. java. Da Seção 2.3. Demonstra algumas sub-rotinas e funções básicas embutidas. EnumDemo. java. Da Seção 2.3. Uma primeira demonstração muito simples de tipos de enum. PrintSquare. java. Da secção 2.4. Lê um número inteiro digitado pelo usuário e imprime o quadrado desse inteiro. Este programa depende do TextIO. java. O mesmo é verdadeiro para quase todos os programas no resto da lista. Interest2.java. Da secção 2.4. Calcula juros sobre um investimento por um ano, com base na entrada do usuário. Usa TextIO para entrada do usuário. CreateProfile. java. Da secção 2.4. Uma demo simples de saída para um arquivo, usando TextIO. Interest2WithScanner. java. Da secção 2.4. É uma versão do Interest2.java que usa o Scanner em vez de TextIO para ler a entrada do usuário. Interest3.java. Da secção 3.1. O primeiro exemplo que usa instruções de controle. ThreeN1.java. Da secção 3.2. Produz uma sequência 3N1 para um dado valor de sinalização. ComputeAverage. java. Da secção 3.3. Calcula o valor médio de alguns inteiros inseridos pelo usuário. CountDivisors. java. Da Secção 3.4. Conta o número de divisores de um número inteiro inserido pelo usuário. ListLetters. java. Da Secção 3.4. Lista todas as letras distintas em uma string inserida pelo usuário. LengthConverter. java. Da Seção 3.5. Converte medidas de comprimento introduzidas pelo usuário em diferentes unidades de medida. ComputeAverage2.java. Da Secção 3.7. Calcula o valor médio de alguns números reais inseridos pelo usuário. Demonstra o uso de try..catch para Double. parseDouble. AverageNumbersFromFile. java. Da Secção 3.7. Localiza a soma ea média de números lidos de um arquivo. Demonstra o uso de instruções try..catch com TextIO. BirthdayProblem. java. Da Seção 3.8. Demonstra o acesso aleatório a elementos da matriz usando o problema do aniversário (quantas pessoas você tem que escolher aleatoriamente até que duas sejam encontradas cujos aniversários estão no mesmo dia do ano). ReverseInputNumbers. java. Da Seção 3.8. Ilustra o uso de uma matriz parcialmente cheia lendo alguns números do usuário e, em seguida, imprimi-los em ordem inversa. GuessingGame. java. Da secção 4.2. Permite ao usuário jogar jogos de adivinhação onde o computador escolhe um número e o usuário tenta adivinhá-lo. Uma pequena variação deste programa, que relata o número de jogos ganhos pelo usuário, é GuessingGame2.java. RowsOfChars. java. Da secção 4.3. Um programa bastante inútil no qual uma subrotina chama outro. CopyTextFile. java. Da secção 4.3. Demonstra o uso de argumentos de linha de comando usando nomes de arquivo da linha de comando. ThreeN2.java. Da Subsecção 4.4.3. É um programa 3N1 melhorado que usa sub-rotinas e imprime sua saída em colunas puras. RollTwoPairs. java. Da subsecção 5.2.2. Usa PairOfDice. java para simular rolando dois pares de dados até que o mesmo total seja rolado em ambos os pares. HighLow. java. Da secção 5.4. Um simples jogo de cartas. Usa as classes Card. java e Deck. java. Que são dados como exemplos de programação orientada a objetos. Também estão disponíveis as classes relacionadas a cartões Hand. java e, da Subsecção 5.5.1. BlackjackHand. java. ReverseWithDynamicArray. java. Da Secção 7.2. Lê números do usuário, em seguida, imprime-os em ordem inversa. Ele faz isso usando a classe DynamicArrayOfInt. java como um exemplo de usar arrays dinâmicos. ReverseWithArrayList. java. Da Seção 7.3. É funcionalmente idêntico, mas ele usa um ArrayListltIntegergt em vez de um DynamicArrayOfInt. SymmetricMatrix. java. Da Seção 7.5. Implementa uma matriz 2D simétrica de duplo. O programa TestSymmetricMatrix. java testa a classe SymmetricMatrix. LengthConverter2.java. Da secção 8.2. Converte medidas de entrada pelo usuário em polegadas, pés, jardas e milhas. Esta melhoria no LengthConverter. java permite entradas combinando várias medições, como 3 pés 7 polegadas, e detecta entradas ilegais. TryStatementDemo. java. Da secção 8.3. Um pequeno programa de demonstração com uma instrução try..catch que inclui autoclosing de um recurso. LengthConverter3.java. Da secção 8.3. É uma revisão do exemplo anterior que usa exceções para lidar com erros na entrada de usuários. TowersOfHanoi. java. Da Secção 9.1. Imprime os passos em uma solução para o problema de Towers of Hanoi um exemplo de recursão. StringList. java. Da Secção 9.2. Implementa uma lista vinculada de strings. O programa ListDemo. java testa esta classe. PostfixEval. java. Da Secção 9.3. Avalia expressões postfix usando uma pilha. Depende da classe StackOfDouble definida em StackOfDouble. java. SortTreeDemo. java. Da Secção 9.4. Demonstra uma árvore de classificação binária de strings. SimpleParser1.java. SimpleParser2.java. E SimpleParser3.java. Da Secção 9.5. São três programas que analisam e avaliam expressões aritméticas introduzidas pelo usuário. SimpleParser1 manipula expressões totalmente entre parênteses. O SimpleParser2 avalia expressões comuns onde alguns parênteses podem ser omitidos. O SimpleParser3 constrói árvores de expressão para representar expressões de entrada e usa as árvores de expressão para avaliar as expressões. WordListWithTreeSet. java. Da Seção 10.2. Faz uma lista alfabética de palavras de um arquivo. Um TreeSet é usado para eliminar duplicatas e classificar as palavras. WordListWithPriorityQueue. java. Da Seção 10.2. Faz uma lista alfabética de palavras de um arquivo. Esta é uma pequena modificação do exemplo anterior que utiliza um PriorityQueue em vez de um TreeSet. O resultado é uma lista alfabética de palavras em que as duplicatas não são removidas. SimpleInterpreter. java. Da secção 10.4. Demonstra o uso de um HashMap como uma tabela de símbolos em um programa que interpreta comandos simples do usuário. WordCount. java. Da secção 10.4. Conta o número de ocorrências de cada palavra em um arquivo. O programa usa vários recursos do Java Collection Framework. ReverseFile. java. Da Seção 11.2. Mostra como ler e gravar arquivos em um aplicativo de linha de comando simples usa a classe não-padrão TextReader. java. ReverseFileWithScanner. java é uma versão do programa que usa um Scanner em vez de um TextReader. E ReverseFileWithResources. java é uma versão que usa o padrão de recurso em declarações try..catch. DirectoryList. java. Da Secção 11.2. Lista o conteúdo de um diretório especificado pelo usuário demonstra o uso da classe File. CopyFile. java. Da Seção 11.3. É um programa que faz uma cópia de um arquivo, usando nomes de arquivo que são fornecidos como argumentos de linha de comando. CopyFileAsResources. java é uma versão do programa que também demonstra usa o padrão de recurso em uma instrução try..catch. PhoneDirectoryFileDemo. java. Da Seção 11.3. Demonstra o uso de um arquivo para armazenar dados entre execuções de um programa. FetchURL. java. Da Secção 11.4. Lê e exibe o conteúdo de um URL especificado, se o URL se refere a um arquivo de texto. ShowMyNetwork. java. Mencionados na Secção 11.4. É um programa curto que imprime informações sobre cada interface de rede no computador onde é executado, incluindo endereços IP associados a cada interface. DateClient. java e DateServer. java. Da Secção 11.4. São muito simples primeiros exemplos de clientes de rede e programas de servidor. CLChatClient. java e CLChatServer. java. Da Secção 11.4. Demonstram comunicação bidireccional através de uma rede, permitindo que os usuários enviem mensagens para frente e para trás no entanto, nenhum segmento é usado e as mensagens devem estritamente alternativo. ThreadTest1.java. Da secção Secção 12.1. Executa um ou mais segmentos que executam a mesma tarefa, para demonstrar que eles são executados simultaneamente e terminam em uma ordem indeterminada. ThreadTest2.java. Da seção Seção 12.1. Divide uma tarefa (contagem de primos) entre vários threads, para demonstrar o processamento paralelo eo uso da sincronização. DateServerWithThreads. java e DateServerWithThreadPool. java. Da Secção 12.4. São modificações de chapter11DateServer. java (Subsection 11.4.4) que usam threads para manipular a comunicação com os clientes. O primeiro programa cria um novo thread para cada conexão. O segundo usa um pool de segmentos e usa uma fila de bloqueio para enviar conexões do programa principal para o pool. Os servidores enfileirados funcionarão com o programa cliente original, chapter11DateClient. java. CLMandelbrotMaster. java. CLMandelbrotWorker. java. E CLMandelbrotTask. java. Da Secção 12.4. São uma demonstração de computação distribuída em que partes de uma grande computação são enviadas através de uma rede a ser computada por programas de trabalho. Os seguintes programas de exemplo usam uma interface gráfica do usuário. GUIDemo. java é uma demonstração simples de alguns componentes GUI básicos da biblioteca gráfica de interface do usuário do Swing. Ele aparece no texto na Seção 1.6. Mas você não será capaz de entendê-lo até que você aprenda sobre a programação GUI. RandomCircles. java. Da Secção 3.9. Desenha um grande número de discos coloridos aleatoriamente posicionados aleatoriamente. Seu programa de gráficos simples é o nosso primeiro exemplo de um programa GUI. Ele é significado tanto como uma introdução aos gráficos e como um exemplo de usar estruturas de controle. MovingRects. java. Da Secção 3.9. Desenha um conjunto de retângulos aninhados que parecem se mover infinitamente em direção ao centro. Este programa eo anterior são baseados em SimpleAnimationStarter. java. Que pode ser usado como um ponto de partida para escrever programas semelhantes. RandomMosaicWalk. java. Um programa autônomo que exibe uma janela cheia de quadrados coloridos com uma perturbação móvel, da Seção 4.6. Este programa depende de MosaicPanel. java e Mosaic. java. RandomMosaicWalk2.java é uma versão do exemplo anterior, modificada para usar algumas constantes nomeadas. Da Seção 4.7. GrowingCircleAnimation. java. Da secção 5.3. Mostra uma animação de círculos crescentes e semi-transparentes. Requer CircleInfo. java. Usado como um exemplo simples de programação com objeto. ShapeDraw. java. Da Secção 5.5. É um programa que permite ao usuário colocar várias formas em uma área de desenho um exemplo de classes abstratas, subclasses e polimorfismo. HelloWorldGUI1.java e HelloWorldGUI2.java. Da secção 6.1. Mostre a mensagem Hello World em uma janela, a primeira usando a classe incorporada do JOptionPane e a segunda construindo a interface manualmente. SimpleColorChooser. jav. Usado na Seção 6.2 para demonstrar as cores RGB e HSB. Este programa utiliza técnicas que não são cobertas até mais tarde no texto, e não é apresentado como um exemplo de programação. Você pode executá-lo para experimentar com cores. RandomStringsPanel. java. Da secção 6.2. Mostra 25 cópias da seqüência de caracteres Java (ou alguma outra seqüência especificada no construtor) em cores aleatórias e fontes. O programa RandomStrings. java usa um RandomStringsPanel como seu painel de conteúdo. E RandomStringsPanelWithMain. java é um programa que combina a rotina main () ea definição do painel em um arquivo. Finalmente, ClickableRandomStrings. java da Seção 6.3 é uma modificação de RandomStrings. java com um ouvinte de mouse que redesenha o painel quando o usuário clica nele. SimpleStamper. java. Da secção 6.3. Permite que o usuário coloque retângulos e ovais em uma área de desenho clicando com o mouse. SimpleTrackMouse. java. Da secção 6.3. Mostra informações sobre eventos de mouse conforme o usuário se move e clica com o mouse. SimplePaint. java. Da secção 6.3. Permite ao usuário desenhar curvas em uma área de desenho e selecionar a cor de desenho de uma paleta. RandomArt. java. Da secção 6.4. Mostra uma nova arte aleatória a cada quatro segundos. Este é um exemplo de como usar um temporizador. KeyboardAndFocusDemo. java. Da secção 6.4. Mostra como usar o teclado e eventos de foco. SubKiller. java. Da secção 6.4. Permite ao usuário jogar um jogo simples de estilo arcade. Usa um temporizador, bem como eventos de teclado e foco. SliderDemo. java e TextAreaDemo. java. Pequenos programas que demonstram componentes básicos, usados ​​como exemplos na Seção 6.5 BorderDemo. java e BorderDemo. java. Da secção 6.6. Um programa muito simples que demonstra seis tipos de fronteira. SliderAndButtonDemo. java. Da Secção 6.6. Mostra como criar vários componentes e colocá-los em um GridLayout. SimpleCalc. java. Da secção 6.6. Permite que o usuário adicione, subtraia, multiplique ou divida dois números inseridos pelo usuário. Uma demo de campos de texto, botões e layout com subpanels aninhados. NullLayoutDemo. java. Da secção 6.6. Mostra como distribuir os componentes em um contêiner para o qual o gerenciador de layout foi definido como nulo. HighLowGUI. java. Da secção 6.6. Implementa uma versão GUI do jogo de cartas HighLow. java. Em que o usuário vê uma carta de jogar e adivinha se a próxima carta será maior ou menor em valor. Este programa depende de Card. java. Hand. java. E Deck. java. MosaicDraw. java. Da Secção 6.7. Demonstra menus e um diálogo de escolha de cores. Isso é usado em um programa onde o usuário colore os quadrados de um mosaico clicando e arrastando o mouse. Ele usa MosaicPanel. java para definir o painel de mosaico em si, e usa MosaicDrawController. java para criar o painel ea barra de menus e manipular eventos. SimpleDialogDemo. java. Da Secção 6.7. É um pequeno programa que demonstra JColorChooser e alguns diálogos de JOptionPane. RandomStringsWithArray. java. Da Secção 7.2. Mostra várias cópias de uma mensagem em cores aleatórias, tamanhos e posições. Esta é uma versão melhorada do RandomStringsPanel. java que usa uma matriz para manter o controle dos dados, para que a mesma imagem possa ser redesenhada sempre que necessário. SimplePaint2.java. Da Seção 7.3. Permite ao usuário desenhar curvas coloridas e armazena os dados necessários para repintar a superfície de desenho em uma lista do tipo ArrayListltCurveDatagt. Life. java. Da Seção 7.5. Implementa John H. Conways jogo da vida e é um exemplo de usar matrizes 2D. Este programa depende do MosaicPanel. java. Checkers. java. Da Seção 7.5. Permite que dois usuários jogar um jogo de damas uns contra os outros. Ilustra o uso de uma matriz bidimensional e uma variedade de técnicas de programação. (Este é o programa mais longo do livro até agora, em mais de 700 linhas) Maze. java e LittlePentominos. java são programas de demonstração mencionados na Seção 9.1 como exemplos de recursão. Eles usam técnicas que não têm coberto até o Capítulo 12. Note que LittlePentominos depende de MosaicPanel. java. Blobs. java. Da Secção 9.1. Usa recursão para contar grupos de quadrados coloridos em uma grade. DepthBreadth. java. Da Secção 9.3. Demonstra pilhas e filas. TrivialEdit. java. Da Seção 11.3. Permite que o usuário edite arquivos de texto curtos. Este programa demonstra ler e escrever arquivos e usar diálogos de arquivo. SimplePaintWithFiles. java. Da Seção 11.3. Demonstra salvar dados de um programa para um arquivo em ambos binário e forma de caractere. O programa é um programa de esboço simples baseado em SimplePaint2.java. SimplePaintWithXML. java. Da Seção 11.5. Demonstram salvar dados de um programa para um arquivo em formato XML. Este programa é uma modificação de SimplePaintWithFiles. java. XMLDemo. java. Da Seção 11.5. É um programa simples que demonstra a análise básica de um documento XML e a passagem da representação do Modelo de Objecto de Documento do documento. O usuário insere o XML a ser analisado em uma área de texto. RandomArtWithThreads. java. Da Secção 12.2. Usa um thread para conduzir uma animação muito simples. Compare com RandomArt. java. Que faz a mesma coisa com um temporizador. QuicksortThreadDemo. java. Da Secção 12.2. Demonstra usando um segmento separado para executar uma computação, com comunicação entre threads simples. BackgroundComputationDemo. java. Da Secção 12.2. Demonstra usando um segmento executando em uma prioridade menor para executar uma computação longa no plano de fundo. BackgroundCompWithInvoke. java é modificação muito pequena do mesmo programa que usa SwingUtilities. invokeLater em vez de sincronização. (O programa calcula uma visualização de um pequeno pedaço do conjunto de Mandelbrot, mas a computação particular que é feita não é importante.) MultiprocessingDemo1.java. Da Secção 12.2. É uma modificação do exemplo anterior que usa vários segmentos para executar a computação em segundo plano. Isso acelera o cálculo em máquinas com vários processadores. MultiprocessingDemo2.java. Da Secção 12.3. É uma modificação do exemplo anterior que decompõe sua tarefa em um grande número de subtarefas bastante pequenas, a fim de obter um melhor balanceamento de carga. O programa usa um pool de segmentos e uma fila de tarefas. MultiprocessingDemo3.java. Da Secção 12.3. É mais uma versão dos exemplos anteriores. Este usa um pool de threads que são executados para sempre, levando tarefas de uma fila e executando-as. Para tornar isso possível, uma fila de bloqueio é usada, definida pela classe padrão LinkedBlockingQueue. MyLinkedBlockingQueue. java é um exemplo simples de usar wait () e notify () diretamente que pode ser usado como um substituto para LinkedBlockingQueue em MultiprocessingDemo3. TowersOfHanoiGUI. java. Da Secção 12.3. Mostra uma animação do famoso Towers Of Hanoi problema. O usuário pode controlar a animação com os botões RunPause, Next e StartAgain. O programa é um exemplo de usar wait () e notify () diretamente para comunicação entre threads. GUIChat. java. Da Secção 12.4. É um programa simples GUI para conversar entre duas pessoas através de uma rede. Ele demonstra usando um segmento para ler dados de uma conexão de rede. Netgamemon. Da Secção 12.5. É um pacote que define uma estrutura para jogos em rede. Esta estrutura é usada em vários exemplos: Uma sala de bate-papo, definida no pacote netgame. chat um jogo tic-tac-toe, definido no pacote netgame. tictactoe e um jogo de pôquer, definido no pacote netgame. fivecarddraw. HighLowWithImages. java. Da Secção 13.1. É uma variação de HighLowGUI. java que toma imagens de cartão de jogo de um arquivo de imagem. Requer o arquivo de imagem cards. png e depende de Card. java. Deck. java. E Hand. java. PaintWithOffScreenCanvas. java. Da Secção 13.1. É um programa de pintura pouco que ilustra o uso de um BufferedImage como uma tela off-screen. SoundAndCursorDemo. java. Da Secção 13.1. Permite que o usuário toque alguns sons e altere o cursor clicando em alguns botões. Isso demonstra usar arquivos de recurso de áudio e usar um recurso de imagem para criar um cursor personalizado. Requer os arquivos de recurso no diretório sncresources. TransparencyDemo. java. Da Secção 13.2. Demonstra usando o componente alfa de cores. Também é um exemplo de uso do FontMetrics. StrokeDemo. java. Da Secção 13.2. demonstrates the use of various BasicStrokes for drawing lines and rectangles. Also demonstrates antialiasing. PaintDemo. java. from Section 13.2. demonstrates using a GradientPaint and using a TexturePaint to fill a polygon. Uses the image resource files TinySmiley. png and QueenOfHearts. png . ChoiceDemo. java. discussed in Section 13.3. demonstrates radio buttons, combo boxes, and Actions. ToolBarDemo. java. from Section 13.3. uses a JToolBar that holds a group of 3 radio buttons and a push button. All the buttons use custom icons, and the push button is created from an Action . SillyStamper. java. from Section 13.4. demonstrates using a JList of Icons. The user can stamp images of a selected icon onto a drawing area. This program uses the icon images in the directory stampericons as resources. StatesAndCapitalsTableDemo. java. from Section 13.4. is a completely trivial demo of a JTable . ScatterPlotTableDemo. java. from Section 13.4. uses a TableModel to customize a JTable. The table is a list of xy-points that the user can edit. A scatter plot of the points is displayed. SimpleWebBrowser. java and SimpleWebBrowserWithThread. java. from Section 13.4. implement a simple web browser using JEditorPane (which is ridiculously easy). The difference between the programs is that the first loads documents synchronously, which can hang the program in an unpleasant way, while the second uses a thread to load documents asynchronously. SimpleRTFEdit. java. mentioned but just barely discussed in Section 13.4. lets the user edit RTF files, which are text files in a format that include style information such as bold and italics. This is mainly a simple demo of using Actions defined by editor kits. StopWatchLabel. java and MirrorText. java. from Section 13.4. are classes that implement custom components. CustomComponentTest. java is a program that tests them. The Mandelbrot program from Section 13.5. which computes and displays visualizations of the Mandelbrot set, is defined by several classes in the package edu. hws. eck. mdb. The source code files can be found in the directory eduhwseckmdb . This section lists some of the extra source files that are required by various examples in the previous sections. The files listed here are those which are general enough to be potentially useful in other programming projects. Links to these files are also given above, along with the programs that use them. TextIO. java defines a class containing some static methods for doing inputoutput. These methods make it easier to use the standard input and output streams, System. in and System. out. TextIO also supports other input sources and output destinations, such as files. The TextIO class defined by this file is only useful in a command-line environment, and it might be inconvenient to use in integrated development environments such as Eclipse in which standard input does not work particularly well. In that case, you might want to use the following file instead. textioguiTextIO. java. a GUI version of TextIO that opens a window where TextIO IO operations are performed. This is part of a package named textiogui to distinguish it from the normal TextIO. A companion class in that package, textioguiSystem. java. is a fake System class that makes it possible to use System. out and other features of System in the same window. I use these classes to build executable jar files for my text-oriented examples that run in a window instead of on the command line. See the comments in the source code files for more information. SimpleAnimationStarter. java is a small class that you can edit to make very simple animations, in which every frame is drawn using basic drawing commands. This was used in Chapter 3 . Mosaic. java contains subroutines for opening and controlling a window that contains a grid of colored rectangles. It depends on MosaicPanel. java. This is a toolbox for writing simple stand-alone applications that use a mosaic window. It is used in several examples and exercises in Chapter 4 and Chapter 6 . chapter4MosaicPanel. java defines a subclass of JPanel that shows little rectangles arranged in rows and columns, with many options. StatCalc. java is a simple class that computes some statistics of a set of numbers. It is used only for a couple exercises in Chapter 5 and Chapter 6 . Expr. java defines a class Expr that represent mathematical expressions involving the variable x. It is used only in a couple of the exercises in Chapter 8 . TextReader. java. from Subsection 11.1.4. for reading character data from input streams. Input methods in an object of type TextReader are similar to the static input methods in TextIO . netgamemon is a package that defines a framework for networked games, which is discussed in detail in Section 12.5. The netgame packages also includes several examples. PokerRank. java can be used to assign ranks to hands of cards in poker games. The cards are defined in the class PokerCard. java. There is also a PokerDeck. java All of these classes are part of the package netgame. fivecarddraw. which is discussed in Subsection 12.5.4. but these classes can be used independently of the netgame framework.

Comments