LISP ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular a área de um círculo em LISP dado o raio do círculo

Quantidade de visualizações: 1088 vezes
A área de um círculo pode ser calculada por meio do produto entre a constante PI e a medida do raio ao quadrado (r2). Comece analisando a figura abaixo:



Sendo assim, temos a seguinte fórmula:



Onde A é a área, PI equivale a 3,14 (aproximadamente) e r é o raio do círculo.

O raio é a medida que vai do centro até um ponto da extremidade do círculo. O diâmetro é a medida equivalente ao dobro da medida do raio, passando pelo centro do círculo e dividindo-o em duas partes. A medida do diâmetro é 2 * Raio.

Veja agora um código Common Lisp completo que calcula a área de um círculo mediante a informação do raio:

; Vamos definir as variáveis que vamos
; usar no programa
(defvar raio)
(defvar area)

; Este o programa principal
(defun AreaCirculo()
  ; Vamos ler o raio do círculo
  (princ "Informe o raio do círculo: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável raio
  (setq raio (read))
  
  ; calcula a área do círculo
  (setq area (* pi (expt raio 2)))
  
  ; E mostramos o resultado
  (format t "A área do círculo de raio ~F é ~F" raio
    area)
)

; Auto-executa a função AreaCirculo()
(AreaCirculo)

Ao executarmos este código nós teremos o seguinte resultado:

Informe o raio do círculo: 5
A area do círculo de raio 5 é igual a 78.539816

A circunferência é um conjunto de pontos que estão a uma mesma distância do centro. Essa distância é conhecida como raio. A circunferência é estudada pela Geometria Analítica e, em geral, em um plano cartesiano. O círculo, que é formado pela circunferência e pelos infinitos pontos que preenchem seu interior, é estudado pela Geometria Plana, pois ele ocupa um espaço e pode ter sua área calculada, diferentemente da circunferência.


LISP ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como testar uma condição em Lisp usando a macro if

Quantidade de visualizações: 1110 vezes
Nesta dica mostrarei como podemos usar a macro if da linguagem Common Lisp para testar uma condição. Por se tratar de um exemplo básico, não mostrarei um caminho alternativo, ou seja, a mensagem será exibido somente se a condição for satisfeita. Em outras dicas eu complemento com o desvio opcional.

Veja um exemplo no qual solicitamos um número ao usuário e informamos se o valor lido é maior que 10:

; Vamos definir as variáveis que vamos
; usar no programa
(defvar numero)

; Este é o programa principal
(defun Estudos()
  ; Vamos ler o número
  (princ "Informe um número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável numero
  (setq numero (read))
  
  ; vamos testar se este número é maior que 10
  (if (> numero 10)
    (format t "~D é maior que 10~%" numero))
  
  ; E mostramos o número informado
  (format t "O número informado foi: ~D" numero)
)

; Auto-executa a função Estudos()
(Estudos)

Ao executar este código Common Lisp nós teremos o seguinte resultado:

Informe um número: 12
12 é maior que 10
O número informado foi: 12


C# ::: Dicas & Truques ::: Tipos de Dados

Curso de C# - Como usar os tipos de dados short e ushort da linguagem C#

Quantidade de visualizações: 9254 vezes
O tipo de dados short é um tipo primitivo integral com sinal (signed) que pode armazenar valores inteiros na faixa de -32.768 até 32.767. Este tipo ocupa 16 bits (2 bytes) de memória e é um apelido para o tipo System.Int16 da plataforma .NET.

Podemos obter os valores mínimo e máximo que podem ser armazenados em um short por meio de suas propriedades MinValue e MaxValue. Veja:

static void Main(string[] args){
  // vamos obter o valor mínimo de um short
  short minimo = short.MinValue;

  // vamos obter o valor máximo de um short
  short maximo = short.MaxValue;
  
  // vamos mostrar o resultado
  Console.WriteLine("A faixa de valores de um short é: " + minimo +
    " até " + maximo);

  // vamos pausar a execução
  Console.ReadKey();
}

Ao executarmos este código teremos o seguinte resultado:

A faixa de valores de um short é: -32768 até 32767.

Ao atribuir valores para um short em tempo de design, ou seja, como um literal, devemos ter o cuidado de não atribuir valores que estejam fora da faixa permitida. Veja:

static void Main(string[] args){
  // a linha abaixo não vai compilar
  short valor = 35767;

  // vamos pausar a execução
  Console.ReadKey();
}

Este código não compila. A mensagem de erro:

Constant value '35767' cannot be converted to a 'short'

nos informa que o valor 35767 (que está acima da faixa permitida) não pode ser convertido para um short. Assim, se você desejar mesmo efetuar tal procedimento, uma conversão forçada (cast) deve ser feita:

static void Main(string[] args){
  int valor = 35767;

  // vamos forçar a conversão para short
  short valor2 = (short)valor;
 
  // vamos mostrar o resultado
  Console.WriteLine("Valor após o cast: " + valor2);

  // vamos pausar a execução
  Console.ReadKey();
}

Aqui nós "esprememos" o valor 35767 para um short e o resultado, -29769, definitivamente não é o que estávamos esperando.

O tipo ushort é um tipo primitivo integral sem sinal (unsigned) que pode armazenar valores inteiros na faixa de 0 até 65.535. Este tipo ocupa 16 bits (2 bytes) de memória e é um apelido para o tipo System.UInt16 da plataforma .NET.

Podemos obter os valores mínimo e máximo que podem ser armazenados em um ushort por meio de suas propriedades MinValue e MaxValue. Veja:

static void Main(string[] args){
  // vamos obter o valor mínimo de um ushort
  ushort minimo = ushort.MinValue;

  // vamos obter o valor máximo de um ushort
  ushort maximo = ushort.MaxValue;
  
  // vamos mostrar o resultado
  Console.WriteLine("A faixa de valores de um ushort é: " + minimo +
    " até " + maximo);

  // vamos pausar a execução
  Console.ReadKey();
}

Ao executarmos este código teremos o seguinte resultado:

A faixa de valores de um ushort é: 0 até 65535.


C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Tutorial C# - Como usar o laço while (enquanto) da linguagem C#

Quantidade de visualizações: 13432 vezes
O laço while (enquanto) é usado quando queremos repetir uma instrução ou bloco de instruções ENQUANTO uma condição for satisfatória. Veja um exemplo:

static void Main(string[] args){
  int valor = 1;

  while(valor <= 10){
    Console.WriteLine("{0}", valor);
    valor++;
  }

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Este trecho de código conta de 1 até 10. Veja que antes de cada iteração do laço nós testamos se o valor da variável de controle é menor ou igual a 10. A iteração acontece somente se esta condição for satisfeita, o que nos mostra que um laço while pode nunca ser executado (o que aconteceria se a condição fosse falsa já na entrada). Note ainda que dentro de cada iteração nós incrementamos o valor da variável de controle. Isso é feito para que o laço não seja executado infinitamente.

Veja um outro exemplo de laço while, desta vez simulando um menu de opções:

static void Main(string[] args){
  // variável que registra a opção do usuário
  int opcao;
  
  // lê a opção
  Console.Write("Informe a opção 1, 2 ou 3" +
    " (-1 para sair): ");
  
  // laço while que mostra as opções do menu enquanto
  // o valor -1 não for informado
  while((opcao = int.Parse(Console.ReadLine())) != -1){
    switch(opcao){
      case 1:
        Console.WriteLine("Executando a opção 1");
        break;
      case 2:
        Console.WriteLine("Executando a opção 2");
        break;
      case 3:
        Console.WriteLine("Executando a opção 3");
        break;
      default:
        Console.WriteLine("Opção incorreta");
        break;
    }

    // mostra o texto das opções novamente
    Console.Write("Informe a opção 1, 2 ou 3" +
    " (-1 para sair): ");
  }

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Se você é realmente iniciante em C#, notará que este exemplo é um pouco mais elaborado. Desta forma, estude-o atentamente. É uma técnica muito útil quando estamos escrevendo programas console, uma vez que a maioria deles possui um menu de opções.


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercício Resolvido de Python - Ler três números inteiros e indicar se eles estão em ordem crescente ou decrescente

Quantidade de visualizações: 926 vezes
Pergunta/Tarefa:

Escreva um programa Python que pede para o usuário informar três números inteiros e informa se eles estão em ordem crescente ou decrescente. Se os números estiverem em ordem crescente, escreva "Ordem Crescente". Se estiverem em ordem decrescente, escreva "Ordem Decrescente". Do contrário escreva "Sem ordem definida".

Sua saída deverá ser parecida com:

Primeiro número: 4
Segundo número: 8
Terceiro número: 11
Ordem Crescente
Resposta/Solução:

Veja a resolução comentada deste exercício em Python:

# função principal do programa
def main():
  # vamos ler três números do usuário
  a = int(input("Primeiro número: "))
  b = int(input("Segundo número: "))
  c = int(input("Terceiro número: "))
  
  # os números estão em ordem crescente?
  if a < b and b < c:
    print("Ordem Crescente")
  # os números estão em ordem decrescente?
  elif a > b and b > c:
    print("Ordem Decrescente")
  # sem ordem definida
  else:
    print("Sem ordem definida")

if __name__== "__main__":
  main()



Java ::: Dicas & Truques ::: Mouse e Teclado

Java Swing - Como detectar um clique em um botão JButton e exibir uma mensagem JOptionPane

Quantidade de visualizações: 2 vezes
Nesta dica mostrarei como podemos usar o método addActionListener() da linguagem Java para definir um evento de clique a um botão JButton. Quando o usuário clicar no botão nós vamos interceptar este evento e mostrar uma mensagem JOptionPane.showMessageDialog().

Veja o código completo para o exemplo:

 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Estudos extends JFrame{
  JButton btn;
 
  public Estudos() {
    super("Detectando um clique em um botão");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
     
    btn = new JButton("Clique");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          JOptionPane.showMessageDialog(null, "Fui clicado!");
        }
      }   
    ); 
        
    c.add(btn);
     
    setSize(350, 250);
    setVisible(true);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Um programa que lê três números e os classifica e exibe em ordem crescente

Quantidade de visualizações: 6896 vezes
Pergunta/Tarefa:

Escreva um programa Java que pede ao usuário três números inteiros. Em seguida, ordene os três valores em ordem crescente e os exiba.

Sua saída deverá ser parecida com:

Informe o primeiro valor: 7
Informe o segundo valor: 4
Informe o terceiro valor: 6
Os números ordenados em ordem crescente são: 
4  6  7
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos pedir que o usuário informe três números inteiros
    System.out.print("Informe o primeiro valor: ");
    int num1 = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o segundo valor: ");
    int num2 = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o terceiro valor: ");
    int num3 = Integer.parseInt(entrada.nextLine());
    
    // o primeiro número é maior que o segundo? vamos trocá-los
    if(num1 > num2){
      int temp = num1;
      num1 = num2;
      num2 = temp;
    }

    // o segundo número é maior que o terceiro? vamos trocá-los
    if(num2 > num3){
      int temp = num2;
      num2 = num3;
      num3 = temp;
    }

    // depois da segunda troca o número 1 é novamente maior que o número 2?
    if(num1 > num2){
      int temp = num1;
      num1 = num2;
      num2 = temp;
    }
    
    // mostra o resultado
    System.out.println("Os números ordenados em ordem crescente são: ");
    System.out.println(num1 + "  " + num2 + "  " + num3);
    
    System.out.println("\n");
  }
}



Java ::: Classes e Componentes ::: JTable

Java Swing - Como excluir linhas de uma JTable em tempo de execução usando o método removeRow() da classe DefaultTableModel

Quantidade de visualizações: 15972 vezes
Nesta dica mostrarei como é possível excluir uma determinada linha de uma JTable usando o método removeRow() da classe DefaultTableModel. Veja que mostro também como inserir novas linhas na JTable usando o método insertRow().

Veja o resultado obtido na imagem abaixo:



E agora o código Java Swing completo:

package arquivodecodigos;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
 
public class Estudos extends JFrame{
  public Estudos(){
    super("Exemplo de uma tabela simples");
         
    final DefaultTableModel modelo = new DefaultTableModel();
     
    // constrói a tabela
    JTable tabela = new JTable(modelo);
     
    // Cria duas colunas
    modelo.addColumn("Nome");
    modelo.addColumn("Idade");
     
    JButton btn = new JButton("Inserir Linhas");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          String nome = JOptionPane.showInputDialog(null, "Informe o nome:");
          String idade = JOptionPane.showInputDialog(null, "Informe a idade:");
          int pos = Integer.parseInt(JOptionPane.showInputDialog(null, 
             "Informe a posição da nova linha:"));
           
          // testa se a posição é válida
          if(pos > (modelo.getRowCount() - 1))
            pos = 0;
           
          // Insere uma linha na posição especificada
          modelo.insertRow(pos, new Object[]{nome, idade});
        }
      } 
    );
     
    JButton btn2 = new JButton("Excluir Linhas");
    btn2.addActionListener(
      new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
          int pos = Integer.parseInt(JOptionPane.showInputDialog(null, 
            "Informe a posição da linha a ser excluída:"));
           
          // testa se a posição é válida
          if(pos < modelo.getRowCount())
            // Exclui a linha na posição especificada
            modelo.removeRow(pos);
        }
      } 
    );  
     
    tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
     
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
             
    JScrollPane scrollPane = new JScrollPane(tabela);
    c.add(scrollPane);
    c.add(btn);
    c.add(btn2);
         
    setSize(400, 300);
    setVisible(true);
  }
     
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string Java está toda em letras maiúsculas ou minúsculas usando as funções Character.isWhitespace() e Character.isUpperCase()

