Python ::: cmath Python Module (Módulo Python cmath para números complexos) ::: Números Complexos (Complex Numbers)

Como converter um número complexo na forma retangular para a forma polar usando Python

Quantidade de visualizações: 2413 vezes
Quando estamos efetuando cálculos envolvendo números complexos, é comum precisarmos converter da forma retangular para a forma polar, e vice-versa.

Um número complexo na forma retangular apresenta o seguinte formato:

7 + j5


onde 7 é a parte real e 5 é a parte imaginária. Note que usei a notação "j" em vez de "i" para a parte imaginária, uma vez que a notação "j" é a mais comum na engenharia.

O número complexo na forma polar, por sua vez, é composto pelo raio e pela fase (phase), que é o ângulo theta (ângulo da inclinação da hipotenusa em relação ao cateto adjascente).

O raio, representado por r, é o módulo do vetor cujas coordenadas são formadas pela parte real e a parte imaginária do número complexo. A parte real se encontra no eixo das abcissas (x) e a parte imaginária fica no eixo das ordenadas (y).

Veja agora o código Python completo que lê a parte real e a parte imaginária de um número complexo e o exibe na forma polar:

# vamos importar o módulo de matemática de números complexos
import cmath

# método principal
def main():
  # vamos ler a parte real e a parte imaginária do
  # número complexo
  real = float(input("Parte real do número complexo: "))
  imaginaria = float(input("Parte imaginária do número complexo: "))

  # constrói o número complexo
  z = complex(real, imaginaria)

  # mostra o valor absoluto na forma polar
  print ("Valor absoluto (raio ou módulo): ", abs(z))
  # mostra a fase do número complexto na forma polar
  print("Fase em radianos: ", cmath.phase(z))
  print("Fase em graus: ", cmath.phase(z) * (180 / cmath.pi))
  
if __name__== "__main__":
  main()

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

Parte real do número complexo: 3
Parte imaginária do número complexo: -4
Valor absoluto (raio ou módulo): 5.0
Fase em radianos: -0.9272952180016122
Fase em graus: -53.13010235415598


C ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como ordenar os elementos de um vetor (array) usando a função qsort() da linguagem C

Quantidade de visualizações: 1091 vezes
A função qsort() da linguagem C permite a ordenação dos elementos de um vetor (array ou matriz unidimensional) mediante o fornecimento de uma função auxiliar definida pelo usuário. Veja seu protótipo:

void qsort(void *base, size_t num, size_t size, 
  int(*comparator)(const void*, const void*)); 


Veja que só precisamos fornecer um ponteiro para o vetor a ser ordenado, a quantidade de elementos contidos no vetor, o tamanho em bytes de cada elemento e a função de comparação. No exemplo abaixo mostramos como ordenar um vetor contendo 9 valores inteiros:

#include <stdio.h>
#include <stdlib.h>
 
// função auxiliar que permite comparar dois valores
// durante a ordenação
int comparar(const void *a, const void *b){
  return(*(int*)a - *(int*)b);
}
 
int main(int argc, char *argv[])
{
  int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
  int i, tamanho = 9;
 
  // imprime o vetor sem a ordenação
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }
 
  // vamos ordenar o vetor usando
  qsort(valores, tamanho, sizeof(int), comparar);
 
  // imprime o vetor ordenado
  puts("\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }
 
  puts("\n");
  system("pause");
  return 0;
}

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

4 6 2 8 1 9 3 0 11

0 1 2 3 4 6 8 9 11

Pressione qualquer tecla para continuar...


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

Como retornar o índice da coluna da célula atual em um TDBGrid do Delphi

Quantidade de visualizações: 10263 vezes
Em algumas situações precisamos obter o índice da coluna da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Col da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid.

Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da coluna da célula atual:

procedure TForm3.Button3Click(Sender: TObject);
var
  indice: Integer;
begin
  // vamos obter o índice da coluna da célula atual
  indice := TStringGrid(DBGrid1).Col;
  ShowMessage('O índice da coluna da célula atual é: ' +
    IntToStr(indice));
end;

Execute o código e clique no botão. Você verá uma mensagem parecida com:

"O índice da coluna da célula atual é: 3".

Lembre-se de que o índice da coluna fixa do DBGrid é 0.

Esta dica foi escrita e testada no Delphi 2009.


PHP ::: Dicas & Truques ::: Variáveis e Constantes

Como usar a função isset() do PHP para verificar se uma variável existe (foi definida)

Quantidade de visualizações: 58516 vezes
Em algumas situações gostaríamos de verificar se uma variável PHP foi definida, ou seja, seu valor está disponível para uso. Isso é importante para evitar efetuar algum cálculo envolvendo variáveis não existentes (que ainda não foram declaradas).

Isso pode ser feito com o auxílio da função isset(). Ela retorna um valor true se a variável testada existir e não estiver com o valor NULL. Caso contrário o retorno será falso. Veja o exemplo a seguir:

<?
  /*
  Este trecho de código mostra como como verificar
  se uma determinada variável foi definida. Esta
  técnica é muito usada para verificar variáveis
  fornecidas via GET ou POST.
  
  Veja que a função isset apenas verifica se a variável
  foi definida, ela não verifica se a variável contém algum
  valor (no caso de GET ou POST)
  */
  
  if(isset($_GET['cliente']))
    echo "A variável cliente foi definida";
	
  $nome = "Osmar J. Silva";
  if(isset($nome))
    echo 'A variável $nome foi definida';
?>

Lembre-se de que está função não verifica se a variável contém algum valor, apenas se ela existe e não sofreu atribuição do valor NULL (null em PHP).


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

Apostila de Java Básico - Como usar o método replace() da classe String para efetuar a substituição de substrings em uma string

Quantidade de visualizações: 7981 vezes
A substituição de substrings, ou seja, pedaços de texto, é uma das tarefas mais comuns em programação. Em Java isso pode ser feito por meio do método replace() da classe String. Veja sua assinatura:

public String replace(CharSequence target, 
  CharSequence replacement)
Veja que tanto o parâmetro target quanto o parâmetro replacement são objetos da interface CharSequence. Algumas das classes que implementam esta interface são: CharBuffer, Segment, String, StringBuffer e StringBuilder. Isso quer dizer que podemos passar qualquer objeto destas classes para o método replace(). O parâmetro target contém a substring a ser substituída pela substring do parâmetro replacement. O retorno do método é uma nova string com as substituições aplicadas. Se não houver nenhuma substituição a string original é retornada.

Veja um trecho de código no qual usamos o método replace() para substituir todas as ocorrências de "C++" por "Java":

public class Estudos {
  public static void main(String[] args) {
    String frase = "Programar em C++ é muito bom! Gosto muito de C++";
    System.out.println("Frase original: " + frase);
    
    // vamos substituir todas as ocorrências de "C++" por "Java"
    frase = frase.replace("C++", "Java");
    System.out.println("Depois da substituição: " + frase);
  }
}

Ao executarmos este código teremos o seguinte resultado:

Frase original: Programar em C++ é muito bom! Gosto 
  muito de C++
Depois da substituição: Programar em Java é muito bom! Gosto 
  muito de Java


Note que o método replace() pode atirar uma exceção do tipo NullPointerException se o parâmetro target ou replacement for null.


VB.NET ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço While em VB.NET

Quantidade de visualizações: 11395 vezes
Um instrução de repetição (também chamada de laço ou loop) permite que um bloco de códigos seja executado repetidamente até que uma condição seja satisfeita.

O laço While é usado quando queremos testar uma condição e, executar um bloco de código repetidamente enquanto esta condição for verdadeira. Lembre-se de que, se a condição já for falsa, o laço nunca será executado.

Veja um exemplo de laço While que nos permite exibir os números de 0 a 10:

Dim numero As Integer = 0

While numero <= 10
  Console.WriteLine(numero)
  numero += 1
End While

Veja uma nova versão deste código, desta vez contando de 10 a 0:

Dim numero As Integer = 10

While numero >= 0
  Console.WriteLine(numero)
  numero -= 1
End While

Aqui nós estamos novamente avaliando uma condição, ou seja, se o resultado da condição for True, a execução do laço continua. Se for False, o laço para. Veja um exemplo no qual a condição booleana está bem explícita:

Dim pode As Boolean = True
Dim valor As Integer = 1

While pode
  Console.WriteLine(valor)
  valor += 1

  If valor > 20 Then
    pode = False
  End If
End While



C ::: Estruturas de Dados ::: Lista Ligada Simples

Estrutura de Dados em C - Como inserir nós no final de uma lista singularmente ligada em C

Quantidade de visualizações: 8157 vezes
Esta dica mostra como inserir nós no final de uma lista singularmente ligada. A estrutura usada para representar cada nó é a seguinte:

struct No{
  int valor;
  struct No *proximo;
};

Note que cada nó contém apenas um valor inteiro e um ponteiro para o próximo nó. Ao analisar o código você perceberá que tanto a inserção no final quanto a exibição dos nós são feitas usando funções. Isso permitirá o reaproveitamento deste código em suas próprias implementações. Vamos ao código:

#include <stdio.h>
#include <stdlib.h>

// estrutura Nó
struct No{
  int valor;
  struct No *proximo;
};
// fim da estrutura Nó

// função que permite exibir os valores de
// todos os nós da lista
void exibir(struct No *n){
  if(n != NULL){
    do{
      printf("%d\n", n->valor);
      n = n->proximo;
    }while(n != NULL);
  }
  else
    printf("A lista esta vazia\n\n");
}

// função que permite inserir nós no
// final da lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir_final(struct No *n, int v){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;

  // verifica se a lista está vazia
  if(n == NULL){
    // é o primeiro nó...não deve apontar para
    // lugar nenhum
    novo->proximo = NULL;
    return novo; // vamos retornar o novo nó como sendo o início da lista
  }
  else{ // não está vazia....vamos inserir o nó no final
    // o primeiro passo é chegarmos ao final da lista
    struct No *temp = n; // vamos obter uma referência ao primeiro nó
    // vamos varrer a lista até chegarmos ao último nó
    while(temp->proximo != NULL){
      temp = temp->proximo;
    }
    // na saída do laço temp aponta para o último nó da lista
  
    // novo será o último nó da lista...o campo próximo dele deve
    // apontar para NULL
    novo->proximo = NULL;
    // vamos fazer o último nó apontar para o nó recém-criado
    temp->proximo = novo;
    return n; // vamos retornar o início da lista intacto
  }
}

int main(int argc, char *argv[])
{
  // declara a lista
  struct No *inicio = NULL;

  // vamos inserir quatro valores no final
  // da lista
  inicio = inserir_final(inicio, 45);
  inicio = inserir_final(inicio, 3);
  inicio = inserir_final(inicio, 98);
  inicio = inserir_final(inicio, 47);

  // vamos exibir o resultado
  exibir(inicio);

  system("pause");
  return 0;
}



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

Exercícios Resolvidos de Java - Um laço for que solicita ao usuário 10 números inteiros e mostra o menor e o maior valor informado

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

Escreva um programa Java console que usa o laço for para solicitar ao usuário que informe 10 números inteiros. Em seguida mostre o maior e o menor valor lido. Não é permitido usar matrizes:

Dica: Use um objeto da classe Scanner para obter a entrada do usuário.

Resposta/Solução:

Como a solução deste exercício depende de valores informados pelo usuário, a classe Scanner deverá ser usada. Desta forma, você deverá importá-la, usando a linha:

import java.util.Scanner;
Lembre-se de que os imports devem estar entre a declaração de pacote (package) e a declaração da classe. Veja a solução comentada no código abaixo:

public static void main(String[] args){
  // para este exercício você deverá importar a classe
  // Scanner. Ela está no pacote java.util.*;
    
  // vamos construir um objeto da classe Scanner para ler a
  // entrada do usuário
  Scanner entrada = new Scanner(System.in);

  int valor; // guarda o valor lido
  int maior = 0, menor = 0; // variáveis que guardarão o maior e o menor valor lido

  // vamos pedir ao usuário que informe 10 valores inteiros
  for(int i = 0; i < 10; i++){
    System.out.print("Informe o " + (i + 1) + "º valor: ");
    valor = Integer.parseInt(entrada.nextLine());

    // esta é a primeira iteração do laço? se for vamos assumir que o
    // maior e menor valor lido são o primeiro valor informado
    if(i == 0){
      maior = valor;
      menor = valor;
      // poderia ser escrito assim:
      //maior = menor = valor;
    }
    else{ // não é a primeira iteração
      // vamos verificar se é maior que o valor atual da variável maior
      if(valor > maior){
        maior = valor;
      }
      // vamos verificar se é menor que o valor atual da variável menor
      if(valor < menor){
        menor = valor;
      }
    }
  }

  // vamos exibir o maior e o menor valor lido
  System.out.println("\nO maior valor lido foi: " + maior);
  System.out.println("O menor valor lido foi: " + menor);
}



C# ::: Windows Forms ::: TextBox

C# Windows Forms Avançado - Como rolar as linhas de um TextBox para o fundo (parte inferior) usando a API do Windows

Quantidade de visualizações: 6958 vezes
Em algumas situações gostaríamos de rolar para baixo (fundo) o conteúdo de um TextBox de múltiplas. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_BOTTOM para seu parâmetro wParam. O valor do parâmetro lParam é zero.

Veja um trecho de código que rola para baixo o conteúdo de um TextBox. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem.

Comece adicionando a linha:

using System.Runtime.InteropServices;

na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método:

[DllImport("user32.dll", EntryPoint = "SendMessage", 
  CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, 
  IntPtr wParam, IntPtr lParam);

Finalmente coloque o código abaixo no evento Click de um botão:

private void button2_Click(object sender, EventArgs e){
  // antes de executar este exemplo certifique-se de que
  // a propriedade Multiline do TextBox esteja definida
  // como true e a propriedade ScrollBars contenha o valor
  // Vertical ou Both
  textBox1.Multiline = true;
  textBox1.ScrollBars = ScrollBars.Vertical;
    
  // constante para a mensagem WM_VSCROLL
  const uint WM_VSCROLL = 0x115;
  // constante para o parâmetro wParam
  const int SB_BOTTOM = 7;
  
  // handle para a caixa de texto
  IntPtr handle = textBox1.Handle;
  IntPtr wParam = (IntPtr)SB_BOTTOM;
  IntPtr lParam = IntPtr.Zero;
  
  // vamos fazer com que o TextBox role para o fundo (parte inferior)
  SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam);
}



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

Como criar e usar métodos estáticos em suas classes Java - Programação Orientada a Objetos em Java - Java OOP

Quantidade de visualizações: 13596 vezes
Como já vimos em outras dicas desta seção, uma classe Java possui propriedades (variáveis) e métodos (funções). Veja a seguinte declaração de uma classe Produto:

package estudos;

// declaração da classe Produto
public class Produto {
  private String nome;
  private double preco;

  public String getNome() {
    return nome;
  }

  public void setNome(String nome) {
    this.nome = nome;
  }

  public double getPreco() {
    return preco;
  }

  public void setPreco(double preco) {
    this.preco = preco;
  }
}

Aqui cada instância da classe Produto terá suas próprias variáveis nome e preco e os métodos que permitem acesso e alteração destas variáveis também estão disponíveis a cada instância.

Há, porém, situações nas quais gostaríamos que um determinado método estivesse atrelado à classe e não à cada instância individual. Desta forma, é possível chamar um método de uma classe sem a necessidade da criação de instâncias da mesma. O método main() presente em todas as aplicações Java é um bom exemplo deste tipo de método.

Métodos estáticos em Java podem ser criados por meio do uso da palavra-chave static. É comum tais métodos serem declarados com o modificador public, o que os torna acessíveis fora da classe na qual estes foram declarados. Veja um exemplo:

Código para Pessoa.java:

package estudos;

// classe Pessoa com duas variáveis privadas e
// um método estático
public class Pessoa {
  private String nome;
  private int idade;

  // um método estático que permite verificar a validade
  // de um número de CPF
  public static boolean isCPFValido(String cpf){
    // alguns cálculos aqui
    return true;
  }
}

Veja agora como podemos chamar o método isCPFValido() sem a necessidade da criação de uma nova instância da classe Pessoa:

Código para Main.java:

package estudos;

public class Main {
  public static void main(String[] args) {
    // vamos efetuar uma chamada ao método isCPFValido() sem
    // criar uma instância da classe Pessoa
    if(Pessoa.isCPFValido("12345")){
      System.out.println("CPF Válido");
    }
    else{
      System.out.println("CPF Inválido");
    }
  }
}

Note que o método estático isCPFValido() da classe Pessoa foi declarado assim:

public static boolean isCPFValido(String cpf);

Desta forma, podemos chamá-lo a partir de código externo à classe sem a necessidade de criar uma nova instância da mesma. Veja:

if(Pessoa.isCPFValido("12345")){}

É importante notar que métodos estáticos não possuem acesso a variáveis e métodos não estáticos da classe, tampouco ao ponteiro this (que só existe quando criamos instâncias da classe). Assim, o trecho de código abaixo:

// um método estático que permite verificar a validade
// de um número de CPF
public static boolean isCPFValido(String cpf){
  // alguns cálculos aqui

  // vamos acessar a variável não estática nome
  nome = "Osmar J. Silva";
    
  return true;
}

vai gerar o seguinte erro de compilação:

Uncompilable source code - non-static variable nome cannot be referenced from a static context.

Se usarmos this.nome a mensagem de erro de compilação será:

Uncompilable source code - non-static variable this cannot be referenced from a static context.

Métodos estáticos são úteis quando precisamos criar classes que atuarão como suporte, nas quais poderemos chamar funções (métodos) auxiliares sem a necessidade de criar novas instâncias a cada vez que estas funções forem necessárias.

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