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:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercícios Resolvidos de Java - Usando laços for aninhados para desenhar uma pirâmide de números em Java (com o usuário informando a quantidade de linhas)

Quantidade de visualizações: 9547 vezes
Pergunta/Tarefa:

Escreva um programa Java que solicita ao usuário um número inteiro. Este número inteiro deverá estar entre 1 e 12 e será usado como a quantidade de linhas em uma pirâmide de números. Você deverá usar laços for aninhados para controlar as linhas e montar a estrutura desejada.

Sua saída deverá ser parecida com:

Informe a quantidade de linhas: 5

              1
           2  1  2
        3  2  1  2  3
     4  3  2  1  2  3  4
  5  4  3  2  1  2  3  4  5
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
      
    // vamos solicitar a quantidade de linhas
    System.out.print("Informe a quantidade de linhas: ");
    int numLinhas = Integer.parseInt(entrada.nextLine());
    
    // não queremos aceitar quantidades de linhas menores que 1 
    // ou maiores que 12
    if((numLinhas < 1) || (numLinhas > 12)){
      System.out.println("O número de linhas deve estar entre 1 e 12");
      System.exit(0);
    }
    
    // este laço externo controla as linhas
    System.out.println();
    for(int linha = 1; linha <= numLinhas; linha++){
      // este laço gera os espaços antes de cada número nas 
      // linhas da pirâmide
      for (int coluna = 1; coluna <= (numLinhas - linha); coluna++){
        System.out.print("   "); // três espaços aqui
      }
      
      // aqui nós exibimos os números de cada linha do lado
      // esquerdo da pirâmide, até o centro
      for(int i = linha; i >= 1; i--){
        // o número da linha é maior ou igual a 10? se for 
        // colocamos um espaço antes do número
        if(i >= 10){
          System.out.print(" " + i);  
        }
        else{ // o número da linha é menor que 10? vamos 
          //colocar dois espaços antes do número
          System.out.print("  " + i);  
        }
      }
      
      // e finalmente exibimos os números de cada linha no 
      // lado direito da pirâmide
      for (int i = 2; i <= linha; i++){
        // o número da linha é maior ou igual a 10? se for 
        // colocamos um espaço antes do número
        if(i >= 10){
          System.out.print(" " + i);  
        }
        else{ // o número da linha é menor que 10? vamos 
          // colocar dois espaços antes do número
          System.out.print("  " + i);  
        }
      }
      
      // gera uma nova linha
      System.out.println();
    }
    
    System.out.println();
  }
}



Python ::: wxPython ::: Gerenciadores de Layout do wxPython

Como usar o gerenciador de layout BoxSizer em suas aplicações wxPython

Quantidade de visualizações: 829 vezes
O gerenciador de layout BoxSizer do wxPython é o mais comum em aplicações Python usando interfaces gráficas do usuário, ou seja, aplicações GUI.

Este gerenciador de layout nos permite agrupar vários controles em uma linha ou coluna, e podemos ainda colocar um BoxSizer dentro de outro BoxSizer, o que resulta em layouts bem mais complexos.

Para definir se os controles serão colocados na vertical ou horizontal nós podemos usar os valores wx.VERTICAL ou wx.HORIZONTAL no construtor da classe BoxSizer para ajustar a orientação do layout.

Veja uma aplicação wxPython completa na qual colocamos três botões wx.Button na janela principal do programa, dispostos na horizontal:

# vamos importar o framework wxPython 
import wx

# classe que representará a janela principal da
# aplicação wxPython
class JanelaPrincipal(wx.Frame):
  # o método construtor
  def __init__(self, *args, **kw):
    # chama o construtor da classe wx.Frame
    super(JanelaPrincipal, self).__init__(*args, **kw)

    # chama a função que inicializa a GUI
    self.InicializarGUI()

  # função que inicializa a GUI do programa
  def InicializarGUI(self):
    # vamos criar um painel
    painel = wx.Panel(self)
    # definimos a cor de fundo para o painel
    painel.SetBackgroundColour(wx.WHITE)
    
    # criamos um BoxSizer
    vbox = wx.BoxSizer(wx.HORIZONTAL)

    # vamos criar três botões e adicioná-los ao BoxSizer
    btn1 = wx.Button(painel, label='Produtos', size=(90, 30)) 
    btn2 = wx.Button(painel, label='Clientes', size=(90, 30))
    btn3 = wx.Button(painel, label='Fornecedores', size=(90, 30))
    vbox.Add(btn1, flag=wx.LEFT|wx.TOP, border=10)
    vbox.Add(btn2, flag=wx.LEFT|wx.TOP, border=10)
    vbox.Add(btn3, flag=wx.LEFT|wx.TOP, border=10)

    # colocamos o sizer no painel
    painel.SetSizer(vbox)

    # definimos o tamanho da janela
    self.SetSize((450, 350))
    # definimos o título da janela
    self.SetTitle('O gerenciador de layout BoxSizer')
    # e centralizamos a janela
    self.Centre()

# função principal do programa Python
def main():
  # vamos criar a aplicação wxPython
  app = wx.App()
  janela_principal = JanelaPrincipal(None)
  janela_principal.Show()
  app.MainLoop()

if __name__ == "__main__":
  main()

Note o uso de um objeto wx.Panel para a criação de um painel no qual colocaremos o BoxSizer. Observe também o uso das flags wx.LEFT|wx.TOP para ajustarmos as bordas ao redor de cada um dos botões inseridos no gerenciador de layout.


C++ ::: STL (Standard Template Library) ::: Vector C++

