Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD e VBA
PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

C# ::: Coleções (Collections) ::: List<T>

Como usar a classe genérica List<T> do C# em suas aplicações

Quantidade de visualizações: 15905 vezes
A classe genérica List<T> da linguagem C# representa uma lista fortemente tipada de objetos que podem ser acessados por índices. Esta classe fornece métodos para pesquisar, ordenar e manipular seus elementos. Veja sua posição na hierarquia de classes da plataforma .NET:

System.Object
  System.Collections.Generic.List<T>
    System.ServiceModel.Install.Configuration.
  ServiceModelConfigurationSectionCollection
    System.ServiceModel.Install.Configuration.
  ServiceModelConfigurationSectionGroupCollection
    System.Workflow.ComponentModel.ActivityCollection
    System.Workflow.Activities.WorkflowRoleCollection
    System.Workflow.Activities.OperationParameterInfoCollection
    System.Workflow.ComponentModel.Design.
  ActivityDesignerGlyphCollection
    System.Workflow.Runtime.Tracking.ExtractCollection
    System.Workflow.Runtime.Tracking.TrackingAnnotationCollection
    System.Workflow.Runtime.Tracking.TrackingConditionCollection
    System.Workflow.Runtime.Tracking.ActivityTrackingLocationCollection
    System.Workflow.Runtime.Tracking.UserTrackingLocationCollection
    System.Workflow.Runtime.Tracking.ActivityTrackPointCollection
    System.Workflow.Runtime.Tracking.UserTrackPointCollection
    System.Workflow.Runtime.Tracking.WorkflowTrackPointCollection

Esta classe implementa também as interfaces IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection e IEnumerable.

A classe List<T> é a equivalente genérica da classe ArrayList. Ela implementa a interface genérica IList<T> usando um array (matriz) cujo tamanho é dinamicamente aumentado de acordo com a necessidade. Esta classe usa tanto um comparador de igualdade quanto um de ordenação.

Os métodos tais como Contains(), IndexOf(), LastIndexOf() e Remove() usam um comparador de igualdade para os elementos da lista. O comparador de igualdade padrão para o tipo T é definido segundo as seguintes regras: Se o tipo T implementar a interface genérica IEquatable<T>, então o comparador de igualdade é o método Equals(T) dessa interface. Caso contrário, o comparador de igualdade padrão é Object.Equals(Object).

Os métodos tais como BinarySearch() e Sort() usam um comparador de ordenação para os elementos da lista. O comparador padrão para o tipo T é definido da seguinte forma: Se o tipo T implementar a interface genérica IComparable<T>, então o comparador padrão é o método CompareTo(T) dessa interface. Caso contrário, se o tipo T implementar a interface não-genérica IComparable, então o comparador padrão é o método CompareTo(Object) dessa interface. Se o tipo T não implementar nenhuma destas duas interfaces, então não haverá comparador padrão, e um comparador ou delegate de comparação deve ser fornecido explicitamente.

Uma lista List<T> não fornece garantias quanto à sua ordenação. Devemos ordená-la por conta própria antes de efetuar algumas operações (tais como BinarySearch) que exigem que a List<T> esteja ordenada. Os elementos em uma coleção do tipo List<T> podem ser acessados usando índices (que começam a partir de 0). Uma List<T> aceita o valor null como valor válido para tipos referência e aceita elementos duplicados.

Em relação à performance, a documentação do .NET afirma que, embora List<T> e ArrayList possuam funcionalidade semelhante, a classe List<T> possui uma performance melhor na maioria dos casos, além de ser type safe (oferece segurança de tipos).

Veja um trecho de código no qual criamos uma List<T> de inteiros, inserimos alguns valores e usamos o laço foreach para percorrer a lista e exibir os valores dos elementos:

static void Main(string[] args){
  // vamos criar um objeto da classe List<T>
  List<int> valores = new List<int>();

  // vamos inserir três valores na lista
  valores.Add(5);
  valores.Add(2);
  valores.Add(9);

  // vamos usar o laço foreach para percorrer os elementos
  // na lista
  foreach(int v in valores){
    Console.WriteLine(v);    
  }

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



Python ::: Python para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular a distância entre dois pontos no plano em Python - Python para Geometria Analítica e Álgebra Linear

Quantidade de visualizações: 10947 vezes
Como calcular a Distância Euclidiana entre dois pontos usando Python.

Em várias aplicações envolvendo geometria, principalmente no desenvolvimento de jogos em Python, é comum nos depararmos com a necessidade de calcular a distância entre dois pontos A e B. Nessa dica mostrarei como efetuar esse cálculo no R2, ou seja, no plano. Em outra dica eu abordo o cálculo no R3 (espaço).

Comece analisando a imagem abaixo:



Veja que temos um ponto A (x = 3; y = 6) e um ponto B (x = 9; y = 4). Para determinarmos a distância entre esses dois pontos no plano cartesiano, temos que realizar a análise tanto no sentido do eixo das abscissas (x) quanto no do eixo das ordenadas (y).

Veja a fórmula:

\[d_{AB} = \sqrt{\left(x_b - x_a\right)^2 + \left(y_b - y_a\right)^2}\]

Agora, jogando os valores dos dois pontos da fórmula nós teremos:

\[d_{AB} = \sqrt{\left(9 - 3\right)^2 + \left(6 - 4\right)^2}\]

Que resulta em 6,32 (aproximadamente).

E agora veja o código Python completo que lê as coordenadas dos dois pontos e mostra a distância entre eles:

import math

# função que permite calcular a distância
# entre dois pontos no plano (R2)
def distancia2d(x1, y1, x2, y2):
  a = x2 - x1
  b = y2 - y1
  c = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
  return c

# função principal do programa
def main():
  # vamos ler os dados do primeiro ponto
  x1 = float(input("Informe o x do primeiro ponto: "))
  y1 = float(input("Informe o y do primeiro ponto: "))
    
  # vamos ler os dados do segundo ponto
  x2 = float(input("Informe o x do segundo ponto: "))
  y2 = float(input("Informe o y do segundo ponto: "))
    
  # vamos obter a distância entre eles
  distancia = distancia2d(x1, y1, x2, y2)
  print("Distância entre os dois pontos: %0.2f" % distancia);
  
if __name__== "__main__":
  main()

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

Informe o x do primeiro ponto: 3
Informe o y do primeiro ponto: 6
Informe o x do segundo ponto: 9
Informe o y do segundo ponto: 4
Distância entre os dois pontos: 6.32


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

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

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

int rename(const char *oldname, const char *newname);


Se o diretório for renomeado 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) EINVAL - Invalid argument - Os nomes dos diretórios contém caracteres inválidos;

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 no qual renomeamos um diretório:

#include <iostream>

using namespace std;

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

  // vamos testar se o diretório for renomeado com sucesso
  if(rename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

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

É possível usar a versão Unicode de rename() ou _rename(). O método _wrename, também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:

#include <iostream>

using namespace std;

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

  // vamos testar se o diretório for renomeado com sucesso
  if(_wrename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

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

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

Diretório renomeado com sucesso


Python ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o comprimento da hipotenusa em Python dadas as medidas do cateto oposto e do cateto adjascente

Quantidade de visualizações: 1766 vezes
Nesta dica mostrarei como é possível usar a linguagem Python para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos a fazer a converter esta fórmula para código Python. Veja:

# vamos importar o módulo Math
import math as math

def main():
  a = 20 # medida do cateto oposto
  b = 30 # medida do cateto adjascente
  
  # agora vamos calcular o comprimento da hipotenusa
  c = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
 
  # e mostramos o resultado
  print("O comprimento da hipotenusa é: %f" % c)
  
if __name__== "__main__":
  main()

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

O comprimento da hipotenusa é: 36.055513

Como podemos ver, o resultado retornado com o código Python confere com os valores da imagem apresentada.


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 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
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

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


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