![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar null em JavaQuantidade de visualizações: 32046 vezes |
O tipo de dados null é um tipo (ou valor) especial que indica que uma referência não está apontando para nenhum objeto, ou seja, aponta para uma posição de memória nula. Este tipo pode ser atribuído (ou testado) apenas a referências. Seu uso não é permitido com primitivos. Veja um trecho de código no qual definimos que uma variável do tipo String aponta para um objeto nulo: public class Estudos{ public static void main(String args[]){ String nome = null; System.out.println(nome.length()); System.exit(0); } } Este código compila normalmente. Porém, ao tentarmos executá-lo, temos uma exceção de tempo de execução NullPointerException: Exception in thread "main" java.lang.NullPointerException at Estudos.main(Estudos.java:5) Isso aconteceu porque estamos tentando executar um método de um objeto que não existe. Uma técnica muito valiosa é testar se uma referência não está apontando para um objeto nulo. Veja como isso é feito: public class Estudos{ public static void main(String args[]){ String nome = null; if(nome != null) System.out.println(nome.length()); else System.out.println("Objeto é nulo."); System.exit(0); } } Tenha em mente que, quando uma referência recebe o valor null, o objeto para o qual ela apontava fica imediatamente disponível para o coletor de lixo (Garbagge Colector), ou seja, a memória ocupada pelo objeto pode ser liberada a qualquer momento. Veja agora o que acontece quando tentamos atribuir o valor null a um primitivo: public class Estudos{ public static void main(String args[]){ int valor = null; System.exit(0); } } Eis a mensagem de erro de compilação: Estudos.java:3: incompatible types found : <nulltype> required: int int valor = null; ^ 1 error |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar construtores em suas classes Java - Programação orientada a objetos em Java - Métodos construtores - RevisadoQuantidade de visualizações: 20002 vezes |
Muitas vezes precisamos inicializar propriedades de um objeto de uma classe Java no momento em que este é criado. Para isso podemos usar um método construtor. Um método construtor, que em Java é definido por um método com o mesmo nome da classe, é chamado no exato momento em que efetuamos uma chamada a new. Veja um exemplo no qual exibimos uma mensagem alertando que um objeto de uma classe acaba de ser criado: class Pessoa{ public Pessoa(){ System.out.println("Fui criado."); } } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa(); } } Execute este código e veja o resultado. Note que um construtor deve, exceto em raríssimas ocasiões, ser marcado com o modificador public. Além disso, um construtor não possui retorno e só se torna realmente útil quando o usamos para inicializar as propriedades do objeto recém-criado. Veja: class Pessoa{ public String nome; public Pessoa(String nome){ this.nome = nome; } } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa("Osmar J. Silva"); System.out.println(p.nome); } } Aqui nós fornecemos o valor para a propriedade nome na mesma instrução que cria a instância da classe. Quando não definimos um método construtor, o compilador Java o faz nos bastidores. Mas isso só ocorre quando não definimos o nosso próprio método construtor, seja ele com ou sem parâmetros. |
GNU Octave ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como converter graus em radianos usando a função deg2rad() do GNU Octave - GNU Octave para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 1875 vezes |
Quer aprender como calcular radianos ou como converter graus em radianos? Veja a fórmula nessa dica. Quando estamos trabalhando com trigonometria no software GNU Octave, é importante ficarmos atentos ao fato de que todos os métodos e funções trigonométricas nessa linguagem recebem seus argumentos em radianos, em vez de graus. Nesta dica veremos como converter graus em radianos (sem a chatice de ficar relembrando regra de três). Veja a fórmula abaixo: \[Radianos = Graus \times \frac{\pi}{180}\] Agora veja como esta fórmula pode ser escrita no GNU Octave. Primeiro vamos usar a fórmula dada e depois veremos a função deg2rad(). Assim, digite a expressão a seguir na janela de comandos do GNU Octave: >> 30 * (pi / 180) [Enter] ans = 0.5236 >> Agora veja como podemos obter o mesmo resultado usando a função deg2rad(): >> deg2rad(30) [Enter] ans = 0.5236 >> Finalmente, veja como usar esta função em um script do GNU Octave: graus = input("Informe o ângulo em graus: "); radianos = deg2rad(graus); fprintf("O ângulo em radianos é %f\n", radianos); Execute este script e teremos o seguinte resultado na janela de comandos: Informe o ângulo em graus: 30 [Enter] O ângulo em radianos é 0.523599 >> |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de Python - Um método recursivo que conta de 0 até 10Quantidade de visualizações: 1348 vezes |
Exercícios Resolvidos de Python - Um método recursivo que conta de 0 até 10 Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: def contar_recursivamente(n): # sua implementação aqui Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando Python: # método recursivo que conta de 0 até 10 def contar_recursivamente(n): # vamos exibir o número atual print(n, " ", end =" ") # devemos prosseguir com a recursividade? if n < 10: # incrementa o valor de n n = n + 1 contar_recursivamente(n) # e faz uma nova chamada recursiva # método principal def main(): # efetua uma chamada ao método recursivo fornecendo o primeiro valor contar_recursivamente(0) if __name__== "__main__": main() |
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 PythonQuantidade de visualizações: 2459 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 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca |
Exercícios Resolvidos de Java - Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)Quantidade de visualizações: 2834 vezes |
Pergunta/Tarefa: O percurso em ordem (em-ordem, in-order, In-ordem ou ordem simétrica) é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente. Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de uma função recursiva. Escreva um programa Java que contenha uma árvore binária de busca cujos nós guardarão, além das referências para o filho esquerdo e o filho direito, apenas um valor inteiro. Forneça uma função inserir() que permitirá inserir os valores na árvore. Em seguida forneça uma função recursiva que permitirá fazer a travessia in-order da árvore. Sua saída deverá ser parecida com: Informe um valor inteiro: 7 Informe um valor inteiro: 3 Informe um valor inteiro: 18 Informe um valor inteiro: 4 Informe um valor inteiro: 9 Percurso em ordem: 3 4 7 9 18 Veja a resolução comentada deste exercício usando Java: Código para NoArvore.java: package estudos; public class NoArvore { int valor; // valor armazenado no nó NoArvore esquerdo; // filho esquerdo NoArvore direito; // filho direito // construtor do nó public NoArvore(int valor){ this.valor = valor; } } Código para ArvoreBinariaBusca.java: package estudos; public class ArvoreBinariaBusca { private NoArvore raiz; // referência para a raiz da árvore // método usado para inserir um novo nó na árvore // retorna true se o nó for inserido com sucesso e false // se o elemento não puder ser inserido (no caso de já // existir um elemento igual) public boolean inserir(int valor){ // a árvore ainda está vazia? if(raiz == null){ // vamos criar o primeiro nó e definí-lo como a raiz da árvore raiz = new NoArvore(valor); // cria um novo nó } else{ // localiza o nó pai NoArvore pai = null; NoArvore noAtual = raiz; // começa a busca pela raiz // enquanto o nó atual for diferente de null while(noAtual != null){ if(valor < noAtual.valor) { pai = noAtual; noAtual = noAtual.esquerdo; } else if(valor > noAtual.valor){ pai = noAtual; noAtual = noAtual.direito; } else{ return false; // um nó com este valor foi encontrado } } // cria o novo nó e o adiciona ao nó pai if(valor < pai.valor){ pai.esquerdo = new NoArvore(valor); } else{ pai.direito = new NoArvore(valor); } } return true; // retorna true para indicar que o novo nó // foi inserido } // método que permite disparar a travessia em-ordem public void emOrdem(){ emOrdem(raiz); } // sobrecarga do método emOrdem com uma parâmetro (esta é a // versão recursiva do método) private void emOrdem(NoArvore raiz){ if(raiz == null){ // condição de parada return; } // visita a sub-árvore da esquerda emOrdem(raiz.esquerdo); // visita o nó atual System.out.print(raiz.valor + " "); // visita a sub-árvore da direita emOrdem(raiz.direito); } } E aqui está o código para a classe que permite testar a árvore: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos criar um novo objeto da classe ArvoreBinariaBusca ArvoreBinariaBusca arvore = new ArvoreBinariaBusca(); // vamos inserir 5 valores na árvore for(int i = 0; i < 5; i++){ System.out.print("Informe um valor inteiro: "); int valor = Integer.parseInt(entrada.nextLine()); // vamos inserir o nó e verificar o sucesso da operação if(!arvore.inserir(valor)){ System.out.println("Erro. Um elemento já contém este valor."); } } // vamos exibir os nós da árvore usando o percurso em ordem System.out.println("\nPercurso em ordem:"); arvore.emOrdem(); System.out.println("\n"); } } |
GoLang ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como declarar variáveis em Go usando var e sem definir o tipo da variávelQuantidade de visualizações: 502 vezes |
Em algumas situações nós queremos declarar variáveis na linguagem Go mas não queremos definir de antemão o tipo, ou seja, se ela será do tipo int, float, boolean, string, etc. Essa situação é muito comum quando a variável receberá o retorno de uma função. Quando não definimos o tipo da variável, a própria linguagem se encarrega de fazer isso para nós, por meio da inferência de tipos. Assim, dependendo do valor que a variável recebe, o seu tipo será definido automaticamente. Veja um exemplo: // pacote principal package main // vamos importar os módulos necessários import ( "fmt" ) // esta é a função principal do programa func main() { // vamos declarar uma variável do tipo real // Como não definimos o tipo, ele será // automaticamente float64 var salario = 1250.94 // vamos mostrar o tipo da variável fmt.Printf("O tipo da variável é: %T", salario) } Ao executarmos este código Golang nós teremos o seguinte resultado: O tipo da variável é: float64 |
C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como retornar a quantidade de dimensões de uma matriz em C# usando a propriedade RankQuantidade de visualizações: 8254 vezes |
A propriedade Rank de um array do C# pode ser usada para obtermos a quantidade de dimensões de uma matriz (unidimensional, bidimensional, tridimensional, etc). Esta propriedade retorna um inteiro contendo a quantidade de dimensões. Veja o código para o exemplo: using System; namespace Estudos { class Program { static void Main(string[] args) { // cria uma matriz de duas dimensões: quatro linhas // e duas colunas int[,] matriz = new int[4, 2]; // obtém a quantidade de dimensões int dimen = matriz.Rank; Console.WriteLine("Este array possui " + dimen + " dimensões."); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: Este array possui 2 dimensões. |
C# ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como criar sua primeira classe em C# - Programação Orientada a Objetos em C#Quantidade de visualizações: 34891 vezes |
O estudo da programação orientada a objeto em C# passa obrigatoriamente pela criação de sua primeira classe. E esta não é uma tarefa fácil para os iniciantes. Esta dica o guiará passo-a-passo pelas caminhos iniciais. Esta dica assume que você já sabe criar uma aplicação console ou Windows Forms no Visual C# 2005 ou 2008. Sendo assim, crie uma nova aplicação console e vamos criar o esqueleto da classe. Em Visual C# 2005 ou 2008, a forma mais comum de adicionar uma classe ao seu projeto é clicando com o botão direito no namespace do projeto (o primeiro filho do solution explorer) e escolhendo a opção Add -> Class. Em seguida dê o nome "Pessoa.cs" para a classe e clique o botão Add. Imediatamente o código inicial para a classe será exibido, contendo o namespace e alguns using padrões. Agora faça sua classe Pessoa parecida com o código abaixo (não altere nada em relação ao namespace): class Pessoa{ // varíáveis privadas para o nome // e idade da pessoa private string nome; private int idade; // método que permite definir o nome // da pessoa public void setNome(string nome){ this.nome = nome; } // método que permite definir a idade // da pessoa public void setIdade(int idade){ this.idade = idade; } // método que permite obter o nome // da pessoa public string getNome(){ return this.nome; } // método que permite obter a idade // da pessoa public int getIdade(){ return this.idade; } } Hora de testar a classe. Volte à classe principal da aplicação (aquela que contém o método Main) e faça as seguintes alterações: static void Main(string[] args){ // Cria uma instância da classe Pessoa Pessoa p = new Pessoa(); // Define um nome e idade para a pessoa p.setNome("Osmar J. Silva"); p.setIdade(37); // Obtém o nome e idade da pessoa string nome = p.getNome(); int idade = p.getIdade(); Console.WriteLine("Nome: " + nome + " - Idade: " + idade); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } Funcionou? Agora tente refazer todo o processo, desta vez usando Windows Forms. |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter uma lista das funções numéricas (matemática) suportadas pelo MySQL usando o método getNumericFunctions() da interface DatabaseMetaDataQuantidade de visualizações: 5701 vezes |
Em algumas situações gostaríamos de, via código, obter uma lista das funções numéricas, ou seja, funções matemáticas, suportadas pelo MS SQL Server. Para isso podemos usar o método getNumericFunctions() da interface DatabaseMetaData. É importante observar que, no Sun Microsystem's JDBC Driver for MySQL, a interface DatabaseMetaData é implementada por uma classe do mesmo nome, no pacote com.mysql.jdbc.DatabaseMetaData. E esta classe implementa o método getNumericFunctions() de forma a retornar a lista de funções numéricas separadas por vírgulas. Veja um trecho de código Java no qual listamos todas as funções numéricas suportados no MySQL 5.0: package estudosbancodados; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.SQLException; public class EstudosBancoDados{ public static void main(String[] args) { // strings de conexão String databaseURL = "jdbc:mysql://localhost/estudos"; String usuario = "root"; String senha = "osmar1234"; String driverName = "com.mysql.jdbc.Driver"; try { Class.forName(driverName).newInstance(); Connection conn = DriverManager.getConnection(databaseURL, usuario, senha); // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData DatabaseMetaData dbmd = conn.getMetaData(); // vamos obter a lista de funções numéricas disponíveis // nesta versão do MySQL String funcoesNumericas = dbmd.getNumericFunctions(); // como a lista de funções está separada por vírgulas, vamos obter // uma matriz de strings String funcoes[] = funcoesNumericas.split(","); // vamos mostrar o resultado for(int i = 0; i < funcoes.length; i++){ System.out.println(funcoes[i]); } } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } catch (Exception e) { System.out.println("Problemas ao tentar conectar com o banco de dados: " + e); } } } Ao executarmos este código teremos o seguite resultado: ABS ACOS ASIN ATAN ATAN2 BIT_COUNT CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MAX MIN MOD PI POW POWER RADIANS RAND ROUND SIN SQRT TAN TRUNCATE |
Nossas 20 dicas & truques de programação mais populares |
C# - Como testar se uma string é null ou vazia em C# usando a função IsNullOrEmpty() da classe String |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Java para iniciantes - Como pesquisar uma substring em uma string e retornar sua posição inicial |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |