Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Polyline - Polilinha

Como selecionar uma polilinha no AutoCAD e mostrar as coordenadas de suas vértices usando a AutoCAD .NET C# API

Quantidade de visualizações: 168 vezes
Em várias situações nós precisamos efetuar cálculos usando os vértices de uma polilinha. Nesta dica eu mostro como podemos pedir para o usuário selecionar uma polilinha na área de desenho do AutoCAD e mostrar as coordenadas x e y de cada um dos vértices.

No código abaixo eu trato duas formas de polilinhas no AutoCAD: a polilinha 2D Polyline e a polilinha 3D, representada pelo objeto Polyline3d. Note que as formas de se extrair os vértices desses dois objetos são completamente diferentes.

Se a polilinha for 2D, seus vértices são extraído usando-se a função GetPoint2dAt(), que retorna um objeto Point2d. Se a polilinha for 3D, ela será representada por um objeto da classe Polyline3d, e seus vértices são retornados como objetos PolylineVertex3d a partir de uma chamada à função GetObject() da classe Transaction.

Veja o código AutoCAD .NET C# API completo para o exemplo:

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;

[assembly: CommandClass(typeof(PluginEstudos.Class1))]
namespace PluginEstudos {
  public class Class1 {
    [CommandMethod("estudos")]
    public void Estudos() {
      // vamos obter o documento atual
      Document doc = Application.DocumentManager.MdiActiveDocument;
      // vamos obter a base de dados
      Database db = doc.Database;

      // vamos pedir para o usuário selecionar uma polilinha
      PromptEntityResult resultado = doc.Editor.GetEntity(
        "Selecione uma polilinha: ");

      // a seleção foi feita com sucesso
      if (resultado.Status != PromptStatus.OK) {
        Application.ShowAlertDialog("Nenhum elemento selecionado.");
        return;
      }

      // iniciamos uma transação
      using (Transaction trans = db.TransactionManager.StartTransaction()) {
        // obtemos a polilinha selecionada
        DBObject objeto = trans.GetObject(resultado.ObjectId, OpenMode.ForRead);

        // vamos testar se a polilinha é do tipo leve ou otimizada
        Polyline polilinha2d = objeto as Polyline;
        if (polilinha2d != null) {
          // vamos percorrer todos os vértices, um de cada vez
          int numero_vertices = polilinha2d.NumberOfVertices;
          for (int i = 0; i < numero_vertices; i++) {
            // vamos obter um objeto Point2d ou Point3d
            Point2d ponto = polilinha2d.GetPoint2dAt(i);
            // e escrevemos na janela de comandos
            doc.Editor.WriteMessage("\nX = " + ponto.X.ToString("0.00") +
              "; Y = " + ponto.Y.ToString("0.00"));
          }
        }
        // é uma polilinha do tipo pesada, ou heavy
        else {
          Polyline3d polilinha3d = objeto as Polyline3d;
          if (polilinha3d != null) {
            // percorremos cada um dos vértices
            foreach (ObjectId id_vertice in polilinha3d) {
              PolylineVertex3d vertice3d = (PolylineVertex3d)trans.GetObject(
                id_vertice, OpenMode.ForRead);
              // e escrevemos na janela de comandos
              doc.Editor.WriteMessage("\nX = " + vertice3d.Position.X.ToString("0.00") +
                "; Y = " + vertice3d.Position.Y.ToString("0.00"));
            }
          }
        }

        // fechamos a transação
        trans.Commit();
      }
    }
  }
}

Ao executar este código AutoCAD .NET C# API nós teremos o seguinte resultado:

Command: Selecione uma polilinha:
X = 168.91; Y = 159.91
X = 415.17; Y = 126.24
X = 317.08; Y = 24.18
X = 80.53; Y = 104.29

Link para compartilhar na Internet ou com seus amigos:

JavaScript ::: Dicas & Truques ::: Tratamento de Erros

Como retornar o nome ou tipo de exceção de um erro em JavaScript usando a propriedade name do objeto Error

Quantidade de visualizações: 6736 vezes
Em várias situações nós precisamos saber o nome do tipo de erro de tempo de execução em JavaScript. Para isso nós podemos usar a propriedade name do objeto Error.

Veja um código JavaScript completo demonstrando o seu uso:

<!doctype html>
<html>
<head>
  <title>Estudos JavaScript</title>
</head>
<body>

<script language="javascript">
  // o trecho de código a seguir vai provocar
  // um erro de tempo de execução em JavaScript
  try{
    // y não foi definido
    var x = y;
  }
  catch(e){
    document.write("Tipo do erro: " + e.name);
  }
</script>
  
</body>
</html>

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

Tipo do erro: ReferenceError

A propriedade name do objeto Error pode retornar os seguintes valores:

EvalError - Um erro provocado pela função eval.
RangeError - Um erro provocado por um número fora da faixa permitida.
ReferenceError - Uma referência ilegal provocou o erro.
SyntaxError - Um erro de sintáxe.
TypeError - Um erro provocado por uma conversão de tipos.
URIError - Provocado por um erro na função encodeURI().


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Python - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteiros

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

Escreva uma função recursiva em Python que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Sua função deverá ter a seguinte assinatura:

# função recursiva que recebe um valor e informa quantas vezes
# ele aparece no vetor também informado
def quant_repeticoes(indice, valor, vetor):
  # sua implementação aqui
Seu programa deverá solicitar ao usuário os valores do vetor e o valor a ser pesquisado.

Sua saída deverá ser parecida com:

Informe o 1 valor: 2
Informe o 2 valor: 7
Informe o 3 valor: 4
Informe o 4 valor: 7
Informe o 5 valor: 1

Informe o valor a ser pesquisado no vetor: 7
O valor informado se repete 2 vezes.
Resposta/Solução:

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

# método principal
def main():
  # vamos declarar um vetor de 10 inteiros
    valores = [0 for x in range(5)]

    # vamos pedir ao usuário que informe os valores do vetor
    for i in range(len(valores)):
      valores[i] = int(input("Informe o %d.o valor: " % ((i + 1))))
    
    # agora vamos pedir para informar o valor a ser pesquisado
    valor = int(input("\nInforme o valor a ser pesquisado no vetor: "))
    
    # e vamos ver a quantidade de repetições
    repeticoes = quant_repeticoes(0, valor, valores)
    print("O valor informado se repete {0} vezes.".format(repeticoes))

# função recursiva que recebe um valor e informa quantas vezes
# ele aparece no vetor também informado
def quant_repeticoes(indice, valor, vetor):
  if indice == len(vetor) - 1: # caso base...hora de parar a recursividade
    if vetor[indice] == valor:
      return 1 # mais um repetição foi encontrada
  else: # dispara mais uma chamada recursiva
    if vetor[indice] == valor: # houve mais uma repetição
      return 1 + quant_repeticoes(indice + 1, valor, vetor)
    else:
      return 0 + quant_repeticoes(indice + 1, valor, vetor) # não repetiu

  return 0 # só para deixar o compilador satisfeito...esta linha nunca é executada

if __name__== "__main__":
  main()



Java ::: Dicas & Truques ::: Data e Hora

Java para iniciantes - Como usar a classe Date em suas aplicações Java

Quantidade de visualizações: 13802 vezes
A classe Date pertence ao pacote java.util, e, embora muitos de seus métodos estejam em desuso (Deprecated), ainda encontraremos muito código Java que usa esta classe para trabalhar com datas e horas. Veja sua posição na hierarquia de classes Java:

java.lang.Object
  java.util.Date

Esta classe implementa as interfaces Serializable, Cloneable e Comparable<Date> e suas subclasses conhecidas são Date, Time, Timestamp (todas do pacote java.sql). As informações abaixo podem ser encontradas na documentação da classe Date.

A classe Date representa um momento específico no tempo, com uma precisão de milisegundos.

Antes do JDK 1.1, esta classe tinha duas funções adicionais. Ela permitia a interpretação de datas como valores de ano, mês, dia, hora, minuto e segundo. Também permitia a formatação e parsing de strings de datas. Infelizmente, a API para estas funções não facilitava a internacionalização. Assim, a partir do JDK 1.1, a classe Calendar deve ser usada para converter entre campos de datas e horas e a classe DateFormat deve ser usada para formatar e fazer o parsing de strings de datas. Os métodos correspondentes a estas funções estão em desuso (Deprecated) na classe Date.

