Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD e VBA
PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Você está aqui: Cards de Engenharia Civil - Construção Civil
Card 1 de 28
Fases de uma obra

A Planta de Localização (escala usual 1:200) identifica a posição da obra no terreno. Serve para implantar o projeto.

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 ::: Estruturas de Dados - Listas Ligadas

Exercícios Resolvidos de Java - Como inserir um nó em qualquer posição de uma lista ligada em Java - Escreva um programa Java que cria uma lista dinamicamente encadeada

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

Escreva um programa Java que cria uma lista dinamicamente encadeada (lista singularmente encadeada) e pede para o usuário inserir 5 elementos do tipo inteiro. Em seguida peça para o usuário informar um índice e um novo elemento e insira tal elemento no índice informado.

Faça a validação dos índices para que ele não saia da faixa permitida.

Sua saída deve ser parecida com:

Inserindo 5 valores na lista

Informe o 1.o valor: 8
Informe o 2.o valor: 2
Informe o 3.o valor: 4
Informe o 4.o valor: 7
Informe o 5.o valor: 3

Valores na lista: 8 -> 2 -> 4 -> 7 -> 3 -> null

Inserindo um elemento no índice k

Informe o índice desejado: 2
Informe o valor do nó: 9

Valores na lista: 8 -> 2 -> 9 -> 4 -> 7 -> 3 -> null
Resposta/Solução:

Na saída podemos ver que o índice 2 corresponde ao terceiro elemento da lista ligada. Por isso o valor 4 foi empurrado para a frente para abrir espaço para o valor 9. Se o índice 0 fosse informado, o número 8 seria empurrado para a frente e o nó com valor 9 passaria a ser o início da lista ligada.

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

package estudos;
  
import java.util.Scanner;

// classe interna usada para representar um
// nó na lista ligada
class No {
  int valor; // valor do nó
  No proximo; // aponta para o novo nó
 
  // construtor cheio da classe No
  public No(int valor, No proximo) {
    this.valor = valor;
    this.proximo = proximo;
  }
  
  // construtor vazio da classe No
  public No() {
    this.valor = 0;
    this.proximo = null;
  }
}

public class Estudos { 
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos criar uma referência para o início da lista
    No inicio = null;
    
    // vamos inserir 5 valores inteiros na lista ligada
    int valor;
    System.out.println("Inserindo 5 valores na lista\n");
    for (int i = 0; i < 5; i++) {
      System.out.print("Informe o " + (i + 1) + ".o valor: ");
      valor = Integer.parseInt(entrada.nextLine());
      // vamos inserir este valor no final da lista
      inicio = inserirFinal(inicio, valor);
    }
    
    // vamos exibir os valores na lista ligada
    System.out.print("\nValores na lista: ");
    exibirLista(inicio);
    
    // vamos inserir um novo elemento no índice informado
    System.out.println("\nInserindo um elemento no índice k\n");
    System.out.print("Informe o índice desejado: ");
    int indice = Integer.parseInt(entrada.nextLine());
    
