Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.
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
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Fenômenos dos Transportes, Hidráulica e Drenagem

Exercício Resolvido de Python - Como calcular o Número de Reynolds em Python - Leite integral a 293 K, massa específica de 1030 kg/m3 e viscosidade de 2,12.10-3 N.s/m2 está escoando a uma razão

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

O Número de Reynolds é uma quantidade adimensional usada na mecânica dos fluidos para prever padrões de fluxo em diferentes situações de escoamento de fluidos. É definido como a razão entre forças inerciais e forças viscosas dentro de um fluido.

1) Leite integral a 293 K, massa específica de 1030 kg/m3 e viscosidade de 2,12.10-3 N.s/m2 está escoando a uma razão de 0,605 kg/s em uma tubulação de 63,5 mm de diâmetro.

a) Calcule o número de Reynolds. O escoamento é laminar ou turbulento?
b) Calcule a vazão em m3/s para um número de Reynolds de 2100 e a velocidade em m/s.

Sua saída deverá ser parecida com:

Informe a Massa Específica do fluido (kg/m3): 1030
Informe a Viscosidade Dinâmica do fluido (N.s/m2): 2.12e-3
Informe a Vazão Mássica (kg/s): 0.605
Informe o Diâmetro da Tubulação (mm): 63.5

A área da tubulação é: 0.003166921744359361 m2
A vazão volumétrica do fluido é: 0.000587378640776699 m3/s
A velocidade de escoamento do fluido é: 0.18547305181218499 m/s
O Número de Reynolds é: 5722.106110271679

Informe o novo Número de Reynolds: 2100
A nova velocidade de escoamento do fluido é: 0.06806819050531304 m/s
A nova vazão volumétrica do fluido é: 0.0002155666326104713 m3/s
Resposta/Solução:

O primeiro passo para a resolução deste exercício é nos lembrarmos da Fórmula do Número de Reynolds:

\[R_e = \frac{\rho \cdot v \cdot D}{\mu} \] Onde:

[[rho]] é a massa específica do fluido medida em kg/m3;

v = velocidade média do fluido em m/s;

D = diâmetro para o fluxo do tubo em metros (m);

[[mu]] é a viscosidade dinâmica do fluido em N.s/m2.

Obs.: No código eu mostro como fazer as conversões de unidades necessárias.

Veja a resolução completa para o exercício em Python, comentada linha a linha:

# vamos importar a biblioteca Math
import math

# método principal
def main():
  # vamos ler a massa específica da água
  massa_especifica = float(input("Informe a Massa Específica (kg/m3): "))

  # vamos ler a viscosidade dinâmica do fluido
  viscosidade_dinamica = float(input("Informe a Viscosidade (N.s/m2): "))

  # vamos ler a vazão mássica
  vazao_massica = float(input("Informe a Vazão Mássica (kg/s): "))

  # vamos ler o diâmetro da tubulação
  diametro = float(input("Informe o Diâmetro da Tubulação (mm): "))

  # o primeiro passo é calcular a área da seção transversal da tubulação
  # a) convertemos milímetros para metros
  diametro = diametro / 1000.0
  # b) calculamos a área em metros quadrados
  area = (math.pi * math.pow(diametro, 2) / 4)  
  
  # vamos converter a vazão mássica em vazão volumétrica
  vazao = vazao_massica / massa_especifica

  # vamos obter a velocidade de escoamento do fluido
  velocidade = vazao / area

  # e finalmente calculamos o Número de Reynolds
  numero_reynolds = (massa_especifica * velocidade * diametro) / viscosidade_dinamica

  # mostramos os resultados
  print("\nA área da tubulação é: {0} m2".format(area))
  print("A vazão volumétrica do fluido é: {0} m3/s".format(vazao))
  print("A velocidade de escoamento do fluido é: {0} m/s".format(velocidade))
  print("O Número de Reynolds é: {0}".format(numero_reynolds))

  # vamos ler o novo Número de Reynolds
  novo_numero_reynolds = float(input("\nInforme o novo Número de Reynolds: "))

  # vamos calcular a velocidade para o novo Reynolds  
  nova_velocidade = ((viscosidade_dinamica * novo_numero_reynolds)
    / (massa_especifica * diametro))
  print("A nova velocidade de escoamento do fluido é: {0} m/s".format(nova_velocidade))

  # vamos calcular a nova vazão volumétrica
  nova_vazao = area * nova_velocidade
  print("A nova vazão volumétrica do fluido é: {0} m3/s".format(nova_vazao))

if __name__== "__main__":
  main()

O primeiro Número de Reynolds, ou seja, 5722.1061, caracteriza o escoamento como turbulento, pois é maior que 2400. Já o Número de Reynolds 2100 caracteriza o escoamento como escoamento de transição (saindo do escoamento laminar e indo para o escoamento turbulento), já que é maior que 2000 e menor que 2400.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Java - Como corrigir o erro ArrayIndexOutOfBoundsException ao usar um laço for para percorrer os elementos de um array

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