Embora a classe Date tenha sido projetada para refletir a hora universal coordenada (Coordinated Universal Time - UTC), ela pode não ser capaz de fazer isso corretamente, dependendo do sistema no qual a Java Virtual Machine esteja sendo executada. A grande maioria dos sistemas operacionais modernos assume que 1 dia = 24 × 60 × 60 = 86400 segundos em todos os casos. No UTC, contudo, de dois em dois anos, aproximadamente, há um segundo extra, chamado de "leap second" (a mesma idéia do ano bissexto). O leap second é sempre adicionado como o último segundo do dia e sempre nos dias 31 de dezembro ou 30 de junho. Por exemplo, o último minuto do ano de 1995 teve 61 segundos, graças ao segundo extra que foi adicionado. A maioria dos relógios dos computadores não são precisos o suficiente para refletir a distinção do leap second.

Alguns padrões de computadores são definidos em termos da hora de Greenwich (Greenwich mean time - GMT), que é o equivalente ao Universal Time (UT). GMT é o nome "civil" para o padrão, UT é o nome "científico" para o mesmo padrão. A distinção entre UTC e UT é que UTC é baseado em um relógio atômico e UT é baseado em observações astronômicas, o que para todos os propósitos práticos não traz diferença significativa. Devido à rotação da terra não ser uniforme (ela desacelera ou acelera de formas complicadas), O UT nem sempre flui uniformente. Segundos extras (Leap seconds) são inseridos conforme necessário no UTC de forma a mantê-lo dentro dos 0.9 segundos do UT1, que é uma versão do UT com algumas correções aplicadas. Há outros sistemas de datas e horas também; por exemplo, a escala de tempo pelo sistema de posicionamento global baseado em satélite (satellite-based global positioning system - GPS) é sincronizado com o UTC mas não é ajustado para os segundos extras.

Em todos os métodos da classe Date que aceitam ou retornam valores de ano, mês, dia, hora, minuto e segundos, as seguintes representações são usadas:


  • Um ano y é representado pelo inteiro y - 1900.

  • Um mês é representado por um inteiro na faixa de 0 a 11. 0 é janeiro, 1 é fevereiro e assim por diante; assim, 11 é dezembro.

  • Um dia (dia do mês) é representado por um inteiro na faixa de 1 a 31, como estamos acostumados.

  • Uma hora é representada por um inteiro na faixa de 0 a 23. Assim, a hora da meia-noite até 1 a.m. é a hora 0 e a hora do meio-dia até 1 p.m. é a hora 12.

  • Um minuto é representado por um inteiro na faixa de 0 a 59, como estamos acostumados.

  • Um segundo é representado por um inteiro na faixa de 0 a 61; os valores 60 e 61 ocorrem somente para os segundos extras (leap seconds) e somente nas implementações Java que realmente lidam com estes segundos corretamente. Devido à forma na qual leap seconds são apresentados atualmente, é pouco provável que dois leap seconds ocorrerão no mesmo minuto, mas esta especificação segue as convenções de datas e horas do ISO C.

  • Em todos os casos, argumentos fornecidos a estes métodos não precisam necessariamente estar nas faixas indicadas; por exemplo, uma data pode ser definida como 32 de janeiro e ser interpretada como 1º de fevereiro.




VB.NET ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como copiar todos os elementos de um vetor para outro em VB.NET usando o método CopyTo() da classe Array

Quantidade de visualizações: 6969 vezes
Nesta dica eu mostro como podemos usar o método CopyTo() da classe Array do VB.NET para copiar todos os elementos de um array para um outro array.

Veja o código completo para o exemplo:

Imports System

Module Program
  Sub Main(args As String())
    ' cria um array de inteiros
    Dim valores() As Integer = {1, 2, 3, 4, 5}

    ' exibe os valores do primeiro array
    For Each valor As Integer In valores
      Console.WriteLine(valor)
    Next

    ' cria um segundo array e copia os elementos
    ' do primeiro para o segundo
    Dim valores2() As Integer = {6, 7, 8, 9, 10, 15, 20}
    valores.CopyTo(valores2, 0)
    Console.WriteLine()

    ' exibe os valores do segundo array
    For Each valor As Integer In valores2
      Console.WriteLine(valor)
    Next

    Console.WriteLine("\nPressione qualquer tecla para sair...")
    ' pausa o programa
    Console.ReadKey()
  End Sub
End Module

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

1
2
3
4
5

1
2
3
4
5
15
20


Laravel ::: Dicas de Estudo e Anotações ::: Passos Iniciais

Primeiros passos no Laravel? Como escrever sua primeira aplicação usando rotas e views - Tutorial básico de Laravel

Quantidade de visualizações: 1723 vezes
Primeiros passos no Laravel? Como escrever sua primeira aplicação usando rotas e views

Entre as perguntas mais frequentes que recebemos estão: Como aprendo Laravel? Onde encontro instruções para criar minha primeira aplicação Laravel? Existe algum tutorial básico de Laravel? Por onde começo a aprender Laravel, Tutorial de Laravel, Laravel para iniciantes, exemplos de Laravel, entre outras.

Nesta dica ajudarei você a dar os primeiros passos. Depois é só seguir as nossas dicas e truques de Laravel para começar a escrever aplicações bem interessantes.

O primeiro passo é instalar o Laravel. Se você ainda não o fez, clique aqui e aprenda a instalar o Laravel agora mesmo.

Para esta dica eu mostrarei como criar a aplicação Laravel e executá-la no servidor Apache Web Server que vem junto com a instalação do XAMPP, que inclui também o PHP e o MySQL (ou MariaDB).

Então, com o Laravel devidamente instalado e o XAMPP (na verdade é o servidor Apache Http Server) já rodando, abra uma janela de terminal e vá até o diretório htdocs do XAMPP:

C:\Users\Osmar>cd C:\xampp\htdocs

Dentro dessa pasta, dispare o seguinte comando:

C:\xampp\htdocs>laravel new escola

Se tudo correr bem, você verá uma série de mensagens indicando a criação da aplicação e o download de algumas dependências. Hora de ir pegar um cafezinho, pois essa operação é um pouco demorada mesmo.

A instalação da aplicação já finalizou? Hora de testar. Abra seu navegador no endereço http://localhost/escola/public e você verá o seguinte resultado:



Veja que o Laravel já criou para nós, automaticamente, uma rota para a página inicial da aplicação e já criou também uma view. Vamos começar entendendo como a rota foi criada. Vá até o diretório C:\xampp\htdocs\escola\routes e abra o arquivo web.php no seu editor favorito. Você verá o seguinte código:

<?php

use Illuminate\Support\Facades\Route;

/*
|-----------------------------------------
| Web Routes
|-----------------------------------------
|
| Here is where you can register web routes for
| your application. These routes are loaded by the
| RouteServiceProvider within a group which
| contains the "web" middleware group. 
| Now create something great!
*/

Route::get('/', function(){
  return view('welcome');
});

Vamos alterar a rota criada automaticamente para a versão abaixo:

Route::get('/', function(){
  return view('pagina_inicial');
});

Note que apenas troquei return view('welcome'); por return view('pagina_inicial');. Agora abra o endereço http://localhost/escola/public novamente. Agora teremos um erro:

InvalidArgumentException
View [pagina_inicial] not found.
http://localhost/escola/public/
pagina_inicial was not found.
Are you sure the view exists and is a .blade.php file?

Isso aconteceu porque não temos uma view chamada pagina_inicial. Vamos criá-la agora. Salve o código abaixo com o nome de pagina_inicial.blade.php no diretório C:\xampp\htdocs\escola\resources\views.

<html>
<head>
  <title>Controle Escolar</title>
</head>
<body>

<h1>Esta é a página inicial</h1>

</body>
</html>

Agora abra o endereço http://localhost/escola/public e teremos o resultado abaixo:



Viu que maravilha? Agora, experimente acrescentar mais uma rota ao web.php:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function(){
  return view('pagina_inicial');
});

Route::get('/cursos', function(){
  return view('nossos_cursos');
});

?>

Abra seu navegador no endereço http://localhost/escola/public/cursos e verá que o Laravel vai reclamar da inexistência da view nossos_cursos.blade.php. Crie essa view e faça o teste novamente. Agora é só criar algo fantástico em Laravel.


Veja mais Dicas e truques de Laravel

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

Anúncio Patrocinado
Chat de Sexo - Site para adultso - Maiores de 18 anos. Converse com pessoas de todo o Brasil, de forma discreta e anônima


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