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.

wxWidgets ::: Dicas & Truques ::: wxFrame

Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgets

Quantidade de visualizações: 2396 vezes
A classe wxFrame, definida no arquivo <wx/frame.h>, herda diretamente da classe wxTopLevelWindow (que herda de wxWindow) e, em geral, é usada para representar a janela principal da aplicação. Em tempo de execução seu tamanho pode ser alterado, maximizado, restaurado e minimizado. Esta janela também inclui uma borda mais grossa, uma barra de títulos e, opcionalmente, uma barra de menus, uma barra de ferramentas ou uma barra de status.

Uma wxFrame pode atuar como um contâiner para outros controles, tais como botões, caixa de texto, listas, tabelas, etc. No entanto, não podemos inserir em uma wxFrame uma outra wxFrame ou um diálogo.

O construtor não vazio da classe wxFrame é:

wxFrame::wxFrame(wxWindow* parent, wxWindowID id,
  const wxString&  title, const wxPoint& pos = wxDefaultPosition,  
  const wxSize& size = wxDefaultSize,  
  long style = wxDEFAULT_FRAME_STYLE,
  const wxString& name = wxFrameNameStr)


O parâmetro parent pode ser, e geralmente é, NULL. Se esse valor for diferente de NULL, a frame será minimizada quando sua janela mãe foi minimizada e restaurada quando esta for restaurada. Note que estamos falando de aplicações de janelas de múltiplos documentos (janelas MDI).

O parâmetro id é o identificador da janela. Podemos informar -1 para indicar um valor default.

O parâmetro title é o texto a ser exibido na barra de títulos da janela.

O parâmetro pos é a posição da janela, expressa como um wxPoint (coordenada x e y). Se fornecermos o valor wxDefaultPosition para este parâmetro, a posição da janela será escolhida pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma.

O parâmetro size é o tamanho da janela, expresso como um wxSize (largura e altura). O valor wxDefaultSize indica o tamanho padrão (default), escolhido pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma.

O parâmetro style é o estilo da janela. O valor padrão é wxDEFAULT_FRAME_STYLE (que pode ser redimensionada, possui um botão de minimizar, de maximizar, etc).

O parâmetro name é usado para associar a janela com um item nomeado, permitindo a personalização individual da janela em sistemas que usam o Motif. No Windows este parâmetro não possui nenhum efeito.

Vamos ao código agora. Veja os arquivos de definição e de implementação para a criação de uma janela wxFrame:

Código para janelaprincipal.h:

#ifndef _JANELAPRINCIPAL_H
#define _JANELAPRINCIPAL

#include <wx/wx.h>

// Definição da nossa janela wxFrame
class JanelaPrincipal : public wxFrame{
  public:
   // construtor não vazio
   JanelaPrincipal(const wxChar *titulo, int posX, int posY, 
     int largura, int altura);

   // destrutor
   ~JanelaPrincipal();
};

#endif // _JANELAPRINCIPAL_H

Código para janelaprincipal.cpp:

#include "janelaprincipal.h"

// arquivo de implementação
JanelaPrincipal::JanelaPrincipal(const wxChar *titulo, int posX,
  int posY, int largura, int altura) : wxFrame((wxFrame *)NULL, -1,
  titulo, wxPoint(posX, posY), wxSize(largura, altura)){

  // não vamos fazer nada aqui por enquanto	 
}

JanelaPrincipal::~JanelaPrincipal(){
  // por enquanto vamos deixar o construtor vazio
}

Agora veja o arquivo de definição e de implementação necessários para a criação e exibição da nossa janela:

Código para aplicacao.h:

#include <wx/wx.h>

// arquivo de definição

// declaramos a classe application
class MinhaAplicacao : public wxApp{
public:
  // é chamado no startup da aplicação
  virtual bool OnInit();
};

// declara MinhaAplicacao& GetApp()
DECLARE_APP(MinhaAplicacao)

Código para aplicacao.cpp

#include "aplicacao.h"
#include "janelaprincipal.h"

// arquivo de implementação

// aqui o wxWidgets cria nosso objeto MinhaAplicacao e o associa
// com a função de entrada main() ou WinMain()
IMPLEMENT_APP(MinhaAplicacao)