Quantidade de visualizações: 279 vezes
Nesta dica mostrarei como podemos combinar um laço e as funções Character.isWhitespace() e Character.isUpperCase() para testar se uma palavra, frase ou texto está toda em letras maiúsculas em Java.

Veja o código completo para o exemplo:

package estudos;

public class Estudos {

  public static void main(String[] args) {
    // Este exemplo mostra como verificar se uma
    // string está toda em letras maiúsculas
    String frase = "PROGRAMANDO EM JAVA";
    boolean maiusculas = true;

    for (int i = 0; i < frase.length(); i++) {
      Character caractere = frase.charAt(i);
      if (Character.isWhitespace(caractere)) {
        continue;
      }
      if (!Character.isUpperCase(caractere)) {
        maiusculas = false;
        break;
      }
    }

    if (maiusculas) {
      System.out.println("A string esta toda em letras maiusculas");
    }
    else{
      System.out.println("A string NAO esta toda em letras maiusculas");
    }
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A string está toda em letras maiúsculas


Java Servlets ::: Dicas & Truques ::: URLs, Documentos e Páginas

Como compartilhar dados entre um Java Servlet e uma página JSP usando a requisição HttpServletRequest

Quantidade de visualizações: 8411 vezes
Quando usamos o método forward() da interface RequestDispatcher para direcionar para um outro Java Servlet ou página JSP, tanto o objeto de requisição ServletRequest quanto o objeto de resposta ServletResponse são enviados também. Assim, podemos tirar proveito desta funcionalidade para compartilhar dados entre um servlet e uma página JSP usando a requisição. Vamos ver como isso é possível.

Comece analisando o seguinte servlet:

package estudos;

import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;

public class MeuServlet extends HttpServlet{
  public void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException{

    // cria uma instância da classe Pessoa
    Pessoa p = new Pessoa();
    p.setNome("Osmar J. Silva");

    // vamos colocar o objeto p na requisição
    request.setAttribute("pessoaBean", p);

    // agora direcionamos para a página exibir.jsp
    RequestDispatcher dispatcher = 
      request.getRequestDispatcher("/exibir.jsp");
    dispatcher.forward(request, response); 
  }
}

Note que aqui eu já estou usando o pacote jakarta.servlet em vez de javax.servlet. Confirme se você está usando o Java EE ou Jakarta EE.

Veja que no método doGet() deste Servlet nós temos a criação de uma instância da classe Pessoa (Pessoa.java). Esta classe tem a seguinte estrutura:

package estudos;

public class Pessoa{
  private String nome;

  public String getNome(){
    return this.nome;
  }

  public void setNome(String nome){
    this.nome = nome;
  }
}

Depois de criada a instância da classe nós a colocamos na requisição atual usando:

// vamos colocar o objeto p na requisição
request.setAttribute("pessoaBean", p);


O passo seguinte é direcionar a requisição atual para a página exibir.jsp (a View do MVC). Veja o código para esta página:

<jsp:useBean id="pessoaBean" scope="request"
 type="estudos.Pessoa" />
<html>
<head>
  <title>Estudos Servlet</title>
  <meta http-equiv="Content-Type" content="text/html; 
    charset=iso-8859-2">
</head>
<body>

<h4>Nome da pessoa: <jsp:getProperty name="pessoaBean"
  property="nome" /></h4>

</body>
</html>

Aqui nós estamos usando <jsp:getProperty> para acessar um dos atributos do bean pessoaBean. Poderíamos usar JSTL e EL. Veja:

<%@ taglib prefix="c" 
  uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="pessoaBean" scope="request" 
  type="estudos.Pessoa" />
<html>
<head>
  <title>Estudos Servlet</title>
  <meta http-equiv="Content-Type" content="text/html; 
    charset=iso-8859-2">
</head>
<body>

<h4>Nome da pessoa: <c:out value="${pessoaBean.nome}"/></h4>

</body>
</html>

Fiz o mapeamento deste Java Servlet para a URL http://localhost:8080/estudos/meuservlet. Ao chamá-la nós teremos o seguinte resultado:

Nome da pessoa: Osmar J. Silva

Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 18 usuários muito felizes estudando em nosso site.