Você está aqui: Cards de Cards de Hidrologia |
||
|
||
|
|
||
GoLang ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o tamanho de uma string em Golang usando os métodos len() e RuneCountInString()Quantidade de visualizações: 1213 vezes |
|
Em algumas situações nós precisamos obter e retornar o tamanho de uma string, ou seja, a quantidade de caracteres em uma palavra, frase ou texto. Para isso nós podemos duas funções na linguagem Go: len() e RuneCountInString(). O método len() retorna a quantidade de bytes contidos em uma string. Note, porém, que esta função não é recomendada quando estamos lidando com caracteres do conjunto utf8, que requerem dois bytes. Dessa forma, se estivermos certos de que a string não possui acentos ou caracteres especiais, então o método len() é o mais adequado. Veja um trecho de código Golang no qual pedimos para o usuário informar uma palavra ou frase e em seguida nós informamos a quantidade de caracteres contidos nela:
// pacote principal
package main
// vamos importar os módulos necessários
import (
"bufio"
"fmt"
"os"
"strings"
)
// esta é a função principal do programa
func main() {
// variáveis que vamos usar na resolução do problema
var frase string
var tamanho int
// vamos pedir para o usuário informar uma
// palavra ou frase
fmt.Print("Informe uma palavra ou frase: ")
var entrada = bufio.NewReader(os.Stdin)
frase, _ = entrada.ReadString('\n')
frase = strings.TrimSpace(frase)
// vamos obter o tamanho da string
tamanho = len(frase)
// e mostramos o resultado
fmt.Printf("A palavra ou frase contém %d caracteres",
tamanho)
}
Ao executarmos este código Go nós teremos o seguinte resultado: Informe uma palavra ou frase: Gosto de Python A palavra ou frase contém 15 caracteres Se contarmos a quantidade de caracteres na string informada, realmente veremos que o código retornou o resultado esperado. O problema acontece quando informamos uma palavra ou frase com acentos ou caracteres especiais. Experimente e veja que a função len() começa a retornar uma contagem estranha. Quando nossas strings possuem caracteres especiais ou com acentos, a função a ser usada é RuneCountInString(). Veja:
// pacote principal
package main
// vamos importar os módulos necessários
import (
"bufio"
"fmt"
"os"
"unicode/utf8"
"strings"
)
// esta é a função principal do programa
func main() {
// variáveis que vamos usar na resolução do problema
var frase string
var tamanho int
// vamos pedir para o usuário informar uma
// palavra ou frase
fmt.Print("Informe uma palavra ou frase: ")
var entrada = bufio.NewReader(os.Stdin)
frase, _ = entrada.ReadString('\n')
frase = strings.TrimSpace(frase)
// vamos obter o tamanho da string
tamanho = utf8.RuneCountInString(frase)
// e mostramos o resultado
fmt.Printf("A palavra ou frase contém %d caracteres",
tamanho)
}
Ao executarmos este novo código nós teremos o resultado: Informe uma palavra ou frase: Código A palavra ou frase contém 6 caracteres |
Python ::: Dicas & Truques ::: Data e Hora |
Como construir uma data em Python usando o construtor da classe datetimeQuantidade de visualizações: 7249 vezes |
|
Nesta dica mostrarei como podemos usar o construtor da classe datetime do Python para construir e retornar uma nova data. Note que estou fornecendo a data para construtor da classe datetime usando o ano, o mês e o dia. Veja o código Python completo para o exemplo:
from datetime import datetime
# função principal do programa
def main():
# vamos definir o dia, mês e ano
dia = 20
mes = 4
ano = 1980
# Constrói um datetime (ano, mês, dia)
data = datetime(ano, mes, dia)
# Exibe o conteúdo do datetime
print("A data construída foi {0}".format(data))
# Obtém o ano da data recém-criada
print("O ano da data construída foi: {0}".format(data.year))
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: A data construída foi 1980-04-20 00:00:00 O ano da data construída foi: 1980 |
Java ::: Dicas & Truques ::: Threads |
Java Threads - Como interromper a execução de uma thread em suas aplicações JavaQuantidade de visualizações: 15736 vezes |
|
A classe Thread fornece um método chamado interrupt() que serve para interrompermos a execução de uma determinada thread. Os métodos sleep() e yield() transferem a thread sendo executada no momento do estado "executando" para o estado "pronta". O método interrupt(), por sua vez, faz com que uma thread vá para o estado "finalizada", ou seja, ela não voltará mais a ser executada. O problema é que, nem sempre, o método interrupt() parece surtir o efeito desejado, ou seja, fazer com que a thread pare de executar imediatamente. Por esta razão, a forma mais fácil de "matar" uma thread é forçar a saída de seu método run(). Veja um exemplo:
// criamos uma classe que servirá como thread
class MinhaThread extends Thread{
private String nome;
public MinhaThread(String nome){
this.nome = nome;
}
public void run(){
for(int i = 1; i <= 20; i++){
System.out.println(nome + ": " + i);
if((i >= 3) && (nome.equals("Thread 1"))){
try{
System.out.println(nome + " foi eliminada");
return; // interrompe a execução do método run()
}
catch(SecurityException e){
System.out.println(e.getMessage());
}
}
}
}
}
public class Estudos{
public static void main(String[] args){
// vamos criar duas threads
MinhaThread t1 = new MinhaThread("Thread 1");
t1.start();
MinhaThread t2 = new MinhaThread("Thread 2");
t2.start();
}
}
Ao usar a instrução return nós forçamos a saída do método run() e consequentemente, o fim da tarefa sendo realizada pela thread. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Algorítmos Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static)Quantidade de visualizações: 16376 vezes |
|
Exercícios Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static) Pergunta/Tarefa: Escreva uma classe Retangulo para representar um retângulo. A classe deve conter: a) Dois campos de dados do tipo double chamados largura e altura que especificam a largura e a altura do retângulo. Os valores padrões são 1 tanto para a largura quanto para a altura. b) Um campo de dado do tipo String chamado cor que especifica a cor do retângulo. Para este exercício em particular, assuma que TODOS os retângulos possuirão a mesma cor. A cor padrão é branco. c) Um construtor sem argumentos que cria um retângulo padrão. d) Um construtor que cria um retângulo com a largura e altura especificadas. e) Métodos get() e set() para os três campos de dados da classe. f) Um método chamado getArea() que retorna a área do retângulo. g) Um método chamado getPerimetro() que retorna o perímetro do retângulo. Escreva um programa de teste que cria dois objetos da classe Retangulo. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Retangulo.java
package estudos;
public class Retangulo {
private double largura; // largura do retângulo
private double altura; // altura do retângulo
// O exercício pede que TODOS os retângulos tenham a mesma cor
// consulte a dica http://www.arquivodecodigos.net/dicas/1158 para mais
// detalhes sobre o modificador static
private static String cor = "branco"; // cor do retângulo
// construtor sem argumentos
public Retangulo(){
this.largura = 1;
this.altura = 1;
}
// construtor que permite especificar a largura e a altura
public Retangulo(double largura, double altura){
this.largura = largura;
this.altura = altura;
}
// obtém a altura
public double getAltura() {
return altura;
}
// define a altura
public void setAltura(double altura){
this.altura = altura;
}
// obtém a largura
public double getLargura(){
return largura;
}
// define a largura
public void setLargura(double largura){
this.largura = largura;
}
// obtém a cor de TODOS os retângulos
public static String getCor(){
return cor;
}
// define a cor de TODOS os retângulos
public static void setCor(String cor){
Retangulo.cor = cor;
}
// este método retorna a área do retângulo (em metros quadrados)
public double getArea(){
return (this.largura * this.altura);
}
// este método retorna o perímetro do retângulo (em metros)
public double getPerimetro(){
return ((2 * this.largura) + (2 * this.altura));
}
}
Agora o teste no método main():
package estudos;
public class Estudos {
public static void main(String[] args) {
// vamos criar uma instância da classe Retangulo com
// os valores padrões
Retangulo a = new Retangulo();
// agora vamos informar a largura e a altura
Retangulo b = new Retangulo(10, 5);
// os dois retângulos terão a cor verde
Retangulo.setCor("verde");
// vamos mostrar os resultados do primeiro retângulo
System.out.println("Primeiro retângulo");
System.out.println("Largura: " + a.getLargura());
System.out.println("Altura: " + a.getAltura());
System.out.println("Cor: " + Retangulo.getCor());
System.out.println("Área: " + a.getArea() + " metros quadrados");
System.out.println("Perímetro: " + a.getPerimetro() + " metros");
// vamos mostrar os resultados do segundo retângulo
System.out.println("\nSegundo retângulo");
System.out.println("Largura: " + b.getLargura());
System.out.println("Altura: " + b.getAltura());
System.out.println("Cor: " + Retangulo.getCor());
System.out.println("Área: " + b.getArea() + " metros quadrados");
System.out.println("Perímetro: " + b.getPerimetro() + " metros");
}
}
|
Java ::: Dicas & Truques ::: Data e Hora |
Java para iniciantes - Como usar a classe Date em suas aplicações JavaQuantidade de visualizações: 14466 vezes |
A classe Date pertence ao pacote java.util, e, embora muitos de seus métodos estejam em desuso (Deprecated), ainda encontraremos muito código Java que usa esta classe para trabalhar com datas e horas. Veja sua posição na hierarquia de classes Java:java.lang.Object java.util.Date Esta classe implementa as interfaces Serializable, Cloneable e Comparable<Date> e suas subclasses conhecidas são Date, Time, Timestamp (todas do pacote java.sql). As informações abaixo podem ser encontradas na documentação da classe Date. A classe Date representa um momento específico no tempo, com uma precisão de milisegundos. Antes do JDK 1.1, esta classe tinha duas funções adicionais. Ela permitia a interpretação de datas como valores de ano, mês, dia, hora, minuto e segundo. Também permitia a formatação e parsing de strings de datas. Infelizmente, a API para estas funções não facilitava a internacionalização. Assim, a partir do JDK 1.1, a classe Calendar deve ser usada para converter entre campos de datas e horas e a classe DateFormat deve ser usada para formatar e fazer o parsing de strings de datas. Os métodos correspondentes a estas funções estão em desuso (Deprecated) na classe Date. Embora a classe Date tenha sido projetada para refletir a hora universal coordenada (Coordinated Universal Time - UTC), ela pode não ser capaz de fazer isso corretamente, dependendo do sistema no qual a Java Virtual Machine esteja sendo executada. A grande maioria dos sistemas operacionais modernos assume que 1 dia = 24 × 60 × 60 = 86400 segundos em todos os casos. No UTC, contudo, de dois em dois anos, aproximadamente, há um segundo extra, chamado de "leap second" (a mesma idéia do ano bissexto). O leap second é sempre adicionado como o último segundo do dia e sempre nos dias 31 de dezembro ou 30 de junho. Por exemplo, o último minuto do ano de 1995 teve 61 segundos, graças ao segundo extra que foi adicionado. A maioria dos relógios dos computadores não são precisos o suficiente para refletir a distinção do leap second. Alguns padrões de computadores são definidos em termos da hora de Greenwich (Greenwich mean time - GMT), que é o equivalente ao Universal Time (UT). GMT é o nome "civil" para o padrão, UT é o nome "científico" para o mesmo padrão. A distinção entre UTC e UT é que UTC é baseado em um relógio atômico e UT é baseado em observações astronômicas, o que para todos os propósitos práticos não traz diferença significativa. Devido à rotação da terra não ser uniforme (ela desacelera ou acelera de formas complicadas), O UT nem sempre flui uniformente. Segundos extras (Leap seconds) são inseridos conforme necessário no UTC de forma a mantê-lo dentro dos 0.9 segundos do UT1, que é uma versão do UT com algumas correções aplicadas. Há outros sistemas de datas e horas também; por exemplo, a escala de tempo pelo sistema de posicionamento global baseado em satélite (satellite-based global positioning system - GPS) é sincronizado com o UTC mas não é ajustado para os segundos extras. Em todos os métodos da classe Date que aceitam ou retornam valores de ano, mês, dia, hora, minuto e segundos, as seguintes representações são usadas:
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







