![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
Android Java ::: android.widget ::: Button |
Como detectar um clique em um botão do Android usando o evento onClick no XML de layoutQuantidade de visualizações: 2310 vezes |
Nesta dica mostrarei como podemos detectar um clique em um botão usando o evento onClick diretamente no arquivo XML de layout. No entanto, para usar este artifício, algumas regras devem ser seguidas: a) O método chamado pelo clique do botão deverá ser public e retornar void; b) O único parâmetro do método deverá conter apenas um objeto da classe View, representando a view na qual o evento onclick ocorreu. Veja um exemplo completo no qual detectamos o clique no botão e exibimos uma mensagem AlertDialog contendo apenas um botão OK. Comece analisando o XML de layout (o nome do botão foi definido no arquivo strings.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> tools:context=".MainActivity"> <Button xmlns:android=" http://schemas.android.com/apk/res/android" android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_enviar" android:onClick="enviarMensagem" /> </LinearLayout> Veja agora o código Java no MainActivity.java: package com.example.estudosandroid; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.app.AlertDialog; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // método público que será chamado ao clicarmos no botão public void enviarMensagem(View view) { AlertDialog dialogo = new AlertDialog.Builder(MainActivity.this).create(); dialogo.setTitle("Aviso"); dialogo.setMessage("Esta é uma mensagem de aviso"); dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which){ dialog.dismiss(); // fecha o AlertDialog } } ); dialogo.show(); } } |
C# ::: Desafios e Lista de Exercícios Resolvidos ::: Matemática e Estatística |
Exercícios Resolvidos de C# - Como calcular juros simples em C# - Um programa C# que lê o valor principal, o tempoQuantidade de visualizações: 724 vezes |
Pergunta/Tarefa: Saber como escrever um programa C# que recebe o valor principal, o tempo e a taxa de juros e retorna os juros simples a serem pagos ou recebidos é uma habilidade que todo programador deve aprender em algum ponto de sua carreira. Sendo assim, escreva um algoritmo em C# que pede para o usuário informar um valor a ser pago ou recebido, o tempo em dias, meses ou anos e a taxa de juros (sem dividi-la por 100) e retorne os juros simples a serem pagos ou recebidos. Note que, se você quiser mostrar o valor total a ser pago ou recebido, basta somar os juros ao valor principal. Antes, porém, veja a fórmula do cálculo de juros simples: \[\text{Juros} = \frac{\text{C} \times \text{i} \times \text{t}}{100}\] Onde: C é o valor a ser pago ou a ser recebido; i é a taxa de juros (sem dividir por 100); t é o tempo em dias, meses, anos, etc. Sua saída deverá ser parecida com: Informe o valor principal: 600 Taxa de juros: 12 Informe o tempo: 5 Juros a serem pagos ou recebidos: 360.0 Veja a resolução comentada deste exercício usando C#: using System; namespace Estudos { class Principal { // função principal do programa C# static void Main(string[] args) { // vamos ler o valor principal Console.Write("Informe o valor principal: "); double principal = Double.Parse(Console.ReadLine()); // agora vamos ler a taxa de juros Console.Write("Taxa de juros: "); double taxa = Double.Parse(Console.ReadLine()); // finalmente o tempo em dias, meses, anos, etc Console.Write("Informe o tempo: "); int tempo = Int32.Parse(Console.ReadLine()); // vamos calcular os juros double juros = (principal * taxa * tempo) / 100; // e mostramos o resultado Console.WriteLine("Juros a serem pagos ou recebidos: " + juros); Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de Java - Como converter de decimal para binário usando os operadores de bits em JavaQuantidade de visualizações: 999 vezes |
Este exercício faz parte da nossa lista de desafios de programação em Java. Pergunta/Tarefa: Escreva um programa Java para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em Java, comentada linha a linha: package estudos; import java.util.Scanner; public class Estudos { // vamos definir o tamanho do vetor para guardar // os dígitos do número binário final static int TAM_INT = Integer.BYTES * 8; public static void main(String[] args){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // variáveis para ajudar a resolver o problema int decimal, indice, i; // vetor para guardar o número binário int binario[] = new int[TAM_INT]; // vamos pedir para o usuário informar um decimal inteiro System.out.print("Informe um número decimal: "); decimal = Integer.parseInt(entrada.nextLine()); // ajustamos índice para o último elemento do vetor indice = TAM_INT - 1; // enquanto índice for maior ou igual a 0 while(indice >= 0){ // vamos guardar o bit menos significativo LSB binario[indice] = decimal & 1; // diminuímos o índice 100010 indice--; // desloca bits para a direita uma posição decimal = decimal >> 1; } // agora vamos exibir o número binário System.out.print("O número binário é: "); for(i = 0; i < TAM_INT; i++){ System.out.print(binario[i]); } System.out.println("\n\n"); } } |
C# ::: Windows Forms ::: TextBox |
C# Windows Forms Avançado - Como rolar as linhas de um TextBox para cima uma de cada vez usando a API do WindowsQuantidade de visualizações: 7634 vezes |
Em algumas situações gostaríamos de rolar para cima o conteúdo de um TextBox de múltiplas linhas uma linha de cada vez. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_LINEUP para seu parâmetro wParam. O valor do parâmetro lParam é zero. Veja um trecho de código que rola para cima o conteúdo de um TextBox uma linha de cada vez. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem. Comece adicionando a linha: using System.Runtime.InteropServices; na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método: [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); Finalmente coloque o código abaixo no evento Click de um botão: private void button2_Click(object sender, EventArgs e){ // antes de executar este exemplo certifique-se de que // a propriedade Multiline do TextBox esteja definida // como true e a propriedade ScrollBars contenha o valor // Vertical ou Both textBox1.Multiline = true; textBox1.ScrollBars = ScrollBars.Vertical; // constante para a mensagem WM_VSCROLL const uint WM_VSCROLL = 0x115; // constante para o parâmetro wParam const int SB_LINEUP = 0; // handle para a caixa de texto IntPtr handle = textBox1.Handle; IntPtr wParam = (IntPtr)SB_LINEUP; IntPtr lParam = IntPtr.Zero; // vamos fazer com que o TextBox role uma linha para cima SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam); } |
Flutter ::: Material Library - Biblioteca Material ::: TextField |
Como clicar em um botão, obter o texto digitado em um TextField do Flutter e exibí-lo em uma AlertDialogQuantidade de visualizações: 2809 vezes |
Nesta dica mostrarei como clicar em um botão, obter o texto que o usuário digitou em um TextField e exibí-lo em uma caixa de mensagem AlertDialog. Para isso vamos tirar proveito da classe TextEditingController, que nos fornece um controller que pode ser associado a uma caixa de texto. Quando o usuário clicar no botão, nós chamamos o método setState() para atualizar uma variável com o texto do controller e em seguida exibimos uma mensagem AlertDialog com o texto digitado. Veja o exemplo completo: import 'package:flutter/material.dart'; // método principal do Dart, que inicia a aplicação void main() { runApp(MeuApp()); } class MeuApp extends StatelessWidget { // Este widget é a raiz da aplicação Flutter @override Widget build(BuildContext context) { return MaterialApp( title: 'Controle TextField', theme: ThemeData( primarySwatch: Colors.blue, ), home: TelaInicial(), ); } } // Vamos construir a view e retornar para a raiz da aplicação class TelaInicial extends StatefulWidget { TelaInicial({Key key}) : super(key: key); @override _TelaInicialState createState() => _TelaInicialState(); } class _TelaInicialState extends State<TelaInicial> { String nomeUsuario; // vai guarda o nome digitado no TextField // controler para o TextField TextEditingController nomeController = TextEditingController(); // método que nos permite obter o conteúdo digitado no TextField void obterTexto() { setState(() { // transferimos para a variável nomeUsuario o conteúdo // do texto do controller do TextField nomeUsuario = nomeController.text; }); // agora vamos mostrar o texto digitado em uma mensagem // AlertDialog showDialog<void>(context: context, barrierDismissible: false, builder: (BuildContext context) { return new AlertDialog( title: new Text("Texto Digitado"), content: new SingleChildScrollView( child: new ListBody( children: [ new Text("O texto digitado foi: $nomeUsuario"), ], ), ), actions: [ new FlatButton( child: new Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } @override Widget build(BuildContext context) { // vamos criar uma caixa de texto chamada nomeTxt final nomeTxt = TextField( controller: nomeController, decoration: InputDecoration( border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0)), hintText: 'Digite seu nome' ), ); final btnNome = ElevatedButton( onPressed: obterTexto, child: Text('Clique Aqui'), ); return Scaffold( appBar: AppBar( title: Text("O Widget TextField"), ), body: Center( child: Container( child: Padding( padding: const EdgeInsets.all(20.0), child: Column( children: <Widget>[ // a caixa de texto TextField vai aqui nomeTxt, // o botão vai aqui btnNome, ], ), ), ), ), ); } } |
Java ::: Coleções (Collections) ::: ArrayList |
Como retornar o índice da última ocorrência de um elemento em uma ArrayList do Java usando a função lastIndexOf()Quantidade de visualizações: 9422 vezes |
Em algumas situações nós gostaríamos de pesquisar um valor em um ArrayList e retornar o índice de sua última aparição, para o caso desse elemento estar contido mais de uma vez na coleção. Para isso nós podemos usar o método lastIndexOf(). Se o elemento pesquisado não estiver na ArrayList, o valor -1 será retornado. Veja o código completo para o exemplo: package estudos; import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); nomes.add("Maria"); // obtém o índice da última ocorrência do // nome "Maria" int indice = nomes.lastIndexOf("Maria"); System.out.println("O último índice do nome pesquisado é: " + indice); System.exit(0); } } Ao executarmos este código Java nós teremos o seguinte resultado: O último índice do nome pesquisado é: 4 |
Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como carregar uma imagem em um JFrame do Java Swing - Manipulação de imagens em JavaQuantidade de visualizações: 19540 vezes |
Nesta dica mostrarei como é possível combinar as classes Toolkit e MediaTracker para carregar uma imagem JPG e exibi-la na superfície da uma janela JFrame do Java Swing. Este exemplo é muito útil, pois abre o horizonte para uma infinidade de aplicações interessantes, deste visualizadores de imagens e fotos até jogos em Java. Veja o código completo para o exemplo: import java.awt.*; import javax.swing.*; public class Estudos extends JFrame{ private Image imagem; public Estudos() { super("Carregando imagens em uma JFrame"); // imagem a ser exibida String minhaImagem = "foto1.jpg"; Toolkit toolkit = Toolkit.getDefaultToolkit(); imagem = toolkit.getImage(minhaImagem); MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(imagem, 0); try{ mediaTracker.waitForID(0); } catch(InterruptedException ie){ System.err.println(ie); System.exit(1); } setSize(imagem.getWidth(null), imagem.getHeight(null)); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics graphics){ graphics.drawImage(imagem, 0, 0, null); } } Ao executar esta aplicação Java Swing nós teremos o seguinte resultado: ![]() |
LISP ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico |
Exercícios Resolvidos de Lisp - Como converter quilômetros em metros, centímetros e milímetros usando LispQuantidade de visualizações: 1007 vezes |
Pergunta/Tarefa: Escreva um programa em Common Lisp para converter quilômetros em metros, centímetros e milímetros. Seu programa deverá pedir para o usuário informar a quantidade de quilômetros e exibir as conversões solicitadas. Como sabemos, um Quilômetro = 1000 Metros, 100.000 Centímetros ou 1.000.000 Milímetros. Seu programa deverá exibir uma saída parecida com: Informe a distância em quilômetros: 2.5 Distância em Quilômetros: 2.5 Distância em Metros: 2500.0 Distância em Centímetros: 250000.0 Distância em Milímetros: 2500000.0 Veja a resolução comentada deste exercício usando Common Lisp: ; Variáveis usadas na resolução do problema (let ((quilometros)(metros)(centimetros)(milimetros)) ; vamos ler a quantidade de quilômetros (princ "Informe a distância em quilômetros: ") ; talvez o seu compilador não precise disso (force-output) ; atribui o valor lido à variável quilometros (setq quilometros (read)) ; vamos calcular a distância em metros (setq metros (* quilometros 1000.0)) ; vamos calcular a distância em centímetros (setq centimetros (* quilometros 100000.0)) ; e agora a distância em milímetros (setq milimetros (* quilometros 1000000.0)) ; E mostramos o resultado (format t "Distância em Quilômetros: ~F" quilometros) (format t "~%Distância em Metros: ~F" metros) (format t "~%Distância em Centímetros: ~F" centimetros) (format t "~%Distância em Milímetros: ~F" milimetros) ) |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de C - Usando um laço for para percorrer os elementos de uma matriz e exibir a soma dos valores positivos e a quantidade de valores negativosQuantidade de visualizações: 11894 vezes |
Exercícios Resolvidos de C - Usando um laço for para percorrer os elementos de uma matriz e exibir a soma dos valores positivos e a quantidade de valores negativos Pergunta/Tarefa: Considere a seguinte matriz de inteiros: // uma matriz de inteiros contendo sete elementos int valores[] = {-3, 9, 12, -34, -2, 20, 10}; Escreva um programa C que usa um laço for para percorrer todos os elementos desta matriz e exibir a soma dos valores positivos e a quantidade de valores negativos. Seu programa deverá exibir uma saída com a mensagem: A soma dos valores positivos é: 51 A quantidade de valores negativos é: 3 Resposta/Solução: Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // uma matriz de inteiros contendo sete elementos int valores[] = {-3, 9, 12, -34, -2, 20, 10}; // o primeiro passo é criar uma variável que vai receber a soma // dos valores positivos int soma_positivos = 0; // agora uma variável para receber a quantidade de valores negativos int quant_negativos = 0; int i; // agora vamos usar uma laço for para percorrer todos os elementos // da matriz for(i = 0; i < 7; i++){ // vamos verificar se o valor do elemento atual é negativo if(valores[i] < 0){ quant_negativos++; } else{ // o valor é positivo soma_positivos = soma_positivos + valores[i]; } } // vamos exibir a soma dos valores positivos printf("A soma dos valores positivos é: %d\n", soma_positivos); // vamos exibir a quantidade de valores negativos printf("A quantidade de valores negativos é: %d\n", quant_negativos); system("PAUSE"); return 0; } |
C# ::: Dicas & Truques ::: Tipos de Dados |
Como usar o tipo bool da linguagem C# - Apostila C# para iniciantesQuantidade de visualizações: 17815 vezes |
O tipo bool do C# é um apelido para o tipo System.Boolean do .NET e pode representar apenas dois valores: True ou False. Este tipo é usado em expressões condicionais e, quando os valores True e False estiverem sendo usados como literais, estes deverão ser escritos como "true" e "false". Veja:bool pode = true; bool vencido = false; Se escrevermos "True" e "False", teremos erros de compilação: The name 'True' does not exist in the current context The name 'False' does not exist in the current context No entanto, se imprimirmos o valor de uma variável do tipo boolean usando Console.WriteLine(), teremos os valores "True" e "False". Experimente: bool pode = true; Console.WriteLine(pode); Para saber a quantidade de bytes que um tipo bool ocupa, podemos usar o método sizeof(). Veja: Console.WriteLine("Um boolean ocupa " + sizeof(bool) + " bytes no C# 2.0"); Este código exibirá: Um boolean ocupa 1 bytes no C# 2.0 Em C++, um valor de tipo bool pode ser convertido para um valor do tipo int, ou seja, false é equivalente à zero e true é equivalente à um valor diferente de zero. Em C# isso não é possível. Veja o que acontece quando tentamos converter um tipo int para um tipo boolean: int pode = 1; if(pode) Console.WriteLine("OK"); A mensagem de erro de compilação é: Cannot implicitly convert type 'int' to 'bool' |
Nossas 20 dicas & truques de programação mais populares |
Java - Como listar todo o conteúdo de um diretório usando a função listFiles() da classe File do Java |
Você também poderá gostar das dicas e truques de programação abaixo |
C - Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9 |
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 |