Dialetos do BASIC – Cálculo de PI

Dessa vez vamos codificar um aplicativo para calcular PI, uma série matemática convergente e a estrutura de controle de repetição com laço for, em 3 dialetos do BASIC.

 

qb64_pi_0qb64_pi_1

justBasic_pi

freeBasic_pi

A declaração de variáveis é igual no QB64 e no JustBASIC.  Ambos dialetos pedem que as variáveis string tenham o sufixo $.  A rigor, a variável message$ não é necessária.

O uso de LET para declarar as variáveis é facultativo e, a rigor, algumas variáveis, como message$ e last, não precisam ser declaradas porque são inicializadas em seguida, assim como count. No entanto, convém declarar e inicializar as variáveis S (identificada como serie nos outros 2 dialetos) e principalmente first, para que erros de cálculo não ocorram.

A cláusula step do loop for é opcional e quando omitida não é necessário declarar e inicializar a variável pace (que, aliás, pode ter qualquer nome válido), já que o passo terá automaticamente o valor de 1.

Nesta série matemática, o valor de count vai de 1 até infinito ou até o número informado pelo usuário, representado pela variável last.  Por isso, a variável first deve ser iniciada com o valor de 1, ou simplesmente substituída por essa constante literal (1).

O códigos em QB64 e JustBASIC podem, então, serem simplificados assim:

qb64_pi_2justBasic_pi_1

Os 3 dialetos dispensam o uso da variável contadora após a cláusula next do loop for. Em FreeBASIC as variáveis não precisam ser inicializadas, mas devem ser declaradas (com o comando DIM…AS). Uma simplificação do código seria a seguinte:

freeBasic_pi_1

Dúvidas?

Arduino – For Loop Iteration

arduino

No post anterior foram mostrados 3 exemplos de uso da estrutura de controle de repetição com laços for em versões do BASIC para Linux.  É possível que algum iniciante tenha achado difícil a lógica dos algoritmos empregados.  Então, dessa vez a ideia foi mostrar um código bem mais simples e com resultado divertido, usando o Arduino.

Neste caso, o laço for é usado para fazer piscar 9 LEDs (Light-Emitting Diode), numerados de 2 a 10, primeiro em ordem crescente e depois em ordem decrescente.  Essa numeração, de 2 a 10, se refere aos pinos digitais de entrada ou saída, que são configurados (setup) como saída (output) e conectados aos LEDs conforme ilustrações abaixo do sketch a seguir.

arduino_led_for9

Clique nas ilustrações a seguir para ver filmes curtos, disponíveis no YouTube.

arduino_led01

arduino_led02

Em tempo: os LEDs sempre devem estar conectados em série com resistores, cujos valores de resistência podem (e devem) ser calculados, para evitar sua queima.  Neste caso, foram utilizados resistores de 300 Ohms cada.

Como o nosso foco não é propriamente criar um curso básico de linguagens de programação ou de eletrônica, mas apenas ilustrar e comparar conceitos de algumas das inúmeras linguagens de programação de dispositivos, optamos por parar neste ponto.  De qualquer forma, estou à disposição para eventuais esclarecimentos e qualquer dúvida será bem-vinda.

BASIC no Linux – Números

linux

Vamos codificar aplicativos para mostrar números pares, ímpares e primos usando laços (loops) for como estrutura de controle de repetição em 3 IDE’s disponíveis para Linux.

Se quisermos todos os números pares em uma determinada faixa, bastam o valor inicial (variável start) e o final (variável ending), e a variável pace, usada com a cláusula Step (do laço For), não precisaria ser definida.  Neste caso, foi usada apenas para fins didáticos.  Essas 3 variáveis foram definidas como strings, mas seus valores numéricos foram obtidos para uso dentro do laço For com a função Val().

Sempre que o módulo (resto da divisão) do valor da variável count por 2 for zero, teremos um número par.

gamBAS_for_pares

Compare esse código com o anterior.  As instruções Print e Input têm comportamentos ligeiramente diferentes. A função str$() foi usada para converter valores numéricos em strings.  E, inversamente, sempre que o módulo (resto da divisão) do valor da variável count por 2 não for zero, teremos um número ímpar.

sdlBas_for_impar0sdlBas_for_impar1

Como a instrução inputs permite valores default, esses (0, 20 e 1) foram usados nesse exemplo e, por isso, não foi verificada a validade das entradas.

Dessa vez foram usados 2 laços For aninhados para mostrar números primos.  Observe que o operador mod agora é representado por %.  A cláusula Next, diferentemente dos exemplos anteriores, aceita a variável contadora (count1).

BASIC256_for_primos0

O que mais você observou? Ficou com alguma dúvida?