segunda-feira, 23 de fevereiro de 2009

Caixas de Diálogo - Biblioteca swing


Boas,

Um pouco de demora na atualização mas é pq estou estudando. Conforme eu aumentar meu conhecimento e conseguir criar programas mais "úteis" do que os programas(e fontes) postados até agora, postarei aqui também pra ser útil pra outros vijantes da web buscando mais conhecimentos.

Programa simples usando caixas de diálogo da biblioteca swing. Em baixo vo colocar os 4 métodos básicos de entrada de dados, mensagem etc da classe JOptionPane que foi o que eu usei. Basta correr atrás e aprender mais!




import javax.swing.JOptionPane;

public class programa_3 // o nome da classe não esta mto "convincente" mas
// é um padrão que estou usando nos estudos apenas
{
public static void main(String args[])
{
String nome, // recebe nome do usuario
mensagem; // armazena mensagem

nome = JOptionPane.showInputDialog("Qual seu nome?");
mensagem = "Caro(a) " + nome + ",\nBem vindo ao programa";

JOptionPane.showMessageDialog(null,mensagem);
}
}




Aqui estão algumas demonstrações de saída





E alguns métodos básicos da classe JOptionPane

quinta-feira, 12 de fevereiro de 2009

Classe Keyboard em Java


Saudações

Aqui está um código simples que demonstra uma forma de acessar os elementos individuais de uma String de Java. O código também mostra o uso da classe Keyboard que da uma força pro programador implementar um programa que recebe dados do usuário via teclado.

A partir da classe Keyboard podem ser criados programas que permitem uma interação com o usuário do programa. Não é nada de outro mundo, até porque não é usada uma GUI (Graphical User Interface) mas ainda assim, muito útil.


Programa simples: Recebe uma string do usuário e analisa cada elemento da string.
A partir da análise, o programa armazena os números contidos na string digitada pelo usuário em uma variável reservada para guardar os números, e as letras(sem símbolos especiais) armazena em outra variável reservada para guardar as letras. Separado letras e números, o programa imprime na tela a String completa, a variável somente com números e a variável somente com letras.


Exemplo de saída:








Antes de postar o código, é bom lembrar para os aprendizes(assim como eu) que para usar os métodos da classe Keyboard, é necessário compilá-la e executá-la, junto do código-fonte do programa que a usa(Um método bem simples: deixar as duas classes no mesmo diretório).




/**
* - USANDO CLASSE Keyboard
* - MANIPULANDO ELEMENTOS INDIVIDUAIS DE STRINGS
* - Autor - Paulo Henrique
**/

public class SeparaCaracter
{
public static void main(String args[])
{
String completa = "", // string via teclado
numeros = "", // numeros na string completa
letras = ""; // letras na string completa
int aux, // auxiliar para laço
tamanho = 0; // para receber tamanho da string

System.out.print("\n Entre com a string: ");
completa = Keyboard.readString(); // recebe string do teclado
tamanho = completa.length(); // pega tamanho da string


if (tamanho > 0) // se tem string armazenada
{
for (aux = 0; aux < tamanho; aux++)
{
switch(completa.charAt(aux))
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
numeros += completa.charAt(aux); // armazena numero que esta na posição
break;

case 'a': case 'b': case 'c': case 'd': case 'e':
case 'f': case 'g': case 'h': case 'i': case 'j':
case 'k': case 'l': case 'm': case 'n': case 'o':
case 'p': case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'y':
case 'z': case 'A': case 'B': case 'C': case 'D':
case 'E': case 'F': case 'G': case 'H': case 'I':
case 'J': case 'K': case 'L': case 'M': case 'N':
case 'O': case 'P': case 'Q': case 'R': case 'S':
case 'T': case 'U': case 'V': case 'W': case 'X':
case 'Y': case 'Z':
letras += completa.charAt(aux); // armazena letra na posição especificada
break;

default:
break;
}


}

System.out.println("\n\n String completa: " + completa);
System.out.println("\n String numeros: " + numeros);
System.out.println("\n String letras: " + letras);
}
}
}



