Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
C++ ::: Win32 API (Windows API) ::: Processos

Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no Windows

Quantidade de visualizações: 8104 vezes
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:

BOOL WINAPI EnumProcesses(
  DWORD* pProcessIds,
  DWORD cb,
  DWORD* pBytesReturned
);


Esta função possui três parâmetros:

a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados.

b) DWORD cb - O tamanho da matriz pProcessIds em bytes.

c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD.

Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente.

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <psapi.h>

/*
  Este exemplo usa o header <psapi.h>
  É necessário fazer uma referência à psapi.lib 
*/

using namespace std;

int main(int argc, char *argv[]){
  DWORD processos[1024]; // vamos listar até 1024 processos   
  DWORD pBytesReturned; // bytes retornados pela função EnumProcesses()
  
  // vamos listar os processos
  EnumProcesses(processos, sizeof(processos), &pBytesReturned);
......


O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess().

Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id:

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos fechar o processo com o id 3040
  
  // CUIDADO: Verifique o id do processo antes de fechá-lo
  // pode ser que você esteja fechando processos essenciais
  // para o bom funcionamento do Windows
  
  // vamos abrir o processo desejado
  // vai retornar ERROR_INVALID_HANDLE se o processo não
  // puder ser aberto
......



Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet

Como usar o método FindField para pesquisar um campo no TClientDataSet do Delphi e retornar um objeto da classe TField

Quantidade de visualizações: 13353 vezes
O método FindField pode ser usado quando queremos pesquisar um campo no TClientDataSet e retornar um objeto da classe TField. Este método possui a seguinte assinatura:

function FindField(const FieldName: string): TField;
Se o campo for encontrado, um objeto da classe TField é retornado. Em caso contrário, o valor nil é retornado.

Veja um trecho de código no qual eu mostro como encontrar um campo chamado "autor" em um ClientDataSet e retornar seu valor no registro atual:

procedure TForm3.Button3Click(Sender: TObject);
var
  campo: TField;
begin
  // vamos obter o campo com o nome "autor" no ClientDataSet
  campo := ClientDataSet1.FindField('autor');

  // este campo existe no dataset?
......


Se o campo existir no dataset, veremos uma mensagem parecida com:

"O campo existe e seu valor no registro atual é: M. D. Deitel".

Em geral usamos o método FindField para determinar se um determinado componente field existe no dataset. O argumento para o método é o nome do campo que queremos pesquisar. Este nome pode ser o nome de um campo simples, o nome de um sub-campo de um objeto field que tenha sido qualificado pelo nome do campo pai ou o nome de um campo agregado.

O comportamento do método FindField é o mesmo do método FieldByName. A diferença é que FindField retorna o valor nil se o campo não existir, enquanto FieldByName lança uma exceção do tipo EDatabaseError com a mensagem "Field not found".

Esta dica foi escrita e testada no Delphi 2009.


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

Como calcular a equação reduzida da reta em Java dados dois pontos pertencentes à reta

Quantidade de visualizações: 988 vezes
Nesta dica de Java veremos como calcular a equação reduzida da reta quando temos dois pontos pertencentes à esta reta. Não, nessa dica não vamos calcular a equação geral da reta, apenas a equação reduzida. Em outras dicas do site você encontra como como isso pode ser feito.

Para relembrar: a equação reduzida da reta é y = mx + n, em que x e y são, respectivamente, a variável independente e a variável dependente; m é o coeficiente angular, e n é o coeficiente linear. Além disso, m e n são números reais. Com a equação reduzida da reta, é possível calcular quais são os pontos que pertencem a essa reta e quais não pertencem.

Vamos começar então analisando a seguinte figura, na qual temos dois pontos que pertencem à uma reta:



Note que a reta da figura passa pelos pontos A(5, 5) e B(9, 2). Então, uma vez que já temos os dois pontos, já podemos calcular a equação reduzida da reta. Veja o código Java completo para esta tarefa:

package estudos;

import java.util.Scanner;

public class Estudos{
  public static void main(String[] args){
    // vamos usar a classe Scanner para ler os dados
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler as coordenadas do primeiro ponto
    System.out.print("Coordenada x do primeiro ponto: ");
    double x1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do primeiro ponto: ");
    double y1 = Double.parseDouble(entrada.nextLine());
    
    // vamos ler as coordenadas do segundo ponto
    System.out.print("Coordenada x do segundo ponto: ");
    double x2 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do segundo ponto: ");
......


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

Coordenada x do primeiro ponto: 5
Coordenada y do primeiro ponto: 5
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 2
Equação reduzida: y = -0,75x + 8,75

Para testarmos se nossa equação reduzida da reta está realmente correta, considere o valor 3 para o eixo x da imagem acima. Ao efetuarmos o cálculo:

>> y = (-0.75 * 3) + 8.75
......


temos o valor 6.5 para o eixo y, o que faz com que o novo ponto caia exatamente em cima da reta considerada na imagem.


Lisp ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço loop para contar de 1 até 10 em Lisp

Quantidade de visualizações: 471 vezes
A estrutura de repetição loop da linguagem Common Lisp é o laço mais simples fornecido pela linguagem. Este laço nos permite repetir uma ou mais instruções de código repetidamente, até que o comando return seja encontrado, o que faz com que o laço seja interrompido.

Veja no trecho de código abaixo como podemos usar o laço loop da Common Lisp para contar e exibir os valores de 1 até 10:

(
  ; vamos declarar a variável que vamos usar
  let (numero)	
  ; vamos inicializar a variável com o valor 1
  (setq numero 1)
  ; agora iniciamos o laço
  (loop 
    ; escrevemos o valor da variável
    (write numero)
......


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

1
2
3
4
5
6
7
8
9
10

Veja que usamos a macro when para testar o ponto de parada do laço. Note ainda o uso da função terpri da Common Lisp para provocar uma quebra de linha na saída do programa.


Dart ::: Dicas & Truques ::: Aplicativos e Outros

Como calcular a distância entre dois pontos na terra em Dart

Quantidade de visualizações: 1058 vezes
Nesta dica mostrarei como calcular a distância em quilômetros entre dois pontos na terra dadas suas latitudes e longitudes. Neste exemplo eu coloquei o valor de 6378.137 para o raio da terra, mas você pode definir para o valor que achar mais adequado.

O cálculo usado neste código se baseia na Fórmula de Haversine, que determina a distância do grande círculo entre dois pontos em uma esfera, dadas suas longitudes e latitudes.

Veja o código Dart completo:

// Vamos importar a biblioteca dart:io
import "dart:io";

// vamos importar a biblioteca dart:math
import "dart:math";

void main(){
  // vamos ler as latitudes e longitudes das duas
  // localizações
  stdout.write("Informe a primeira latitude: ");
  double lat1 = double.parse(stdin.readLineSync());
  stdout.write("Informe a primeira longitude: ");
  double lon1 = double.parse(stdin.readLineSync());
  stdout.write("Informe a segunda latitude: ");
  double lat2 = double.parse(stdin.readLineSync());
  stdout.write("Informe a segunda longitude: ");
  double lon2 = double.parse(stdin.readLineSync());
  
  // vamos calcular a distância entre os dois pontos em Kms
  double distancia = calcularDistancia(lat1, lat2, lon1, lon2);
    
  // mostramos o resultado
  print("Distância entre os dois pontos: ${distancia} kms");
}

// função que recebe dois pontos na terra e retorna a distância
......


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

Informe a primeira latitude: -16.674551
Informe a primeira longitude: -49.303598
Informe a segunda latitude: -15.579321
Informe a segunda longitude: -56.10009
A distância entre os dois pontos é: 736.9183827638687kms

Neste exemplo eu calculei a distância entre as cidades de Goiânia-GO e Cuibá-MT.

A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0o e 90o para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador.


C++ ::: Dicas & Truques ::: Arquivos e Diretórios

Como excluir um diretório em C++ usando a função rmdir()

Quantidade de visualizações: 8202 vezes
Em algumas situações nossos códigos C++ precisam excluir diretórios. Isso pode ser feito com o auxílio da função _rmdir() ou rmdir(), disponível no header direct.h (trazido da linguagem C). Veja a assinatura desta função:

int _rmdir(const char *pathname);
Se o diretório for excluído com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores:

a) ENOTEMPTY - Directory not empty - O diretório não está vazio e portanto não pode ser excluído;

b) ENOENT - No such file or directory - O caminho do diretório é inválido;

c) EACCESS - Acesso negado - Algum outro programa está usando este diretório e mantém controle sobre o mesmo.

Veja um trecho de código C++ no qual excluímos um diretório:

#include <iostream>
#include <direct.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos excluir este diretório
  char diretorio[] = "C:\\Dev-Cpp\\estudos";

  // vamos testar se houve erro na exclusão do diretório
  if(rmdir(diretorio) == -1){
......


É possível usar a versão Unicode de _rmdir(), ou rmdir(). O método _wrmdir(), também presente em direct.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:

#include <iostream>
#include <direct.h>

using namespace std;

int main(int argc, char *argv[]){
  // vamos excluir este diretório
  wchar_t diretorio[] = L"C:\\Dev-Cpp\\estudos";

  // vamos testar se houve erro na exclusão do diretório
  if(_wrmdir(diretorio) == -1){
......



C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como pesquisar um valor em um array C# usando o método Find() e um Predicate

Quantidade de visualizações: 12557 vezes
Nesta dica veremos como usar o método Find() da classe Array e um método Predicate para pesquisar um item em um vetor de string na linguagem C#. Note que a função Predicate é fornecida como segundo argumento para o método Find().

Veja o código completo para o exemplo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // cria e inicializa um array de strings
      string[] cidades = {"Goiânia", "São Paulo",
        "Rio de Janeiro", "Curitiba"};

      // pesquisa o valor "Goiânia"
      string item = Array.Find(cidades, pesquisar);
      Console.WriteLine(item != null ? "Item encontrado" :
......


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

Item encontrado


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria Analítica e Álgebra Linear

Exercício Resolvido de Java - Como calcular o quadrante de uma coordenada cartesiana em Java

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

O Plano Cartesiano, ou Sistema de Coordenadas Cartesianas, é formado por duas retas reais perpendiculares, ou seja, o ângulo entre elas é de 90 graus. Essas retas determinam um único plano, que é denominado como sistema ortogonal de coordenadas cartesianas ou somente plano cartesiano.

No ano de 1637, René Descartes teve a brilhante ideia de relacionar álgebra e geometria, dando início à conhecida geometria analítica, método que possibilita descrever a geometria utilizando uma menor quantidade de diagramas e desenhos. Apesar de os créditos dessa descoberta serem dados a Descartes, Pierre de Fermat já conhecia e utilizava alguns conceitos de geometria analítica, logo o plano cartesiano.

Há quatro quadrantes no Sistema de Coordenadas Cartesianas, conforme a figura a seguir:



Como podemos ver, no primeiro quadrante, tanto o x quanto o y são positivos. No segundo quadrante o x é negativo e o y é positivo. No terceiro quadrante, tanto o x quanto o y são negativos. Por fim, no quarto quadrante, o x é positivo e o y é negativo.

Escreva um programa Java que pede para o usuário informar os valores x e y de uma coordenada cartesiana e informe em qual quadrante essa coordenada se situa. Se os valores de x e y forem zero, informe que o ponto se situa na origem do plano cartesiano.

Sua saída deverá ser parecida com:

Informe o valor x da coordenada: 12
Informe o valor y da coordenada: -7
A coordenada (12,-7) está no Quarto Quadrante (+,-)
Resposta/Solução:

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

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // variáveis usadas na resolução do problema
    int x, y;
  
    // vamos pedir para o usuário informar as coordenadas
    System.out.print("Informe o valor x da coordenada: ");
    x = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o valor y da coordenada: ");
    y = Integer.parseInt(entrada.nextLine());
  
    // a coordenada está no primeiro quadrante? 
    if (x > 0 && y > 0){
      System.out.println("A coordenada (" + x + "," + 
        y + ") está no Primeiro Quadrante (+,+)");
    }
    // a coordenada está no segundo quadrante?
......



Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de Python - Ler os lados de um triângulo e informar se ele é isósceles, escaleno ou equilátero

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

Um triângulo é uma forma geométrica (polígono) composta de três lados, sendo que cada lado é menor que a soma dos outros dois lados. Assim, para que um triângulo seja válido, é preciso que seus lados A, B e C obedeçam à seguinte regra:

A < (B + C), B < (A + C) e C < (A + B).

Escreva um programa Python que leia os três lados de um triângulo e verifique se tais valores realmente formam um triângulo. Se o teste for satisfatório, informe se o triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados iguais).

Sua saída deverá ser parecida com:

Informe o primeiro lado do triângulo: 30
Informe o segundo lado do triângulo: 40
Informe o terceiro lado do triângulo: 60
O triângulo é escaleno
Resposta/Solução:

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

# método principal
def main():
  # vamos ler o primeiro lado do triângulo
  lado_a = int(input("Informe o primeiro lado do triângulo: "))
  
  # vamos ler o segundo lado do triângulo
  lado_b = int(input("Informe o segundo lado do triângulo: "))

  # vamos ler o terceiro lado do triângulo
  lado_c = int(input("Informe o terceiro lado do triângulo: "))
    
  # os lados informados formam um triângulo?
  if((lado_a < (lado_b + lado_c)) and (lado_b < (lado_a + lado_c)) 
    and (lado_c < (lado_a + lado_b))):
    # é um triângulo equilátero (todos os lados iguais)?
......



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

Exemplos Java Strings - Como remover um caractere de uma string usando o método deleteCharAt() da classe StringBuffer do Java

Quantidade de visualizações: 14946 vezes
Neste exemplo mostrarei como podemos usar o método deleteCharAt() da classe StringBuffer para remover um determinado caractere de uma palavra, frase ou texto. Observe que a string original é modificada após uma chamada a este método.

Veja o código completo para o exemplo:

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Java");
    System.out.println("Original: " + frase); 
......


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

Original: Java
Depois da remoção: Jva

Carregar Publicações Anteriores


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

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

Últimos Exercícios Resolvidos

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

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

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

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



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