bool MinhaAplicacao::OnInit(){
  // vamos criar nossa janela
  JanelaPrincipal *janela = new JanelaPrincipal(wxT("Cadastro"),
	50, 50, 500, 400);
  // vamos exibir a janela wxFrame
  janela->Show(TRUE);
  // essa vai ser a janela principal da aplicação
  SetTopWindow(janela);
  
  // podemos iniciar o loop de eventos
  return true;
}

Note que, para que a janela seja visível na tela, devemos fazer uma chamada ao método Show() e fornecer o valor TRUE. Esta função é definida originalmente em wxWindow. Veja também que chamamos SetTopWindow() para informar ao wxWidgets que esta é a janela principal, razão pela qual fornecemos o valor NULL para o parâmetro parent.


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

Como converter uma string em um valor inteiro usando a função atoi() da linguagem C

Quantidade de visualizações: 47199 vezes
Em algumas situações, pode ser necessário converter uma string em um valor numérico inteiro. Para isso podemos usar a função atoi().

Esta função recebe uma matriz de caracteres e tenta transformá-la em um valor inteiro. Se a conversão não for possível, o valor 0 é retornado. Os sinais "+" e "-" são válidos na string a ser convertida. Veja um exemplo:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // valor inteiro em forma de string
  char valor_str[] = "10";

  // A linha abaixo causa um comportamento estranho
  //int res = 40 + valor_str;

  // temos que converter a string em um valor inteiro válido
  int res = 40 + atoi(valor_str);

  printf("O resultado e: %d", res);

  puts("\n");
  system("pause");
  return 0;
}



C++ ::: Desafios e Lista de Exercícios Resolvidos ::: C++ Básico

Exercício Resolvido de C++ - Ler três números inteiros e indicar se eles estão em ordem crescente ou decrescente

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

Escreva um programa C++ que pede para o usuário informar três números inteiros e informa se eles estão em ordem crescente ou decrescente. Se os números estiverem em ordem crescente, escreva "Ordem Crescente". Se estiverem em ordem decrescente, escreva "Ordem Decrescente". Do contrário escreva "Sem ordem definida".

Sua saída deverá ser parecida com:

Primeiro número: 4
Segundo número: 8
Terceiro número: 11
Ordem Crescente
Resposta/Solução:

Veja a resolução comentada deste exercício em C++:

#include <string>
#include <iostream>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do exercício
  int a, b, c;

  // vamos pedir para o usuário informar três números
  cout << "Primeiro número: ";
  cin >> a;
  cout << "Segundo número: ";
  cin >> b;
  cout << "Terceiro número: ";
  cin >> c;
    
  // os números estão em ordem crescente?
  if (a < b && b < c){
    cout << "Ordem Crescente" << endl;
  }
  // os números estão em ordem decrescente?
  else if (a > b && b > c){
    cout << "Ordem Decrescente" << endl;
  }
  // sem ordem definida
  else{
    cout << "Sem ordem definida" << endl;
  } 
	
  cout << "\n\n";
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS; 
}



HTML5 ::: HTML5 + JavaScript ::: Canvas

Como usar o método arc() do objeto Canvas do HTML5 para desenhar arcos, curvas e círculos

Quantidade de visualizações: 4661 vezes
O método arc() do objeto Canvas do HTML5 nos permite criar figuras tais como arcos, curvas e círculos. Para isso é importante entender os seus parâmetros:

arc(x, y, radius, ang1, ang2, direction);


Os parâmetros x e y indicam as coordenadas do centro do círculo. O parâmetro radius indica o raio do círculo. Os parâmetros ang1 e ang2 indicam o ângulo inicial e o ângulo final. O parâmetro direction indica a direção do desenho. Se o valor true for informado, a direção será anti-horário. Se for false, o desenho será no sentido horário.

É importante observar que os ângulos são medidos em radianos, não em graus. Assim, o ângulo 0 representa a posição 3 horas no relógio. A posição de 9 horas é (1 * PI), 12 horas é (1.5 * PI) e 6 horas é (0.5 * PI). Portanto, se você quiser desenhar um círculo completo, deverá sair do ângulo 0 e ir até (2 * PI).