Em seguida a classe Keyboard que deve ser compilada junto pra que os métodos pra receber dados do teclado possam ser utilizados.



import java.io.IOException;
import java.lang.StringBuffer;
import java.lang.NumberFormatException;

/**
* Classe que fornece métodos abstratos para leitura do teclado
*/
public class Keyboard {

private static String keyboardReadInt () {
int in = 0;
char chr;
boolean sinal = false;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if (in >= 48 && in <= 57 || ( in == 45 && !sinal ) ) {
Valor.append(chr);
sinal = true;
}
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}

private static String keyboardReadFloat () {
int in = 0;
char chr;
boolean ponto = false;
boolean sinal = false;
StringBuffer Valor = new StringBuffer("");

do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if (in >= 48 && in <= 57 || in == 46 || ( in == 45 && !sinal )) {
if ( in == 46 ) {
if ( ! ponto ) {
Valor.append(chr);
ponto = true;
}
} else {
Valor.append(chr);
}
sinal = true;
}
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}

/**
* Lêr um int do teclado
* @result int lido
*/
public static int readInt () {
int retorno;

try {
retorno = Integer.parseInt(keyboardReadInt());
} catch (NumberFormatException e) {
retorno = 0;
}

return retorno;
}

/**
* Lêr um float do teclado
* @result float lido
*/
public static float readFloat () {
float retorno;
try {
retorno = Float.parseFloat(keyboardReadFloat());
} catch (NumberFormatException e) {
retorno = 0;
}
return retorno;
}

/**
* Lêr um char do teclado
* @result char lido
*/
public static char readChar () {
int in = 0;
char chr;
int cont = 0;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if ( cont == 0 ) {
Valor.append(chr);
}
cont++;
}
} catch (IOException e) {}
} while (in != 10);
return Valor.charAt(0);
}

/**
* Lêr um String do teclado
* @result String lido
*/
public static String readString () {
int in = 0;
char chr;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
Valor.append(chr);
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}
}

segunda-feira, 9 de fevereiro de 2009

Distância entre 2 pontos em Java

Aqui está um código para calcular a distância(euclidiana) entre 2 pontos em uma reta escrito em Java. Foi usado a seguinte fórmula:



O programa espera receber 4 argumentos na linha de comando separados por espaço ( 5 3 -2 0 ) que equivalem respectivamente a: x1 y1 x2 y2

Então seguindo o exemplo:

x1 = 5
y1 = 3
x2 = -2
y2 = 0

Passando esses argumentos na linha de comando(no windows), teria que chamar assim:

c:\diretorio\subdiretorio>java DistanciaEntre2Pontos 5 3 -2 0


Então o programa retorna a distância para esses 2 pontos.

E dando uma visão geral, foram usados os seguintes métodos:



Math.pow(x,y); // Potencia em java, equivale a x(base) elevado a y(expoente)

Math.sqrt(x); // Raiz quadrada em java, equivale à raiz quadrada de x

Float.parseFloat(arg[0]); /** usado para coverter um valor do tipo float que
está armazenado em formato de string (ex: '5.0')
para para o formato de double (ex: 5.0) **/


E o código completo:




/**
* TREINO JAVA
* AUTOR: Paulo Henrique
*
* Data: 08/02/2009
*/

public class DistanciaEntre2Pontos
{
public static void main(String arg[])
{

//System.out.println(Math.pow(2,3)); => 8.0 => pow(base,potencia)
//System.out.println(Math.sqrt(9)); => 3.0 => sqrt(valor)

double distancia = 0, // distancia entre 2 pontos P1(x1,y1) e P2(x2,y2)

x1 = 0,
y1 = 0,
x2 = 0,
y2 = 0;

/**
* Para manipular os argumentos, é necessário converter de String para float:
* | String valor = "9.2";
* | float convertido;
* | convertido = Float.parseFloat(valor);
*/

if (arg.length == 4) // se tem 4 argumentos na linha de comando
{

x1 = Float.parseFloat(arg[0]);
y1 = Float.parseFloat(arg[1]);
x2 = Float.parseFloat(arg[2]);
y2 = Float.parseFloat(arg[3]);

distancia = Math.sqrt( Math.pow( (x1 - x2),2 ) +
Math.pow( (y1 - y2),2 ) );
}

System.out.println("Distancia entre Ponto1 e Ponto2: " + distancia);

}
}

