Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

Java ::: Classes e Componentes ::: JComponent

Java Avançado - Como verificar se uma classe herda de JComponent

Quantidade de visualizações: 8734 vezes
Nesta dica mostrarei como podemos tirar proveito dos métodos getClass(), getSuperclass() e getName() da classe Class para verificarmos se uma determinada classe herda da classe JComponent.

Embora este exemplo busque relacionar controles do Java Swing, a técnica usada pode ser aplicada em qualquer classe da linguagem Java.

Veja o código completo:

package arquivodecodigos;

import javax.swing.*;
 
public class Estudos{
  public static void main(String args[]){
    // verifica se JLabel herda de JComponent
    JLabel label = new JLabel("Teste");
    if(herdaJComponent(label)){
      System.out.println("JLabel herda de JComponent");
    }
    else{
      System.out.println(
        "JLabel não herda de JComponent");
    }
 
    // verifica se Timer herda de JComponent
    java.util.Timer timer = new java.util.Timer();
    if(herdaJComponent(timer)){
      System.out.println(
        "java.util.Timer herda de JComponent");
    }
    else{
      System.out.println(
        "java.util.Timer não herda de JComponent");
    }
 
    System.exit(0);
  }
 
  static boolean herdaJComponent(Object obj){
    Class cls = obj.getClass();
    Class superclass = cls.getSuperclass();
    while(superclass != null){
      String className = superclass.getName();
       
      if(className.equals("javax.swing.JComponent")){
        return true;
      }
 
      cls = superclass;
      superclass = cls.getSuperclass();
    }
 
    return false;
  }
}

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

JLabel herda de JComponent
java.util.Timer não herda de JComponent


jQuery ::: Dicas & Truques ::: Manipulação e Conteúdo Dinâmico

Como adicionar conteúdo ao início de um elemento HTML usando a função prepend() do jQuery

Quantidade de visualizações: 602 vezes
O método prepend() permite adicionar conteúdo ao início de um elemento HTML. Este conteúdo pode ser um seletor, um elemento HTML, uma string HTML ou um objeto jQuery.

Veja um trecho de código no qual adicionamos uma linha de texto no início de um parágrafo:

<script type="text/javascript">
<!--
  function adicionarConteudo(){
    var texto = "Mais uma linha.<br>";
    $("#parag").prepend(texto);
  }
//-->
</script>

O método prepend() opera em todos os elementos HTML retornados sob uma determinação condição. O retorno do método é um objeto jQuery que pode ser usado para fins de encadeamento de chamadas de métodos.


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

Como calcular o coeficiente angular de uma reta em C++ dados dois pontos no plano cartesiano

Quantidade de visualizações: 1426 vezes
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x.

Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano:



Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é:

\[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \]

Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente.

Veja agora o trecho de código na linguagem C++ que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:

#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main(int argc, char *argv[]){
  // coordenadas dos dois pontos
  float x1, y1, x2, y2;
  // guarda o coeficiente angular
  float m; 
       
  // x e y do primeiro ponto
  cout << "Coordenada x do primeiro ponto: ";
  cin >> x1;
  cout << "Coordenada y do primeiro ponto: ";
  cin >> y1;
     
  // x e y do segundo ponto
  cout << "Coordenada x do segundo ponto: ";
  cin >> x2;
  cout << "Coordenada y do segundo ponto: ";
  cin >> y2;   
     
  // vamos calcular o coeficiente angular
  m = (y2 - y1) / (x2 - x1);
     
  // mostramos o resultado
  cout << "O coeficiente angular é: " << m << "\n\n";
   
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Coordenada x do primeiro ponto: 3
Coordenada y do primeiro ponto: 6
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 10
O coeficiente angular é: 0.666667
Pressione qualquer tecla para continuar...

Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):

#include <iostream>
#include <cstdlib>
#include <math.h>
 
using namespace std;
 
int main(int argc, char *argv[]){
  // coordenadas dos dois pontos
  float x1, y1, x2, y2;
  // guarda os comprimentos dos catetos oposto e adjascente
  float cateto_oposto, cateto_adjascente;
  // guarda o ângulo tetha (em radianos) e a tangente
  float tetha, tangente;
       
  // x e y do primeiro ponto
  cout << "Coordenada x do primeiro ponto: ";
  cin >> x1;
  cout << "Coordenada y do primeiro ponto: ";
  cin >> y1;
     
  // x e y do segundo ponto
  cout << "Coordenada x do segundo ponto: ";
  cin >> x2;
  cout << "Coordenada y do segundo ponto: ";
  cin >> y2;   
     
  // vamos obter o comprimento do cateto oposto
  cateto_oposto = y2 - y1;
  // e agora o cateto adjascente
  cateto_adjascente = x2 - x1;
  // vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
  // (em radianos, não se esqueça)
  tetha = atan2(cateto_oposto, cateto_adjascente);
  // e finalmente usamos a tangente desse ângulo para calcular
  // o coeficiente angular
  tangente = tan(tetha);
     
  // mostramos o resultado
  cout << "O coeficiente angular é: " << tangente << "\n\n";
   
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta:

1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0;

2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0;

3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0).