Como retornar uma referência ao último elemento de um vector C++ usando a função back()

Quantidade de visualizações: 7600 vezes
O último elemento de um contêiner STL vector pode ser acessado por meio da função back(). Como esta função é sobrecarregada, temos duas opções:

reference back();
const_reference back() const;  
A primeira versão é do tipo T&, ou seja, retorna uma referência ao último elemento. 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 o valor do último elemento do vector
  // Note que back() pode ser usada dos dois lados
  // de uma operação de atribuição
  int valor = valores.back();
  cout << "Último elemento: " << valor << endl;

  // vamos alterar o valor do último elemento
  valores.back() = 102;

  // vamos testar o resultado
  cout << "Último elemento: " << valores.back() << endl;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Último elemento: 87
Último elemento: 102

Note que aqui nós usamos:

int valor = valores.back();

para guardar o valor do último elemento na variável valor. Poderíamos também usar:

int& valor = valores.back();
valor = 102;

Agora valor é uma referência direta ao último elemento do vector. Desta forma, qualquer alteração no valor da variável valor afetará também o último elemento do vector.

Observe agora o seguinte trecho de código:

int valor = valores.back(); // o último elemento é 87
valores.back() = 20;
cout << "Último elemento: " << valor << endl;

Aqui nós acessamos o valor do último elemento, guardarmos-o na variável valor e atribuímos o valor 20 à valores.back(). Porém, ao imprimirmos a variável valor o seu conteúdo ainda é 87. De fato, o que gostaríamos é que uma alteração em valores.back() afetasse também a variável valor. Assim:

int& valor = valores.back(); // o último elemento é 87
valores.back() = 20;
cout << "Último elemento: " << valor << endl;

Mas, como evitar alterações diretas na variável valor? Podemos declarar valor como uma referência constante, ou seja, usar a segunda versão da função back(), a saber const T&, que retorna uma referência constante. Veja:

const int& valor = valores.back(); // o último elemento é 87
valores.back() = 20;
valor = 300; // esta linha não compila
cout << "Último elemento: " << valor << endl;

Agora o efeito que queríamos é alcançado. Alterações em valores.back() afetam a variável valor, mas, não podemos alterar valor diretamente, já que esta variável é uma referência constante agora.


Python ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço while do Python - Python para iniciantes

Quantidade de visualizações: 16117 vezes
O laço while da linguagem Python permite executar um bloco de códigos repetidamente até que uma condição seja verdadeira. Opcionalmente, uma cláusula else pode ser usado com o while em Python (a parte else será executada mesmo que o corpo principal do laço não seja executado). Veja um exemplo:

# função principal do programa
def main():
  numero = 0
 
  while numero <= 10:
    print(numero)
    numero = numero + 1
  else:
    print("Terminei")
  
if __name__== "__main__":
  main()

Ao executarmos este código Python nós teremos o seguinte resultado:

0
1
2
3
4
5
6
7
8
9
10
Terminei

Veja um exemplo de um laço while que nunca será executado:

# função principal do programa
def main():
  numero = 0
 
  while numero > 10:
    print(numero)
    numero = numero + 1
  
if __name__== "__main__":
  main()

E agora um exemplo de laço usando um valor booleano:

# função principal do programa
def main():
  continuar = True
  valor = 0
 
  while continuar:
    print(valor)
   
    if valor > 5:
      continuar = False
    else:
      valor = valor + 1
  
if __name__== "__main__":
  main()

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

0
1
2
3
4
5
6


Java ::: Pacote java.lang ::: String

Como comparar strings em Java usando os métodos compareTo() e compareToIgnoreCase() da classe String

Quantidade de visualizações: 9405 vezes
Em algumas situações precisamos efetuar comparação léxica de strings, ou seja, verificar se uma palavra ou frase é "igual, ""maior" ou "menor" que outra. Isso pode ser feito por meio do uso dos métodos compareTo() e compareToIgnoreCase() da classe String (definidos originalmente na interface Comparable<String>).

Veja a assinatura do método compareTo():

public int compareTo(String anotherString)

O retorno do método é 0 se a duas strings são iguais. O retorno será menor que 0 se a string na qual o método está sendo chamado for menor que a string passada como argumento. O retorno será maior que 0 se a string na qual o método está sendo chamado for maior que a string passada como argumento.

Veja um exemplo de comparação léxica de duas strings:

public class Main {
  public static void main(String[] args) {
    // vamos declarar duas strings
    String nome1 = "Márcio";
    String nome2 = "Márcia";
    
    // vamos comparar as duas strings lexicamente
    if(nome1.compareTo(nome2) == 0){
      System.out.println("As strings são iguais");
    }
    else if(nome1.compareTo(nome2) > 0){
      System.out.println("A primeira string é maior que a segunda");
    }
    else{
      System.out.println("A primeira string é menor que a segunda");
    }
  }
}

Ao executarmos este código teremos o seguinte resultado:

A primeira string é maior que a segunda

A funcionalidade fornecida pelo método compareToIgnoreCase() é semelhante à aquela do método compareTo(). A diferenção é que, quando usamos compareToIgnoreCase(), o método não diferencia letras maiúsculas de letras minúsculas.

A comparação efetuada pelos métodos compareTo() e compareToIgnoreCase() é baseada no valor Unicode de cada caractere na string. A sequencia de caracteres representada pelo objeto String é comparada lexicamente com a sequencia de caracteres representada pela string fornecida como argumento.


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 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 Apenas R$ 19,90


© 2026 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 19 usuários muito felizes estudando em nosso site.