Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Internet, LAN e E-Mail

Internet, Rede e E-Mail - Exercício Resolvido 2 - Desafio de Programação Resolvido em Java

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

Escreva um programa Java console ou GUI que permita varrer as portas de 0 até 1024 na máquina local e informar quais portas possuem algum serviço ouvindo requisições. Por exemplo, ao executar seu código, um resultado parecido com o que temos abaixo pode ser reproduzido:

Pesquisando pela porta: 23
Pesquisando pela porta: 24
Pesquisando pela porta: 25
Há um servidor na porta 25 da máquina localhost
Pesquisando pela porta: 26
Pesquisando pela porta: 27 
Dica: A forma mais simples de realizar esta tarefa é usando a classe Socket.

Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Main {
  public static void main(String[] args) {
    Socket socket; // vamos declarar um objeto da classe Socket
    String host = "localhost"; // define o nome da máquina host

    // vamos varrer as portas que vão de 0 até 1024 (demora um pouco)
    for (int i = 0; i < 1024; i++) {
      try {
        System.out.println("Pesquisando pela porta: " + i);
        // vamos tentar construir um soquete nesta porta
        socket = new Socket(host, i);
        System.out.println("Há um servidor na porta " + i + " da máquina " + host);
      }
      catch (UnknownHostException e) { // não foi possível encontrar a máquina host
        System.out.println("Não foi possível encontrar a máquina host: " + e);
        break;
      }
      catch (IOException e) {
        // não há um servidor nesta porta...vamos ficar em silêncio
      }
    }
  }
}

Veja que, neste exercício, podemos ter o surgimento de duas exceções: UnknownHostException (a máquina informada não pôde ser encontrada) e IOException (houve erro de entrada e/ou saída). Por esta razão, é uma boa idéia envolver o código em um bloco try...catch.

Link para compartilhar na Internet ou com seus amigos:

Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Portugol - Faça um algoritmo em Portugol que leia 9 números inteiros, guarde-os em uma matriz 3x3 e mostre os números pares

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

Faça um algoritmo em Portugol que leia 9 números inteiros e guarde-os em uma matriz 3x3. Imprima a matriz no formato tabular, usando a melhor formatação que você conseguir. Em seguida, percorra a matriz novamente e imprima somente os números que são pares, todos na mesma linha e separados por espaço.

Sua saída deverá ser parecida com:

Linha 1 e coluna 1: 8
Linha 1 e coluna 2: 1
Linha 1 e coluna 3: 5
Linha 2 e coluna 1: 3
Linha 2 e coluna 2: 9
Linha 2 e coluna 3: 30
Linha 3 e coluna 1: 7
Linha 3 e coluna 2: 23
Linha 3 e coluna 3: 10

Valores na matriz

    8     1     5 
    3     9    30 
    7    23    10 

Os valores pares são: 8 30 10
Resposta/Solução:

Veja a resolução completa para o exercício em Portugol, comentada linha a linha (fiz a resolução no Portugol Webstudio):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// Um algoritmo que lê uma matriz 3x3
programa {
  funcao inicio() {
    // variáveis usadas na resolução do problema
    inteiro matriz[3][3]
    inteiro i, j

    // vamos pedir para o usuário informar os valores
    // dos elementos da matriz, uma linha de cada vez
    para (inteiro i = 0; i < 3; i++) { 
      para (inteiro j = 0; j < 3; j++) {
        escreva("Linha ", (i + 1), " e coluna ", (j + 1), ": ")
        leia(matriz[i][j])
      }
    }

    // vamos mostrar a matriz da forma que ela foi informada
    escreva("\nValores na matriz:\n\n")
    para (inteiro i = 0; i < 3; i++) {
      para (inteiro j = 0; j < 3; j++) {
        escreva(matriz[i][j], "   ")
      }
      // passa para a próxima linha da matriz
      escreva("\n")
    }

    // agora vamos percorrer a matriz novamente e mostrar
    // apenas os valores pares
    escreva("\nOs valores pares são: ")

    para (inteiro i = 0; i < 3; i++) {
      para (inteiro j = 0; j < 3; j++) {
        // é um número par?
        se (matriz[i][j] % 2 == 0) {
          escreva(matriz[i][j], "  ")
        }
      }
    }
  }
}



C++ Builder ::: VCL - Visual Component Library ::: TEdit

Como obter o tamanho do texto de um TEdit usando a função SendMessage() da API do Windows e a mensagem WM_GETTEXTLENGTH usando C++ Builder

Quantidade de visualizações: 5786 vezes
Embora o C++ Builder já nos forneça as ferramentas necessárias para obter a quantidade de caracteres contidos em um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_GETTEXTLENGTH.

A função SendMessage() da API do Windows possui a seguinte assinatura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

