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.

Você está aqui: Cards de Ética e Legislação Profissional
Card 1 de 8
Noções de licitação pública

Modalidades da licitação:

Convite é a modalidade dirigida para interessados do ramo do objeto da licitação e é adequado para contratações de menor valor. Na Lei n.º 14.133/2021, essa modalidade foi extinta.

Leilão é a modalidade para a venda de bens móveis que não servem mais para a administração pública, a venda de produtos legalmente apreendidos ou penhorados e para a alienação de imóveis da administração pública.

Concurso é a modalidade indicada para a escolha de um trabalho técnico, artístico ou científico.

Pregão é a modalidade de licitação para aquisição de bens e serviços comuns. No artigo 1º, parágrafo único, da Lei n.º 10.520/2002, consta que bens e serviços comuns são "aqueles cujos padrões de desempenho e qualidade possam ser objetivamente definidos pelo edital, por meio de especificações usuais no mercado". Isso significa que são bens e serviços que não têm características técnicas especiais, sendo facilmente encontrados no mercado. O pregão também foi previsto na nova lei de licitações, no artigo 28, i.

Concorrência é a modalidade indicada para contratações de grandes valores, em que o interessado precisa comprovar a qualificação exigida no edital.

Filtrar Cards
Use esta opção para filtrar os cards pelos tópicos que mais lhe interessam.
Termos:
Aviso Importante: Nos esforçamos muito para que o conteúdo dos cards e dos testes e conhecimento seja o mais correto possível. No entanto, entendemos que erros podem ocorrer. Caso isso aconteça, pedimos desculpas e estamos à disposição para as devidas correções. Além disso, o conteúdo aqui apresentado é fruto de conhecimento nosso e de pesquisas na internet e livros. Caso você encontre algum conteúdo que não deveria estar aqui, por favor, nos comunique pelos e-mails exibidos nas opções de contato.
Link para compartilhar na Internet ou com seus amigos:

Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string termina com uma determinada substring em Ruby usando uma função ends_with() personalizada

Quantidade de visualizações: 7339 vezes
O Ruby, até a versão 1.8.6 não dispõe de um método para verificar se uma string termina com uma determinada substring. Assim, veja abaixo como escrever uma função ends_with(). Esta função recebe a string e a substring e retorna true se a string terminar com a substring. Eis a listagem completa:

# função auxiliar que permite verificar se
# uma string termina com uma substring
def ends_with(string, substring)
  pos = string.length - substring.length
  
  if string.index(substring, pos) == pos   
    return true
  else
    return false
  end
end

# declara e inicializa uma variável string
frase = "Gosto muito de Java, PHP e Ruby"

# vamos verificar a string termina com "Ruby"
if ends_with(frase, "Ruby")
  puts "A string termina com \"Ruby\""
else
  puts "A string NÃO termina com \"Ruby\""
end

Ao executar este código Ruby nós teremos o seguinte resultado:

A string termina com "Ruby"


Delphi ::: VCL - Visual Component Library ::: TEdit

Como definir o conteúdo de um TEdit do Delphi em tempo de execução usando a função SendMessage() da API do Windows e a mensagem WM_SETTEXT

Quantidade de visualizações: 11829 vezes
Embora o Delphi já nos forneça as ferramentas necessárias para definir o conteúdo de um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_SETTEXT.

A função SendMessage() da API do Windows possui a seguinte assinatura em C/C++:

LRESULT SendMessage(          
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal:

// Protótipo
{$EXTERNALSYM SendMessage}
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; 
  lParam: LPARAM): LRESULT; stdcall;

// Implementação
function SendMessage; external user32 name 'SendMessageW';

Note que precisamos de um HWND (Handle) para a caixa de texto. Feito isso só precisamos enviar a mensagem WM_SETTEXT juntamente com o conteúdo a ser exibido no controle. Veja:

procedure TForm1.Button1Click(Sender: TObject);
var
  texto: String;
begin
  // conteúdo a ser definido para a caixa de texto
  texto := 'Veja isso';

  // vamos definir o conteúdo usando a função SendMessage
  // fornecendo a mensagem WM_SETTEXT
  SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(texto)));
end;

Veja que o parâmetro wParam da função SendMessage não é usado quando a mensagem é WM_SETTEXT. Desta forma só precisamos fornecer o valor 0.


Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI

Como abrir e fechar um dispositivo de saída MIDI usando Delphi

Quantidade de visualizações: 11792 vezes
Quando queremos executar sons MIDI no Windows, a primeira tarefa a ser realizada é abrir o dispositivo de saída MIDI. Isso é feito com uma chamada à função midiOutOpen() da API do Windows. Veja sua assinatura (em C):

MMRESULT midiOutOpen(
  LPHMIDIOUT lphmo,              
  UINT_PTR   uDeviceID,          
  DWORD_PTR  dwCallback,         
  DWORD_PTR  dwCallbackInstance, 
  DWORD      dwFlags             
);

