![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como pesquisar e selecionar um item em uma ListBox do DelphiQuantidade de visualizações: 17149 vezes |
O trecho de código abaixo mostra como podemos usar a mensagem LB_SELECTSTRING da Windows API para pesquisar e selecionar um item em uma ListBox. Veja que aqui eu usei a função InputBox() para permitir ao usuário inserir o texto a ser pesquisado. Note também o valor -1 fornecido como wParam para a função SendMessage(). Este valor faz com que a busca se inicie no primeiro item da lista e continue até o final da lista. Veja o código:
procedure TForm1.Button2Click(Sender: TObject);
var
pesquisa: string;
begin
// vamos solicitar o texto a ser pesquisado na ListBox
pesquisa := InputBox('Pesquisar', 'Informe o texto', '');
// vamos pesquisar e selecionar o item encontrado
if SendMessage(ListBox1.Handle, LB_SELECTSTRING, - 1,
Longint(PChar(pesquisa))) <> LB_ERR then
begin
ShowMessage('O texto pesquisado foi encontrado no ' +
'índice: ' + IntToStr(ListBox1.ItemIndex));
end
else
begin
ShowMessage('O texto pesquisado não foi encontrado.');
end;
end;
Note que a busca efetuada por LB_SELECTSTRING não é sensitiva a maiúsculas e minúsculas. Assim, Osmar e OSMAR são tratadas igualmente. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como transformar uma string em letras minúsculas em PHP usando a função strtolower()Quantidade de visualizações: 3 vezes |
|
A função strtolower() do PHP pode ser usada quando queremos converter uma palavra, frase ou texto para letras minúsculas. Veja um exemplo de seu uso:
<?php
// vamos definir a codificação como iso-8859-1
ini_set('default_charset', "iso-8859-1");
// vamos criar uma string
$frase = "PHP? Eu gosto de PHP";
echo "A frase original é: " . $frase;
// agora vamos converter a frase para letras
// minúsculas
$frase_minusculas = strtolower($frase);
echo "<br>Em letras minúsculas: " . $frase_minusculas;
?>
Ao executarmos este código PHP nós teremos o seguinte resultado: A frase original é: PHP? Eu gosto de PHP Em letras minúsculas: php? eu gosto de php Ao executar este código no PHP 8, Windows 10 e codificação do arquivo em ANSI, o resultado da função strtolower() é o esperado, mas somente sem usar acentos e caracteres especiais. Veja:
<?php
// vamos definir a codificação como iso-8859-1
ini_set('default_charset', "iso-8859-1");
// vamos criar uma string
$frase = "JAVA? NÃO! É DE PHP QUE EU GOSTO";
echo "A frase original é: " . $frase;
// agora vamos converter a frase para letras
// minúsculas
$frase_minusculas = strtolower($frase);
echo "<br>Em letras minúsculas: " . $frase_minusculas;
?>
Ao executarmos o código novamente nós teremos a seguinte saída: A frase original é: JAVA? NÃO! É DE PHP QUE EU GOSTO Em letras minúsculas: java? nÃo! É de php que eu gosto Note que as letras acentuadas não foram convertidas para letras minúsculas. Isso aconteceu porque os caracteres acentuados são tratados como caracteres de múltiplos bytes, ou seja, multi-byte chars. A saída, nesse caso, e no PHP 8 (e acredito mais recentes), é usar a função mb_strtolower(). Veja:
<?php
// vamos definir a codificação como iso-8859-1
ini_set('default_charset', "iso-8859-1");
// vamos criar uma string
$frase = "JAVA? NÃO! É DE PHP QUE EU GOSTO";
echo "A frase original é: " . $frase;
// agora vamos converter a frase para letras
// minúsculas
$frase_minusculas = mb_strtolower($frase);
echo "<br>Em letras minúsculas: " . $frase_minusculas;
?>
Execute o código novamente e verá que o resultado agora está correto: A frase original é: JAVA? NÃO! É DE PHP QUE EU GOSTO Em letras minúsculas: java? não! é de php que eu gosto Agora você já sabe o primeiro passo para resolver problemas de acentuação no PHP. Bons estudos. |
Java ::: Fundamentos da Linguagem ::: Modificadores |
Programação Orientada a Objetos em Java - Como usar o modificador static em suas aplicações JavaQuantidade de visualizações: 19403 vezes |
|
O modificador static pode ser aplicado a métodos e variáveis. Além disso, este modificador pode ser usado para a inicialização de códigos estáticos de uma classe. Um recurso marcado com este modificador pertence à uma classe, e não às suas instâncias. Isso quer dizer que podemos acessar métodos ou variáveis estáticas sem a necessidade de criar uma cópia da classe. Veja por exemplo o método main() usado como ponto de entrada para um aplicativo Java:
public static void main(String args[]){
//
}
Como o método main é chamado antes mesmo de qualquer cópia de classes serem criadas, o modificador static se torna essencial. Veja o que acontece se o retirarmos:
public class Estudos{
public void main(String args[]){
System.out.println("Olá");
System.exit(0);
}
}
O código compila sem problemas. Porém, ao tentarmos executar teremos o seguinte erro: Exception in thread "main" java.lang.NoSuchMethodError: main
public class Estudos{
String frase = "Estou aqui!";
public static void main(String args[]){
System.out.println(frase);
System.exit(0);
}
}
Ao tentarmos compilar este código teremos o seguinte erro:
Estudos.java:5: non-static variable frase cannot be
referenced from a static context
System.out.println(frase);
^
1 error
static String frase = "Estou aqui!"; Execute o programa novamente e veja como o erro desaparece. Para demonstrar como recursos estáticos pertencem mesmo à classe e não às suas cópias, considere o seguinte exemplo:
public class Estudos{
public static void main(String args[]){
for(int i = 0; i < 5; i++){
Cliente cliente = new Cliente();
System.out.println("Sou o cliente número: " +
cliente.quant);
}
System.exit(0);
}
}
class Cliente{
public static int quant = 0;
public Cliente(){
quant++;
}
}
Ao compilar e executar este código você terá o seguinte resultado: Sou o cliente número: 1 Sou o cliente número: 2 Sou o cliente número: 3 Sou o cliente número: 4 Sou o cliente número: 5 Veremos agora o uso do modificador static na inicialização de blocos de código estáticos. Observe o código:
public class Estudos{
public static void main(String args[]){
for(int i = 0; i < 5; i++){
Cliente cliente = new Cliente();
System.out.println("Sou o cliente número: " +
cliente.quant);
}
System.exit(0);
}
}
class Cliente{
public static int quant = 0;
public Cliente(){
quant++;
}
static{
System.out.println("Bloco estático");
}
}
Compile e execute este exemplo. Você terá o seguinte resultado: Bloco estático Sou o cliente número: 1 Sou o cliente número: 2 Sou o cliente número: 3 Sou o cliente número: 4 Sou o cliente número: 5 |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) recursivoQuantidade de visualizações: 1227 vezes |
|
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma recursiva. Em outra dica desta seção que mostrei como fazer a mesma travessia de forma iterativa e usando uma pilha para backtracking (retrocesso). Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo: ![]() Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas. Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n). Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária:
// implementação da classe No
class No{
public int valor; // o valor do nó
public No esquerdo; // o filho da esquerda
public No direito; // o filho da direita
public No(int valor){
this.valor = valor;
this.esquerdo = null;
this.direito = null;
}
}
Veja agora o código completo para o exemplo. Note que estamos usando recursividade nesta dica. Observe também o uso de uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis o código:
package estudos;
import java.util.ArrayList;
// implementação da classe No
class No{
public int valor; // o valor do nó
public No esquerdo; // o filho da esquerda
public No direito; // o filho da direita
public No(int valor){
this.valor = valor;
this.esquerdo = null;
this.direito = null;
}
}
public class Estudos{
public static void main(String[] args){
// vamos criar os nós da árvore
No cinco = new No(5); // será a raiz da árvore
No quatro = new No(4);
No nove = new No(9);
No dois = new No(2);
No tres = new No(3);
No doze = new No(12);
// vamos fazer a ligação entre os nós
cinco.esquerdo = quatro;
cinco.direito = nove;
quatro.esquerdo = dois;
nove.esquerdo = tres;
nove.direito = doze;
// agora já podemos efetuar o percurso depth-first
ArrayList<Integer> valores = new ArrayList<>();
percursoDepthFirst(valores, cinco);
System.out.println("Os valores na ordem Depth-First são: " + valores);
}
public static void percursoDepthFirst(ArrayList<Integer> valores, No no){
if(no != null){
// vamos adicionar o valor deste nó no ArrayList
valores.add(no.valor);
// passamos para o filho esquerdo
percursoDepthFirst(valores, no.esquerdo);
// passamos para o filho direito
percursoDepthFirst(valores, no.direito);
}
}
}
Ao executarmos este código Java nós teremos o seguinte resultado: Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12] Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First. |
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Como retornar a quantidade de palavras em uma string Java usando um objeto da classe StringTokenizer JavaScript - Como retornar o dia da semana em JavaScript no formato Domingo, Segunda-feira, Terça-feira, etc |
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 |





