quinta-feira, 7 de janeiro de 2021

Usando funções em Excel

 Como já falamos em sala de aula, funções são conjuntos de operações que são reunidas em uma só instrução, podendo ou não passar algum parâmetro que influenciara no resultado.

Quando "chamamos" uma função passamos uma informação que irá trazer um resultado. No excel para "chamarmos" uma função usamos o sinal de igualdade "=" antes do nome da mesma.

O Excel possui um conjunto enorme de funções as quais estão categorizadas da seguinte forma:

  • Funções Financeiras
  • Funções de Data e Hora
  • Funções de textos
  • Funções Estatísticas
  • Funções Lógicas
  • Funções de Pesquisa e Referência
  • Funções Matemáticas e trigonométricas
  • Funções de Engenharia
  • Funções de Banco de dados
  • Funções para Web
  • Funções de informação
  • Funções de compatibilidade
  • Funções definidas pelo usuário.
A partir desse momento  explicaremos algumas dessas categorias no intuito de passar uma noção a respeito do uso das funções dentro do excel.

Funções Financeiras

Quem nunca ouviu falar calculo de juros e atualização monetária? O uso destas funções são essenciais  no dia a dia de instituições financeiras, ao calcular o valor de uma prestação, juros, juros acumulados, tempo de retorno de um investimento. Podemos fazer isso usando as funções existentes no Excel.

Função Valor Presente

Esta função calcula o valor atual de um investimento. O seu resultado pode mostrar ao usuário do Excel se vale a pena fazer um investimento ou não.

Para calcular o valor presente são necessários algumas informações adicionais, que aqui chamaremos de parâmetros ou argumentos. São eles:

  • Taxa de juros ou simplesmente Taxa,  é um índice de remuneração do capital alocado ou emprestado a alguém ou instituição;
  • Numero de períodos ou simplesmente NPER que indica quanto tempo levará para ser pago tal investimento;
  • Valor do Pagamento, prestação, ou simplesmente PGTO;
  • VALOR FUTURO, aqui na função Valor Presente significa a meta a ser alcançada com a serie de pagamentos realizadas ao longo do tempo ou NPER.
  • Tipo que indica ser o pagamento ser após uma unidade de tempo, comumente usamos mês como unidade, ou qualquer outra unidade negociada entre as partes. No Excel o valor zero(0) significa que será aguardado um prazo de 30 dias ou qualquer outro período para honrar o compromisso com o pagamento. O valor 1 significa que o pagamento é antecipado, ou seja no momento da transação já ocorre um pagamento. Assim como no aluguel fazemos o pagamento para usar o imóvel.
Para que possamos informar estes valores na função Valor Presente ou simplesmente VP fazermos assim: 

=VP(taxa;nper;pgto;[vf],[tipo])

Onde houver colchetes, significa que o parâmetro é opcional, mas a sua interpretação fica por conta do usuário.

Para exemplificar o uso da função VP vamos pensar na seguinte situação:

Quanto e devo ter hoje no bolso para fazer um investimento para obter um capital de R$ 20.000,00 dentro de 3 anos considerando que a instituição me pagará uma taxa de juros de 1,5% ao mês?

Veja que neste caso informamos na pergunta os seguintes parâmetros: a meta, o valor futuro que desejo obter, R$ 20.000,00 o prazo, 3 anos ou 36 meses uma vez que informamos que o juros é de 1,5% ao mês. E não informamos o valor do pagamento e nem o tipo de pagamento.

Desta forma abra o Excel e crie uma planilha como a mostrada na figura abaixo.





Veja que acrescentamos alguns "mimos" na tabela. Em C5 colocamos uma função SE para especificar se será em 30 dias ou antecipado. A função ficou assim : =SE(B5=0;"após 30 dias";"antecipado").

No calculo do "Valor presente do investimento" ou em B7 a função VP ficou assim:

=VP(B1;B2;B3B4;B5)

Há uma observação a respeito do resultado, observe que ficou vermelho e negativo, isso significa que você terá que retirar do seu bolso o valor para fazer o investimento.

No campo "Lucro após 3 anos" ou seja em B9 tem a seguinte fórmula =B4+B7, calma eu explico, o valor negativo será usado de forma que quando somado com B4 tornará uma subtração, matemática básica. Este resultado é o lucro após 3 anos de investimento.

No campo "Lucro por ano" tem uma fórmula em B10, = B9/3.

Já o campo "% de lucro por ano" ficará assim : =B10/B7 é o nosso referencial de partida do investimento.

Exercício

1) Aproveite para calcular se vale a pena depositar na caderneta de poupança, que paga algo em torno de 0,5% de juros ao mês e que levará aproximadamente 36 meses esse investimento para obter R$ 50.000,00?

Resposta : -R$ 41,782,25, caso tenha obtido outro valor revise seus dados. E ai vale a pena?

Função Valor Futuro

Esta função calcula o valor de um investimento no futuro, seguindo uma série de pagamentos e taxa de juros constante. Podemos empregar para verificar se vale a pena efetuar o investimento segundo a serie de pagamentos e após este período fazer o resgate.

