AGRADECIMENTO...

Pessoal, Gostaria de pedir desculpas aqueles que deixam perguntas/comentários/elogios/críticas e ainda não foram respondidos.

Aproveito a oportunidade para informar a todos que devido a correria do dia a dia não conclui o curso de BSI, por isso meus conhecimentos são limitados rsrsrs...

Ainda não retirei o blog do ar porque tem ajudado a diversos estudantes, principalmente os iniciantes.

As vezes, quando o trabalho me permite, ainda arrisco tentar resolver algumas questões rs... mas para não deixar esse blog parar no tempo, o ESTUDANTE que quiser enviar a resolução de alguma questão (código próprio) para o meu e-mail, terei o prazer de posta-la neste blog e será mantido a autoria.

Desde já agradeço a todos pelas visitas e desejo bons estudos.

Thiago Campos
(srthiago@hotmail.com)

quarta-feira, 20 de fevereiro de 2013

Exemplo de código Java utilizando herança e vetores

Crie o um sisteminha que realize as operações de adicionar, excluir, localizar e imprimir para o professor e aluno segundo os criterios abaixos: (Utilizando vetor e herança)
  • Professor: nome; matricula; endereco; especialidade; curso;
  • Aluno: nome; matricula; endereco; notas (vetor de notas);

Código Java
//Aluno; Thiago Campos
//Data: 18.02.13


/*
 * CLASSE PAI
 */

/**
 *
 * @author Thiago
 */

public class Pessoa {
    //Variaveis
    private String nome;
    private String endereco;
    private int matricula;
   
    //Construtor
    public Pessoa(int matricula, String nome, String endereco){
        this.nome = nome;
        this.endereco = endereco;
        this.matricula = matricula;
    }
   
    //Geteres e seteres
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
   
    public int getMatricula(){
        return matricula;
    }
    public void setMatricula(int matricula){
        this.matricula = matricula;
    }
   
    //equals
    public boolean equals(Object obj){
        return this.matricula == ((Pessoa)obj).getMatricula();
    }  
} //Fim da classe

/*
 * CLASSE FILHA
 */

/**
 *
 * @author Thiago
 */

public class Professor extends Pessoa{
    //variaveis
    private String especialidade;
    private String curso;
   
    //Construtor
    public Professor(int matricula, String nome, String endereco, String especialidade, String curso){
        super(matricula, nome, endereco); //informo que esses paramentros vão para o pai
        this.especialidade = especialidade;
        this.curso = curso;
    }
   
    //geteres e seteres
    public String getEspecialidade() {
        return especialidade;
    }
    public void setEspecialidade(String especialidade) {
        this.especialidade = especialidade;
    }
    public String getCurso() {
        return curso;
    }
    public void setCurso(String curso) {
        this.curso = curso;
    }
} //fim da classe Professor
/*
 * CLASSE FILHA
 */

/**
 *
 * @author Thiago
 */

public class Aluno extends Pessoa{
    //variaveis
    private float[] notas = new float[2]; //intanciar
   
    //construtor
    public Aluno(int matricula, String nome, String endereco, float[] notas){
        super(matricula, nome, endereco); //chamando as qualidades do Pai
        //receber as notas
        for(int i=0; i<2; i++){
            this.notas[i]= notas[i];
        } //fim do for 
       
    } //fim do construtor
   
    //geteres e seteres
    public float[] getNotas() {
        return notas;
    }
    public void setNotas(float[] notas) {
        this.notas = notas;
    }
   
} //Fim da classe Aluno
/*
 * CLASSE DOS MÉTODOS DO PROFESSOR
 */

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

public class Aula2MP {
    private final int k = 100; //criando uma constate para ser utilizada nos Arrays
    private int posProf= 0; //posicao a ser oculpado no Array Professor
   
    //Variaveis relacionadas ao Professor
    private int[] profMat = new int[k]; //instanciando os Arrays
    private String[] profNom = new String[k];
    private String[] profEnd = new String[k];
    private String[] especialidade = new String[k];
    private String[] curso = new String[k];
   
    /**
     * Metodo que insere um novo professor no Array
     * @param matricula
     * @param nome
     * @param endereco
     * @param especialidade
     * @param curso
     */

    public void inserirProfessor(int matricula, String nome, String endereco, String especialidade, String curso){
        if(posProf < k){
            this.profMat[this.posProf] = matricula;
            this.profNom[this.posProf] = nome;
            this.profEnd[this.posProf] = endereco;
            this.especialidade[this.posProf] = especialidade;
            this.curso[this.posProf] = curso;
            this.posProf++;
        } else {
            JOptionPane.showMessageDialog(null, "As vagas ja se encerraram.");
        }
    } //fim do metodo inserir Professor
    /**
     * Metodo criado para remmover alunos do cadastro
     * @param matricula
     * @return
     */

    public String removerProf(int matricula) {
        //criação de variaveis temporarias
        int objMat = matricula;
        String objNom = null;
        String objEnd = null;
        String objEsp = null;
        String objCur = null;
       
        int pos = posicaoProf(matricula); //esta variavel guarda a posição do cadastro no vetor
       
        if (pos >= 0){ //se a posição retornada for >= a zero, ele guarda os dados que serão apagados
            objMat = this.profMat[posProf];
            objNom = this.profNom[posProf];
            objEnd = this.profEnd[posProf];
            objEsp = this.especialidade[posProf];
            objCur = this.curso[posProf];
           
            //o for vai deslocar os dados para esquerda, preenchendo os espaçõs vazios
            for (int i=pos; i<this.posProf-1;i++){
                this.profMat[i] = this.profMat[i+1];
                this.profNom[i] = this.profNom[i+1];
                this.profEnd[i] = this.profEnd[i+1];
                this.especialidade[i] = this.especialidade[i+1];
                this.curso[i] = this.curso[i+1];
            } //fim do for
           
            //estes comandos vão apagar os dados da ultima posição uma vez que houve deslocamento
            this.profMat[this.posProf-1] = 0;
            this.profNom[this.posProf-1] = null;
            this.profEnd[this.posProf-1] = null;
            this.especialidade[this.posProf-1] = null;
            this.curso[this.posProf-1] = null;
            this.posProf--;
           
            return objNom; //vai retornar o nome do aluno
        } else {
            System.out.println("Professor não encontrado!!!");           
            return null;
        }
    } //fim do metodo apagar
  
    /**
     * Imprimie a lista de alunos em ordem de matricul.
     */

        public void imprima() {
        this.ordenarProf();
        for (int i = 0; i < posProf; i++) {
            System.out.println("Matricula: " + profMat[i]
                    + " | Nome: " + profNom[i]
                    + " | Endereço: " + profEnd[i]
                    + " | Especialidade: " + especialidade[i]
                    + " | Curso: " + curso[i]);
        } //fim do for
    } //fim do metodo imprima
    /**
     * Metodo que vai identificar a posição da ultima entrada
     * @param matricula
     * @return
     */

    private int posicaoProf(int matricula){
        for (int i = 0; i < this.posProf; i++){
            if (matricula == this.profMat[i]){
                return i;
            }
        } //fim do for
       
        System.out.println("Professor não encontrado!!!");
        return -1; //retornando -1
    } //fim do metodo posicao
   
    private void ordenarProf(){
        quick_sort(profMat, profNom, profEnd, especialidade,curso, 0, posProf-1);
    } //fim do metodo ordenar professor
   
   
    /**
     * Variaveis do metodo quick_sort
     * @param m - matricula do prof
     * @param n - nome do prof
     * @param e - endereço do prof
     * @param s - especialidade do prof
     * @param c - curso do prof
     * @param ini - inicio do vetor
     * @param fim - fim do vetor
     */

    private void quick_sort(int[] m, String[] n, String[] e, String[] s, String[] c, int ini, int fim){
        int meio;
       
        if(ini <fim){
            meio = partition(m, n, e, s, c, ini, fim);
            quick_sort(m, n, e, s, c, ini, meio);
            quick_sort(m, n, e, s, c, meio +1, ini);
        }
    } //fim do metodo quick_sort
   
    /**
     * Variaveis do metodo quick_sort
     * @param m - matricula do prof
     * @param n - nome do prof
     * @param e - endereço do prof
     * @param s - especialidade do prof
     * @param c - curso do prof
     * @param ini - inicio do vetor
     * @param fim - fim do vetor
     * @return
     */

    private int partition(int[] m, String[] n, String[] e, String[] s, String[] c, int ini, int fim) {
        int topo, i, pivoM;
        String pivoN, pivoE, pivoS, pivoC;
        pivoM = m[ini];
        pivoN = n[ini];
        pivoE = e[ini];
        pivoS = s[ini];
        pivoC = c[ini];
        topo = ini;
        for (i = ini + 1; i <= fim; i++) {
            if (m[i] < pivoM) {
                m[topo] = m[i];
                n[topo] = n[i];
                e[topo] = e[i];
                s[topo] = s[i];
                c[topo] = c[i];
                m[i] = m[topo + 1];
                n[i] = n[topo + 1];
                e[i] = e[topo + 1];
                s[i] = s[topo + 1];
                c[i] = c[topo + 1];
                topo++;
            } //fim do if        
        } //fim do for
        m[topo] = pivoM;
        n[topo] = pivoN;
        e[topo] = pivoE;
        s[topo] = pivoS;
        c[topo] = pivoC;
        return topo;
    } //fim do metodo
   
} //fim da classe

/*
 * CLASSE DOS MÉTODOS DO ALUNO
 */

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

public class Aula2MA {
    private final int k = 100; //criando uma constate para ser utilizada nos Arrays
    private int posAlu= 0; //posicao a ser oculpado no Array Aluno
   
    //Variaveis relacionadas ao aluno
    private int[] alunoMat = new int[k]; //instanciando os Arrays
    private String[] alunoNom = new String[k];
    private String[] alunoEnd = new String[k];
    private float[] nota1 = new float[k];
    private float[] nota2 = new float[k];
   
    /**
     * Metodo que insere um novo aluno no Array
     * @param matricula
     * @param nome
     * @param endereco
     * @param nota1
     * @param nota2
     */

    public void inserirAluno(int matricula, String nome, String endereco, float nota1, float nota2){
        if(posAlu < k){
            this.alunoMat[this.posAlu] = matricula;
            this.alunoNom[this.posAlu] = nome;
            this.alunoEnd[this.posAlu] = endereco;
            this.nota1[this.posAlu] = nota1;
            this.nota2[this.posAlu] = nota2;
            this.posAlu++; //informo que a posição foi oculpada e passo para a seguinte
           
        } else {
            JOptionPane.showMessageDialog(null, "As vagas ja se encerraram.");
        }
    } //fim do metodo inserirAluno
  
    /**
     * Metodo criado para remmover alunos do cadastro
     * @param matricula
     * @return
     */

    public String removerAluno(int matricula){
        //criação de variaveis temporarias
        int objMat = matricula;
        String objNom = null;
        String objEnd = null;
        float objN1 = 0;
        float objN2 = 0;
       
        int pos = posicaoAlu(matricula); //esta variavel guarda a posição do cadastro no vetor
       
        if (pos >= 0){ //se a posição retornada for >= a zero, ele guarda os dados que serão apagados
            objMat = this.alunoMat[posAlu];
            objNom = this.alunoNom[posAlu];
            objEnd = this.alunoEnd[posAlu];
            objN1 = this.nota1[posAlu];
            objN2 = this.nota2[posAlu];
           
            //o for vai deslocar os dados para esquerda, preenchendo os espaçõs vazios
            for (int i=pos; i<this.posAlu-1;i++){
                this.alunoMat[i] = this.alunoMat[i+1];
                this.alunoNom[i] = this.alunoNom[i+1];
                this.alunoEnd[i] = this.alunoEnd[i+1];
                this.nota1[i] = this.nota1[i+1];
                this.nota2[i] = this.nota2[i+1];
            } //fim do for
           
            //estes comandos vão apagar os dados da ultima posição uma vez que houve deslocamento

            this.alunoMat[this.posAlu-1] = 0;
            this.alunoNom[this.posAlu-1] = null;
            this.alunoEnd[this.posAlu-1] = null;
            this.nota1[this.posAlu-1] = 0;
            this.nota2[this.posAlu-1] = 0;
            this.posAlu--;
           
            return objNom; //vai retornar o nome do aluno
        } else {
            System.out.println("Aluno não encontrado!!!");           
            return null;
        }
    } //fim do metodo apagar
   
    /**
     * Imprimie a lista de alunos em ordem de matricul.
     */

        public void imprima() {
        this.ordenarAlu();
        for (int i = 0; i < posAlu; i++) {
            System.out.println("Matricula: " + alunoMat[i]
                    + " | Nome: " + alunoNom[i]
                    + " | Endereço: " + alunoEnd[i]
                    + " | Especialidade: " + nota1[i]
                    + " | Curso: " + nota2[i]);
        } //fim do for
    } //fim do metodo imprima
       
    /**
     * Metodo que retorna a posição de oculpada
     * @param matricula
     * @return
     */

    private int posicaoAlu(int matricula){
        for (int i = 0; i < this.posAlu; i++){
            if (matricula == this.alunoMat[i]){
                return i;
            }
        } //fim do for
       
        JOptionPane.showMessageDialog(null, "Aluno não encontrado!!!");
        return -1; //retornando -1
    } //fim do metodo posicao    
   
    private void ordenarAlu(){
        quick_sort(alunoMat, alunoNom, alunoEnd, nota1, nota2, 0, posAlu-1);
    } //fim do metodo ordenar alunos
   
    /**
     * Variaveis do metodo quick_sort
     * @param m - matricula do aluno
     * @param n - nome do aluno
     * @param e - endereço do aluno
     * @param s - especialidade do aluno
     * @param c - curso do aluno
     * @param ini - inicio do vetor
     * @param fim - fim do vetor
     */      
  
  private void quick_sort(int[] m, String[] n, String[] e, float[] nota1, float[] nota2, int ini, int fim){
        int meio;
       
        if(ini < fim){
            meio = partition(m, n, e, nota1, nota2, ini, fim);
            quick_sort(m, n, e,  nota1, nota2, ini, meio);
            quick_sort(m, n, e,  nota1, nota2, meio+1, ini);
        }
    } //fim do metodo quick_sort
    private int partition(int[] m, String[] n, String[] e, float[] n1, float[] n2, int ini, int fim) {
        int topo, i, pivoM;
        String pivoN, pivoE;
        float pivoN1, pivoN2; //pivo ref as notas
        pivoM = m[ini];
        pivoN = n[ini];
        pivoE = e[ini];
        pivoN1 = n1[ini];
        pivoN2 = n2[ini];
        topo = ini;
        for (i = ini + 1; i <= fim; i++) {
            if (m[i] < pivoM) {
                m[topo] = m[i];
                n[topo] = n[i];
                e[topo] = e[i];
                n1[topo] = n1[i];
                n2[topo] = n2[i];
                m[i] = m[topo + 1];
                n[i] = n[topo + 1];
                e[i] = e[topo + 1];
                n1[i] = n1[topo + 1];
                n2[i] = n2[topo + 1];
                topo++;
            } //fim do if       
        } //fim do for
        m[topo] = pivoM;
        n[topo] = pivoN;
        e[topo] = pivoE;
        n1[topo] = pivoN1;
        n2[topo] = pivoN2;
        return topo;
    } //fim do metodo
   
} //fim da classe

/*
 * CLASSE EXECUTORA - CLASSE DO MAIN
 */


/**
 *
 * @author Thiago
 */

public class Main {
    public static void main(String[] args){
        //variaveis
        Aula2MP uniRN = new Aula2MP();
        Aula2MA uniRNA = new Aula2MA();
       
        uniRN.inserirProfessor(21, "Alexandre Luiz", "Av. Abel Cabral", "Java", "BSI");
        uniRN.inserirProfessor(1, "Luiz Damasceno", "Eng. Roberto Freire", "Algebra Linear", "Matematica");
        uniRN.inserirProfessor(41, "Joseane Sobral", "Rua do fim do canto", "Algoritimo", "BSI");
        uniRN.inserirProfessor(3, "Kaio Graco", "Rua das Pricesas", "Legislação", "Direito");
       
        uniRNA.inserirAluno(12, "Thiago Campos", "Rua Hercules", 10, 9);
        uniRNA.inserirAluno(1, "Luiz Carlos", "Rua D. Pedro II", 7, 8);
        uniRNA.inserirAluno(41, "Monica Silva", "Rua do Bosque", 6, 5);
        uniRNA.inserirAluno(3, "Rafael Soares", "Av, das Palmeiras", 8, 10);
       
        System.out.println("Uni-RN: RELAÇÃO DE ALUNOS");
        uniRNA.imprima();
        uniRNA.removerAluno(1);
        System.out.println("Uni-RN");
        uniRNA.imprima();
       
        System.out.println("===================================");
       
        System.out.println("Uni-RN: RELAÇÃO DE ALUNOS");
        uniRN.imprima();
        uniRN.removerProf(1);
        System.out.println("Uni-RN");
        uniRN.imprima();  
    } //Fim do main
} //fim da classe



sexta-feira, 15 de fevereiro de 2013

Uso do operador ternário condicional "?:".

Escreva um programa Java que permita determinar qual o valor máximo existente em um vetor do tipo float com 10 elementos. Utilize como estrutura de controle for.
 
Código Java
//Autor: Thiago Campos
//Data: 15.02.13


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

public class Vetor {
    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        // Declaração de variaveis
        float[] vetor = new float[10];
        float vetorMaior = 0;
       
        //inicializando o vetor
        vetor[0] = 2;
        vetor[1] = 3;
        vetor[2] = 8;
        vetor[3] = 5;
        vetor[4] = 1;
        vetor[5] = 2;
        vetor[6] = 4;
        vetor[7] = 9;
        vetor[8] = 7;
        vetor[9] = 0;
       
        //processamento
        vetorMaior = vetor[0];
        for (int i=0; i<vetor.length; i++){
            vetorMaior = vetorMaior > vetor[i] ? vetorMaior:vetor[i]; //outra forma de usar uma codição          
        } //fim do for
       
        //saida na janela
        JOptionPane.showMessageDialog(null, "O vetor máximo é: " + vetorMaior);
       
    } //fim do main
} //fim da classe