Esta função está traduzida na unit MMSystem.pas do Delphi da seguinte forma:

function midiOutOpen(lphMidiOut: PHMIDIOUT; uDeviceID: UINT;
  dwCallback, dwInstance, dwFlags: DWORD): MMRESULT; stdcall;

Antes de continuarmos, vamos entender os parâmetros desta função:

lphmo - Este é um ponteiro para um HMIDIOUT (que é simplemente um Integer). Este ponteiro é preenchido com um handle identificando o dispositivo de saída MIDI aberto. Este handle é usado para identificar o dispositivo nas demais chamadas de saída MIDI.

uDeviceID - Identificador do dispositivo de saída MIDI a ser aberto. O valor 0 aqui é seguro, visto que este identifica o primeiro dispositivo na lista de dispositivos de saída. Veja minha dica "Como obter uma lista dos dispositivos de saída MIDI no sistema" para mais informações.

dwCallback - Um ponteiro para uma função de callback, um handle de evento, um identificador de thread ou um handle para uma janela ou thread chamada durante o playback do MIDI para processar mensagens relacionadas ao processo de playback. Se não houver nada a ser processado, podemos definir o valor 0 para este parâmetro. Dê uma olhada na minha dica relacionada à função MidiOutProc().

dwCallbackInstance - Dados de instância do usuário passados para a função de callback. Este parâmetro não é usado em callbacks de janela e thread. É seguro manter seu valor como 0.

dwFlags - Flag de callback para abrir o dispositivo. Por enquanto vamos manter seu valor como CALLBACK_NULL. Veja minhas outras dicas sobre o assunto para aprofundar mais neste parâmetro.

Agora que aprendemos mais sobre os parâmetros da função midiOutOpen(), vamos ver como usá-la para abrir um dispositivo de saída MIDI e tocar a nota DÓ média (aquela no meio da escala de notas possíveis). Veja o código completo para a unit:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MMSystem;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    dispositivo: HMIDIOUT; // dispositivo de saída MIDI
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  erro: Word;
begin
  erro := midiOutOpen(@dispositivo, 0, 0, 0, CALLBACK_NULL);

  // houve erro na abertura do dispositivo de saída MIDI?
  if (erro <> 0) then
    begin
      ShowMessage('Não foi possível abrir o dispositivo MIDI. Erro: ' + IntToStr(erro));
    end
  else
    begin
      ShowMessage('Dispositivo MIDI aberto com sucesso.');

      // vamos tocar uma nota para nos certificarmos de que o dispositivo
      // realmente foi aberto e está funcionando

      // vamos tocar a nota DÓ média e com velocidade máxima
      midiOutShortMsg(dispositivo, rgb($90, 60, 127));
      // vamos deixar a nota soar um pouco
      sleep(1000);
      // vamos silenciar a nota
      midiOutShortMsg(dispositivo, rgb($80, 60, 0));

      // finalmente vamos fechar o dispositivo MIDI
      midiOutClose(dispositivo);
    end;
end;

end.

O primeiro passo foi declarar uma variável do tipo HMIDIOUT:

dispositivo: HMIDIOUT;

Este é o dispositivo de saída que será usado nas demais chamadas MIDI, incluindo a função midiOutClose(), usada para fechar o dispositivo:

midiOutClose(dispositivo);

Na API do Windows está função está declarada da seguinte forma:

MMRESULT midiOutClose(
  HMIDIOUT hmo  
);

Na unit MMSystem.pas do Delphi está função está traduzida da seguinte forma:

function midiOutClose(hMidiOut: HMIDIOUT): MMRESULT; stdcall;

Veja que só precisamos fornecer o nome da variável representando o dispositivo de saída MIDI aberto no momento para que a função se encarregue de fechá-lo.


Laravel ::: Dicas de Estudo e Anotações ::: Passos Iniciais

Como efetuar uma instalação do Laravel no Windows usando o Composer

Quantidade de visualizações: 3157 vezes
O Laravel é um framework PHP livre e open-source criado por Taylor B. Otwell para o desenvolvimento de sistemas web que utilizam o padrão MVC (model, view, controller) ou seja, o padrão Modelo-Visão-Controlador. Algumas características proeminentes do Laravel são sua sintaxe simples e concisa, um sistema modular com gerenciador de dependências dedicado, várias formas de acesso a banco de dados relacionais e vários utilitários indispensáveis no auxílio ao desenvolvimento e manutenção de sistemas.

De acordo com uma pesquisa feita em Março de 2015 com desenvolvedores, o Laravel foi listado como o framework PHP mais popular de 2015, seguido pelo Symfony2, Nette, CodeIgniter, Yii2 e outros. Em Agosto de 2015, o Laravel já era o principal framework de projetos PHP no GitHub.

