![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Java - Escreva um programa Java que informa o número de dias em um determinado mês e ano. Seu código deverá solicitar ao usuário o número correspondenteQuantidade de visualizações: 1143 vezes |
Pergunta/Tarefa: Escreva um programa Java que informa a quantidade de dias em um determinado mês e ano. Seu código deverá solicitar ao usuário o número correspondente ao mês, na faixa de 1 a 12, e o ano. Verifique também se o ano é bissexto ou não. Sua saída deverá ser parecida com: Informe o mês (1 - 12): 4 Informe o ano: 2022 Abril de 2022 possui 30 dias. Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos usar a classe Scanner para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // para guardar a quantidade de dias no mês int quantDiasNoMes = 0; // para o nome do mês String nomeMes = ""; // vamos ler o número do mês System.out.print("Informe o mês (1 - 12): "); int mes = Integer.parseInt(entrada.nextLine()); // vamos ler o ano System.out.print("Informe o ano: "); int ano = Integer.parseInt(entrada.nextLine()); // agora usamos um switch para tratar o mês informado switch (mes){ case 1: nomeMes = "Janeiro"; quantDiasNoMes = 31; break; case 2: nomeMes = "Fevereiro"; // é ano bissexto? if ((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))) { quantDiasNoMes = 29; } else { quantDiasNoMes = 28; } break; case 3: nomeMes = "Março"; quantDiasNoMes = 31; break; case 4: nomeMes = "Abril"; quantDiasNoMes = 30; break; case 5: nomeMes = "Maio"; quantDiasNoMes = 31; break; case 6: nomeMes = "Junho"; quantDiasNoMes = 30; break; case 7: nomeMes = "Julho"; quantDiasNoMes = 31; break; case 8: nomeMes = "Agosto"; quantDiasNoMes = 31; break; case 9: nomeMes = "Setembro"; quantDiasNoMes = 30; break; case 10: nomeMes = "Outubro"; quantDiasNoMes = 31; break; case 11: nomeMes = "Novembro"; quantDiasNoMes = 30; break; case 12: nomeMes = "Desembro"; quantDiasNoMes = 31; break; } // mostra o resultado System.out.println(nomeMes + " de " + ano + " possui " + quantDiasNoMes + " dias."); System.out.println("\n"); } } |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: NumPy Python Library |
Exercício Resolvido de Python NumPy - Como somar duas matrizes usando a biblioteca NumPy do PythonQuantidade de visualizações: 1280 vezes |
Pergunta/Tarefa: Escreva um programa Python que usa a biblioteca NumPy para efetuar a soma de duas matrizes de mesma ordem, ou seja, mesmo número de linhas e colunas. Seu código deverá somar o primeiro elemento da matriz A com o primeiro elemento da matriz B, e assim por diante. Sua saída deverá ser parecida com: A primeira matriz é: [[4 1 3] [9 2 5]] A segunda matriz é: [[ 3 10 2] [ 1 13 4]] A matriz soma é: [[ 7 11 5] [10 15 9]] Veja a resolução comentada deste exercício em Python: # vamos importar a biblioteca NumPy import numpy as np # função principal do programa def main(): # vamos criar a primeira matriz a = np.array([[4, 1, 3], [9, 2, 5]]) # vamos criar a segunda matriz b = np.array([[3, 10, 2], [1, 13, 4]]) # vamos somar as duas matrizes c = a + b # e agora mostramos o resultado print("A primeira matriz é:\n{0}".format(a)) print("A segunda matriz é:\n{0}".format(b)) print("A matriz soma é:\n{0}".format(c)) if __name__== "__main__": main() |
Java ::: Dicas & Truques ::: Expressões Regulares |
Como usar expressões regulares em Java - Expressões regulares para iniciantesQuantidade de visualizações: 48749 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", matcher.group(), matcher.start(), matcher.end()); } 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 String source = console.readLine("Informe a entrada: "); Matcher matcher = pattern.matcher(source); // Mostra as similaridades while(matcher.find()){ System.out.printf("Encontrado: \"%s\" de %d à %d.%n", matcher.group(), matcher.start(), matcher.end()); } } } 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. |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como criar um arquivo em Java usando o método createNewFile() da classe FileQuantidade de visualizações: 243 vezes |
Nesta dica mostrarei como é possível usar o método createNewFile() da clase File, do pacote java.io, para criar um novo arquivo. Note que estou usando um bloco try...catch para tratar os possíveis erros decorrentes desta operação. Veja o código completo para o exemplo: package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ try{ File arquivo = new File("c:\\estudos_java\\osmar.txt"); // Cria o arquivo se este não existe ainda boolean ok = arquivo.createNewFile(); // o arquivo foi criado com sucesso? if(ok){ System.out.println("Arquivo criado com sucesso."); } else{ System.out.println("Nao foi possivel criar o arquivo."); } } catch(IOException e){ System.out.println("Erro: " + e.toString()); } } } Ao executar este código nós teremos o seguinte resultado: Arquivo criado com sucesso. |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como verificar se uma substring está contida em uma string usando as funções ContainsStr() e AnsiContainsStr() do DelphiQuantidade de visualizações: 32702 vezes |
Em algumas situações precisamos verificar se uma substring está contida em uma string. Em Delphi isso pode ser feito com o auxílio da função ContainsStr() ou AnsiContainsStr(). Esta função requer a string alvo da pesquisa e a substring a ser pesquisada. O retorno será true se a substring estiver contida na string. Do contrário o retorno será false. Estas duas funções possuem as seguintes assinaturas: function ContainsStr(const AText, ASubText: string): Boolean; function AnsiContainsStr(const AText, ASubText: string): Boolean; Veja agora um exemplo de seu uso: procedure TForm1.Button1Click(Sender: TObject); var frase: string; begin frase := 'Gosto muito de Delphi, PHP e Java'; // vamos verificar se a string contém a substring "PHP" if AnsiContainsStr(frase, 'PHP') then ShowMessage('A frase contem a substring indicada') else ShowMessage('A frase NÃO contem a substring indicada') end; Lembre-se de que esta função diferencia maiúsculas e minúsculas. Não se esqueça de adicionar a unit StrUtils no uses do seu formulário. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular o produto escalar entre dois vetores usando Java - Geometria Analítica e Álgebra Linear usando JavaQuantidade de visualizações: 3546 vezes |
O produto escalar (em inglês: dot product) entre dois vetores é um número real que relaciona o comprimento desses dois vetores e o ângulo formado por eles. É importante notar que alguns autores se referem ao produto escalar como produto interno. Obtém-se o produto escalar entre dois vetores, no R2, ou três vetores, no R3, por meio da fórmula a seguir (assumindo dois vetores __$\vec{u} = (a, b)__$ e __$\vec{v} = (c, d)__$ no R2). \[\vec{u} \cdot \vec{v} = a \cdot c + b \cdot d \] Vamos agora a um exemplo prático. Veja a imagem abaixo, na qual temos dois vetores, com suas coordenadas e magnitudes (módulo, comprimento ou norma): ![]() Note que ambos os vetores possuem como origem as coordenadas (0, 0). O primeiro vetor possui as coordenadas finais (4, 10) e magnitude 11, e o segundo vetor possui as coordenadas finais (11, 6) e magnitude 13. Magnitude é o tamanho do vetor, ou seja, seu comprimento, seu módulo ou norma. Veja agora o código Java completo que lê as coordenadas dos dois vetores e calcula e mostra o produto escalar entre eles: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ Scanner entrada = new Scanner(System.in); // x e y do primeiro vetor System.out.print("Coordenada x do primeiro vetor: "); float x1 = Float.parseFloat(entrada.nextLine()); System.out.print("Coordenada y do primeiro vetor: "); float y1 = Float.parseFloat(entrada.nextLine()); // x e y do segundo ponto System.out.print("Coordenada x do segundo vetor: "); float x2 = Float.parseFloat(entrada.nextLine()); System.out.print("Coordenada y do segundo vetor: "); float y2 = Float.parseFloat(entrada.nextLine()); // vamos calcular o produto escalar float pEscalar = (x1 * x2) + (y1 * y2); // mostramos o resultado System.out.println("O produto escalar é: " + pEscalar); } } Ao executar este código Java nós teremos o seguinte resultado: Coordenada x do primeiro vetor: 4 Coordenada y do primeiro vetor: 10 Coordenada x do segundo vetor: 11 Coordenada y do segundo vetor: 6 O produto escalar é: 104.0 |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como retornar a quantidade de dias para um determinado mês e ano em JavaScriptQuantidade de visualizações: 8849 vezes |
Sempre que estamos desenvolvendo aplicações de calendário ou outras tarefas envolvendo datas e horas em JavaScript nós precisamos saber quantos dias um determinado mês possui. Nesta dica que mostro como escrever uma função JavaScript chamada diasNoMes() que recebe um mês e um ano e retorna a quantidade de dias que tal mês possui. Veja a página HTML completa para o exemplo: <!doctype html> <html> <head> <title>Data e hora em JavaScript</title> </head> <body> <script type="text/javascript"> // função que recebe um mês e ano e retorna // a quantidade de dias no mês informado function diasNoMes(mes, ano){ return 32 - new Date(ano, mes, 32).getDate(); } // o mês começa com 0 (Fevereiro = 1) document.write("O mês informado possui " + diasNoMes(1, 2023) + " dias"); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: O mês informado possui 28 dias |
Python ::: PyQt GUI Toolkit ::: QMainWindow |
Como criar a janela principal de uma aplicação Python PyQt usando a classe QMainWindowQuantidade de visualizações: 1515 vezes |
Em geral toda aplicação GUI, ou seja, uma aplicação de interface visual, rodando no Window, Linux, MAC, etc, possui uma janela principal. No PyQt tal janela é criada como uma instância da classe QMainWindow. Veja a posição desta classe na hierarquia de classes do PyQt: QObject, QPaintDevice QWidget QMainWindow Uma janela QMainWindow possui o seu próprio layout, no qual podemos adicionar uma barra de ferramentas QToolBar, um QDockWidget (que serve para controles que "grudam" em lados diferentes da tela), uma barra de menus QMenuBar e uma barra de status QStatusBar. O layout oferecido pela classe QMainWindow possui uma área central que pode ser ocupada por qualquer tipo de controle visual. É nessa área central que podemos colocar outros tipos de gerenciadores de layouts, que servirão como containers para os componentes visuais da aplicação. Veja uma aplicação PyQt completa na qual temos uma janela principal QMainWindow e um botão QPushButton. Observe como tiramos proveito da programação orientada em Python para criar uma classe JanelaPrincipal que herda de QMainWindow: # vamos importar os módulos necessários import sys from PyQt6.QtCore import * from PyQt6.QtGui import * from PyQt6.QtWidgets import * # vamos criar uma classe que herda de QMainWindow class JanelaPrincipal(QMainWindow): # construtor da classe def __init__(self): super().__init__() # definimos o título da janela self.setWindowTitle("Cadastro de Produtos") # vamos criar um botão QPushButton botao = QPushButton("Novo Produto") # definimos este botão como o controle central # da janela principal self.setCentralWidget(botao) if __name__== "__main__": # cria a aplicação app = QApplication(sys.argv) # cria a janela principal e a coloca visível janela_principal = JanelaPrincipal() janela_principal.show() # executa a aplicação app.exec() |
Python ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como embaralhar os elementos de um array em Python usando random.shuffle()Quantidade de visualizações: 1239 vezes |
Nesta dica mostrarei como podemos embaralhar a ordem dos elementos de uma lista do Python. Para isso usaremos o método shuffle() do módulo random. Este método muda a ordem dos elementos no vetor original. Veja o código completo para o exemplo: # vamos importar o módulo random import random # função principal do programa def main(): # vamos criar uma lista de números inteiros numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # vamos mostrar o vetor original print("Ordem original: {0}".format(numeros)) # agora vamos embaralhar a ordem dos elementos da lista random.shuffle(numeros) # e mostramos o resultado print("Após o embaralhamento: {0}".format(numeros)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Ordem original: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Após o embaralhamento: [3, 10, 6, 8, 9, 5, 7, 4, 1, 2] |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como remover espaços em excesso de uma string C# usando expressões regularesQuantidade de visualizações: 14797 vezes |
Nesta dica mostrarei como podemos usar expressões regulares em C# para remover os espaços em excesso de uma frase ou texto. Esta técnica é bem útil quando estamos trabalhando com dados informados pelos usuários de nossas aplicações. Temos sempre que verificar, não somente o excesso de espaços no meio do texto, quanto espaços no início e no fim das strings informadas. Veja o código completo para o exemplo: using System; using System.Text.RegularExpressions; namespace Estudos { class Program { static void Main(string[] args) { // vamos construir o Regex com o padrão que queremos Regex regex = new Regex("\\s +", RegexOptions.IgnoreCase | RegexOptions.Compiled); // frase com espaços string frase = " Gosto muito de C# "; // frase sem espaços string resultado = (regex.Replace(frase, " ")).Trim(); // mostramos o resultado Console.WriteLine("Frase com espaços em excesso: {0}", frase); Console.WriteLine("Espaços em excesso removidos: {0}", resultado); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: Frase com espaços em excesso: Gosto muito de C# Espaços em excesso removidos: Gosto muito de C# |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como usar o Delphi para verificar se um determinado processo do Windows está sendo executado JavaScript - Como obter o código da tecla pressionada em um elemento HTML usando o evento onkeypress do JavaScript Delphi - Como calcular MDC em Delphi PHP - Programação Orientada a Objetos em PHP - Aprenda a criar e usar métodos e classes abstratas em PHP |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - JavaScript para iniciantes - Como converter uma string em um valor numérico usando o método Number() do JavaScript |
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 |