Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string começa com uma determinada substring em Ruby usando uma função personalizada

Quantidade de visualizações: 7214 vezes
O Ruby, até a versão 1.8.6, não dispõe de um método para verificar se uma string começa com uma determinada substring. Assim, veja abaixo como escrever uma função starts_with(). Esta função recebe a string e a substring e retorna true se a string começar com a substring.

Eis a listagem completa:

# método auxiliar que permite verificar se
# uma string começa com uma substring
def starts_with(string, substring)
  if string.index(substring) == 0   
    return true
  else
    return false
  end
end

# declara e inicializa uma variável string
......


Ao executar este código Ruby nós teremos o seguinte resultado:

A string começa com "Gosto"

Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercício Resolvido de Java - Usando o laço while para pedir ao usuário que tente acertar um número aleatório entre 0 e 10 (incluindo) e mostrar a quantidade de tentativas feitas

Quantidade de visualizações: 1489 vezes
Pergunta/Tarefa:

Escreva um programa Java que gera um número aleatório (randômico) entre 0 e 10 (incluindo estes dois valores) e peça ao usuário para adivinhá-lo. Use um laço while para registrar as tentativas feitas e, a cada tentativa, dê dicas informando se o número gerado é maior ou menor que a tentativa feita. Finalmente mostre a quantidade de tentativas feitas até que o número fosse acertado.

Sua saída deverá ser parecida com a mostrada abaixo:



Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package exercicios;

import java.util.Scanner;

public class Exercicios {
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
      
    // declaração das variáveis
    int tentativas = 0, numeroLido;
    boolean acertou = false;
    // vamos gerar um número aleatório entre 0 e 10
    int numero = (int)(Math.random() * 11);
    
    // um laço while que repetirá até que o número seja acertado
    while(!acertou){
      System.out.print("Informe um número de 0 a 10: ");
......



Java ::: Dicas & Truques ::: Expressões Regulares

Como usar expressões regulares em Java - Expressões regulares para iniciantes

Quantidade de visualizações: 48168 vezes
O suporte a expressões regulares ou regex tem sido parte da plataforma Java desde a versão 1.4. Contidas no pacote java.util.regex, as classes regex suportam a comparação de padrões de forma similar à linguagem Perl, mas, usando classes e a sintáxe da linguagem Java. Todo o pacote se limita a três classes: Pattern, Matcher e PatternSyntaxException. A versão 1.5 introduziu a interface MatchResult.

Use as duas classes Pattern e Matcher juntas. Defina e expressão regular com a classe Pattern. Então use a classe Matcher para verificar o padrão em relação à fonte de entrada. Uma exceção é lançada quando o padrão tem um erro de sintáxe na expressão.

Estas classes não possuem construtores. Em vez disso, compilamos uma expressão regular para obter um padrão, e então usamos o Pattern retornado para obter seu Matcher baseado na fonte de entrada:

Pattern pattern = Pattern.compile(<regular expression>); 
Matcher matcher = pattern.matcher(<input source>);


Uma vez que tenhamos um Matcher, tipicamente processamos a fonte de entrada a fim de encontrarmos as similaridades contidas. Usa-se o método find() para localizar similaridades do padrão na fonte de entrada. Cada chamada a find() continua a partir do ponto onde a última chamada parou, ou na posição 0 para a primeira chamada. As similaridades encontradas são retornadas pelo método group():

while(matcher.find()){ 
  System.out.printf"Found: \"%s\" from %d to %d.%n", 
......


O código a seguir mostra um programa básico de expressões regulares, que pede ao usuário que informe tanto a expressão regular quanto a string que será comparada:

import java.util.regex.*; 
import java.io.*;

public class Regex{ 
  public static void main(String args[]){ 
    Console console = System.console(); 

    // Obtém a expressão regular 
    String regex = console.readLine("%nInforme a expressão: "); 
    Pattern pattern = Pattern.compile(regex); 

    // Obtém a entrada 
......


Mas, o que realmente é uma expressão regular? A classe Pattern fornece detalhes mais profundos, mas, basicamente uma expressão regular é uma sequência de caracteres que tenta encontrar semelhanças em outra sequencia de caracteres. Por exemplo, podemos procurar o padrão literal de "eles" duplos "ll" na string "Hello, World". O programa anterior encontraria o padrão "ll" começando na posição 2 e terminando na posição 4. A posição final é a posição do próximo caractere depois do fim do padrão de semelhança.

Strings de padrão como "ll" não são muito interessantes, relatando somente onde elas estão literalmente na fonte de entrada. Padrões de expressões regulares podem incluir meta-caracteres especiais. Meta-caracteres fornecem habilidades poderosas de comparação. É possível usar os 15 caracteres "([{\^-$|]})?*+." como meta-caracteres em expressões regulares.

Alguns meta-caracteres indicam o agrupamento de caracteres. Por exemplo, os caracteres de colchetes [ e ] permitem especificar um grupo de caracteres nos quais uma similaridade ocorre se qualquer um dos caracteres entre colchetes for encontrado no texto. Por exemplo, o padrão "co[cl]a" retornará similaridade com "coca" e "cola". Ele não se igualará a "cocla", uma vez que [] é usado para igualar apenas um caractere. Veremos mais sobre quantificadores mais adiante, quando quisermos encontrar alguma coisa múltiplas vezes.

Além de tentar encontrar caracteres individuais, podemos usar os colchetes [ e ] para igualar uma faixa de caracteres, tais como as letras de j-z, definidas como [j-z]. Isso pode também ser combinado com um literal string, como em "foo[j-z]" que encontraria "fool", mas não encontraria "food", uma vez que l está na faixa de j à z e d não está. Podemos também usar o caractere ^ para representar negação, com um literal string ou uma faixa. O padrão "foo[^j-z]" encontrará palavras que começam como foo mas que não terminem com uma letra de j à z. Assim a string food agora seria encontrada. Faixas múltiplas podem ser combinadas como em [a-zA-Z] para informar as letras de a à z maiúsculas ou minúsculas.

Enquanto literais strings são ótimos como primeira lição sobre expressões regulares, as coisas mais típicas que a maioria das pessoas usam em expressões regulares são as classes de caracteres pré-definidos. É aqui que os meta-caracteres . e \ são importantes. O ponto . é usado para representar qualquer caractere. Assim, a expressão regular ".oney" encontraria money e honey, e qualquer outro conjunto de 5 caracteres que terminem em oney. O caractere \ por sua vez, é usado com outros caracteres para representar um conjunto completo de letras. Por exemplo, enquanto podemos usar [0-9] para representar um conjunto de dígitos, podemos também usar \d. Podemos ainda usar [^0-9] para representar um conjunto de caracteres que não sejam dígitos. Ou podemos usar o caractere \D. Todas estas strings de classes de caracteres são definidas na documentação da plataforma Java para a classe Pattern, uma vez que elas não são fáceis de serem lembradas. Eis aqui um sub-conjunto de algumas classes de caracteres pré-definidos especiais:

* \s -- whitespace (espaço em branco)
* \S -- non-whitespace (não seja espaço em branco)
* \w -- word character [a-zA-Z0-9] (caractere de palavra)
* \W -- non-word character (não caractere de palavra)
* \p{Punct} -- punctuation (pontuação)
* \p{Lower} -- lowercase [a-z] (minúsculas)
* \p{Upper} -- uppercase [A-Z] (maiúsculas)


Se você quiser usar uma destas strings no programa Regex mostrado acima, você as define como mostrado. \s se iguala ao espaço em branco. Se, contudo, você quiser definir a expressão regular via código, você precisa se lembrar que o caractere \ tem tratamento especial. Devemos escapar a string no código fonte:

String regexString = "\\s"; 
......


Aqui, os caracteres \\ representam uma única barra invertida na string. Há outras strings especiais para representar literais strings:

* \t -- tab (tabulação)
* \n -- newline (nova linha)
* \r -- carriage return (retorno de carro)
* \xhh -- hex character 0xhh (caractere hexadecimal)
* \uhhhh -- hex character 0xhhhh (caractere hexadecimal)


Os quantificadores tornam as expressões regulares mais interessantes, pelo menos quando combinados com outras expresssões tais como classes de caracteres. Por exemplo, se quisermos encontrar uma string de três caracteres de a-z, poderíamos usar o padrão "[a-z][a-z][a-z]". Mas não precisamos fazer isso. Em vez de repetir a string, adicionamos um quantificador após o padrão. Para este exemplo específico, "[a-z][a-z][a-z]" pode ser representado como "[a-z]{3}". Para uma quantidade específica, o número vai dentro das chaves {}. Podemos também usar ?, * ou + para representar zero ou uma vez, zero ou mais vezes, ou uma ou mais vezes, respectivamente.

O padrão [a-z]? encontra um caractere de a-z zero ou uma vez. O padrão [a-z]* encontra um caractere de a-z zero ou mais vezes. O padrão [a-z]+ encontra um caractere de a-z uma ou mais vezes.

Use quantificador com cuidado, prestando muita atenção aos quantificadores que permitem zero similaridades.

Quando usamos as chaves {} como quantificadores, devemos definir uma faixa. {3} significa exatamente 3 vezes, mas poderíamos dizer {3,}, que define no mínimo três vezes. O quantificador {3,5} encontra um padrão de 3 a 5 vezes.

Há mais sobre expressões regulares que o que mostramos aqui. A arte de usá-las envolve descobrir a expressão regular correta para a situação atual. Tente diferente expressões com o programa Regex e veja se ele encontra o que você está esperando. Certifique-se de tentar diferentes quantificadores para entender realmente suas diferenças. Observe que quantificadores geralmente tentam incluir o maior número de caracteres para uma similaridade possível.


C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço foreach da linguagem C#

Quantidade de visualizações: 26077 vezes
O laço foreach é usado quando queremos percorrer todos os elementos de um array (matriz) ou de coleções de dados, tais como uma ArrayList. Veja um exemplo:

static void Main(string[] args){
  // declara e inicializa um array de inteiros
  int[] valores = new int[5]{3, 2, 5, 11, 13};

  // usa o laço foreach para percorrer todos
  // os elementos
......


Aqui nós usamos este laço para percorrer todos os elementos do array. Note que, durante cada iteração do laço, uma referência ao elemento atual é guardada na variável valor. Agora uma advertência: a referência retornada pelo laço foreach é somente leitura. Observe o seguinte trecho de código:

// declara e inicializa um array de inteiros
int[] valores = new int[5]{3, 2, 5, 11, 13};

// tenta alterar o valor da referência ao
......


Ao tentarmos compilar este código teremos a seguinte mensagem:

Cannot assign to 'valor' because it is 
a 'foreach iteration variable'



Python ::: Topografia e Geoprocessamento ::: Passos Iniciais

Como converter graus, minutos e segundos para graus decimais em Python

Quantidade de visualizações: 740 vezes
Em algumas situações, principalmente em cálculos da Engenharia Civil e Topografia, nós precisamos converter graus, minutos e segundos para graus decimais. É comum chamarmos graus, minutos e segundos de DMS ou GMS, enquanto os graus decimais são chamados de UTM.

Nesta dica veremos como converter 85º 42' 13.75'' para graus decimais. A fórmula que usaremos é a seguinte:

\[\text{Graus decimais} = \text{Graus} + \frac{\text{Minutos}}{60} + \frac{\text{Segundos}}{3600} \]

Veja agora o código Python completo que pede para o usuário informar os graus, os minutos e os segundos e mostra os graus decimais:

# função principal do programa
def main():
  # vamos pedir para o usuário informar os graus, minutos
  # e segundos
  graus = float(input("Informe os graus: "))
  minutos = float(input("Informe os minutos: "))
  segundos = float(input("Informe os segundos: "))
    
......


Ao executar este código Python nós teremos o seguinte resultado:

Informe os graus: 85
Informe os minutos: 42
Informe os segundos: 13.75
Os graus decimais são: 85.70381944444445

Fique atento ao sinal. Se o valor em graus, minutos e segundos possuir os caracteres "W" ou "S", então o valor em graus decimais deverá levar o sinal de negativo.


Python ::: Dicas & Truques ::: Data e Hora

Como retornar a hora em Python como um decimal no intervalo 00-23 (formato 24 horas) usando o sinalizador %H

Quantidade de visualizações: 6821 vezes
Como retornar a hora em Python como um decimal no intervalo 00-23 (formato 24 horas) usando o sinalizador %H

Nesta dica mostrarei como podemos obter a data atual em Python usando a função today() do objeto datetime e em seguida retornar a hora como um decimal no intervalo 00-23 (formato 24 horas) usando a função strftime() e o sinalizador %H.

Veja o código Python completo para o exemplo:

from datetime import datetime

# função principal do programa
def main():
  # Obtém um datetime da data e hora atual
  hoje = datetime.today()

......


Ao executar este código Python nós teremos o seguinte resultado:

A hora é: 11


Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 14 usuários muito felizes estudando em nosso site.