![]() |
|
||||
|
|||||
Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira |
||
|
||
|
|
||
Java ::: Tratamento de Erros ::: Erros de Tempo de Execução |
Como corrigir um erro ClassCastException em Java - Como tratar a exceção ClassCastException do JavaQuantidade de visualizações: 17540 vezes |
|
A exceção ClassCastException é um erro de tempo de execução que ocorre quando tentamos fazer um cast (coerção - conversão explícita) de uma classe para outra classe diferente desta ou que não seja uma superclasse desta. Em outras palavras, casts válidos para classes e interfaces devem seguir as regras abaixo: 1) Se NovoTipo é uma classe, a classe da expressão sendo convertida deve ser do tipo NovoTipo ou herdar de NovoTipo. 2) Se NovoTipo é uma interface, a classe da expressão sendo convertida deve implementar NovoTipo. Considere o código a seguir:
public class Estudos{
public static void main(String args[]){
Object x = new Integer(0);
System.out.println((String)x);
}
}
Este código compila normalmente. Porém, ao ser executado, a seguinte mensagem de erro é exibida: Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at Estudos.main(Estudos.java:4) Esta mensagem nos informa que a classe Integer não pode sofrer um cast para String, uma vez que Integer não é e nem herda de String. Veja agora a nova versão:
public class Estudos{
public static void main(String args[]){
Object x = new Integer(0);
System.out.println((Integer)x);
}
}
Veja que agora nós estamos fazendo o cast de uma referência Object para Integer. Embora Object não seja e nem herde de Integer, o sistema de tempo de execução sabe que x guarda atualmente uma referência a um Integer: Object x = new Integer(0); |
C# ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair dias de uma data em C# usando o método AddDays() da classe DateTimeQuantidade de visualizações: 27441 vezes |
|
Em algumas situações nossos códigos precisam adicionar ou subtrair dias de uma data. Isso pode ser feito com o auxílio do método AddDays() da estrutura DateTime. Este método recebe o número de dias a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 5 dias à data atual:
static void Main(string[] args){
// vamos obter a data de hoje
DateTime hoje = DateTime.Now;
// exibe a data de hoje
System.Console.WriteLine("Hoje é {0:d}", hoje);
// vamos adicionar 5 dias à data de hoje
DateTime data_futura = hoje.AddDays(5);
// exibe a data daqui a cinco dias
System.Console.WriteLine("Daqui a 5 dias será {0:d}", data_futura);
// pausa o programa
System.Console.Write("\nPressione qualquer tecla para sair...");
Console.ReadKey();
}
É possível também subtrair dias. Para isso só precisamos fornecer um valor negativo para o método AddDays(). Veja:
static void Main(string[] args){
// vamos obter a data de hoje
DateTime hoje = DateTime.Now;
// exibe a data de hoje
System.Console.WriteLine("Hoje é {0:d}", hoje);
// vamos subtrair 7 dias da data de hoje
DateTime data_passado = hoje.AddDays(-7);
// exibe a data sete dias atrás
System.Console.WriteLine("Há 7 dias era {0:d}", data_passado);
// pausa o programa
System.Console.Write("\nPressione qualquer tecla para sair...");
Console.ReadKey();
}
Lembre-se, contudo, que o método AddDays() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. |
Ruby ::: Dicas & Truques ::: Hashes (Arrays Associativas) |
Como criar um hash em Ruby - Criação e uso de arrays associativos na linguagem RubyQuantidade de visualizações: 9568 vezes |
|
Os hashes (também chamados de arrays associativas, mapas ou dicionários) são parecidos com arrays no sentido em que são coleções indexadas de referências a objetos. Contudo, enquanto podemos indexar arrays usando inteiros, hashes podem ser indexados usando-se qualquer tipo de dados: strings, expressões regulares, inteiros, e assim por diante. Quando guardamos um valor em um hash, estamos na verdade guardando dois objetos: o índice (geralmente chamado de chave) e o valor. Os valores em um hash Ruby podem ser de qualquer tipo. Hashes em Ruby podem ser criados de duas formas: usando a notação literal ou criando-se um objeto da classe Hash. Veja como criamos um hash usando notação literal:
# cria um hash de estados e capitais
capitais = {'Goiás' => 'Goiânia', 'Mato Grosso' => 'Cuiabá',
'Paraná' => 'Curitiba'}
# exibe a capital correspondente ao estado de Mato Grosso
puts capitais['Mato Grosso']
Veja como usamos os nomes dos estados como chaves e os nomes das capitais como valores para cada um dos elementos do hash. Veja agora como criar este mesmo hash por meio da criação de um objeto da classe Hash: # cria um hash de estados e capitais capitais = Hash.new capitais['Goiás'] = 'Goiânia' capitais['Mato Grosso'] = 'Cuiabá' capitais['Paraná'] = 'Curitiba' # exibe a capital correspondente ao estado de Mato Grosso puts capitais['Mato Grosso'] |
C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle |
C++ para iniciantes - Como usar o laço for em C++Quantidade de visualizações: 23304 vezes |
O laço for é usado quando queremos executar um bloco de códigos um determinado número de vezes. Este laço é composto de três partes:
for(início; condição; incremento/decremento){
bloco de instruções
}
A parte início é executada uma única vez (na entrada do laço). Geralmente é nesta parte que declaramos e inicializamos a variável de controle. Na parte condição nós testamos a condição atual da variável de controle, para verificar se o laço pode continuar sua execução. Na parte do incremento/decremento nós alteramos o valor da variável de controle. Finalmente o bloco de instruções representa as instruções que serão executadas no laço. Veja um exemplo de laço for no qual exibimos os números de 0 a 10:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// um laço for que conta de 0 a 10
for(int i = 0; i <= 10; i++){
cout << i << "\n";
}
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Veja agora um laço for usado para exibir os números de 10 a 0:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// um laço for que conta de 10 a 0
for(int i = 10; i >= 0; i--){
cout << i << "\n";
}
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É importante observar que mais de uma expressão podem ser executadas nas partes início e incremento/decremento de um laço for. Veja um exemplo:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
// um laço for que conta de 10 a 0
for(int i = 0, x = 4; i <= 10; i++, x += 2){
cout << (i * x) << "\n";
}
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
C# ::: Dicas & Truques ::: Sistema |
Como retornar a capacidade do HD em MB ou GB em C# usando um objeto ManagementObjectQuantidade de visualizações: 9177 vezes |
|
Nesta dica mostrarei como podemos usar um objeto ManagementObject para retornar o tamanho de um HD em MB ou GB usando a linguagem C#. No exemplo eu acessei o drive C, mas você pode usar qualquer um que esteja disponível na sua máquina. Veja o código C# completo para o exemplo:
private void button2_Click(object sender, EventArgs e) {
// não esqueça de importar
// using System.Management;
// vamos criar um novo objeto ManagementObject
ManagementObject dispositivo =
new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
// vamos retornar o dispositivo
dispositivo.Get();
// agora vamos retornar o tamanho do HD
double tam = Convert.ToDouble(dispositivo["Size"]);
// convertemos para GB
tam = tam / 1024 / 1024 / 1024;
// e mostramos o resultado
textBox1.Text = "O HD tem capacidade de " + tam + " GB";
}
Ao executar este código C# nós teremos o seguinte resultado: O HD tem capacidade de 251,767574310303 GB Se você quiser o tamanho do HD em MB, basta usar: tam = tam / 1024 / 1024; Nos testes que fiz no Visual Studio 2019, não foi possível acessar o HD a partir de uma aplicação C# console, somente por meio de uma aplicação Windows Desktop. Veja a mensagem retornada: System.PlatformNotSupportedException: 'System.Management currently is only supported for Windows desktop applications.' |
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
|
GNU Octave - Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em GNU Octave |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






