![]() |
|
|
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 Python |
||
|
||
|
|
||
Delphi ::: Dicas & Truques ::: Data e Hora |
Delphi para iniciantes - Como criar uma data e hora em Delphi usando a função EncodeDateTime()Quantidade de visualizações: 21213 vezes |
|
Em algumas situações precisamos contruir uma determinada data e hora e retornar um TDateTime. Isso pode ser feito com o auxílio da função EncodeDateTime(). Esta função requer valores inteiros representando o ano, mês, dia, horas, minutos, segundos e milisegundos. Veja um exemplo no qual construímos a data 22/10/2009:
procedure TForm1.Button1Click(Sender: TObject);
var
data_hora: TDateTime;
begin
// não esqueça de incluir DateUtils no uses
// vamos construir a data 22/10/2009
data_hora := EncodeDateTime(2009, 10, 22, 0, 0, 0, 0);
// vamos exibir o resultado
ShowMessage('A data é: ' + DateTimeToStr(data_hora));
end;
Note que deixamos os valores de horas, minutos, segundos e milisegundos como 0. Experimente construir a mesma data fornecendo também os valores de horas, minutos, segundos e milisegundos. Há, contudo, alguns cuidados a serem tomados. Os valores fornecidos para a função EncodeDateTime() devem obedecer as regras de limites mínimos e máximos: a) O valor do ano deve estar entre 1 e 9999; b) Os valores de meses devem estar entre 1 e 12 (incluindo); c) Os valores válidos para os dias variam de 1 até 28, 29, 30 ou 31, dependendo do valor do mês. Por exemplo, os valores possíveis para o mês 2 (fevereiro) são de 1 até 28 ou até 29, dependendo ou não se o valor do ano especificado for um ano bissexto; d) Valores para a hora devem estar entre 0 e 24. Se a hora for definida como 24, os valores dos minutos, segundos e milisegundos deverão ser 0, e o TDateTime resultante representará a meia-noite no final do dia especificado e o início do próximo dia; d) Os valores dos minutos devem variar de 0 até 59; e) Os valores de segundos devem variar de 0 até 59; f) Os valores de milisegundos devem variar de 0 até 999. Se os valores informados para a função EncodeDateTime() estiverem fora destas faixas, uma exceção EConvertError será lançada. Esta exceção ocorrerá em tempo de execução. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
HTML5 ::: HTML5 + JavaScript ::: Geolocation API |
Como retornar a localização do usuário usando o método getCurrentPosition() da API Geolocation do HTML5Quantidade de visualizações: 3248 vezes |
O método getCurrentPosition() da API Geolocation do HTML5 nos permite obter tanto a latitude quanto a longitude do usuário que está acessando nossas páginas web. A forma mais simples deste método requer apenas uma função JavaScript que receberá o objeto de coordenadas. Veja o trecho de código a seguir:
<html>
<head>
<title>Obtendo a latitude e longitude usando a API
Geolocation</title>
</head>
<body>
<script type="text/javascript">
function mostrarPosicao(posicao) {
document.writeln("<h1>Latitude: " + posicao.coords.latitude +
"; Longitude: " + posicao.coords.longitude + "</h1>");
}
// não se esqueça de testar se o navegador web suporta a API
// Geolocation do HTML5
if(window.navigator.geolocation) {
// chamamos o método getCurrentPosition() fornecendo a função
// JavaScript que receberá o objeto de coordenadas
navigator.geolocation.getCurrentPosition(mostrarPosicao);
}
else{
document.writeln("A API Geolocation foi encontrada.");
}
</script>
</body>
</html>
Ao executar este trecho de código, a primeira coisa que você verá é uma mensagem do navegador avisando que o site a partir do qual o código está sendo executado quer saber sua localização. A mensagem exibirá os botões Permitir ou Bloquear. Se você clicar no botão Permitir, a latitude e longitude serão escritas no navegador: Latitude: -16.7143838; Longitude: -49.2327622 É claro que, se você estiver executando o código em um laptop ou desktop, o resultado será muito diferente daquele mostrado no seu celular. O motivo é que, em geral, um GPS não está disponível nos laptops e desktops. Por essa razão, o navegador vai obter sua localização usando posicionamento de WI-FI e também por meio do seu endereço IP (Internet Protocol). |
C# ::: C# + MySQL ::: MySqlCommand |
Como gravar dados em uma tabela MySQL usando INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#Quantidade de visualizações: 1577 vezes |
|
Nesta dica mostrarei como inserir dados em uma tabela MySQL usando o comando SQL INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#. A tabela usada no exemplo contém os campos id, titulo, autor, paginas, data_cadastro. O campo id é auto-incremento e o campo data_cadastro é do tipo DATETIME. Por essa razão eu passei os valores NULL para o campo auto-incremento e o valor NOW() para o campo data_cadastro, de forma que a data e hora atual sejam gravadas. Como se trata de uma operação INSERT, o método ExecuteNonQuery() retorna a quantidade de registros afetados pelo comando. No exemplo eu mostro como obter e exibir este valor. Veja o código completo para o exemplo (incluindo a conexão com o banco de dados MySQL a partir do C#):
using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace EstudosMySQL {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
// objeto de conexão
MySqlConnection conn = null;
// string de conexão
string connStr = "server=localhost;user id=root; " +
"password=osmar1234; database=estudos; pooling=false";
try {
conn = new MySqlConnection(connStr);
conn.Open();
if (conn.State == ConnectionState.Open) {
// primeiro criamos um novo objeto MySqlCommand
MySqlCommand comando = new MySqlCommand();
// definimos a conexão para este comando
comando.Connection = conn;
// definimos o comando SQL a ser executado
comando.CommandText = "INSERT INTO livros (id, titulo, " +
autor, paginas, data_cadastro) " +
"VALUES(NULL, 'JAVA PARA INICIANTES', " +
"'OSMAR J. SILVA', 740, NOW())";
// e executamos o comando SQL
int res = comando.ExecuteNonQuery();
if (res > 0) {
MessageBox.Show("Operação realizada com sucesso. "
+ res + " linhas afetadas.");
}
else {
MessageBox.Show("Deve ter acontecido alguma coisa. "
+ res + " linhas afetadas.");
}
}
}
catch (MySqlException ex) {
MessageBox.Show("Erro: " +
ex.Message);
}
}
}
}
|
Python ::: Estruturas de Dados ::: Lista Ligada Simples |
Como excluir um nó no final de uma lista encadeada simples em PythonQuantidade de visualizações: 1634 vezes |
|
Nesta dica mostrarei como podemos escrever um método remover_final() que remove e retorna o nó no final de uma lista encadeada simples em Python, ou seja, excluí o último nó da lista. É importante observar que o método exclui o último nó e o retorna completo, inclui o valor que está incluído nele. Se a lista estiver vazia o método retorna o valor None para indicar lista vazia. Vamos começar então com o código para a classe No da lista singularmente ligada (que salvei em um arquivo no_lista_singularmente_ligada.py):
# classe No para uma lista singularmente encadeada ou
# ligada - Singly Linked List
class No:
# construtor da classe No
def __init__(self, info, proximo):
self.info = info
self.proximo = proximo
# método que permite definir o conteúdo do nó
def set_info(self, info):
self.info = info
# método que permite obter a informação de um nó
def get_info(self):
return self.info
# método que permite definir o campo próximo deste nó
def set_proximo(self, proximo):
self.proximo = proximo
# método que permite obter o campo próximo deste nó
def get_proximo(self):
return self.proximo
# retorna True se este nó apontar para outro nó
def possui_proximo(self):
return self.proximo != None
Veja que o código para a classe Nó não possui muitas firulas. Temos apenas um campo info, que guardará o valor do nó, e um campo próximo, que aponta para o próximo nó da lista, ou null, se este for o único nó ou o último nó da lista ligada. Veja agora o código para a classe ListaLigadaSimples (lista_ligada_simples.py), com os métodos inserir_inicio(), remover_final() e exibir():
# importa a classe No
from no_lista_singularmente_ligada import No
# classe ListaLigadaSimples
class ListaLigadaSimples:
# construtor da classe
def __init__(self):
self.inicio = None # nó inicial da lista
# método que deleta um nó no final de uma lista ligada
# este método retorna o nó excluído
def remover_final(self):
# a lista está vazia?
if self.inicio == None:
return None
else:
# vamos excluir e retornar o primeiro nó da lista
removido = self.inicio
# a lista possui apenas um nó?
if self.inicio.get_proximo() == None:
# a lista agora ficará vazia
self.inicio = None
else:
# começamos apontando para o início da lista
no_atual = self.inicio
no_anterior = self.inicio
# enquanto o próximo do nó atual for diferente de nulo
while no_atual.get_proximo() != None:
# avançamos o nó anterior
no_anterior = no_atual
# saltamos para o próximo nó
no_atual = no_atual.get_proximo()
# na estamos na posição de exclusão
removido = no_atual
no_anterior.set_proximo(None)
# retorna o nó removido
return removido
# método que permite inserir um novo nó no início da lista
def inserir_inicio(self, info):
# cria um novo nó contendo a informação e que
# não aponta para nenhum outro nó
novo_no = No(info, None)
# a lista ainda está vazia?
if self.inicio == None:
# o novo nó será o início da lista
self.inicio = novo_no
else:
# o novo nó aponta para o início da lista
novo_no.set_proximo(self.inicio)
# o novo nó passa a ser o início da lista
self.inicio = novo_no
# método que permite exibir todos os nós da lista
# ligada simples (lista singularmente encadeada)
def exibir(self):
# aponta para o início da lista
no_atual = self.inicio
# enquanto o nó não for nulo
while no_atual != None:
# exibe o conteúdo do nó atual
print(no_atual.get_info())
# pula para o próximo nó
no_atual = no_atual.get_proximo()
E agora o código main() que insere alguns valores no início da nossa lista singularmente encadeada e testa o método remover_final():
# importa a classe ListaLigadaSimples
from lista_singularmente_ligada import ListaLigadaSimples
# método principal
def main():
# cria uma nova lista encadeada simples
lista = ListaLigadaSimples()
print("Insere o valor 12 no início da lista")
lista.inserir_inicio(12)
print("Conteúdo da lista: ")
lista.exibir()
print("Insere o valor 30 no início da lista")
lista.inserir_inicio(30)
print("Conteúdo da lista: ")
lista.exibir()
print("Insere o valor 27 no início da lista")
lista.inserir_inicio(27)
print("Conteúdo da lista: ")
lista.exibir()
print("Remove um nó no final da lista")
removido = lista.remover_final()
if removido == None:
print("Não foi possível remover. Lista vazia")
else:
print("Nó removido:", removido.get_info())
print("Conteúdo da lista: ")
lista.exibir()
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: c:\estudos_python>python estudos.py Insere o valor 12 no início da lista Conteúdo da lista: 12 Insere o valor 30 no início da lista Conteúdo da lista: 30 12 Insere o valor 27 no início da lista Conteúdo da lista: 27 30 12 Remove um nó no final da lista Nó removido: 12 Conteúdo da lista: 27 30 |
C# ::: Windows Forms ::: TextBox |
C# Windows Forms Avançado - Como rolar as linhas de um TextBox para o topo (parte superior) usando a API do WindowsQuantidade de visualizações: 7590 vezes |
|
Em algumas situações gostaríamos de rolar para cima o conteúdo de um TextBox de múltiplas. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_TOP para seu parâmetro wParam. O valor do parâmetro lParam é zero. Veja um trecho de código que rola para cima o conteúdo de um TextBox. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem. Comece adicionando a linha: using System.Runtime.InteropServices; na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método:
[DllImport("user32.dll", EntryPoint = "SendMessage",
CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg,
IntPtr wParam, IntPtr lParam);
Finalmente coloque o código abaixo no evento Click de um botão:
private void button2_Click(object sender, EventArgs e){
// antes de executar este exemplo certifique-se de que
// a propriedade Multiline do TextBox esteja definida
// como true e a propriedade ScrollBars contenha o valor
// Vertical ou Both
textBox1.Multiline = true;
textBox1.ScrollBars = ScrollBars.Vertical;
// constante para a mensagem WM_VSCROLL
const uint WM_VSCROLL = 0x115;
// constante para o parâmetro wParam
const int SB_TOP = 6;
// handle para a caixa de texto
IntPtr handle = textBox1.Handle;
IntPtr wParam = (IntPtr)SB_TOP;
IntPtr lParam = IntPtr.Zero;
// vamos fazer com que o TextBox role para o topo (parte superior)
SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam);
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |



