![]() |
|
||||
![]() 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 ::: Java Básico |
Exercícios Resolvidos de Java - Como testar se um número é potência de dois usando JavaQuantidade de visualizações: 804 vezes |
Pergunta/Tarefa: Escreva um programa Java contendo um método que recebe um número inteiro e retorna um valor boolean indicando se o valor informado é potência de dois. Sua saída deverá ser parecida com: Informe um valor inteiro: 8 O valor 8 é potência de dois Informe um valor inteiro: 34 O valor 34 não é potência de dois Informe um valor inteiro: 64 O valor 64 é potência de dois 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[]){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um valor inteiro System.out.print("Informe um valor inteiro: "); int valor = Integer.parseInt(entrada.nextLine()); // vamos testar se o número informado é potência de dois if(isPotenciaDeDois(valor)){ System.out.println("O valor " + valor + " é potência de dois"); } else{ System.out.println("O valor " + valor + " não é potência de dois"); } } // método que recebe um número inteiro e informe se ele é // potência de dois public static boolean isPotenciaDeDois(int n){ // usamos o operador AND de bits para verificar se n AND n-1 // é igual a 0 return (n > 0) && (n & (n - 1)) == 0; } } |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercícios Resolvidos de Python - Como escrever uma função Python que recebe dois números inteiros e retorna a soma desses dois valores como um inteiroQuantidade de visualizações: 752 vezes |
Pergunta/Tarefa: Escreva uma função em Python chamada somar() que recebe dois números inteiros e retorna a soma desses dois valores como um inteiro. Este método deverá ter a seguinte assinatura: def somar(a, b): # sua implementação aqui } Sua saída deverá ser parecida com: Informe o primeiro número: 4 Informe o segundo número: 3 A soma dos dois números é: 7 Veja a resolução comentada deste exercício usando Python: # método que recebe dois inteiros e retorna a soma como um número inteiro def somar(a, b): soma = a + b # soma os dois números return soma # retorna a soma para o método chamador # função principal do programa def main(): # vamos pedir ao usuário que informe dois valores inteiros n1 = int(input("Informe o primeiro número: ")) n2 = int(input("Informe o segundo número: ")) # vamos efetuar uma chamada ao método somar() e obter seu retorno resultado = somar(n1, n2) # finalmente mostramos o resultado print("A soma dos dois números é: {0}".format(resultado)) if __name__== "__main__": main() |
C ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em C - Como remover um nó no final de uma lista ligada simples em C - Listas encadeadas em CQuantidade de visualizações: 2091 vezes |
Nesta dica mostraremos como é possível excluir o nó no fim (o último nó) de uma lista encadeada simples (singly linked list) em C. Veja a função:// função que permite remover um nó no fim // da lista, ou seja, o último nó da lista. // A função retorna um ponteiro para o início da lista struct No *remover_final(struct No *inicio){ struct No *n; // nó que será removido // nó que antecede o nó a ser removido. Isso // faz sentido, já que ele será o último nó // agora struct No *anterior; n = inicio; // aponta para o início da lista // varremos os nós da lista e paramos um nó antes do // nó a ser excluído while(n->proximo != NULL){ anterior = n; // anterior assume o lugar de n n = n->proximo; // e n assume o seu próximo } // anterior passa a ser o último nó agora anterior->proximo = NULL; // mostra o nó removido printf("\nNo removido: %d\n", n->valor); free(n); // libera o nó que antes era o último return inicio; } Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o início da lista. Tenha o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo: #include <stdio.h> #include <stdlib.h> // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó // função que permite exibir os valores de // todos os nós da lista void exibir(struct No *n){ if(n != NULL){ do{ printf("%d\n", n->valor); n = n->proximo; }while(n != NULL); } else printf("A lista esta vazia\n\n"); } // função que permite remover um nó no fim // da lista, ou seja, o último nó da lista. // A função retorna um ponteiro para o início da lista struct No *remover_final(struct No *inicio){ struct No *n; // nó que será removido // nó que antecede o nó a ser removido. Isso // faz sentido, já que ele será o último nó // agora struct No *anterior; n = inicio; // aponta para o início da lista // varremos os nós da lista e paramos um nó antes do // nó a ser excluído while(n->proximo != NULL){ anterior = n; // anterior assume o lugar de n n = n->proximo; // e n assume o seu próximo } // anterior passa a ser o último nó agora anterior->proximo = NULL; // mostra o nó removido printf("\nNo removido: %d\n", n->valor); free(n); // libera o nó que antes era o último return inicio; } // função que permite inserir nós no // final da lista. // veja que a função recebe o valor a ser // armazenado em cada nó e um ponteiro para o // início da lista. A função retorna um // ponteiro para o início da lista struct No *inserir_final(struct No *n, int v){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // verifica se a lista está vazia if(n == NULL){ // é o primeiro nó...não deve apontar para // lugar nenhum novo->proximo = NULL; return novo; // vamos retornar o novo nó como sendo o início da lista } else{ // não está vazia....vamos inserir o nó no final // o primeiro passo é chegarmos ao final da lista struct No *temp = n; // vamos obter uma referência ao primeiro nó // vamos varrer a lista até chegarmos ao último nó while(temp->proximo != NULL){ temp = temp->proximo; } // na saída do laço temp aponta para o último nó da lista // novo será o último nó da lista...o campo próximo dele deve // apontar para NULL novo->proximo = NULL; // vamos fazer o último nó apontar para o nó recém-criado temp->proximo = novo; return n; // vamos retornar o início da lista intacto } } int main(int argc, char *argv[]) { // declara a lista struct No *inicio = NULL; // vamos inserir quatro valores no final // da lista inicio = inserir_final(inicio, 45); inicio = inserir_final(inicio, 3); inicio = inserir_final(inicio, 98); inicio = inserir_final(inicio, 47); // vamos exibir o resultado printf("Valores presentes na lista ligada antes da remocao:\n"); exibir(inicio); // vamos remover o nó no fim da lista if(inicio != NULL){ inicio = remover_final(inicio); } // vamos exibir o resultado printf("\nValores presentes na lista ligada apos a remocao:\n"); exibir(inicio); system("pause"); return 0; } Ao executar esse código você terá o seguinte resultado: Valores presentes na lista ligada antes da remocao: 45 3 98 47 No removido: 47 Valores presentes na lista ligada apos a remocao: 45 3 98 Pressione qualquer tecla para continuar. . . |
Python ::: Dicas & Truques ::: Lista (List) |
Como ordenar uma lista de inteiros em Python de acordo com a soma dos dígitos de seus elementos usando uma função lambdaQuantidade de visualizações: 870 vezes |
Nesta dica mostrarei como podemos usar uma função lambda em Python para ordenar uma lista de inteiros de acordo com a soma dos seus dígitos. Este é um código muito interessante e que permitirá um melhor entendimento de funções lambda em Python. Veja o código completo para o exemplo: # método usado para ordenar a lista de acordo com a soma # de seus dígitos def ordenar(vetor): return sorted(vetor, key=lambda n: sum(int(c) for c in str(n) if c != "-")) # função principal do programa def main(): # vamos criar uma lista de inteiros valores = [21, 10, 8, 32, 70, 41, 40, 11] # vamos exibir a lista original print("Lista na ordem original: {0}".format(valores)) # agora vamos ordenar de acordo com a soma dos dígitos lista_ordenada = ordenar(valores) print("Lista ordenada: {0}".format(lista_ordenada)) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Lista na ordem original: [21, 10, 8, 32, 70, 41, 40, 11] Lista ordenada: [10, 11, 21, 40, 32, 41, 70, 8] |
Python ::: Pygame ::: Animação, Animações, Técnicas de Animação |
Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em portuguêsQuantidade de visualizações: 1415 vezes |
Nesta dica mostrarei um código para a criação de um relógio analógico completo em Python, com comentários detalhados e fácil de entender. Veja a imagem:![]() Por simplicidade, eu mantive a mesma cor para todos os elementos da animação e deixei somente o básico mesmo, para que você possa se concentrar nas partes mais importantes. Neste código você aprenderá como definir o tamanho, título e cor de fundo para uma janela do Pygame do Python. Aprenderá também como definir a quantidade de frames por segundo para a animação, assim como controlar os disparos do timer pygame.time.Clock(). Por fim, o código mostra como calcular o ângulo dos ponteiros das horas, minutos e segundos e efetuar o desenho das retas saindo do centro do círculo. Você sabia, por exemplo, que o ângulo de 45 graus corresponde exatamente à hora 1:30hs? Em vários exemplos de relógios analógicos na internet, o ponteiro das horas fica preso à uma determinada hora, aguardando o ponteiro dos segundos completar um giro completo. No código que apresento aqui, eu obtive a hora atual como um decimal, o que faz com que o ponteiro das horas mostre a posição real da hora, como um relógio analógico do mundo real. Para estudantes de matemática, engenharia e física, este código é uma boa aplicação da técnica de se converter coordenadas polares para coordenadas cartesianas. Eis o código completo para o relógio analógico. Boa diversão. # vamos importar as bibliotecas necessárias import pygame, sys from pygame.locals import * import math from datetime import datetime # função que faz a correção dos ângulos def corrigir_angulo(angulo): return abs(angulo % 360) # inicializa a biblioteca pygame.init() # quantidade de frames por segundo FPS = 30 # construímos o timer timer = pygame.time.Clock() # obtém a superfície do jogo e define o tamanho da tela janela = pygame.display.set_mode((600, 400)) # vamos definir o título da janela do jogo pygame.display.set_caption('Relógio Analógico no Pygame') # vamos definir alguns parâmetros fonte = pygame.font.Font(None, 36) VERMELHO = (200, 0, 0) BRANCO = (255, 255, 255) raio = 150 x_inicial = 300 y_inicial = 200 distancia_aro = 20 # e aqui nós entramos no loop do game while True: # vamos pintar a tela toda de branco janela.fill(BRANCO) # monitoramos os eventos for evento in pygame.event.get(): # se o evento foi um pedido para sair if evento.type == QUIT: # fechamos a tela do jogo pygame.quit() # e saimos do programa sys.exit() # vamos desenhar um circulo não preenchido (maior) pygame.draw.circle(janela, VERMELHO, (x_inicial, y_inicial), raio, 2) # vamos desenhar um circulo não preenchido (menor) pygame.draw.circle(janela, VERMELHO, (x_inicial + 1, y_inicial + 1), 5, 0) # vamos desenhar os números do relório (1-12) for n in range(1, 13): # calcula o ângulo dessa hora angulo = math.radians((n * (360 / 12)) - 90) # agora convertemos o ângulo e o raio para coordenadas cartesianas if len(str(n)) > 1: x = math.cos(angulo) * (raio - distancia_aro) - 18 else: x = math.cos(angulo) * (raio - distancia_aro) - 10 y = math.sin(angulo) * (raio - distancia_aro) - 10 texto_numero = fonte.render(str(n), True, VERMELHO) janela.blit(texto_numero, (x_inicial + x, y_inicial + y)) # vamos obter as horas, minutos e segundos atuais hoje = datetime.today() horas = hoje.hour % 12 minutos = hoje.minute segundos = hoje.second # ajustamos as horas para tratar a hora decimal (com frações de horas) horas = horas + (minutos * (1 / 60)) + (segundos * (1 / 3600)) # desenha o ponteiro das horas angulo_horas = corrigir_angulo(horas * (360 / 12) - 90) angulo_horas = math.radians(angulo_horas) hora_x = math.cos(angulo_horas) * (raio - 60) hora_y = math.sin(angulo_horas) * (raio - 60) coord_finais = (x_inicial + hora_x, y_inicial + hora_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 4) # desenha o ponteiro dos minutos angulo_minutos = corrigir_angulo(minutos * (360 / 60) - 90) angulo_minutos = math.radians(angulo_minutos) minutos_x = math.cos(angulo_minutos) * (raio - 40) minutos_y = math.sin(angulo_minutos) * (raio - 40) coord_finais = (x_inicial + minutos_x, y_inicial + minutos_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 3) # desenha o ponteiro dos segundos angulo_segundos = corrigir_angulo(segundos * (360 / 60) - 90) angulo_segundos = math.radians(angulo_segundos) segundos_x = math.cos(angulo_segundos) * (raio - 30) segundos_y = math.sin(angulo_segundos) * (raio - 30) coord_finais = (x_inicial + segundos_x, y_inicial + segundos_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 1) # redesenha a tela continuamente pygame.display.update() # aciona o disparo do timer timer.tick(FPS) |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para float ou double em Python usando a função float()Quantidade de visualizações: 1682 vezes |
Em algumas situações nós temos um valor numérico representado por uma string e gostaríamos de convertê-lo para um valor float ou double na linguagem Python. Para isso nós podemos usar a função float(), disponível por padrão na linguagem. Note o uso da função type() para exibirmos o tipo da variável antes e depois da conversão. Veja o código Python completo para o exemplo: # método principal def main(): # vamos pedir para o usuário informar o preço de um produto # note que o preço será lido como uma string preco = input("Informe o valor do produto: ") # vamos exibir o valor lido e o tipo da variável print("Você informou o valor: {0}".format(preco)) print("O tipo da variável é: {0}".format(type(preco))) # agora vamos converter a string para o tipo float preco = float(preco) # vamos mostrar o novo tipo da variável print("O novo tipo da variável é: {0}".format(type(preco))) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe o valor do produto: 45.92 Você informou o valor: 45.92 O tipo da variável é: <class 'str'> O novo tipo da variável é: <class 'float'> É preciso, no entanto, ter cuidado ao informar a string que será convertida para float. Se, em vez de informar o ponto separador de decimal, nós informarmos a vírgula, o seguinte erro será apresentado: Informe o valor do produto: 45,21 Você informou o valor: 45,21 O tipo da variável é: <class 'str'> Traceback (most recent call last): File "c:\estudos_python\estudos.py", line 18, in <module> main() File "c:\estudos_python\estudos.py", line 12, in main preco = float(preco) ValueError: could not convert string to float: '45,21' |
Python ::: Python Turtle ::: Formulários e Janelas |
Como definir o título da janela do Python Turtle usando a função title()Quantidade de visualizações: 1393 vezes |
A função title() do Turtle é muito útil quando queremos definir o título da nossa aplicação Python Turtle. Tudo que temos a fazer é efetuar uma chamada a essa função fornecendo o título que queremos que seja exibido na barra de títulos. Veja o código Python Turtle para o exemplo: # vamos importar o módulo Turtle import turtle # método principal def main(): # vamos criar a tela gráfica tela = turtle.Screen() # vamos definir o título da janela tela.title("Meu programa Python Turtle") # vamos definir o tamanho da janela tela.setup(600, 450) # entramos no loop de eventos tela.mainloop() if __name__== "__main__": main() Note que não é possível usar a função title() para retornar o título da janela. Caso você queira fazer isso, é melhor usar uma variável para guardar o título da janela e manipulá-la durante a execução do programa. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de Java - Um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguidaQuantidade de visualizações: 864 vezes |
Pergunta/Tarefa: Escreva um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguida o método deverá dividir o resultado, ou seja, o produto, por 2, e, finalmente, retornar o resto de uma divisão inteira desse resultado pelo número 7. Sua saída deverá ser parecida com: Informe o primeiro valor inteiro: 18 Informe o segundo valor inteiro: 19 O resultado é: 3 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); // vamos pedir para o usuário informar dois números inteiros System.out.print("Informe o primeiro valor inteiro: "); int a = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor inteiro: "); int b = Integer.parseInt(entrada.nextLine()); // vamos obter o resultado de uma chamada à função calcular() int resultado = calcular(a, b); System.out.println("O resultado é: " + resultado); } public static int calcular(int a, int b){ // primeiro multiplicamos as duas variáveis int produto = a * b; // agora dividimos o produto por 2 int temp = produto / 2; // agora obtemos o módulo do resultado por 7 int resultado = temp % 7; // e retornamos o valor calculado return resultado; } } |
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Java para iniciantes - Como usar o tipo de dados long da linguagem JavaQuantidade de visualizações: 14830 vezes |
O tipo de dados long pode ser usado quando queremos armazenar valores inteiros na faixa -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Veja um exemplo:public class Estudos{ static long valor = 545L; public static void main(String args[]){ System.out.println("O valor da variável é: " + valor); System.exit(0); } } Observe o uso do caractere "L" após o valor literal que atribuímos à variável. Isso é feito para que o compilador trate o literal como long e não como int. Você pode usar o "L" minúsculo, mas este se parece muito com o número um, o que torna seu uso pouco recomendável. O tipo de dados long pode ser convertido (sem a necessidade de cast) para os seguintes tipos: long -> float -> double Se precisarmos converter o tipo int para os tipos char, byte, short ou int, teremos que lançar mão de uma coerção (cast). Veja: byte valor2 = (byte)(valor); |
C# ::: Dicas & Truques ::: Matemática e Estatística |
Como testar se um número é primo em C#Quantidade de visualizações: 7876 vezes |
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos. É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par. Veja agora um código C# completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não: using System; namespace Estudos { class Program { static void Main(string[] args) { bool primo = true; // vamos solicitar um número inteiro positivo Console.Write("Informe um número inteiro positivo: "); int numero = int.Parse(Console.ReadLine()); // o número é negativo? if (numero < 0) { Console.WriteLine("Número inválido."); } // é 0 ou 1? else if ((numero == 0) || (numero == 1)) { Console.WriteLine("Número válido, mas não é primo."); } // passou até aqui. Vamos testar se o número é primo else { for (int i = 2; i <= (numero / 2); i++) { // se passar no teste, não é primo if (numero % i == 0) { primo = false; // recebe false break; } } if (primo) { Console.WriteLine("O número informado é primo"); } else { Console.WriteLine("O número informado não é primo"); } } Console.WriteLine("\n\nPressione qualquer tecla para sair..."); // pausa o programa Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: Informe um número inteiro positivo: 9 O número informado não é primo |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - Como testar se uma string termina com uma determinada substring em JavaScript usando a função endsWith() React.js - Aprenda a desenvolver aplicações React diretamente no HTML, sem usar a ferramenta create-react-app |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - Como testar se um ponto está dentro de um círculo em JavaScript - Desenvolvimento de Games com JavaScript LISP - Como converter Coordenadas Polares para Coordenadas Cartesianas em LISP - LISP para Engenharia |
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 |