quarta-feira, 31 de outubro de 2012

Exemplo de adição, remoção, busca, listagem e associação de objetos numa lista.

Código Java de uma lista desenvolvido em sala de aula que adiciona um objeto numa lista, busca, remove e associa a outro objeto. Este trata-se de uma exemplificação de uma lista de professor e algumas disciplinas. este código adiciona professor de duas formas, geteres e seteres ou construtor, busca o professor pela matricula, remove-o e associa disciplinas a professor. (O código as classes Professor, Disciplina e Lista)

Obs: O interessante é observar os exemplos dos métodos que constam no código.
//Autor: Thiago Campos
//Data: 31.10.2012
//Função: Realizar adicão, busca, listagem e remoção de um objeto e associe a outro

package br.main;

import br.dominio.Disciplina;
import br.dominio.Professor;
import java.awt.HeadlessException;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Thiago
 */
public class Lista {
    public static void main(String[] args){
        //cria uma lista de professor
        ArrayList<Professor> professores = new ArrayList<Professor>();
     
        Professor p = criarProfessor();
        p.setDisciplina(new ArrayList<Disciplina>());
        p.getDisciplina().add(criarDisciplina()); //criou e add novo professor
        p.getDisciplina().add(criarDisciplina()); //criou e add outro professor
       
        professores.add(p); //add na lista
       
        //outra forma para criar outro professor
        Professor p2 = criarProfessor();
        p2.setDisciplina(new ArrayList<Disciplina>());
        p2.getDisciplina().add(criarDisciplina()); //criou e add novo professor
        p2.getDisciplina().add(criarDisciplina()); //criou e add outro professor
       
        professores.add(p2); //add na lista
       
        //inserindo um professor com as disciplinas com o construtor
        Professor p3 = new Professor("Taynah", "8484"); //cria o professor usando o construtor
        p3.setDisciplina(new ArrayList<Disciplina>());
        Disciplina d1 = new Disciplina("010", "Direito"); //cria a disciplina usando o construtor
        Disciplina d2 = new Disciplina("012", "Enfermagem"); //cria a disciplina usando o construtor
        p3.getDisciplina().add(d1); //associa o professor a materia
        p3.getDisciplina().add(d2); //associa o professor a materia
        //fim da insersão do novo prof e disciplina
       
        professores.add(p3); //add na lista
       
        listaProfessores(professores);
       
        String matProf = JOptionPane.showInputDialog("Informe a matricula do professor:");
        listarDisciplinas(matProf, professores); //vai retornar a lista de disciplina do professor
       
        String matRem = JOptionPane.showInputDialog("Informe a matricula do professor a ser removido:");
        removerProfessor(matRem, professores); //vai remover o professor segundo a matricula
       
        listaProfessores(professores); //mostra a lista de professor
       
    } //fim do main

    /*
     * metodo para criação de um professor
     */
    public static Professor criarProfessor(){
        String nome = JOptionPane.showInputDialog("Professor:");
        String matricula = JOptionPane.showInputDialog("Matricula:");
       
        return new Professor (nome, matricula);
    } //fim da função
   
    /*
     *metodo para criação de um Disciplina 
     */
    public static Disciplina criarDisciplina(){
        String nome = JOptionPane.showInputDialog("Materia:");
        String codigo = JOptionPane.showInputDialog("Codigo:");
       
        return new Disciplina (codigo, nome);
    } //fim da função
 
    /**
     * Metodo que lista os professores cadastrados.
     */
    public static void listaProfessores(ArrayList<Professor> lista){
        if (!lista.isEmpty()){  //verifica se a lista está vazia
            String mensagem = "";
            for (Professor p: lista) {  //percorre a lista de professores
                mensagem += p.getNome() + "\n";
                for(Disciplina d: p.getDisciplina()){ //mostra a disciplina do professor em questão
                    mensagem += " - " + d.getNome() + "\n";
                }
            }
            JOptionPane.showMessageDialog(null, mensagem);
        } //fim do if
    } //fim da função

    /*
     * Método que lista as disciplinas do professor
     */
    public static void listarDisciplinas(String cpf, ArrayList<Professor> lista){
        for (Professor p : lista) {
            if(p.getMatricula().equals(cpf)){
                String mensagem = " ";
                for (Disciplina d : p.getDisciplina()) {
                    mensagem += d.getCodigo() + " - " + d.getNome();
                }
                JOptionPane.showMessageDialog(null, mensagem);
            } //fim do if
        } //fim do for
    } //fim da funcao
    
    /*
     * Metodo para consulta de professor por matricula
     */
    public static Professor buscarProfessor(String matricula, ArrayList<Professor> lista){
        if(!lista.isEmpty()){
            for (Professor p : lista) {
                if(p.getMatricula().equals(matricula))
                    return p;
            }
        } //fim do if
        return null;
    } //fim da função
    
    /**
     * Metodo para remover um professor
     */
    public static void removerProfessor(String matricula, ArrayList<Professor> lista){
        Professor p = buscarProfessor(matricula, lista); //crio uma variavel para receber o professor da função
        if(p !=null)
            lista.remove(p);
    } //fim da funcao
} //fim da classe


package br.dominio;

import java.util.ArrayList;
import java.util.Objects;

/**
 *
 * @author Thiago
 */
public class Professor {
    private String matricula;
    private String nome;
    private ArrayList<Disciplina> disciplina; //cria uma lista do tipo Disciplina

    public Professor() { } //este construtor vazio vai permitir instanciar o objeto noutra classe
   
    //vai instanciar direto as variaveis - metodo construtor
    public Professor (String nome, String matricula){
        this.nome = nome;
        this.matricula = matricula;
       
    }
    public ArrayList<Disciplina> getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(ArrayList<Disciplina> disciplina) {
        this.disciplina = disciplina;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    //equals -> vai verificar se objetos da mesma classe são iguais
    @Override
    public boolean equals(Object outroProfessor) {
      return matricula == ((Professor) outroProfessor).getMatricula();
    }
} //fim da classe


package br.dominio;

/**
 *
 * @author Thiago
 */
public class Disciplina {
    private String codigo;
    private String nome;

    public Disciplina() { } //este construtor vazio vai permitir instanciar o objeto noutra classe
   
    //vai instanciar direto as variaveis
    public Disciplina (String codigo, String nome){ //método construtor
        this.nome = nome;
        this.codigo = codigo;
    }
       
    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
   
    //método que que associa o codigo a disciplina
    public boolean equals(Object outraDisciplina) {
      return codigo == ((Disciplina) outraDisciplina).getCodigo();
    }
} //fim da classe


segunda-feira, 29 de outubro de 2012

Código Java que simula um questionário do IBGE.


O IBGE está realizando o senso deste ano visando classificar a população de acordo com algumas características definidas abaixo. Os pesquisadores realizam quatro perguntas a todos os entrevistados: sexo, idade, região do país onde vive (norte, nordeste, centro-oeste, sudeste ou sul) e etnia (branco, pardo, negro, índio). Não se sabe a quantidade de entrevistados, então crie um programa que pergunte se o pesquisador deseja cadastrar um novo entrevistado ou não. Ao final do cadastro dos entrevistados, mostre as seguintes estatísticas:
 a) Idade média de todos os entrevistados brasileiros
 b) Idade média dos brasileiros homens e mulheres (separadamente)
 c) Maior grupo étnico de cada região
 d) Idade média dos negros
 e) Porcentual de homens e mulheres na população nordestina


Código Java

//Autor: Thiago Campos
//Data: 29/10/2012

import javax.swing.JOptionPane;
/**
 *
 * @author Thiago
 */

