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 ::: Dicas & Truques ::: Strings e Caracteres

Como converter uma string para float ou double em Python usando a função float()

Quantidade de visualizações: 1619 vezes
Em algumas situações nós temos um valor numérico representado por uma string e gostaríamos de convertê-lo para um valor float ou double na linguagem Python. Para isso nós podemos usar a função float(), disponível por padrão na linguagem.

Note o uso da função type() para exibirmos o tipo da variável antes e depois da conversão.

Veja o código Python completo para o exemplo:

# método principal
def main():
  # vamos pedir para o usuário informar o preço de um produto
  # note que o preço será lido como uma string
  preco = input("Informe o valor do produto: ")

  # vamos exibir o valor lido e o tipo da variável
  print("Você informou o valor: {0}".format(preco))
  print("O tipo da variável é: {0}".format(type(preco)))

  # agora vamos converter a string para o tipo float
  preco = float(preco)
  
  # vamos mostrar o novo tipo da variável
  print("O novo tipo da variável é: {0}".format(type(preco)))

if __name__== "__main__":
  main()

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

Informe o valor do produto: 45.92
Você informou o valor: 45.92
O tipo da variável é: <class 'str'>
O novo tipo da variável é: <class 'float'>

É preciso, no entanto, ter cuidado ao informar a string que será convertida para float. Se, em vez de informar o ponto separador de decimal, nós informarmos a vírgula, o seguinte erro será apresentado:

Informe o valor do produto: 45,21
Você informou o valor: 45,21
O tipo da variável é: <class 'str'>
Traceback (most recent call last):
File "c:\estudos_python\estudos.py", line 18, in <module>
main()
File "c:\estudos_python\estudos.py", line 12, in main
preco = float(preco)
ValueError: could not convert string to float: '45,21'


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

Exercícios Resolvidos de Java - Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritmética

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

Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritmética. Se a média for igual ou superior a 7,0 mostre uma mensagem indicando que o aluno foi aprovado.

Se a média for igual ou maior que 3,5 e inferior a 7,0 seu programa deverá indicar que o aluno ficou de exame. Uma média menor que 3,5 indica reprovação direta.

No caso do exame, leia uma nota entre 0 e 10. Agora a média do aluno deverá ser a média entre a média anterior e a nota do exame. Se a nova média for igual ou superior a 5,0 o aluno estará aprovado. Caso contrário o aluno será reprovado.

Use validação para evitar que o usuário informe notas inválidas, ou seja, notas menores que 0 ou maiores que 10. Caso notas inválidas sejam fornecidas seu programa deverá solicitar a nota novamente até que o usuário forneça notas válidas.

Sua saída deverá ser parecida com:

Informe a nota N1: 9.4
Informe a nota N2: 11
Nota inválida. Informe a nota N2: 8.3
A média do aluno é: 8.85
O aluno foi aprovado

Informe a nota N1: 4.2
Informe a nota N2: 1.8
A média do aluno é: 3.0
O aluno reprovou direto.

Informe a nota N1: 5.7
Informe a nota N2: 6
A média do aluno é: 5.85
Informe a nota do exame: 7
A média do aluno com o exame é: 6.425
O aluno foi aprovado após o exame.
Resposta/Solução:

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

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // variáveis usadas na resolução do problema
    double n1, n2, media, exame;
    
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler a primeira nota
    System.out.print("Informe a nota N1: ");
    n1 = Double.parseDouble(entrada.nextLine());
    // a nota é válida?
    while ((n1 < 0) || (n1 > 10)) {
      System.out.print("Nota inválida. Informe a nota N1: ");
      n1 = Double.parseDouble(entrada.nextLine());
    }
    
    // vamos ler a segunda nota
    System.out.print("Informe a nota N2: ");
    n2 = Double.parseDouble(entrada.nextLine());
    // a nota é válida?
    while ((n2 < 0) || (n2 > 10)) {
      System.out.print("Nota inválida. Informe a nota N2: ");
      n2 = Double.parseDouble(entrada.nextLine());
    }
    
    // vamos calcular a média do aluno
    media = (n1 + n2) / 2.0;
    System.out.println("A média do aluno é: " + media);
    
    // o aluno foi aprovado?
    if (media >= 7.0) {
      System.out.println("O aluno foi aprovado");
    }
    // o aluno ficou de exame?
    else if ((media >= 3.5) && (media < 7.0)){
      // vamos ler a nota do exame
      System.out.print("Informe a nota do exame: ");
      exame = Double.parseDouble(entrada.nextLine());
      // a nota é válida?
      while ((exame < 0) || (exame > 10)) {
        System.out.print("Nota inválida. Informe a nota do exame: ");
        exame = Double.parseDouble(entrada.nextLine());
      }
      
      // calcula a nota média
      media = (media + exame) / 2.0;
      System.out.println("A média do aluno com o exame é: " + media);
      
      // o aluno foi aprovado após o exame?
      if (media >= 5.0) {
        System.out.println("O aluno foi aprovado após o exame.");
      }
      else {
        System.out.println("O aluno foi reprovado após o exame.");
      }
    }
    // reprovou direto
    else {
      System.out.println("O aluno reprovou direto.");
    }
  }
}



C# ::: Dicas & Truques ::: Rotinas de Conversão

Como converter um tipo string para um tipo decimal em C# usando o método Parse() da classe Decimal

Quantidade de visualizações: 12688 vezes
Este exemplo mostra como converter uma string em um valor do tipo decimal. Para isso nós vamos usar o método Parse() da classe Decimal da linguagem C#. No entanto, é preciso termos cuidado, pois este método pode lançar três tipos de exceções: ArgumentNullException, FormatException e OverflowException.

Veja o trecho de código a seguir:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string valor_string = "530,54";
      // experimente com os valores "23,5", "arquivo" e
      // "659"

      // tenta efetuar a conversão de string para decimal
      try {
        decimal valor_decimal = decimal.Parse(valor_string);
        // exibe o resultado
        Console.WriteLine("Valor convertido com sucesso: " + valor_decimal);
      }
      catch (FormatException e) {
        // exibe a informações sobre a exceção
        // Input string was not in a correct format. 
        Console.WriteLine(e.Message);
      }

      Console.WriteLine("\n\nPressione qualquer tecla para sair...");
      // pausa o programa
      Console.ReadKey();
    }
  }
}

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

Valor convertido com sucesso: 530,54

Se tentarmos atribuir um valor string a um tipo decimal, sem efetuar a conversão, teremos o seguinte erro de compilação:

Cannot implicitly convert type string to decimal


Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como navegar (percorrer) pelas células do TDBGrid do Delphi usando a tecla Enter

Quantidade de visualizações: 12384 vezes
Há situações nas quais queremos que os usuários de nossas aplicações Delphi sejam capazes de pressionar a tecla Enter para passar (ou saltar) pelas células dos controles DBGrid. A navegação padrão é com a tecla Tab e/ou as teclas de direção.

Nesta dica eu mostro como isso pode ser feito. Suponha que você tem um componente TDBGrid com o nome "DBGrid1". Vá ao seu evento OnKeyPress e modifique-o para o código abaixo:

procedure TForm3.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  // o usuário pressionou a tecla Enter?
  if Key = #13 then
    begin
      // ainda não estamos na última coluna
      if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then
        // vamos passar para a próxima célula
        DBGrid1.Columns[DBGrid1.Columns.Grid.SelectedIndex + 1].Field.FocusControl
      else begin
        // vamos passar para o próximo registro da tabela
        DBGrid1.DataSource.DataSet.Next;
        DBGrid1.Columns[0].Field.FocusControl;
      end;
    end;
end;

Execute a aplicação e experimente o efeito. É claro que a navegação com a tecla Enter só funciona em uma direção (tal qual a tecla Tab). Para voltar para as células anteriores você ainda terá que acionar as teclas de direção. Note o uso do método Next da classe TDataSet para forçarmos o foco a ir para a próxima linha do TDBGrid.

Esta dica foi escrita e testada no Delphi 2009.


Java ::: Coleções (Collections) ::: ArrayList

Como inserir um item em uma determinada posição da ArrayList do Java usando o método add()

Quantidade de visualizações: 14939 vezes
Nesta dica mostrarei como é possível usar o método add() da classe ArrayList do Java para inserir um elemento em uma determinada posição, ou seja, em um determinado índice da lista. Para isso nós só precisamos usar a assinatura do método add() que aceita também o índice no qual o novo elemento será inserido. Veja:

public void add(int index, E element)

Você deve ter em mente, claro, que este método pode disparar uma exceção do tipo IndexOutOfBoundsException se o índice informado estiver fora da faixa permitida.

Veja agora o código Java completo para o exemplo:

package estudos;

import java.util.ArrayList;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> pessoas = new ArrayList<>();
    
    // adiciona itens na lista
    pessoas.add("Alberto");
    pessoas.add("Victor");
    pessoas.add("João");
    	
    // adiciona um item na posição 2, depois de Victor    
    pessoas.add(2, "Ricardo");
   
    // exibe os itens da lista	
    for(int i = 0; i < pessoas.size(); i++){
      System.out.println(pessoas.get(i));
    }  

    System.exit(0);
  }
}

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

Alberto
Victor
Ricardo
João


Java ::: Dicas & Truques ::: Formatação de datas, strings e números

Java para iniciantes - Como formatar uma string no estilo printf da linguagem C usando a classe Formater do Java

Quantidade de visualizações: 12005 vezes
Nesta dica eu mostro como é possível usar o método format() da classe Formater da linguagem Java para formatar strings ao bom e velho estilo da linguagem C, ou seja, com marcadores %d para inteiros, %f para decimais, por exemplo.

Veja o exemplo completo:

package arquivodecodigos;

import java.util.*;
 
public class Estudos{
  public static void main(String[] args){
 
    int pessoas = 20;    
 
    StringBuilder string = new StringBuilder();
    Formatter fm = new Formatter(string);
 
    fm.format("Havia %d pessoas lá.", pessoas);
 
    System.out.println(string);    
  }
}

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

Havia 20 pessoas lá.


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

Como quebrar uma string Java em suas partes usando o método split() da classe String

Quantidade de visualizações: 3981 vezes
O método split() da classe String é usado quando queremos quebrar uma string em suas partes e obter, como retorno, um vetor (matriz ou array) de objetos da classe String. Veja sua assinatura:

public String[] split(String regex)

Veja que o argumento regex é uma expressão regular que será usada para separar as partes da string. Veja um trecho de código no qual separamos todas as palavras de uma frase usando o caractere de espaço como delimitador:

package estudos;

public class Estudos{
  public static void main(String[] args) {
    String frase = "Gosto muito de programar em Java e PHP";
    
    // vamos obter as partes da string usando o espaço como delimitador
    String partes[] = frase.split("\\s+");
    
    // vamos percorrer as partes obtidas
    for(int i = 0; i < partes.length; i++){
      System.out.println(partes[i]);
    }
  }
}

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

Gosto
muito
de
programar
em
Java
e
PHP

Tenha cuidado. Se uma expressão regular inválida for fornecida para o método split(), uma exceção do tipo PatternSyntaxException será atirada.

Há uma sobrecarga do método split() com a seguinte assinatura:

public String[] split(String regex, int limit)

Esta sobrecarga nos permite definir a quantidade de vezes que o padrão da expressão regular será aplicado e afeta a quantidade de partes da string que serão retornados. Veja:

package estudos;

public class Estudos{
  public static void main(String[] args) {
    String frase = "Gosto muito de programar em Java e PHP";
    
    // vamos obter as partes da string usando o espaço como delimitador
    String partes[] = frase.split("\\s+", 3);
    
    // vamos percorrer as partes obtidas
    for(int i = 0; i < partes.length; i++){
      System.out.println(partes[i]);
    }
  }
}

Ao executarmos este código o resultado será:

Gosto
muito
de programar em Java e PHP



AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como retornar a quantidade de estacas de um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API

Quantidade de visualizações: 634 vezes
Nesta dica vou mostrar como podemos obter a quantidade de estacas em um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API. Para este exemplo eu usei um alinhamento com o nome "EIXO DA RODOVIA".

O primeiro passo é obter uma referência ao documento atual do AutoCAD Civil 3D usando CivilApplication.ActiveDocument. En seguida nós pesquisamos um alinhamento usando uma função personalizada GetAlignmentByName(), que recebe o documento atual e o nome do alinhamento que queremos pesquisar. O retorno desta função é um objeto da classe Alignment.

Agora que já temos o alinhamento, nós usamos a função GetStationSet() para retornar um vetor de objetos Station, que significa estaca no Civil 3D. Note que passei como parâmetro o valor StationTypes.Major e usei alinhamento.StationIndexIncrement como o intervalo entre as estacas.

Uma vez que já temos o vetor de objetos Station, ou seja, um vetor contendo todas as estacas do alinhamento, só precisamos obter a quantidade de itens usando a propriedade Length.

Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;

namespace Estudos {
  public class Class1 : IExtensionApplication {
    [CommandMethod("Alinhamento")]
    public void Alinhamento() {
      // vamos obter uma referência ao documento atual do Civil 3D
      CivilDocument doc = CivilApplication.ActiveDocument;

      // obtemos o editor
      Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;

      // vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA"
      string nome = "EIXO DA RODOVIA";

      // vamos iniciar um nova transação
      using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
        Database.TransactionManager.StartTransaction()) {
        try {
          // efetuamos uma chamada ao método GetAlignmentByName() passando
          // o documento atual do AutoCAD Civil 3D e o nome do alinhamento
          // que queremos encontrar
          Alignment alinhamento = GetAlignmentByName(doc, nome);

          // ops, o alinhamento não foi encontrado
          if (alinhamento == null) {
            editor.WriteMessage("\nO alinhamento não foi encontrado.");
          }
          else {
            // encontramos o alinhamento. Vamos mostrar a quantidade de estacas
            // que ele possui
            Station[] estacas = alinhamento.GetStationSet(StationTypes.Major,
              alinhamento.StationIndexIncrement);
            int quant_estacas = estacas.Length;
            // e mostramos o resultado
            editor.WriteMessage("\nO alinhamento possui " + quant_estacas +
              " estacas.\n");
          }
        }
        catch (System.Exception e) {
          // vamos tratar o erro 
          editor.WriteMessage("Erro: {0}", e.Message);
        }
      }
    }

    // função C# que retorna um alinhamento por nome, ou null em
    // caso de não encontrar o alinhamento desejado
    public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
      // vamos declarar um objeto da classe Alignment
      Alignment alinhamento = null;

      // agora vamos obter os ids de todos os alinhamentos
      ObjectIdCollection alinhamentos = doc.GetAlignmentIds();

      // vamos percorrer todos os ids de alinhamentos retornados
      foreach (ObjectId idAlinhamento in alinhamentos) {
        alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
        // encontramos o alinhamento
        if (alinhamento.Name.Equals(nome)) {
          return alinhamento;
        }
      }

      // retorna null se o alinhamento não for encontrado
      return null;
    }

    public void Initialize() {
      // pode deixar em branco
    }

    public void Terminate() {
      // pode deixar em branco
    }
  }
}

Ao executar este código AutoCAD Civil 3D C# .NET nós teremos o seguinte resultado:

O alinhamento possui 152 estacas.


C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em C usando a função cos() do header math.h - Calculadora de cosseno em C

Quantidade de visualizações: 11187 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem C. Esta função, que faz parte do header math.h, recebe um valor numérico double e retorna um valor double, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  // vamos calcular o cosseno de três números
  printf("Cosseno de 0 = %f\n", cos(0));
  printf("Cosseno de 1 = %f\n", cos(1));
  printf("Cosseno de 2 = %f\n", cos(2));
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

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

Cosseno de 0 = 1.000000
Cosseno de 1 = 0.540302
Cosseno de 2 = -0.416147

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet

Como usar a propriedade Bof para verificar se estamos no primeiro registro do TClientDataSet do Delphi

Quantidade de visualizações: 11262 vezes
Em algumas situações gostaríamos de verificar se já estamos no primeiro registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset de trás para frente e queremos saber se já estamos no primeiro. Para isso podemos usar a propriedade Bof da classe TClientDataSet. Esta propriedade retorna true se estivermos no primeiro registro e false em caso contrário.

Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet de trás para frente. Note o uso da propriedade Bof para finalizar as iterações do laço:

procedure TForm3.Button4Click(Sender: TObject);
begin
  // vamos percorrer todos os registros do TClientDataSet
  // de trás para frente
  ClientDataSet1.Last; // vamos para o último registro
  // e agora disparamos um laço While
  while not ClientDataSet1.Bof do
    begin
      // vamos mostrar em um TMemo os valores do primeiro
      // campo de cada registro
      Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString);
      // vamos mover para o registro anterior
      ClientDataSet1.Prior;
    end;
end;


A propriedade Bof é verdadeira quando:

a) Abrimos um dataset.

b) Efetuamos uma chamada ao método First (primeiro) do dataset.

c) Chamamos o método Prior (anterior) do dataset e a chamada falha porque o registro atual já é o primeiro registro no dataset.

d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio.

Esta dica foi escrita e testada no Delphi 2009.

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