C# ::: Dicas & Truques ::: Strings e Caracteres |
Como remover os espaços no início de uma string C# usando o TrimStart() da classe StringQuantidade de visualizações: 7289 vezes |
Nesta dica mostrarei como usar a função TrimStart() da classe String do C# para remover os espaços no início de uma palavra, frase ou texto. Esta operação é importante quando estamos lidando com dados informados pelos usuário de nossas aplicações C#. Veja o código completo para o exemplo: using System; namespace Estudos { class Program { static void Main(string[] args) { string texto = " temos espaços no início e fim "; Console.WriteLine(texto); // remove os espaços no início da string texto = texto.TrimStart(); Console.WriteLine("." + texto + "."); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: temos espaços no início e fim .temos espaços no início e fim . |
C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Exercício Resolvido de C - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em CQuantidade de visualizações: 1543 vezes |
Pergunta/Tarefa: Escreva um programa C para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo. Sua saída deverá ser parecida com: Informe um número inteiro: 16 O número informado foi: 16 O antecessor é 15 O sucessor é: 17 Veja a resolução comentada deste exercício usando C: #include <stdio.h> #include <stdlib.h> #include <locale.h> // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema int numero, sucessor, antecessor; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar um número inteiro printf("Informe um número inteiro: "); scanf("%d", &numero); // vamos calcular o sucessor do número informado sucessor = numero + 1; // vamos calcular o antecessor do número informado antecessor = numero - 1; // e agora mostramos os resultados printf("O número informado foi: %d\n", numero); printf("O antecessor é %d\n", antecessor); printf("O sucessor é: %d", sucessor); printf("\n\n"); system("PAUSE"); return 0; } |
Java ::: Coleções (Collections) ::: HashMap |
Como testar se uma determinada chave está contida no HashMap do Java usando o método containsKey()Quantidade de visualizações: 8553 vezes |
Em algumas situações precisamos verificar se uma determinada chave está contida no HashMap. Para isso podemos usar o método containsKey(), definido originalmente na interface Map. Veja sua assinatura:public boolean containsKey(Object key) Note que este método recebe um objeto contendo o valor da chave a ser pesquisada e retorna um valor true se o HashMap contiver a chave e false caso contrário. Veja o exemplo: package estudos; import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos criar uma instância de HashMap HashMap<Integer, String> clientes = new HashMap<>(); // vamos adicionar três chaves e seus valores clientes.put(1, "Osmar J. Silva"); clientes.put(2, "Salvador Miranda de Andrade"); clientes.put(3, "Marcos da Costa Santos"); // vamos verificar se a chave 2 está contida no HashMap if(clientes.containsKey(2)){ System.out.println("A chave está contida no mapa"); } else{ System.out.println("A chave NÃO está contida no mapa"); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: A chave está contida no mapa |
Python ::: PyQt GUI Toolkit ::: QMainWindow |
Como criar a janela principal de uma aplicação Python PyQt usando a classe QMainWindowQuantidade de visualizações: 1501 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() |
MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial |
Como adicionar uma chave primária a uma tabela MySQL usando o comando ALTER TABLE ADD PRIMARY KEYQuantidade de visualizações: 8139 vezes |
Em algumas situações poderá ocorrer a necessidade, talvez por motivos de manutenção na base de dados, de criar uma chave primária para uma tabela MySQL já existente. Isso pode ser feito com o auxílio do comando DDL ALTER TABLE ADD PRIMARY KEY. Comece criando uma tabela livros sem chave primária. Veja o comando CREATE TABLE: CREATE TABLE livros( id int(11) unsigned NOT NULL, titulo varchar(45) NOT NULL, paginas int(10) unsigned NOT NULL )ENGINE=InnoDB; Se dispararmos um comando DESCRIBE livros veremos a seguinte estrutura: Field Type Null Key Default Extra id int(11) unsigned NO - - - titulo varchar(45) NO - - - paginas int(10) unsigned NO - - - ALTER TABLE livros ADD PRIMARY KEY(id); Dispare o comando DESCRIBE livros novamente e veja o resultado. Agora o campo id está marcado como chave primária: Field Type Null Key Default Extra id int(11) unsigned NO PRI - - titulo varchar(45) NO - - - paginas int(10) unsigned NO - - - |
C# ::: Dicas & Truques ::: Tipos de Dados |
Como usar o tipo bool da linguagem C# - Apostila C# para iniciantesQuantidade de visualizações: 17770 vezes |
O tipo bool do C# é um apelido para o tipo System.Boolean do .NET e pode representar apenas dois valores: True ou False. Este tipo é usado em expressões condicionais e, quando os valores True e False estiverem sendo usados como literais, estes deverão ser escritos como "true" e "false". Veja:bool pode = true; bool vencido = false; Se escrevermos "True" e "False", teremos erros de compilação: The name 'True' does not exist in the current context The name 'False' does not exist in the current context No entanto, se imprimirmos o valor de uma variável do tipo boolean usando Console.WriteLine(), teremos os valores "True" e "False". Experimente: bool pode = true; Console.WriteLine(pode); Para saber a quantidade de bytes que um tipo bool ocupa, podemos usar o método sizeof(). Veja: Console.WriteLine("Um boolean ocupa " + sizeof(bool) + " bytes no C# 2.0"); Este código exibirá: Um boolean ocupa 1 bytes no C# 2.0 Em C++, um valor de tipo bool pode ser convertido para um valor do tipo int, ou seja, false é equivalente à zero e true é equivalente à um valor diferente de zero. Em C# isso não é possível. Veja o que acontece quando tentamos converter um tipo int para um tipo boolean: int pode = 1; if(pode) Console.WriteLine("OK"); A mensagem de erro de compilação é: Cannot implicitly convert type 'int' to 'bool' |
Python ::: Dicas & Truques ::: Matemática e Estatística |
Apostila Python para iniciantes - Como calcular juros compostos e montante usando PythonQuantidade de visualizações: 18035 vezes |
O regime de juros compostos é o mais comum no sistema financeiro e portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte. Chamamos de capitalização o momento em que os juros são incorporados ao principal. Após três meses de capitalização, temos: 1º mês: M = P . (1 + i) 2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) 3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i) Simplificando, obtemos a fórmula: M = P . (1 + i) ^ n Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses. Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período: J = M - P Vejamos um exemplo: Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros? Veja o código Python para a resolução: # função principal do programa def main(): principal = 2000.00 taxa = 0.03 meses = 3 montante = principal * pow((1 + taxa), meses) juros = montante - principal print("O total de juros a ser pago é:", juros) print("O montante a ser pago é:", montante) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: O total de juros a ser pago é: 185.45400000000018 O montante a ser pago é: 2185.454 Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir: # função principal do programa def main(): principal = 2000.00 taxa = 0.03 meses = 3 anterior = 0.0 for i in range(1, meses + 1): montante = principal * pow((1 + taxa), i) juros = montante - principal - anterior anterior += juros print("Mês:", i ," - Montante:", montante, "- Juros:", juros) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Mês: 1 - Montante: 2060.0 - Juros: 60.0 Mês: 2 - Montante: 2121.7999999999997 - Juros: 61.79999999999973 Mês: 3 - Montante: 2185.454 - Juros: 63.65400000000045 |
GNU Octave ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em GNU Octave dados dois pontos no plano cartesianoQuantidade de visualizações: 1552 vezes |
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem GNU Octave (script GNU Octave) que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos: # x e y do primeiro ponto x1 = input("Coordenada x do primeiro ponto: ") y1 = input("Coordenada y do primeiro ponto: ") # x e y do segundo ponto x2 = input("Coordenada x do segundo ponto: ") y2 = input("Coordenada y do segundo ponto: ") # agora vamos calcular o coeficiente angular m = (y2 - y1) / (x2 - x1) # mostramos o resultado fprintf("O coeficiente angular é: %f\n\n", m) Ao executar este código em linguagem GNU Octave nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 3 x1 = 3 Coordenada y do primeiro ponto: 6 y1 = 6 Coordenada x do segundo ponto: 9 x2 = 9 Coordenada y do segundo ponto: 10 y2 = 10 m = 0.6667 O coeficiente angular é: 0.666667 Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$): # x e y do primeiro ponto x1 = input("Coordenada x do primeiro ponto: ") y1 = input("Coordenada y do primeiro ponto: ") # x e y do segundo ponto x2 = input("Coordenada x do segundo ponto: ") y2 = input("Coordenada y do segundo ponto: ") # vamos obter o comprimento do cateto oposto cateto_oposto = y2 - y1 # e agora o cateto adjascente cateto_adjascente = x2 - x1 # vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa # (em radianos, não se esqueça) tetha = atan2(cateto_oposto, cateto_adjascente) # e finalmente usamos a tangente desse ângulo para calcular # o coeficiente angular tangente = tan(tetha) # mostramos o resultado fprintf("O coeficiente angular é: %f\n\n", tangente) Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Java - Como rotacionar os elementos de um vetor de inteiros n vezes para a direita - Solução usando força-brutaQuantidade de visualizações: 639 vezes |
Pergunta/Tarefa: Dado o vetor: // vamos criar um vetor de inteiros int valores[] = {1, 6, 9, 3, 7, 8, 5, 2}; Sua saída deverá ser parecida com: Array na ordem original: 1 6 9 3 7 8 5 2 Rotação do vetor depois do passo 1: 2 1 6 9 3 7 8 5 Rotação do vetor depois do passo 2: 5 2 1 6 9 3 7 8 Rotação do vetor depois do passo 3: 8 5 2 1 6 9 3 7 Array depois de rotacionar 3 vezes: 8 5 2 1 6 9 3 7 Veja a resolução comentada deste exercício em Java: package estudos; public class Estudos { public static void main(String[] args) { // vamos criar um vetor de inteiros int valores[] = {1, 6, 9, 3, 7, 8, 5, 2}; // mostramos o array na ordem original System.out.println("Array na ordem original:"); exibirVetor(valores); // vamos rotacionar o array 3 casas para a direita valores = rotacionarArray(valores, 3); // e mostramos o resultado System.out.println("Array depois de rotacionar 3 vezes:"); exibirVetor(valores); } // método usado para exibir o array public static void exibirVetor(int []vetor){ // percorremos cada elemento do vetor for (int i = 0; i < vetor.length; i++) { System.out.print(vetor[i] + " "); } System.out.println("\n"); } // método que recebe um vetor de inteiros e o rotaciona um // determinado número de vezes public static int[] rotacionarArray(int[] vetor, int n) { // um laço externo que repete a mesma quantidade de n for (int i = 0; i < n; i++) { // começamos no último elemento e regredimos até // o segundo elemento do vetor for (int j = vetor.length - 1; j > 0; j--) { // avançamos um elemento de cada vez para // a direita int temp = vetor[j]; vetor[j] = vetor[j - 1]; vetor[j - 1] = temp; } // mostramos o progresso System.out.println("Rotação do vetor depois do passo " + (i + 1) + ":"); exibirVetor(vetor); } return vetor; } } A solução que apresentamos aqui usa a força-bruta, isto é, uma solução não otimizada e pouco recomendada para arrays com um número exagerado de elementos. Por ser força-bruta, o laço interno percorre todos os elementos do vetor, trocando-os de lugares. Em outras dicas do site nós colocamos versões melhoradas deste código. |
Python ::: Fundamentos da Linguagem ::: Passos Iniciais |
Como obter a entrada do usuário usando o método raw_input() - Atualizado para Python 3.0Quantidade de visualizações: 8582 vezes |
Até pouco tempo era possível usar o método raw_input(), nativo do Python, para ler a entrada do usuário. O código abaixo, por exemplo, funcionava corretamente no Python 2.5: # obtém o nome do usuário nome = raw_input("Por favor, informe seu nome: ") print "Ola, " + nome + "! Voce tambem gosta de Python?" No Python 3.0 em diante, a execução deste código exibe o seguinte erro de tempo de execução: Exception has occurred: NameError name 'raw_input' is not defined File "C:\estudos_python\estudos.py", line 4, in main nome = raw_input("Por favor, informe seu nome: ") File "C:\estudos_python\estudos.py", line 7, in <module> main() A correção para esta exceção, é usar somente a função input(). Veja: def main(): nome = input("Por favor, informe seu nome: ") print("Olá, " + nome + "! Voce tambem gosta de Python?") if __name__== "__main__": main() A saída deste código será parecida com: Por favor, informe seu nome: Osmar Olá, Osmar! Voce tambem gosta de Python? |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - JavaScript Avançado - Como usar o operador de bits & (E/AND sobre bits) da linguagem JavaScript |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - Como testar se uma string contém uma determinada substring em JavaScript usando a função includes() |
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 |