Dúvidas, comentários e doaçoes: +55 62 9 8513 2505

Planilha de Dimensionamento de Tubulações Hidráulicas Água Fria e Água Quente Completa
Nossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes.

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

Exercício Resolvido de Dart - Escreva um programa Dart para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no array

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

Dado o seguinte vetor de inteiros:

// vamos declarar e construir um vetor (List) de 8 inteiros
List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9];
Escreva um programa Dart para mover todos os zeros para o final do vetor, ou seja, para a direita, sem alterar a ordem dos elementos diferentes de zero já presentes no array e sem criar um vetor adicional ou temporário.

Sua saída deverá ser parecida com:

Vetor na ordem original:

0   3   0   5   7   4   0   9   

Vetor com os zeros deslocados para o final:

3   5   7   4   9   0   0   0
Resposta/Solução:

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

// Vamos importar a biblioteca dart:io
import "dart:io";

void main(){
  // vamos declarar e construir um vetor (List) de 8 inteiros
  List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9];
    
  // vamos mostrar o vetor na ordem original
  print("Vetor na ordem original:\n");
  for(int i = 0; i < valores.length; i++){
    stdout.write("${valores[i]}   ");
  }
    
  // vamos inicializar j como 0 para que ele aponte para
  // o primeiro elemento do vetor
  int j = 0;
    
  // agora o laço for percorre todos os elementos do vetor,
  // incrementanto a variável i e deixando o j em 0
  for(int i = 0; i < valores.length; i++){
    // encontramos um valor que não é 0
    if(valores[i] != 0){
      // fazemos a troca entre os elementos nos índices
      // i e j
      int temp = valores[i];
      valores[i] = valores[j];
      valores[j] = temp;
      // e avançamos o j para o elemento seguinte
      j++;
    }
  }
    
  // agora mostramos o resultado
  print("\n\nVetor com os zeros deslocados para o final:\n");
  for(int i = 0; i < valores.length; i++){
    stdout.write("${valores[i]}   ");
  }
}

Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes.


Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Java Reflection - Como obter um objeto Class usando os métodos getClass() e forName() da classe Class da linguagem Java

Quantidade de visualizações: 11272 vezes
Uma das tarefas mais básicas que devemos fazer quando estamos usando reflexão em Java, é obter um objeto Class. Uma vez que tenhamos uma instância de Class, podemos obter várias informações sobre uma classe, até mesmo manipulá-la. Nesta dica veremos como usar o método getClass() para obter um objeto Class. Esta forma de obter um objeto Class é frequentemente útil em situações nas quais temos uma instância de uma classe, mas não sabemos a qual classe esta instância pertence (instanceOf).

Há várias formas de se obter um objeto Class. Se você tiver uma classe para a qual o nome de tipo é conhecido em tempo de compilação, há uma forma ainda mais fácil de se obter uma intância da classe. Só precisamos usar a palavra chave do compilador .class. Veja:

Class classe = JButton.class;

Se o nome da classe não foi conhecido em tempo de compilação, mas estiver disponível em tempo de execução (runtime), podemos usar o método forName() para obter um objeto Class. O código a seguir mostra como criar um objeto Class associado à classe javax.swing.JPanel:

try{
  Class classe = Class.forName("javax.swing.JPanel");
}
catch(ClassNotFoundException e){
  // trate os erros aqui
}

Podemos usar também o método getSuperClass() em um objeto Class para obter o objeto Class representando a superclasse da classe que está sofrendo introspecção. O trecho de código a seguir mostra como o objeto classe1 reflete a classe JTextField, e classe2 reflete a classe JTextComponent, uma vez que esta classe é a superclasse de JTextField:

JTextField txtNome = new JTextField();
Class classe1 = txtNome.getClass();
Class classe2 = classe1.getSuperclass();

Esta dica foi revisada e atualizada para o Java 8.


Delphi ::: Dicas & Truques ::: Rotinas de Conversão

Como converter strings em valores TDateTime usando as funções StrToDate() e StrToDateDef() do Delphi