Conforme já detalhamos anteriormente precisaremos dos seguintes parâmetros:

  • Taxa
  • NPer
  • Pgto
  • VP
  • Tipo
Vamos considerar a seguinte situação:

Uma instituição financeira te convida para participar de um fundo de investimento no qual você fará pagamentos mensais de R$ 600,00 durante 6 anos e promete uma uma taxa de juros anual de 10%. Qual será o valor deste investimento após 6 anos?




Exercícios

1) Considere uma instituição financeira que observou que você tem R$ 20.000,00 parado na sua conta. Fazem a seguinte proposta: Deposite a quantia parada, e contribua mensalmente durante 2 anos com R$ 500,00 em uma conta de investimento que pagará 10% ao ano. Após essas contribuições e o valor depositado no inicio da aplicação qual será o total a ser resgatado?
Resposta: R$ 37.631,28
2) No exercício anterior, caso você não deposite nada, qual será o valor?
3) Ainda no mesmo exercício, agora considere os depósitos mensais e não informe o valor presente de R$ 20.000,00. Qual o total?

Função PGTO

A função PGTO calculará o valor de um pagamento mensal de um empréstimo, investimento ou prestação de algo adquirido ao longo de um período Nper, sendo atualizada por uma TAXA, considerando um valor presente VP, valor futuro VF, podendo ser de maneira antecipada ou não.
Como podemos perceber os parâmetros da função PGTO são:
  • TAXA
  • NPER
  • VP
  • VF
  • TIPO
Desta forma a função terá seguinte sintaxe ou forma de apresentar:
=PGTO(TAXA,NPER,VP,[VF],[TIPO]) 

Exemplo 
Suponha que você quer aplicar em um fundo de capitalização que pagará 0,95% ao mês durante 2 anos e que você deseja resgatar no final R$10.000,00. Qual será o valor da mensalidade no período?


Exercícios

1) Considere que você comprou um iPhone a prestação em 12 vezes com juros de 0,7% ao mês, e que o seu valor a vista seria R$ 5.000,00. Qual será o valor da prestação?
2) Considere agora que você dará R$1.000,00 de entrada. Qual o valor da prestação?
3) E se você der a metade do valor a vista de entrada?

Função ÉPGTO.

Ao contrario do que sugere o nome da função, ela não trata de valores de parcelas. Esta função trata do valor dos juros pagos sobre uma parcela de um investimento ou prestação. É útil quando queremos saber qual o valor de juros que incide em uma determinada parcela em algum momento do parcelamento.

Exemplo:

Considere a compra de um automóvel e que seu valor presente seja de R$35.000,00 com uma taxa de juros de 1,3% ao mês durante 36 meses. Queremos saber o valor dos juros na prestação numero 5. Qual o valor dos juros?
 


Como podemos perceber o valor dos juros na prestação de numero 5 será de R$ 391,80, caso queria conferir fica um exercício de calcular o valor da prestação e depois subtrair o valor dos juros para sabermos o valor da amortização.

Exercícios

1) Considere os dados do exemplo anterior e calcule os juros pagos na 10ª parcela?
2) O que notou de diferente em relação a parcela numero 5?
3) Qual o percentual de juros em relação ao valor da prestação?














 





quarta-feira, 23 de maio de 2012

Tela para relembrar a senha através de e-mail

Esta tela de login é uma extensão do exemplo anterior, criado especificamente para facilitar a compreensão dos meus alunos. Ao utilizar dois campos de e-mail, eliminamos a necessidade de criar uma senha fictícia, permitindo que os alunos foquem na lógica de validação e envio dos dados. Essa abordagem também demonstra como um formulário pode ser adaptado para diferentes cenários.

Tela de Logon em Asp.Net e C#(sharp)

Caso você precise autorizar os usuários acessar aplicações em Asp.Net e C#, acredito, que esse código poderá ajuda-lo no desenvolvimento.
Inicialmente, criamos uma tabela no banco de dados conforme o script em MySql abaixo.

Após esta tabela ser criada, passamos então a criação da tela em asp.net, o nome da tela : logon.asp.

Coloque também o código em C#(Sharp) logon.asp.cs


Valeu pessoal grande abraço.

terça-feira, 22 de maio de 2012

Fazendo um Crud usando C# e Asp.Net

O significado de CRUD é Create, Read, Updade and Delete que são as funções básicas de um sistema de gerenciamento de informações. Neste POST mostrarei como fazer a partir de um exemplo simples em sala de aula. Inicialmente devemos criar um Banco de dados chamado Stonehenge e em seguida procedemos a criação das telas em C# com seu respectivo código. Veja o código de criação no quadro abaixo: Agora que já criamos o banco, vamos proceder na criação do código em Asp.Net. Abra o Visual Studio, crie um projeto do tipo WebSite e crie um formulario usando a opção clicando no botão direito do mouse sobre o projeto. troque o código Asp.net pelo que esta no quadro a seguir. O nome deste arquivo deve se chamar listarClientes.asp Como podem notar em uma das linhas retornadas pelo código do arquivo listarClientes.aspx o usuário deverá clicar no nome do cliente e o mesmo será desviado para uma tela chamada alterarCliente.aspx, cujo código pode ser visto abaixo: Juntamente com esse código devemos ter os códigos em C# que dará a funcionalidade que desejamos. Veja a seguir : Agora só falta o código que faz a atualização no banco de dados.

