domingo, 29 de julho de 2012

História do Java



Introdução o que é Java

     Muitos associam Java com uma maneira de deixar suas páginas da web mais bonitas, com efeitos especiais, ou para fazer pequenos formulários na web.

O que associa as empresas ao Java?

     Já iremos neste ponto, mas antes vãos ver o motivo pelo qual as empresas fogem das outras linguagem:

Quais são os seus maiores problemas quando está programando?

programando?
Ponteiros?
Liberar memória?
Organização?
Falta de bibliotecas boas?
Ter de reescrever parte do código ao mudar de sistema operacional?
Custo de usar a tecnologia?

     Java tenta amenizar esses problemas. Alguns desses objetivos foram atingidos muito tempo atrás, porque, antes do Java 1.0 sair, a ideia é que a linguagem fosse usada em pequenos dispositivos, como TVs, aspiradores, liquidificadores e outros. Apesar disso a linguagem teve seu lançamento mirando o uso dela nos clientes web (browser) para rodar pequenas aplicações (applets). Hoje em dia esse não é mais o foco da linguagem.

     O Java é desenvolvido e mantido pela Sun (http://www.sun.com) e seu site principal é o http://java.sun.com . (Java.com e um site mais institucional, voltado ao consumidor de produtos e usuários leigos, não desenvolvedores).

A história do Java

     A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. O time  voltou com a ideia de criar um interpretador (já era uma máquina virtual, veremos o que é isso mais a frente) para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.

     A ideia não deu certo, tentaram fechar diversos contratos com grandes fabricantes de eletrônicos como a Panasonic, mas na o houve êxito devido ao conflito de interesses. Hoje sabemos que o Java domina o mercado de aplicações para celulares, porém parece que em 1994 ainda era muito cedo.

     Com o advento da web, a Sun percebeu que poderia utilizar a ideia criada em 1992 para poder rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browser, e com isso seria grande vantagem pode programar numa única linguagem, independente da plataforma, foi aí que o Java 1.0 foi lançado: focado em deixar o browser não apenas um cliente burro, fazendo com que ele possa também realizar operações, não apenas renderizar HTML.

     Sabemos que hoje os applets realmente não são o foco da Sun. É engraçado que a tecnologia Java nasceu com um objetivo em mente, foi lançado com outro, mas no final decolou mesmo no desenvolvimento de aplicações do lado do servidor.

Calculadora Dark Pink, C#


Está é uma calculadora desenvolvida em C#, Dark Pink completa e funcional. Estou usando o Visual Studio 2010 e, estarei usando ele em todos os Post relacionados a C#, mas se estiver outro de sua preferência fica ao seu critério.

Então vamos ao que interessa esta calculadora é voltada para o público feminino do blog que tenho certeza que é quase zero, se não for zero, mas vamos lá, embaixo esta o código para o Design da calculadora e o que faz efetuar os cálculos, tem alguns bugs, mas não deixa de ser interessante.

                        
                              Imagem da calculadora


 
                                      
                               Código do design


<Window x:Class="Calculadora.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="389" Width="283" Background="White" WindowStyle="ThreeDBorderWindow">
    <Grid Width="264" Height="351">
        <Grid.Background>
            <ImageBrush ImageSource="/WpfApplication1;component/Images/Pink_by_DaniieeLaaa.jpggirl_.jpg" />
        </Grid.Background>
        <Button Content="7" Height="28" HorizontalAlignment="Left" Margin="12,130,0,0" Name="sete" VerticalAlignment="Top" Width="37" Click="sete_Click" />
        <TextBox Height="41" HorizontalAlignment="Right" Margin="0,49,43,0" Name="display" VerticalAlignment="Top" Width="209" FontFamily="Arial" FontSize="28" HorizontalContentAlignment="Right" Background="#3EFF0000" />
        <Button Content="8" Height="28" HorizontalAlignment="Left" Margin="55,130,0,0" Name="oito" VerticalAlignment="Top" Width="37" Click="oito_Click" />
        <Button Content="9" Height="28" HorizontalAlignment="Left" Margin="98,130,0,0" Name="nove" VerticalAlignment="Top" Width="37" Click="nove_Click" />
        <Button Content="4" Height="28" HorizontalAlignment="Left" Margin="12,164,0,0" Name="quatro" VerticalAlignment="Top" Width="37" Click="quatro_Click" />
        <Button Content="5" Height="28" HorizontalAlignment="Left" Margin="55,164,0,0" Name="cinco" VerticalAlignment="Top" Width="37" Click="cinco_Click" />
        <Button Content="6" Height="28" HorizontalAlignment="Left" Margin="98,164,0,0" Name="seis" VerticalAlignment="Top" Width="37" Click="seis_Click" />
        <Button Content="1" Height="28" HorizontalAlignment="Left" Margin="12,198,0,0" Name="um" VerticalAlignment="Top" Width="37" Click="um_Click" />
        <Button Content="2" Height="28" HorizontalAlignment="Left" Margin="55,0,0,125" Name="dois" VerticalAlignment="Bottom" Width="37" Click="dois_Click" />
        <Button Content="3" Height="28" HorizontalAlignment="Left" Margin="98,198,0,0" Name="tres" VerticalAlignment="Top" Width="37" Click="tres_Click" />
        <Button Content="0" Height="28" HorizontalAlignment="Left" Margin="12,232,0,0" Name="zero" VerticalAlignment="Top" Width="80" Click="zero_Click" />
        <Button Content="," HorizontalAlignment="Left" Margin="98,232,0,91" Name="virgula" Width="37" FontSize="18" Click="virgula_Click" />
        <Button Content="+" Height="28" HorizontalAlignment="Left" Margin="141,232,0,0" Name="soma" VerticalAlignment="Top" Width="37" Click="soma_Click" />
        <Button Content="-" Height="28" HorizontalAlignment="Left" Margin="141,198,0,0" Name="subtracao" VerticalAlignment="Top" Width="37" Click="subtracao_Click" />
        <Button Content="*" Height="28" HorizontalAlignment="Left" Margin="141,0,0,159" Name="multiplicacao" VerticalAlignment="Bottom" Width="37" Click="multiplicacao_Click" />
        <Button Content="/" Height="28" HorizontalAlignment="Left" Margin="141,130,0,0" Name="divisao" VerticalAlignment="Top" Width="37" Click="divisao_Click" />
        <Button Content="=" Height="60" HorizontalAlignment="Left" Margin="184,200,0,0" Name="igual" VerticalAlignment="Top" Width="37" Click="igual_Click" />
        <Button Content="1/x" Height="28" HorizontalAlignment="Left" Margin="184,0,0,159" Name="inverso" VerticalAlignment="Bottom" Width="37" Click="inverso_Click" />
        <Button Content="%" Height="28" HorizontalAlignment="Left" Margin="184,130,0,0" Name="percente" VerticalAlignment="Top" Width="37" />
        <Button Content="&lt;--" Height="28" HorizontalAlignment="Left" Margin="12,96,0,0" Name="voltar" VerticalAlignment="Top" Width="37" Click="voltar_Click" />
        <Button Content="CE" Height="28" HorizontalAlignment="Left" Margin="55,96,0,0" Name="button1" VerticalAlignment="Top" Width="37" Click="button1_Click" />
        <Button Content="C" Height="28" HorizontalAlignment="Left" Margin="98,96,0,0" Name="button2" VerticalAlignment="Top" Width="37" Click="button2_Click" />
        <Button Height="28" HorizontalAlignment="Right" Margin="0,96,43,0" Name="raiz" VerticalAlignment="Top" Width="37" Content="√" Click="raiz_Click" />
        <Button Height="28" HorizontalAlignment="Left" Margin="141,96,0,0" Name="maisoumenos" VerticalAlignment="Top" Width="37" Content="±" Click="maisoumenos_Click" />
        <Rectangle Height="30" HorizontalAlignment="Left" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="268" Fill="#52000000" Margin="-4,-1,0,0" />
        <Rectangle Height="36" HorizontalAlignment="Left" Margin="0,315,0,0" Name="rectangle2" Stroke="Black" VerticalAlignment="Top" Width="265" Fill="#7C000000" />
        <Label Content="Dionatan Alves Vieira" Height="28" HorizontalAlignment="Left" Margin="12,323,0,0" Name="label1" VerticalAlignment="Top" Width="211" Foreground="White" />
        <Label Content="Calculadora C#" Height="28" HorizontalAlignment="Left" Margin="80,0,0,0" Name="label2" VerticalAlignment="Top" Width="98" Foreground="White" />
    </Grid>
</Window>


Código Para Efetuar os Cálculos


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Calculadora
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        double acumula = 0;
        string operacao = "";
        public MainWindow()
        {
            InitializeComponent();
        }

        private void sete_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "7";
        }

        private void zero_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "0";
        }

        private void um_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "1";
        }

        private void dois_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "2";
        }

        private void tres_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "3";
        }

        private void quatro_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "4";
        }

        private void cinco_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "5";
        }

        private void seis_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "6";
        }

        private void oito_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "8";
        }

        private void nove_Click(object sender, RoutedEventArgs e)
        {
            display.Text += "9";
        }

        private void soma_Click(object sender, RoutedEventArgs e)
        {
          
            if (operacao == "*" || operacao=="-" || operacao == "/")
            {
                operacao = "+";
            }
            else
            {
                acumula += double.Parse(display.Text);
                display.Text = "";
                operacao = "+";
            }

        }

        private void igual_Click(object sender, RoutedEventArgs e)
        {
            if (operacao == "+")
            {
                acumula += double.Parse(display.Text);
                display.Text = acumula.ToString();
            }
            else if (operacao == "-")
            {
                acumula -= double.Parse(display.Text);
                display.Text = acumula.ToString();
            }
            else if (operacao=="*"){
                acumula *= double.Parse(display.Text);
                display.Text = acumula.ToString();
            }
            else if (operacao == "/") {
                if (double.Parse(display.Text) != 0)
                {
                    acumula /= double.Parse(display.Text);
                    display.Text = acumula.ToString();
                }
                else {
                    display.Text = "Dividindo por zero";
                }
            }
        }

        private void virgula_Click(object sender, RoutedEventArgs e)
        {
            display.Text += ",";
        }

        private void subtracao_Click(object sender, RoutedEventArgs e)
        {
            if (operacao == "*" || operacao == "+" || operacao == "/")
            {
                operacao = "-";
            else {
                acumula = double.Parse(display.Text);
                display.Text = "";
                operacao = "-";
            }
        }

        private void multiplicacao_Click(object sender, RoutedEventArgs e)
        {
            if (operacao == "-" || operacao == "+" || operacao == "/")
            {
                operacao = "*";
            }
            else
            {
                acumula = double.Parse(display.Text);
                display.Text = "";
                operacao = "*";
            }
        }

        private void divisao_Click(object sender, RoutedEventArgs e)
        {
            if (operacao == "*" || operacao == "+" || operacao == "-")
            {
                operacao = "/";
            }
            else
            {
            acumula = double.Parse(display.Text);
            display.Text = "";
            operacao = "/";}
        }

        private void voltar_Click(object sender, RoutedEventArgs e)
        {
            int x = display.Text.Length-1;
            if (x >= 0)
            {
                display.Text = display.Text.Substring(0, x);
            }
        }

        private void inverso_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                double d = double.Parse(display.Text);
                if (d == 0)
                {
                    display.Text = "Dividindo por zero!!!";
                }
                else
                {
                    d = 1 / d;
                    display.Text = d.ToString();
                }
            }
            catch (Exception Ex) {
              
                for (int i = 0; i < 100000; i++)
                {
                    display.Text = "Para com isso pisicopata. ";
                    // em espera.
                }
                display.Text = "";

            }
        }

        private void raiz_Click(object sender, RoutedEventArgs e)
        {
            double x = double.Parse(display.Text);
            if (x < 0)
            {
                display.Text = "Este valor não é valido.";
            }
            else {
                x = Math.Sqrt(x);
                display.Text = x.ToString();
            }

        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            acumula = 0;
            display.Text = "";
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            display.Text = "";
            operacao = "";
        }

        private void maisoumenos_Click(object sender, RoutedEventArgs e)
        {
            double x = double.Parse(display.Text)*(-1);
            display.Text = x.ToString();
        }
    }
}