Veja um trecho de código que desenha um arco equivalente a um quarto de uma pizza, ou seja, 25%, saindo do ângulo 90º (em graus) e indo até 180º (graus):

<html>
<head>
  <meta charset="utf-8">
  <title>Estudos HTML5</title>
</head>
<body>

<Canvas id="canvas1" width="500" height="350"></Canvas>
 
<script type="text/javascript">
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
     
  // vamos desenhar um arco sem preenchimento com raio de 80
  contexto.beginPath(); // início um novo caminho
  // o arco começa no x = 100, y = 100, começa no ângulo 90 (em graus)
  // e vai até o ânculo 180 (graus)
  // as medidas na função arc() são em radianos, não em graus
  contexto.arc(100, 100, 80, Math.PI, 1.5 * Math.PI, false);
  contexto.lineWidth = 2; // largura da linha
  contexto.strokeStyle = '#990000'; // cor da linha
 
  contexto.stroke(); // realiza o desenho    
</script>

</body>
</html>

Execute este código e veja que o arco realmente foi desenhado. Seu resultado deverá ser parecido com:



No entanto, para parecer um pedação de pizza, ou seja, o ponto de partida para um gráfico de pizza, é preciso que tenhamos duas linhas ligado esse arco ao centro do círculo. Veja a modificação que fiz:

<html>
<head>
  <meta charset="utf-8">
  <title>Estudos HTML5</title>
</head>
<body>

<Canvas id="canvas1" width="500" height="350"></Canvas>
 
<script type="text/javascript">
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
     
  // vamos desenhar um arco sem preenchimento com raio de 80
  contexto.beginPath(); // início um novo caminho
   
  // primeiro movemos a caneta de desenho para o centro do círculo
  contexto.moveTo(100, 100);
 
  // o arco começa no x = 100, y = 100, começa no ângulo 90 (em graus)
  // e vai até o ânculo 180 (graus)
  // as medidas na função arc() são em radianos, não em graus
  contexto.arc(100, 100, 80, Math.PI, 1.5 * Math.PI, false);
  contexto.lineWidth = 2; // largura da linha
  contexto.strokeStyle = '#990000'; // cor da linha
 
  // agora desenhamos uma linha de volta para o arco
  contexto.lineTo(100, 100);
 
  contexto.stroke(); // realiza o desenho    
</script>

</body>
</html>

Execute novamente e veja que agora o efeito ficou bem melhor. Seu resultado deverá ser parecido com:



Para finalizar, vamos colorir o pedação de pizza. Veja a nova versão (com o código completo):

<!doctype html>
<html>
<head>
  <title>O objeto Canvas do HTML5</title>
</head>
 
<body>
 
<Canvas id="canvas1" width="500" height="350"></Canvas>
 
<script type="text/javascript">
  // obtemos uma referência ao elemento Canvas  
  var canvas = document.getElementById("canvas1");
  // obtemos o contexto de desenho
  var contexto = canvas.getContext("2d");
     
  // vamos desenhar um arco sem preenchimento com raio de 80
  contexto.beginPath(); // início um novo caminho
   
  // primeiro movemos a caneta de desenho para o centro do círculo
  contexto.moveTo(100, 100);
 
  // o arco começa no x = 100, y = 100, começa no ângulo 90 (em graus)
  // e vai até o ânculo 180 (graus)
  // as medidas na função arc() são em radianos, não em graus
  contexto.arc(100, 100, 80, Math.PI, 1.5 * Math.PI, false);
  contexto.lineWidth = 2; // largura da linha
  contexto.strokeStyle = '#990000'; // cor da linha
 
  // agora desenhamos uma linha de volta para o arco
  contexto.lineTo(100, 100);
 
  // vamos preencher o gráfico
  contexto.fillStyle = "#CCCCCC"; // cor do preenchimento
  contexto.fill(); // preenche de fato
 
  contexto.stroke(); // realiza o desenho    
</script>
 
</body>
</html>

Agora o resultado será:




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á 17 usuários muito felizes estudando em nosso site.