Excel VBA – segundo programa

excel

Para fechar esta série do segundo programa, vamos mostrá-lo no VBA do Excel.

Ao clicar no ícone Macros na seção Código da guia Desenvolvedor, escolha a macro Programa2 e clique no botão Executar.  Este é um procedimento de módulo que mostra o formulário frmPrograma2.

excel2_d

O nome do botão Iniciar é cmdCalcular e o procedimento associado a ele é cmdCalcular_Click. O clique (no botão esquerdo) do mouse no botão Iniciar (do formulário) é o evento que faz executar o código delimitado por Private Sub cmdCalcular_Click() e End Sub.

excel2_1

Compare esse código com aquele do post anterior, Visual BASIC – segundo programa.  Desta vez, optamos por usar a função InputBox (caixa de diálogo predefinida para entrada de dados), em vez do controle Caixa de Texto (TextBox).

excel2_2

Observe que o valor retornado por InputBox é texto (string) e, se entrarmos com números, uma conversão implícita ocorre.  Mas nem sempre!  Antes de atribuir o valor de entrada às variáveis n1 e n2, deveríamos realizar a conversão explícita através de alguma função (Int, CInt, Val… Sugiro testá-las como exercício).

Visual BASIC – segundo programa

visualbasic

Nos anos 90 o BASIC se tornou visual.  Neste exemplo foi usado o Visual BASIC 5.0 (de 1997!) rodando na máquina virtual do Windows XP, emulada no Oracle VM VirtualBox.

Observe a seguir o projeto da GUI (Interface Gráfica do Usuário) e o código na IDE (Ambiente de Desenvolvimento Integrado) do Visual BASIC.

vb5_2_1

E abaixo o programa em tempo de execução.

vb5_2_2

Enquanto a entrada dos dados é feita através de Caixas de Texto (TextBox) para os dois números, a título de exercício optamos por realizar a saída através de uma Caixa de Texto (TextBox) bloqueada para a soma, um Rótulo (Label) para o resto, e a função Caixa de Mensagem (MsgBox, caixa de diálogo predefinida) para o produto e a média.

Esse projeto é resumido em um arquivo de texto (form file) que define o formulário e os controles entre trechos delimitados por Begin e End, lembrando o arquivo xml do Android, mas  incluindo ao final o código (a listagem, sem números de linha, delimitada por Sub e End Sub).

form1

form2form3

Se você comparar o código em Visual BASIC com o mesmo código em outras linguagens de programação, muitas dúvidas serão quase automaticamente sanadas.  Duvida?

Dialetos do BASIC

Como vimos anteriormente, há diversos dialetos do BASIC. Neste post vamos mostrar nosso segundo programa em alguns deles.

  • Sinclair ZX81

Nesta versão do BASIC a declaração de variáveis é feita através da instrução LET.

As linhas são numeradas e não dá para colocar mais de uma instrução por linha.

zx81_2_1

Durante a execução do programa, a instrução INPUT lê a entrada do usuário, cujo valor é mostrado ao lado do cursor L (que aguarda sua digitação) no canto inferior esquerdo da tela.  O valor então é armazenado na variável informada na instrução.

zx81_2_2

  • MSX BASIC

No MSX as linhas também são numeradas, mas é possível colocar mais de uma instrução por linha usando-se o caractere dois pontos (:).

A instrução INPUT aceita como argumento uma literal string seguida pelo caractere  ponto e vírgula (;), antes da variável onde será armazenado o valor digitado.

O comando LIST mostra a listagem do programa, enquanto o comando RUN o executa.

msx_2

  • Extended Color BASIC

Desta vez, em vez do emulador Mocha, utilizamos o VCC (Virtual Color Computer).

Nesta versão, a declaração de variáveis dispensa a instrução LET.

vcc_2_1

A instrução INPUT imprime um ponto de interrogação ao aguardar a entrada do usuário.

vcc_2_2

  • QB64

Nesta versão as variáveis foram declaradas com a instrução DIM lista-variáveis AS INTEGER, e não foram inicializadas, mas poderiam ter sido.

qb64_2

  • BASIC 256

Nesta versão a instrução PRINT concatena uma literal string com o resultado de expressões aritméticas usando o caractere “+” (mais, e) em vez da vírgula, tratando então o resultado como string.

basic256_2

Fortran – segundo programa

fortran

Façamos uma pausa nas linguagens modernas e visuais para matar saudades das antigas.  Afinal, recordar é viver. Bem, para muita gente não é bem assim, já que hoje a maioria talvez nem tenha ouvido falar de Fortran.

Dessa vez usamos a IDE Plato com o compilador FTN95 da Silverfrost.  A ilustração a seguir mostra a listagem do código e a saída de tela.

fortran2

Embora na terceira linha o comentário mencione o uso do compilador g95, este não foi usado dessa vez.

A novidade em relação ao primeiro programa é a leitura do teclado efetuada pelo comando read, e os operadores de adição (+), subtração (), multiplicação (*) e divisão (/).

Dúvidas?

Java com Android – segundo programa

android

Se você já leu o post anterior, sugiro que o releia porque ele foi editado para melhor comparação com este que se inicia.

Anteriormente, foram utilizados o editor de texto Sublime Text 3 e o compilador javac em linha de comando.  Agora apenas o Android Studio foi utilizado.

Veja a seguir a sequência de telas mostrando o nosso segundo programa rodando em um emulador de celular.

android_e2

 

android_e0

android_e1

O design da tela acima é realizado ao se clicar em um widget (component, object, view – vá-se acostumando com esse linguajar) da palette (parte esquerda superior na ilustração seguinte), arrastá-lo e soltá-lo sobre a main activity (a tela principal a ser mostrada no celular).

android_d

Por trás dessa interface há o correspondente arquivo de layout escrito em xml (eXtensible Markup Language), que representa a Visão no padrão de arquitetura de software MVC (Model-View-Controller).

android_t

Como boa prática de programação, todas as strings usadas devem ser armazenadas em um arquivo de recursos também escrito em xml.

android_r

Não se preocupe com o xml agora, já que o layout pode ser construído com as ações do mouse na seção Design do Android Studio.  Agora o mais importante é a listagem do arquivo java que contém o Modelo (o que o programa faz, linhas 32-39) e o Controlador (como o programa trata os eventos, linhas 29-31 e 40-41).

android_j1

Entre as linhas 12 e 14 foram declaradas variáveis inicializadas por associação nas linhas 21-27 aos componentes (botão, e caixas de texto editáveis e não editáveis) do layout.

Compare com a listagem do post anterior (Java com GUI), considerando similares setOnClickListener a addActionListener, e OnClickListener a ActionListener.  No Android, o método getText precisa ser complementado com toString, enquanto que setText precisa String.valueOf.

Difícil? Talvez à primeira vista, sim.  Não entre em pânico.  Se adotarmos a estratégia dos babysteps (passos de bebê), então chegaremos longe, entendendo tudo.

Java com GUI- segundo programa

Java_

Que tal começarmos a usar também a GUI – Interface Gráfica do Usuário?  Dessa forma, incluiremos a programação visual com janelas e formulários. Vamos começar com Java e, em seguida, Android, tudo bem?

Primeiro vamos apresentar as telas de saída e, depois, o código.  A seguir, a tela inicial.

javax_gui1

Depois de digitar os números (5 e 3, como nos exemplos anteriores) nas respectivas caixas de texto e clicar no botão, a tela seguinte é apresentada.

javax_gui2

Por enquanto, embora seja visual, este programa ainda precisa rodar a partir do terminal  com o comando java.  Mais adiante, poderemos fazê-lo rodar a partir de dois cliques do mouse diretamente ou indiretamente (através de um atalho na área de trabalho, por exemplo).

javax_gui0

Observe que o arquivo com extensão .java, escrito com um editor de texto, foi compilado pelo comando javac.  O editor utilizado foi o Sublime Text 3, já mencionado anteriormente.

Como a listagem é relativamente longa, se comparada ao que vimos até o momento, ela foi dividida em duas partes.

A primeira parte mostra o código para a construção dos objetos visuais (a janela, os rótulos, as caixas de texto, o botão), isto é, tudo o que faz parte do campo Visão no padrão Modelo-Visão-Controlador.  A Visão concentra-se nas linhas numeradas de 17 a 56.

javax1

A segunda parte mostra o código para a manipulação dos eventos (clicar o botão esquerdo do mouse com o ponteiro sobre o botão Calcular da janela), isto é, tudo o que faz parte do campo Controlador no padrão Modelo-Visão-Controlador.  E também o código propriamente dito (os dados, as intruções, a lógica do programa já vista anteriormente), isto é, tudo o que faz parte do campo Modelo no padrão Modelo-Visão-Controlador.  O Modelo concentra-se nas linhas numeradas de 62 a 69.

javax2

A novidade, além da Visão, é o Controlador, baseado nos métodos addActionListener e actionPerformed.  Como o nosso objetivo no momento não é divulgar um curso específico de Java, sugiro clicar nesse link para saber mais a respeito dos métodos utilizados.

Parece complicado? Bem, o uso de IDE’s, como Eclipse, NetBeans e Android Studio, facilitam bastante, principalmente nos campos Visão e Controlador.

Observação: este post foi editado para melhor comparação com o próximo.

Logo – segundo programa

LOGO é uma linguagem de programação educacional, interpretada e interativa, não restrita apenas a desenho e pintura.  LOGO influenciou diversas linguagens e ambientes de desenvolvimento integrado, como Scratch, Scratch 2 e MicroWorlds EX.

Veja a seguir o nosso segundo programa nas telas do MSWLogo.

logo1

O código pode ser visto na tela do editor e tem um corpo (conjunto de instruções) delimitado pelas primitivas to (seguida pelo nome do procedure e eventuais argumentos iniciados por :) e end.

Observe na terceira linha da janela Commander que passamos os argumentos em linha de comando ao digitar o nome do programa (programa1) seguido pelos valores das variáveis n1 (5) e n2 (3).  Na primeira linha os argumentos não foram informados e, por isto, na segunda linha recebemos a mensagem de que não há entradas suficientes para o programa rodar.

A função print escreve no terminal de comando as strings (iniciadas com aspas, sem espaços) e os resultados das expressões aritméticas, cujos operandos que são variáveis estão precedidos pelos dois pontos (:).

A título de comparação, veja a seguir o mesmo programa escrito em Java.

logo2

Dessa vez foi utilizado o editor Notepad++.   As variáveis n1 e n2 foram declaradas e inicializadas pela conversão a inteiro realizada pelo método parseInt com os argumentos string sArg[0] e sArg[1].  Entenderemos melhor essa notação quando tratarmos de arrays.

O prompt de comando mostra que programa2a foi compilado através do comando javac. Ao tentar rodar o programa sem informar os dois argumentos necessários, o programa é interrompido por Java porque faltou o tratamento da exceção gerada pela falta dos argumentos.

C# – segundo programa

csharp

A ilustração seguinte contém a listagem do nosso segundo programa, cuja entrada são dois valores numéricos inteiros e cuja saída são os resultados das operações aritméticas de soma, subtração e multiplicação, além da média daqueles valores.

csharp0

Para variar, declaramos três literais (título e textos solicitando números) como strings (s0, S1 e S2), sendo que as duas últimas foram declaradas (opcionalmente) constantes – daí o uso de maiúsculas.

Observe a semelhança, especialmente nas linhas de 17 a 27, com Small Basic.

A novidade aqui é o uso do método int.Parse() para converter a entrada via teclado  de string para inteiro, antes de atribuí-la às variáveis n1 e n2.  Compare esse trecho de código com C++/CLI, modo CLR Console Application.

A ilustração a seguir, a saída no prompt de comando, mostra que foi utilizado o compilador csc que produz, a partir do arquivo texto programa2.cs, o arquivo executável programa2.exe.   Para executá-lo, basta digitar seu nome (sem a extensão) e acionar em seguida a tecla enter.

csharp1

Interessante, não?

Java – segundo programa

java

Veja a seguir a listagem de nosso segundo programa, agora utilizando o Sublime Text 3 em vez do Bloco de Notas.

java2_i

A numeração das linhas e as cores ajudam muito a entender o código, cuja saída de tela é ilustrada a seguir.

java2_f

A novidade agora é o uso da classe Scanner, da biblioteca java.util.  Na linha 8, é declarado um objeto da classe Scanner, aqui denominado entrada – seu nome poderia ser sc, dado, ler etc.  Nas linhas 12 e 15 o objeto entrada recebe o valor de um novo (new) objeto Scanner contendo a leitura do teclado (System.in).  E nas linhas 13 e 16, as variáveis n1 e n2 recebem aquele valor através do método nextInt(), supondo que números inteiros foram digitados pelo usuário.

Para cada tipo de dado, a classe Scanner tem o método adequado como,  por exemplo, simplesmente next() ou nextLine() para strings e caracteres, nextBoolean() para tipos lógicos (booleanos) e, para os diversos tipos numéricos, nextByte(), nextShort(), nextLong(), nextFloat(), nextDouble(), além de nextInt() – aqui usado.  Para saber mais a respeito, acostume-se a consultar as especificações de Java.

Experimente retirar os parênteses envolvendo a soma e a subtração nas linhas 18 e 19.  O que podemos aprender com este exercício?

 

 

 

Scratch 2 – segundo programa

scratch0

Veja a seguir o script em Scratch 2 do nosso segundo programa:

scratch2_3

A novidade agora é a função ask and wait, que se encarrega de pegar o valor da entrada via teclado.  Essa função é um bloco de comando. Observe seu formato com uma reentrância na parte superior e uma saliência correspondente na inferior.  Por isso um bloco de comando também é um bloco de pilha – já que pode ser empilhado pelas reentrâncias e saliências.  Ao mesmo tempo é um bloco de sensores (Sensing, de cor azul).

Uma vantagem do Scratch para os iniciantes em programação é não ser necessário decorar palavras reservadas e sintaxe, mas apenas conectar blocos de cores e formatos  bem definidos para criar programas.

As ilustrações a seguir mostram a primeira e a última saída de tela.

scratch2_1

scratch2_2

Mudaram o ator (sprite, no caso a atriz Ruby) e o cenário (backdrop, o palco), mas a simplicidade é a mesma.  Embora pareça brincadeira infanto-juvenil, é possível criar programas incríveis com o Scratch 2!