![]() |
|
|
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. |
||
Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert()Quantidade de visualizações: 9317 vezes |
|
Muita vezes precisamos inserir uma substring em uma determinada posição de uma string em Ruby. Esta tarefa pode ser realizada com a função insert() da classe String. Esta função opera na string original e requer dois argumentos: a posição na string onde a substring será inserida e a substring propriamente dita. A posição é um índice iniciando em 0. Índices negativos são contados a partir do final da string. Veja o exemplo: # declara e inicializa uma variável string frase = "Gosto muito de Ruby" puts "A frase original é: " + frase # vamos inserir " Python e" antes de "Ruby". frase.insert(14, " Python e") # exibe o resultado puts "A nova frase é: " + frase Ao executar este código Ruby nós teremos o seguinte resultado: A frase original é: Gosto muito de Ruby A nova frase é: Gosto muito de Python e Ruby |
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++ ::: STL (Standard Template Library) ::: Vector C++ |
Como obter um iterador para o primeiro ou último elemento de um vector C++ usando as funções begin() e end()Quantidade de visualizações: 8242 vezes |
|
Há situações em nossos códigos que precisamos obter uma referência ao primeiro ou último elemento de um vector e usar tal referência para acessar os demais elementos. Isso pode ser feito com um iterador. Assim, para obter um iterador para o primeiro elemento nós podemos usar a função begin(), que retorna duas formas de iteradores: iterator begin(); const_iterator begin() const; A primeira versão retorna um iterador que pode ser usado, não somente para acessar os elementos do vector, como também para alterar seus valores. Veja no trecho de código abaixo como obtemos um iterador para o primeiro elemento e o incrementamos de forma a atingir o último elemento:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o primeiro elemento
vector<int>::iterator it = valores.begin();
// vamos mostrar o valor atual do iterador
cout << "Valor atual do iterador: " << *it << endl;
// vamos adiantar o iterador duas vezes
it += 2;
// vamos mostrar o novo valor do iterador
cout << "Novo valor do iterador: " << *it << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É importante lembrar que podemos alterar os valores dos elementos de um vector por meio do iterador. Veja:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o primeiro elemento
vector<int>::iterator it = valores.begin();
// vamos atribuir um novo valor ao primeiro elemento
*it = 128;
// vamos mostrar o novo valor do primeiro elemento
cout << "Novo valor do primeiro elemento: " << valores.front() << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Mas, e se quiséssemos evitar tal alteração? Bastaria usar um iterador constante: // vamos obter um iterador constante para o primeiro elemento vector<int>::const_iterator it = valores.begin(); Faça esta alteração no código anterior e verá que o programa não mais compila. A mensagem de erro de compilação indica: assignment of read-only location Vamos agora obter um iterador para o último elemento. Para isso podemos usar a função end(). Veja: iterator end(); const_iterator end() const; É importante notar que end() retorna um iterador para o elemento APÓS o último elemento do vector. Veja no trecho de código abaixo como obtemos um iterador para o último elemento:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o último elemento
vector<int>::iterator it = valores.end();
// como end() retorna um iterador para um elemento
// APÓS o último elemento do vector, temos que voltar
// um elemento para acessarmos de fato o último elemento
it--;
// vamos mostrar o valor atual do iterador
cout << "Valor do iterador: " << *it << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Um dos usos mais comuns dos iteradores begin() e end() é quando queremos percorrer todos os elementos de um vector. Veja:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos percorrer o vector e exibir os elementos
vector<int>::iterator it;
for(it = valores.begin(); it < valores.end(); it++){
cout << *it << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como declarar e inicializar uma matriz de Integer em DelphiQuantidade de visualizações: 12772 vezes |
Nesta dica eu mostrarei como declarar e inicializar uma matriz de inteiros (Integer) em Delphi. Mostrarei também como exibir o valor de cada elemento usando um laço For. Veja o código:
procedure TForm3.Button1Click(Sender: TObject);
var
// vamos declarar uma matriz de 10 inteiros
valores: array[1..10] of Integer;
i: Integer;
begin
// vamos inicializar a matriz com os números pares de 2 até 20
for i := Low(valores) to High(valores) do
begin
valores[i] := i * 2;
end;
// vamos exibir os valores dos elementos
for i := Low(valores) to High(valores) do
begin
Memo1.Lines.Add(IntToStr(valores[i]));
end;
end;
Ao executar este código teremos o seguinte resultado: 2 4 6 8 10 12 14 16 18 20 |
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 |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