Laravel foi desenvolvido sob o MIT License, tendo seu código-fonte hospedado no GitHub. Atualmente encontra-se na versão 7.3.0.

Como baixar e instalar o Laravel

Para instalar o framework Laravel, direcione o seu navegador para https://getcomposer.org. Esta é a página do Composer, um gerenciador de dependências para o PHP. Para esta dica eu baixei o instalador para o Windows Composer-Setup.exe. Durante o processo de instalação, tenha o cuidado de informar o caminho do php.exe no seu sistema.

Concluída a instalação do Composer, abra uma janela de terminal e digite:

composer

Pressione Enter e você verá um resultado parecido com:

C:\Users\samsung>composer
...
  why-not              Shows which packages prevent
the given package from being installed.


Isso é um bom sinal. O Composer está pronto e já podemos continuar com a instalação do Laravel. Na mesma janela de terminal, digite o comando abaixo:

composer global require laravel/installer

Aguarde alguns minutos e você terá o seguinte resultado:

Changed current directory to 
C:/Users/samsung/AppData/Roaming/Composer
Using version ^3.1 for laravel/installer
...
Writing lock file
Generating autoload files
8 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Para testar se sua instalação do Laravel está pronta para uso, use a mesma janela de terminal ou abra uma nova e digite:

laravel --version

O resultado será algo como Laravel Installer 3.1.0.

Agora, para finalizar, crie um diretório em um local de sua preferência, entre nele e dispare o comando a seguir:

C:\Users\samsung>cd c:\estudos_laravel
c:\estudos_laravel>laravel new cadastroclientes

Pressione Enter, aguarde alguns segundos e então verifique que uma instalação fresquinha do Laravel foi feita no diretório que você indicou, e ela contém, já instaladas, todas as dependências necessárias para a criação do seu projeto.


Java ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar classes abstratas em Java - Programação Orientada a Objetos - Java POO

Quantidade de visualizações: 22545 vezes
Classes abstratas (abstract classes) não diferem muito das classes que normalmente criamos, ou seja, elas também podem possuir propriedades e métodos. Porém, não é possível criar instâncias de uma classe abstrata usando o operador new. Veja:

abstract class Pessoa{
  public String nome;
  public int idade;
}

public class Estudos{ 
  public static void main(String args[]){ 
    // cria um objeto da classe Pessoa
    Pessoa p = new Pessoa();
  } 
}

Ao tentarmos compilar este exemplo teremos a seguinte mensagem:

Estudos.java:9: Pessoa is abstract; cannot be 
instantiated
    Pessoa p = new Pessoa();
               ^
1 error


Classes abstratas geralmente contém métodos abstratos (ainda que métodos não abstratos sejam também permitidos). Um método abstrato é um método que possui apenas a assinatura. Não há implementação. Esta implementação deverá ser fornecida pela subclasse ou classe derivada. Uma classe que contém métodos abstratos deverá, obrigatoriamente, ser declarada abstrata. Veja um exemplo de um método abstrato:

public abstract class Pessoa{ 
  public abstract String getNome();
}

Se a classe não fosse declarada com o modificador abstract, teríamos a seguinte mensagem de erro de compilação:

Pessoa.java:1: Pessoa is not abstract and does 
not override abstract method getNome() in 
Pessoa
public class Pessoa{
       ^
1 error


Classes abstratas são um dos tópicos mais complicados da linguagem Java e uma dor de cabeça enorme para aqueles que estão estudando para a certificação Java. Mostramos abaixo algumas dicas resultantes de nossas pesquisas sobre o assunto.

1)Uma classe não abstrata não pode conter métodos abstratos. Se uma classe concreta (não abstrata) herda de uma classe abstrata e não implementa todos os métodos abstratos, a classe derivada deve ser declarada abstract. Além disso, métodos abstratos não podem ser marcados como static. Insistir nisso pode gerar a seguinte mensagem de erro de compilação:

Pessoa.java:2: illegal combination of 
modifiers: abstract and static
  public static abstract String getNome();
                                ^


2) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode conter construtores. Tais construtores serão invocados nos construtores das classes derivadas.

3) Uma subclasse pode ser abstrata até mesmo se sua superclasse for concreta. E isso é fácil de notar, uma vez que todas as classes Java herdam de Object, que é concreta.

4) Uma classe derivada pode sobrescrever um método de sua superclasse e declará-lo abstract. Isso faz sentido quando a classe derivada for abstract e quiser tornar o método herdado inválido.

5) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode ser usada como um tipo de dados. Esta técnica é útil quando parte do time de desenvolvedores precisa adiantar códigos que dependem de classes que ainda não foram implementadas (e, portanto, herdarão das classes abstratas usadas como tipos de dados) por outra parte do mesmo time.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

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