![]() |
|||||
|
Portugol ::: Dicas & Truques ::: Laços de Repetição |
Como somar os dígitos de um número em Portugol usando o laço ENQUANTO - Solução para número inteiro de qualquer tamanhoQuantidade de visualizações: 437 vezes |
Em algumas situações nós precisamos obter e retornar a soma dos dígitos de um número inteiro positivo. Em nosso site você encontra alguns exemplos de como isso pode ser feito. No entanto, ao contrário das outras dicas, aqui eu mostro como somar os dígitos de um número informado pelo usuário sem fixar o seu tamanho, ou seja, não há limites para a quantidade de dígitos. Veja o código Portugol completo para o exemplo: // Como somar os dígitos de um número em Portugol programa { funcao inicio() { inteiro numero, soma // inicia a soma como zero soma = 0 // vamos pedir um número inteiro positivo escreva("Informe um número inteiro positivo: ") // lê o número informado leia(numero) // enquanto o número for diferente de 0 enquanto (numero != 0) { // adiciona à soma o resultado da divisão do número por 10 soma = soma + (numero % 10) // agora dividimos os número por 10 (divisão inteira) e continuamos numero = inteiro(numero / 10) } // e mostramos o resultado escreva("A soma dos dígitos é: ", soma) } } Ao executar este código Portugol Web Studio nós teremos o seguinte resultado: Informe um número inteiro positivo: 1273 A soma dos dígitos é: 13 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteirosQuantidade de visualizações: 8944 vezes |
Exercício Resolvido de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros Pergunta/Tarefa: O máximo divisor comum ou MDC (mdc) entre dois ou mais números inteiros é o maior número inteiro que é fator de tais números. Por exemplo, os divisores comuns de 12 e 18 são 1, 2, 3 e 6, logo mdc(12, 18) = 6. A definição abrange qualquer número de termos, por exemplo mdc(10, 15, 25, 30) = 5. O cálculo do MDC entre x e y pode ser feito recursivamente da seguinte forma: Se y for igual a 0, então mdc(x, y) = x. Caso contrário, mdc(x, y) = mdc(y, x % y), no qual % é o operador de módulo (restante da divisão inteira). Escreva um método recursivo que receba dois inteiros e calcule o mdc. Seu método deverá possuir a seguinte assinatura: public static int mdc(int x, int y){ // sua implementação aqui } Informe o primeiro inteiro: 12 Informe o segundo inteiro: 18 O MDC dos valores 12 e 18 é 6 Veja a resolução comentada deste exercício usando Java console: package exercicio; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // cria um novo objeto da classe Scanner Scanner entrada = new Scanner(System.in); // vamos solicitar dois valores inteiros System.out.print("Informe o primeiro inteiro: "); // lê o primeiro inteiro int a = Integer.parseInt(entrada.nextLine()); // solicita o segundo inteiro System.out.print("Informe o segundo inteiro: "); // lê o segundo inteiro int b = Integer.parseInt(entrada.nextLine()); // mostra o resultado System.out.print("O MDC dos valores " + a + " e " + b + " é " + mdc(a, b)); System.out.println("\n"); } // método recursivo que calcula o mdc de dois inteiros public static int mdc(int x, int y){ // a recursividade é interrompida quando y for igual a 0 if(y == 0){ return x; } else{ return mdc(y, x % y); // efetua uma nova chamada recursiva } } } |
Java ::: Aplicativos Completos ::: Fontes |
Como criar um visualizador de fontes em Java Swing - Código fonte completoQuantidade de visualizações: 10519 vezes |
Código completo Java: Como escrever um visualizador de fontes em Java Swing Nesta dica eu mostro o código completo para uma aplicação GUI usado Java Swing e que permite visualizar as fontes instaladas no sistema. Ao clicar em uma das fontes exibidas em uma JList, o texto da JLabel é formatado de acordo com a fonte escolhida. Note que montei toda a GUI em código mesmo, ou seja, sem usar o editor visual do Netbeans ou outra IDE. Esse é um bom exercício para entender os elementos que compõem interfaces gráficas do Java Swing. Eis o código completo para o exemplo: package arquivodecodigos; import java.awt.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; public class Estudos extends JFrame implements ListSelectionListener{ JLabel label = new JLabel("Observe este texto"); public Estudos(){ super("Visualizados de Fontes"); String[] fontNames; // nomes das fontes Toolkit toolkit = Toolkit.getDefaultToolkit(); fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment(). getAvailableFontFamilyNames(); Vector fonts = new Vector(); for(int i = 0; i < fontNames.length; i++){ fonts.add(new Font(fontNames[i], Font.PLAIN, 16)); } JList fontList = new JList(fonts); fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontList.setCellRenderer(new FontCellRenderer()); JScrollPane scrollPane = new JScrollPane(fontList); JPanel p = new JPanel(); p.add(scrollPane); fontList.addListSelectionListener(this); getContentPane().add(p, "Center"); getContentPane().add(label, "South"); setSize(500, 250); setVisible(true); } @Override public void valueChanged(ListSelectionEvent evt){ JList source = (JList) evt.getSource(); Font font = (Font) source.getSelectedValue(); label.setFont(font); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } // Classe personalizada que implementa ListCellRenderer class FontCellRenderer implements ListCellRenderer{ @Override public Component getListCellRendererComponent( final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus){ return new JPanel(){ @Override public void paintComponent(Graphics g){ super.paintComponent(g); Font font = (Font) value; String text = font.getFamily(); FontMetrics fm = g.getFontMetrics(font); g.setColor(isSelected ? list.getSelectionBackground() : list.getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(isSelected ? list.getSelectionForeground() : list.getForeground()); g.setFont(font); g.drawString(text, 0, fm.getAscent()); } @Override public Dimension getPreferredSize() { Font font = (Font) value; String text = font.getFamily(); Graphics g = getGraphics(); FontMetrics fm = g.getFontMetrics(font); return new Dimension(fm.stringWidth(text), fm.getHeight()); } }; } } Ao executá-lo você terá um resultado parecido com: ![]() |
C# ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair dias de uma data em C# usando o método AddDays() da classe DateTimeQuantidade de visualizações: 27004 vezes |
Em algumas situações nossos códigos precisam adicionar ou subtrair dias de uma data. Isso pode ser feito com o auxílio do método AddDays() da estrutura DateTime. Este método recebe o número de dias a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 5 dias à data atual: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos adicionar 5 dias à data de hoje DateTime data_futura = hoje.AddDays(5); // exibe a data daqui a cinco dias System.Console.WriteLine("Daqui a 5 dias será {0:d}", data_futura); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } É possível também subtrair dias. Para isso só precisamos fornecer um valor negativo para o método AddDays(). Veja: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos subtrair 7 dias da data de hoje DateTime data_passado = hoje.AddDays(-7); // exibe a data sete dias atrás System.Console.WriteLine("Há 7 dias era {0:d}", data_passado); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } Lembre-se, contudo, que o método AddDays() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como escrever em um arquivo usando Java - Como escrever em um arquivo usando as classes BufferedWriter e FileWriter do JavaQuantidade de visualizações: 123 vezes |
Nesta dica mostrarei como podemos usar a linguagem Java para escrever em um arquivo texto. Para isso nós vamos usar as classes BufferedWriter e FileWriter. Veja o trecho de código completo para o exemplo: package arquivodecodigos; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class Estudos{ public static void main(String args[]){ try { BufferedWriter out = new BufferedWriter(new FileWriter("C:\\estudos_java\\conteudo.txt")); out.write("Esta é a primeira linha de texto\r\n"); out.write("Esta é a segunda linha de texto"); out.close(); } catch(IOException e){ System.out.println("Houve um erro: " + e.getMessage()); } System.out.println("Acabei de escrever no arquivo"); } } Ao executar este código Java nós teremos o seguinte resultado: Acabei de escrever no arquivo. Tenha cuidado. Se o arquivo já existir, o método write() da classe BufferedWriter vai sobrescrever o seu conteúdo. Por isso, é sempre uma boa idéia fazer uma verificação antes. |
C ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular desvio padrão em C - C para Matemática e EstatísticaQuantidade de visualizações: 6474 vezes |
Em Matemática e Estatística, o Desvio padrão (em inglês: Standard Deviation) é uma medida de dispersão, ou seja, é uma medida que indica o quanto um conjunto de dados é uniforme. Quando o desvio padrão é baixo, isso quer dizer que os dados do conjunto estão mais próximos da média. Como calcular o desvio padrão de um conjunto de dados? Vamos começar analisando a fórmula mais difundida na matemática e na estatística: \[\sigma = \sqrt{ \frac{\sum_{i=1}^N (x_i -\mu)^2}{N}}\] Onde: a) __$\sigma__$ é o desvio; b) __$x_i__$ é um valor qualquer no conjunto de dados na posição i; c) __$\mu__$ é a média aritmética dos valores do conjunto de dados; d) N é a quantidade de valores no conjunto. O somatório dentro da raiz quadrada nos diz que devemos somar todos os elementos do conjunto, desde a posição 1 até a posição n, subtrair cada valor pela média do conjunto e elevar ao quadrado. Obtida a soma, nós a dividimos pelo tamanho do conjunto. Veja o código C completo que obtém o desvio padrão a partir de um conjunto de dados contendo quatro valores: #include <stdio.h> #include <stdlib.h> #include <math.h> // função principal do programa int main(int argc, char *argv[]){ // conjunto dos dados float conjunto[] = {10, 30, 90, 30}; float soma = 0.0; // soma dos elementos float desvio_padrao = 0.0; // desvio padrão int tam = 4; // tamanho dos dados int i; float media; // vamos somar todos os elementos for(i = 0; i < tam; i++){ soma = soma + conjunto[i]; } // agora obtemos a média do conjunto de dados media = soma / tam; // e finalmente obtemos o desvio padrão for(i = 0; i < tam; i++){ desvio_padrao = desvio_padrao + pow(conjunto[i] - media, 2); } // mostramos o resultado printf("Desvio Padrão Populacional: %f\n", sqrt(desvio_padrao / tam)); printf("Desvio Padrão Amostral: %f", sqrt(desvio_padrao / (tam - 1))); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Desvio Padrão Populacional: 30.0 Desvio Padrão Amostral: 34.64101615137755 Veja que, para calcular o Desvio Padrão Populacional, nós dividimos o somatório pela quantidade de elementos no conjunto, enquanto, para calcular o Desvio Padrão Amostral, nós dividimos o somatório pela quantidade de elementos - 1 (cuidado com a divisão por zero no caso de um conjunto com apenas um elemento). |
PHP ::: Dicas & Truques ::: Gráficos e Cores |
Como obter o tipo de uma imagem usando a função getimagesize() do PHPQuantidade de visualizações: 10271 vezes |
Muitas vezes precisamos saber o tipo de uma imagem antes de processá-la. Nestes casos podemos usar a função getimagesize() da linguagem PHP e obter o tipo da imagem no terceiro valor retornado. Este valor é um número inteiro correspondente a algumas das constantes IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, etc. Veja um exemplo: <?php // nome e local da imagem $imagem = "/home/xxxx/xxxx/public_html/imagem.jpg"; // vamos obter o tipo da imagem...ele estará no terceiro // elemento da lista list($largura, $altura, $tipo) = getimagesize($imagem); // testamos o tipo de imagem if($tipo == IMAGETYPE_JPEG) echo "O tipo da imagem é JPG ou JPEG"; else if($tipo == IMAGETYPE_GIF) echo "O tipo da imagem é GIF"; else if($tipo == IMAGETYPE_PNG) echo "O tipo da imagem é PNG"; else echo "O tipo da imagem não está entre os tipos testados"; ?> Ao executar este código você terá um resultado parecido com: O tipo da imagem é JPG ou JPEG |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de C - Como converter minutos em segundos usando CQuantidade de visualizações: 607 vezes |
Pergunta/Tarefa: Escreva um programa C para converter minutos em segundos. Você deverá criar uma função converter() que receberá, como argumento, um número inteiro representando os minutos e retornará, também como um inteiro, os segundos correspondentes. Os minutos deverão ser informados pelo usuário. Sua saída deverá ser parecida com: Informe os minutos: 15 A quantidade de segundos é: 900 Veja a resolução comentada deste exercício em C: #include <stdio.h> #include <stdlib.h> #include <locale.h> // protótipo da função usada para converter minutos // em segundos int converter(int minutos); // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema int minutos, segundos; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar os minutos printf("Informe os minutos: "); scanf("%d", &minutos); // agora vamos chamar a função converter() para converter // os minutos em segundos segundos = converter(minutos); // e mostramos o resultado printf("A quantidade de segundos é: %d", segundos); printf("\n\n"); system("PAUSE"); return 0; } // função usada para converter minutos em segundos int converter(int minutos){ int segundos = minutos * 60; return segundos; } |
C# ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de C# - Como converter de decimal para binário usando os operadores de bits em C#Quantidade de visualizações: 1052 vezes |
Este desafio de programação faz parte da nossa lista de exercícios resolvidos de C#. Pergunta/Tarefa: Escreva um programa C# para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em C#, comentada linha a linha: using System; namespace Estudos { class Principal { // vamos definir o tamanho do vetor para guardar // os dígitos do número binário const int TAM_INT = sizeof(int) * 8; static void Main(string[] args) { // variáveis para ajudar a resolver o problema int dec, indice; // vetor para guardar o número binário int[] binario = new int[TAM_INT]; // vamos pedir para o usuário informar um decimal inteiro Console.Write("Informe um número decimal: "); dec = int.Parse(Console.ReadLine()); // ajustamos índice para o último elemento do vetor indice = TAM_INT - 1; // enquanto índice for maior ou igual a 0 while (indice >= 0) { // vamos guardar o bit menos significativo LSB binario[indice] = dec & 1; // diminuímos o índice indice--; // desloca bits para a direita uma posição dec = dec >> 1; } // agora vamos exibir o número binário Console.Write("O número binário é: "); for (int i = 0; i < TAM_INT; i++) { Console.Write(binario[i]); } Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } |
Android Java ::: android.widget ::: Button |
Como detectar um clique em um botão do Android usando o evento onClick no XML de layoutQuantidade de visualizações: 2303 vezes |
Nesta dica mostrarei como podemos detectar um clique em um botão usando o evento onClick diretamente no arquivo XML de layout. No entanto, para usar este artifício, algumas regras devem ser seguidas: a) O método chamado pelo clique do botão deverá ser public e retornar void; b) O único parâmetro do método deverá conter apenas um objeto da classe View, representando a view na qual o evento onclick ocorreu. Veja um exemplo completo no qual detectamos o clique no botão e exibimos uma mensagem AlertDialog contendo apenas um botão OK. Comece analisando o XML de layout (o nome do botão foi definido no arquivo strings.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> tools:context=".MainActivity"> <Button xmlns:android=" http://schemas.android.com/apk/res/android" android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_enviar" android:onClick="enviarMensagem" /> </LinearLayout> Veja agora o código Java no MainActivity.java: package com.example.estudosandroid; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.app.AlertDialog; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // método público que será chamado ao clicarmos no botão public void enviarMensagem(View view) { AlertDialog dialogo = new AlertDialog.Builder(MainActivity.this).create(); dialogo.setTitle("Aviso"); dialogo.setMessage("Esta é uma mensagem de aviso"); dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which){ dialog.dismiss(); // fecha o AlertDialog } } ); dialogo.show(); } } |
Você também poderá gostar das dicas e truques de programação abaixo |
GNU Octave - Como calcular a derivada de uma função usando a função diff() do GNU Octave - Regra do Tombo (ou Regra da Potência) C - Como inverter (reverter) o conteúdo de uma string em C usando uma função str_reverse() personalizada Java - Como calcular a transposta de uma matriz em Java - Java para Geometria Analítica e Álgebra Linear |
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 |