public class Ibge {
        public static void main(String[] args){
        //variaveis
        String sexo;
        String regiao;
        String etnia;
        int idade=0;
       
        int qtdEntrevistados = 0; //qtd de entrevistados
        double idMedEnt = 0.0; //Idade media dos entrevistados
       
        //sexo
        double medMas = 0.0;//media masculina
        double medFem = 0.0;//media femenian
        int qtdMas = 0; //qtd de entrevistados do sexo masculino
        int qtdFem = 0; //qtd de entrevistados do sexo feminino
        int qtdNordMas = 0; //qtd de masculino nordestino
        int qtdNordFem = 0; //qtd de femenino nordestino
        double perNeM =0; //percentual de nordestino masculino
        double perNeF =0; //percentual de nordestino femenino
       
        //idade
        double medIM = 0.0; //media da idade masculina
        double medIF = 0.0; //media da idade femenina
        int idTM = 0; //total das idades masculina
        int idTF = 0; //total da idade femenina
               
        //cor      
        int maiorGER = 0;
        int idNegro = 0; //acumula a idade do negro
        double medIdNegro = 0; //media da idade dos negros
        /**
         * vetor na posição Zero representa etinia branca
         * vetor na posição um representa etinia negro
         * vetor na posição dois representa etinia pardo
         * vetor na posição três representa etinia indio
         */
        int[] qtdENo = new int[4];
        int[] qtdENe = new int[4];
        int[] qtdESu = new int[4];
        int[] qtdESe = new int[4];
        int[] qtdECo = new int[4];

        //regiao
        int qtdNo = 0;
        int qtdNe = 0;
        int qtdSu = 0;
        int qtdSe = 0;
        int qtdCo = 0;

        String StrMNo = ""; //maior grupo etnico da regiao Norte
        String StrMNe = ""; //maior grupo etnico da regiao Nordeste
        String StrMSu = ""; //maior grupo etnico da regiao Sul
        String StrMSe = ""; //maior grupo etnico da regiao Sudeste
        String StrMCo = ""; //maior grupo etnico da regiao Centro-Oeste

        int menu; //menu das opções

        do {
            menu = Integer.parseInt(JOptionPane.showInputDialog("Informe a opção desejada:"
                    + "\n1-Insira um entrevistado"
                    + "\n2-Mostre a idade media dos entrevistados"
                    + "\n3-Mostre a idade media dos entrevistados(separadamente)"
                    + "\n4-Mostre qual foi o maior grupo etnico de cada região"
                    + "\n5-Mostre a idade média dos negros"
                    + "\n6-Mostre o percentual de homens e mulheres da população nordestina"
                    + "\n7-Sair"));
            switch (menu) {
                case 1:
                    qtdEntrevistados += 1; //qtd total de entrevistados 
                   
                    //entrada dos dados
                    sexo = JOptionPane.showInputDialog("Informe o sexo do entrevistado:");
                    idade = Integer.parseInt(JOptionPane.showInputDialog("Informe a idade do entrevistado:"));
                    regiao = JOptionPane.showInputDialog("Informe a regiao do entrevistado:"
                            + "\n(Ps: Escreva Centro Oeste: CENTRO-OESTE) ");
                    etnia = JOptionPane.showInputDialog("Informe a etnia do entrevistado:");
                   
                    //guarda algumas informações
                    //Analizando a etnia conforme a idade
                    if(sexo.equalsIgnoreCase("M")){
                        qtdMas += 1;
                        idTM += idade; //guarda o total das idades masculino
                        if(regiao.equalsIgnoreCase("NORDESTE")) qtdNordMas++;                  
                    }else{
                        qtdFem += 1;
                        idTF += idade;
                        if(regiao.equalsIgnoreCase("NORDESTE")) qtdNordFem++;
                    }
                    //Analizando a etnia conforme a regiao
                    //(PS: CASO A QTD DE PESSOAS COM A MESMA ETNIA FOREM IGUAIS GUARDARÁ A ULTIMA)
                    if(regiao.equalsIgnoreCase("NORTE")){ //norte
                        qtdNo++;
                        if (etnia.equalsIgnoreCase("BRANCO")) qtdENo[0] += 1;
                        if (etnia.equalsIgnoreCase("NEGRO")) qtdENo[1] += 1;
                        if (etnia.equalsIgnoreCase("PARDO")) qtdENo[2] += 1;
                        if (etnia.equalsIgnoreCase("INDIO")) qtdENo[3] += 1;
                       
                        //verificar qual é o maior grupo de etnia
                        StrMNo = etnia; //maior é Branco
                        if(qtdENo[0] < qtdENo[1]) StrMNo = etnia; //maior é Negro
                        if(qtdENo[1] < qtdENo[2]) StrMNo = etnia; //maior é Pardo
                        if(qtdENo[2] < qtdENo[3]) StrMNo = etnia; //maior é Indio
                    }
                    if(regiao.equalsIgnoreCase("NORDESTE")){ //nordeste
                        qtdNe++;
                        if (etnia.equalsIgnoreCase("BRANCO")) qtdENe[0] += 1;
                        if (etnia.equalsIgnoreCase("NEGRO")) qtdENe[1] += 1;
                        if (etnia.equalsIgnoreCase("PARDO")) qtdENe[2] += 1;
                        if (etnia.equalsIgnoreCase("INDIO")) qtdENe[3] += 1;
                       
                        //verificar qual é o maior grupo de etnia
                        StrMNe = etnia;  //maior é Branco
                        if(qtdENe[0] < qtdENe[1]) StrMNe = etnia; //maior é Negro
                        if(qtdENe[1] < qtdENe[2]) StrMNe = etnia; //maior é Pardo
                        if(qtdENe[2] < qtdENe[3]) StrMNe = etnia; //maior é Indio   
                    }
                    if(regiao.equalsIgnoreCase("SUL")){ //sul
                        qtdSu++;
                        if (etnia.equalsIgnoreCase("BRANCO")) qtdESu[0] += 1;
                        if (etnia.equalsIgnoreCase("NEGRO")) qtdESu[1] += 1;
                        if (etnia.equalsIgnoreCase("PARDO")) qtdESu[2] += 1;
                        if (etnia.equalsIgnoreCase("INDIO")) qtdESu[3] += 1;  
                       
                        //verificar qual é o maior grupo de etnia
                        StrMSu = etnia;  //maior é Branco
                        if(qtdESu[0] < qtdESu[1]) StrMSu = etnia; //maior é Negro
                        if(qtdESu[1] < qtdESu[2]) StrMSu = etnia; //maior é Pardo
                        if(qtdESu[2] < qtdESu[3]) StrMSu = etnia; //maior é Indio
                    }
                    if(regiao.equalsIgnoreCase("SUDESTE")){ //sudeste
                        qtdSe++;
                        if (etnia.equalsIgnoreCase("BRANCO")) qtdESe[0] += 1;
                        if (etnia.equalsIgnoreCase("NEGRO")) qtdESe[1] += 1;
                        if (etnia.equalsIgnoreCase("PARDO")) qtdESe[2] += 1;
                        if (etnia.equalsIgnoreCase("INDIO")) qtdESe[3] += 1;
                       
                        //verificar qual é o maior grupo de etnia
                        StrMSe = etnia;  //maior é Branco
                        if(qtdESe[0] < qtdESe[1]) StrMSe = etnia; //maior é Negro
                        if(qtdESe[1] < qtdESe[2]) StrMSe = etnia; //maior é Pardo
                        if(qtdESe[2] < qtdESe[3]) StrMSe = etnia; //maior é Indio
                    }
                    if(regiao.equalsIgnoreCase("CENTRO-OESTE")){ //centro-oeste
                        qtdCo++;
                        if (etnia.equalsIgnoreCase("BRANCO")) qtdECo[0] += 1;
                        if (etnia.equalsIgnoreCase("NEGRO")) qtdECo[1] += 1;
                        if (etnia.equalsIgnoreCase("PARDO")) qtdECo[2] += 1;
                        if (etnia.equalsIgnoreCase("INDIO")) qtdECo[3] += 1;
                       
                        //verificar qual é o maior grupo de etnia
                        StrMCo = etnia;  //maior é Branco
                        if(qtdECo[0] < qtdECo[1]) StrMCo = etnia; //maior é Negro
                        if(qtdECo[1] < qtdECo[2]) StrMCo = etnia; //maior é Pardo
                        if(qtdECo[2] < qtdECo[3]) StrMCo = etnia; //maior é Indio
                    }
                    //se for negro vai guardar a idade
                    if(etnia.equalsIgnoreCase("NEGRO")) idNegro += idade;              
                    break;
                case 2: //calcula a idade media dos entrevistados
                    //processamento
                    idMedEnt = (double)(idTF+idTM)/qtdEntrevistados;
                    //saida
                    JOptionPane.showMessageDialog(null,"Media idade: " + idMedEnt);
                    break;
                case 3: //calcula a idade media dos entrevistados(separadamente)
                    //processamento
                    medIM = (double)idTM/qtdMas; //media Idade Masculino
                    medIF = (double)idTF/qtdFem; //media Idade femenino
                    //saida
                    JOptionPane.showMessageDialog(null,"Media idade dos entrevistados:"
                            + "\nMasculino: " + medIM
                            + "\nFemenino: " + medIF);
                    break;
                case 4: //Maior grupo étnico de cada região
                    //saida
                    JOptionPane.showMessageDialog(null,"Maior grupo étnico de cada região:"
                            + "\nNorte: " + StrMNo
                            + "\nNordeste: " + StrMNe
                            + "\nSul: " + StrMSu
                            + "\nSudeste: " + StrMSe
                            + "\nCentro-Oeste: " + StrMCo);
                    break;
                case 5: //Idade média dos negros
                    //observação
                    //qtdENo[1] - quantidade de negros do norte
                    //qtdENe[1] - quantidade de negros do nordeste
                    //qtdESu[1] - quantidade de negros do sul
                    //qtdESe[1] - quantidade de negros do sudeste
                    //qtdECo[1] - quantidade de negros do centro-oeste
                   
                    //processamento
                    medIdNegro = (double)idNegro/(qtdENo[1]+qtdENe[1]+qtdESu[1]+qtdESe[1]+qtdECo[1]);
                    //saida
                    JOptionPane.showMessageDialog(null,"A idade média dos negros: " + medIdNegro);
                    break;
                case 6: //Porcentual de homens e mulheres na população nordestina
                    //processamento
                    perNeM = (double)qtdNordMas/(qtdNordMas+qtdNordFem); //percentual masc
                    perNeF = (double)qtdNordFem/(qtdNordMas+qtdNordFem); //percentual fem
                    //saida
                    JOptionPane.showMessageDialog(null,"Percentual de Nordestino por sexo:"
                            + "\nMasculino: " + (perNeM*100) + "%"
                            + "\nFemenino: " + (perNeF*100) + "%");
                    break;
                case 7:
                    JOptionPane.showMessageDialog(null,"Fechando o programa...");
                    break;
                default:
                    JOptionPane.showMessageDialog(null,"Opção inválida!");
                    break;    
            } //fim do switch
        } while (menu != 7);
    } //fim do main
} //fim da classe

sábado, 27 de outubro de 2012

Fila(pilha) com funções push(), pop(), isEmpty() e isFull()

Defina uma pilha usando, para armazenamento interno, uma fila. Descreva como seriam implementadas as operações push, pop, isEmpty(para verificar se está vazia) e isFull(para verificar se está cheia).

Código em Java

//Autor: Thiago Campos
//Data: 25.10.2012

/**
 *
 * @author Thiago
 */
package br.thiago.dominio;

import javax.swing.JOptionPane;

public class Q3 {
    //variaveeis globais
    public static int k = 5;
    public static int topo = -1;
    public static Integer[] p1 = new Integer[k];
 
    public static void push(int valor){ //insere elementos na pilha
        if(topo < p1.length-1){ //(-1) é p/ ajustar a contagem pois inicia em -1
            topo++;
            p1[topo] = valor;
        }
        else
            JOptionPane.showMessageDialog(null, "A pilha está cheia");
    exibePilha(); //mostra a pilha após add de elemento
    } //fim da função
    public static void pop(){
        if(topo >= 0){
            p1[topo] = null;
            topo--;
        }
        exibePilha(); //exibe os elementos da pilha após exclusão de elemento
    } //fim da função
     public static void exibePilha(){ //exibe os elementos da pilha
         String str = "";
         for (int i = 0; i < p1.length; i++) {
             if(p1[i] != null)
             str += p1[i];
         }
         JOptionPane.showMessageDialog(null, "Pilha: " + str);
     } //fim do função
         public static boolean isEmpty(){ //verifica se a pilha está vazia
         if(topo != -1)
             return false;
         else
             return true;
     } //fim da função
     public static boolean isFull(){ //verifica se a pilha está cheia
         if(topo == p1.length - 1)
             return true;
         else
             return false;
     } //fim da função
     
/*
 * INICIO DO MAIN ================================================================
 */    
    public static void main(String args[]) {
        //variaveis
        int p;
        int m;
     
        do {
            m = Integer.parseInt(JOptionPane.showInputDialog("Informe a opção desejada:"
                    + "\n1 - Insira um elemento na pilha"
                    + "\n2 - remova um elemento da pilha"
                    + "\n3 - Exiba os elementos da pilha"
                    + "\n4 - Sair"));

            switch (m) {
                case 1:
                    //inserir elementos na pilha
                    if (!isFull()) {
                        p = Integer.parseInt(JOptionPane.showInputDialog("Informe um inteiro para a pilha:"));
                        push(p);
                    } else
                        JOptionPane.showMessageDialog(null, "A pilha está cheia!");
                    break;
                case 2:
                    if (!isEmpty()) {
                        pop();
                    } else
                        JOptionPane.showMessageDialog(null, "A pilha está vazia!");
                    break;
                case 3:
                    exibePilha();
                    break;
                case 4:
                    JOptionPane.showMessageDialog(null, "Fechando o programa...");
                    break;
                default:
                    JOptionPane.showMessageDialog(null, "Opção inválida!");
                    break;
            } //fim do switch
        } while (m != 4);
    } //fim do main
} //fim da classe

