C# ::: Coleções (Collections) ::: List<T> |
Como usar a classe genérica List<T> do C# em suas aplicaçõesQuantidade de visualizações: 16004 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();
}
|
Java ::: Dicas & Truques ::: Data e Hora |
Como validar uma data em Java usando a classe GregorianCalendarQuantidade de visualizações: 13631 vezes |
Esta dica mostra a você como validar uma data em Java usando a classe GregorianCalendar. Veja que estamos usando o método set() para atribuir valores aos campos ano, mês e dia. Contudo, o valor para o dia está incorreto. Desta forma, ao chamarmos o método getTime() uma exceção do tipo IllegalArgumentException será lançada. Veja o código:
import java.util.*;
public class Estudos{
public static void main(String args[]){
try{
GregorianCalendar data = new GregorianCalendar();
data.setLenient(false);
data.set(GregorianCalendar.YEAR, 2008); // ano
data.set(GregorianCalendar.MONTH, 11); // mês
// dia inválido
data.set(GregorianCalendar.DATE, 32);
// a validação da data ocorre aqui
Date temp = data.getTime();
}
catch(Exception e){
System.out.println("Data inválida.");
e.printStackTrace();
}
}
}
Ao executarmos este código teremos o seguinte resultado: Data inválida. java.lang.IllegalArgumentException: DAY_OF_MONTH at java.util.GregorianCalendar.computeTime(Unknown Source) at java.util.Calendar.updateTime(Unknown Source) at java.util.Calendar.getTimeInMillis(Unknown Source) at java.util.Calendar.getTime(Unknown Source) at Estudos.main(Estudos.java:14) |
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar em Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 1000 vezes |
![]() O cálculo e dimensionamento de pilares, sejam pilares de canto, extremidade ou intermediários, sempre seguem alguns passos cujas ordens são muito importantes, pois os dados de entrada de um passo podem vir de um ou mais passos anteriores. Em dicas anteriores do uso da linguagem Python no cálculo de pilares eu mostrei como calcular os esforços solicitantes majorados em pilares e também como calcular o índice de esbeltez de um pilar nas direções x e y. Nesta dica mostrarei como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar. Estes dados são muito importantes para a aplicação das fórmulas que embasam a área de aço a ser usada no pilar. Note que a Excentricidade Mínima de 1ª Ordem pode ser desprezada no caso de pilares intermediários (também chamados pilares de centro). O Momento Fletor Mínimo é o momento mínimo que deve ser considerado, mesmo em pilares nos quais a carga está centrada, e é calculado por meio da seguinte fórmula: \[M_\text{1d,min} = Nd \cdot (1,5 + (0,03 \cdot h) \] Onde: M1d,min é o momento fletor mínimo na direção x ou y em kN.cm. Nd são os esforços solicitantes majorados em kN. h é a dimensão do pilar na direção considerada (x ou y) em cm. A Excentricidade Mínima de 1ª Ordem do pilar pode ser calculada por meio da fórmula: \[e_\text{1,min} = \frac{M_\text{1d,min}}{Nd} \] Onde: e1,min é excentricidade mínima de 1ª ordem na direção escolhida. Nd são os esforços solicitantes majorados em kN. Note que, a exemplo do momento fletor mínimo, a excentricidade mínima de 1ª ordem também deve ser calculada nas direções x e y do pilar. Vamos ao código Python agora? Veja que o código pede para o usuário informar as dimensões do pilar nas direções x e y em centímetros, a carga total que chega ao pilar em kN e mostra o momento fletor mínimo e a excentricidade mínima de 1ª ordem no pilar, tanto na direção x quanto na direção y:
# método principal
def main():
# vamos pedir as dimensões do pilar
hx = float(input("Informe a dimensão do pilar na direção x (em cm): "))
hy = float(input("Informe a dimensão do pilar na direção y (em cm): "))
# vamos pedir a carga total no pilar em kN
Nk = float(input("Informe a carga total no pilar (em kN): "))
# vamos obter o menor lado do pilar (menor dimensão da seção transversal)
if (hx < hy):
b = hx
else:
b = hy
# agora vamos calcular a área do pilar em centímetros quadrados
area = hx * hy
# a área está de acordo com a norma NBR 6118 (ABNT, 2014)
if (area < 360):
print("A área do pilar não pode ser inferior a 360cm2")
return
# vamos calcular a força normal de projeto Nd
yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1
yf = 1.4 # regra geral para concreto armado
Nd = yn * yf * Nk
# e agora vamos calcular o momento fletor mínimo na direção x do pilar
M1d_min_x = Nd * (1.5 + (0.03 * hx))
# e agora vamos calcular o momento fletor mínimo na direção y do pilar
M1d_min_y = Nd * (1.5 + (0.03 * hy))
# agora vamos calcular a excentricidade mínima de 1ª ordem na direção x do pilar
e1x_min = M1d_min_x / Nd
# e finalmente a excentricidade mínima de 1ª ordem na direção y do pilar
e1y_min = M1d_min_y / Nd
# e mostramos os resultados
print("\nO momento fletor mínimo na direção x é: {0} kN.cm".format(
round(M1d_min_x, 2)))
print("O momento fletor mínimo na direção y é: {0} kN.cm".format(
round(M1d_min_y, 2)))
print("A excentricidade mínima de 1ª ordem na direção x é: {0} cm".format(
round(e1x_min, 2)))
print("A excentricidade mínima de 1ª ordem na direção y é: {0} cm".format(
round(e1y_min, 2)))
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: Informe a dimensão do pilar na direção x (em cm): 40 Informe a dimensão do pilar na direção y (em cm): 19 Informe a carga total no pilar (em kN): 841.35 O momento fletor mínimo na direção x é: 3180.3 kN.cm O momento fletor mínimo na direção y é: 2438.23 kN.cm A excentricidade mínima de 1ª ordem na direção x é: 2.7 cm A excentricidade mínima de 1ª ordem na direção y é: 2.07 cm |
Java ::: Pacote java.lang ::: StringBuffer |
Java do básico ao avançado - Como usar o método append() para adicionar mais conteúdo ao final de um StringBufferQuantidade de visualizações: 9866 vezes |
|
O método append() da classe StringBuffer se torna útil quando precisamos adicionar mais conteúdo ao final de um objeto desta classe. Este método possui, no Java 7, as seguintes sobrecargas: public StringBuffer append(Object obj) public StringBuffer append(String str) public StringBuffer append(StringBuffer sb) public StringBuffer append(CharSequence s) public StringBuffer append(CharSequence s, int start, int end) public StringBuffer append(char[] str) public StringBuffer append(char[] str, int offset, int len) public StringBuffer append(boolean b) public StringBuffer append(char c) public StringBuffer append(int i) public StringBuffer append(long lng) public StringBuffer append(float f) public StringBuffer append(double d) Note que em todas as sobrecargas do método, o retorno é um objeto da classe StringBuffer. Mas, não é um novo objeto StringBuffer. É uma referência ao objeto StringBuffer já existente. Veja um exemplo no qual usamos este método para adicionar mais duas palavras ao conteúdo do StringBuffer:
package estudos;
public class Estudos{
public static void main(String[] args) {
// um StringBuffer contendo uma frase
StringBuffer frase = new StringBuffer("Gosto muito de programar");
// vamos adicionar mais duas palavras ao final do StringBuffer
frase.append(" em");
frase.append(" Java");
// agora mostramos o resultado
System.out.println(frase);
System.exit(0);
}
}
Ao executarmos este código nós teremos o seguinte resultado: Gosto muito de programar em Java |
Nossas 20 dicas & truques de programação mais populares |
|
C# - Como retornar o tamanho do texto de um TextBox em C# Windows Forms usando a propriedade TextLength VB.NET - Como retornar a versão do .NET a partir de seus códigos VB.NET usando Environment.Version.ToString() |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Exercícios Resolvidos de Java - Como converter de binário para decimal em Java usando o laço for |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