4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe.


Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Como usar a busca binária em Python - Pesquisa binária na linguagem Python

Quantidade de visualizações: 744 vezes
A busca binária, ou pesquisa binária, é um algoritmo eficiente para encontrar um item em uma lista (vetor ou array) ordenada. Sim, os itens devem, obrigatoriamente, estar ordenados.

O processo é bem simples. A busca binária começa a partir do meio da lista e compara o item nesta posição com o valor sendo pesquisado. Se o valor não for encontrado e for menor que o item no meio da lista, o algoritmo passa para a porção à esquerda da lista, eliminando, assim, metade dos elementos do vetor ou array (a porção maior que o valor pesquisado).

Se o valor não for encontrado e for maior que o item no meio da lista, então a busca reinicia a partir da metade da sub-lista à direita (os itens maiores que o valor pesquisado). Essa divisão continua até que o valor seja encontrado ou não seja mais possível dividir a lista pela metade.

Se um array ou vetor possuir 100 elementos e usarmos a busca binária nele, precisaremos efetuar no máximo 7 tentativas para encontrar o valor desejado. Se a lista possuir 4 bilhões de itens nós teremos que fazer no máximo 32 tentativas.

Isso acontece porque a pesquisa binária é executada em tempo logarítmico, ou seja, log2 n, onde n é a quantidade de itens no vetor. Dessa forma, se tivemos 1.000 itens em um array, log2 1000 = 10 tentativas. Lembre-se de que, na programação log e log2 retornam resultados diferentes: log(10) = 2.302585092994046 enquanto log2(10) = 3.321928094887362. Na análise da busca binária nós usamos sempre log2.

Vamos agora ver como podemos codificar a busca binária em Python. Veja o código a seguir:

# função principal do programa
def main():
  # vamos criar uma lista ordenada de inteiros
  valores = [3, 5, 7, 8, 9, 12, 43, 50, 52, 60]
  print("Os valores da lista são: {0}".format(valores))

  # vamos pedir o item a ser pesquisado
  numero = int(input("Informe o número a ser pesquisado: "))

  # agora vamos pesquisar o número no array usando a pesquisa
  # binária
  # a variável esquerda aponta para o primeiro elemento do vetor
  esquerda = 0
  # a variável direita aponta para o último elemento do vetor
  direita = len(valores) - 1
  # para indicar se o valor foi encontrado
  encontrado = False

  # enquanto houver mais de um elemento a ser comparado
  while esquerda <= direita:
    # obtemos o elemento na metade da lista
    meio = (esquerda + direita) // 2
    
    # fazemos a comparação
    if numero == valores[meio]:
      print("O número foi encontrado no índice {0}".format(
        meio))
      encontrado = True
      break # sai do laço  

    # o item atual é maior que o valor pesquisado?
    if valores[meio] > numero:
      direita = meio - 1
    # o item atual é menor que o valor pesquisado?
    else:
      esquerda = meio + 1

  # o valor foi encontrado?
  if not encontrado:
    print("O valor pesquisado não foi encontrado")  

if __name__== "__main__":
  main()

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

Os valores da lista são: [3, 5, 7, 8, 9, 12, 43, 50, 52, 60]
Informe o número a ser pesquisado: 9
O número foi encontrado no índice 4


C++ ::: STL (Standard Template Library) ::: Vector C++

Como excluir todos os elementos de um vector C++ usando a função clear()

Quantidade de visualizações: 17955 vezes
Em algumas situações precisamos remover todos os elementos de um vector. Para isso podemos usar a função clear(). Esta função não requer nenhum argumento e possui retorno void. À medida que os elementos vão sendo removidos, seus destrutores são chamados (no caso de os elementos no vector serem referências e não tipos primitivos).