    // o índice é válido?
    if ((indice < 0) || (indice > tamanhoLista(inicio) - 1)) {
      System.out.println("O índice é inválido.");
    }
    else {
      // vamos inserir o novo nó no índice indicado
      System.out.print("Informe o valor do nó: ");
      valor = Integer.parseInt(entrada.nextLine());
      inicio = inserirIndice(inicio, indice, valor);
      
      // vamos exibir os valores na lista ligada
      System.out.print("\nValores na lista: ");
      exibirLista(inicio);
    }
  }
  
  // função que permite adicionar um nó em uma determinada
  // posição da lista ligada
  public static No inserirIndice(No inicio, int indice, int valor) {
    // vamos apontar para o nó inicial
    No atual = inicio;
    // criamos um novo nó
    No novo = criarNo(valor);
    
    // a lista ligada ainda está vazia?
    if (atual == null){
      // inicio recebe o novo nó
      inicio = novo;
    }
    else if (indice == 0) {
      // o índice é igual a 0? vamos inserir
      // o nó no início da lista ligada
      novo.proximo = inicio;
      inicio = novo;
    }
    else {
      // vamos procurar o local adequado para inserção
      // primeiro criamos um nó temporário
      No temp = new No();
      // apontamos o nó temporário para o início da lista
      temp = inicio;
      // e percorremos os nós até encontrar a posição
      // de inserção
      for(int i = 1; i < indice; i++) {
        if (temp != null) {
          // passa para o próximo nó
          temp = temp.proximo;
        }
      }
   
      // concluimos a inserção
      novo.proximo = temp.proximo;
      temp.proximo = novo;
    }
    
    // e retornamos o início da lista
    return inicio;
  }

  // função que permite adicionar um nó no final da
  // lista ligada
  public static No inserirFinal(No inicio, int valor) {
    // vamos apontar para o nó inicial
    No atual = inicio;
    // criamos um novo nó
    No novo = criarNo(valor);
  
    // a lista ligada ainda está vazia?
    if (atual == null){
      // inicio recebe o novo nó
      inicio = novo;
    }    
    else { // temos um ou mais nós na lista ligada
      // vamos localizar o último nó
      while (atual.proximo != null) {
        atual = atual.proximo;
      }
       
      // encontramos o último nó. Agora vamos inserir
      // o novo nó depois dele
      atual.proximo = novo;
    }
     
    // e retornamos o início da lista
    return inicio;
  }
  
  // função usada para construir e retornar um novo nó
  public static No criarNo(int valor) {
    // cria o novo nó
    No no = new No(valor, null);
    // retorna o nó criado
    return no;
  }
  
  // função usada para percorrer a lista ligada e
  // exibir os valores contidos em seus nós
  public static void exibirLista(No inicio) {
    // vamos apontar para o início da lista
    No temp = inicio;
    
    // a lista está vazia?
    if (temp == null) {
      System.out.println("A lista está vazia.");
    }
    else {
      // esse laço se repete enquanto tempo for
      // diferente de null
      while (temp != null) {
        // vamos mostrar o valor desse nó
        System.out.print(temp.valor + " -> ");
        // avança para o próximo nó
        temp = temp.proximo;
      }
    
      // mostra o final da lista
      System.out.println("null");
    }
  }
  
  // função que retorna a quantidade de nós na lista ligada
  public static int tamanhoLista(No inicio) {
    int tamanho = 0;
    
    // vamos apontar para o início da lista
    No temp = inicio;
    
    // a lista está vazia?
    if (temp == null) {
      return 0;
    }
    else {
      // esse laço se repete enquanto tempo for
      // diferente de null
      while (temp != null) {
        // vamos incrementar o tamanho
        tamanho++;
        // avança para o próximo nó
        temp = temp.proximo;
      }
    }
    
    return tamanho;
  }
}



Java ::: Fundamentos da Linguagem ::: Tipos de Dados

Apostila Java para iniciantes - Como usar o tipo de dados referência em seus códigos Java

Quantidade de visualizações: 11878 vezes
O Java contém 8 tipos de dados primitivos e um tipo referência. No entanto, poucos livros dedicam exemplos a este último tipo. Vamos começar analisando o trecho de código abaixo:

public class Estudos{
  public static void main(String args[]){
    String nome = "Osmar J. Silva";  

    System.out.println(nome);    

    System.exit(0);
  }
}

Se observarmos este código, veremos que a variável nome não é um tipo primitivo e sim uma referência. Desta forma, qualquer variável ou constante que não seja do tipo primitivo é uma referência a um objeto de uma classe, interface, etc. Arrays não são tipos primitivos também. Assim, variáveis ou constantes que apontam para arrays (vetores e matrizes) também são referências.

É importante entender bem a noção de referências, visto que é por meio delas que acessamos um determinado objeto na memória. Além disso, como objetos e arrays são sempre passados por referência aos métodos Java, fica fácil entender como várias referências podem apontar para o mesmo objeto ao mesmo tempo. E, caso você tenha esquecido, os tipos primitivos nunca são passados por referêcia aos métodos. Em vez disso, eles são passados por valor (o que quer dizer que uma alteração nos argumentos fornecidos ao métodos não altera a cópia original da variável).


C ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de C - Ler os lados de um triângulo e informar se ele é isósceles, escaleno ou equilátero

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

Um triângulo é uma forma geométrica (polígono) composta de três lados, sendo que cada lado é menor que a soma dos outros dois lados. Assim, para que um triângulo seja válido, é preciso que seus lados A, B e C obedeçam à seguinte regra:

A < (B + C), B < (A + C) e C < (A + B).

Escreva um programa C que leia os três lados de um triângulo e verifique se tais valores realmente formam um triângulo. Se o teste for satisfatório, informe se o triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados iguais).

