![]() |
|||||
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Como somar o primeiro e o último dígito de um número inteiro informado pelo usuário em JavaQuantidade de visualizações: 912 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um número inteiro e mostre a soma do primeiro dígito com o último dígito. Atenção: você deve usar apenas os operadores matemáticos e a função log10(). Sua saída deverá ser parecida com: Informe um número inteiro: 48763 A soma do primeiro e do último dígito é: 7 Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ // vamos usar a classe Scanner para a leitura dos dados Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um número inteiro System.out.print("Informe um número inteiro: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos obter a quantidade (-1) de dígitos no número informado int quant = (int)Math.log10(numero); int primeiro_digito = (int)(numero / Math.pow(10, quant)); int ultimo_digito = numero % 10; // soma o primeiro e o último dígito int soma = primeiro_digito + ultimo_digito; // mostra o resultado System.out.println("A soma do primeiro e do último dígito é: " + soma); } } |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como usar objetos da classe TColumn para representar as colunas individuais de um controle TDBGrid do DelphiQuantidade de visualizações: 10017 vezes |
Objetos da classe TColumn representam as colunas individuais em um data grid (TDBGrid). Cada controle DBGrid usa um objeto da classe TDBGridColumns para manter uma coleção de objetos TColumn, e, cada objeto TColumn representa as características visuais e ligação de dados de uma determinada coluna na grid. Um objeto TDBGridColumns é representado no controle TDBGrid pela propriedade Columns. Veja a posição da classe TColumn na hierarquia de classes do Delphi: System.TObject Classes.TPersistent Classes.TCollectionItem DBGrids.TColumn Veja um trecho de código no qual obtemos um objeto da classe TColumn representando a primeira coluna de um DBGrid e em seguida exibimos seu título: procedure TForm3.Button3Click(Sender: TObject); var coluna: TColumn; begin // vamos obter a primeira coluna do DBGrid coluna := DBGrid1.Columns[0]; // vamos mostrar o título da coluna obtida ShowMessage('O título da coluna é: ' + coluna.Title.Caption); end; Ao executar este código teremos uma mensagem parecida com: "O título da coluna é: Autor". Esta dica foi escrita e testada no Delphi 2009. |
React.js ::: Dicas & Truques ::: Passos Iniciais |
Aprenda a desenvolver aplicações React diretamente no HTML, sem usar a ferramenta create-react-appQuantidade de visualizações: 1502 vezes |
Embora seja recomendável usar a ferramenta create-react-app para criar suas aplicações React, às vezes gostaríamos de testar algumas idéias diretamente no código HTML, ou seja, sem precisar passar pelo processo "npx create-react-app" -> "npm start" -> "npm run build". Tudo que temos que fazer é incluir três scripts, a saber, react.production.min.js, react-dom.production.min.js e babel.min.js. Estes scripts estão disponíveis para inclusão via CDN (o mais recomendado) ou você pode baixá-los para uso local, o que, com certeza, vai deixar o processo de desenvolvimento ainda mais rápido. Para obter os CDS ou fazer o download individual dos mesmos, basta pesquisá-los no Google por seus nomes. Nesta dica eu optei por baixar os scripts e rodá-los a partir da minha máquina de desenvolvimento. Os dois primeiros scripts nos permitem escrever código React em nossos códigos JavaScript, e o terceiro, babel.min.js, nos permite usar a síntáxe JSX (JavaScript XML) e também dar suporte ao JavaScript ES6 para os navegadores mais antigos. Então, vamos escrever código? Veja a listagem a seguir: <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Estudos React</title> <script src="js/react.production.min.js"></script> <script src="js/react-dom.production.min.js"></script> <script src="js/babel.min.js"></script> </head> <body> <h1>Primeira aplicação React direto no HTML</h1> <div id="minha_app"></div> <script type="text/babel"> // vmaos criar um novo compomente React class Mensagem extends React.Component{ render() { return <h1>Olá, bem-vindo(a) ao React!</h1> } }; // vamos exibir o componente Mensagem na div minha_app ReactDOM.render(<Mensagem />, document.getElementById('minha_app')); </script> </body> </html> Ao abrir esta página no navegador teremos o seguinte resultado: Primeira aplicação React direto no HTML Olá, bem-vindo(a) ao React! Pronto! Agora você pode testar idéias no React de forma bem rápida e fácil. Mas, lembre-se, em aplicações mais complexas, o uso da ferramenta create-react-app continua sendo o mais recomendado. |
JavaScript ::: JavaScript para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a norma ou módulo de vetores nos espaços R2 e R3 usando JavaScript - Geometria Analítica e Álgebra Linear usando JavaScriptQuantidade de visualizações: 2528 vezes |
Em Geometria Analítica e Álgebra Linear, a magnitude, norma, comprimento, tamanho ou módulo (também chamado de intensidade na Física) de um vetor é o seu comprimento, que pode ser calculado por meio da distância de seu ponto final a partir da origem, no nosso caso (0,0). Considere o seguinte vetor no plano, ou seja, no espaço bidimensional, ou R2: \[\vec{v} = \left(7, 6\right)\] Aqui este vetor se inicia na origem (0, 0) e vai até as coordenadas (x = 7) e (y = 6). Veja sua plotagem no plano 2D: ![]() Note que na imagem já temos todas as informações que precisamos, ou seja, o tamanho desse vetor é 9 (arredondado) e ele faz um ângulo de 41º (graus) com o eixo x positivo. Em linguagem mais adequada da trigonometria, podemos dizer que a medida do cateto oposto é 6, a medida do cateto adjacente é 7 e a medida da hipotenusa (que já calculei para você) é 9. Note que já mostrei também o ângulo theta (__$\theta__$) entre a hipotenusa e o cateto adjacente, o que nos dá a inclinação da reta representada pelos pontos (0, 0) e (7, 6). Relembrando nossas aulas de trigonometria nos tempos do colegial, temos que o quadrado da hipotenusa é a soma dos quadrados dos catetos, ou seja, o Teorema de Pitágoras: \[a^2 = b^2 + c^2\] Como sabemos que a potenciação é o inverso da radiciação, podemos escrever essa fórmula da seguinte maneira: \[a = \sqrt{b^2 + c^2}\] Passando para os valores x e y que já temos: \[a = \sqrt{7^2 + 6^2}\] Podemos comprovar que o resultado é 9,21 (que arredondei para 9). Não se esqueça da notação de módulo ao apresentar o resultado final: \[\left|\vec{v}\right| = \sqrt{7^2 + 6^2}\] E aqui está o código JavaScript que nos permite informar os valores x e y do vetor e obter o seu comprimento, tamanho ou módulo: <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos declarar os valores x e y var x = 7; var y = 6; // vamos calcular a norma do vetor var norma = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); // mostra o resultado document.writeln("A norma do vetor é: " + norma); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: A norma do vetor é: 9.219544457292887 Novamente note que arredondei o comprimento do vetor para melhor visualização no gráfico. Para calcular a norma de um vetor no espaço, ou seja, no R3, basta acrescentar o componente z no cálculo. |
Delphi ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Delphi para iniciantes: Como usar o laço de repetição for do DelphiQuantidade de visualizações: 22444 vezes |
O laço for do Delphi (linguagem Object Pascal) é usado quando queremos que um determinado bloco de instruções seja executado um determinado número de vezes. Na maioria das vezes a execução deste laço é controlada por uma variável de controle, que deve ser declarada antes de seu uso. Veja um laço for que contará de 0 até 10 (incluído): procedure TForm1.Button3Click(Sender: TObject); var i: Integer; // variável de controle begin for i := 0 to 10 do begin ShowMessage(IntToStr(i)); // mostra a mensagem 10 vezes end; end; Veja que o valor da variável de controle i começa em 0 e é incrementado a cada iteração até que seu valor seja igual a 10, o que faz com que a execução do laço seja interrompida. A variável de controle de um laço for deve ser do tipo ordinal (inteiro, caractere, Boolean, enumerações ou sub-faixas) e não pode ser alterada dentro do laço. Veja: procedure TForm1.Button3Click(Sender: TObject); var i: Integer; // variável de controle begin // este laço for pretende exibir os números pares de 0 a 10 for i := 0 to 10 do begin ShowMessage(IntToStr(i)); i := i + 2; // vamos ter problemas aqui end; end; Ao tentarmos compilar este código teremos o seguinte erro: [DCC Error] Unit1.pas(107): E2081 Assignment to FOR-Loop variable 'i' Este erro nos informa que não é possível atribuir valor a uma variável de controle dentro do laço for. Se quisermos que o laço "conte" de trás para frente, podemos substituir a palavra-chave to por downto. Veja: procedure TForm1.Button3Click(Sender: TObject); var i: Integer; // variável de controle begin // este laço for conta de 10 até 0 for i := 10 downto 0 do begin ShowMessage(IntToStr(i)); end; end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Java - Como percorrer todos os elementos de um vetor de inteiros e exibir a soma de seus valoresQuantidade de visualizações: 13227 vezes |
Pergunta/Tarefa: Considere o seguinte vetor de inteiros: // um vetor de inteiros contendo sete elementos int valores[] = {4, 5, 1, 8, 2, 2, 10}; A soma dos valores do vetor é: 32 Resposta/Solução: public static void main(String[] args){ // um vetor de inteiros contendo sete elementos int valores[] = {4, 5, 1, 8, 2, 2, 10}; // o primeiro passo é criar uma variável que vai receber a soma // dos valores dos elementos int soma = 0; // agora vamos usar uma laço for para percorrer todos os elementos // do vetor, obter o valor do elemento atual e adicionar ao valor atual // da variável soma for(int i = 0; i < valores.length; i++){ soma = soma + valores[i]; // poderia também ser escrito assim: // soma += valores[i]; } // vamos exibir a soma dos valores do vetor System.out.println("A soma dos valores do vetor é: " + soma); } |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar classes abstratas em Java - Programação Orientada a Objetos - Java POOQuantidade de visualizações: 21926 vezes |
Classes abstratas (abstract classes) não diferem muito das classes que normalmente criamos, ou seja, elas também podem possuir propriedades e métodos. Porém, não é possível criar instâncias de uma classe abstrata usando o operador new. Veja:abstract class Pessoa{ public String nome; public int idade; } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa(); } } Ao tentarmos compilar este exemplo teremos a seguinte mensagem: Estudos.java:9: Pessoa is abstract; cannot be instantiated Pessoa p = new Pessoa(); ^ 1 error Classes abstratas geralmente contém métodos abstratos (ainda que métodos não abstratos sejam também permitidos). Um método abstrato é um método que possui apenas a assinatura. Não há implementação. Esta implementação deverá ser fornecida pela subclasse ou classe derivada. Uma classe que contém métodos abstratos deverá, obrigatoriamente, ser declarada abstrata. Veja um exemplo de um método abstrato: public abstract class Pessoa{ public abstract String getNome(); } Se a classe não fosse declarada com o modificador abstract, teríamos a seguinte mensagem de erro de compilação: Pessoa.java:1: Pessoa is not abstract and does not override abstract method getNome() in Pessoa public class Pessoa{ ^ 1 error Classes abstratas são um dos tópicos mais complicados da linguagem Java e uma dor de cabeça enorme para aqueles que estão estudando para a certificação Java. Mostramos abaixo algumas dicas resultantes de nossas pesquisas sobre o assunto. 1)Uma classe não abstrata não pode conter métodos abstratos. Se uma classe concreta (não abstrata) herda de uma classe abstrata e não implementa todos os métodos abstratos, a classe derivada deve ser declarada abstract. Além disso, métodos abstratos não podem ser marcados como static. Insistir nisso pode gerar a seguinte mensagem de erro de compilação: Pessoa.java:2: illegal combination of modifiers: abstract and static public static abstract String getNome(); ^ 2) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode conter construtores. Tais construtores serão invocados nos construtores das classes derivadas. 3) Uma subclasse pode ser abstrata até mesmo se sua superclasse for concreta. E isso é fácil de notar, uma vez que todas as classes Java herdam de Object, que é concreta. 4) Uma classe derivada pode sobrescrever um método de sua superclasse e declará-lo abstract. Isso faz sentido quando a classe derivada for abstract e quiser tornar o método herdado inválido. 5) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode ser usada como um tipo de dados. Esta técnica é útil quando parte do time de desenvolvedores precisa adiantar códigos que dependem de classes que ainda não foram implementadas (e, portanto, herdarão das classes abstratas usadas como tipos de dados) por outra parte do mesmo time. |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como detectar alterações no conteúdo de um JTextAreaQuantidade de visualizações: 111 vezes |
Nesta dica veremos como é possível escrever uma aplicação Java Swing que detecta quando o conteúdo de um controle JTextArea é alterado. Para isso nós vamos fazer a janela JFrame implementar a interface DocumentListener e fornecer comportamento para seus método insertUpdate(), removeUpdate() e changedUpdate(). O resultado do código é refletido na imagem abaixo: ![]() E agora o código Java Swing completo para o exemplo: package arquivodecodigos; import javax.swing.*; import java.awt.*; import javax.swing.event.*; public class Estudos extends JFrame implements DocumentListener{ JTextArea textArea; JLabel aviso; public Estudos() { super("Detectando alterações em um JTextArea"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); textArea = new JTextArea(10, 20); textArea.setLineWrap(true); textArea.getDocument().addDocumentListener(this); aviso = new JLabel("Aviso de alterações"); c.add(textArea); c.add(aviso); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void insertUpdate(DocumentEvent e) { aviso.setText("Aviso de Inserção: " + e.toString()); } public void removeUpdate(DocumentEvent e) { aviso.setText("Aviso de Remoção: " + e.toString()); } public void changedUpdate(DocumentEvent e) { // pode obter os dois anteriores aqui // aviso.setText("Aviso de Alteração: " + e.toString()); } } |
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como testar se um diretório existe em C# usando a propriedade Exists da classe DirectoryInfoQuantidade de visualizações: 5 vezes |
Em algumas situações nós precisamos verificar se um diretório existe em C#, talvez para ler ou gravar dados neste arquivo. Isso pode ser feito por meio da propriedade Exists da classe DirectoryInfo. Esta propriedade retorna um valor true se o diretório existir e false em caso contrário. Veja o código completo para o exemplo: using System; using System.IO; namespace Estudos { class Principal { static void Main(string[] args) { // vamos criar uma nova instância da classe DirectoryInfo DirectoryInfo dir = new DirectoryInfo(@"C:\estudos_csharp\imagens"); // vamos testar se o diretório existe if (dir.Exists) { Console.Write("Diretório existe"); } else { Console.Write("Diretório não existe"); } Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: O diretório existe. |
Python ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como usar a função type() da linguagem Python para descobrir o tipo de dados de uma variávelQuantidade de visualizações: 14006 vezes |
Em algumas situações nós gostaríamos de verificar o tipo de uma variável, ou seja, o tipo do valor que ele contém no momento, antes de efetuar algum cálculo ou procedimento. Em Python isso pode ser feito por meio da função type(), que nos retorna uma string indicando o tipo de dados sendo armazenado no momento. Note que, em Python, uma mesma variável pode assumir tipos diferentes durante a execução do programa. Veja o código completo para o exemplo: def main(): var = "Osmar J. Silva" print("O tipo da variavel var é:", type(var)) var = 45 print("Agora o tipo da variavel var é:", type(var)) var = 45.30 print("E agora o tipo da variavel var é:", type(var)) if __name__== "__main__": main() Ao executarmos este código nós teremos o seguinte resultado: O tipo da variavel var é: <class 'str'> Agora o tipo da variavel var é: <class 'int'> E agora o tipo da variavel var é: <class 'float'> |
Nossas 20 dicas & truques de programação mais populares |
C - Como concatenar apenas parte de uma string à outra string usando a função strncat() da linguagem C AutoCAD Civil 3D .NET C# - Como retornar a quantidade de perfis de um alinhamento do Civil 3D usando a função GetProfileIds() da API C# do AutoCAD Civil 3D Java - Como retornar a hora atual em Java usando um objeto da classe Calendar - Datas e Horas em Java |
Você também poderá gostar das dicas e truques de programação abaixo |
Android Java - Como detectar um clique em um botão do Android usando setOnClickListener() e exibir uma mensagem AlertDialog Java Servlets - Como compartilhar dados entre um Java Servlet e uma página JSP usando a requisição HttpServletRequest |
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 |