Quantidade de visualizações: 19103 vezes
A função StrToDate() da unit SysUtils é usada quando queremos converter strings em valores TDateTime. No Delphi 2009 esta função possui duas assinaturas:

function StrToDate(const S: string): TDateTime; overload;
function StrToDate(const S: string; const FormatSettings: 
  TFormatSettings): TDateTime; overload;


A primeira versão de StrToDate() recebe uma string contendo uma data e retorna um objeto TDateTime. Veja o seguinte trecho de código:

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
begin
  // vamos converter a data 22/02/2005
  data := '22/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, uma exceção do tipo EConvertError será
  // disparada (lançada)
  try
    data2 := StrToDate(data);
    ShowMessage(DateTimeToStr(data2));
  except
    on e: EConvertError do
      ShowMessage('Não foi possível efetuar a conversão: ' +
        e.Message);
  end;
end;


Note que a função StrToDate() lançará uma exceção do tipo EConvertError se a string não possuir uma data válida. Os valores de strings representando datas válidas incluem mês/dia/ano, dia/mês/ano e ano/mês/dia. A ordem de dia, mês e ano é determinada pela variáve global ShortDateFormat. Se fornecermos valores apenas para o dia e o mês a função incluirá o ano atual. Não podemos esquecer a barra de separação de datas. Se seu aplicativo foi desenvolvido para rodar em outras localidades, obtenha o separador de datas por meio da variável global DateSeparator.

A primeira versão da função StrToDate() não é segura em relação a threads (thread-safe) devido ao uso de informações de localização contidas em variáveis globais, ou seja, se uma thread modificar os valores de tais variáveis, código sendo executado em outras threads sofrerão as consequencias. Para evitar isso podemos usar a segunda versão de StrToDate(), que usa um objeto FormatSettings para guardar as informações de localização. Veja um exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
  formato: TFormatSettings;
begin
  // vamos converter a data 22/02/2005
  data := '22/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, uma exceção do tipo EConvertError será
  // disparada (lançada)
  try
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formato);
    data2 := StrToDate(data, formato);
    ShowMessage(DateTimeToStr(data2));
  except
    on e: EConvertError do
      ShowMessage('Não foi possível efetuar a conversão: ' +
        e.Message);
  end;
end;

A função StrToDateDef() é similar à função StrToDate(). A diferença é que, se a string possuir uma data inválida, a função StrToDateDef() retorna uma data padrão, ou seja, não haverá nenhuma exceção atirada. Veja:

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
begin
  // vamos converter a data 2s2/02/2005 (inválida)
  data := '2s2/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, a data atual será retornada
  data2 := StrToDateDef(data, Now);
  ShowMessage(DateTimeToStr(data2));
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


C ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como usar um ponteiro para acessar e alterar o valor de mais de uma variável do tipo int usando a linguagem C

Quantidade de visualizações: 10561 vezes
Esta dica mostra a você como podemos usar apenas um ponteiro para acessar e manipular os valores de três variáveis do tipo int. Veja o uso do símbolo "&" para acessar o endereço de uma variável e "*" (operador de indireção) para acessar o valor da variável apontada pelo ponteiro.

Observe o código completo para o exemplo:

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
  // declara e inicializa três variáveis
  int a = 23;
  int b = 40;
  int c = 3;
 
  // exibe seus valores
  printf("a = %d, b = %d, c = %d\n\n", a, b, c);
 
  // declara um ponteiro para uma variável do tipo int
  int *p;
 
  // aponta para a variável "a" e altera seu valor
  p = &a;
  *p = 12;
 
  // aponta para a variável "b" e altera seu valor
  p = &b;
  *p = 695;
 
  // aponta para a variável "c" e altera seu valor
  p = &c;
  *p = 90;
 
  // exibe os novos valores das variáveis
  printf("a = %d, b = %d, c = %d\n\n", a, b, c);
 
  system("PAUSE");
  return 0;
}

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

a = 23, b = 40, c = 3
a = 12, b = 695, c = 90
Pressione qualquer tecla para continuar...


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

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.


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