quarta-feira, 18 de janeiro de 2012

Exercícios 6 e 7 da lista de variáveis compostas

Pessoal aqui estão os dois algoritmos:


algoritmo " Exercicio 7"
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var
numeros:vetor[0..49] de inteiro
i,np,p:inteiro
inicio
// Seção de Comandos
para i de 0 ate 49 faca
   //numeros[i]<-i*i*3+3*i-2
     leia (numeros[i])
   //escreval(numeros[i])
fimpara
escreval("Digite um numero!")
leia(np)
p<-0
para i de 0 ate 49 faca
   se np=numeros[i] entao
      p<-i
   fimse
fimpara
se p<>0 entao
   escreval("O elemento ",np," encontra-se na posição: ",p)
senao
   escreval("O elemento ",np," não foi encontrado no vetor.")
fimse

fimalgoritmo



algoritmo " Exercicio 6 "
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var  resposta: vetor[0..19] de literal
i,rs,rn:inteiro

inicio
// Seção de Comandos
para i de 0 ate 19 faca
   leia (resposta[i])
fimpara
escreval ("A 9ª pessoa respondeu ",resposta[8])
rs<-0
rn<-0
para i de 0 ate 9 faca
   se resposta[i]="sim" entao
      rs<-rs+1
   fimse
fimpara
para i de 10 ate 19 faca
   se resposta[i]="nao" entao
      rn<-rn+1
   fimse
fimpara
escreval("Respostas das 10 primeiras sim= ",rs)
escreval("Respostas das 10 últimas   não= ",rn)
se rs>rn entao
   escreval("A quantidade de respostas sim foi maior")
senao
   se rs<rn entao
     escreval("A quantidade de respostas Não foi maior")
   senao
     escreval("A quantidade de respostas sim e não foram iguais.")
   fimse
fimse
fimalgoritmo

terça-feira, 17 de janeiro de 2012

Solução do Exercicio de logica 2 de arrays


algoritmo "listagem de pessoas"
// Função :
// Autor : JorgeFox
// Data : 17/01/2012
// Seção de Declarações
var
nome,sexo: vetor[0..4] de literal
idade: vetor[0..4] de inteiro
i:inteiro
inicio
// Entrada de Dados
i<-0
para i de 0 ate 4 faca
   escreval("Nome   : ")
   leia (nome[i])
   escreval("Sexo   : ")
   leia (sexo[i])
   escreval("Idade  : ")
   leia(idade[i])
   i<-i+1
fimpara
//processamento e saida
limpatela
escreva("------ idades maior que a primeira -----")
para i de 1 ate 4 faca
   se idade[0]<idade[i] entao
      escreval(nome[i]," - ",sexo[i]," - ",idade[i])
   fimse
fimpara
escreva("------ todos homens menores 21 anos -----")
para i de 1 ate 4 faca
   se (idade[i]<21) e (sexo[i]="M") entao
      escreval(nome[i])
   fimse
fimpara
escreva("------ todas mulheres--")
para i de 1 ate 4 faca
   se ( (sexo[i]="F") entao
      escreval(nome[i]," - ",sexo[i]," - ",idade[i])
   fimpara
fimalgoritmo

domingo, 15 de janeiro de 2012

Orientação a objetos

O termo Orientação a Objetos é um termo que nos últimos 16 ou 17 anos tem se tornado um sonho para uns e  um pesadelo para outros. De fato para mim inicialmente foi um pesadelo, porém não me deixei levar pelos mitos que me tentaram impor. Fui atrás das informações.
Programação orientada a objeto não é um termo muito novo apesar de recentemente ter uma maior procura. Podemos citar como linguagens orientadas a objeto:  C++, C♯, VB.NET, Java, Object Pascal, Objective-C, Python, SuperCollider, Ruby e Smalltalk (fonte wikkipedia).
Mas o que venha a ser um objeto? Abstraia você a respeito de algo do mundo real, por exemplo um Cliente. Deve se descrever todas as ações que um Cliente pode ter ou relacionamento que deva ter com outros seres do mundo real (objetos). A partir dessa descrição é necessário alimentar um programa chamado Classe que poderá ser chamado a qualquer momento, instância ou objeto. 
Abstração? É a forma de pensar em algo ou contexto que sem levar em relevância aspectos mais complexos de existência ou funcionamento.


Paradigma o que é? É o que todos nos estamos acostumados a fazer mas sem perceber usamos no nosso dia a dia, modelos. Todos nos temos um modelo de vida, um modelo de comportamento, um modelo de personalidade, enfim todos temos um modo de fazer as coisas. Em programação temos o paradigma Orientado a Objeto.
Para se programar orientado a objeto é necessário que seja compreendido como se expõe a lógica de programação, use um paradigma anterior chamado de programação estruturada ou Top Down. Porque digo isso? Dentro de cada comportamento que desejamos que um objeto tenha é necessário que escreva procedimentos simples ou que chame outras instâncias de classes(objetos qualificados).
Um programa orientado a objeto tem um programa principal que chamaremos de classe principal que fará a inicialização de outras classes na memoria do computador onde está executando. Toda classe principal tem um método chamado principal (main) que é executado todas as vezes que é inicializado na memória(instanciado). Por sua vez toda vez que uma classe é instanciada um método chamado CONSTRUTOR, é executado com o objetivo de alimentar os atributos da classe com o objetivo de criar o objeto. O seu comportamento depende de quanto a classe está qualificada ou seja, a quantidade e eficiência de comportamentos disponibilizados pela classe.
O método construtor sempre é criado vazio mesmo que o programado não o faça, pois haverá circunstâncias em que devemos criar um objeto vazio. Para a maioria dos FRAMEWORKS é essencial o uso de construtores vazios ou com vários parâmetros.
Porém, o uso desse paradigma depende do amadurecimento de estruturas mentais e de maneiras de programar, portanto, para aprender a programar OO é necessário ABSTRAIR.
Aguardem novos post referentes a programação orientada a objeto. Luzes!

Algoritimizado a Lógica.

Não é pretensão minha ser um exímio conhecedor do português e nem tão pouco um catedrático ao ponto de criar um neologismo. O termo Algoritimizando a Lógica me foi apresentado numa apostila de lógica da professora Vanessa, que hoje uso no Senai para os cursos do F.A.T, por sinal ótima no seu objetivo.
Quando pensamos em algo e sentimos a necessidade de expor nosso raciocínio encontramos dificuldades em expor nosso pensamento. 
Demonstrar é um atributo que poucas pessoas tem, mas que pode ser facilitado, pelo uso de uma ferramenta muito interessante, principalmente para nos programadores. 
Programadores usam uma linguagem própria que as vezes dificultam sua interlocução com o mundo externo, dai o temor nerd, ser aplicado a qualquer programador mais introvertido, risos.
Segundo a wikkipedia lógica é a arte da demonstração, mas demonstrar o funcionamento de um programa de computador não é uma tarefa muito simples. Principalmente para quem esta entrando nessa área agora. 
Sinto em minhas aulas que a dificuldade encontrada por parte dos alunos é o assombro que paira, quando o exercício é pensar. Pensar faz com que as pessoas enfrente desafios no que se refere a abstração sobre o funcionamento dos desafios que lhes são apresentados.  Sem essa prerrogativa fica difícil expor nossos pensamentos no que se refere à lógica.

Usar o algoritmo faz com que possamos expressar o que pensamos em termos de funcionamento de um programa com poucas palavras. As palavras usadas nos algoritmos são chamadas de PALAVRAS CHAVES e o seu conhecimento é fundamental para que o aluno entenda o que se propõe frente a um determinado desafio.
Todo algoritmo deve ser analisado e extraído do problema proposto, toda informação do que se pretende alcançar, ou seja, com os dados de entrada desejamos obter uma nova informação. Além disso devemos pensar em um algoritmo de um velho, mas eficiente, processo de três etapas: Entrada ==> Processamento ==>Saída. Obter os dados de entrada e achar uma formula de processa-los para obter a saída desejada é o único caminho a ser seguido para quem procura aprender a arte da lógica.
Espero ter trazido luzes para o seu conhecimento, te aguardo novamente aqui. Abraço a todos.

sexta-feira, 13 de janeiro de 2012

Algoritmo para Calculo de Imposto - Exercicio 2

Oi pessoal
Aqui esta a correção do algoritmo da nossa aula de algoritmos.

algoritmo "CalculoImpostos"
// Função :
// Autor :JorgeFox
// Data : 13/01/2012
// Seção de Declarações
var
valor:real
inicio
// Seção de Comandos
escreval("Valor da venda ")
leia (valor)
escolha valor
   caso  0 ate 1200.00
      escreval("Isento")
   caso  1200.01 ate 5000.00
      escreval("Valor do imposto 10% R$",valor*0.1)
   caso  5000.01 ate 10000.00
      escreval("Valor do imposto 15% R$",valor*0.15)
   outrocaso
      escreval("Valores acima de R$10.000,00 20% = R$",valor*0.2)
fimescolha
fimalgoritmo

Lembre-se de usar o visualg que permite fazer o teste de mesa.
Até o proximo post.

domingo, 8 de janeiro de 2012

Servlet para logon

Oi pessoal,

Hoje vou mostrar uma classe do tipo Servlet que pode ser usada para validar um usuário em uma aplicação Web usando Java Server Pages(JSP).
Mas para isso vamos inicialmente criar um banco de dados chamado WebSistemaCR em MySql com uma tabela chamada Usuário e em seguida criamos a classe Usuario e UsuarioPU(unidade de persistência) usando Hibernate.
O arquivo login.jsp também será mostrado para que a demonstração fique completa.
Sugiro que você use o Netbeans para acompanhar este exemplo.
O script de criação da tabela no MySql é o seguinte:


Create Database WebSistemaCR;

CREATE TABLE  `usuario` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `senha` varchar(15) NOT NULL,
  `usuario` varchar(20) NOT NULL,
  PRIMARY KEY (`idUsuario`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

Classe Usuário gerada diretamente do NetBeans como uma classe de banco de dados:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Jorgefox
 */
@Entity
@Table(name = "usuario")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"),
    @NamedQuery(name = "Usuario.findByIdUsuario", query = "SELECT u FROM Usuario u WHERE u.idUsuario = :idUsuario"),
    @NamedQuery(name = "Usuario.findBySenha", query = "SELECT u FROM Usuario u WHERE u.senha = :senha"),
    @NamedQuery(name = "Usuario.findByUsuario", query = "SELECT u FROM Usuario u WHERE u.usuario = :usuario")})
public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idUsuario")
    private Integer idUsuario;
    @Basic(optional = false)
    @Column(name = "senha")
    private String senha;
    @Basic(optional = false)
    @Column(name = "usuario")
    private String usuario;

    public Usuario() {
    }

    public Usuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Usuario(Integer idUsuario, String senha, String usuario) {
        this.idUsuario = idUsuario;
        this.senha = senha;
        this.usuario = usuario;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUsuario != null ? idUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Beans.Usuario[ idUsuario=" + idUsuario + " ]";
    }
 
}


Agora vamos listar a classe UsuarioPU.

/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package Persistencia; 
/**
 *
 * @author jorgefox
 */
import JavaBeans.Usuario;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction; 
public class UsuarioPU extends Conexao { 
    Conexao cnx = new Conexao(); 
    public boolean salvar(Usuario us, boolean op) {
        try {
            Session ss = cnx.retornaSessao();
            Transaction ts = ss.beginTransaction();
            if (!op) {
                //significa que é uma inclusão e op=false.
                ss.save(us);
            } else {
                //significa que é uma atualização s op=true.
                ss.update(us);
            }
            ts.commit();
            ss.close();
            return true;
        } catch (HibernateException e) {
            System.out.println("Deu erro de conexão!" +
e.getMessage());
            return false;
        }
    } 
    public List<Usuario> pesquisa(String sql) {
        List<Usuario> lu = null;
        try {
            System.out.println("Dentro da pesquisa : " + sql);
            Session ss = cnx.retornaSessao();
            lu = ss.createQuery(sql).list();
            if (lu.isEmpty()) {
                System.out.println("Não há clientes para esta
consulta.");
            }
            ss.close();
            return lu;
        } catch (HibernateException e) {
            System.out.println("Erro com Hibernate : " +
e.getMessage());
            return lu;
        }
    } 
    public Usuario getUsuario(int id) {
        String sql = "from Usuario where id=" + id;
        List<Usuario> lu = pesquisa(sql);
        if (lu.isEmpty()) {
            return new Usuario();
        } else {
            Iterator ilu = lu.listIterator();
            return (Usuario) ilu.next();
        }
    } 
    public boolean deletar(Usuario us) {
        try {
            Session ss = cnx.retornaSessao();
            Transaction ts = ss.beginTransaction();
            ss.delete(us);
            ts.commit();
            ss.close();
            return true;
        } catch (HibernateException e) {
            System.out.println("Erro provocado por : " +
e.getMessage());
            return false;
        }
    } 

E aqui vai o Servlet

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import JavaBeans.Usuario;
import Persistencia.UsuarioPU;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
/**
 *
 * @author jorgefox
 */
public class ServletValida extends HttpServlet { 
    /**
     * Processes requests for both HTTP <code>GET</code> and
<code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            //TODO output your page here
            String usuario = request.getParameter("usuario");
            String senha = request.getParameter("senha");
            String[] escolha = request.getParameterValues("escolha");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ServletValida</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1> Olá " + usuario + " acabei de chegar do
formulario. </h1>");
            out.println("<h2> Eu sei a sua senha e ela é : " + senha +
" </h2>");
            for (int i = 0; i < escolha.length; i++) {
                out.println("escolha[" + i + "]= " + escolha[i]);
            }
            out.println("</body>");
            out.println("</html>"); 
        } finally {
            out.close();
        }
    } 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet
methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    } 
    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        // processRequest(request, response);
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String usuario = request.getParameter("usuario");
        String senha = request.getParameter("senha");
        String[] escolha = request.getParameterValues("escolha");
        if (usuario.isEmpty() || senha.isEmpty()) {
            out.println("Usuario ou senha vazios.");
        } else {
            Usuario us;
            List<Usuario> lu;
            UsuarioPU uspu = new UsuarioPU();
            lu = uspu.pesquisa("from Usuario where usuario='" +
usuario + "'");
            Iterator ilu = lu.listIterator();
            us = (Usuario) ilu.next();
            if (us.getUsuario().equalsIgnoreCase(usuario) &&
us.getSenha().equalsIgnoreCase(senha)) {
                out.println("Ok pode passar");
            } else {
                out.println("Usuario ou senha invalidos.");
            }
        }
    } 
    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }

Caso você tenha dificuldades com o código entre em contato comigo pelo blog. Agora vou deixar o codigo jsp para fazer o teste.

<%-- 
    Document   : login
    Created on : 26/12/2011, 16:51:27
    Author     : stella
--%>


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form method="post" action="autentica">
            <table align="center">
                <tr>
                    <td>Usuario</td>
                    <td><input type="text" name="usuario"/></td>
                </tr>
                <tr>
                    <td>Senha</td>
                    <td><input type="password" name="senha"/></td>
                </tr>
                <tr>
                    <td><input type="submit" name="acao" value="Logon"/></td>
                    <td></td>
                </tr>
            </table>
        </form>
    </body>
</html>

Espero ter contribuído de alguma forma para seu aprendizado em java.








domingo, 1 de janeiro de 2012

Continuando o código Java para DropdownList

No post anterior eu criei um array que define os elementos do dropdownlist. Neste novo conteúdo vamos escrever o código que serve tanto para inclusão ou alteração.
Supondo que sua página é escrito em JSP fica assim:
arquivo: cadastraCliente.jsp


<%@page import="javabeans.Cliente"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Decide</title>
        <script type="text/javascript" src="scripts/rotinas.js"></script>
    </head>
    <body>
        <%
            Cliente cl = (Cliente) request.getAttribute("Cliente");

        //int id=Integer.parseInt(request.getParameter("id"));
        //Cliente cli=(new Cliente().getCliente(id));
        // array de estados
            String[][] estados = {{"AC", "Acre"},
                {"AL", "Alagoas"},
                {"AP", "Amapá"},
                {"AM", "Amazonas"},
                {"BA", "Bahia"},
                {"CE", "Ceará"},
                {"DF", "Distrito Federal"},
                {"ES", "Espirito Santo"},
                {"GO", "Goiás"},
                {"MA", "Maranhão"},
                {"MT", "Mato Grosso"},
                {"MS", "Mato Grosso do Sul"},
                {"MG", "Minas Gerais"},
                {"PA", "Pará"},
                {"PB", "Paraiba"},
                {"PE", "Pernambuco"},
                {"PI", "Piauí"},
                {"PR", "Paraná"},
                {"RJ", "Rio de Janeiro"},
                {"RN", "Rio Grande do Norte"},
                {"RS", "Rio Grande do Sul"},
                {"RO", "Rondônia"},
                {"RR", "Roraima"},
                {"SC", "Santa Catarina"},
                {"SE", "Sergipe"},
                {"SP", "São Paulo"},
                {"TO", "Tocantins"}};
        %>
        <form method="post" action="gravaCliente.jsp">
            <table align="center">
                <tr>
                    <td>Id</td>
                    <td>

                        <input type="hidden" name="id" value="00"/>
                    </td>
                </tr>
                <tr>
                    <td>Nome</td>
                    <td><input  type="text" name="nome" value="<%=cl.getNome()%>"/></td>                  
                </tr>
                <tr>
                    <td>Endereço</td>
                    <td><input  type="text" name="endereco" value="<%=cl.getEndereco()%>"/></td>                  
                </tr>
                <tr>
                    <td>Telefone</td>
                    <td><input  type="text" name="telefone" value="<%=cl.getTelefone()%>"/></td>                  
                </tr>
                <tr>
                    <td>Cidade</td>
                    <td><input  type="text" name="cidade" value="<%=cl.getCidade()%>"/></td>                  
                </tr>
                <tr>
                    <td>Estado</td>
                    <td><select name="estado" >
                            <%
                                for (int i = 0; i < 27; i++) {
                                    if (cl.getEstado().equalsIgnoreCase(estados[i][0])) {
                            %>
                            <option value="<%=estados[i][0]%>" selected><%=estados[i][1]%></option>
                            <%} else {%>
                            <option value="<%=estados[i][0]%>"><%=estados[i][1]%></option>
                            <%}%>
                            <%}%> </select></td>                  
                </tr>
                <tr>
                    <td>Cep</td>
                    <td><input  type="text" name="cep" value="<%=cl.getCep()%>"/></td>                  
                </tr>
                <tr>
                    <td>C.P.F</td>
                    <td><input  type="text" name="cpf" value="<%=cl.getCpf()%>" /></td>                  
                </tr>
                <tr>
                    <td><a href="ListaClientes.jsp">Lista de Clientes</a></td>
                    <td><input type="Submit" name="salvar" value="Gravar"/></td>
                    <td></td>                  
                </tr>
            </table>

    </body>
</html>

É isso ai pessoal, no próximo post espero contribuir mais para o entendimento das linguagens de programação.
Abraço e até lá.