Ordena uma pilha usando algumas variáveis e um vetor.


Coloque os elementos de uma pilha P em ordem ascendente usando uma pilha adicional e algumas variáveis.


Código Java

//Autor: Thiago Campos
//Data: 27.10.2012

package br.thiago.dominio;

import javax.swing.JOptionPane;

/**
 *
 * @author Thiago
 */
public class Q2 {
    //VARIAVEIS GLOBAIS
    public static int k = 5;
    public static int[] p1 = new int[k];
    public static int[] p2 = new int[k];
    public static int topo = -1;
    public static int topoB = -1;
   
    //INICIO DAS FUNÇÕES-------------------------------------------------------
    public static void push(int valor){ //função para inserir na pilha A
        if(topo < k){
            topo++;
            p1[topo] = valor;
        }
    }//fim função push A
   
    public static void pushB(int vlr){ //função para inserir na pilha B
        if(topoB < k){
            topoB++;
            p2[topoB] = vlr;
        }
    }//fim função push B
   
    public static String exibePilha(){ //função para exibir a pilha A
        String str="";
       
        for (int i = topo; i > -1; i--) {
            str += p1[i];
        }
        return str;
    }
   
    public static String ordStr(String str){ //função para ordenar
        int aux;
        String strR="";
        int[] v = new int[5];
       

        for (int i = topo; i > -1; i--) { //transfere os elementos da pilha para o vetor
            v[i] += p1[i];
        }
       
        for (int i = 0; i < v.length; i++) { //ordena os elementos
            for (int j = i+1; j < v.length; j++) {
                if(v[i]>v[j]){
                    aux = v[i];
                    v[i] = v[j];
                    v[j] = aux;
                } //fim if 
            } //fim for j
        } //fim for i

        for (int i = 0; i < v.length; i++) {//transfere os elementos para uma string
            int a = v[i];
            pushB(a);
        }
        for (int i = 0; i < v.length; i++) {//transfere os elementos para uma string
            strR += p2[i];
        }
        return strR; //retorna a string ordenada
    }
   
    //INICIO DO MAIN------------------------------------------------------------
    public static void main(String[] args){
        //Variaveis locais
        String str;
        String strOrd;
       
        //pilha A
        push(3);
        push(4);
        push(1);
        push(5);
        push(2);
       
        //uso das funções
        str = exibePilha(); //retorna a pilha A    
        strOrd = ordStr(str); //retorna a pilha B

        //saida
        JOptionPane.showMessageDialog(null, "Pilha A: " + str);
        JOptionPane.showMessageDialog(null, "Pilha B: " + strOrd);
       
    } //fim do main
} //fim da classe

terça-feira, 23 de outubro de 2012

O Código Java verifica se a pilha está Balanceada ou não analisando os caracteres caracteres (, ), [, ], {e }.


Considere uma cadeia de caracteres S composta somente dos caracteres (, ), [, ], {e }. Diz-se que S é balanceada se ela possui uma das seguintes formas:

  • S = "", isto é, S é uma cadeia de comprimento zero
  • S = "(T)"
  • S = "[T]"
  • S = "{T}"
  • S = "TU"

