![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa 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. |
||
Você está aqui: Cards de |
||
|
||
|
|
||
C++ ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como criar uma classe C++ completa, incluindo os arquivos de definição .h e implementação .cppQuantidade de visualizações: 28655 vezes |
|
Esta dica o guiará passo-a-passo na criação de uma classe C++, incluindo os arquivos .h e .cpp. Para isso vamos usar o Dev-C++ (acreditamos que o procedimento é parecido com outros compiladores). Vamos começar com o arquivo de definição. Com um projeto já iniciado no Dev-C++, vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes. Salve o arquivo com o nome de "pessoa.h" e inclua nele o seguinte código:
/*
Código de definição: pessoa.h
*/
#ifndef PESSOA_H
#define PESSOA_H
#include <string>
using std::string;
class Pessoa{
public:
void setNome(string nome);
void setIdade(int idade);
string getNome();
int getIdade();
private:
string nome;
int idade;
};
#endif
Salve este código como pessoa.h no diretório de sua aplicação C++. Este é o arquivo de definição da classe. É nele que declaramos os membros públicos e privados, incluindo as assinaturas dos métodos da classe. Passemos agora ao arquivo de implementação. Novamente vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes. Salve o novo arquivo como "pessoa.cpp" e inclua nele o seguinte conteúdo:
/*
Código de implementação: pessoa.cpp
*/
#include "pessoa.h"
void Pessoa::setNome(string nome){
this->nome = nome;
}
void Pessoa::setIdade(int idade){
this->idade = idade;
}
string Pessoa::getNome(){
return this->nome;
}
int Pessoa::getIdade(){
return this->idade;
}
Salve este código como pessoa.cpp no diretório de sua aplicação C++. Este é o arquivo de implementação dos métodos da classe Pessoa. Veja o uso da palavra-chave this quando queremos referenciar o objeto atual da classe e, é claro, evitar ambiguidade entre o nome das variáveis da classe e os nomes dos parâmetros dos métodos. Hora de testar. Crie o arquivo principal da aplicação (aquele que contém o método main()):
#include <iostream>
#include "pessoa.h"
using namespace std;
int main(int argc, char *argv[])
{
// declara um objeto da classe Pessoa
Pessoa p;
// informa o nome e idade da pessoa
p.setNome("Osmar J. Silva");
p.setIdade(27);
// obtém o nome e idade da pessoa
cout << "Nome: " << p.getNome() << endl;
cout << "Idade: " << p.getIdade() << endl;
cout << "\n" << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Funcionou tudo como planejado? Se funcionou, parabéns! Já fizemos um bom progresso na criação e uso de classes em C++. |
Revit C# ::: Dicas & Truques ::: Selection, Seleção |
Como pedir para o usuário selecionar somente um elemento no Revit usando a função PickObject() do objeto Selection da Revit C# APIQuantidade de visualizações: 977 vezes |
|
Durante o desenvolvimento de plug-ins e macros para o Revit usando C# e a API do Revit, nós precisamos pedir para o usuário selecionar um elemento e efetuar alguma operação com ele. Para isso nós podemos usar a função PickObject() do objeto Selection. O objeto Selection é obtido a partir de um UIDocument, que, por sua vez, é obtido usando this.ActiveUIDocument. Após a aquisição do objeto Selection, nós chamamos a função PickObject() e retornamos um objeto Reference, para representar o elemento selecionado pelo usuário na área de desenho do Revit. Se o objeto Reference retornado for diferente de null, então sabemos que o usuário selecionou o elemento e podemos proseguir com a execução do código do Plug-in ou macro. Veja o código Revit C# completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace Estudos {
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
public partial class ThisApplication {
private void Module_Startup(object sender, EventArgs e) {
// vamos obter uma referência ao UIDocument ativo
UIDocument uidoc = this.ActiveUIDocument;
// agora mostramos uma mensagem para o usuário selecionar um
// elemento
TaskDialog.Show("Aviso", "Selecione um elemento");
// obtemos uma referência ao objeto Selection do
// UIDocument ativo
Selection selecao = uidoc.Selection;
// e finalmente esperamos que o usuário selecione o elemento
Reference selecionado = selecao.PickObject(ObjectType.Element);
// agora testamos se o usuário realmente selecionou um
// elemento
if (selecionado != null) {
TaskDialog.Show("Aviso", "Você selecionou um elemento.");
}
}
private void Module_Shutdown(object sender, EventArgs e) {
// para fazer alguma limpeza de memória ou algo assim
}
#region Revit Macros generated code
private void InternalStartup() {
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
|
Java ::: Pacote java.lang ::: String |
Como obter um objeto String a partir de um StringBuffer ou StringBuilder do JavaQuantidade de visualizações: 3787 vezes |
|
As classes StringBuffer e StringBuilder possuem as mesmas funcionalidades. A diferença é que StringBuilder não é segura em relação à threads e está sendo rapidamente substituída pela classe StringBuffer. Ambas são parecidos com uma String, com a diferença que um StringBuffer ou StringBuilder pode ser modificado in-place, ou seja, modificações em seu conteúdo não geram uma nova cópia, como acontece com objetos da classe String. Nesta dica eu mostrarei como criar novos objetos String a partir do conteúdo de um StringBuffer ou StringBuilder. Vamos começar analisando os construtores da classe String que permitem passar um objeto StringBuffer ou StringBuilder:
package estudos;
public class Estudos{
public static void main(String[] args) {
// um StringBuffer contendo uma frase (troque
// StringBuffer por StringBuilder e o resultado será o mesmo
StringBuffer frase = new StringBuffer("Gosto muito de programar em Java");
// vamos obter uma String a partir deste StringBuffer
String fraseString = new String(frase);
// e exibimos o resultado
System.out.println(fraseString);
}
}
Resultado parecido pode ser obtido sem o uso dos construtores String(StringBuilder builder) e String(StringBuffer buffer). Veja:
package estudos;
public class Estudos{
public static void main(String[] args) {
// um StringBuffer contendo uma frase (troque
// StringBuffer por StringBuilder e o resultado será o mesmo
StringBuffer frase = new StringBuffer("Gosto muito de programar em Java");
// vamos obter uma String a partir deste StringBuffer
String fraseString = frase.toString();
// e exibimos o resultado
System.out.println(fraseString);
}
}
Agora nós usamos o método toString() da classe StringBuffer para converter seu conteúdo em uma string e atribuí-lo à variável fraseString. |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço do...while em C - Linguagem C para iniciantes: O laço do...whileQuantidade de visualizações: 32213 vezes |
O laço do...while em C é bem parecido com o laço while. A diferença é que no do...while, a condição é testada no final da primeira iteração, o que garante que o laço será executado no mínimo uma vez. Veja um exemplo de seu uso:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int valor = 1;
do{
printf("%d ", valor);
valor++;
}while(valor <= 10);
printf("\n\n");
system("PAUSE");
return 0;
}
|
Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout |
Como usar o gerenciador de layout GridBagLayout em suas aplicações Java SwingQuantidade de visualizações: 13255 vezes |
O gerenciador de layout GridBagLayout é um dos mais complexos e mais flexíveis. Embora possa parecer, esta classe não é uma sub-classe de GridLayout, como mostra sua posição na hierarquia de classes Java:java.lang.Object java.awt.GridBagLayout Esta classe implementa as interfaces LayoutManager, LayoutManager2 e Serializable. A vantagem do gerenciador de layout GridBagLayout em relação ao GridLayout, é que, com o GridBagLayout nós podemos fazer com que os componentes nas linhas e colunas possam ter diferentes tamanhos e às vezes ocupar múltiplas linhas e colunas. O trecho de código abaixo mostra a forma mais simples de se criar um GridBagLayout. Veja que os botões são arranjados de forma horizontal na janela. É claro que sem os ajustes necessários, não tiramos muito proveito do uso deste gerenciador (mas isso será visto em outras dicas dessa seção):
import javax.swing.*;
import java.awt.*;
public class Estudos extends JFrame{
public Estudos(){
super("Como usar a classe GridBagLayout");
// define o layout
setLayout(new GridBagLayout());
// adiciona componentes à janela
add(new JButton("Botão 1"));
add(new JButton("Botão 2"));
add(new JButton("Botão 3"));
add(new JButton("Botão 4"));
setSize(350, 150);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Ao executar este código Java Swing nós teremos o seguinte resultado: ![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




