Basic4GL – Arquivos de texto

Basic4GL (Basic para OpenGL) é uma versão interpretada de código aberto da linguagem de programação BASIC que oferece suporte para gráficos de computador 3D usando OpenGL. Ao ser interpretado, também é capaz de compilar programas em cima da máquina virtual para produzir programas executáveis autônomos. Usa uma sintaxe semelhante aos dialetos tradicionais do BASIC e apresenta um IDE e um depurador muito completo e abrangente.

  • Design-time:
resizetext(51,31)
dim filename$, reason, filenumber, line$

sub ler(file$)
	filenumber = openfileread(file$)
	if fileerror() <> "" then print fileerror()
		end 
	endif
	seek(filenumber, 0)
	while not endoffile(filenumber)
		color(0, 255, 0)
		printr readline(filenumber)
	wend
	closefile(filenumber)
end sub

sub escrever(file$)
	filenumber = openfilewrite(file$)
	line$ = " "
	while line$ <> ""
		color(255, 0, 0)
		input ">", line$
		writeline(filenumber, line$)
	wend
	closefile(filenumber)
end sub
 
input "Nome do arquivo"; filename$
input "Para 1-Leitura ou 2-Escrita? ", reason

if reason = 1 then ler(filename$)
elseif reason = 2 then escrever(filename$)
else
	printr "Escolha inválida!"
endif

color(0, 128, 255)
print "Tecla ESC para finalizar"
end
  • Runtime:
Basic4GL rodando em Windows 10, captura com ScreenToGif
  • Observações:

Mais uma vez, agora no Windows, manipulamos arquivos de texto usando subrotinas (sub-end sub) de abertura e fechamento de arquivos de texto

para escrita

número_do_arquivo = OpenFileWrite(nome_do_arquivo)

WriteLine(numero_do_arquivo , texto)

CloseFile(número_do_arquivo)

e para leitura

número_do_arquivo = OpenFileRead(nome_do_arquivo)

ReadLine(numero_do_arquivo)

CloseFile(número_do_arquivo)

incluindo laços de repetição (whilewend).

O próprio ambiente de desenvolvimento integrado (IDE) possui tutoriais no menu Help, como ilustrado a seguir.

  • Conclusão:

A atualidade nos faz lembrar do dramaturgo grego Ésquilo (525-456 AC), a quem são atribuídas as seguintes citações:

A primeira vítima de uma guerra sempre é a verdade.

Deturpando a verdade, a maioria das pessoas prefere antes parecer a ser.

Muito poucas pessoas têm caráter e força de honrar e admirar sem inveja a prosperidade e o sucesso dos vizinhos.

Todo momento é apropriado para que mais velhos aprendam; dessa forma eles sempre são jovens.

Entendeu?

SmallBASIC – Arquivos de texto

https://smallbasic.github.io/

SmallBASIC é um interpretador de linguagem BASIC rápido e fácil de aprender, ideal para cálculos diários, scripts e protótipos. Inclui funções trigonométricas, matrizes e algébricas, um IDE integrado, uma poderosa biblioteca de strings, comandos de sistema, som e gráficos, juntamente com sintaxe de programação estruturada.

Design-time:

input "Nome do arquivo: ", nome$
print "1 - Escrever"
print "2 - Ler"
input "Escolha uma alternativa (1 / 2): "; opt
if opt=1 then
	escrever(nome$)
else
	ler(nome$)
endif
end

sub escrever(arq$)
open arq$ for output as #1
while opt
input txt$
if txt$ ="" then exit
print #1, txt$
wend
close #1
end sub

sub ler(arq$)
open arq$ for input as #1
while not eof(1)
line input #1, txt$
print txt$
wend 
close #1
end sub

Runtime:

SmallBASIC rodando em Ubuntu, captura com Peek

Observações:

