![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
PHP ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em PHP - Aprenda a criar e usar métodos e classes abstratas em PHPQuantidade de visualizações: 10935 vezes |
À medida que começamos a usar programação orientada a objetos em PHP algumas situações interessantes podem surgir, tais como o uso de métodos e classes abstratas. As classes e métodos abstratos podem ser usados por uma série de razões. Eis as que considero mais importantes: a) - Um classe abstrata não permite que criemos novas instâncias da mesma. Veja: <? // Uma classe Boleto abstrata abstract class Boleto{ } // vamos criar um novo objeto desta classe $b = new Boleto(); ?> Ao executarmos este código teremos a seguinte mensagem de erro: Fatal error: Cannot instantiate abstract class Boleto in ... A vantagem de termos uma classe que não pode ser instanciada é que podemos usá-la como classe base em um código envolvendo poliformismo (no momento que escrevo este artigo não vejo como implementar polimorfismo em PHP. Me pergunto se isso é possível em linguagens de tipos dinâmicos). b) - Qualquer classe que contenha um ou mais métodos abstratos também precisa se declarar abstrata. Como um método abstrato não pode conter implementação, ao forçar a classe a ser abstrata também, as classes derivadas terão a obrigação de implementar tal método. Veja um trecho de código no qual criamos uma classe normal contendo um método abstrato: <? // Uma classe Boleto não-abstrata class Boleto{ // um método abstrato public abstract function imprimir($dados); } ?> Ao executarmos este código teremos a seguinte mensagem de erro: Fatal error: Class Boleto contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Boleto::imprimir) in ... Ao marcarmos a classe como abstract esta mensagem de erro desaparecerá. c) - Uma classe que herda de uma classe derivada deve, obrigatoriamente, fornecer implementação para todos os métodos abstratos herdados. Veja o trecho de código no qual temos uma classe Boleto e uma classe BoletoBradesco: <? // Uma classe Boleto abstrata abstract class Boleto{ // um método abstrato public abstract function imprimir($dados); } // vamos herdar da classe Boleto class BoletoBradesco extends Boleto{ } ?> A mensagem de erro aqui é a mesma quando temos métodos abstratos em uma classe mas não a declaramos como abstrata. Basta fornecer a implementação para o método imprimir e a mensagem de erro desaparece: <? // Uma classe Boleto abstrata abstract class Boleto{ // um método abstrato public abstract function imprimir($dados); } // vamos herdar da classe Boleto class BoletoBradesco extends Boleto{ public function imprimir($dados){ echo "Imprimindo o boleto: " . $dados; } } // vamos criar um objeto da classe BoletoBradesco $b = new BoletoBradesco(); // vamos imprimir o boleto $b->imprimir("Dados do boleto"); ?> d) - Um método marcado como abstract não pode conter implementação, ou seja, a implementação será feita pelas classes derivadas. Veja: <? // Uma classe Boleto abstrata abstract class Boleto{ // um método abstrato que não deveria conter implementação public abstract function imprimir($dados){ echo "Isso vai dar um erro daqueles!"; } } ?> Ao tentarmos executar este trecho de código teremos a seguinte mensagem de erro: Fatal error: Abstract function Boleto::imprimir() cannot contain body in ... Bastará remover a implementação do método que a mensagem de erro desaparecerá. |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em Java - Como calcular Bhaskara em JavaQuantidade de visualizações: 3140 vezes |
Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem Java. Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita. Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0. Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente. Como resolver uma equação do 2º grau Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns: a) Fórmula de Bhaskara; b) Soma e produto. O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa. Como resolver uma equação do 2º grau usando Bhaskara Como nosso código Java vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja: \[\Delta =b^2-4ac\] Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades: a) Se determinante > 0, então a equação possui duas soluções reais. b) Se determinante = 0, então a equação possui uma única solução real. c) Se determinante < 0, então a equação não possui solução real. Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara: \[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\] Vamos agora ao código Java. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // para efetuar a leitura do usuário Scanner entrada = new Scanner(System.in); // os coeficientes double a, b, c; // as duas raizes, a imaginaria e o discriminante double raiz1, raiz2, imaginaria, discriminante; // vamos pedir para o usuário informar os valores dos coeficientes System.out.print("Valor do coeficiente a: "); a = Double.parseDouble(entrada.nextLine()); System.out.print("Valor do coeficiente b: "); b = Double.parseDouble(entrada.nextLine()); System.out.print("Valor do coeficiente c: "); c = Double.parseDouble(entrada.nextLine()); // vamos calcular o discriminante discriminante = (b * b) - (4 * a * c); // a equação possui duas soluções reais? if(discriminante > 0){ raiz1 = (-b + Math.sqrt(discriminante)) / (2 * a); raiz2 = (-b - Math.sqrt(discriminante)) / (2 * a); System.out.println("Existem duas raizes: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação possui uma única solução real? else if(discriminante == 0){ raiz1 = raiz2 = -b / (2 * a); System.out.println("Existem duas raizes iguais: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação não possui solução real? else if(discriminante < 0){ raiz1 = raiz2 = -b / (2 * a); imaginaria = Math.sqrt(-discriminante) / (2 * a); System.out.println("Existem duas raízes complexas: x1 = " + raiz1 + " + " + imaginaria + " e x2 = " + raiz2 + " - " + imaginaria); } } } Ao executar este código Java nós teremos o seguinte resultado: Valor do coeficiente a: 1 Valor do coeficiente b: 2 Valor do coeficiente c: -3 Existem duas raizes: x1 = 1.0 e x2 = -3.0 |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como copiar arquivos em PHP usando a função copy()Quantidade de visualizações: 23753 vezes |
Muitas vezes precisamos copiar um arquivo de um local para outro. Em PHP, isso pode ser feito com o auxílio da função copy(). Esta função recebe o caminho e nome do arquivo a ser copiado e o caminho e nome para o qual a cópia será feita. Veja um exemplo:<?php // copia o arquivo testes.txt para o diretório // imagens $de = "/site/public_html/testes.txt"; $para = "/site/public_html/imagens/testes.txt"; if(copy($de, $para)){ echo "Arquivo copiado com sucesso."; } else{ echo "Não foi possível copiar o arquivo."; } ?> Tenha em mente que a função copy() retorna um valor boolean (true ou false) informando sobre o sucesso ou não da operação. |
PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como remover e retornar o primeiro elemento de um array PHP usando a função array_shift()Quantidade de visualizações: 9197 vezes |
A função array_shift() do PHP remove o primeiro elemento de um vetor (array) e retorna o seu valor. Nesse caso, se as chaves, ou índices, do vetor forem do tipo númerico, elas serão reorganizadas. Veja um exemplo de seu uso no código PHP a seguir: <?php /* Este exemplo mostra como usar a função array_shift() para extrair e retornar o primeiro elemento de um array */ $pessoas[0] = "Carlos"; $pessoas[1] = "Juliana"; $pessoas[2] = "Igor"; $pessoas[3] = "Marcelo"; // extrai o primeiro elemento $primeiro = array_shift($pessoas); echo "O elemento extraido foi: " . $primeiro . "<br>"; // vamos nos certificar de que o primeiro elemento // foi realmente removido echo "O array contém agora " . count($pessoas) . " elementos"; ?> Ao executar este código PHP nós teremos o seguinte resultado: O elemento extraido foi: Carlos O array contém agora 3 elementos |
VB.NET ::: Dicas & Truques ::: Strings e Caracteres |
Como testar se uma variável do tipo string ainda é null ou vazia em VB.NET usando a função IsNullOrEmpty()Quantidade de visualizações: 15567 vezes |
Em algumas situações nós precisamos verificar se uma variável do tipo String ainda é null ou vazia. Para isso nós podemos usar o método IsNullOrEmpty(). Note que null em VB.NET é representado pela palavra-chave Nothing. Veja o código completo para o exemplo: Imports System Module Program Sub Main(args As String()) Dim var1 As String ' ainda não foi inicializada...é null Dim var2 As String = Nothing ' é null Dim var3 As String = "" ' está vazia If String.IsNullOrEmpty(var1) Then Console.WriteLine("A variável var1 ainda é null ou vazia") End If If String.IsNullOrEmpty(var2) Then Console.WriteLine("A variável var2 ainda é null ou vazia") End If If String.IsNullOrEmpty(var3) Then Console.WriteLine("A variável var3 ainda é null ou vazia") End If Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...") ' pausa o programa Console.ReadKey() End Sub End Module Ao executar este código VB.NET nós teremos o seguinte resultado: A variável var1 ainda é null ou vazia A variável var2 ainda é null ou vazia A variável var3 ainda é null ou vazia |
C# ::: Windows Forms ::: ComboBox |
Como retornar o item selecionado em um ComboBox do C# Windows Forms usando a propriedade SelectedItemQuantidade de visualizações: 22951 vezes |
Muitas vezes precisamos obter o elemento selecionado em um ComboBox. Para isso podemos usar a propriedade SelectedItem. Esta propriedade retorna o item selecionado como um Object, o que nos permite efetuar um cast para o tipo que foi inserido. Veja um exemplo do uso deste método em um ComboBox que possui elementos do tipo String:private void button1_Click(object sender, EventArgs e){ // vamos obter o item selecionado no ComboBox // chamado "cidades" object sel = cidades.SelectedItem; // vamos exibir o resultado MessageBox.Show("Valor do elemento: " + sel.ToString()); } Aqui nós usamos o método ToString() da classe Object para obter uma representação textual do objeto sendo retornado. É claro que no caso de um objeto da classe String isso não é necessário. Incluímos apenas para fins didáticos. Neste trecho de código não convertemos o tipo retornado para um outro determinado tipo. Veja esta nova versão: private void button1_Click(object sender, EventArgs e){ // vamos obter o item selecionado no ComboBox // chamado "cidades" string sel = (string)cidades.SelectedItem; // vamos exibir o resultado MessageBox.Show("Valor do elemento: " + sel.ToString()); } Veja que agora nós fizemos uma conversão forçada (cast) de object para string. Se isso não fosse feito, a seguinte mensagem de erro de compilação seria exibida: Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?) |
LISP ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como declarar variáveis globais em Lisp usando as funções defvar e defparameterQuantidade de visualizações: 1150 vezes |
Em algumas situações nós precisamos declarar variáveis globais em Lisp, ou melhor, em Common Lisp, que é a padronização da Lisp que adotamos para estas dicas. Variáveis globais em Common Lisp se comportam de forma idêntica àquelas de outras linguagens de programação, ou seja, possuem valores permanentes por todo o sistema Lisp e mantém seus valores até que novos valores são especificados. Se quisermos, por exemplo, a partir do corpo de uma função acessar uma variável fora dela, então esta variável deverá ser declarada globalmente. Em Common List nós podemos declarar variáveis globais usando as funções defvar e defparameter. Vamos ver exemplos envolvendo as duas e no final desta dica eu mostro a diferença. Veja um trecho de código Common Lisp na qual declaramos uma variável global chamada valor e a acessamos de dentro de uma função: ; vamos declarar uma variável global (defvar valor 10) ; vamos mostrar o valor atual da variável global (format t "O valor da variável global é ~D" valor) ; agora vamos acessar a variável global ; de dentro de uma função (defun ModificaValor() ; vamos alterar o valor da variável global (setq valor 50) ) ; chamamos a função ModificaValor (ModificaValor) ; e checamos se o valor da variável global foi ; mesmo alterado (terpri) (format t "O valor da variável global é ~D" valor) Ao executar este código Common List nós teremos o seguinte resultado: O valor da variável global é 10 O valor da variável global é 50 Veja agora um trecho de código Common Lisp no qual usamos a função defparameter para declarar e inicializar as variáveis globais: ; vamos declarar três variáveis globais (defparameter *a* 5) (defparameter *b* 3) (defparameter *soma* 0) ; agora vamos acessar as variáveis globais ; de dentro de uma função (defun Somar() ; vamos somar as duas variáveis globais ; e guardar o resultado em uma terceira ; variáveis global (setq *soma* (+ *a* *b*)) ) ; chamamos a função Somar (Somar) ; e mostramos o resultado da soma (format t "A soma das variáveis globais é ~D" *soma*) Ao executar este novo código Common Lisp nós teremos o seguinte resultado: A soma das variáveis globais é 8 Note que coloquei asteríscos (*) ao redor dos nomes das variáveis globais. Esta é uma prática comum entre programadores Lisp e altamente recomendado pelo comunidade, pois facilita a distinção entre variáveis globais e locais. Então, qual é a diferença entre defvar e defparameter? A primeira delas é que a função defparameter nos obriga a informar o valor inicial para a variável global, enquanto a função defvar não o faz. A segunda diferença é que, ao redefinirmos o valor de uma variável global usando defparameter, o valor armazenado anteriormente será sobreposto, enquanto a função defvar não altera o valor anterior. |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como somar os elementos da diagonal principal de uma matriz em JavaQuantidade de visualizações: 3037 vezes |
A Matriz quadrada é um tipo especial de matriz que possui o mesmo número de linhas e o mesmo número de colunas, ou seja, dada uma matriz Anxm, ela será uma matriz quadrada se, e somente se, n = m, onde n é o número de linhas e m é o número de colunas. Em geral as matrizes quadradas são chamadas de Matrizes de Ordem n, onde n é o número de linhas e colunas. Dessa forma, uma matriz de ordem 4 é uma matriz que possui 4 linhas e quatro colunas. Toda matriz quadrada possui duas diagonais, e elas são muito exploradas tanto na matemática quanto na construção de algorítmos. Essas duas diagonais são chamadas de Diagonal Principal e Diagonal Secundária. A diagonal principal de uma matriz quadrada une o seu canto superior esquerdo ao canto inferior direito. Veja: ![]() Nesta dica veremos como calcular a soma dos valores dos elementos da diagonal principal de uma matriz usando Java. Para isso, só precisamos manter em mente que a diagonal principal de uma matriz A é a coleção das entradas Aij em que i é igual a j. Assim, tudo que temos a fazer é converter essa regra para código Java. Veja um trecho de código Java completo no qual pedimos para o usuário informar os elementos da matriz e em seguida mostramos a soma dos elementos da diagonal superior: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args) { // vamos fazer a leitura usando a classe Scanner Scanner entrada = new Scanner(System.in); // vamos declarar e construir uma matriz de três linhas e três colunas int matriz[][] = new int[3][3]; int soma_diagonal = 0; // guarda a soma dos elementos na diagonal principal // vamos ler os valores para os elementos da matriz for(int i = 0; i < matriz.length; i++){ // linhas for(int j = 0; j < matriz[0].length; j++){ // colunas System.out.print("Informe o valor para a linha " + i + " e coluna " + j + ": "); matriz[i][j] = Integer.parseInt(entrada.nextLine()); } } // vamos mostrar a matriz da forma que ela // foi informada System.out.println(); // percorre as linhas for(int i = 0; i < matriz.length; i++){ // percorre as colunas for(int j = 0; j < matriz[0].length; j++){ System.out.printf("%5d ", matriz[i][j]); } // passa para a próxima linha da matriz System.out.println(); } // vamos calcular a soma dos elementos da diagonal // principal for(int i = 0; i < matriz.length; i++){ for(int j = 0; j < matriz[0].length; j++){ if(i == j){ soma_diagonal = soma_diagonal + matriz[i][j]; } } } // finalmente mostramos a soma da diagonal principal System.out.println("\nA soma dos elementos da diagonal principal é: " + soma_diagonal); } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor para a linha 0 e coluna 0: 3 Informe o valor para a linha 0 e coluna 1: 7 Informe o valor para a linha 0 e coluna 2: 9 Informe o valor para a linha 1 e coluna 0: 2 Informe o valor para a linha 1 e coluna 1: 4 Informe o valor para a linha 1 e coluna 2: 1 Informe o valor para a linha 2 e coluna 0: 5 Informe o valor para a linha 2 e coluna 1: 6 Informe o valor para a linha 2 e coluna 2: 8 3 7 9 2 4 1 5 6 8 A soma dos elementos da diagonal principal é: 15 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como transformar em letras maiúsculas as iniciais de cada palavra em uma string JavaQuantidade de visualizações: 279 vezes |
Nesta dica mostrarei como podemos combinar os métodos da classe String e da classe StringBuffer para converter em letras maiúsculas as iniciais de cada palavra de uma frase ou texto. Para isso nós vamos usar os métodos charAt(), length(), toUpperCase() e setCharAt(). Veja o código completo para o exemplo: package estudos; public class Estudos{ public static void main(String[] args){ // vamos criar uma string contendo a nossa frase String frase = "Programar em java é bom demais"; System.out.println("A frase original é: " + frase); // vamos converter a frase em letras minúsculas frase = frase.toLowerCase(); // agora criamos um StringBuffer contendo a frase anterior StringBuffer frase2 = new StringBuffer(frase); // um laço que percorra todos os caracteres da frase for(int i = 0; i < frase2.length(); i++){ Character letra = frase2.charAt(i); if(i == 0){ letra = Character.toUpperCase(letra); frase2.setCharAt(i, letra); } else if((i > 0) && (frase2.charAt(i - 1) == ' ')){ letra = Character.toUpperCase(letra); frase2.setCharAt(i, letra); } } // retornamos para a string frase = frase2.toString(); // e exibimos o resultado System.out.println("Resultado: " + frase); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: A frase original é: Programar em java é bom demais Resultado: Programar Em Java É Bom Demais |
C# ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar if e if..else em C# - A estrutura condicional if do C#Quantidade de visualizações: 22069 vezes |
A instrução condicional if (se) é usada quando queremos testar uma condição e, baseado nesta, executar alguma ação. Veja:static void Main(string[] args){ int valor = 20; // testa se o valor é maior que 10 if(valor > 10){ Console.WriteLine("O valor é maior que 10"); } Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } Execute o código e veja que o texto "O valor é maior que 10" é exibido somente se o valor da variável valor for maior que 10. Note que neste teste temos somente uma instrução. Neste caso as chaves { e } podem ser omitidas: if(valor > 10) Console.WriteLine("O valor é maior que 10"); No entanto, quando duas ou mais instrução forem executadas, as chaves { e } são obrigatórias. Note também que o resultado do teste de uma instrução condicional if deve ser sempre true ou false. A instrução if..else (se..ou então) é útil quando queremos executar uma ação se uma condição for satisfeita e outra ação caso contrário. Veja: static void Main(string[] args){ int valor = 5; // testa se o valor é maior que 10 if(valor > 10){ Console.WriteLine("O valor é maior que 10"); } else{ Console.WriteLine("O valor é menor ou igual a 10"); } Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } Há ainda os casos em que temos que testar várias condições. Observe: static void Main(string[] args){ int valor = 8; // testa se o valor é maior que 10 if(valor > 10){ Console.WriteLine("O valor é maior que 10"); } // testa se o valor é menor que 10 else if(valor < 10){ Console.WriteLine("O valor é menor que 10"); } // o valor é igual a 10 else{ Console.WriteLine("O valor é igual a 10"); } Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - Como testar se uma string contém uma determinada substring em JavaScript usando a função includes() |
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 |
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 |