domingo, 8 de fevereiro de 2009

Fatorial em Java

Este é um código simples que calcula e imprime na tela o Fatorial de 2, 4, 6 e 10 no Java



/**
* TREINO JAVA
* AUTOR: Paulo Henrique
* Fatorial de 2,4,6 e 10
* Data: 08/02/2009
*/

public class Fatorial
{
public static void main(String argumentos[])
{
int resultadoFatorial = 1, // inicializa com 1 para calcular o fatorial
aux; // auxiliar para o laço

// fatorial de 2
for ( aux = 1; aux <= 2; aux++ )
{
resultadoFatorial *= aux;
}

System.out.println("Fatorial de 2: " + resultadoFatorial);

//********** fim fatorial de 2 ************************

// fatorial de 4
resultadoFatorial = 1; // inicializa com 1 novamente

for ( aux = 1; aux <= 4; aux++ )
{
resultadoFatorial *= aux;
}

System.out.println("Fatorial de 4: " + resultadoFatorial);

//********** fim fatorial de 4 ************************

// fatorial de 6
resultadoFatorial = 1; // inicializa com 1 novamente

for ( aux = 1; aux <= 6; aux++ )
{
resultadoFatorial *= aux;
}

System.out.println("Fatorial de 6: " + resultadoFatorial);

//********** fim fatorial de 6 ************************

// fatorial de 10
resultadoFatorial = 1;

for ( aux = 1; aux <= 10; aux++ )
{
resultadoFatorial *= aux;
}

System.out.println("Fatorial de 10: " + resultadoFatorial);

//********** fim fatorial de 10 ************************
}
}

Teste de java no Netbeans

Estava eu testando o netbeans e fiz o "Olá Mundo". Pra não deixar de mostrar que tudo se começa do começo, vamos postar ele também ;)



public class NewEmpty
{
public static void main(String argumentos[])
{
System.out.println("Ola Mundo"); //imprime na tela "Ola Mundo"
}
}

domingo, 7 de dezembro de 2008

Método Bolha simples em C ( Bubble Sort em C )

Um código simples em C sobre ordenação usando o Método da Bolha




// Busca simples usando método da bolha
// Autor - Paulo Henrique

#include
#include
#define TAM 7

main()
{
int vetor[TAM],
x = 0,
y = 0,
aux = 0;

for( x = 0; x < TAM; x++ )
{
printf("\nEntre com um inteiro para vetor[%d]: ",x);
scanf("%d",&aux);
vetor[x] = aux;
}

// coloca em ordem crescente (1,2,3,4,5...)
for( x = 0; x < TAM; x++ )
{
for( y = x + 1; y < TAM; y++ ) // sempre 1 elemento à frente
{
// se o (x > (x+1)) então o x passa pra frente (ordem crescente)
if ( vetor[x] > vetor[y] )
{
aux = vetor[x];
vetor[x] = vetor[y];
vetor[y] = aux;
}
}
} // fim da ordenação

// exibe elementos ordenados
printf("\n\n Elementos ordenados (Crescente):");

for( x = 0; x < TAM; x++ )
{
printf("\n vetor[%d] = %d",x,vetor[x]); // exibe o vetor ordenado
}

// coloca em ordem decrescente (10,9,8,7...)
for( x = 0; x < TAM; x++ )
{
for( y = x + 1; y < TAM; y++ ) // sempre 1 elemento à frente
{
if ( vetor[y] > vetor[x] )
{
aux = vetor[y];
vetor[y] = vetor[x];
vetor[x] = aux;
}
}
} // fim da ordenação

// exibe elementos ordenados
printf("\n\n Elementos ordenados (Decrescente):");

for( x = 0; x < TAM; x++ )
{
printf("\n vetor[%d] = %d",x,vetor[x]); // exibe o vetor ordenado
}

system("\npause>nul");
}