Novamente, comparando-se com os posts anteriores sobre manipulação de arquivos de texto em diversos dialetos da linguagem de programação BASIC, foram usadas subrotinas (sub-end sub) de abertura e fechamento (open, close#) de arquivos de texto para escrita (for output as #, print#) e para leitura (for input as #, line input #), incluindo laços de repetição whilewend.

Reflexão:

As linguagens de programação de dispositivos têm bastante variação em termos de formas, dialetos, jargões enquanto conteúdos, ideias, algoritmos pouco ou nada mudam.

A obra literária “1984“, de George Orwell, de fato anteviu ou profetizou o que acontece hoje em dia, isto é, o controle e a restrição da abrangência do pensamento. Diferentemente da ficção, esse controle não é exatamente exercido por governos autoritários, mas por empresas de mídia e redes sociais. A interação com essas empresas através dos mecanismos de busca, por exemplo, praticamente fazem o papel do Big Brother. Este sabe muito mais da gente do que nós mesmos, nossos familiares ou nossos amigos. Ao mesmo tempo, a novilíngua difundida pela mídia controla a linguagem e consequentemente o pensamento das pessoas. As pessoas não mais criam conteúdo, mas apenas o consomem ou eventualmente espalham conteúdo alheio, apócrifo. O computador perdeu espaço para o smartphone. Os livros perderam espaço para a televisão. O resultado é o obscurantismo e a indigência cultural que nos surpreendem a cada dia.

Sempre que alguém se refere a entrenimentos tipicamente caçadores de audiência (e, portanto, de lucro), lembro-me de Groucho Marx: “I find television very educating. Every time somebody turns on the set, I go into the other room and read a book”. Sei que não vão entender, mas aviso assim mesmo aos terraplanistas e negacionistas: Groucho nunca foi marxista.

sdlBASIC – Arquivos de texto

sdlBasic é um interpretador BASIC para escrever jogos 2D. Combina a simplicidade da linguagem BASIC com o poder das bibliotecas SDL. É um software multiplataforma e roda em Linux, Windows e macOSX.

  • Design-time:
//escolher
option qbasic
escolha = 0
arquivo$ = ""
entrada$ = ""
declare sub escrever(arquivo$)
declare sub ler(arquivo$)

arquivo$ = inputS("Nome do arquivo: ", "")
printS("1 - Escrever")
printS("2 - Ler")
escolha = inputS("Escolha uma alternativa (1 ou 2): ", "")

if escolha = 1 then
	escrever(arquivo$)
elseif escolha = 2 then
	ler(arquivo$)
else
	printS("Somente 1 ou 2, por favor")
end if
printS("Tecla ESC para sair")
waitkey(k_esc)

//escrever
sub escrever(arquivo$)
open arquivo$ for output as 1
printS("Digite a linha de texto:")
do
	entrada$ = inputS("", "")
	file output 1, entrada$
	if entrada$ = "" then
		exit do
	end if
loop
close 1
end sub

//ler
sub ler(arquivo$)
open arquivo$ for input as 1
do
	file input 1, entrada$
	printS(entrada$)
	if eof(1) then
		exit do
	end if
loop
close 1
end sub
  • Runtime:
sdlBASIC rodando em Ubuntu, captura com Peek, otimização com GIMP
  • Resumo:

Novamente foram utilizadas subrotinas (subend sub) e laços (doloop) para abertura (open), escrita (output), leitura (input) e fechamento (close) de arquivos de texto. Principais instruções:

OPEN nome_do_arquivo FOR OUTPUT | INPUT AS numero_do_arquivo
FILE OUTPUT | INPUT numero_do_arquivo , texto
CLOSE numero_do_arquivo

  • Reflexão:

O que é aprender senão a atitude opcional de mudar das trevas para a luz, da ignorância para o conhecimento, da alienação para a consciência? Para sair da inércia da apatia, da letargia, da passividade, isto é, da zona de conforto é preciso provar do “fruto da árvore do conhecimento do bem e do mal”. É o processo de sair do desinteresse, desatenção e indiferença da adolescência para a curiosidade, iniciativa e proatividade da infância antes de finalmente tornar-se adulto. O papel do curioso, investigador ou cientista é estudar, coletar evidências, ler, estabelecer hipóteses e testá-las através de exercícios, experimentos, simulações.

Depois de aprender vem a hora de ensinar, que é semelhante a semear. É preciso entender que uma parte das sementes cai na beira do caminho e acaba sendo comida por pássaros. Outra parte cai no meio de pedras, brota depressa, mas seca ao sol por não ter raízes. Outra parte cai no meio de espinhos e acaba sufocada. Mas uma outra parte ainda cai em terra boa e dá frutos, muito mais do que havia sido plantado. Essas são as que valem a pena. As outras não valem choro nem vela. Entendeu?

Yabasic – Arquivos de texto

Yabasic é um interpretador BASIC tradicional. Vem com goto e vários loops, permitindo definir sub-rotinas e bibliotecas. Faz gráficos simples e impressão. Pode chamar bibliotecas escritas em C e permite criar programas independentes. É executado em Unix e Windows e possui uma documentação abrangente; é pequeno, simples, de código aberto e gratuito.

Design-time

#!/usr/bin/yabasic
label start
clear screen
input "Nome do arquivo: " arquivo$
print color("green") "1 - Escrever"
print color("green") "2 - Ler"
input a
if a = 1 then
	escrever(arquivo$)
elsif a = 2 then 
	ler(arquivo$)
else
	exit
endif

sub escrever(arquivo$)
open #1, arquivo$, "w"
repeat
	line input entrada$
	print #1 entrada$
until entrada$ = ""
close #1
end sub

sub ler(arquivo$)
open #1, arquivo$, "r" 
while !eof(1)
	line input #1 entrada$
	print color("blue") entrada$
wend
close #1
end sub

print "Quer continuar?"
input "Responda S(im) on N(ão): " a$
if (lower$(left$(a$,1))="n") exit 1
goto start

Runtime

Yabasic rodando em Ubuntu, captura com Peek

Observações

Além do rótulo label e da instrução goto, foram utilizados dois loops para manipular linhas de texto, um para escrita e outro para leitura.

  • Laço repeatuntil para escrita:

open #numero_do_arquivo, nome_do_arquivo, “w

repeat

line input texto

print #numero_do_arquivo texto

until texto = “”

close #numero_do_arquivo

  • Laço whilewend para leitura:

open #numero_do_arquivo, nome_do_arquivo, “r

while !eof(numero_do_arquivo)

line input #numero_do_arquivo texto

print texto

wend

close #numero_do_arquivo

Conclusão

Atualização do que já foi escrito:

Ainda que eu fale as línguas dos homens e dos anjos, e das máquinas; e saiba todos os mistérios e todo o conhecimento; se não tiver amor, nada serei.