![]() |
|
||||
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 ::: Matemática e Estatística |
Exercício Resolvido de C - Escreva um programa C que pede um número inteiro e informa se o número informado é um número de ArmstrongQuantidade de visualizações: 972 vezes |
|
Pergunta/Tarefa: Um número é chamado de número de Armstrong quando a soma de cada um dos seus dígitos, elevado à quantidade de dígitos do número, equivale ao próprio número. Por exemplo, 153 e 93084 são números de Armstrong, já que: 153 = 13 + 53 + 33 93084 = 95 + 35 + 05 + 85 + 45 Escreva um programa C que pede para o usuário informar um número inteiro e informa se o número informado é um número de Armstrong ou não. Seu código deve usar apenas os operadores matemáticos disponíveis na linguagem C. Sua saída deverá ser parecida com: Informe um número inteiro: 153 O número informado é um número de Armstrong Veja a resolução comentada deste exercício usando C:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
int main(int argc, char *argv[]){
// variáveis usadas na resolução do problema
int numero, quant_digitos = 0, temp, resto, soma = 0;
setlocale(LC_ALL,""); // para acentos do português
// vamos pedir para o usuário informar um número
printf("Informe um número inteiro: ");
scanf("%d", &numero);
// o primeiro passo é obter a quantidade de dígitos que o número informado
// possui
temp = numero;
while(temp != 0) {
quant_digitos = quant_digitos + 1;
temp = temp / 10;
}
// agora efetuamos o cálculo que verifica se o número é um número
// de Armstrong ou não
temp = numero;
while(temp > 0){
resto = temp % 10;
soma = soma + (int)(pow(resto, quant_digitos));
temp = temp / 10;
}
if(soma == numero){
printf("O número informado é um número de Armstrong");
}
else{
printf("O número informado não é um número de Armstrong");
}
printf("\n\n");
system("PAUSE");
return 0;
}
|
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como somar os elementos da diagonal principal de uma matriz em JavaQuantidade de visualizações: 3015 vezes |
|
A Matriz quadrada é um tipo especial de matriz que possui o mesmo número de linhas e o mesmo número de colunas, ou seja, dada uma matriz Anxm, ela será uma matriz quadrada se, e somente se, n = m, onde n é o número de linhas e m é o número de colunas. Em geral as matrizes quadradas são chamadas de Matrizes de Ordem n, onde n é o número de linhas e colunas. Dessa forma, uma matriz de ordem 4 é uma matriz que possui 4 linhas e quatro colunas. Toda matriz quadrada possui duas diagonais, e elas são muito exploradas tanto na matemática quanto na construção de algorítmos. Essas duas diagonais são chamadas de Diagonal Principal e Diagonal Secundária. A diagonal principal de uma matriz quadrada une o seu canto superior esquerdo ao canto inferior direito. Veja: ![]() Nesta dica veremos como calcular a soma dos valores dos elementos da diagonal principal de uma matriz usando Java. Para isso, só precisamos manter em mente que a diagonal principal de uma matriz A é a coleção das entradas Aij em que i é igual a j. Assim, tudo que temos a fazer é converter essa regra para código Java. Veja um trecho de código Java completo no qual pedimos para o usuário informar os elementos da matriz e em seguida mostramos a soma dos elementos da diagonal superior:
package arquivodecodigos;
import java.util.Scanner;
public class Estudos{
public static void main(String[] args) {
// vamos fazer a leitura usando a classe Scanner
Scanner entrada = new Scanner(System.in);
// vamos declarar e construir uma matriz de três linhas e três colunas
int matriz[][] = new int[3][3];
int soma_diagonal = 0; // guarda a soma dos elementos na diagonal principal
// vamos ler os valores para os elementos da matriz
for(int i = 0; i < matriz.length; i++){ // linhas
for(int j = 0; j < matriz[0].length; j++){ // colunas
System.out.print("Informe o valor para a linha " + i + " e coluna "
+ j + ": ");
matriz[i][j] = Integer.parseInt(entrada.nextLine());
}
}
// vamos mostrar a matriz da forma que ela
// foi informada
System.out.println();
// percorre as linhas
for(int i = 0; i < matriz.length; i++){
// percorre as colunas
for(int j = 0; j < matriz[0].length; j++){
System.out.printf("%5d ", matriz[i][j]);
}
// passa para a próxima linha da matriz
System.out.println();
}
// vamos calcular a soma dos elementos da diagonal
// principal
for(int i = 0; i < matriz.length; i++){
for(int j = 0; j < matriz[0].length; j++){
if(i == j){
soma_diagonal = soma_diagonal + matriz[i][j];
}
}
}
// finalmente mostramos a soma da diagonal principal
System.out.println("\nA soma dos elementos da diagonal principal é: "
+ soma_diagonal);
}
}
Ao executar este código Java nós teremos o seguinte resultado:
Informe o valor para a linha 0 e coluna 0: 3
Informe o valor para a linha 0 e coluna 1: 7
Informe o valor para a linha 0 e coluna 2: 9
Informe o valor para a linha 1 e coluna 0: 2
Informe o valor para a linha 1 e coluna 1: 4
Informe o valor para a linha 1 e coluna 2: 1
Informe o valor para a linha 2 e coluna 0: 5
Informe o valor para a linha 2 e coluna 1: 6
Informe o valor para a linha 2 e coluna 2: 8
3 7 9
2 4 1
5 6 8
A soma dos elementos da diagonal principal é: 15
|
C# ::: Windows Forms ::: DataGridView |
Como ligar um DataGridView do C# Windows Forms à tabela de um banco de dados e efetuar inserção, alteração e remoção de registrosQuantidade de visualizações: 32966 vezes |
|
Uma das principais dúvidas que recebo em meu site é em relação aos passos necessários para associar um DataGridView com a tabela de um banco de dados e listar os dados. Em tempo de design este processo é relativamente fácil, visto que temos wizards que nos acompanham e fazem o trabalho mais pesado nos bastidores. No entanto, o cenário é completamente diferente quando temos que realizar tal tarefa via código. Espero que esta dica o deixe mais preparado para enfrentar tais situações. Para esta dica eu fiz uma conexão Visual C# 2005 + MySQL 5.0 usando ODBC (caso tenha dúvidas sobre isso, veja minha seção sobre C# + MySQL). Criei uma tabela MySQL chamada clientes contendo id, nome, idade, cidade e estado do cliente. Criei uma classe de conexão, inseri um DataGridView no formulário e coloquei as declarações abaixo na classe do formulário Form1.cs (fora dos métodos, para que os dados sejam globais na classe): // membros de instância de acesso global na classe // Dica: Se estiver usando SQL Server, troque "Odbc" por // "Sql" (Ex: SQLConnection, SqlCommand, SqlDataAdapter) // conexão com o banco de dados OdbcConnection conn = null; OdbcCommand cmd = null; OdbcDataAdapter adapter = null; DataSet ds = null; Em seguida colocamos o código abaixo no evento Click de um botão:
private void button4_Click(object sender, EventArgs e){
// Dica: Se estiver usando SQL Server, troque "Odbc"
// por "Sql" (Ex: SqlCommand, SqlDataAdapter, etc)
// obtém a conexão com o banco de dados
conn = ConexaoODBC.obterConexao();
if(conn != null){
// obtém todos os clientes cadastrados
cmd = new OdbcCommand("SELECT * FROM clientes",
conn);
adapter = new OdbcDataAdapter(cmd);
ds = new DataSet();
adapter.Fill(ds, "clientes_table");
// exibe os dados da tabela no DataGridView
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "clientes_table";
// fecha a conexão
ConexaoODBC.fecharConexao();
}
}
Aqui os dados já são listados no DataGridView. Porém, as alterações efetuadas no controle ainda não são repassadas para o banco de dados. Veja o código adicional no evento Click de outro botão:
private void button5_Click(object sender, EventArgs e){
// vamos salvar os dados do DataGridView para a tabela do
// banco de dados
// Dica: Se estiver usando SQL Server, troque "Odbc" por
// "Sql" (Ex: SqlCommandBuilder)
// obtém a conexão com o banco de dados
conn = ConexaoODBC.obterConexao();
if(conn != null){
OdbcCommandBuilder cmb = new OdbcCommandBuilder(adapter);
cmb.GetUpdateCommand();
adapter.Update(ds.Tables["clientes_table"]);
// fecha a conexão
ConexaoODBC.fecharConexao();
}
}
Pronto! Execute a aplicação, clique no primeiro botão para carregar os dados da tabela MySQL no DataGridView. Em seguida efetue algumas alterações, insira ou exclua linhas e clique no segundo botão. Feche a aplicação e abra-a novamente e se certifique de que os registros foram atualizados, inseridos ou removidos com sucesso. |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Criando dois vetores de inteiros de forma que a soma dos elementos individuais de cada vetor seja igual a 30Quantidade de visualizações: 841 vezes |
|
Pergunta/Tarefa: Considere os seguintes vetores:
// dois vetores de 5 inteiros cada
int a[] = {50, -2, 9, 5, 17};
int b[] = new int[5];
Sua saída deverá ser parecida com: Valores no vetor a: 50 -2 9 5 17 Valores no vetor b: -20 32 21 25 13 Veja a resolução comentada deste exercício usando C:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(int argc, char *argv[]){
setlocale(LC_ALL,""); // para acentos do português
// dois vetores de 5 inteiros cada
int a[] = {50, -2, 9, 5, 17};
int b[5];
int i;
// vamos preencher o segundo vetor de forma que a soma dos
// valores de seus elementos seja 30
for(i = 0; i < 5; i++){
b[i] = 30 - a[i];
}
// vamos mostrar o resultado
printf("Valores no vetor a: ");
for(i = 0; i < 5; i++){
printf("%d ", a[i]);
}
printf("\nValores no vetor b: ");
for(i = 0; i < 5; i++){
printf("%d ", b[i]);
}
printf("\n\n");
system("PAUSE");
return 0;
}
|
Java ::: Pacote java.awt ::: Graphics |
Como desenhar texto na superfície de uma JLabel do Java Swing usando o método drawString() da classe GraphicsQuantidade de visualizações: 11863 vezes |
A classe Graphics possui um método chamado drawString() que é usado para desenhar uma string na superfície de um componente. Veja a assinatura deste método:public abstract void drawString(String str, int x,int y) Como podemos ver, só precisamos fornecer a string a ser desenhada, a coordenada x e a coordenada y. Estas coordenadas são obtidas a partir do canto superior esquerdo do componente no qual desenharemos. O trecho de código abaixo mostra como desenhar a string "Arquivo de Códigos" em um JLabel:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Estudos extends JFrame{
JLabel label;
public Estudos() {
super("Desenhando em um JLabel");
Container c = getContentPane();
c.setLayout(new BorderLayout());
// Cria um JLabel
label = new JLabel();
c.add(label, BorderLayout.CENTER);
// Cria um botão
JButton btn = new
JButton("Desenhar uma string");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
// Desenha uma string no JLabel
Graphics graphics = label.getGraphics();
graphics.drawString("Arquivo de Códigos",
20, 50);
}
}
);
// Adiciona o botão à janela
c.add(btn, BorderLayout.SOUTH);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Há algo de interessante neste código. Se você maximizar, minimizar ou redimensionar a janela verá que o desenho é apagado. Isso acontece porque todas as vezes que a janela sofre alguma alteração, ela é pintada novamente, juntamente com seus componentes filhos. Se você deseja que o desenho seja feito automaticamente novamente, é melhor fazer uma sub-classe do componente desejado e sobrescrever seu método paintComponent(). Nesta mesma seção você encontrará exemplos de como fazer isso. |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como usar o método replace() da classe String do Java para substituir palavras em uma frase ou texto - RevisadoQuantidade de visualizações: 495 vezes |
|
Nesta dica mostrarei como substituir substrings em uma string, ou seja, substituir uma palavra (ou parte de uma palavra) em uma frase ou texto. Para isso podemos usar o método replace() da classe String da linguagem Java. Note que o método replace() da classe String retorna uma nova string com todas as ocorrências substituídas. Veja o exemplo:
package arquivodecodigos;
public class Estudos{
public static void main(String[] args){
String frase = "Programar em Java é bom.";
System.out.println(frase);
// substitui todas as ocorrências de "Java" por "C#"
String frase2 = frase.replace("Java", "C#");
System.out.println(frase2);
System.exit(0);
}
}
Ao executar este exemplo nós teremos o seguinte resultado: Programar em Java é bom. Programar em C# é bom. Esta dica foi revisada e testada no Java 8. |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar encapsulamento em Java - Programação Orientada a Objetos em JavaQuantidade de visualizações: 38028 vezes |
|
Encapsulamento é a técnica de transformar os objetos que compõem uma aplicação em verdadeiras caixas-pretas. De fato, se pensarmos em termos de informática, é possível para um usuário comum usar todas as funcionalidades de uma impressora sem nem mesmo entender seu funcionamento interno. Imagine o desastre que seria se todos os usuários resolvessem abrir suas impressoras para investigar o que há dentro delas. Da mesma forma, ao construir uma classe, devemos fazê-lo de forma que o usuário desta classe tenha acesso apenas aos métodos que permitem ler informações da classe ou fornecer os dados necessários para sua correta operação. Dados relativos ao funcionamento interno da classe devem permanecer ocultos e acessíveis somente aos métodos da própria classe. O encapsulamento deve ser aplicado de forma a permitir que alterações na estrutura interna de uma classe não prejudique o funcionamento do código externo que a usa. Veja um exemplo:
class Pedido{
public List obterProdutos(){
// monta uma lista de produtos
// pertecentes a este pedido
return lista;
}
}
A classe Pedido contém um método chamado obterProdutos() que retorna uma lista de produtos pertencentes a um determinado pedido. É aqui que o encapsulamento se torna importante. O código que usa esta classe desconhece completamente como esta lista de produtos é montada. Tudo que nos interessa é a lista de produtos que o método retorna. O programador da classe pode decidir a qualquer momento, talvez para melhorar o desempenho da classe, alterar a forma de montagem da lista. Uma vez que o nome e retorno do método (incluindo a estrutura da lista retornada) continuem sendo os mesmos, o código que usa a classe continuará funcionando como anteriormente. |
C# ::: Windows Forms ::: DataGridView |
Como ocultar ou exibir uma determinada linha do DataGridView do C# Windows FormsQuantidade de visualizações: 13318 vezes |
Em algumas situações precisamos ocultar ou exibir determinadas linhas do DataGridView. Isso pode ser feito definindo-se os valores true ou false para a propriedade Visible da classe DataGridViewRow. Veja um trecho de código no qual ocultamos a primeira linha do DataGridView:
private void button3_Click(object sender, EventArgs e){
// vamos ocultar a primeira linha
dataGridView1.Rows[0].Visible = false;
}
Veja que aqui nós acessamos a coleção DataGridViewRowCollection e usamos um índice para retornar o DataGridViewRow desejado. Em seguida definimos o valor false para sua propriedade Visible. |
Java ::: Pacote java.util ::: Iterator |
Como usar o método next() da interface Iterator do Java para obter o próximo elemento da iteraçãoQuantidade de visualizações: 4259 vezes |
O método next() da interface Iterator é usado quando queremos acessar o próximo elemento de uma iteração. Veja sua assinatura:E next() Veja que o tipo retornado equivale ao tipo do elemento usado na declaração do iterador. Veja um exemplo:
package estudos;
import java.util.ArrayList;
import java.util.Iterator;
public class Estudos{
public static void main(String[] args) {
// vamos criar uma ArrayList
ArrayList<String> pessoas = new ArrayList();
pessoas.add("Osmar");
pessoas.add("Carlos");
pessoas.add("Fernanda");
// vamos obter um iterador para a lista
Iterator<String> pessoa = pessoas.iterator();
// vamos obter o próximo elemento (neste caso, o primeiro)
String s1 = pessoa.next();
System.out.println(s1);
// vamos obter o próximo elemento (o segundo)
String s2 = pessoa.next();
System.out.println(s2);
// vamos obter o próximo elemento (o terceiro)
String s3 = pessoa.next();
System.out.println(s3);
// vamos obter o próximo elemento (vai dar erro. não há um quarto elemento)
String s4 = pessoa.next();
System.out.println(s4);
}
}
Ao executarmos este código nós teremos o seguinte resultado: Osmar Carlos Fernanda Exception in thread "main" java.util.NoSuchElementException at java.util.ArrayList$Itr.next(ArrayList.java:834) at estudos.Estudos.main(Estudos.java:30) Java Result: 1 Veja que o método next() atira uma exceção do tipo NoSuchElementException se o iterador não possuir mais elementos. |
C# ::: Windows Forms ::: ListBox |
Como excluir todos os itens de uma ListBox do C# Windows Forms usando a função Clear()Quantidade de visualizações: 580 vezes |
|
Em algumas situações nós precisamos limpar uma ListBox do C# Windows Forms, ou seja, excluir todos os seus itens de uma só vez em tempo de execução, enquanto o programa estiver rodando. Esta tarefa pode ser realizada por meio de uma chamada ao método Clear() do objeto ObjectCollection da ListBox. Veja um trecho de código no qual clicamos em um botão e removemos todos os itens da ListBox:
private void button2_Click(object sender, EventArgs e)
{
// remove todos os itens da ListBox
listBox1.Items.Clear();
}
|
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
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 |