Observe o seguinte trecho de código:

public static void main(String[] args){
  // um vetor de inteiros contendo cinco elementos
  int valores[] = {5, 32, 9, 10, 6};
    
  // vamos usar um laço for para exibir os valores dos elementos
  // do vetorz
  for(int i = 0; i <= 5; i++){
    System.out.println("O valor do " + (i + 1) + "º elemento é " + valores[i]);
  }
}
Quando tentamos executar este código temos um erro do tipo ArrayIndexOutOfBoundsException. Veja a saída produzida:

O valor do 1º elemento é 5
O valor do 2º elemento é 32
O valor do 3º elemento é 9
O valor do 4º elemento é 10
O valor do 5º elemento é 6
Exception in thread "main" 
   java.lang.ArrayIndexOutOfBoundsException: 5
   at javaapplication1.Main.main(Main.java:14)
Java Result: 1
Você é capaz de descobrir a causa do lançamento desta exceção? O erro no código é de sintáxe ou de lógica?

Resposta/Solução:

O erro no código é de lógica. Como temos cinco elementos no vetor
e o índice do último elemento é 4 (o índice do primeiro elemento é 0),
o valor da variável de controle do laço for não pode ultrapassar 4. No
código acima o valor da variável i vai até 5, o que provoca um erro 
ao tentar acessar um elemento do vetor que não existe.

Para corrigir o erro, basta alterar a linha:

for(int i = 0; i <= 5; i++){

para:

for(int i = 0; i < 5; i++){



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: 12856 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 ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de Python - Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B

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

Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B com seus elementos distribuídos da seguinte forma:

Vetor A = [8, 5, 4, 1, 2, 3, 4, 6, 9, 7]
Vetor B = [24, 10, 12, 2, 6, 6, 12, 12, 27, 14]

Note que os elementos do vetor B seguem um padrão. Se o elemento do vetor A estiver em uma posição par, então o elemento do vetor B será o triplo do elemento do vetor A. Caso contrário o elemento do vetor B será o dobro do elemento do vetor A.

Neste exercício a primeira posição/índice dos vetores é assumida como sendo zero. Em algumas linguagens de programação o primeiro índice é um e não zero.

Sua saída deverá ser parecida com:

Informe o valor do 1.o elemento: 8
Informe o valor do 2.o elemento: 5
Informe o valor do 3.o elemento: 4
Informe o valor do 4.o elemento: 1
Informe o valor do 5.o elemento: 2
Informe o valor do 6.o elemento: 3
Informe o valor do 7.o elemento: 4
Informe o valor do 8.o elemento: 6
Informe o valor do 9.o elemento: 9
Informe o valor do 10.o elemento: 7

Elementos do vetor A:

8,  5,  4,  1,  2,  3,  4,  6,  9,  7  

Elementos do vetor B:

24,  10,  12,  2,  6,  6,  12,  12,  27,  14
Resposta/Solução:

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

# função principal do programa
def main():
  # vamos declarar e construir dois vetores de 10 inteiros
  vetor_a = [0 for x in range(10)]
  vetor_b = [0 for x in range(10)]

  # agora vamos pedir para o usuário informar os valores
  # dos elementos do vetor A
  for i in range(len(vetor_a)):
    vetor_a[i] = int(input("Valor do %d.o elemento: " % ((i + 1))))
    
  # vamos construir o vetor B
  for i in range(len(vetor_b)):
    # o índice atual é par?
    if i % 2 == 0:
      vetor_b[i] = vetor_a[i] * 3
    else:
      vetor_b[i] = vetor_a[i] * 2
      
  # vamos mostrar os elementos do vetor A
  print("\nElementos do vetor A:\n")
  for i in range(len(vetor_a)):
    print("%d,  " % vetor_a[i], end=' ')

  # vamos mostrar os elementos do vetor B
  print("\n\nElementos do vetor B:\n")
  for i in range(len(vetor_b)):
    print("%d,  " % vetor_b[i], end=' ')

if __name__== "__main__":
  main()



Python ::: Dicas & Truques ::: Lista (List)

Como remover e retornar um item aleatório em uma lista Python usando a função pop() e um número randômico

Quantidade de visualizações: 9565 vezes
Em dicas anteriores eu mostrei como é possível usar o método pop() do objeto List da linguagem Python para remover elementos no início, final e em determinadas posições de uma lista. Agora mostrarei como é possível fornecer um índice aleatório para a função pop(), de forma a sortear o elemento que estará sendo removido. Note que o número randômico deverá estar nas faixas de índices aceitáveis.

Veja o exemplo Python completo:

"""
  Este exemplo mostra como excluir e retornar
  um ítem aleatório em uma lista
"""
 
import random

def main():
  # cria uma lista de inteiros
  valores = [4, 23, 7, 1, 0, 54]
 
  # imprime a lista
  print(valores)
 
  # remove um ítem aleatório
  valor = valores.pop(random.randrange(0, len(valores)))
  print("Item removido:", valor)
 
  # exibe a lista novamente
  print(valores)

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos um resultado parecido com:

[4, 23, 7, 1, 0, 54]
Item removido: 54
[4, 23, 7, 1, 0]


C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço do...while da linguagem C#

Quantidade de visualizações: 11896 vezes
O laço do...while (faça...enquanto) é usado quando queremos repetir uma instrução ou bloco de instruções ENQUANTO uma condição for satisfatória. A única diferença entre este laço e o laço while, é que, no laço do...while a condição de parada é testada após a iteração, o que garante que o laço do...while será executado no mínimo uma vez. No laço while a condição é testada antes da iteração. Veja um exemplo:

static void Main(string[] args){
  int valor = 1;

  do{
    Console.WriteLine("{0}", valor);
    valor++;
  }while(valor <= 10);

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

Este trecho de código conta de 1 até 10. Veja que após cada iteração do laço nós testamos se o valor da variável de controle é menor ou igual a 10. A próxima iteração acontece somente se esta condição for satisfeita. Note ainda que dentro de cada iteração nós incrementamos o valor da variável de controle. Isso é feito para que o laço não seja executado infinitamente.

Veja um outro exemplo de laço do...while, desta vez simulando um menu de opções:

static void Main(string[] args){
  // variável que registra a opção do usuário
  int opcao;

  // laço do..while que mostra as opções do menu enquanto
  // o valor -1 não for informado
  do{
    // lê a opção
    Console.Write("Informe a opção 1, 2 ou 3" +
      " (-1 para sair): ");
    opcao = int.Parse(Console.ReadLine());

    switch (opcao){
      case 1:
        Console.WriteLine("Executando a opção 1");
        break;
      case 2:
        Console.WriteLine("Executando a opção 2");
        break;
      case 3:
        Console.WriteLine("Executando a opção 3");
        break;
      default:
        Console.WriteLine("Opção incorreta");
        break;
    }
  }while(opcao != -1);

  Console.WriteLine("\n\nPressione uma tecla para sair...");
  Console.ReadKey();
}

O laço do...while não é tão usado quanto o laço while. Use-o naquelas situações em que o laço deverá ser executado no mínimo uma vez.


Java ::: Dicas & Truques ::: Arquivos e Diretórios

Como adicionar conteúdo a um arquivo texto existente em Java usando BufferedWriter e FileWriter

Quantidade de visualizações: 112 vezes
Nesta dica mostrarei como podemos usar as classes BufferedWriter e FileWriter da linguagem Java para adicionar mais conteúdo a um arquivo texto já existente. Veja que só precisamos fornecer o valor true para o segundo parâmetro do construtor da classe FileWriter.

Eis o código completo para o exemplo:

package estudos;

import java.io.*;

public class Estudos {

  public static void main(String[] args) {
    try {
      BufferedWriter out = new BufferedWriter(
        new FileWriter("C:\\estudos_java\\conteudo.txt", true));
      out.write("Esta é a primeira linha de texto\r\n");
      out.write("Esta é a segunda linha de texto");
      out.close();
    } 
    catch (IOException e) {
      System.out.println("Err: " + e.getMessage());
    }

    System.out.println("Acabei de adicionar conteúdo ao arquivo");

    System.exit(0);
  }
}

Execute este código Java algumas vezes e veja como o novo conteúdo é adicionado ao conteúdo já existente no arquivo texto.


LISP ::: Dicas & Truques ::: Matemática e Estatística

Como calcular raiz quadrada em Lisp usando a função sqrt

Quantidade de visualizações: 1450 vezes
A raiz quadrada de um algarismo é dada por um número positivo n, que ao ser elevado ao quadrado (multiplicado por ele mesmo), se iguala a x. Na área da matemática, a raiz quadrada auxilia na resolução de vários problemas, entre eles as equações de segundo grau e o Teorema de Pitágoras.

Relembrando que a raiz quadrada é o inverso da potenciação com expoente dois, temos que:

\[\sqrt{9} = 3\]

então, pela potenciação:

\[3^2 = 9\]

Agora veremos como calcular a raiz quadrada usando a função sqrt da linguagem Common Lisp. Veja o código completo:

; Vamos definir as variáveis que vamos
; usar no programa
(defvar numero)
(defvar raiz)

; Este o programa principal
(defun RaizQuadrada()
  ; Vamos ler o número
  (princ "Informe um número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável numero
  (setq numero (read))
  
  ; calcula a raiz quadrada do número informado
  (setq raiz (sqrt numero))
  
  ; E mostramos o resultado
  (format t "A raiz quadrada de ~F é ~F" numero
    raiz)
)

; Auto-executa a função RaizQuadrada()
(RaizQuadrada)

Ao executar este código Common Lisp teremos o seguinte resultado:

Informe um número: 9
A raiz quadrada é: 3

É importante observar que, se fornecermos um valor negativo para a função sqrt da Common List não teremos um erro, como em muitas outras linguagens de programação. Em vez disso, o valor retornado será em forma de um número complexo. Veja:

Informe um número: -9
A raiz quadrada de -9.0 é #C(0.0 3.0)


C++ ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como usar ponteiros em C++ - Apostila de C++ para iniciantes

Quantidade de visualizações: 8135 vezes
Antes de pensarmos em ponteiros, é importante nos lembrarmos de alguns aspectos referentes à variáveis. Dependendo do seu conhecimento de programação, você deve saber que variáveis possuem nomes que as identificam durante a execução do programa. Você deve saber também que uma variável armazena um valor (que pode ser fixo, no caso de uma constante, ou pode mudar durante a execução de seus códigos).

O que poucos programadores se lembram é que uma variável possui um endereço, e que o nome da variável não é nada mais que um apelido para a localização deste endereço. Desta forma, um ponteiro não é nada mais que um tipo especial de variável que armazena o endereço de outra. Veja um exemplo:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // variável do tipo int
  int valor = 10;

  // ponteiro para uma variável do tipo int
  int *p = &valor;

  // exibe o valor da variável "valor", apontada
  // pelo ponteiro p
  cout << *p << endl;

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

Neste código nós temos a declaração e definição de duas variáveis:

int valor = 10;
int *p = &valor;

A primeira variável é uma variável do tipo int e a segunda é um ponteiro para uma variável do tipo int. Veja que devemos sempre usar "*" antes do nome de um ponteiro em sua declaração. O símbolo "&" serve para indicar que estamos acessando o endereço de uma variável e não o seu conteúdo. O resultado destas duas linhas é que agora temos um ponteiro que nos permite acessar e manipular a variável valor.

Observe a linha:

 
cout << *p << endl;

Aqui nós estamos acessando o valor da variável apontada por p. Veja o uso do símbolo "*" para acessar o valor da variável. Isso é chamado de desreferenciamento de ponteiros. Pareceu complicado? Veja uma linha de código que altera indiretamente o valor da variável valor para 30:

 
*p = 30;

Ponteiros são ferramentas muito importantes na programação em C++. No entanto, é preciso ter muito cuidado ao lidar com eles. A primeira coisa a ter em mente é que um ponteiro não está apontando para nenhum lugar até que atribuimos a ele o endereço de uma outra variável. E é aí que mora o perigo. Um programa entra em colapso absoluto se tentarmos acessar um ponteiro que aponta para um local de memória que já foi liberado novamente ao sistema. No caso menos grave, estaremos tentando acessar locais de memória inválidos ou reservados a outros programas ou tarefas do sistema operacional. Isso me lembra os velhos tempos da tela azul de morte.


C# ::: Dicas & Truques ::: Tipos de Dados

Como usar o tipo bool da linguagem C# - Apostila C# para iniciantes

Quantidade de visualizações: 17818 vezes
O tipo bool do C# é um apelido para o tipo System.Boolean do .NET e pode representar apenas dois valores: True ou False. Este tipo é usado em expressões condicionais e, quando os valores True e False estiverem sendo usados como literais, estes deverão ser escritos como "true" e "false". Veja:

bool pode = true;
bool vencido = false;

Se escrevermos "True" e "False", teremos erros de compilação:

The name 'True' does not exist in the 
current context
The name 'False' does not exist in the 
current context


No entanto, se imprimirmos o valor de uma variável do tipo boolean usando Console.WriteLine(), teremos os valores "True" e "False". Experimente:

bool pode = true;
Console.WriteLine(pode);

Para saber a quantidade de bytes que um tipo bool ocupa, podemos usar o método sizeof(). Veja:

Console.WriteLine("Um boolean ocupa " + sizeof(bool) +
  " bytes no C# 2.0");

Este código exibirá:

Um boolean ocupa 1 bytes no C# 2.0


Em C++, um valor de tipo bool pode ser convertido para um valor do tipo int, ou seja, false é equivalente à zero e true é equivalente à um valor diferente de zero. Em C# isso não é possível. Veja o que acontece quando tentamos converter um tipo int para um tipo boolean:

int pode = 1;

if(pode)
  Console.WriteLine("OK");

A mensagem de erro de compilação é:

Cannot implicitly convert type 'int' to 'bool'


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

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
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

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



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