Onde Ue T são cadeias balanceadas.
Em outras palavras, para todo parênteses, colchete e chave esquerdos existe um parênteses, colchete e chave direitos. Por exemplo, {()[()]}é balanceada, mas ([)] não é. Escreva um algoritmo que utilize uma pilha de caracteres para testar quando uma dada cadeia é balanceada.


Código Java

//Autor: Thiago Campos
//Data: 24.10.2012

/**
 *
 * @author Thiago
 */
import java.util.*;
import javax.swing.JOptionPane;


public class Q1 {
    public static void main(String args[]) {
        String entrada = JOptionPane.showInputDialog("Informe os caracteres a serem analisados: ");

        if (verifica(entrada) == true)
            JOptionPane.showMessageDialog(null, "A PILHA ESTÁ BALANCEADA.");

        if (verifica(entrada) == false)
            JOptionPane.showMessageDialog(null, "A PILHA NÃO ESTÁ BALANCEADA.");
    } //fim do main
   
/*---------------------------------------------------------------------------------
 *               FUNÇÃO QUE VERIFICA SE A PILHA ESTÁ BALANCEADA OU NÃO
 ---------------------------------------------------------------------------------*/
    public static boolean verifica(String str) {
        Stack<Character> pilha = new Stack<Character>();  //refere-se ao topo de uma pilha

        //variaveis da classe
        char p1 = '(';
        char p2 = ')';
        char br1 = '{';
        char br2 = '}';
        char bk1 = '[';
        char bk2 = ']';

        for (int i = 0; i < str.length(); i++) { //percorre toda a String
            //verificação inicial - verifica caracter por caracter
            if (str.charAt(i) == p1)
                pilha.push(p1);
            else if (str.charAt(i) == br1)
                pilha.push(br1);
            else if (str.charAt(i) == bk1)
                pilha.push(bk1);
           
            else if (str.charAt(i) == p2){
                if (pilha.isEmpty())
                    return false;
                if (pilha.pop() != p1)
                    return false;
            } //fim do if p2
           
            else if (str.charAt(i) == br2) {
                if (pilha.isEmpty())
                    return false;
                if (pilha.pop() != br1)
                    return false;
            } //fim do if br2
           
            else if (str.charAt(i) == bk2) {
                if (pilha.isEmpty())
                    return false;
                if (pilha.pop() != bk1)
                    return false;
            } //fim do if bk2
        }
        return pilha.isEmpty();
    } //fim da função verifica
   
} //fim da Classe Q1

quarta-feira, 17 de outubro de 2012

Código da Listagem - Adicionar, Buscar e Remover dados de uma lista.

Continuando a postagem anterior.

Código Java
//Autor: Thiago Campos
//Data: 10.10.2012

package br.thiago.main;

import br.thiago.dominio.Cliente;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Thiago
 */
public class Listagem {
    public static void main(String[] args){
        //criando a lista
        ArrayList<Cliente> cadastro = new ArrayList<Cliente>();
       
        //instanciando as variaveis
        Cliente c1 = new Cliente();
        c1.setNome("Thiago Campos");
        c1.setCpf("1234");
        c1.setSexo("M");
        c1.setIdade(32);
       
        Cliente c2 = new Cliente();
        c2.setNome("Rafael Correia");
        c2.setCpf("2222");
        c2.setSexo("M");
        c2.setIdade(02);
       
        Cliente c3 = new Cliente();
        c3.setNome("Taynah Neri");
        c3.setCpf("3333");
        c3.setSexo("F");
        c3.setIdade(27);
       
        Cliente c4 = new Cliente();
        c4.setNome("Roberta Miranda");
        c4.setCpf("4444");
        c4.setSexo("F");
        c4.setIdade(21);
       
        Cliente c5 = new Cliente();
        c5.setNome("Marconi Borges");
        c5.setCpf("5555");
        c5.setSexo("M");
        c5.setIdade(18);
       
        //inserindo na lista
        cadastro.add(c1);
        cadastro.add(c2);
        cadastro.add(c3);
        cadastro.add(c4);
        cadastro.add(c5);
       
        //exibindo a lsta de clientes
        exibeCadastro(cadastro);
       
        //operações
        int op;
        do{
        op = Integer.parseInt(JOptionPane.showInputDialog("Informe o cpf do cliente;"
                + "\n1 - Mostrar Lista"
                + "\n2 - Adicionar na lista"
                + "\n3 - Buscar Cliente"
                + "\n4 - Excluir Cliente"
                + "\n5 - Sair"));
       
        switch(op){
            case 1:
                exibeCadastro(cadastro);
                break;
            case 2:
                //entrada dos dados
                Cliente c6 = new Cliente();
                c6.setNome(JOptionPane.showInputDialog("Nome do Cliente"));
                c6.setCpf(JOptionPane.showInputDialog("CPF do Cliente:"));
                c6.setSexo(JOptionPane.showInputDialog("Sexo do Cliente"));
                c6.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Idade do Cliente:")));
               
                //adicionando a lista
                cadastro.add(c6);
               
                //mostra a nova lista
                exibeCadastro(cadastro);
                break;
           
            case 3:
                String cpfBuscado = JOptionPane.showInputDialog("Informe o CPF do cliente para busca:");
               
                Cliente clienteBuscado = buscarClientes(cpfBuscado, cadastro);
                if(clienteBuscado != null)
                    JOptionPane.showMessageDialog(null, "Resultado da busca:"
                            + "\n................................"
                            + "\n"+ clienteBuscado.getNome()
                            + "\nCPF:" + clienteBuscado.getCpf()
                            + "\nIdade: " + clienteBuscado.getIdade()
                            + "\nSexo: " + clienteBuscado.getSexo()
                            + "\n................................");
                else
                    JOptionPane.showMessageDialog(null, "Cliente não encontrado!");         
                break;
               
            case 4:
                String cpfRemovido =JOptionPane.showInputDialog("Informe o CPF do cliente a ser removido:");
               
                Cliente clienteRemovido = buscarClientes(cpfRemovido, cadastro);
                if (clienteRemovido != null)
                    cadastro.remove(clienteRemovido);
                else
                    JOptionPane.showMessageDialog(null, "Cliente não encontrado!");
                    exibeCadastro(cadastro); //mstra lista após remoção
                break;
               
            case 5:
                JOptionPane.showMessageDialog(null, "Saindo do programa...");
                break;
               
            default:
                JOptionPane.showMessageDialog(null, "Opção errada, tente denovo!");
                break;
        } //fim do switch
    }while(op!=5);
    } //fim do main
   
