![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Exercícios Resolvidos de C - Como testar se um número é potência de dois usando CQuantidade de visualizações: 705 vezes |
Pergunta/Tarefa: Escreva um programa C 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 C: #include <stdio.h> #include <stdlib.h> #include <locale.h> // função que recebe um número inteiro e informe se ele é // potência de dois int is_potencia_dois(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; } int main(int argc, char *argv[]){ // variáveis usadas para int valor; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar um valor inteiro printf("Informe um valor inteiro: "); scanf("%d", &valor); // vamos testar se o número informado é potência de dois if(is_potencia_dois(valor)){ printf("O valor %d é potência de dois", valor); } else{ printf("O valor %d não é potência de dois", valor); } printf("\n\n"); system("PAUSE"); return 0; } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um programa que calcule e mostre a tabuada de multiplicação de um número digitado pelo usuário (entre 1 e 10)Quantidade de visualizações: 6751 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço for para calcular a tabuada de multiplicação para um número digitado pelo usuário. Este número deve estar entre 1 e 10 (inclusive). Sua saída deve ser parecida com: Informe um valor entre 1 e 10: 8 A tabuada do número 8 é: 8 X 1 = 8 8 X 2 = 16 8 X 3 = 24 8 X 4 = 32 8 X 5 = 40 8 X 6 = 48 8 X 7 = 56 8 X 8 = 64 8 X 9 = 72 8 X 10 = 80 Veja a resolução comentada deste exercício usando Java console: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar que o usuário informe um inteiro entre 1 e 10 System.out.print("Informe um valor entre 1 e 10: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos verificar se o valor está na faixa desejada if((numero < 1) || (numero > 10)){ System.out.println("O número deve ser entre 1 e 10"); } else{ // o número é válido....vamos exibir a tabuada System.out.println("\nA tabuada do número " + numero + " é:\n"); for(int i = 1; i <= 10; i++){ System.out.println(numero + " X " + i + " = " + (numero * i)); } } System.out.println("\n"); } } |
Java ::: Dicas & Truques ::: Threads |
Threads em Java - Como definir as prioridades das threads JavaQuantidade de visualizações: 12722 vezes |
Quando estamos trabalhando com threads em Java, precisamos estar cientes de que cada thread possui uma prioridade de execução. É por meio da prioridade de cada uma que o gerenciador de threads decidirá qual thread deverá ser executada primeiro. Por padrão, todas as threads possuem prioridade NORM_PRIORITY. Esta é uma constante que possui o valor 5 e está declarada na classe Thread. Além disso, cada thread herda automaticamente a prioridade da thread que a criou. As constantes MAX_PRIORITY (prioridade máxima), MIN_PRIORITY (prioridade mínima) e NORM_PRIORITY (prioridade normal) são usadas para definir as prioridades das threads Java. Veja um exemplo no qual temos duas threads. A primeira possui a prioridade máxima enquanto a segunda possui a prioridade mínima: // 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); } } } public class Estudos{ public static void main(String[] args){ // vamos criar duas threads MinhaThread t1 = new MinhaThread("Thread 1"); t1.setPriority(Thread.MAX_PRIORITY); // prioridade máxima t1.start(); MinhaThread t2 = new MinhaThread("Thread 2"); t2.setPriority(Thread.MIN_PRIORITY); // prioridade mínima t2.start(); } } Execute este exemplo e veja como a segunda thread só é executada quando a primeira finaliza. Remova as linhas que definem a prioridade e note como o tempo de cada thread é novamente fracionado. É importante ter em mente que aqui estamos falando de um ambiente de processador único. Em ambientes de múltiplos processadores o comportamento pode ser diferente do abordado na dica. Não devemos confiar em prioridades de threads quando o objetivo é aguardar a finalização de uma thread e só então permitir o processamento das instruções contidas no método run() de outra thread. Para estes casos o recomendável é usar alguma forma para sinalizar as demais threads de que a thread atual concluiu sua tarefa. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como contar as ocorrências de um determinado caractere em uma string usando a linguagem CQuantidade de visualizações: 11479 vezes |
Em algumas situações precisamos obter a quantidade de vezes que um caractere ocorre dentro de uma string. Para isso podemos usar a função personalizada char_count(). Esta função recebe a string e o caractere que desejamos pesquisar e retorna um inteiro contendo a quantidade de vezes que o caractere foi encontrado. Veja o código (usando apenas ANSI-C): #include <stdio.h> #include <stdlib.h> #include <string.h> // função personalizada que permite contar as // ocorrências de um caractere em uma string int char_count(const char *str, char caractere){ int i, quant = 0; // vamos percorrer todos os caracteres da string for(i = 0; str[i]; i++){ if(str[i] == caractere){ // localizamos quant++; } } return quant; } int main(int argc, char *argv[]){ char frase[] = "Gosto muito de Java, JavaScript e Python"; printf("Ocorrencias encontradas: %d", char_count(frase, 'a')); puts("\n\n"); system("PAUSE"); return 0; } Ao executarmos este código nós teremos o seguinte resultado: Ocorrencias encontradas: 4 |
Java ::: Pacote java.lang ::: String |
Curso de Java - Como usar a classe String da linguagem JavaQuantidade de visualizações: 7628 vezes |
A classe String, presente no pacote java.lang, permite a representação de cadeias (strings) de caracteres. Todos os strings literais em Java, tais como "abc", são implementados como instâncias desta classe. Por pertencer ao pacote java.lang, não precisamos importar nenhum pacote para poder usar esta classe em nossos programas Java. Veja um exemplo de como declarar e inicializar uma variável do tipo String: public class Main { public static void main(String[] args) { String nome = "Osmar J. Silva"; System.out.println(nome); } } Veja a posição desta classe na hierarquia de classes da plataforma Java: java.lang.Object java.lang.String Esta classe implementa as interfaces Serializable, CharSequence e Comparable<String>. Objetos do tipo String são constantes, ou seja, seus valores não podem ser alterados depois de criados. Assim, se você tiver um código parecido com: public class Main { public static void main(String[] args) { // ambas as variáveis apontam para uma mesma string // há somente uma cópia de "Osmar J. Silva" na memória String nome = "Osmar J. Silva"; String nome2 = "Osmar J. Silva"; // agora uma nova string é criada e a anterior é preservada nome2 = "Marcos de Souza Gomes"; } } Note que o compilador, com o propósito de poupar recursos do sistema, cria apenas uma string "Osmar J. Silva" e a coloca no pool de strings. No momento que alteramos o valor da variável nome2, uma nova string "Marcos de Souza Gomes" é criada e a anterior permanece intacta. A classe String inclui métodos para examinar os caracteres individuais da sequencia, para a comparação de strings, pesquisar, extrair substrings e também criar uma cópia da string com todos os caracteres convertidos para letras maiúsculas ou minúsculas. O mapeamente das letras maiúsculas e minúsculas é feito com base na versão Unicode Standard especificada na classe Character. A linguagem Java fornece suporte especial para a concatenação de strings, usando o operador (+) e para a conversão de outros objetos em strings. A concatenação é implementada por meio da classe StringBuilder (ou StringBuffer) e seu método append(). As conversões de strings são implementadas por meio do método toString(), definido na classe Object e herdado por todas as demais classes Java. Quando não devidamente observado, passar um argumento null para o construtor ou método da classe String fará com que uma exceção do tipo NullPointerException seja atirado. A classe String representa uma string no formato UTF-16, no qual caracteres suplementares são representados por pares prepostos. Valores de índice referem-se às unidades de código de caracteres. Assim, caracteres suplementares usam duas posições em uma String. |
Ruby ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como criar e usar arrays em Ruby - Vetores e matrizes na linguagem RubyQuantidade de visualizações: 12619 vezes |
Como criar arrays em Ruby - Vetores e matrizes na linguagem Ruby Arrays (vetores e matrizes) em Ruby são criadas a partir da classe Array. Esta classe serve para agrupar uma coleção de referências a objetos. Cada referência aos objetos ocupa uma posição no array, identificada por um número inteiro não negativo. Podemos criar arrays em Ruby de duas formas: usando literais ou explicitamente, criando um objeto Array. Veja como criar um array usando a notação literal: # cria um array de valores inteiros valores = [43, 12, 8, 56] # obtém o valor do segundo elemento valor = valores[1] # altera o valor do primeiro elemento valores[0] = 5 Vamos agora criar um array usando um objeto da classe Array: # cria um objeto da classe Array valores = Array.new # atribui valores inteiros ao array valores[0] = 76 valores[1] = 3 valores[2] = 9 valores[3] = 87 # obtém o valor do segundo elemento valor = valores[1] # altera o valor do primeiro elemento valores[0] = 5 Arrays em Ruby armazenam referências a objetos e, como em Ruby tudo é objeto, podemos criar arrays de tipos diferentes. Veja: # cria um array de tipos diferentes valores = [43, "Osmar", 7.5] # obtém o valor do segundo elemento valor = valores[1] # altera o valor do primeiro elemento valores[0] = 5 |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de Python - Como testar se um ano é bissexto em Python - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou nãoQuantidade de visualizações: 1683 vezes |
Pergunta/Tarefa: Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016. Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400. Escreva um programa Python que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não. Sua saída deverá ser parecida com: Informe o ano: 2024 O ano informado é bissexto. Veja a resolução comentada deste exercício usando Python: # método principal def main(): # vamos solicitar que o usuário informe um ano ano = int(input("Informe o ano: ")) # vamos verificar se o ano informado é bissexto if(((ano % 4 == 0) and (ano % 100 != 0)) or (ano % 400 == 0)): print("\nO ano informado é bissexto.\n") else: print("\nO ano informado não é bissexto.\n"); if __name__== "__main__": main() |
Python ::: Python para Engenharia ::: Engenharia Civil - Concreto, Concreto Armado e Concretos Especiais |
Cálculo de estribos em vigas de concreto armado usando Python - Armadura mínima transversal normativaQuantidade de visualizações: 289 vezes |
A ABNT NBR 6118 (Projeto de estruturas de concreto armado) define uma taxa de armadura mínima para os estribos das vigas de concreto armado, e, a partir dessa taxa mínima nós podemos facilmente calcular a área de aço mínima a ser usada. A fórmula para o cálculo da taxa mínima de armadura tranversal pode ser definida como: \[\rho_\text{sw} = 0,2 \cdot \frac{f_\text{ck,m}}{f_\text{ywk}} \] Onde: ρsw é um número adimensional representando a taxa de armadura mínima transversal de acordo com recomendações da norma NBR 6118; fctk,m é a resistência à tração média do concreto em Mpa; fymk é a resistência à tração do aço em Mpa. Em geral, esse valor é fixado em 500 (CA 50), mesmo que o aço usado seja CA 60 ou superior; Após calculada a taxa de armadura transversal mínima, podemos calcular a área de aço mínima transversal por meio da seguinte fórmula: \[A_\text{sw,min} = \rho_\text{sw} \cdot b_w \cdot S \cdot sen(\alpha) \] Onde: Asw,min é a área de aço mínima a ser usada, em cm2/m; ρsw é um número adimensional representando a taxa de armadura mínima transversal de acordo com recomendações da norma NBR 6118; bw é a largura da viga em centímetros; S é o espaçamento a ser considerado. Informamos o valor de 100 para considerar um espaçamento de 1 metro; α é a inclinação dos estribos, em geral 90º. Veja agora o código Python : # vamos importar o módulo Math import math # função principal do programa def main(): # vamos pedir para o usuário informar o FCK do concreto fck = float(input("Informe o FCK do concreto em Mpa: ")) # agora vamos calcular a resistência à tração média # do concreto fctk_m = 0.3 * math.pow(fck, 2.0 / 3.0) # vamos pedir para o usuário informar a largura da viga em cm largura = float(input("Informe a largura da viga em cm: ")) # vamos calcular a taxa de armadura transversal mínima fywk = 500 # vamos considerar aço CA 50 psw = 0.2 * (fctk_m / fywk) # agora vamos calcular a área mínima de aço para a armadura # tranversal, ou seja, os estribos S = 100 # considerando 1 metro de viga inclinacao = 90 # inclinação em graus dos estribos aws_min = psw * largura * S * math.sin(math.radians(inclinacao)) # e mostramos os resultados print("\n-------RESULTADOS--------------------------------------") print("A resistência à tração média do concreto é: {0} Mpa". format(round(fctk_m, 5))) print("A taxa de armadura transversal mínima é: {0}".format( round(psw, 5))) print("A área mínima de aço é: {0} cm2/m".format(round(aws_min, 5))) if __name__ == "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe o FCK do concreto em Mpa: 25 Informe a largura da viga em cm: 19 -------RESULTADOS-------------------------------------- A resistência à tração média do concreto é: 2.56496 Mpa A taxa de armadura transversal mínima é: 0.00103 A área mínima de aço é: 1.94937 cm2/m |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exercícios Resolvidos de Java - Escreva uma classe Biblioteca que possui uma ArrayList de objetos da classe Livro. Forneça um menu para listar, cadastrar, pesquisar e excluir livrosQuantidade de visualizações: 592 vezes |
Pergunta/Tarefa: Escreva um programa Java contendo duas classes: Biblioteca e Livro. A classe Biblioteca deverá ter uma coleção de livros, ou seja, uma ArrayList de objetos da classe Livro. Além da coleção de livros a classe Biblioteca deverá conter um atributo nome, que será informado assim que a classe for instanciada. A classe Livro, por sua vez, deverá possuir os atributos id, titulo, autor e paginas. O atributo id deverá ser auto-incremento, isto é, 1 para o primeiro livro cadastrado, 2 para o segundo, e assim por diante. Além disso, a exclusão de livros deverá ser feita de acordo com o seu id ou título. Seu programa deverá exibir um menu de opções para as diversas operações da biblioteca. Uma boa opção em Java é usar a estrutura switch case para a criação do menu de opções. Atenção: todos os métodos de manipulação de livros deverão estar na classe Biblioteca, e não na classe principal do programa Java. Para finalizar, tanto a classe Biblioteca quanto a classe Livro deverão apresentar boas práticas de programação orientada a objetos: nomenclatura correta de classes, atributos e métodos, encapsulamento de dados e construtores. Sua saída deverá ser parecida com: ------------------------------------------------- :: Biblioteca Programação e Artes :: ------------------------------------------------- Bem-vindo(a) ao sistema. Escolha a opção desejada 1 - Novo Livro 2 - Listar Livros 3 - Pesquisar Livro 4 - Excluir Livro 5 - Sair Sua opção: 1 Título: JAVA PARA INICIANTES Autor: OSMAR J SILVA Quant Páginas: 480 O livro foi cadastrado com sucesso Veja a resolução comentada deste exercício em Java: Código para a classe Livro, que deve estar no arquivo Livro.java: package estudos; // definição da classe Livro public class Livro { private int id; // id do livro. Não pode repetir private String titulo; private String autor; private int paginas; // construtor vazio da classe Livro public Livro() {} // construtor cheio da classe Livro public Livro(int id, String titulo, String autor, int paginas) { this.id = id; this.titulo = titulo; this.autor = autor; this.paginas = paginas; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getAutor() { return autor; } public void setAutor(String autor) { this.autor = autor; } public int getPaginas() { return paginas; } public void setPaginas(int paginas) { this.paginas = paginas; } } Código para a classe Biblioteca, que deve estar no arquivo Biblioteca.java: package estudos; // imports necessários import java.util.ArrayList; import java.util.Scanner; // definição da classe Biblioteca public class Biblioteca { String nome; ArrayList<Livro> livros; // ArrayList para guardar os livros // variável do tipo int para gerar IDs auto-incremento para os livros int idUltimoLivroCadastrado = 0; // construtor da classe public Biblioteca(String nome) { this.nome = nome; this.livros = new ArrayList(); } // exibe o menu de opções da biblioteca public void exibirMenu(){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // variáveis temporárias Livro temp; String pesquisaLivro; // um laço infinito com as opções do menu while(true){ System.out.println("\n-------------------------------------------------"); System.out.println(":: " + this.nome + " ::"); System.out.println("-------------------------------------------------"); System.out.println("Bem-vindo(a) ao sistema. Escolha a opção desejada\n"); System.out.println("1 - Novo Livro"); System.out.println("2 - Listar Livros"); System.out.println("3 - Pesquisar Livro"); System.out.println("4 - Excluir Livro"); System.out.println("5 - Sair"); System.out.print("\nSua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); // um menu switch para ler as opções do menu switch(opcao){ case 1: // vamos cadastrar um novo livro System.out.print("\nTítulo: "); String titulo = entrada.nextLine(); System.out.print("Autor: "); String autor = entrada.nextLine(); System.out.print("Quant Páginas: "); int quantPaginas = Integer.parseInt(entrada.nextLine()); // vamos gerar o id deste livro int id = ++this.idUltimoLivroCadastrado; // agora vamos criar um novo objeto da classe Livro Livro livro = new Livro(id, titulo, autor, quantPaginas); // e o adicionamos no ArrayList de livros livros.add(livro); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO livro foi cadastrado com sucesso"); break; case 2: // vamos listar os livros cadastrados if(livros.isEmpty()){ System.out.println("\nNão há nenhum livro cadastrado."); } else{ for(int i = 0; i < livros.size(); i++){ temp = livros.get(i); // obtém o livro da iteração atual System.out.println("\nId: " + temp.getId()); System.out.println("Título: " + temp.getTitulo()); System.out.println("Autor: " + temp.getAutor()); System.out.println("Quant. Paginas: " + temp.getPaginas()); } } break; case 3: // vamos pesquisar um livro System.out.print("\nInforme o id ou título do livro: "); pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro temp = this.pesquisarLivro(pesquisaLivro); if(temp == null){ // livro não encontrado System.out.println("\nO livro náo foi encontrado."); } else{ // mostra o livro encontrado System.out.println("\nId: " + temp.getId()); System.out.println("Título: " + temp.getTitulo()); System.out.println("Autor: " + temp.getAutor()); System.out.println("Quant. Paginas: " + temp.getPaginas()); } break; case 4: // vamos excluir um livro System.out.print("\nInforme o id ou título do livro a ser excluído: "); pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro temp = pesquisarLivro(pesquisaLivro); if(temp == null){ // livro não encontrado System.out.println("\nO livro não foi encontrado."); } else{ // vamos excluir este livro livros.remove(temp); System.out.println("\nLivro excluído com sucesso."); } break; case 5: // sai da aplicação System.out.println("\nObrigado por usar a biblioteca\n"); System.exit(0); default: System.out.println("\nOpção inválida\n"); break; } } } // método que pesquisa um livro pelo id ou e retorna um objeto da classe Livro public Livro pesquisarLivro(String pesquisaLivro){ Livro livro = null; // este livro existe? for(int i = 0; i < livros.size(); i++){ // pesquisa pelo id if(Integer.toString(livros.get(i).getId()).equals(pesquisaLivro)){ return livros.get(i); } // pesquisar por título else if(livros.get(i).getTitulo().contains(pesquisaLivro)){ return livros.get(i); } } return livro; } } E aqui está o código para a classe principal Estudos, no arquivo Estudos.java: package estudos; public class Estudos { public static void main(String[] args) { // vamos criar um novo objeto da classe Biblioteca Biblioteca b = new Biblioteca("Biblioteca Programação e Artes"); // mostra o menu da biblioteca b.exibirMenu(); } } |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como obter o índice da linha da célula atual em um TDBGrid do DelphiQuantidade de visualizações: 9996 vezes |
Como obter o índice da linha da célula atual (com foco) em um TDBGrid do Delphi Em algumas situações precisamos obter o índice da linha da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Row da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid. Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da linha da célula atual: procedure TForm3.Button3Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice da linha da célula atual indice := TStringGrid(DBGrid1).Row; ShowMessage('O índice da linha da célula atual é: ' + IntToStr(indice)); end; Execute o código e clique no botão. Você verá uma mensagem parecida com: "O índice da linha da célula atual é: 4". Lembre-se de que o índice da linha fixa do DBGrid é 0. Esta dica foi escrita e testada no Delphi 2009. |
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
JavaScript - Como acessar as mídias do usuário em JavaScript usando a função getUserMedia() da interface MediaDevices |
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 |