LRESULT SendMessage(          
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

Note que precisamos informar o HWND (parâmetro hWnd) para a caixa de texto e a mensagem que será enviada ao controle. Os valores para os parâmetros wParam e lParam devem ser 0 (zero). Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)
{
  // vamos obter o tamanho do texto de um TEdit usando a função
  // SendMessage() e a mensagem WM_GETTEXTLENGTH
  int tam = SendMessage(Edit1->Handle, WM_GETTEXTLENGTH, 0, 0);

  // vamos mostrar o resultado
  ShowMessage("O Edit contém " + IntToStr(tam) + " caracteres.");
}

Ao executar este exemplo você terá um mensagem com um texto parecido com:

O Edit contém 10 caracteres.


Delphi ::: Win32 API (Windows API) ::: Processos

Como usar o Delphi para verificar se um determinado processo do Windows está sendo executado

Quantidade de visualizações: 19164 vezes
Em algumas situações precisamos verificar se um determinado processo está sendo executado, ou seja, gostaríamos de saber se o executável "programa.exe" está carregado na memória e efetuar alguma tarefa se o teste resultar satisfatório. Nesta dica eu mostro como isso pode ser feito.

O primeiro passo é acrescentar a unit TlHelp32 na cláusula uses do seu formulário. Esta unit contém algumas funções, tipos e definições úteis para se trabalhar com processos acessando a API do Windows.

Uma vez importada a unit TlHelp32, coloque a função abaixo na seção implementation de seu formulário:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// função personalizada que permite verificar se um determinado
// processo está sendo executado
function isProcessRunning(exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
    begin
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

Agora, para testar a função, coloque o código abaixo no evento Click de um botão:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm3.Button1Click(Sender: TObject);
begin
  if isProcessRunning('notepad.exe') then
    ShowMessage('O processo está sendo executado')
  else
    ShowMessage('O processo NÃO está sendo executado');
end;

Aqui nós estamos testando se o processo "notepad.exe" está sendo executado. Uma melhoria neste código seria listar todos os processos em execução ou listar as cópias em execução de um mesmo processo.


Revit C# ::: Dicas & Truques ::: Colunas e Pilares

Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# API

Quantidade de visualizações: 112 vezes
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação.

Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos.

O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit.

De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar.

O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação.

Veja o código Revit C# API completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
 
namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // vamos obter uma referência ao Document ativo
      Document doc = this.ActiveUIDocument.Document;
      UIDocument uidoc = this.ActiveUIDocument; 
      
      // agora mostramos uma mensagem para o usuário selecionar uma
      // coluna ou pilar
      TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
        
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
      
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element,
        "Selecione uma coluna ou pilar");
      
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        // vamos obter o elemento selecionado a partir da
        // referência
        FamilyInstance coluna = uidoc.Document.GetElement(selecionado) 
          as FamilyInstance;
        // vamos obter o elemento BoundingBoxXYZ
        BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
         
        // vamos obter as informações da BoundingBoxXYZ
        // primeiro o ponto mínimo (canto esquerdo inferior e
        // a parte de trás da caixa delimitadora)
        XYZ pontoMinimo = bounding.Min;
        // agora o ponto máximo (canto direito superior e
        // a parte da frente da caixa delimitadora)
        XYZ pontoMaximo = bounding.Max;
        
        // agora obtemos o ponto central da coluna         
        XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
        // construímos a linha que servirá de eixo de rotação
        Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
        // definimos o ângulo de rotação em graus        
        double angulo_rotacao_graus = 45;
        // convertemos para radianos
        double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);        
        
        // iniciamos a transação
        Transaction transacao = new Transaction(doc);
        transacao.Start("Como rotacionar colunas e pilares no Revit");
        
        // rotacionamos a coluna ou pilar
        ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
          angulo_rotacao_radianos);
        
        // fazemos o commit da transação
        transacao.Commit();      
     
        // e mostramos o resultado
        TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
      }
    }
      
    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }
 
    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}



Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como retornar o índice da coluna da célula atual em um TDBGrid do Delphi

Quantidade de visualizações: 9832 vezes
Em algumas situações precisamos obter o índice da coluna da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Col da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid.

Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da coluna da célula atual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm3.Button3Click(Sender: TObject);
var
  indice: Integer;
begin
  // vamos obter o índice da coluna da célula atual
  indice := TStringGrid(DBGrid1).Col;
  ShowMessage('O índice da coluna da célula atual é: ' +
    IntToStr(indice));
end;

Execute o código e clique no botão. Você verá uma mensagem parecida com:

"O índice da coluna da célula atual é: 3".

Lembre-se de que o índice da coluna fixa do DBGrid é 0.

Esta dica foi escrita e testada no Delphi 2009.


Desafios, Exercícios e Algoritmos Resolvidos de Delphi

Veja mais Dicas e truques de Delphi

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

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á 67 usuários muito felizes estudando em nosso site.