    /**
     * Metodo para exibir a lista de clientes
     */
    public static void exibeCadastro(ArrayList<Cliente> mostraLista){
        //variavel
        String nomes = "";
       
        //processamento
        for(Cliente qqNome: mostraLista)
            nomes += "Cliente: " + qqNome.getNome() + " CPF: " + qqNome.getCpf() + "\n";
       
        //exibe a saida
        JOptionPane.showMessageDialog(null, nomes);
    } //fim do metodo exibeCadastro

    /**
     * Metodo para buscar o cliente na lista
     */
    public static Cliente buscarClientes(String cpf, ArrayList<Cliente> mostraLista){
        if (mostraLista != null){
            for (Cliente cliente : mostraLista) {
                if(cliente.getCpf().equals(cpf))
                    return cliente;
            } //fim do for
        } //fim do if
        return null;
       
    } //fim do metodo buscar
  
} //fim da classe

quarta-feira, 10 de outubro de 2012

Código que mostra uma lista

Código Java
//Autor: Thiago Campos
//Data: 10.10.2012

/*
 * Um código simples que mostra como criar uma lista e exibi-la.
 */
package br.thiago.main;

import br.thiago.dominio.Cliente;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Thiago
 */
public class Listagem {
    public static void main(String[] args){
        //criando a lista
        ArrayList cadastro = new ArrayList();
       
        //instanciando c1
        Cliente c1 = new Cliente();
        c1.setNome("Thiago Campos");
        c1.setCpf("1234");
        c1.setSexo('M');
        c1.setIdade(32);

        //instanciando c2
        Cliente c2 = new Cliente();
        c2.setNome("Rafael Correia");
        c2.setCpf("3333");
        c2.setSexo('M');
        c2.setIdade(02);  
    
        //instanciando c3
        Cliente c3 = new Cliente();
        c3.setNome("Taynah Neri");
        c3.setCpf("8888");
        c3.setSexo('F');
        c3.setIdade(27);
       
        //inserindo na lista
        cadastro.add(c1);
        cadastro.add(c2);
        cadastro.add(c3);
       
        //exibindo a lsta de clientes
        exibeCadastro(cadastro);
       
       
    } //fim do main
   
    /**
     * Metodo para exibir a lista de clientes
     */
    public static void exibeCadastro(ArrayList<Cliente> mostraLista){
        //variavel
        String nomes = "";
       
        //processamento
        for(Cliente qqNome: mostraLista){
            nomes += "Cliente: " + qqNome.getNome() + " CPF: " + qqNome.getCpf() + "\n";
        }
        JOptionPane.showMessageDialog(null, nomes);
    } //fim do metodo exibeCadastro
} //fim da classe

//INICIO DO DOMINIO
package br.thiago.dominio;

/**
 *
 * @author Thiago
 */
public class Cliente {
    private String nome;
    private String cpf;
    private char sexo;
    private int idade;
   
    //get e set - nome
    public void setNome(String nome){
        this.nome = nome;
    }
    public String getNome(){
        return nome;
    }
   
    //get e set - cpf
    public void setCpf(String cpf){
        this.cpf = cpf;
    }
    public String getCpf(){
        return cpf;
    }
   
    //get e set - sexo
    public void setSexo(char sexo){
        this.sexo = sexo;
    }
    public char getSexo(){
        return sexo;
    }
   
    //get e set - idade
    public void setIdade(int idade){
        this.idade = idade;
    }
    public int getIdade(){
        return idade;
    }
   
    public boolean equals(Object obj){
        return cpf == ((Cliente) obj).getCpf();
    }

} //fim da classe


