![]() |
|
|
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 Ética e Legislação Profissional |
||
|
||
|
|
||
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como resolver o problema da Subsequência de Soma Máxima em Java usando o Algorítmo de KadaneQuantidade de visualizações: 907 vezes |
|
Pergunta/Tarefa: O problema do Subvetor Contíguo de Soma Máxima, ou Subarray ou Subsequência de Soma Máxima é um dos algorítmos mais populares na programação dinâmica. Este problema envolve encontrar um subvetor, ou seja, um sub-array contíguo de maior soma possível. Por contíguo entendemos que os elementos da subsequência deverão estar consecutivos no vetor original. O Algorítmo de Kadane, inventado por Jay Kadane em 1977, é um dos favoritos para a resolução deste problema, e deverá ser aplicado na resolução deste exercício. Dado o vetor [-2, 1, -3, 4, -1, 2, 1, -5, 4], encontre a soma máxima da subsequência contígua. Não é exigido mostrar os elementos da sub-sequência, apenas o valor da soma máxima. Sua saída deverá ser parecida com: A soma maxima é: 6 Veja a resolução comentada deste exercício usando Java:
package estudos;
public class Estudos {
public static void main(String[] args) {
// vamos criar um array com 9 elementos
int valores[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
// agora usamos o algoritmo de Kadane para encontrar
// a maior soma consecutiva
int soma_maxima = kadane(valores);
System.out.println("A soma maxima é: " + soma_maxima);
}
// método que recebe um array e usa o algoritmo de Kadane
// para retornar a maior soma consecutiva
public static int kadane(int vetor[]){
// ajustamos max_atual para 0 e max_total para -1
int max_atual = 0, max_total = -1;
// um laço for que percorre todos os elementos do
// vetor, do primeiro até o último
for(int i = 0; i < vetor.length; i++){
// max_atual recebe ele mesmo mais o valor
// do elemento no índice i
max_atual = max_atual + vetor[i];
// se max_atual for negativo nós o ajustamos
// para zero novamente
if(max_atual < 0){
max_atual = 0;
}
// se max_atual for maior que max_total então
// max_total recebe o valor de max_atual
if(max_atual > max_total){
max_total = max_atual;
}
}
// e retornamos a soma máxima
return max_total;
}
}
|
PostgreSQL ::: Dicas & Truques ::: Comandos DDL (Data Definition Language - Linguagem de Definição de Dados) |
Como excluir uma base de dados no PostgreSQL usando o comando DDL DROP DATABASEQuantidade de visualizações: 14570 vezes |
|
Em algumas situações precisamos excluir uma base de dados no PostgreSQL. Isso pode ser feito por meio do uso do comando DLL DROP DATABASE. Este comando pode ser disparado via linha de comando SQL Shell (psql), na janela de Query do pgAdmin ou a partir de uma linguagem de programação. No entanto, é importante saber que você não conseguirá excluir uma base de dados que você ou outros usuários estejam conectados no momento. Use o comando DROP DATABASE com cuidado. Ao dispará-lo, os dados contidos na base de dados (tabelas, views, funções, triggers, etc) serão perdidos para sempre. Veja como podemos usar o comando DROP DATABASE para excluir uma base de dados chamada "estudos": DROP DATABASE estudos; Se você visualizar uma mensagem parecida com: Query returned successfully with no result in 261 ms. Então poderá estar certo de que a base de dados foi removida com sucesso. Se tentarmos excluir uma base de dados na qual alguém ainda está conectado, o PostgreSQL abortará a operação e nos exibirá a seguinte mensagem de erro: ERRO: banco de dados "estudos" está sendo acessado por outros usuários DETAIL: Há 1 outra sessão utilizando o banco de dados. ********** Error ********** ERRO: banco de dados "estudos" está sendo acessado por outros usuários SQL state: 55006 Detail: Há 1 outra sessão utilizando o banco de dados. ERRO: banco de dados "estudos" não existe ********** Error ********** ERRO: banco de dados "estudos" não existe SQL state: 3D000 DROP DATABASE IF EXISTS estudos; Agora o PostgreSQL trocará a mensagem de erro por uma mensagem de advertência: NOTA: banco de dados "estudos" não existe, ignorando Query returned successfully with no result in 14 ms. |
Python ::: Dicas & Truques ::: Lista (List) |
Como excluir e retornar um item da lista Python baseado em seu índice usando a função pop()Quantidade de visualizações: 9611 vezes |
|
Nesta dica mostrarei como é possível usar o método pop() do objeto List da linguagem Python para excluir e retornar um item de uma lista baseado em seu índice. Tudo que precisamos fazer é informar o índice do elemento a ser excluído e retornado. Veja o exemplo Python completo:
"""
Este exemplo mostra como excluir e retornar
um determinado item em uma lista
"""
def main():
# cria uma lista de inteiros
valores = [4, 23, 7, 1, 0, 54]
# imprime a lista
print(valores)
# remove um determinado item
# vamos remover o terceiro item (7)
valor = valores.pop(2)
print("Item removido:", valor)
# exibe a lista novamente
print(valores)
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: [4, 23, 7, 1, 0, 54] Item removido: 7 [4, 23, 1, 0, 54] É importante ficarmos atentos aos erros que podem ocorrer com chamadas à função pop(). Por exemplo, se a List estiver vazia, o seguinte erro será exibido: Exception has occurred: IndexError pop from empty list Se, por exemplo, fornecermos ao método pop() um índice inexistente, o seguinte erro ocorrerá: Exception has occurred: IndexError pop index out of range |
PHP ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como usar funções e variáveis globais em PHPQuantidade de visualizações: 39112 vezes |
Por padrão, variáveis definidas a nível de página, ou seja, variáveis globais, não podem ser acessadas a partir de uma função. Veja um exemplo:
<?
// variável global
$usuario = "Osmar";
function exibir(){
echo $usuario; // acessa a variável gloal
}
// chama a função
exibir();
?>
Ao executar este exemplo teremos o seguinte resultado: Notice: Undefined variable: usuario in xxx/estudos.php on line 6 Para contornar este problema, temos que empregar a palavra-chave global seguida pelo nome da variável global que queremos acessar. Veja:
<?
// variável global
$usuario = "Osmar";
function exibir(){
// permite acesso à variável global
global $usuario;
echo $usuario; // acessa a variável gloal
}
// chama a função
exibir();
?>
Ao executarmos o código novamente, percebemos que o resultado é o esperado. Outra forma de acessar variáveis globais a partir de uma função é usando $GLOBALS. Veja:
<?
// variável global
$usuario = "Osmar";
function exibir(){
echo $GLOBALS['usuario']; // acessa a variável global
}
// chama a função
exibir();
?>
|
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como retornar uma lista dos dispositivos de saída MIDI no sistema usando DelphiQuantidade de visualizações: 11572 vezes |
|
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de saída MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito. O primeiro passo é declarar uma variável do tipo TMidiOutCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIOUTCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade. O passo seguinte é obter a quantidade de dispositivos de saída MIDI. Isso é feito com uma chamada à função midiOutGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiOutGetDevCaps(), também da API do Windows: midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps)); Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiOutCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiOutCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, tipo do dispositivo MIDI, número de vozes suportadas, número máximo de notas que podem ser tocadas simultaneamente, etc. Para finalizar, nós acessamos o campo szPname do registro MidiOutCaps e o adicionamos no ComboBox. Veja o código completo a seguir:
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
MidiOutCaps: TMidiOutCaps; // este registro (record) está definido em MMSystem.pas
erro: Word;
begin
// uses MMSystem
ComboBox2.Clear;
// midiOutGetNumDevs retorna a quantidade de dispositivos de saída MIDI no sistema
for i := 0 to midiOutGetNumDevs - 1 do
begin
// vamos obter o dispositivo identificado pela variável i (uDeviceID)
erro := midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps));
if erro <> MMSYSERR_NOERROR then
raise Exception.Create('Não foi possível obter a lista de dispositivos ' +
'de saída MIDI');
// vamos adicionar o nome do dispositivo no ComboBox
ComboBox2.Items.Add(StrPas(MidiOutCaps.szPname));
end;
end;
Ao executar este código o ComboBox será preenchido com valores semelhantes à: Microsoft GS Wavetable SW Synth MPU-401 Nas demais dicas relacionadas a este assunto você deverá sempre indicar o dispositivo de saída MIDI. Geralmente você poderá fornecer os valores 0 ou 1 para as funções MIDI que pedem o ID do dispositivo de saída. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




