Você está aqui: Cards de Engenharia Civil - Fundações |
||
|
||
|
|
||
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como retornar o primeiro elemento de um vetor em JavaQuantidade de visualizações: 991 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que mostra como acessar e retornar o primeiro elemento de um array (vetor) Java. Sua saída deverá ser parecida com: Os elementos do vetor são: [9, 5, 3, 2, 4, 8] O primeiro elemento do array é: 9 Veja a resolução comentada deste exercício usando Java:
package estudos;
import java.util.Arrays;
public class Estudos {
public static void main(String[] args) {
// vamos criar um array de inteiros
int valores[] = {9, 5, 3, 2, 4, 8};
System.out.println("Os elementos do vetor são: " +
Arrays.toString(valores));
// agora vamos retornar o primeiro elemento do vetor
int primeiro = valores[0];
// e mostramos o resultado
System.out.println("O primeiro elemento do array é: " +
primeiro);
}
}
|
wxWidgets ::: Dicas & Truques ::: wxApp |
Como usar a classe wxApp em suas aplicações C++ wxWidgetsQuantidade de visualizações: 2266 vezes |
|
A classe wxApp (Application Class) é uma das primeiras classes que devemos estudar se quisermos ter um domínio perfeito do framework wxWidgets. Para usá-la, devemos incluir #include <wx/app.h> em nossos códigos. Essa classe herda de wxAppConsole. Todas as aplicações wxWidgets definem uma classe application derivada de wxApp. Há somente uma instância dela, e essa instância representa a aplicação sendo executada no momento. De todos os métodos herdados de wxApp, há pelo menos um que devemos implementar, e ele é a função OnInit(), que é chamada quando o wxWidgets está pronto para executar o nosso código. OnInit() equivale ao main() em C/C++ ou WinMain (aplicações Win32). Veja um trecho de código no qual declaramos e usamos a classe wxApp: Código para aplicacao.h:
#include <wx/wx.h>
// arquivo de definição
// declaramos a classe application
class MinhaAplicacao : public wxApp{
public:
// é chamado no startup da aplicação
virtual bool OnInit();
};
// declara MinhaAplicacao& GetApp()
DECLARE_APP(MinhaAplicacao)
Código para aplicacao.cpp:
#include "aplicacao.h"
// arquivo de implementação
// aqui o wxWidgets implementa nosso objeto MinhaAplicacao
IMPLEMENT_APP(MinhaAplicacao)
bool MinhaAplicacao::OnInit(){
// vamos mostrar uma mensagem ao iniciar a aplicação
wxMessageDialog *alerta = new wxMessageDialog(NULL,
wxT("A aplicação foi iniciada com sucesso"), wxT("Informação"), wxOK);
alerta->ShowModal();
// em geral retornamos true para iniciar o loop de eventos
// mas essa aplicação exibe apenas uma janela de mensagem. Podemos sair
return false;
}
Veja que no arquivo de declaração (header file) nós temos a macro DECLARE_APP. Ela nos permite declarar a função wxGetApp() que retorna uma referência para o objeto aplicação. Se não fizermos isso, a única forma de obter tal referência é usando o ponteiro global wxTheApp, que é do tipo wxApp*. A macro IMPLEMENT_APP, no arquivo de implementação, permite ao wxWidgets criar dinamicamente uma instância do objeto application no ponto apropriado da inicialização da biblioteca. Esse trecho de código é totalmente funcional, mas teremos apenas a exibição de uma mensagem wxMessageDialog. Por essa razão eu retornei false no laço de eventos. Se tivéssemos criado uma janela wxFrame, o retorno deveria ser true, já que teríamos de lidar com eventos. Para finalizarmos, lembre-se de que o método OnInit() da classe wxApp é o local ideal para se fazer as verificações iniciais da aplicação, tais como conexão com banco de dados, permissão do usuário, disponibilidade da rede, etc. |
Java ::: Dicas & Truques ::: Fuso Horários |
Como retornar uma lista de todos os IDs de fusos horários suportados pela linguagem Java usando o método getAvailableIDs() da classe TimeZoneQuantidade de visualizações: 9223 vezes |
A linguagem Java, por meio da classe TimeZone, nos permite trabalhar com uma enorme variedade de fusos horários. No entanto, antes de assumir que um determinado fuso horário é suportado, é interessante verificar se tal fuso horário está na lista de IDs suportados. Isso pode ser feito com uma chamada ao método estático getAvailableIDs(). Este método retorna o ID de todos os fusos horários suportados. Veja um exemplo de como usá-lo:
import java.util.*;
public class Estudos{
public static void main(String args[]){
// obtém todos os IDs de fusos horários
// disponíveis na classe TimeZone
String fusos[] = TimeZone.getAvailableIDs();
for(int i = 0; i < fusos.length; i++){
System.out.println(fusos[i]);
}
}
}
Ao executar este código você terá um resultado semelhante à (optamos por listar apenas os 100 primeiros resultados): Etc/GMT+12 Etc/GMT+11 MIT Pacific/Apia Pacific/Midway Pacific/Niue Pacific/Pago_Pago Pacific/Samoa US/Samoa America/Adak America/Atka Etc/GMT+10 HST Pacific/Fakaofo Pacific/Honolulu Pacific/Johnston Pacific/Rarotonga Pacific/Tahiti SystemV/HST10 US/Aleutian US/Hawaii Pacific/Marquesas AST America/Anchorage America/Juneau America/Nome America/Yakutat Etc/GMT+9 Pacific/Gambier SystemV/YST9 SystemV/YST9YDT US/Alaska America/Dawson America/Ensenada America/Los_Angeles America/Tijuana America/Vancouver America/Whitehorse Canada/Pacific Canada/Yukon Etc/GMT+8 Mexico/BajaNorte PST PST8PDT Pacific/Pitcairn SystemV/PST8 SystemV/PST8PDT US/Pacific US/Pacific-New America/Boise America/Cambridge_Bay America/Chihuahua America/Dawson_Creek America/Denver America/Edmonton America/Hermosillo America/Inuvik America/Mazatlan America/Phoenix America/Shiprock America/Yellowknife Canada/Mountain Etc/GMT+7 MST MST7MDT Mexico/BajaSur Navajo PNT SystemV/MST7 SystemV/MST7MDT US/Arizona US/Mountain America/Belize America/Cancun America/Chicago America/Costa_Rica America/El_Salvador America/Guatemala America/Indiana/Knox America/Indiana/Petersburg America/Indiana/Vincennes America/Knox_IN America/Managua America/Menominee America/Merida America/Mexico_City America/Monterrey America/North_Dakota/Center America/North_Dakota/New_Salem America/Rainy_River America/Rankin_Inlet America/Regina America/Swift_Current America/Tegucigalpa America/Winnipeg CST CST6CDT Canada/Central Canada/East-Saskatchewan Canada/Saskatchewan Chile/EasterIsland Um bom uso deste método é quando estamos desenvolvendo uma aplicação que mostra o horário ao redor do mundo. Podemos ter uma lista de fusos horários e, mediante a seleção do usuário, fornecer o valor selecionado para o método setTimeZone() da classe Calendar, por exemplo. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Como resolver o problema da Torre de Hanói recursivamenteQuantidade de visualizações: 3064 vezes |
|
Pergunta/Tarefa: Torre de Hanói, ou The Towers of Hanoi, é um "quebra-cabeça" que consiste em uma base contendo três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo. O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situação. O número de discos pode variar sendo que o mais simples contém apenas três. A solução da Torre de Hanói (The Towers of Hanoi) pode ser feita recursivamente da seguinte forma: O caso base (parada da recursão) é quando n = 1. Se n = 1 nós podemos simplesmente mover o disco de A para B, sem precisar passar pelo pino C. Quando n > 1 nós podemos dividir o problema original em três sub-problemas e resolvê-los sequencialmente. 1) Mova os primeiros n - 1 discos de A para C com a ajuda do pino B; 2) Mova o disco n de A para B; 3) Mova n - 1 discos do pino C para o pino B com a ajuda do pino A. Além de resolver o problema, seu programa deverá informar quantas chamadas recursivas foram feitas. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package arquivodecodigos;
import java.util.Scanner;
public class Estudos {
static int quantChamadasRecursivas = 0; // registra as chamadas recursivas
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos ler a quantidade de discos a serem usados na simulação
System.out.print("Informe a quantidade de discos: ");
int discos = Integer.parseInt(entrada.nextLine());
// resolve o problema recusivamente
System.out.println("\nOs movimentos para resolver o problema foram:\n");
moverDiscos(discos, 'A', 'B', 'C');
System.out.println("\nForam feitas " + quantChamadasRecursivas +
" chamadas recursivas");
System.out.println();
}
// método recursivo que resolve o problema da Torre de Hanói
public static void moverDiscos(int n, char daTorre, char paraTorre,
char torreAux) {
quantChamadasRecursivas++; // registra mais uma chamada recursiva
if(n == 1){ // condição de parada
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
}
else{ // faz mais uma chamada recursiva
moverDiscos(n - 1, daTorre, torreAux, paraTorre);
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
moverDiscos(n - 1, torreAux, paraTorre, daTorre);
}
}
}
|
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: 6965 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");
}
}
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
|
Firebird - Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de música Portugol - Como calcular o coeficiente angular de uma reta em Portugol dados dois pontos no plano cartesiano |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







