![]() |
|
|
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 Cards de Hidrologia |
||
|
||
|
|
||
PHP ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104 |
Boleto Bancário PHP - Como calcular o Dígito Verificador do Nosso Número (Módulo 11) - Boleto Caixa EconômicaQuantidade de visualizações: 3218 vezes |
|
Nesta dica mostrarei, passo-a-passo, como calcular o Dígito Verificador do Nosso Número para o boleto e arquivos de remessa da Caixa Econômica Federal (Banco 104). O Nosso Número é o número de identificação do título no Banco. Este número deve ser único nos seus sistemas, pois, sua combinação com o código do cedente o torno único também no sistema bancário. Além disso, é o Nosso Número que permite ao Banco e a empresa identificar os dados da cobrança que deram origem ao bloqueto. Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), o Nosso Número é composto de 17 posições, sendo as 02 posições iniciais para identificar a Carteira e as 15 posições restantes são para livre utilização pelo Cedente. Seu formato é XYNNNNNNNNNNNNNNN-D, onde: a) X = Modalidade/Carteira de Cobrança (1-Registrada/2-Sem Registro); b) Y = Emissão do bloqueto (4-Cedente); c) NNNNNNNNNNNNNNN = Nosso Número (15 posições livres do Cedente); d) D = Dígito Verificador do Nosso Número calculado através do Modulo 11, conforme código que mostrarei a seguir. Nos boletos e arquivos de remessa da Caixa, o Dígito Verificador do Nosso Número admite 0 (zero), diferentemente do DV Geral do Código de Barras (que também mostro como calcular em dicas dessa seção). O cálculo que mostrarei a seguir é baseado no Módulo 11 e está de acordo com as instruções do Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código apresentado. Dito isso, veja o código PHP completo para uma função que recebe o Nosso Número e retorna seu dígito verificador:
<?php
// função que recebe o nosso número
// e retorna o seu dígito verificador
function dvNossoNumero($nossoNumero){
// o nosso número possui mais que 17 dígitos?
if(strlen($nossoNumero) > 17){
die("O Nosso Número não pode ter mais que 17 dígitos.");
}
// agora vamos definir os índices de multiplicação
$indices = "29876543298765432";
// e aqui a soma da multiplicação coluna por coluna
$soma = 0;
// fazemos a multiplicação coluna por coluna agora
for($i = 0; $i < strlen($nossoNumero); $i++){
$soma = $soma + ((int)($nossoNumero[$i])) *
((int)($indices[$i]));
}
// obtemos o resto da divisão da soma por onze
$resto = $soma % 11;
// subtraímos onze pelo resto da divisão
$digito = 11 - $resto;
// atenção: Se o resultado da subtração for
// maior que 9 (nove), o dígito será 0 (zero)
if($digito > 9){
$digito = 0;
}
return $digito;
}
// vamos calcular o Dígito Verificador do
// Nosso Número
$carteira = "1"; //
$emissao = "4"; // cedente
$nossoNumero = "19";
// preenche com zeros até completar 15 posições
$nossoNumero = sprintf("%015d", $nossoNumero);
$nossoNumeroCompleto = $carteira . $emissao . $nossoNumero;
$digito = dvNossoNumero($nossoNumeroCompleto);
echo "O dígito verificador para o nosso número " .
$nossoNumeroCompleto . " é: " . $digito;
?>
Ao executar este código PHP nós teremos o seguinte resultado: O dígito verificador para o nosso número 14000000000028288 é: 5 |
C# ::: Namespace System.Drawing ::: Graphics |
Como desenhar texto usando o método DrawString() da classe Graphics do C#Quantidade de visualizações: 6538 vezes |
Em algumas situações precisamos desenhar uma string (texto) no formulário ou algum outro controle. Para isso podemos usar o método DrawString() da classe Graphics. A assinatura mais comumente usada deste método é:Graphics.DrawString(String, Font, Brush, Single, Single)
private void button1_Click(object sender, EventArgs e){
// vamos obter o Graphics do formulário
Graphics g = this.CreateGraphics();
// vamos desenhar a string "Arquivo de Códigos"
g.DrawString("Arquivo de Códigos", this.Font, new
SolidBrush(Color.Red), 40, 60);
// vamos liberar o objeto Graphics
g.Dispose();
}
Aqui a string será desenhada usando a fonte do formulário e na cor vermelha e sólida. Se quiséssemos definir a fonte, o código ficaria algo assim:
g.DrawString("Arquivo de Códigos", new Font("Verdana", 30),
new SolidBrush(Color.Red), 40, 60);
As coordenadas x e y nas quais o desenho ocorrerá podem ser informadas como um objeto da estrutura PointF. Veja:
g.DrawString("Arquivo de Códigos", new Font("Verdana", 30),
new SolidBrush(Color.Red), new PointF(80f, 120f));
|
Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Arrays e Matrix (Vetores e Matrizes) |
Como repetir os elementos de um vetor ou matriz usando a função repeat() da NumPy do PythonQuantidade de visualizações: 1253 vezes |
|
A função repeat() da biblioteca NumPy do Python é usada quando queremos repetir os elementos de um vetor ou matriz um determinado número de vezes. Em sua forma mais simples esta função pede um array e um número inteiro indicando a quantidade de repetições. Veja o código Python completo para o exemplo:
# vamos importar a biblioteca NumPy
import numpy as np
def main():
# vamos criar um vetor contendo 5 elementos
vetor = np.array([5, 3, 9, 1, 4])
# agora vamos aplicar a função repeat() a este vetor
novo_vetor = np.repeat(vetor, 3)
# vamos mostrar o resultado
print("O vetor original é: {0}".format(vetor))
print("O novo vetor é: {0}".format(novo_vetor))
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: O vetor original é: [5 3 9 1 4] O novo vetor é: [5 5 5 3 3 3 9 9 9 1 1 1 4 4 4] Veja agora o efeito desta função em uma matriz de 2 linhas por 3 colunas:
# vamos importar a biblioteca NumPy
import numpy as np
def main():
# vamos criar uma matriz de 2 linhas e 3 colunas
matriz = np.array([(1, 2, 3), (4, 5, 6)])
# agora vamos aplicar a função repeat() a esta matriz
nova_matriz = np.repeat(matriz, 3, 0)
# vamos mostrar o resultado
print("A matriz original é:\n\n{0}".format(matriz))
print("A nova matriz é:\n\n{0}".format(nova_matriz))
if __name__== "__main__":
main()
Note que informei o valor 0 para o terceiro parâmetro da função repeat(). Isso faz com que os elementos da matriz sejam repetidos no eixo x. Veja: A matriz original é: [[1 2 3] [4 5 6]] A nova matriz é: [[1 2 3] [1 2 3] [1 2 3] [4 5 6] [4 5 6] [4 5 6]] Se trocarmos o valor 0 por 1, o resultado será: A matriz original é: [[1 2 3] [4 5 6]] A nova matriz é: [[1 1 1 2 2 2 3 3 3] [4 4 4 5 5 5 6 6 6]] |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular vetor unitário em Java - Java para Física e EngenhariaQuantidade de visualizações: 769 vezes |
|
Um vetor unitário ou versor num espaço vetorial normado é um vetor (mais comumente um vetor espacial) cujo comprimento ou magnitude é 1. Em geral um vetor unitário é representado por um "circunflexo", assim: __$\hat{i}__$. O vetor normalizado __$\hat{u}__$ de um vetor não zero __$\vec{u}__$ é o vetor unitário codirecional com __$\vec{u}__$. O termo vetor normalizado é algumas vezes utilizado simplesmente como sinônimo para vetor unitário. Dessa forma, o vetor unitário de um vetor __$\vec{u}__$ possui a mesma direção e sentido, mas magnitude 1. Por magnitude entendemos o módulo, a norma ou comprimento do vetor. Então, vejamos a fórmula para a obtenção do vetor unitário: \[\hat{u} = \dfrac{\vec{v}}{\left|\vec{v}\right|}\] Note que nós temos que dividir as componentes do vetor pelo seu módulo de forma a obter o seu vetor unitário. Por essa razão o vetor nulo não possui vetor unitário, pois o seu módulo é zero, e, como sabemos, uma divisão por zero não é possível. Veja agora o código Java que pede as coordenadas x e y de um vetor 2D ou R2 e retorna o seu vetor unitário:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos ler os valores x e y
System.out.print("Informe o valor de x: ");
double x = Double.parseDouble(entrada.nextLine());
System.out.print("Informe o valor de y: ");
double y = Double.parseDouble(entrada.nextLine());
// o primeiro passo é calcular a norma do vetor
double norma = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
// agora obtemos as componentes x e y do vetor unitário
double u_x = x / norma;
double u_y = y / norma;
// mostra o resultado
System.out.println("O vetor unitário é: (x = " +
u_x + "; y = " + u_y);
}
}
Ao executar este código Java nós teremos o seguinte resultado: Informe o valor de x: -4 Informe o valor de y: 6 O vetor unitário é: (x = -0.5547001962252291; y = 0.8320502943378437 Veja agora uma modificação deste código para retornarmos o vetor unitário de um vetor 3D ou R3, ou seja, um vetor no espaço:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos ler os valores x, y e z
System.out.print("Informe o valor de x: ");
double x = Double.parseDouble(entrada.nextLine());
System.out.print("Informe o valor de y: ");
double y = Double.parseDouble(entrada.nextLine());
System.out.print("Informe o valor de z: ");
double z = Double.parseDouble(entrada.nextLine());
// o primeiro passo é calcular a norma do vetor
double norma = Math.sqrt(Math.pow(x, 2)
+ Math.pow(y, 2) + Math.pow(z, 2));
// agora obtemos as componentes x, y e z do vetor unitário
double u_x = x / norma;
double u_y = y / norma;
double u_z = z / norma;
// mostra o resultado
System.out.println("O vetor unitário é: (x = " +
u_x + "; y = " + u_y + "; z = " + u_z);
}
}
Ao executarmos este novo código nós teremos o seguinte resultado: Informe o valor de x: 3 Informe o valor de y: 7 Informe o valor de z: 5 O vetor unitário é: (x = 0.329292779969071; y = 0.7683498199278324; z = 0.5488212999484517 |
C++ ::: STL (Standard Template Library) ::: unordered_map |
Como contar as frequências de palavras em uma frase ou texto em C++ usando um unordered_mapQuantidade de visualizações: 1101 vezes |
|
Nesta dica mostrarei como podemos usar o mapa não ordenado (unordered_map) da linguagem C++ para contar as frequências das palavras individuais de uma palavra ou texto. O exemplo mostrado aqui serve como base para a criação de aplicações muito interessantes. Veja o código C++ completo:
#include <string>
#include <iostream>
#include <unordered_map>
#include <bits/stdc++.h>
using namespace std;
// protótipo da função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase);
int main(int argc, char *argv[]){
// vamos declarar uma frase
// retirei acentos e pontuações de propósito
string frase = "Gosto de Java e Python pois quero aprender Java";
// mostramos a frase
cout << "A frase é: " << frase << endl;
// chamamos a função que exibe as frequencias
cout << "\nA frequência das palavras é:\n" << endl;
exibir_frequencias(frase);
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
// função que exibe a frequência de palavras em uma
// frase ou texto
void exibir_frequencias(const string &frase){
// vamos declarar um mapa que terá como chave uma string
// e como valor um int
unordered_map<string, int> frequencias;
// agora convertemos a frase recebido como argumento
// em um objeto stringstream
stringstream ss(frase);
// e percorremos as palavras individualmente
string palavra;
while (ss >> palavra){
// essa palavra já existe no mapa?
if (frequencias.find(palavra) == frequencias.end()){
// adiciona esta palavra ao mapa
frequencias[palavra] = 1;
}
else{
// já existe. Vamos incrementar esta frequência
frequencias[palavra] = frequencias[palavra] + 1;
}
}
// agora percorremos o mapa não ordenado, acessando
// cada chave e mostrando a frequencia de cada palavra
unordered_map<string, int>:: iterator p;
for (p = frequencias.begin(); p != frequencias.end(); p++){
cout << "(" << p->first << ", " << p->second << ")\n";
}
}
Ao executar este código C++ nós teremos o seguinte resultado: A frase é: Gosto de Java e Python pois quero aprender Java A frequência das palavras é: (aprender, 1) (quero, 1) (pois, 1) (Gosto, 1) (Java, 2) (e, 1) (de, 1) (Python, 1) |
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
|
Delphi - Como calcular MDC em Delphi |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