Veja o código C++ completo para o exemplo:

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá inteiros
  vector<int> valores;

  // vamos inserir três elementos
  valores.push_back(54);
  valores.push_back(13);
  valores.push_back(87);

  // vamos obter a quantidade de elementos no vector
  cout << "Quantidade de elementos: " << valores.size() << endl;

  // vamos remover todos os elementos, ou seja, limpar o vector
  valores.clear();

  // vamos obter a quantidade de elementos no vector novamente
  cout << "Quantidade de elementos: " << valores.size() << endl;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Quantidade de elementos: 3
Quantidade de elementos: 0


C# ::: Windows Forms ::: DataGridView

Como retornar a quantidade de colunas em um DataGridView do C# Windows Forms

Quantidade de visualizações: 10042 vezes
A quantidade de colunas em um DataGridView pode ser obtida por meio da propriedade ColumnCount. Veja:

private void button2_Click(object sender, EventArgs e){
  // vamos adicionar três colunas no DataGridView
  dataGridView1.Columns.Add("cidade", "Cidade");
  dataGridView1.Columns.Add("estado", "Estado");
  dataGridView1.Columns.Add("populacao", "População");

  // vamos adicionar três linhas
  dataGridView1.Rows.Add("Goiânia", "GO", "3.453,39");
  dataGridView1.Rows.Add("Cuiabá", "MT", "1.876,12");
  dataGridView1.Rows.Add("Curitiba", "PR", "5.346,98");

  // vamos obter a quantidade de colunas no DataGridView
  int quant_colunas = dataGridView1.ColumnCount;

  // exibe o resultado
  MessageBox.Show("O DataGridView contém " + 
    quant_colunas + " colunas");
}

É possível também usar a propriedade ColumnCount para definir a quantidade de colunas em um DataGridView:

dataGridView1.ColumnCount = 6;

Há algumas considerações importantes sobre a propriedade ColumnCount:

1) Se seu valor for definido como 0, todas as colunas do DataGridView serão removidas;
2) Se o novo valor for menor que o valor atual, as colunas excedentes serão removidas no final da coleção Columns;
3) Se o novo valor for maior que o valor atual, as novas colunas serão adicionadas no final da coleção Columns;
4) Se tentarmos alterar o valor desta propriedade após a definição da propriedade DataSource, uma exceção InvalidOperationException será lançada.


C ::: Dicas & Truques ::: Strings e Caracteres

Como escrever uma função na linguagem C que verifica se duas strings são iguais ou diferentes

Quantidade de visualizações: 9395 vezes
Esta dica mostra como escrever uma função em C que verifica se duas strings são iguais ou diferentes. O nome da função é str_equal(). Esta função aceita duas strings como argumentos e retorna 1 se estas forem iguais e 0 em caso contrário. Experimente, faça as devidas alterações e adicione mais esta função ao seu repertório de códigos C.

Veja o código completo para o exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
// função personalizada que permite verificar
// se duas strings são iguais ou diferentes
int str_equal(const char *str1, const char *str2){
  while((*str1 == *str2) && (*str1)){
    str1++;
    str2++;
  }
 
  return((*str1 == 0) && (*str2 == 0));
}
 
int main(int argc, char *argv[]){
  char palavra1[] = "Java";
  char palavra2[] = "Java";
 
  if(str_equal(palavra1, palavra2) == 1)
    printf("As palavras sao iguais");
  else
    printf("As palavras sao diferentes");
 
  puts("\n\n");
  system("PAUSE");
  return 0;
}

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

As palavras são iguais


Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercícios Resolvidos de Portugol - A concessionária de veículos "CARANGO VELHO" está vendendo os seus veículos com descontos. Faça um algoritmo Portugol

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

A concessionária de veículos "CARANGO VELHO" está vendendo os seus veículos com descontos. Faça um algoritmo Portugol que calcule e exiba o valor do desconto e o valor a ser pago pelo cliente de vários carros. O desconto deverá ser calculado de acordo com o ano do veículo.

Até o ano 2000 o desconto é 12%, e acima de 2000 o desconto é de 7%. Seu código deverá solicitar o valor do carro e o seu ano e aplicar o desconto correspondente. Além disso o sistema deverá perguntar se deseja continuar calculando descontos até que a resposta seja: "(N) Não". Informar o total de carros com ano até 2000 e o total geral a ser pago pelo cliente.

Sua saída deve ser parecida com:

Informe o valor do carro sem desconto: 25000
Informe o ano do carro: 2010
Desconto concedido: 1750
Valor do carro com desconto: 23250
Deseja adicionar mais carros? [S, N]: S