Sua saída deverá ser parecida com:

Informe o primeiro lado do triângulo: 30
Informe o segundo lado do triângulo: 40
Informe o terceiro lado do triângulo: 60
O triângulo é escaleno
Resposta/Solução:

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

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
  
int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português
  
  int lado_a, lado_b, lado_c;
    
  // vamos ler o primeiro lado do triângulo
  printf("Informe o primeiro lado do triângulo: ");
  scanf("%d", &lado_a);
    
  // vamos ler o segundo lado do triângulo
  printf("Informe o segundo lado do triângulo: ");
  scanf("%d", &lado_b);
    
  // vamos ler o terceiro lado do triângulo
  printf("Informe o terceiro lado do triângulo: ");
  scanf("%d", &lado_c);
    
  // os lados informados formam um triângulo?
  if((lado_a < (lado_b + lado_c)) && (lado_b < (lado_a + lado_c)) 
    && (lado_c < (lado_a + lado_b))){
    // é um triângulo equilátero (todos os lados iguais)?
    if((lado_a == lado_b) && (lado_b == lado_c)){
      printf("\nO triângulo é equilátero\n");  
    }
    else{
      // é isósceles (dois lados iguais e um diferente)?
      if((lado_a == lado_b) || (lado_a == lado_c) || (lado_c == lado_b)){
        printf("\nO triângulo é isósceles\n");  
      }
      else{
        // é escaleno
        printf("\nO triângulo é escaleno\n");
      }
    }
  }
  else{
    printf("\nOs lados informados não formam um triângulo.\n");
  }
  
  printf("\n\n");
  system("pause");
  return 0;
}



Delphi ::: VCL - Visual Component Library ::: TListBox

Como usar um laço for para pesquisar valores nos itens de uma ListBox do Delphi

Quantidade de visualizações: 13072 vezes
Nesta dica mostro como é possível pesquisar valores nos itens de uma ListBox. Note que, se o valor pesquisado for encontrado, nós o selecionamos na lista e informamos seu índice. Se não for encontrado nós ajustamos uma variável Boolean e avisamos do não sucesso da operação. Finalmente note que este código faz diferenciação de letras maiúsculas e minúsculas, ou seja, Osmar será diferente de OSMAR. Veja o código:

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  pesquisa: string;
  encontrou: Boolean;
begin
  // vamos solicitar o texto a ser pesquisado na ListBox
  pesquisa := InputBox('Pesquisar', 'Informe o texto', '');
  encontrou := false;

  // vamos usar um laço for para percorrer todos os itens
  // da ListBox
  for i := 0 to ListBox1.Count - 1 do
    begin
      if ListBox1.Items[i] = pesquisa then
        begin
          encontrou := true;
          // vamos selecionar o item encontrado
          ListBox1.ItemIndex := i;
          ShowMessage('O texto pesquisado foi encontrado ' +
            'no índice ' + IntToStr(ListBox1.ItemIndex));
        end;
    end;

    // não foi encontrado?
    if not encontrou then
      begin
        ShowMessage('O texto pesquisado não foi encontrado.');
      end;
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercícios Resolvidos de Python - Como calcular o peso de uma pessoa na Lua usando Python

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

Escreva um programa Python que leia o peso de uma pessoa na Terra e retorne o seu peso na Lua. Lembre-se da seguinte fórmula:

\[\text{Peso na Lua} = \frac{\text{Peso na Terra}}{9,81} \times 1,622 \]

Aqui nós estamos definindo a força da gravidade na Terra como 9,81 m/s2 e a força da gravidade na Lua como 1,622 m/s2. Se você quiser calcular o peso de uma pessoa em Marte, por exemplo, basta trocar a força da gravidade na Lua pela força da gravidade em Marte.

Sua saída deverá ser parecida com:

Peso na terra (kg): 70
O peso da pessoa na Lua é: 11.57 kg
Resposta/Solução:

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

# função principal do programa
def main():
  # vamos ler o peso da pessoa na Terra
  peso_terra = float(input("Peso na terra (kg): "))
  
  # vamos calcular o peso da pessoa na Lua
  peso_lua = (peso_terra / 9.81) * 1.622 
  # arredonda para duas casas decimais
  peso_lua = round(peso_lua, 2)

  # vamos mostrar o resultado
  print("O peso da pessoa na Lua é: {0} kg".format(peso_lua))

if __name__== "__main__":
  main()



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

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.


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