Código de uma lista (Exemplo)

Código Java
//Autor: Thiago Campos
//Data: 10.10.2012


/*
 * Exemplos simples que simula uma lista de alunos
 */
package dominio;

/**
 * Classe que representa um aluno
 * @author Thiago
 */
public class Aluno {
    //variaveis
    private String matricula;
    private String cpf;
    private String curso;
    private String nome;
   
    /**
     * get e seters cpf
     * @return
     */
    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * get e seters curso
     * @return
     */
    public String getCurso() {
        return curso;
    }

    public void setCurso(String curso) {
        this.curso = curso;
    }

    /**
     * get e seters matricula
     * @return
     */
    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    /**
     * get e seters nome
     * @return
     */
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
   
    /**
     * metodo equals - com retorno true/false
     * @return
     */
    public boolean equals (Object obj){
        return matricula == ((Aluno) obj).getMatricula();
    }
   
} //fim da classe

/*
 * Inicio da classe Listagem
 */
package main;

import dominio.Aluno;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Thiago
 */
public class Listagem {
    public static void main(String[] args){
        //lista de alunos
        ArrayList <Aluno> listaAlunos = new ArrayList <Aluno>()
;
        //instanciar aluno
        Aluno a1 = new Aluno();
        a1.setNome("Thiago");
        a1.setMatricula("1234");
        a1.setCpf("5678");
        a1.setCurso("BSI");
       
        //adicionando aluno1 na lista
        listaAlunos.add(a1);
       
        Aluno a2 = new Aluno();
        a2.setNome("Catarina");
        a2.setMatricula("1111");
        a2.setCpf("2222");
        a2.setCurso("Direito");
       
        //adicionando aluno2 na lista
        listaAlunos.add(a2);
       
        //instanciando aluno 3
        Aluno a3 = new Aluno();
        a3.setNome(JOptionPane.showInputDialog("Nome"));
        a3.setMatricula(JOptionPane.showInputDialog("Matricula"));
        a3.setCpf(JOptionPane.showInputDialog("CPF"));
        a3.setCurso(JOptionPane.showInputDialog("Curso"));
       
        //adicionando aluno3 na lista
        listaAlunos.add(a3);
       
        //exibir a lista
        listagem(listaAlunos);
       
    } //fim do main
   
    /**
     * Metodo para exibição da lista de alunos
     * @param lista
     */
    public static void listagem(ArrayList<Aluno> lista){
        String nomes = "";       

        for(Aluno aaa: lista){
            nomes += "Matricula:" + aaa.getMatricula() + " Aluno: "+ aaa.getNome() + "\n";
        } //fim do for
       
        JOptionPane.showMessageDialog(null, nomes);
    } //fim do metodo listagem
   
} //fim da classe

segunda-feira, 1 de outubro de 2012

Algoritmo: Linguagem do VisuAlg

Dois vetores formando uma Matriz

Algoritmo: Linguagem do VisuAlg

algoritmo "Matriz"
// Autor : Thiago Campos
// Data : 01/10/2012
// Seção de Declarações 
var
i: inteiro
j: inteiro

//para a declaração do vetor é necessario os 2 pontinhos
vetA: vetor[1..3] de inteiro
vetB: vetor[1..3] de inteiro
vm: vetor[1..3,1..3] de inteiro

inicio
// Seção de Comandos 
   para i de 1 ate 3 passo 1 faca
     escreva("Elemento vetor A:")
     leia (vetA[i])
   fimpara
   para i de 1 ate 3 passo 1 faca
        escreva("Elemento vetor B:")
        leia(vetB[i])
   fimpara
 
   escreval()
 
   //saida
   para i de 1 ate 3 passo 1 faca
        vm[i, 1] <- vetA[i]
   fimpara
   para i de 1 ate 3 passo 1 faca
        vm[i, 2] <- vetB[i]
   fimpara
         escreval("A Matriz VM:")
   para i de 1 ate 3 passo 1 faca
   escreva("|")
        para j de 1 ate 2 passo 1 faca
            escreva(vm[i,j])
        fimpara
        escreval("|")
   fimpara

fimalgoritmo

Algoritmo: Linguagem do VisuAlg

 Escrever um algoritmo que leia dois valores inteiro distintos e informe qual é o maior.

Algoritmo: Linguagem do VisuAlg

algoritmo "MaiorN"

// Autor : Thiago Campos
// Data : 01/10/2012
// Seção de Declarações 
var
maior: inteiro
a, b: inteiro

inicio
// Seção de Comandos 
   escreval("Condicao de parada: a=0")
   repita
         escreva("Informe o numero: ")
         leia(a)
         escreva("Informe o numero: ")
         leia(b)
       
         se a = b entao
            escreva("Os valores sao iguais.")
            escreval()
            escreval()
         senao
              se a > b entao
                 escreva(a, " eh maior do que ", b)
                 escreval()
                 escreval()
              senao
                      escreva(b, " eh maior do que ", a)
                      escreval()
                      escreval()
              fimse
         fimse
       ate a=0
fimalgoritmo