Informe o valor do carro sem desconto: 30500
Informe o ano do carro: 1985
Desconto concedido: 3660
Valor do carro com desconto: 26840
Deseja adicionar mais carros? [S, N]: S

Informe o valor do carro sem desconto: 16800
Informe o ano do carro: 1990
Desconto concedido: 2016
Valor do carro com desconto: 14784
Deseja adicionar mais carros? [S, N]: N

Total de carros com ano até 2000: 2
Total geral a pagar: 64874
Resposta/Solução:

Veja a resolução comentada deste exercício usando Portugol Webstudio:

programa {
  funcao inicio() {
    // variáveis usadas na resolução do problema
    real valor_carro, valor_desconto, valor_carro_desconto
    real total_geral
    inteiro ano
    inteiro total_carros_ano_2000
    caracter resposta
    
    // vamos inicializar os valores de algumas variáveis
    total_geral = 0
    total_carros_ano_2000 = 0

    // repete até que o usuário informe o valor "N"
    faca {
      // vamos ler o valor do carro sem desconto
      escreva("\nInforme o valor do carro sem desconto: ")
      leia(valor_carro)
      
      // vamos ler o ano do carro
      escreva("Informe o ano do carro: ")
      leia(ano)

      // o ano é menor ou igual a 2000
      se (ano <= 2000) {
        valor_desconto = valor_carro * (12.0 / 100.0)
        // vamos somar mais este carro
        total_carros_ano_2000 = total_carros_ano_2000 + 1
      }
      senao {
        valor_desconto = valor_carro * (7.0 / 100.0)
      }

      // calculamos o valor do carro com o desconto
      valor_carro_desconto = valor_carro - valor_desconto
      escreva("Desconto concedido: ", valor_desconto)
      escreva("\nValor do carro com desconto: ", valor_carro_desconto)

      // somamos mais este valor ao total geral
      total_geral = total_geral + valor_carro_desconto

      // perguntamos se o usuário deseja adicionar mais carros
      escreva("\nDeseja adicionar mais carros? [S, N]: ")
      leia(resposta)
    } enquanto((resposta != 'N') e (resposta != 'n'))  

    // mostramos os resultados
    escreva("\nTotal de carros com ano até 2000: ", total_carros_ano_2000)
    escreva("\nTotal geral a pagar: ", total_geral)
  }
}



Python ::: Dicas & Truques ::: Strings e Caracteres

Como transformar em letra maiúscula apenas o primeiro caractere de uma palavra ou frase usando a função capitalize() do Python

Quantidade de visualizações: 11721 vezes
Nesta dica mostrarei como podemos usar o método capitalize() do objeto string da linguagem Python para transformar em letra maiúscula apenas a primeira letra de uma palavra, frase ou texto.

Veja o trecho de código a seguir:

def main():
  frase1 = "trabalho, Estudo e toco Guitarra."
  # converte a primeira letra para maiúsculas e as demais
  # para letras minúsculas
  frase2 = frase1.capitalize()

  # mostra os resultados
  print("Frase original:", frase1)
  print("Apenas a primeira letra maiúscula:", frase2)

if __name__== "__main__":
  main()

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

Frase original: trabalho, Estudo e toco Guitarra.
Apenas a primeira letra maiúscula: Trabalho, estudo e toco guitarra.


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

Apostila C# para iniciantes - Como escrever um laço for infinito em C#

Quantidade de visualizações: 10345 vezes
A linguagem C# permite a criação de laços for infinitos. Para isso, só precisamos omitir as partes de inicialização, teste de condição de parada e incremento ou decremento da variável de controle. Veja um exemplo:

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args) {
      for (; ; ) {
        Console.Write("Digite um número inteiro " +
          "(-1 para sair): ");
        int valor = int.Parse(Console.ReadLine());

        // testa se o valor lido é -1. Se for pára
        // o laço
        if (valor == -1)
          break;

        // exibe o valor lido
        Console.WriteLine("Valor lido: {0}", valor);
      }

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


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

Digite um número inteiro (-1 para sair): 54
Valor lido: 54
Digite um número inteiro (-1 para sair): 23
Valor lido: 23
Digite um número inteiro (-1 para sair): 90
Valor lido: 90
Digite um número inteiro (-1 para sair): -1

Pressione uma tecla para sair...

Veja como usamos a instrução break para sair do laço caso o valor lido seja -1. Observe ainda o uso do método Parse() da classe Int32 para converter a string digitada pelo usuário em um valor do tipo int.

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


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 Apenas R$ 32,90


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