![]() |
|||||
|
Java ::: Dicas & Truques ::: Threads |
Java Threads - Como interromper a execução de uma thread em suas aplicações JavaQuantidade de visualizações: 15512 vezes |
A classe Thread fornece um método chamado interrupt() que serve para interrompermos a execução de uma determinada thread. Os métodos sleep() e yield() transferem a thread sendo executada no momento do estado "executando" para o estado "pronta". O método interrupt(), por sua vez, faz com que uma thread vá para o estado "finalizada", ou seja, ela não voltará mais a ser executada. O problema é que, nem sempre, o método interrupt() parece surtir o efeito desejado, ou seja, fazer com que a thread pare de executar imediatamente. Por esta razão, a forma mais fácil de "matar" uma thread é forçar a saída de seu método run(). Veja um exemplo: // criamos uma classe que servirá como thread class MinhaThread extends Thread{ private String nome; public MinhaThread(String nome){ this.nome = nome; } public void run(){ for(int i = 1; i <= 20; i++){ System.out.println(nome + ": " + i); if((i >= 3) && (nome.equals("Thread 1"))){ try{ System.out.println(nome + " foi eliminada"); return; // interrompe a execução do método run() } catch(SecurityException e){ System.out.println(e.getMessage()); } } } } } public class Estudos{ public static void main(String[] args){ // vamos criar duas threads MinhaThread t1 = new MinhaThread("Thread 1"); t1.start(); MinhaThread t2 = new MinhaThread("Thread 2"); t2.start(); } } Ao usar a instrução return nós forçamos a saída do método run() e consequentemente, o fim da tarefa sendo realizada pela thread. |
C++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados int da linguagem C++Quantidade de visualizações: 10794 vezes |
O tipo de dados int da linguagem C++ é usado quando queremos representar números inteiros, ou seja, sem partes fracionárias. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):#include <iostream> using namespace std; int main(int argc, char *argv[]){ // declara uma variável do tipo int int idade = 45; cout << "A idade é: " << idade << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } A capacidade de armazenamento do tipo int depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos INT_MIN e INT_MAX, definidos no header climits (limits.h). Veja: #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Valor mínimo: " << INT_MIN << "\n"; cout << "Valor máximo: " << INT_MAX << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este programa você terá um resultado parecido com: Valor mínimo: -2147483648 Valor máximo: 2147483647 Veja que o tipo inteiro aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow): #include <iostream> using namespace std; int main(int argc, char *argv[]){ int soma = INT_MAX + 2; cout << "Resultado: " << soma << "\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Este programa exibirá o seguinte resultado: Resultado: -2147483647 Note que este não é o resultado esperado, visto que INT_MAX + 2 deveria retornar: 2147483647 + 2 = 2147483649 Porém, como o valor máximo que pode ser armazenado em um int é 2147483647, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui. Em termos de bytes, é comum o tipo int ser armazenado em 4 bytes, o que resulta em 32 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo int: #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Tamanho de um int: " << sizeof(int) << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } O resultado da execução deste código será algo como: Tamanho de um int: 4 bytes |
jQuery ::: Dicas & Truques ::: Atributos ou Propriedades HTML |
Apostila jQuery - Como verificar se um elemento HTML pertence a uma determinada classe usando a função hasClass() do jQueryQuantidade de visualizações: 513 vezes |
Muitas vezes precisamos saber se um elemento HTML pertence a uma determinada classe CSS. Isso pode ser feito com o auxílio do método hasClass() da biblioteca jQuery. Basta passarmos a classe CSS que queremos verificar. Veja como usá-lo no trecho de código abaixo: <script type="text/javascript"> <!-- function pertenceClass(){ // testa se o parágrafo com o id "parag" // pertence à classe "destaque" if($('#parag').hasClass("destaque")) window.alert("Pertence à classe destaque"); else window.alert("NÃO pertence à classe destaque"); } //--> </script> O retorno deste método é um valor boolean (true ou false). |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercício Resolvido de Java - Um programa Java que calcula qual o menor número possível de notas de 100, 50, 10, 5 e 1 em que o valor a ser sacado pode ser decompostoQuantidade de visualizações: 15931 vezes |
Pergunta/Tarefa: Escreva um programa Java que lê um valor inteiro e simule o comportamento de um caixa eletrônico, ou seja, calcule qual o menor número possível de notas de 100, 50, 10, 5 e 1 em que o valor a ser sacado pode ser decomposto. Seu programa deverá exibir uma saída parecida com: Informe o valor do saque (valor inteiro): 139 O valor do saque pode ser expresso em: 1 notas de 100 0 notas de 50 3 notas de 10 1 notas de 5 4 notas de 1 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner): public static void main(String[] args){ // não se esqueça de adicionar um import para a classe Scanner // import java.util.Scanner; // vamos criar um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // variáveis que vão guardar a quantidade de notas de 100, 50, 10, 5 e 1; int cem = 0, cinquenta = 0, dez = 0, cinco = 0, um = 0; int valor; // guarda o valor lido int temp; // variável auxiliar // vamos solicitar o valor a ser sacado System.out.print("Informe o valor do saque (valor inteiro): "); // vamos ler o valor do saque valor = Integer.parseInt(entrada.nextLine()); // inicializa a variável temporária temp = valor; // quantas notas de 100? if(temp >= 100){ cem = valor / 100; temp = valor % 100; } // quantas notas de 50? if(temp >= 50){ cinquenta = temp / 50; temp = temp % 50; } // quantas notas de 10? if(temp >= 10){ dez = temp / 10; temp = temp % 10; } // quantas notas de 5? if(temp >= 5){ cinco = temp / 5; temp = temp % 5; } // quantas notas de 1? if(temp >= 1){ um = temp / 1; } // vamos exibir o resultado System.out.println("O valor do saque pode ser expresso em:"); System.out.printf("%d notas de 100\n", cem); System.out.printf("%d notas de 50\n", cinquenta); System.out.printf("%d notas de 10\n", dez); System.out.printf("%d notas de 5\n", cinco); System.out.printf("%d notas de 1\n", um); } |
C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como criar e inicializar um array de inteiros em C#Quantidade de visualizações: 8607 vezes |
Nesta dica mostrarei como declarar, construir e inicializar um vetor de ints na linguagem C#. Aqui os valores já estão sendo informados na construção do array, mas você poderá pedir para o usuário informar os valores também. Veja o código para o exemplo: using System; namespace Estudos { class Program { static void Main(string[] args) { // cria um array de inteiros int[] valores = new int[5] { 3, 2, 5, 11, 13 }; // exibe o valor do primeiro elemento Console.WriteLine("O valor do primeiro elemento é {0} ", valores[0]); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: O valor do primeiro elemento é 3 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Física - Mecânica - Movimento Retilíneo Uniforme (MRU) |
Exercícios Resolvidos de Física usando Java - Dois automóveis, A e B, movem-se em movimento uniforme e no mesmo sentido. Suas velocidades escalares têm módulos respectivamente iguais a...Quantidade de visualizações: 2540 vezes |
Pergunta/Tarefa: Dois automóveis, A e B, movem-se em movimento uniforme e no mesmo sentido. Suas velocidades escalares têm módulos respectivamente iguais a 15 m/s e 10 m/s. No instante t = 0, os automóveis encontram-se nas posições indicadas abaixo: ![]() Determine: a) o instante em que A alcança B; b) a que distância da posição inicial de A ocorre o encontro. Resposta/Solução: Este é um dos exemplos clássicos que encontramos nos livros de Física Mecânica, nos capítulos dedicados ao Movimento Retilíneo Uniforme (MRU). Em geral, tais exemplos são vistos como parte dos estudos de encontro e ultrapassagem de partículas. Por se tratar de Movimento Retilíneo Uniforme (MRU), as grandezas envolvidas nesse problema são: posição (deslocamento), velocidade e tempo. Assim, já sabemos de antemão que o veículo B está 100 metros à frente do veículo A. Podemos então começar calculando a posição atual na qual cada um dos veículos se encontra. Isso é feito por meio da Função Horária da Posição ou Deslocamento em Movimento Retilíneo Uniforme - MRU. Veja o código Java que nos retorna a posição inicial (em metros) dos dois veículos: package arquivodecodigos; public class Estudos{ public static void main(String args[]){ // valocidade do veículo A double vA = 15; // em metros por segundo // valocidade do veículo B double vB = 10; // em metros por segundo // posição inicial dos dois veículos double sInicialA = 0; double sInicialB = 100; // tempo inicial em segundos double tempo_inicial = 0; // calcula a posição atual dos dois veículos double sA = sInicialA + (vA * tempo_inicial); double sB = sInicialB + (vB * tempo_inicial); // mostra os resultados System.out.println("A posição do veículo A é: " + sA + " metros"); System.out.println("A posição do veículo B é: " + sB + " metros"); } } Ao executar esta primeira parte do código Java nós teremos o seguinte resultado: A posição do veículo A é: 0.0 metros A posição do veículo B é: 100.0 metros Agora que já temos o código que calcula a posição de cada veículo, já podemos calcular o tempo no qual o veículo A alcança o veículo B. Para isso vamos pensar direito. Se o veículo A vai alcançar o veículo B, então já sabemos que a velocidade do veículo A é maior que a velocidade do veículo B. Sabemos também que a posição do veículo B é maior que a posição do veículo A. Só temos que aplicar a fórmula do tempo, que é a variação da posição dividida pela variação da velocidade. Veja o código Java que efetua este cálculo: package arquivodecodigos; public class Estudos{ public static void main(String args[]){ // valocidade do veículo A double vA = 15; // em metros por segundo // valocidade do veículo B double vB = 10; // em metros por segundo // posição inicial dos dois veículos double sInicialA = 0; double sInicialB = 100; // tempo inicial em segundos double tempo_inicial = 0; // calcula a posição atual dos dois veículos double sA = sInicialA + (vA * tempo_inicial); double sB = sInicialB + (vB * tempo_inicial); // calculamos o tempo no qual o veículo A alcança o veículo B double tempo = (sB - sA) / (vA - vB); // mostra os resultados System.out.println("A posição do veículo A é: " + sA + " metros"); System.out.println("A posição do veículo B é: " + sB + " metros"); System.out.println("O veículo A alcança o veículo B em " + tempo + " segundos"); } } Ao executar esta modificação do código Java nós teremos o seguinte resultado: A posição do veículo A é: 0.0 metros A posição do veículo B é: 100.0 metros O veículo A alcança o veículo B em 20.0 segundos O item b pede para indicarmos a que distância da posição inicial de A ocorre o encontro entre os dois veículos. Agora que já sabemos o tempo do encontro, fica muito fácil. Basta multiplicarmos a velocidade do veículo A pelo tempo do encontro. Veja: package arquivodecodigos; public class Estudos{ public static void main(String args[]){ // valocidade do veículo A double vA = 15; // em metros por segundo // valocidade do veículo B double vB = 10; // em metros por segundo // posição inicial dos dois veículos double sInicialA = 0; double sInicialB = 100; // tempo inicial em segundos double tempo_inicial = 0; // calcula a posição atual dos dois veículos double sA = sInicialA + (vA * tempo_inicial); double sB = sInicialB + (vB * tempo_inicial); // calculamos o tempo no qual o veículo A alcança o veículo B double tempo = (sB - sA) / (vA - vB); // a que distância da posição inicial de A ocorre o encontro double distancia_encontro = vA * tempo; // mostra os resultados System.out.println("A posição do veículo A é: " + sA + " metros"); System.out.println("A posição do veículo B é: " + sB + " metros"); System.out.println("O veículo A alcança o veículo B em " + tempo + " segundos"); System.out.println("O encontro ocorreu a " + distancia_encontro + " metros da distância inicial do veículo A"); } } Agora o código Java completo nos mostra o seguinte resultado: A posição do veículo A é: 0.0 metros A posição do veículo B é: 100.0 metros O veículo A alcança o veículo B em 20.0 segundos O encontro ocorreu a 300.0 metros da distância inicial do veículo A Para demonstrar a importância de se saber calcular a Função Horária da Posição ou Deslocamento em Movimento Retilíneo Uniforme (MRU), experimente indicar que o veículo A saiu da posição 20 metros, e defina a posição inicial do veículo B para 120 metros, de modo que ainda conservem a distância de 100 metros entre eles. Você verá que o tempo do encontro e a distância do encontro em relação à posição inicial do veículo A continuam os mesmos. Agora experimente mais alterações nas posições iniciais, na distância e também nas velocidades dos dois veículos para entender melhor os conceitos que envolvem o Movimento Retilíneo Uniforme (MRU). |
C ::: Dicas & Truques ::: Recursão (Recursividade) |
Como somar os elementos de um vetor em C usando uma função recursiva - Linguagem C para iniciantesQuantidade de visualizações: 5481 vezes |
Em algumas ocasiões ficamos imaginando o que pode ser feito com os métodos e funções recursivas. A resposta é: praticamente tudo. Veja abaixo um programa C completo no qual eu mostro como escrever uma função recursiva que recebe um array e mostra a soma de seus elementos (lembre-se de que um array é o mesmo que vetor, ou seja, uma matriz de uma linha e várias colunas): #include <stdio.h> #include <stdlib.h> // função recursiva para somar todos os elementos de um array int somar(int indice, int tamanho, int vetor[]){ // o caso base...hora de encerrar a recursividade if(indice == (tamanho - 1)){ return vetor[indice]; } else{ // ainda não é o caso base? vamos fazer uma nova chamada à função somar() return vetor[indice] + somar(indice + 1, 10, vetor); } } // função principal do programa int main(int argc, char *argv[]){ // vamos declarar um array de 10 elementos int valores[10]; int i, soma; // vamos pedir ao usuário para informar os valores para o vetor for(i = 0; i < 10; i++){ printf("Informe o valor do elemento %d: ", i); scanf("%d", &valores[i]); } // vamos efetuar uma chamada à função recursiva somar(); // nota que estamos passando o índice inicial, o tamanho do // array e o array em si soma = somar(0, 10, valores); printf("\nA soma dos elementos è: %d", soma); printf("\n\n"); system("PAUSE"); return 0; } Ao executarmos este código C nós teremos o seguinte resultado: Informe o valor do elemento 0: 7 Informe o valor do elemento 1: 3 Informe o valor do elemento 2: 1 Informe o valor do elemento 3: 3 Informe o valor do elemento 4: 8 Informe o valor do elemento 5: 9 Informe o valor do elemento 6: 4 Informe o valor do elemento 7: 3 Informe o valor do elemento 8: 2 Informe o valor do elemento 9: 6 A soma dos elementos é: 46 |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o tamanho de uma string em JavaScript usando a propriedade length do objeto StringQuantidade de visualizações: 302 vezes |
Em várias situações nós precisamos obter a quantidade de caracteres, ou seja, o tamanho de uma palavra, frase ou texto em JavaScript. Para isso nós podemos usar a propriedade length do objeto String. A propriedade length do objeto String da linguagem JavaScript nos retorna um valor inteiro representando a quantidade de caracteres na string, incluindo espaços em branco e pontuações. Veja o código JavaScript completo para o exemplo: <!doctype html> <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos declarar uma nova string var frase = "JavaScript é bom demais"; // agora vamos obter o tamanho da string var tam = frase.length; // e mostramos o resultado window.alert("Esta string possui " + tam + " caracteres."); </script> </body> </html> Ao abrir esta página HTML no navegador nós teremos uma mensagem window.alert() com o seguinte conteúdo: Esta string possui 23 caracteres. |
Java ::: Dicas & Truques ::: Data e Hora |
Como retornar a diferença de dias entre duas datas em Java - Datas e horas em JavaQuantidade de visualizações: 10320 vezes |
Algumas vezes precisamos obter a diferença de dias entre duas datas em Java. Esta dica mostra como isso pode ser feito usando dois objetos da classe Date. Veja que usamos o método parse() da classe SimpleDateFormat para construir as duas datas e o método getTime() da classe Date para obter a quantidade de milisegundos desde 1º de janeiro de 1970 GMT armazenada em cada um dos objetos Date. O resto é um cálculo matemático bem simples:package arquivodecodigos; import java.util.*; import java.text.*; public class Estudos{ public static void main(String args[]){ try{ // constrói a primeira data DateFormat fm = new SimpleDateFormat("dd/MM/yyyy"); Date data1 = (Date)fm.parse("20/12/2019"); // constrói a segunda data fm = new SimpleDateFormat("dd/MM/yyyy"); Date data2 = (Date)fm.parse("25/01/2020"); // vamos obter a diferença em dias long diff = data2.getTime() - data1.getTime(); // exibe o resultado System.out.println("Primeira data: " + data1.toString()); System.out.println("Segunda data: " + data2.toString()); System.out.println("Diferença em dias = " + diff / (1000 * 60 * 60 * 24)); } catch(ParseException e){ System.out.println("Erro: " + e.getMessage()); } } } Ao executarmos este código Java nós teremos o seguinte resultado: Primeira data: Fri Dec 20 00:00:00 BRST 2019 Segunda data: Sat Jan 25 00:00:00 BRST 2020 Diferença em dias = 36 |
Java ::: Classes e Componentes ::: JMenuBar, JMenu, JMenuItem e Afins |
Java Swing - Como criar e adicionar uma barra de menus à uma janela JFrameQuantidade de visualizações: 18541 vezes |
Nesta dica eu mostro como adicionar uma barra de menus à uma janela JFrame do Java Swing. Observe que a barra de menus contém apenas um menu que, por sua vez, contém apenas um ítem de menu. Construí este exemplo "na mão" mesmo, ou seja, não usei nenhum editor visual tal como aquele encontrado na IDE Netbeans. Esta abordagem é muito útil para entender todas as partes que forma uma aplicação Java Swing. Veja o código completo para o exemplo: import javax.swing.*; public class Estudos extends JFrame{ public Estudos(){ super("Menus"); // Cria a barra de menus JMenuBar barra = new JMenuBar(); setJMenuBar(barra); // Cria um menu JMenu arquivo = new JMenu("Arquivo"); // Cria um item de menu e o adiciona no menu JMenuItem fechar = new JMenuItem("Fechar"); arquivo.add(fechar); // Adiciona o menu à barra de menus barra.add(arquivo); setSize(300, 150); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Nossas 20 dicas & truques de programação mais populares |
Java - Como usar a classe Character da linguagem Java para tratar caracteres individuais em seus programas |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - Como retornar o dia da semana em JavaScript no formato Domingo, Segunda-feira, Terça-feira, etc Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |