PHP ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em PHP - Como criar e usar métodos estáticos em PHPQuantidade de visualizações: 9266 vezes |
Como já vimos em outras dicas desta seção, uma classe possui propriedades (variáveis) e métodos. Veja a seguinte declaração de uma classe Produto:<?php // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; public function setNome($nome){ $this->nome = $nome; } public function getNome(){ return $this->nome; } public function setPreco($preco){ $this->preco = $preco; } public function getPreco(){ return $this->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. Métodos estáticos em PHP 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: <?php // classe Pessoa com duas variáveis privadas e um método // estático class Pessoa{ private $nome; private $idade; // um método estático que permite verificar a validade // de um número de CPF public static function isCPFValido($cpf){ // alguma rotina aqui return true; } } // vamos efetuar uma chamada ao método isCPFValido() sem // criar uma instância da classe Pessoa if(Pessoa::isCPFValido("12345")){ echo "CPF Válido"; } else{ echo "CPF inVálido"; } ?> Observe como acessamos o método isCPFValido() sem a necessidade da criação de uma instância da classe Pessoa. Note que, se quisermos chamar um método estático a partir de uma instância na qual ele está declarado, devemos usar self em vez de $this (ainda que esta última forma não provoque nenhum efeito colateral) para deixar bem claro que o método chamado pertence à classe e não às suas instâncias. Finalmente note que um método estático não possui acesso à uma instância específica de uma classe por meio da referência $this (o que é compreensível, visto que uma chamada a um método estático não depende da existência de instâncias da classe que o declara). Ao tentarmos acessá-lo, teremos a seguinte mensagem de erro: Fatal error: Using $this when not in object context in ... |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter os tipos de tabelas suportados pelo MySQL usando o método getTableTypes() da classe DatabaseMetaDataQuantidade de visualizações: 5437 vezes |
Em algumas situações precisamos obter os tipos de tabelas suportados por uma determinada versão do MySQL. Isso pode ser feito com uma chamada ao método getTableTypes() da classe com.mysql.jdbc.DatabaseMetaData. Um objeto desta classe é obtido a partir do método getMetaData() da interface Connection (para o driver com.mysql.jdbc.Driver, é claro). A assinatura do método getTableTypes() é: public ResultSet getTableTypes() throws SQLException Vamos ver um exemplo? Veja um trecho de código que usei para listar os tipos de tabelas disponíveis no MySQL 5.0: package estudosbancodados; import java.sql.*; 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 os tipos de tabelas suportadas por esta versão do MySQL ResultSet tiposTabelas = dbmd.getTableTypes(); while(tiposTabelas.next()){ System.out.println(tiposTabelas.getString("TABLE_TYPE")); } // vamos fechar o ResultSet tiposTabelas.close(); } 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); } } } O resultado da execução deste código foi: TABLE VIEW LOCAL TEMPORARY |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o código ASCII ou Unicode associado a um caractere em JavaScript usando a função charCodeAt()Quantidade de visualizações: 397 vezes |
O método charCodeAt() é usado para obter o código ASCII ou Unicode de um caractere em uma determinada posição em uma string. Esta função está disponível no objeto String do JavaScript. Veja um página HTML completa demonstrando o seu uso: <!doctype html> <html> <head> <title>Strings em JavaScript</title> </head> <body> <script type="text/javascript"> var palavra = "Arquivo"; document.write("O código Unicode da letra \"A\" é " + palavra.charCodeAt(0)); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: O código ASCII ou Unicode da letra "A" é 65 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como remover todos os espaços de uma string usando o método replace() da classe String da linguagem JavaQuantidade de visualizações: 3 vezes |
Nesta dica mostrarei como usar o método replace() da classe String do Java para remover todos os espaços de uma frase ou texto, tanto no início, fim e no meio. Note que esta dica remove TODOS os espaços, não somente os espaço excessivos. Para isso veja outras dicas dessa seção. Veja o código Java completo para o exemplo: package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java é muito bom"; System.out.println("Com espaços: " + frase); frase = frase.replace(" ", ""); System.out.println("Sem espaços: " + frase); System.exit(0); } } Ao executar este código nós teremos o seguinte resultado: Com espaços: Programar em Java é muito bom Sem espaços: ProgramaremJavaémuitobom |
JavaScript ::: Dicas & Truques ::: Set (Conjunto) |
Como remover elementos duplicados de um array em JavaScript usando um Set e o método Array.from()Quantidade de visualizações: 1316 vezes |
Sabemos de outras dica de JavaScript que o objeto Set nos permite criar conjuntos únicos, ou seja, sem repetições. Sabemos também que a função Array.from() possibilita a conversão de um Set em um Array JavaScript. Dessa forma, é possível usar essa combinação para escrever uma função personalizada que recebe um vetor (array) e retorna um outro vetor, sem elementos repetidos. Veja o código JavaScript completo para o exemplo: <!doctype html> <html> <head> <title>O objeto Set do JavaScript</title> </head> <body> <script type="text/javascript"> // função que permite remover os elementos // duplicados de um array function semRepeticoes(vetor){ // primeiro criamos um novo Set a partir do // vetor fornecido // Em seguida usamos o método Array.from() para // converter o Set em um Array return Array.from(new Set(vetor)); } // aqui declaramos um array de String // com nomes repetidos var nomes = ["Osmar", "Maria", "Carlos", "Maria", "Fernanda", "Fernanda", "Osmar"]; // e aqui estão os resultados document.writeln("Com repetição: " + nomes); document.writeln("<br>Sem repetições: " + semRepeticoes(nomes)); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: Com repetição: Osmar, Maria, Carlos, Maria, Fernanda, Fernanda, Osmar Sem repetições: Osmar, Maria, Carlos, Fernanda |
Delphi ::: VCL - Visual Component Library ::: TComboBox |
Como retornar o índice do item selecionado em um ComboBox do Delphi usando a propriedade ItemIndexQuantidade de visualizações: 19271 vezes |
Em algumas situações precisamos saber o índice do item selecionado em um ComboBox. Isso pode ser feito por meio da propriedade ItemIndex da classe TComboBox. Esta propriedade retorna um valor inteiro representando um índice começando em 0, ou seja, o índice do primeiro item é 0. Se nenhum item estiver selecionado, o valor -1 será retornado. Veja o código: procedure TForm1.Button1Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice do item selecionado no ComboBox indice := ComboBox1.ItemIndex; // mostra o resultado ShowMessage('O índice do item selecionado é: ' + IntToStr(indice)); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Hidrologia e Hidráulica |
Exercícios Resolvidos de Python - Qual seria a vazão (m3/h) de saída para uma bacia hidrográfica "completamente impermeável", com área de 60 km2, sob uma chuva constanteQuantidade de visualizações: 455 vezes |
Pergunta/Tarefa: 1) Qual seria a vazão (m3/h) de saída para uma bacia hidrográfica "completamente impermeável", com área de 60 km2, sob uma chuva constante à taxa de 10 mm/h? A) 180.000 m3/h B) 6.000 m3/h C) 600.000 m3/h D) 60.000 m3/h E) 600.000.000 m3/h Sua saída deve ser parecida com: Área da bacia em km2: 60 Precipitação em mm/h: 10 A vazão é: 600000.0 m3/h O primeiro passo para resolver esta questão é relembrar a fórmula da vazão: \[\text{Q} = \text{A} \cdot \text{v}\] Onde: Q = vazão em m3/s, m3/h, etc; A = área da bacia m2, km2, etc. v = a taxa da chuva, ou seja, a precipitação em mm/s, mm/h, etc. A maior dificuldade aqui é a conversão das unidades, pois o exercício nos pede a vazão em m3/h. Por essa razão temos que converter a área para metros quadrados e a precipitação em milímetros para precipitação em metros. Então, hora de vermos a resolução comentada deste exercício usando Python: # função principal do programa def main(): # vamos ler a área da bacia em km2 area = float(input("Área da bacia em km2: ")) # vamos ler a precipitação em milímetros por hora precipitacao = float(input("Precipitação em mm/h: ")) # vamos calcular a vazão em metros cúbicos por hora # primeiro convertemos a área para metros quadrados area = area * 1000000.0 # agora convertemos milímetros para metros precipitacao = precipitacao / 1000.0 # e calculamos a vazão vazao = area * precipitacao # e mostramos o resultado print("A vazão é: {0} m3/h".format(vazao)) if __name__== "__main__": main() |
Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como usar arrays (vetores e matrizes) em DelphiQuantidade de visualizações: 73621 vezes |
Em programação de computadores, um array, também conhecido como vector (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição. O índice geralmente utiliza uma seqüência de números inteiros, (ao contrário de um array associativo) mas o índex pode ter qualquer valor ordinal. Alguns arrays são multi-dimensionais, significando que eles são indexados por um número fixo de números inteiros, por exemplo, por um seqüência (ou sucessão) finita de quatro números inteiros. Geralmente, arrays uni- e bi-dimensionais são os mais comuns. Os arrays podem ser considerados como as estruturas de dado mais simples que é possível imaginar. Têm a vantagem de que os seus elementos são acessíveis de forma rápida, mas têm uma notável limitação: são de tamanho fixo, mas podem ser incrementados ou diminuídos com determinados algoritmos, geralmente envolvendo a cópia de elementos de um array para outro e reinicializando o original com a nova dimensão. Os vetores podem ser implementados desta forma. Em Delphi um array é declarado da seguinte forma: var valores: array[1..10] of Integer; Aqui nós temos um array chamado valores que contém 10 elementos do tipo Integer. Estes elementos podem ser acessados por índices que variarão de 1 a 10, ou seja, podemos acessar o 5º elemento da seguinte forma: procedure TForm1.Button1Click(Sender: TObject); var valores: array[1..10] of Integer; begin valores[5] := 20; end; Este tipo de array que ora criamos é chamado de array estático, em contraposição aos arrays dinâmicos, os quais podem ter seus tamanhos redimensionados durante a execução do programa. A forma mais prática de se trabalhar com arrays em Delphi é usando laços. Veja: procedure TForm1.Button1Click(Sender: TObject); var valores: array[1..5] of Integer; i, soma: Integer; begin // vamos preencher o array com os valores de 1 a 5 for i := 1 to 5 do begin valores[i] := i; end; // vamos percorrer o array novamente e obter a soma dos // valores de seus elementos soma := 0; for i := 1 to 5 do begin soma := soma + valores[i]; end; // vamos exibir o resultado ShowMessage('A soma dos valores é: ' + IntToStr(soma)); end; Aqui nós declaramos um array de 5 elementos do tipo Integer e inicializamos seus elementos com os valores de 1 a 5. Em seguida percorremos todo o array novamente para obter a soma dos valores dos elementos. É possível também declarar e já inicializar um array. Veja: procedure TForm1.Button1Click(Sender: TObject); const valores: array[1..5] of Integer = (3, 2, 6, 12, 9); var i, soma: Integer; begin // vamos percorrer o array novamente e obter a soma dos // valores de seus elementos soma := 0; for i := 1 to 5 do begin soma := soma + valores[i]; end; // vamos exibir o resultado ShowMessage('A soma dos valores é: ' + IntToStr(soma)); end; Note que aqui eu declarei o array como uma constante. Isso aconteceu porque o Delphi não permite que inicializemos variáveis locais ([DCC Error] Unit1.pas(32): E2195 Cannot initialize local variables). Caso você realmente precise do array como variável e não constante, e deseje inicializá-lo juntamente com a declaração, mova-o para a seção interface do formulário ou classe. Para finalizar, veja que é possível criar arrays de todos os tipos em Delphi. Veja no trecho de código abaixo como usamos um array de Char para guardar uma palavra e exibí-la normal e depois invertida: procedure TForm1.Button1Click(Sender: TObject); const letras: array[1..5] of Char = ('O', 's', 'm', 'a', 'r'); var i: Integer; resultado: String; begin resultado := ''; // vamos exibir a palavra na forma normal for i := 1 to 5 do resultado := resultado + letras[i]; // exibe o resultado ShowMessage(resultado); // vamos exibir a palavra invertida resultado := ''; for i := 5 downto 1 do resultado := resultado + letras[i]; // exibe o resultado ShowMessage(resultado); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Java ::: Dicas & Truques ::: Data e Hora |
Como exibir a data e hora atual na linguagem Java usando um objeto Date e seu método toString()Quantidade de visualizações: 277 vezes |
Nesta dica mostrarei como criar um novo objeto da classe Date, do pacote java.util, e usar seu método toString() para exibir a data e hora atual no formato "dia da semana/mês/dia do mês"...etc. Veja o código completo abaixo: import java.util.Date; public class Exemplo{ public static void main(String args[]){ Date data = new Date(); System.out.println(data.toString()); } } Ao executar este código nós teremos o seguinte resultado: Mon Mar 08 22:13:15 BRT 2019 |
PHP ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em PHP dados dois pontos no plano cartesianoQuantidade de visualizações: 1294 vezes |
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem PHP que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos: <?php // x e y do primeiro ponto $x1 = 3; $y1 = 6; // x e y do segundo ponto $x2 = 9; $y2 = 10; $m = ($y2 - $y1) / ($x2 - $x1); // mostramos o resultado echo "O coeficiente angular é: " . $m; ?> Ao executar este código PHP nós teremos o seguinte resultado: O coeficiente angular é: 0.66666666666667 Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$): <?php // x e y do primeiro ponto $x1 = 3; $y1 = 6; // x e y do segundo ponto $x2 = 9; $y2 = 10; // vamos obter o comprimento do cateto oposto $cateto_oposto = $y2 - $y1; // e agora o cateto adjascente $cateto_adjascente = $x2 - $x1; // vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa // (em radianos, não se esqueça) $tetha = atan2($cateto_oposto, $cateto_adjascente); // e finalmente usamos a tangente desse ângulo para calcular // o coeficiente angular $tangente = tan($tetha); // mostramos o resultado echo "O coeficiente angular é: " . $tangente; ?> Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
Nossas 20 dicas & truques de programação mais populares |
Java - Como corrigir um erro ClassCastException em Java - Como tratar a exceção ClassCastException do Java |
Você também poderá gostar das dicas e truques de programação abaixo |
C - Como alocar memória para instâncias de uma estrutura (struct) e acessá-las usando ponteiros em C |
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 |