sexta-feira, 18 de maio de 2012

Formulario para cadastro de Artigo ou Nóticias

Olá Pessoal,

Estou mais uma vez disponibilizando um formulário em C#(Sharp) para cadastramento de Artigos ou Noticias em um formulário Web.
Espero que gostem e utilizem ele.
Abraço e até o próximo post.
Não esqueçam também deste código que deve ter o mesmo nome, porém coma extensão aspx.cs.

segunda-feira, 14 de maio de 2012

Tela de cadastro de clientes com list box

Olá Pessoal

Neste artigo mostrarei como fazer uma tela(protótipo) para cadastramento de clientes e seleção de assuntos de interesse do cliente. É apenas uma demonstração do nosso curso de C# onde demonstramos a manipulação de ListBox em um WebForm.
Acompanhe o código abaixo e veja como ficou.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <style type="text/css">
        .style2
        {
            width: 96px;
            height: 34px;
        }
        .style3
        {
            height: 34px;
        }
        .style4
        {
            width: 123px;
        }
        .style5
        {
            width: 157px;
            text-align: center;
        }
        .style6
        {
            text-align: center;
        }
        .style7
        {
            text-align: left;
        }
    </style>
</head>
<form id="form1" runat="server">
<table align="center">
    <tr>
        <td class="style6" colspan="2">
            Cadastro de Clientes</td>
    </tr>
    <tr>
        <td class="style6">
            &nbsp;</td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label1" runat="server" Text="Nome"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="nome" runat="server" Columns="50" Font-Size="Medium"
                Height="28px" MaxLength="50" Width="431px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label2" runat="server" Text="Endereço"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="endereco" runat="server" Columns="50" Font-Size="Medium"
                Height="28px" MaxLength="50" Width="431px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label3" runat="server" Text="Telefone"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="telefone" runat="server" Columns="14" Font-Size="Medium"
                MaxLength="14"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label4" runat="server" Text="Bairro"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="Bairro" runat="server" Columns="30" Font-Size="Medium"
                Height="22px" MaxLength="30" Width="261px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label5" runat="server" Text="Cidade"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="cidade" runat="server" Columns="30" Font-Size="Medium"
                Height="22px" MaxLength="30" Width="261px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label6" runat="server" Text="Estado"></asp:Label>
        </td>
        <td>
            <asp:DropDownList ID="estado" runat="server">
                <asp:ListItem Value="AC">Acre</asp:ListItem>
                <asp:ListItem Value="AL">Alagoas</asp:ListItem>
                <asp:ListItem Value="AP">Amapá</asp:ListItem>
                <asp:ListItem Value="AM">Amazonas</asp:ListItem>
                <asp:ListItem Value="BA">Bahia</asp:ListItem>
                <asp:ListItem Value="CE">Ceará</asp:ListItem>
                <asp:ListItem Value="DF">Distrito Federal</asp:ListItem>
                <asp:ListItem Value="ES">Espirito Santo</asp:ListItem>
                <asp:ListItem Selected="True" Value="GO">Goiás</asp:ListItem>
                <asp:ListItem Value="MA">Maranhão</asp:ListItem>
                <asp:ListItem Value="MT">Mato Grosso </asp:ListItem>
                <asp:ListItem Value="MS">Mato Groso do Sul</asp:ListItem>
                <asp:ListItem Value="MG">Minas Gerais</asp:ListItem>
                <asp:ListItem Value="PA">Pará</asp:ListItem>
                <asp:ListItem Value="PB">Paraíba</asp:ListItem>
                <asp:ListItem Value="PR">Paraná</asp:ListItem>
                <asp:ListItem Value="PE">Pernambuco</asp:ListItem>
                <asp:ListItem Value="PI">Piauí</asp:ListItem>
                <asp:ListItem Value="RJ">Rio de Janeiro</asp:ListItem>
                <asp:ListItem Value="RN">Rio Grande do Norte</asp:ListItem>
                <asp:ListItem Value="RS">Rio Grande do Sul</asp:ListItem>
                <asp:ListItem Value="RO">Rondônia</asp:ListItem>
                <asp:ListItem Value="RR">Roraíma</asp:ListItem>
                <asp:ListItem Value="SP">São Paulo</asp:ListItem>
                <asp:ListItem Value="SC">Santa Catarina</asp:ListItem>
                <asp:ListItem Value="SE">Sergipe </asp:ListItem>
                <asp:ListItem Value="TO">Tocantins</asp:ListItem>
            </asp:DropDownList>
        </td>
    </tr>
    <tr>
        <td class="style7">
            <asp:Label ID="Label7" runat="server" Text="CPF"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="cpf" runat="server" Columns="14" MaxLength="14"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="style6">
            &nbsp;</td>
        <td>
            <table style="width:100%;">
                <tr>
                    <td class="style4" style="text-align: center">
                        <asp:Label ID="Label9" runat="server" Text="Assuntos"></asp:Label>
                    </td>
                    <td class="style5">
                        <asp:Label ID="Label11" runat="server" Width="20px"></asp:Label>
                    </td>
                    <td style="text-align: center">
                        <asp:Label ID="Label10" runat="server" Text="Prediletos"/>
                    </td>
                </tr>
                <tr>
                    <td class="style4" rowspan="4">
                       <asp:ListBox id="assuntos" runat="server" Height="116px" Width="121px">
                            <asp:ListItem Value="inf">Informatica</asp:ListItem>
                            <asp:ListItem Value="Aut">Automóvel</asp:ListItem>
                            <asp:ListItem Value="Cul">Cultura</asp:ListItem>
                            <asp:ListItem Value="Cui">Culinaria</asp:ListItem>
                            <asp:ListItem Value="Tre">Treinamento</asp:ListItem>
                            <asp:ListItem Value="Fin">Finanças</asp:ListItem>
                            <asp:ListItem Value="Rel">Religião </asp:ListItem>
                            <asp:ListItem Value="Pol">Política</asp:ListItem>
                        </asp:ListBox>
                    </td>
                    <td class="style5">
                        <asp:Button ID="tudoL" runat="server" Text="&lt;&lt;" onclick="tudoL_Click"
                            ToolTip="Limpar todos os assuntos prediletos e voltar para assuntos" />
                    </td>
                    <td rowspan="4">
                        <asp:ListBox ID="prediletos" runat="server" Height="119px" Width="132px"
                            SelectionMode="Multiple">
                        </asp:ListBox>
                    </td>
                </tr>
                <tr>
                    <td class="style5">
                        <asp:Button ID="tudoR" runat="server" Text="&gt;&gt;" onclick="tudoR_Click" />
                    </td>
                </tr>
                <tr>
                    <td class="style5">
                        <asp:Button ID="RtoL" runat="server" Text=" &lt; " onclick="RtoL_Click" />
                    </td>
                </tr>
                <tr>
                    <td class="style5">
                        <asp:Button ID="LtoR" runat="server" onclick="LtoR_click" Text=" &gt; " />
                    </td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td class="style2">
        </td>
        <td class="style3">
            <asp:Button ID="Button1" runat="server" onclick="limparCampos" Text="Limpar" />
            <asp:Label ID="Label8" runat="server" Height="17px" Width="304px">                                  
            </asp:Label>
            <asp:Button ID="Salvar" runat="server" Text="Salvar" />
        </td>
    </tr>
</table>
&nbsp;&nbsp;&nbsp;
</form>
<script language="C#" runat="server">
 

</script>
</html>

agora no arquivo Default.aspx.cs coloque.







Espero que tenham gostado deste código e desafio você a fazer o restante do código. Abraço a todos.
Jorge Albernaz Martins.'.

quinta-feira, 1 de março de 2012

Cadastro de notas de alunos usando Matriz Bi dimensional - JAVA


package Aula05;

import javax.swing.JOptionPane;

public class CalculaMediaAlunoBiDimensional  {
    public static void main(String[] args) {
        String[] nome=new String[10];
        double[][] notas=new double[10][5];
        //faz se a entrada de dados
        for (int i = 0; i < 3; i++) {
            nome[i]=JOptionPane.showInputDialog("Nome ");
            notas[i][0]=Double.parseDouble(JOptionPane.showInputDialog("Nota 1 "));
            notas[i][1]=Double.parseDouble(JOptionPane.showInputDialog("Nota 2 "));
            notas[i][2]=Double.parseDouble(JOptionPane.showInputDialog("Nota 3 "));
            notas[i][3]=Double.parseDouble(JOptionPane.showInputDialog("Nota 4 "));
            notas[i][4]=(notas[i][0]+notas[i][1]+notas[i][2]+notas[i][3])/4;
        }
        for (int i = 0; i < 3; i++) {
            System.out.println("Nome : "+nome[i]);
            System.out.println("Nota 1 "+notas[i][0]);
            System.out.println("Nota 2 "+notas[i][1]);
            System.out.println("Nota 3 "+notas[i][2]);
            System.out.println("Nota 4 "+notas[i][3]);          
            System.out.println("Media "+notas[i][4]);
        }      
    }
}


   

quarta-feira, 29 de fevereiro de 2012

Trabalhando com variaveis homogeneas bi dimensionais.


import javax.swing.JOptionPane;
public class UsandoMatriz {
    public static void main(String[] args) {
       int lin = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a quantidade   de linha da Matriz."));
       int col = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a quantidade   de coluna da Matriz."));
       int matriz[][] = new int[lin][col];
      
   for (int i=0; i<lin; i++)
         for (int j=0; j<col; j++)
             matriz[i][j] = Integer.parseInt(JOptionPane.showInputDialog(   null,"Digite o valor da posição["+(i+1)+(j+1)+"]","MATRIZ",1));
      
  System.out.println("Matriz Digitada.");
      
  for (int i=0; i<lin; i++){
  System.out.println();
         for (int j=0; j<col; j++)
             System.out.print(matriz[i][j] + "\t");
       }
    }
}

terça-feira, 28 de fevereiro de 2012

Exercicio em sala de aula


public class Quadrado {
   public static void main (String args[ ])     {
         if (args.length < 1)  {
               System.out.println("Informe um numero menor ou igual 50");
               System.out.println("e sera calculado o quadrado dos numeros");
               System.out.println("entre 1 e o numero informado\n");
               System.exit(0);
         }
         // conversao de String para inteiro (outra maneira !)
         Integer x = new Integer(args[0]);
         int a = x.intValue();
         if (a > 50)   {
               System.out.println("O numero deve ser menor que 50");
               System.exit(0);
         }
         for (int i=1;  i<=a;  i++)
                System.out.println ("O quadrado de " + i + " = " + i*i);
   }
}

terça-feira, 21 de fevereiro de 2012

Como ganhar dinheiro com programas de computador?

Explorando Nichos de Mercado no Desenvolvimento de Programas de Computador

Quando falamos em desenvolvimento de software, é comum pensar em aplicações voltadas para o comércio. Sem dúvida, esse é um nicho lucrativo, mas também altamente competitivo. Grandes empresas, como SAP, TOTVS, MICROSIGA e SANKHYA, já dominam o mercado corporativo de soluções para grandes e médias empresas. Portanto, para um desenvolvedor ou empreendedor iniciante, competir nesse terreno pode ser desafiador. Mas, como sempre digo aos meus alunos: o segredo para ganhar dinheiro não é fazer o que a maioria faz, mas fazer algo único, bem feito e com qualidade.

Escolha Bem Seus Clientes e Documente Seus Projetos

Antes de iniciar qualquer projeto, selecione bem seus clientes. Uma boa referência pode se transformar em uma grande dor de cabeça se as expectativas não estiverem claras desde o início. Comece com pequenos trabalhos, garantindo constância e produtividade. Mais importante ainda, documente cada etapa do processo. Durante o desenvolvimento, é comum que clientes solicitem alterações ou novas funcionalidades que podem comprometer prazos e custos. Ter tudo documentado facilita justificar mudanças de escopo, prazos adicionais e ajustes de valor.

Além disso, demonstre como o sistema que você está desenvolvendo pode trazer ganhos financeiros ao cliente. Infelizmente, muitos empresários ainda priorizam investimentos visíveis, como veículos de luxo, em vez de soluções tecnológicas que podem gerar lucros significativos no médio e longo prazo.

Linguagem de Programação: Eficiência e Domínio São Cruciais

A escolha da linguagem de programação pode fazer toda a diferença. Linguagens eficientes e que você domina são essenciais para garantir produtividade e qualidade. Se você for atuar como pessoa jurídica, opte por linguagens com ampla mão de obra disponível no mercado, como Java ou Python. Já como pessoa física, uma boa estratégia pode ser focar em linguagens menos exploradas, mas ainda requisitadas, como COBOL, que, devido à base instalada de sistemas legados, ainda oferece excelentes oportunidades.

Java e COBOL, juntos, podem ser um diferencial competitivo. Muitas grandes empresas estão migrando seus sistemas em COBOL para ambientes Web usando Java, o que cria uma demanda crescente por profissionais com essa combinação de habilidades.

Aplicativos Mobile: Oportunidades no Crescimento da Mobilidade

Outro nicho promissor é o desenvolvimento de aplicativos para dispositivos móveis. Com o crescimento do Android, que se consolidou como um dos sistemas operacionais mais utilizados, há inúmeras histórias de desenvolvedores que lucraram com apps simples, vendidos por valores acessíveis e com alta taxa de downloads.

Os usuários de smartphones trocam de dispositivos com frequência e buscam cada vez mais soluções que facilitem o dia a dia. Aplicativos que ajudam na gestão financeira, como lembretes de contas a pagar e a receber, ou que otimizam deslocamentos, como sistemas de rotas alternativas com integração a GPS e câmeras de trânsito, são exemplos de produtos com grande potencial de mercado.

Identifique Necessidades do Século 21

O mundo da programação está cheio de oportunidades, muitas delas ainda inexploradas. Para se destacar, é essencial buscar capacitação contínua, identificar necessidades humanas contemporâneas e pensar além do óbvio. Como diz Alvin Toffler em A Terceira Onda, o mercado de trabalho está mudando radicalmente, e a capacidade de inovar será um diferencial crucial.

Invista em criatividade, planejamento e na construção de soluções tecnológicas que realmente façam a diferença na vida das pessoas. Lembre-se: as portas do mercado de tecnologia estão abertas para aqueles que conseguem enxergar além.

quarta-feira, 15 de fevereiro de 2012

Um calculadora com bugs, mas boa de aprender C#


Como Criar uma Calculadora em C# Semelhante à do Windows: Tutorial Completo

Se você está aprendendo C# e deseja criar algo prático e funcional, desenvolver uma calculadora semelhante à do Windows é um excelente exercício. Neste tutorial, mostrarei um exemplo funcional de uma calculadora com interface gráfica, utilizando o WPF (Windows Presentation Foundation). Este projeto é perfeito para quem quer aprimorar habilidades em desenvolvimento de aplicações desktop.


O Código

Abaixo estão as implementações para os arquivos necessários:

1. MainWindow.xaml

Este é o arquivo de layout, responsável pela interface da calculadora. Incluímos botões para números, operações básicas e outras funcionalidades, como raiz quadrada e inversão de sinal.

<Window x:Class="Calculadora.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Calculadora" Height="404" Width="426" Background="#FFEBE5E5" WindowStyle="ThreeDBorderWindow">

    <Grid Width="358">

        <Button Content="7" Height="28" HorizontalAlignment="Left" Margin="91,127,0,0" Name="sete" VerticalAlignment="Top" Width="37" Click="sete_Click" />

        <TextBox Height="53" HorizontalAlignment="Right" Margin="0,34,54,0" Name="display" VerticalAlignment="Top" Width="213" FontFamily="Arial" FontSize="28" HorizontalContentAlignment="Right" />

        <!-- Botões para números, operações e funcionalidades -->

    </Grid>

</Window>

2. MainWindow.xaml.cs

Aqui está a lógica por trás da calculadora. Cada botão chama um método que realiza a operação correspondente. Por exemplo, ao clicar no botão "7", o número é exibido no display.

using System;

using System.Windows;


namespace Calculadora

{

    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 soma_Click(object sender, RoutedEventArgs e)

        {

            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();

            }

        }

        // Outros métodos...

    }

}


terça-feira, 14 de fevereiro de 2012

Listagem de Produtos em C#


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Arrayprodutos
{
    class Program
    {
        static void Main(string[] args)
        {
            string[,] produto = new string[10, 2];
            double[,] estoque = new double[10, 2];
            for (int i = 0; i < 10; i++)
            {
                Console.Write("Nome ....: ");
                produto[i, 0] = Console.ReadLine();
                Console.Write("Unidade..: ");
                produto[i, 1] = Console.ReadLine();
                Console.Write("Pr. Unit.: ");
                estoque[i, 0] = double.Parse(Console.ReadLine());
                Console.Write("Qtd Estoq: ");
                estoque[i, 1] = double.Parse(Console.ReadLine());                
            }
            for (int i = 0; i < 10; i++)
            {
                Console.Write("Nome ....: "+produto[i, 0]);
                Console.Write("Total Est. : "+(estoque[i, 0]*estoque[i, 1]));
            }
        }
    }
}

Correção exercicio de C# para calculo das médias.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace estudantes
{
    class medias
    {
        static void Main(string[] args)
        {
            string[] nome = new string[10];
            double[,] notas = new double[10, 5];
            string[] colunas = new string[6]
            {"\nnome","nota-1","nota-2","nota-3","nota-4","média" };
            for (int i = 0; i < 10; i++)
            {
                Console.Write(colunas[0]);
                nome[i] = Console.ReadLine();
                for (int k = 0; k < 4; k++)
                {
                    Console.Write(colunas[k + 1]);
                    notas[i, k] = double.Parse(Console.ReadLine());
                    notas[i, 4] += notas[i, k] / 4;
                }
            }
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(colunas[0]+nome[i]);
                for (int k = 0; k < 5; k++)
                {
                    Console.WriteLine(colunas[k + 1] + notas[i, k]);
                }
                if (notas[i, 4] >= 7) {
                    Console.WriteLine("Situação : Aprovado");
                }
                else if (notas[i, 4] >= 5 && notas[i, 4] < 7)
                {
                    Console.WriteLine("Situação : Prova final");
                }
                else {
                    Console.WriteLine("Situação : Reprovado");
                }              
            }
        }
    }
}

Demonstração de Array bi dimensional

O programa abaixo escrito na linguagem C#(C SHARP ) demonstra como usar um ARRAY bi dimensional. Definimos dois Arrays, sendo um bi dimensional e um VETOR. o ARRAY tabela define a estrutura de armazenamento e o colunas define o rotulo de cada coluna.
Forte abraço e até a próxima.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArraysBiDimensionais
{
    class Entradados
    {
        static void Main(string[] args)
        {
            string[,] tabela = new string[10, 3];
            string[] colunas=new string[3]
                     {"Produto : ","Unidade : ","Valor  : "};
            for (int i = 0; i < 10; i++)
            {
                for (int k = 0; k < 3; k++)
                {
                    Console.Write(colunas[k]);
                    tabela[i, k] = Console.ReadLine();
                }
            }
            for (int k = 0; k < 3; k++)
            {
                Console.Write(colunas[k] + "***** ");
            }
            Console.WriteLine(" ");
            for (int i = 0; i < 10; i++)
            {
                for (int k = 0; k < 3; k++)
                {
                    Console.Write(tabela[i, k] + "***** ");
                }
                Console.WriteLine(" ");            
            }
            Console.ReadKey();
        }
    }
}

segunda-feira, 13 de fevereiro de 2012

Calculo das raizes da equação do 2º Grau em C#


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Matematica
{
    class Program
    {
        static void Main(string[] args)
        {
            double a, b, c, d, x1, x2;
            Console.WriteLine("Equação 2º Grau");
            Console.Write(" Valor de a : ");
            a = double.Parse(Console.ReadLine());

            Console.Write(" Valor de b : ");
            b = double.Parse(Console.ReadLine());

            Console.Write(" Valor de c : ");
            c = double.Parse(Console.ReadLine());
            Console.WriteLine(a + "x² + " + b + "x + " + c + "=0");
            d = b * b - 4 * a * c;
            if (d > 0) {
                Console.WriteLine("Existem duas raizes reais");
                x1 = (-b + Math.Sqrt(d)) / (2 * a);
                x2 = (-b - Math.Sqrt(d)) / (2 * a);
                Console.WriteLine("x'= " + x1);
                Console.WriteLine("x''= " + x2);
            }
            else if (d == 0)
            {
                Console.WriteLine("Existem duas raizes reais e iguais.");
                x1 = -b / (a * 2);
                Console.WriteLine("x'=x''= " + x1);
            }
            else {
                Console.WriteLine("Nao existem raizes reais");
            }
            Console.ReadKey();

        }
    }
}

terça-feira, 7 de fevereiro de 2012

Programar é um exercício de paciência e disciplina.

Há quem diga que programar é fácil. É uma tese difícil de ser dita como verdadeira. Não quero desmotivar meus leitores quanto menos meus alunos, mas programar é uma arte disciplinar.
Quando programamos colocamos nosso cérebro no modo de pensamento em que devemos abstrair, sincronizar, interagir, testar, observar comportamentos e claro fazer alguns cálculos. Toda essa sinergia de pensamento pode ser abalada por um simples tocar de telefone, uma campainha do MSN e a sua filha pedindo lhe atenção para ver uma cachorrinho brincando. Claro que não podemos ficar ligados 24 horas no ar pensando no problema. Brincar com o filho ou a filha faz parte da vida. 
Quando estamos programando também somos professores pois estamos ensinando uma máquina fazer o que desejamos. Se devemos agir como professores então devemos planejar corretamente como vamos abordar o problema para obter o comportamento correto.  Além disso devemos pensar na capacidade de processamento e também qual é a saída desejada. Por essa razão devemos ter cuidados especiais neste momento pois o computador faz tudo o que pedimos ao pé da letra. Ter lucidez ao fazer uma linha de código é um exercício diário de paciência e disciplina. Acredito que as duas andam juntas. 
A paciência é o ato de acompanhar passo a passo o que cada linha de código retorna. A disciplina usamos quando observamos o comportamento do programa. Captar o que um programa faz as vezes não é uma tarefa simples pois os códigos podem ocultar informações que nos enganam quando a procedência e como foram gerados levando a conclusões errôneas e dai um tempo perdido pode vir acontecer. O pensamento matemático o ajudará na eliminação de código redundante e também alcançar a eficiência de desempenho.  Desta forma colocada podemos afirmar que paciência e disciplina andam juntas nesta arte pois uma dará suporte a outra a medida que avançamos na construção de um código.



quinta-feira, 2 de fevereiro de 2012

COBOL? Nao morreu!

Muitas pessoas me perguntam:  Ainda hoje o COBOL é usado? Eu começo esse artigo repetindo um brincadeira dos profissionais que lidam com essa ferramenta: "Se houver um holocausto nuclear apenas duas coisas sobreviveriam, são elas, baratas e cobol.". Claro que há um grande absurdo nisso, mas essa discussão não seria frutífera aqui. Dizemos isso porque várias vezes falaram por ai que a linguagem estaria morta e que seria necessário migrar para outra linguagem, mas o que presenciei foi um ressurgimento da linguagem cada vez mais melhorada. Talvez no inicio dos anos 60 a CODASYL(Conference on Data Systems Languages) não tivesse essa pretensão. 
Hoje a linguagem de programação COBOL é bastante utilizada em diversos seguimentos, bancos, hotéis, supermercados e muitos outros estabelecimentos sejam comerciais ou governamentais. 
A migração de plataforma de banco de dados e de sistema operacional é uma opção hoje em dia quando  alguém que não tem experiência com a linguagem e quer mudar de sistema. Mas a confiabilidade em novo sistema pode trazer alguns transtornos para a organização e consequentemente afetam as suas operações no dia a dia. Estes transtornos trazem a antiga aplicação uma certa confiabilidade e estabilidade.
E isso faz o COBOL uma linguagem que vem atravessando mais de 50 anos como ferramenta de desenvolvimento de aplicações. Esta confiabilidade foi obtida através dos primeiros anos da linguagem, época em que houve um boooom na adoção de computadores e consequentemente a necessidade de desenvolver programas confiáveis  no começo dos anos 70 e 80, sendo reforçada pela inclusão dos PC's(personal Computers) introduzidos no começo dos anos 80. De la para cá tem se criado muitas linguagens de programação mas a migração as vezes não é bem sucedida. 
Mas a linguagem não ficou parada neste período, sendo atualizada varias vezes pelo CODASYL e por várias empresas que desenvolveram compiladores e também IDE(Ambiente de desenvolvimento Integrado) a fez manter atualizada com os paradigmas de programação atualmente em voga no mercado. Podemos destacar estes paradigmas como orientação a objeto e GUI (Graphical User Interfaces). 
Hoje o COBOL encontramos sistemas desenvolvidos para Windows 32 e 64 bits, ambiente Linux, Unix e claro não poderia deixar de citar, o Main Frame, bem como ferramentas de desenvolvimento de relatórios.
Você pode que trabalha na área ou esta entrando agora pode se perguntar, quem usa cobol para desenvolver, talvez pequenas e medias empresa não usem por serem muito novas em relação a idade do cobol mas empresas que sobreviveram aos últimos cinquenta anos, certamente adotou, adota ou mantém sistemas em COBOL. Os bancos e grandes corporações se utilizam destes sistemas. Talvez não esteja ao seu alcance se você estiver pensando em morar na sua cidade e trabalhar, mas estiver sintonizado com o mercado e tiver disponibilidade poderá ver essa tendência. Os dinossauros(nos programadores de quase 60 anos) estão se retirando e ainda há muitos sistemas por ai para dar manutenção ou desenvolver. Pense! Ganha dinheiro na área de informatica quem faz algo diferente da maioria.
Fiquem todos com Deus e um forte abraço a todos, obrigado.

quarta-feira, 1 de fevereiro de 2012

Listagem de clientes na tela com opção de editar.


       identification division.
       program-id. listaClientes.
       author. jorgefox.
       environment division.
         configuration section.
         input-output section.
           file-control.
             select clientes assign to "clientes.dat"
             organization is indexed
             access mode is dynamic
             record key is codigo
             alternate key is nome with duplicates
             file status is fs-clientes.
       data division.
         file section.
           fd clientes.
             01 registro-clientes.
                02 codigo              pic 9999.
                02 nome                pic x(50).
                02 data-nas.
                   03 dia-nas             pic 99.
                   03 mes-nas             pic 99.
                   03 ano-nas             pic 9999.
                02 telefone               pic x(30).
                02 endereco               pic x(50).
                02 numero                 pic 9(6).
                02 complemento            pic x(30).
                02 bairro                 pic x(30).
                02 cidade                 pic x(30).
                02 cep                    pic x(8).
                02 estado                 pic AA.
                02 email                  pic x(50).
       working-storage section.
          01 fs-clientes.
             02 fs-clientes-1            pic 9.
             02 fs-clientes-2            pic 9.
             02 fs-cliente-r redefines fs-clientes-2 pic 99 comp-x.
          77 opcao                       pic x value spaces.
          77 codigop                     pic 9999 values zeros.
          77 linha                       pic 9999 value 0902.
       procedure division.
       abertura.
         open input clientes
         if fs-clientes unequal zero then
            display erase
            display "Erro ao abrir clientes.dat" at 1010 fs-clientes
            accept opcao
            close clientes
            exit program
         else
         display "deu certo"
         accept opcao
         end-if
       .
       inicio.
         display erase
         display "Listagem de clientes" at 0330
         display "+------+----------------------------------------------
      -"----------------+-------+" at 0601
         display "|codigo|                         Nome Cliente
      -"                |Dt Nasc|" at 0701
         display "+------+----------------------------------------------
      -"----------------+-------+" at 0801
         move " " to nome
         start clientes key is not less nome
         if fs-clientes=00 then
            perform imprime
            display "Digite o codigo desejado [....]" at 2201
            accept codigop at 2227
            call "aplicacao" using codigop
            exit program
         else
            display "deu erro " fs-clientes
            accept opcao
         end-if
         close clientes
         exit program
       .
       imprime.
         read clientes next
         perform until fs-clientes<>00
            display codigo at linha
            add 8 to linha
            display nome at linha
            add 61 to linha
            display dia-nas at linha "/"
            add 3 to linha
            display mes-nas at linha "/"
            add 3 to linha
            display  ano-nas at linha
            subtract 76 from linha giving linha
            add 101 to linha
            read clientes next
         end-perform
       .

Como controlar erros de leitura e gravação em cobol

No COBOL há uma forma de fazer a verificação se um arquivo foi aberto corretamente. A principio isso acontece por que como o cobol usa arquivos do tipo texto para armazenar suas informações, e que neste caso, estão sujeitos a corrompimento por vírus ou abertura de forma ilegal.
Para ajudar nessa questão vou postar um link de pagina que o ajudará a determinar qual o problema com a file status.
http://supportline.microfocus.com/documentation/books/sx20books/fhscod.htm#s001
 Caso ocorra um erro busque nesta tabela os erros e suas causas.
[]s a todos